From 3ecd4a15dd0fff2ecd3a5f03d61736d4a02566f5 Mon Sep 17 00:00:00 2001 From: xiaobai <857694115@qq.com> Date: Wed, 14 Jul 2021 14:18:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 28 + .env.production | 25 + .env.test | 25 + .eslintignore | 4 + .eslintrc.js | 193 + .gitignore | 25 + README.md | 29 + babel.config.js | 10 + package.json | 86 + public/favicon.ico | Bin 0 -> 172990 bytes public/index.html | 14 + public/static/build/pdf.js | 13922 ++++++ public/static/build/pdf.js.map | 1 + public/static/build/pdf.worker.js | 41661 ++++++++++++++++ public/static/build/pdf.worker.js.map | 1 + public/static/login/QRcode.png | Bin 0 -> 4799 bytes public/static/login/bg-img.jpg | Bin 0 -> 488816 bytes public/static/login/illustratio.png | Bin 0 -> 81939 bytes public/static/login/login_title.png | Bin 0 -> 35271 bytes public/static/login/login_title_new.png | Bin 0 -> 33822 bytes public/static/login/prompts.png | Bin 0 -> 6828 bytes public/static/web/cmaps/78-EUC-H.bcmap | Bin 0 -> 2404 bytes public/static/web/cmaps/78-EUC-V.bcmap | Bin 0 -> 173 bytes public/static/web/cmaps/78-H.bcmap | Bin 0 -> 2379 bytes public/static/web/cmaps/78-RKSJ-H.bcmap | Bin 0 -> 2398 bytes public/static/web/cmaps/78-RKSJ-V.bcmap | Bin 0 -> 173 bytes public/static/web/cmaps/78-V.bcmap | Bin 0 -> 169 bytes public/static/web/cmaps/78ms-RKSJ-H.bcmap | Bin 0 -> 2651 bytes public/static/web/cmaps/78ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes public/static/web/cmaps/83pv-RKSJ-H.bcmap | Bin 0 -> 905 bytes public/static/web/cmaps/90ms-RKSJ-H.bcmap | Bin 0 -> 721 bytes public/static/web/cmaps/90ms-RKSJ-V.bcmap | Bin 0 -> 290 bytes public/static/web/cmaps/90msp-RKSJ-H.bcmap | Bin 0 -> 715 bytes public/static/web/cmaps/90msp-RKSJ-V.bcmap | Bin 0 -> 291 bytes public/static/web/cmaps/90pv-RKSJ-H.bcmap | Bin 0 -> 982 bytes public/static/web/cmaps/90pv-RKSJ-V.bcmap | Bin 0 -> 260 bytes public/static/web/cmaps/Add-H.bcmap | Bin 0 -> 2419 bytes public/static/web/cmaps/Add-RKSJ-H.bcmap | Bin 0 -> 2413 bytes public/static/web/cmaps/Add-RKSJ-V.bcmap | Bin 0 -> 287 bytes public/static/web/cmaps/Add-V.bcmap | Bin 0 -> 282 bytes public/static/web/cmaps/Adobe-CNS1-0.bcmap | Bin 0 -> 317 bytes public/static/web/cmaps/Adobe-CNS1-1.bcmap | Bin 0 -> 371 bytes public/static/web/cmaps/Adobe-CNS1-2.bcmap | Bin 0 -> 376 bytes public/static/web/cmaps/Adobe-CNS1-3.bcmap | Bin 0 -> 401 bytes public/static/web/cmaps/Adobe-CNS1-4.bcmap | Bin 0 -> 405 bytes public/static/web/cmaps/Adobe-CNS1-5.bcmap | Bin 0 -> 406 bytes public/static/web/cmaps/Adobe-CNS1-6.bcmap | Bin 0 -> 406 bytes public/static/web/cmaps/Adobe-CNS1-UCS2.bcmap | Bin 0 -> 41193 bytes public/static/web/cmaps/Adobe-GB1-0.bcmap | Bin 0 -> 217 bytes public/static/web/cmaps/Adobe-GB1-1.bcmap | Bin 0 -> 250 bytes public/static/web/cmaps/Adobe-GB1-2.bcmap | Bin 0 -> 465 bytes public/static/web/cmaps/Adobe-GB1-3.bcmap | Bin 0 -> 470 bytes public/static/web/cmaps/Adobe-GB1-4.bcmap | Bin 0 -> 601 bytes public/static/web/cmaps/Adobe-GB1-5.bcmap | Bin 0 -> 625 bytes public/static/web/cmaps/Adobe-GB1-UCS2.bcmap | Bin 0 -> 33974 bytes public/static/web/cmaps/Adobe-Japan1-0.bcmap | Bin 0 -> 225 bytes public/static/web/cmaps/Adobe-Japan1-1.bcmap | Bin 0 -> 226 bytes public/static/web/cmaps/Adobe-Japan1-2.bcmap | Bin 0 -> 233 bytes public/static/web/cmaps/Adobe-Japan1-3.bcmap | Bin 0 -> 242 bytes public/static/web/cmaps/Adobe-Japan1-4.bcmap | Bin 0 -> 337 bytes public/static/web/cmaps/Adobe-Japan1-5.bcmap | Bin 0 -> 430 bytes public/static/web/cmaps/Adobe-Japan1-6.bcmap | Bin 0 -> 485 bytes .../static/web/cmaps/Adobe-Japan1-UCS2.bcmap | Bin 0 -> 40951 bytes public/static/web/cmaps/Adobe-Korea1-0.bcmap | Bin 0 -> 241 bytes public/static/web/cmaps/Adobe-Korea1-1.bcmap | Bin 0 -> 386 bytes public/static/web/cmaps/Adobe-Korea1-2.bcmap | Bin 0 -> 391 bytes .../static/web/cmaps/Adobe-Korea1-UCS2.bcmap | Bin 0 -> 23293 bytes public/static/web/cmaps/B5-H.bcmap | Bin 0 -> 1086 bytes public/static/web/cmaps/B5-V.bcmap | Bin 0 -> 142 bytes public/static/web/cmaps/B5pc-H.bcmap | Bin 0 -> 1099 bytes public/static/web/cmaps/B5pc-V.bcmap | Bin 0 -> 144 bytes public/static/web/cmaps/CNS-EUC-H.bcmap | Bin 0 -> 1780 bytes public/static/web/cmaps/CNS-EUC-V.bcmap | Bin 0 -> 1920 bytes public/static/web/cmaps/CNS1-H.bcmap | Bin 0 -> 706 bytes public/static/web/cmaps/CNS1-V.bcmap | Bin 0 -> 143 bytes public/static/web/cmaps/CNS2-H.bcmap | Bin 0 -> 504 bytes public/static/web/cmaps/CNS2-V.bcmap | 3 + public/static/web/cmaps/ETHK-B5-H.bcmap | Bin 0 -> 4426 bytes public/static/web/cmaps/ETHK-B5-V.bcmap | Bin 0 -> 158 bytes public/static/web/cmaps/ETen-B5-H.bcmap | Bin 0 -> 1125 bytes public/static/web/cmaps/ETen-B5-V.bcmap | Bin 0 -> 158 bytes public/static/web/cmaps/ETenms-B5-H.bcmap | 3 + public/static/web/cmaps/ETenms-B5-V.bcmap | Bin 0 -> 172 bytes public/static/web/cmaps/EUC-H.bcmap | Bin 0 -> 578 bytes public/static/web/cmaps/EUC-V.bcmap | Bin 0 -> 170 bytes public/static/web/cmaps/Ext-H.bcmap | Bin 0 -> 2536 bytes public/static/web/cmaps/Ext-RKSJ-H.bcmap | Bin 0 -> 2542 bytes public/static/web/cmaps/Ext-RKSJ-V.bcmap | Bin 0 -> 218 bytes public/static/web/cmaps/Ext-V.bcmap | Bin 0 -> 215 bytes public/static/web/cmaps/GB-EUC-H.bcmap | Bin 0 -> 549 bytes public/static/web/cmaps/GB-EUC-V.bcmap | Bin 0 -> 179 bytes public/static/web/cmaps/GB-H.bcmap | 4 + public/static/web/cmaps/GB-V.bcmap | Bin 0 -> 175 bytes public/static/web/cmaps/GBK-EUC-H.bcmap | Bin 0 -> 14692 bytes public/static/web/cmaps/GBK-EUC-V.bcmap | Bin 0 -> 180 bytes public/static/web/cmaps/GBK2K-H.bcmap | Bin 0 -> 19662 bytes public/static/web/cmaps/GBK2K-V.bcmap | Bin 0 -> 219 bytes public/static/web/cmaps/GBKp-EUC-H.bcmap | Bin 0 -> 14686 bytes public/static/web/cmaps/GBKp-EUC-V.bcmap | Bin 0 -> 181 bytes public/static/web/cmaps/GBT-EUC-H.bcmap | Bin 0 -> 7290 bytes public/static/web/cmaps/GBT-EUC-V.bcmap | Bin 0 -> 180 bytes public/static/web/cmaps/GBT-H.bcmap | Bin 0 -> 7269 bytes public/static/web/cmaps/GBT-V.bcmap | Bin 0 -> 176 bytes public/static/web/cmaps/GBTpc-EUC-H.bcmap | Bin 0 -> 7298 bytes public/static/web/cmaps/GBTpc-EUC-V.bcmap | Bin 0 -> 182 bytes public/static/web/cmaps/GBpc-EUC-H.bcmap | Bin 0 -> 557 bytes public/static/web/cmaps/GBpc-EUC-V.bcmap | Bin 0 -> 181 bytes public/static/web/cmaps/H.bcmap | Bin 0 -> 553 bytes public/static/web/cmaps/HKdla-B5-H.bcmap | Bin 0 -> 2654 bytes public/static/web/cmaps/HKdla-B5-V.bcmap | Bin 0 -> 148 bytes public/static/web/cmaps/HKdlb-B5-H.bcmap | Bin 0 -> 2414 bytes public/static/web/cmaps/HKdlb-B5-V.bcmap | Bin 0 -> 148 bytes public/static/web/cmaps/HKgccs-B5-H.bcmap | Bin 0 -> 2292 bytes public/static/web/cmaps/HKgccs-B5-V.bcmap | Bin 0 -> 149 bytes public/static/web/cmaps/HKm314-B5-H.bcmap | Bin 0 -> 1772 bytes public/static/web/cmaps/HKm314-B5-V.bcmap | Bin 0 -> 149 bytes public/static/web/cmaps/HKm471-B5-H.bcmap | Bin 0 -> 2171 bytes public/static/web/cmaps/HKm471-B5-V.bcmap | Bin 0 -> 149 bytes public/static/web/cmaps/HKscs-B5-H.bcmap | Bin 0 -> 4437 bytes public/static/web/cmaps/HKscs-B5-V.bcmap | Bin 0 -> 159 bytes public/static/web/cmaps/Hankaku.bcmap | Bin 0 -> 132 bytes public/static/web/cmaps/Hiragana.bcmap | Bin 0 -> 124 bytes public/static/web/cmaps/KSC-EUC-H.bcmap | Bin 0 -> 1848 bytes public/static/web/cmaps/KSC-EUC-V.bcmap | Bin 0 -> 164 bytes public/static/web/cmaps/KSC-H.bcmap | Bin 0 -> 1831 bytes public/static/web/cmaps/KSC-Johab-H.bcmap | Bin 0 -> 16791 bytes public/static/web/cmaps/KSC-Johab-V.bcmap | Bin 0 -> 166 bytes public/static/web/cmaps/KSC-V.bcmap | Bin 0 -> 160 bytes public/static/web/cmaps/KSCms-UHC-H.bcmap | Bin 0 -> 2787 bytes public/static/web/cmaps/KSCms-UHC-HW-H.bcmap | Bin 0 -> 2789 bytes public/static/web/cmaps/KSCms-UHC-HW-V.bcmap | Bin 0 -> 169 bytes public/static/web/cmaps/KSCms-UHC-V.bcmap | Bin 0 -> 166 bytes public/static/web/cmaps/KSCpc-EUC-H.bcmap | Bin 0 -> 2024 bytes public/static/web/cmaps/KSCpc-EUC-V.bcmap | Bin 0 -> 166 bytes public/static/web/cmaps/Katakana.bcmap | Bin 0 -> 100 bytes public/static/web/cmaps/LICENSE | 36 + public/static/web/cmaps/NWP-H.bcmap | Bin 0 -> 2765 bytes public/static/web/cmaps/NWP-V.bcmap | Bin 0 -> 252 bytes public/static/web/cmaps/RKSJ-H.bcmap | Bin 0 -> 534 bytes public/static/web/cmaps/RKSJ-V.bcmap | Bin 0 -> 170 bytes public/static/web/cmaps/Roman.bcmap | Bin 0 -> 96 bytes public/static/web/cmaps/UniCNS-UCS2-H.bcmap | Bin 0 -> 48280 bytes public/static/web/cmaps/UniCNS-UCS2-V.bcmap | Bin 0 -> 156 bytes public/static/web/cmaps/UniCNS-UTF16-H.bcmap | Bin 0 -> 50419 bytes public/static/web/cmaps/UniCNS-UTF16-V.bcmap | Bin 0 -> 156 bytes public/static/web/cmaps/UniCNS-UTF32-H.bcmap | Bin 0 -> 52679 bytes public/static/web/cmaps/UniCNS-UTF32-V.bcmap | Bin 0 -> 160 bytes public/static/web/cmaps/UniCNS-UTF8-H.bcmap | Bin 0 -> 53629 bytes public/static/web/cmaps/UniCNS-UTF8-V.bcmap | Bin 0 -> 157 bytes public/static/web/cmaps/UniGB-UCS2-H.bcmap | Bin 0 -> 43366 bytes public/static/web/cmaps/UniGB-UCS2-V.bcmap | Bin 0 -> 193 bytes public/static/web/cmaps/UniGB-UTF16-H.bcmap | Bin 0 -> 44086 bytes public/static/web/cmaps/UniGB-UTF16-V.bcmap | Bin 0 -> 178 bytes public/static/web/cmaps/UniGB-UTF32-H.bcmap | Bin 0 -> 45738 bytes public/static/web/cmaps/UniGB-UTF32-V.bcmap | Bin 0 -> 182 bytes public/static/web/cmaps/UniGB-UTF8-H.bcmap | Bin 0 -> 46837 bytes public/static/web/cmaps/UniGB-UTF8-V.bcmap | Bin 0 -> 181 bytes public/static/web/cmaps/UniJIS-UCS2-H.bcmap | Bin 0 -> 25439 bytes .../static/web/cmaps/UniJIS-UCS2-HW-H.bcmap | Bin 0 -> 119 bytes .../static/web/cmaps/UniJIS-UCS2-HW-V.bcmap | Bin 0 -> 680 bytes public/static/web/cmaps/UniJIS-UCS2-V.bcmap | Bin 0 -> 664 bytes public/static/web/cmaps/UniJIS-UTF16-H.bcmap | Bin 0 -> 39443 bytes public/static/web/cmaps/UniJIS-UTF16-V.bcmap | Bin 0 -> 643 bytes public/static/web/cmaps/UniJIS-UTF32-H.bcmap | Bin 0 -> 40539 bytes public/static/web/cmaps/UniJIS-UTF32-V.bcmap | Bin 0 -> 677 bytes public/static/web/cmaps/UniJIS-UTF8-H.bcmap | Bin 0 -> 41695 bytes public/static/web/cmaps/UniJIS-UTF8-V.bcmap | Bin 0 -> 678 bytes .../static/web/cmaps/UniJIS2004-UTF16-H.bcmap | Bin 0 -> 39534 bytes .../static/web/cmaps/UniJIS2004-UTF16-V.bcmap | Bin 0 -> 647 bytes .../static/web/cmaps/UniJIS2004-UTF32-H.bcmap | Bin 0 -> 40630 bytes .../static/web/cmaps/UniJIS2004-UTF32-V.bcmap | Bin 0 -> 681 bytes .../static/web/cmaps/UniJIS2004-UTF8-H.bcmap | Bin 0 -> 41779 bytes .../static/web/cmaps/UniJIS2004-UTF8-V.bcmap | Bin 0 -> 682 bytes .../web/cmaps/UniJISPro-UCS2-HW-V.bcmap | Bin 0 -> 705 bytes .../static/web/cmaps/UniJISPro-UCS2-V.bcmap | Bin 0 -> 689 bytes .../static/web/cmaps/UniJISPro-UTF8-V.bcmap | Bin 0 -> 726 bytes .../web/cmaps/UniJISX0213-UTF32-H.bcmap | Bin 0 -> 40517 bytes .../web/cmaps/UniJISX0213-UTF32-V.bcmap | Bin 0 -> 684 bytes .../web/cmaps/UniJISX02132004-UTF32-H.bcmap | Bin 0 -> 40608 bytes .../web/cmaps/UniJISX02132004-UTF32-V.bcmap | Bin 0 -> 688 bytes public/static/web/cmaps/UniKS-UCS2-H.bcmap | Bin 0 -> 25783 bytes public/static/web/cmaps/UniKS-UCS2-V.bcmap | Bin 0 -> 178 bytes public/static/web/cmaps/UniKS-UTF16-H.bcmap | Bin 0 -> 26327 bytes public/static/web/cmaps/UniKS-UTF16-V.bcmap | Bin 0 -> 164 bytes public/static/web/cmaps/UniKS-UTF32-H.bcmap | Bin 0 -> 26451 bytes public/static/web/cmaps/UniKS-UTF32-V.bcmap | Bin 0 -> 168 bytes public/static/web/cmaps/UniKS-UTF8-H.bcmap | Bin 0 -> 27790 bytes public/static/web/cmaps/UniKS-UTF8-V.bcmap | Bin 0 -> 169 bytes public/static/web/cmaps/V.bcmap | Bin 0 -> 166 bytes public/static/web/cmaps/WP-Symbol.bcmap | Bin 0 -> 179 bytes .../web/compressed.tracemonkey-pldi-09.pdf | Bin 0 -> 1016315 bytes public/static/web/debugger.js | 620 + public/static/web/images/aa.gif | Bin 0 -> 173315 bytes public/static/web/images/annotation-check.svg | 11 + .../static/web/images/annotation-comment.svg | 16 + public/static/web/images/annotation-help.svg | 26 + .../static/web/images/annotation-insert.svg | 10 + public/static/web/images/annotation-key.svg | 11 + .../web/images/annotation-newparagraph.svg | 11 + .../static/web/images/annotation-noicon.svg | 7 + public/static/web/images/annotation-note.svg | 42 + .../web/images/annotation-paragraph.svg | 16 + public/static/web/images/app.png | Bin 0 -> 2028 bytes .../web/images/findbarButton-next-rtl.png | Bin 0 -> 199 bytes .../web/images/findbarButton-next-rtl@2x.png | Bin 0 -> 304 bytes .../static/web/images/findbarButton-next.png | Bin 0 -> 193 bytes .../web/images/findbarButton-next@2x.png | Bin 0 -> 296 bytes .../web/images/findbarButton-previous-rtl.png | Bin 0 -> 193 bytes .../images/findbarButton-previous-rtl@2x.png | Bin 0 -> 296 bytes .../web/images/findbarButton-previous.png | Bin 0 -> 199 bytes .../web/images/findbarButton-previous@2x.png | Bin 0 -> 304 bytes public/static/web/images/grab.cur | Bin 0 -> 326 bytes public/static/web/images/grabbing.cur | Bin 0 -> 326 bytes public/static/web/images/loading-icon.gif | Bin 0 -> 2545 bytes public/static/web/images/loading-small.png | Bin 0 -> 7402 bytes public/static/web/images/loading-small@2x.png | Bin 0 -> 16131 bytes ...ondaryToolbarButton-documentProperties.png | Bin 0 -> 403 bytes ...aryToolbarButton-documentProperties@2x.png | Bin 0 -> 933 bytes .../secondaryToolbarButton-firstPage.png | Bin 0 -> 179 bytes .../secondaryToolbarButton-firstPage@2x.png | Bin 0 -> 266 bytes .../secondaryToolbarButton-handTool.png | Bin 0 -> 301 bytes .../secondaryToolbarButton-handTool@2x.png | Bin 0 -> 583 bytes .../secondaryToolbarButton-lastPage.png | Bin 0 -> 175 bytes .../secondaryToolbarButton-lastPage@2x.png | Bin 0 -> 276 bytes .../secondaryToolbarButton-rotateCcw.png | Bin 0 -> 360 bytes .../secondaryToolbarButton-rotateCcw@2x.png | Bin 0 -> 731 bytes .../secondaryToolbarButton-rotateCw.png | Bin 0 -> 359 bytes .../secondaryToolbarButton-rotateCw@2x.png | Bin 0 -> 714 bytes .../secondaryToolbarButton-selectTool.png | Bin 0 -> 461 bytes .../secondaryToolbarButton-selectTool@2x.png | Bin 0 -> 1067 bytes public/static/web/images/shadow.png | Bin 0 -> 290 bytes public/static/web/images/texture.png | Bin 0 -> 2417 bytes .../web/images/toolbarButton-bookmark.png | Bin 0 -> 174 bytes .../web/images/toolbarButton-bookmark@2x.png | Bin 0 -> 260 bytes .../web/images/toolbarButton-download.png | Bin 0 -> 259 bytes .../web/images/toolbarButton-download@2x.png | Bin 0 -> 425 bytes .../web/images/toolbarButton-menuArrows.png | Bin 0 -> 107 bytes .../images/toolbarButton-menuArrows@2x.png | Bin 0 -> 152 bytes .../web/images/toolbarButton-openFile.png | Bin 0 -> 295 bytes .../web/images/toolbarButton-openFile@2x.png | Bin 0 -> 550 bytes .../web/images/toolbarButton-pageDown-rtl.png | Bin 0 -> 242 bytes .../images/toolbarButton-pageDown-rtl@2x.png | Bin 0 -> 398 bytes .../web/images/toolbarButton-pageDown.png | Bin 0 -> 238 bytes .../web/images/toolbarButton-pageDown@2x.png | Bin 0 -> 396 bytes .../web/images/toolbarButton-pageUp-rtl.png | Bin 0 -> 245 bytes .../images/toolbarButton-pageUp-rtl@2x.png | Bin 0 -> 405 bytes .../web/images/toolbarButton-pageUp.png | Bin 0 -> 246 bytes .../web/images/toolbarButton-pageUp@2x.png | Bin 0 -> 403 bytes .../images/toolbarButton-presentationMode.png | Bin 0 -> 321 bytes .../toolbarButton-presentationMode@2x.png | Bin 0 -> 586 bytes .../static/web/images/toolbarButton-print.png | Bin 0 -> 257 bytes .../web/images/toolbarButton-print@2x.png | Bin 0 -> 464 bytes .../web/images/toolbarButton-search.png | Bin 0 -> 309 bytes .../web/images/toolbarButton-search@2x.png | Bin 0 -> 653 bytes ...olbarButton-secondaryToolbarToggle-rtl.png | Bin 0 -> 246 bytes ...arButton-secondaryToolbarToggle-rtl@2x.png | Bin 0 -> 456 bytes .../toolbarButton-secondaryToolbarToggle.png | Bin 0 -> 243 bytes ...oolbarButton-secondaryToolbarToggle@2x.png | Bin 0 -> 458 bytes .../toolbarButton-sidebarToggle-rtl.png | Bin 0 -> 225 bytes .../toolbarButton-sidebarToggle-rtl@2x.png | Bin 0 -> 344 bytes .../images/toolbarButton-sidebarToggle.png | Bin 0 -> 225 bytes .../images/toolbarButton-sidebarToggle@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewAttachments.png | Bin 0 -> 384 bytes .../toolbarButton-viewAttachments@2x.png | Bin 0 -> 859 bytes .../images/toolbarButton-viewOutline-rtl.png | Bin 0 -> 177 bytes .../toolbarButton-viewOutline-rtl@2x.png | Bin 0 -> 394 bytes .../web/images/toolbarButton-viewOutline.png | Bin 0 -> 178 bytes .../images/toolbarButton-viewOutline@2x.png | Bin 0 -> 331 bytes .../images/toolbarButton-viewThumbnail.png | Bin 0 -> 185 bytes .../images/toolbarButton-viewThumbnail@2x.png | Bin 0 -> 219 bytes .../web/images/toolbarButton-zoomIn.png | Bin 0 -> 136 bytes .../web/images/toolbarButton-zoomIn@2x.png | Bin 0 -> 160 bytes .../web/images/toolbarButton-zoomOut.png | Bin 0 -> 88 bytes .../web/images/toolbarButton-zoomOut@2x.png | Bin 0 -> 109 bytes .../web/images/treeitem-collapsed-rtl.png | Bin 0 -> 143 bytes .../web/images/treeitem-collapsed-rtl@2x.png | Bin 0 -> 167 bytes .../static/web/images/treeitem-collapsed.png | Bin 0 -> 128 bytes .../web/images/treeitem-collapsed@2x.png | Bin 0 -> 149 bytes .../static/web/images/treeitem-expanded.png | Bin 0 -> 125 bytes .../web/images/treeitem-expanded@2x.png | Bin 0 -> 172 bytes public/static/web/images/zzjjlogo.jpg | Bin 0 -> 1324 bytes .../static/web/locale/ach/viewer.properties | 179 + public/static/web/locale/af/viewer.properties | 184 + public/static/web/locale/ak/viewer.properties | 130 + public/static/web/locale/an/viewer.properties | 180 + public/static/web/locale/ar/viewer.properties | 184 + public/static/web/locale/as/viewer.properties | 167 + .../static/web/locale/ast/viewer.properties | 177 + public/static/web/locale/az/viewer.properties | 184 + public/static/web/locale/be/viewer.properties | 184 + public/static/web/locale/bg/viewer.properties | 184 + .../static/web/locale/bn-BD/viewer.properties | 181 + .../static/web/locale/bn-IN/viewer.properties | 177 + public/static/web/locale/br/viewer.properties | 180 + public/static/web/locale/bs/viewer.properties | 180 + public/static/web/locale/ca/viewer.properties | 184 + public/static/web/locale/cs/viewer.properties | 184 + .../static/web/locale/csb/viewer.properties | 134 + public/static/web/locale/cy/viewer.properties | 184 + public/static/web/locale/da/viewer.properties | 184 + public/static/web/locale/de/viewer.properties | 184 + public/static/web/locale/el/viewer.properties | 184 + .../static/web/locale/en-GB/viewer.properties | 184 + .../static/web/locale/en-US/viewer.properties | 184 + .../static/web/locale/en-ZA/viewer.properties | 170 + public/static/web/locale/eo/viewer.properties | 184 + .../static/web/locale/es-AR/viewer.properties | 184 + .../static/web/locale/es-CL/viewer.properties | 184 + .../static/web/locale/es-ES/viewer.properties | 117 + .../static/web/locale/es-MX/viewer.properties | 184 + public/static/web/locale/et/viewer.properties | 180 + public/static/web/locale/eu/viewer.properties | 184 + public/static/web/locale/fa/viewer.properties | 184 + public/static/web/locale/ff/viewer.properties | 184 + public/static/web/locale/fi/viewer.properties | 184 + public/static/web/locale/fr/viewer.properties | 184 + .../static/web/locale/fy-NL/viewer.properties | 184 + .../static/web/locale/ga-IE/viewer.properties | 184 + public/static/web/locale/gd/viewer.properties | 184 + public/static/web/locale/gl/viewer.properties | 168 + .../static/web/locale/gu-IN/viewer.properties | 163 + public/static/web/locale/he/viewer.properties | 184 + .../static/web/locale/hi-IN/viewer.properties | 176 + public/static/web/locale/hr/viewer.properties | 184 + public/static/web/locale/hu/viewer.properties | 184 + .../static/web/locale/hy-AM/viewer.properties | 180 + public/static/web/locale/id/viewer.properties | 184 + public/static/web/locale/is/viewer.properties | 184 + public/static/web/locale/it/viewer.properties | 117 + public/static/web/locale/ja/viewer.properties | 184 + public/static/web/locale/ka/viewer.properties | 184 + public/static/web/locale/kk/viewer.properties | 184 + public/static/web/locale/km/viewer.properties | 184 + public/static/web/locale/kn/viewer.properties | 169 + public/static/web/locale/ko/viewer.properties | 184 + public/static/web/locale/ku/viewer.properties | 146 + public/static/web/locale/lg/viewer.properties | 112 + .../static/web/locale/lij/viewer.properties | 180 + public/static/web/locale/locale.properties | 312 + public/static/web/locale/lt/viewer.properties | 184 + public/static/web/locale/lv/viewer.properties | 180 + .../static/web/locale/mai/viewer.properties | 168 + public/static/web/locale/mk/viewer.properties | 133 + public/static/web/locale/ml/viewer.properties | 168 + public/static/web/locale/mn/viewer.properties | 82 + public/static/web/locale/mr/viewer.properties | 184 + public/static/web/locale/ms/viewer.properties | 184 + public/static/web/locale/my/viewer.properties | 180 + .../static/web/locale/nb-NO/viewer.properties | 184 + public/static/web/locale/nl/viewer.properties | 184 + .../static/web/locale/nn-NO/viewer.properties | 184 + .../static/web/locale/nso/viewer.properties | 130 + public/static/web/locale/oc/viewer.properties | 174 + public/static/web/locale/or/viewer.properties | 167 + .../static/web/locale/pa-IN/viewer.properties | 178 + public/static/web/locale/pl/viewer.properties | 131 + .../static/web/locale/pt-BR/viewer.properties | 184 + .../static/web/locale/pt-PT/viewer.properties | 184 + public/static/web/locale/rm/viewer.properties | 184 + public/static/web/locale/ro/viewer.properties | 177 + public/static/web/locale/ru/viewer.properties | 184 + public/static/web/locale/rw/viewer.properties | 81 + .../static/web/locale/sah/viewer.properties | 166 + public/static/web/locale/si/viewer.properties | 171 + public/static/web/locale/sk/viewer.properties | 184 + public/static/web/locale/sl/viewer.properties | 184 + .../static/web/locale/son/viewer.properties | 180 + public/static/web/locale/sq/viewer.properties | 180 + public/static/web/locale/sr/viewer.properties | 184 + .../static/web/locale/sv-SE/viewer.properties | 184 + public/static/web/locale/sw/viewer.properties | 128 + .../static/web/locale/ta-LK/viewer.properties | 77 + public/static/web/locale/ta/viewer.properties | 184 + public/static/web/locale/te/viewer.properties | 183 + public/static/web/locale/th/viewer.properties | 180 + public/static/web/locale/tl/viewer.properties | 97 + public/static/web/locale/tn/viewer.properties | 83 + public/static/web/locale/tr/viewer.properties | 184 + public/static/web/locale/uk/viewer.properties | 184 + public/static/web/locale/ur/viewer.properties | 176 + public/static/web/locale/vi/viewer.properties | 173 + public/static/web/locale/wo/viewer.properties | 124 + public/static/web/locale/xh/viewer.properties | 184 + .../static/web/locale/zh-CN/viewer.properties | 184 + .../static/web/locale/zh-TW/viewer.properties | 184 + public/static/web/locale/zu/viewer.properties | 131 + public/static/web/viewer.css | 2226 + public/static/web/viewer.html | 359 + public/static/web/viewer.js | 10086 ++++ public/static/web/viewer.js.map | 1 + src/App.vue | 15 + src/api/dashboard.js | 35 + src/api/jyxm.js | 25 + src/api/message.js | 27 + src/api/renwu.js | 26 + src/api/template.js | 11 + src/api/ysjl.js | 130 + src/assets/404_images/404.png | Bin 0 -> 98071 bytes src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes src/assets/bjd/search.png | Bin 0 -> 75691 bytes .../custom-theme/fonts/element-icons.ttf | Bin 0 -> 11028 bytes .../custom-theme/fonts/element-icons.woff | Bin 0 -> 6124 bytes src/assets/custom-theme/index.css | 1 + src/assets/fangwei/error.png | Bin 0 -> 425 bytes src/assets/fangwei/success.png | Bin 0 -> 660 bytes src/assets/fangwei/unknown.jpg | Bin 0 -> 789367 bytes src/assets/logo/jnsei.jpg | Bin 0 -> 43139 bytes src/assets/logo/logo.png | Bin 0 -> 8567 bytes src/assets/logo/roof_placement.png | Bin 0 -> 1422 bytes src/components/Breadcrumb/index.vue | 65 + src/components/Charts/MixBar.vue | 139 + src/components/Charts/MixChart.vue | 293 + src/components/Charts/MixCharts.vue | 65 + src/components/Charts/mixins/resize.js | 34 + src/components/ColorPicker/index.vue | 238 + src/components/ConnectUsImg/index.vue | 66 + src/components/Download/index.vue | 54 + src/components/Hamburger/index.vue | 42 + src/components/HeaderSearch/index.vue | 182 + src/components/IconSelect/index.vue | 68 + src/components/IconSelect/requireIcons.js | 10 + src/components/Iframe/index.vue | 66 + src/components/Notice/index.vue | 49 + src/components/Notice/message.vue | 306 + src/components/Pagination/index.vue | 100 + src/components/PanThumb/index.vue | 132 + src/components/Screenfull/index.vue | 60 + src/components/ScrollPane/index.vue | 72 + src/components/SizeSelect/index.vue | 56 + src/components/SliceUpload/index.vue | 154 + src/components/Sticky/index.vue | 77 + src/components/SvgIcon/index.vue | 43 + src/components/UpdateLog/index.vue | 27 + src/components/Upload/index.vue | 122 + src/components/UploadExcel/index.vue | 138 + src/components/drawerDialog/index.vue | 768 + src/controller/bjdController.js | 105 + src/controller/index.js | 15 + src/controller/jyxmController.js | 99 + src/controller/renwuController.js | 5 + src/controller/templateController.js | 17 + src/controller/ysjlController.js | 42 + src/directive/el-table/adaptive.js | 40 + src/directive/el-table/index.js | 14 + src/icons/index.js | 12 + src/icons/svg/404.svg | 1 + src/icons/svg/archive.svg | 1 + src/icons/svg/bug.svg | 1 + src/icons/svg/charge.svg | 12 + src/icons/svg/chargeBill.svg | 1 + src/icons/svg/chart.svg | 1 + src/icons/svg/clear.svg | 1 + src/icons/svg/clipboard.svg | 1 + src/icons/svg/component.svg | 1 + src/icons/svg/dashboard.svg | 1 + src/icons/svg/documentation.svg | 1 + src/icons/svg/download.svg | 1 + src/icons/svg/download_show.svg | 11 + src/icons/svg/drag.svg | 1 + src/icons/svg/edit.svg | 1 + src/icons/svg/email.svg | 1 + src/icons/svg/example.svg | 1 + src/icons/svg/excel.svg | 1 + src/icons/svg/exit-fullscreen.svg | 1 + src/icons/svg/eye.svg | 1 + src/icons/svg/finance.svg | 2 + src/icons/svg/finance1.svg | 1 + src/icons/svg/form.svg | 1 + src/icons/svg/fullscreen.svg | 1 + src/icons/svg/guide.svg | 1 + src/icons/svg/hide_password.svg | 1 + src/icons/svg/icon.svg | 1 + src/icons/svg/information.svg | 1 + src/icons/svg/international.svg | 1 + src/icons/svg/invoice.svg | 1 + src/icons/svg/landline.svg | 1 + src/icons/svg/language.svg | 1 + src/icons/svg/link.svg | 1 + src/icons/svg/list.svg | 1 + src/icons/svg/lock.svg | 1 + src/icons/svg/manufacture.svg | 1 + src/icons/svg/manufacturingUnit.svg | 1 + src/icons/svg/message.svg | 1 + src/icons/svg/money.svg | 1 + src/icons/svg/monitor.svg | 1 + src/icons/svg/nested.svg | 1 + src/icons/svg/notice.svg | 1 + src/icons/svg/old.svg | 1 + src/icons/svg/parts.svg | 1 + src/icons/svg/password.svg | 1 + src/icons/svg/pdf.svg | 1 + src/icons/svg/pending.svg | 1 + src/icons/svg/people.svg | 1 + src/icons/svg/peoples.svg | 1 + src/icons/svg/phone.svg | 1 + src/icons/svg/qq.svg | 1 + src/icons/svg/reject.svg | 1 + src/icons/svg/roof_placement.svg | 1 + src/icons/svg/scan.svg | 1 + src/icons/svg/search.svg | 1 + src/icons/svg/send.svg | 1 + src/icons/svg/shoppingCard.svg | 1 + src/icons/svg/show_password.svg | 1 + src/icons/svg/sign.svg | 1 + src/icons/svg/sign_list.svg | 1 + src/icons/svg/size.svg | 1 + src/icons/svg/star.svg | 1 + src/icons/svg/statistics.svg | 1 + src/icons/svg/system.svg | 1 + src/icons/svg/tab.svg | 1 + src/icons/svg/table.svg | 1 + src/icons/svg/task.svg | 1 + src/icons/svg/theme.svg | 1 + src/icons/svg/tool.svg | 1 + src/icons/svg/tree.svg | 1 + src/icons/svg/update_log.svg | 12 + src/icons/svg/user.svg | 1 + src/icons/svg/wechat.svg | 1 + src/icons/svg/zip.svg | 1 + src/layout/Layout.vue | 71 + src/layout/components/AppMain.vue | 218 + src/layout/components/Navbar.vue | 187 + src/layout/components/Sidebar/FixiOSBug.js | 25 + src/layout/components/Sidebar/Item.vue | 29 + src/layout/components/Sidebar/Link.vue | 36 + src/layout/components/Sidebar/SidebarItem.vue | 131 + src/layout/components/Sidebar/index.vue | 33 + src/layout/components/TagsView.vue | 232 + src/layout/components/index.js | 4 + src/layout/mixin/ResizeHandler.js | 41 + src/layout/mixin/StorageHandle.js | 16 + src/main.js | 85 + src/permission.js | 38 + src/remote/index.vue | 156 + src/router/index.js | 135 + src/store/getters.js | 23 + src/store/index.js | 21 + src/store/modules/app.js | 59 + src/store/modules/permission.js | 48 + src/store/modules/tagsView.js | 170 + src/store/modules/user.js | 317 + src/styles/btn.scss | 99 + src/styles/element-ui.scss | 45 + src/styles/element-variables.scss | 31 + src/styles/generator.scss | 271 + src/styles/index.scss | 146 + src/styles/mixin.scss | 27 + src/styles/sidebar.scss | 119 + src/styles/transition.scss | 32 + src/styles/variables.scss | 4 + src/utils/api.js | 85 + src/utils/apiHelper.js | 25 + src/utils/apibjd.js | 112 + src/utils/apisjse.js | 62 + src/utils/auth.js | 33 + src/utils/calculate.js | 255 + src/utils/clipboard.js | 36 + src/utils/columnConfigs.js | 98 + src/utils/common.js | 563 + src/utils/contact.js | 2 + src/utils/formatter.js | 106 + src/utils/generator/config.js | 423 + src/utils/generator/css.js | 18 + src/utils/generator/drawingDefalut.js | 29 + src/utils/generator/html.js | 337 + src/utils/generator/icon.json | 1 + src/utils/generator/js.js | 235 + src/utils/generator/render.js | 121 + src/utils/index.js | 405 + src/utils/numberToChinese.js | 33 + src/utils/preview.js | 75 + src/utils/scrollTo.js | 50 + src/utils/server.js | 68 + src/utils/signview.js | 175 + src/utils/sliceFile.js | 117 + src/utils/table.js | 177 + src/utils/validate.js | 92 + src/vendor/Blob.js | 176 + src/vendor/Export2Excel.js | 239 + src/vendor/Export2Zip.js | 24 + src/views/404.vue | 243 + src/views/allot/components/chengya_list.vue | 709 + src/views/allot/components/jidian_list.vue | 791 + src/views/allot/hasAllot.vue | 310 + src/views/allot/list.vue | 65 + src/views/allot/old_list.vue | 306 + src/views/allot/project.vue | 543 + src/views/allot/rwd_list.vue | 304 + src/views/allot/team_list.vue | 339 + src/views/allot/tuihui_list.vue | 516 + src/views/allot/zuofei_list.vue | 150 + src/views/archive/archive_info.vue | 89 + src/views/archive/archive_new.vue | 292 + src/views/archive/archive_old.vue | 301 + src/views/archive/archive_scan.vue | 358 + .../archive/components/AutoComplete/index.vue | 68 + src/views/archive/list.vue | 190 + src/views/assign/hasAssign.vue | 174 + src/views/assign/list.vue | 546 + src/views/assign/missionList.vue | 646 + src/views/assign/old_list.vue | 306 + src/views/audit/list.vue | 753 + src/views/base/list.vue | 150 + src/views/bggl/2000/jj/cyqp.vue | 675 + src/views/bggl/8000/dj/dq/edit.vue | 1165 + src/views/bggl/8000/dj/dq/fenxiang/ajlsy.vue | 211 + src/views/bggl/8000/dj/dq/fenxiang/aqfj.vue | 602 + src/views/bggl/8000/dj/dq/fenxiang/bhcd.vue | 274 + src/views/bggl/8000/dj/dq/fenxiang/dxt.vue | 90 + .../bggl/8000/dj/dq/fenxiang/gzaqqrb.vue | 166 + src/views/bggl/8000/dj/dq/fenxiang/hlsjl.vue | 175 + src/views/bggl/8000/dj/dq/fenxiang/hxcf.vue | 193 + src/views/bggl/8000/dj/dq/fenxiang/jxfx.vue | 180 + src/views/bggl/8000/dj/dq/fenxiang/mxb.vue | 159 + src/views/bggl/8000/dj/dq/fenxiang/nyjh.vue | 137 + src/views/bggl/8000/dj/dq/fenxiang/nysy.vue | 262 + src/views/bggl/8000/dj/dq/fenxiang/qmxsy.vue | 215 + src/views/bggl/8000/dj/dq/fenxiang/sxjcfb.vue | 251 + src/views/bggl/8000/dj/dq/fenxiang/ydjc.vue | 197 + src/views/bggl/8000/dj/dq/wusun/cfjc.vue | 349 + src/views/bggl/8000/dj/dq/wusun/csjc.vue | 389 + src/views/bggl/8000/dj/dq/wusun/stjc.vue | 347 + src/views/bggl/8000/dj/dq/wusun/sxjc.vue | 445 + src/views/bggl/8000/dj/mxb.vue | 204 + src/views/bggl/8000/dj/nd/edit.vue | 799 + src/views/bggl/8000/dj/nd/fenxiang/aqfj.vue | 123 + src/views/bggl/8000/dj/nd/fenxiang/bhcd.vue | 268 + src/views/bggl/8000/dj/nd/fenxiang/dz.vue | 228 + src/views/bggl/8000/dj/nd/fenxiang/mxb.vue | 169 + src/views/bggl/8000/jj/edit.vue | 758 + src/views/bggl/8000/jj/fenxiang/aqjmfx.vue | 166 + src/views/bggl/8000/jj/fenxiang/azzlsc.vue | 165 + src/views/bggl/8000/jj/fenxiang/czsc.vue | 140 + src/views/bggl/8000/jj/fenxiang/dtztsyx.vue | 162 + src/views/bggl/8000/jj/fenxiang/jgzlsc.vue | 123 + src/views/bggl/8000/jj/fenxiang/jsdw.vue | 138 + src/views/bggl/8000/jj/fenxiang/nyxlsy.vue | 172 + src/views/bggl/8000/jj/fenxiang/qxsc.vue | 143 + src/views/bggl/8000/jj/fenxiang/ssaz.vue | 153 + src/views/bggl/8000/jj/fenxiang/wtclyj.vue | 162 + src/views/bggl/8000/jj/fenxiang/zlsc.vue | 152 + src/views/bggl/8000/jj/mxb.vue | 199 + src/views/bggl/addJyfa.vue | 253 + src/views/bggl/banjie_list.vue | 1127 + src/views/bggl/components/boiler_db_list.vue | 1216 + .../bggl/components/original_db_list.vue | 1449 + src/views/bggl/daiban_list.vue | 17 + src/views/bggl/daishen_list.vue | 814 + src/views/bggl/eliminatingred_list.vue | 464 + src/views/bggl/sign_list.vue | 247 + src/views/bggl/yiban_list.vue | 289 + src/views/bjd/department_list.vue | 374 + src/views/bjd/dj_create.vue | 467 + src/views/bjd/dj_input.vue | 1727 + src/views/bjd/dj_list.vue | 533 + src/views/bjd/dt_list.vue | 491 + src/views/bjd/jj_create.vue | 333 + src/views/bjd/jj_input.vue | 1777 + src/views/bjd/jj_list.vue | 578 + src/views/bjd/qy_list.vue | 414 + src/views/bjd/sjse/upload_list.vue | 132 + src/views/bjd/sjse/upload_list_20200721.vue | 188 + src/views/bjd/sjse/upload_list_param.vue | 134 + src/views/bjd/sjse/upload_list_xingshi.vue | 173 + src/views/bjd/view_hzd.vue | 40 + src/views/bjd/wx_list.vue | 525 + src/views/bjd/zf_list.vue | 216 + src/views/bjd/zj_input.vue | 1084 + src/views/bjd/zj_list.vue | 362 + src/views/bjd/zlsc_list.vue | 444 + src/views/bjd/zlsc_list_all.vue | 509 + src/views/changeInformation/information.vue | 18 + src/views/chargeBill/JD/create.vue | 190 + src/views/chargeBill/ZJ/create.vue | 228 + src/views/chargeBill/components/add.vue | 293 + src/views/chargeBill/components/complex.vue | 652 + src/views/chargeBill/components/detail.vue | 197 + .../chargeBill/components/statisticDetail.vue | 123 + src/views/chargeBill/create-list.vue | 72 + src/views/chargeBill/index.vue | 629 + src/views/chargeBill/other/create.vue | 172 + src/views/chargeBill/statistic.vue | 236 + src/views/chargeBill/task.vue | 133 + src/views/chargeTask/db_list.vue | 451 + src/views/chargeTask/yb_list.vue | 239 + src/views/common/AllotFp/index.vue | 193 + src/views/common/DepartmentUser/index.vue | 65 + src/views/common/Enclosure/index.vue | 151 + src/views/common/FxButton/index.vue | 112 + src/views/common/SignName/index.vue | 177 + src/views/common/Symbols/index.vue | 143 + src/views/common/WsButton/index.vue | 94 + src/views/common/WsFxButton/index.vue | 124 + src/views/dashboard/components/BarChart.vue | 111 + src/views/dashboard/components/LineChart.vue | 156 + src/views/dashboard/components/PanelGroup.vue | 146 + src/views/dashboard/components/PieChart.vue | 84 + .../dashboard/components/RaddarChart.vue | 120 + .../dashboard/components/SubmoduleTable.vue | 110 + .../dashboard/components/TransactionTable.vue | 182 + .../dashboard/components/ViewMessage.vue | 57 + src/views/dashboard/index.vue | 310 + src/views/dic/category.vue | 280 + src/views/dic/dic_data.vue | 286 + src/views/dic/dic_type.vue | 195 + src/views/dic/dic_xinghao.vue | 312 + src/views/download/list.vue | 57 + src/views/dwxx/examine.vue | 207 + src/views/dwxx/list.vue | 264 + src/views/dwxx/reviewed.vue | 266 + src/views/dwxx/zzdw.vue | 872 + src/views/finance/djList.vue | 369 + src/views/finance/jfjd_list.vue | 307 + src/views/finance/jjList.vue | 356 + src/views/finance/web_jfdqr_list.vue | 240 + src/views/finance/web_sfdsf_list.vue | 445 + src/views/finance/web_xxsfd_list.vue | 303 + src/views/finance/wsf_list.vue | 201 + src/views/finance/ycdw_list.vue | 201 + src/views/finance/ysf_list.vue | 201 + src/views/finance/zzList.vue | 357 + src/views/flow/definition.vue | 474 + src/views/flow/detail.vue | 748 + src/views/flow/link.vue | 227 + src/views/flow/message.vue | 203 + src/views/flow/restart.vue | 968 + src/views/flow/template.vue | 769 + src/views/invoice/create.vue | 347 + src/views/invoice/list.vue | 188 + src/views/invoice/toBeInvoiced.vue | 169 + src/views/liaison/list.vue | 466 + src/views/log/update.vue | 80 + src/views/login/index.vue | 224 + src/views/monitor/log_error.vue | 95 + src/views/monitor/log_info.vue | 90 + src/views/monitor/online.vue | 112 + src/views/monitor/redis.vue | 98 + src/views/preview/common/index.vue | 68 + src/views/preview/draw_canvas.vue | 405 + src/views/preview/image.vue | 35 + src/views/preview/old_project.vue | 16 + src/views/preview/rawrecords.vue | 11 + src/views/preview/ysjl.vue | 11 + src/views/print/1000/grant_create.vue | 386 + src/views/print/1000/grant_list_yff.vue | 208 + src/views/print/1000/print_list.vue | 421 + src/views/print/1000/print_list_depar.vue | 427 + src/views/print/1000/print_list_zj.vue | 476 + src/views/print/2000/print_list.vue | 403 + src/views/print/2000/print_list_zj.vue | 489 + src/views/print/3000/print_list.vue | 451 + src/views/print/4000/print_list.vue | 445 + src/views/print/5000/print_list.vue | 380 + src/views/print/7000/print_list.vue | 339 + src/views/print/8000/print_list.vue | 340 + src/views/print/grant/grant_list_chengya.vue | 175 + src/views/print/grant/grant_list_jidian.vue | 185 + src/views/print/grant_list.vue | 185 + src/views/print/print_list_bg.vue | 495 + src/views/print/print_list_jl.vue | 354 + src/views/print/sign_info.vue | 300 + src/views/print/sign_view.vue | 191 + src/views/profile/components/AuthSetting.vue | 84 + src/views/profile/components/UserCard.vue | 87 + src/views/profile/components/WxSetting.vue | 66 + src/views/profile/index.vue | 61 + src/views/redirect/index.vue | 12 + src/views/search/list.vue | 280 + src/views/security/components/2000/zj.vue | 86 + src/views/security/index.vue | 150 + src/views/statistics/components/gl_zzdw.vue | 228 + src/views/statistics/components/rq_zzdw.vue | 448 + src/views/statistics/filing.vue | 152 + src/views/statistics/finance.vue | 245 + src/views/statistics/gldj.vue | 283 + src/views/statistics/liaison_statistic.vue | 189 + src/views/statistics/manufacture_stats.vue | 14 + src/views/statistics/quantification.vue | 370 + src/views/svg-icons/generateIconsView.js | 10 + src/views/svg-icons/index.vue | 77 + src/views/task/list.vue | 702 + src/views/task/qiye_list.vue | 178 + src/views/tool/build/CodeTypeDialog.vue | 106 + src/views/tool/build/DraggableItem.vue | 100 + src/views/tool/build/IconsDialog.vue | 123 + src/views/tool/build/RightPanel.vue | 943 + src/views/tool/build/TreeNodeDialog.vue | 149 + src/views/tool/build/index.vue | 794 + src/views/tool/icon.vue | 66 + src/views/tool/quartz.vue | 233 + src/views/tool/quartz_log.vue | 88 + src/views/user/department.vue | 239 + src/views/user/password.vue | 106 + src/views/user/permission.vue | 498 + src/views/user/role.vue | 524 + src/views/user/user.vue | 375 + src/views/user/version.vue | 206 + src/views/ysjl/1000/common/dzsclJyxmBzz.js | 954 + src/views/ysjl/1000/common/glft.vue | 117 + src/views/ysjl/1000/common/gysclJyxmBzz.js | 764 + src/views/ysjl/1000/common/sfqk.vue | 501 + src/views/ysjl/1000/common/sz/dzscl.vue | 968 + src/views/ysjl/1000/common/sz/gyscl.vue | 957 + src/views/ysjl/1000/dj/nb/2.0/dznb.vue | 828 + src/views/ysjl/1000/dj/nb/2.0/gynb.vue | 694 + src/views/ysjl/1000/dj/nb/dznb.vue | 810 + src/views/ysjl/1000/dj/nb/gynb.vue | 727 + src/views/ysjl/1000/dj/sy/2.0/sysy.vue | 643 + src/views/ysjl/1000/dj/sy/sysy.vue | 581 + src/views/ysjl/1000/dj/sz/dzscl.vue | 14 + src/views/ysjl/1000/dj/sz/gyscl.vue | 14 + src/views/ysjl/1000/dj/wb/2.0/dzwb.vue | 781 + src/views/ysjl/1000/dj/wb/2.0/gywb.vue | 708 + src/views/ysjl/1000/dj/wb/dzwb.vue | 809 + src/views/ysjl/1000/dj/wb/gywb.vue | 691 + src/views/ysjl/1000/fenxiang/dxt.vue | 172 + src/views/ysjl/1000/jj/2.0/fenxiang/aqfj.vue | 167 + src/views/ysjl/1000/jj/2.0/fenxiang/bhcd.vue | 254 + .../ysjl/1000/jj/2.0/fenxiang/sjwjsc.vue | 120 + src/views/ysjl/1000/jj/2.0/fenxiang/wgjh.vue | 133 + src/views/ysjl/1000/jj/2.0/gzwx.vue | 697 + src/views/ysjl/1000/jj/2.0/jkjd.vue | 716 + src/views/ysjl/1000/jj/2.0/sg.vue | 915 + src/views/ysjl/1000/jj/2.0/zg.vue | 949 + src/views/ysjl/1000/jj/gzwx.vue | 714 + src/views/ysjl/1000/jj/jkjd.vue | 551 + src/views/ysjl/1000/jj/sg.vue | 859 + src/views/ysjl/1000/jj/sz/dzscl.vue | 14 + src/views/ysjl/1000/jj/sz/gyscl.vue | 14 + src/views/ysjl/1000/jj/zg.vue | 941 + src/views/ysjl/1000/zj/common/index.vue | 855 + src/views/ysjl/1000/zj/fqg.vue | 49 + src/views/ysjl/1000/zj/gks.vue | 52 + src/views/ysjl/1000/zj/glbj.vue | 49 + src/views/ysjl/1000/zj/lxcpg.vue | 698 + src/views/ysjl/1000/zj/sgs.vue | 51 + src/views/ysjl/1000/zj/sz.vue | 51 + src/views/ysjl/1000/zj/yjrzt.vue | 49 + src/views/ysjl/2000/2100/fenxiang/ajlsy.vue | 222 + src/views/ysjl/2000/2100/fenxiang/aqfj.vue | 265 + src/views/ysjl/2000/2100/fenxiang/bhcd.vue | 370 + src/views/ysjl/2000/2100/fenxiang/bhjh.vue | 323 + src/views/ysjl/2000/2100/fenxiang/clcffx.vue | 472 + src/views/ysjl/2000/2100/fenxiang/fjjy.vue | 317 + src/views/ysjl/2000/2100/fenxiang/hlsjl.vue | 186 + src/views/ysjl/2000/2100/fenxiang/jxfx.vue | 138 + src/views/ysjl/2000/2100/fenxiang/nysy.vue | 313 + src/views/ysjl/2000/2100/fenxiang/qmxsy.vue | 249 + src/views/ysjl/2000/2100/fenxiang/sskzk.vue | 359 + src/views/ysjl/2000/2100/fenxiang/sxjcfb.vue | 248 + src/views/ysjl/2000/2100/fenxiang/tbl.vue | 168 + src/views/ysjl/2000/2100/fenxiang/ydjc.vue | 280 + src/views/ysjl/2000/2100/wusun/cfjc.vue | 351 + src/views/ysjl/2000/2100/wusun/csjc.vue | 339 + src/views/ysjl/2000/2100/wusun/sfsjc.vue | 352 + src/views/ysjl/2000/2100/wusun/stjc.vue | 327 + src/views/ysjl/2000/2100/wusun/sxjc.vue | 391 + src/views/ysjl/2000/2100/wusun/tofd.vue | 382 + src/views/ysjl/2000/2100/zbg/dj/edit.vue | 1861 + src/views/ysjl/2000/2100/zbg/jj/dxgz.vue | 740 + src/views/ysjl/2000/2100/zbg/nd/edit.vue | 627 + src/views/ysjl/2000/2100/zjqg/detail.vue | 193 + src/views/ysjl/2000/2200/fenxiang/aqfj.vue | 439 + src/views/ysjl/2000/2200/fenxiang/bhcd.vue | 378 + src/views/ysjl/2000/2200/fenxiang/bhjh.vue | 294 + src/views/ysjl/2000/2200/fenxiang/clcffx.vue | 538 + src/views/ysjl/2000/2200/fenxiang/fjjy.vue | 257 + src/views/ysjl/2000/2200/fenxiang/jxfx.vue | 179 + src/views/ysjl/2000/2200/fenxiang/nysy.vue | 229 + src/views/ysjl/2000/2200/fenxiang/qmxsy.vue | 256 + src/views/ysjl/2000/2200/fenxiang/ydjc.vue | 364 + src/views/ysjl/2000/2200/wusun/cfjc.vue | 396 + src/views/ysjl/2000/2200/wusun/csjc.vue | 401 + src/views/ysjl/2000/2200/wusun/stjc.vue | 407 + src/views/ysjl/2000/2200/wusun/sxjc.vue | 480 + src/views/ysjl/2000/2200/zbg/dj/edit.vue | 1365 + src/views/ysjl/2000/2200/zbg/nd/tuoche.vue | 724 + src/views/ysjl/2000/2300/zbg/jj/cyqp.vue | 583 + src/views/ysjl/2000/2400/common/ycjl.vue | 1163 + src/views/ysjl/2000/2400/fenxiang/azdw.vue | 155 + src/views/ysjl/2000/2400/fenxiang/ycjc.vue | 121 + src/views/ysjl/2000/2400/fenxiang/ycqmx.vue | 183 + src/views/ysjl/2000/2400/zbg/dj/edit.vue | 14 + src/views/ysjl/2000/2400/zbg/jj/edit.vue | 1086 + src/views/ysjl/2000/2400/zbg/nd/edit.vue | 14 + src/views/ysjl/2000/sfqk.vue | 355 + src/views/ysjl/2000/sftj.vue | 229 + src/views/ysjl/7000/jj/edit.vue | 630 + src/views/ysjl/8000/dj/edit.vue | 1310 + src/views/ysjl/8000/dj/fenxiang/ajlsy.vue | 211 + src/views/ysjl/8000/dj/fenxiang/aqfj.vue | 602 + src/views/ysjl/8000/dj/fenxiang/bhcd.vue | 273 + src/views/ysjl/8000/dj/fenxiang/dxt.vue | 90 + src/views/ysjl/8000/dj/fenxiang/gzaqqrb.vue | 166 + src/views/ysjl/8000/dj/fenxiang/hlsjl.vue | 175 + src/views/ysjl/8000/dj/fenxiang/hxcf.vue | 193 + src/views/ysjl/8000/dj/fenxiang/jxfx.vue | 180 + src/views/ysjl/8000/dj/fenxiang/mxb.vue | 158 + src/views/ysjl/8000/dj/fenxiang/nyjh.vue | 137 + src/views/ysjl/8000/dj/fenxiang/nysy.vue | 262 + src/views/ysjl/8000/dj/fenxiang/qmxsy.vue | 215 + src/views/ysjl/8000/dj/fenxiang/sxjcfb.vue | 251 + src/views/ysjl/8000/dj/fenxiang/ydjc.vue | 196 + src/views/ysjl/8000/dj/wusun/cfjc.vue | 348 + src/views/ysjl/8000/dj/wusun/csjc.vue | 388 + src/views/ysjl/8000/dj/wusun/stjc.vue | 346 + src/views/ysjl/8000/dj/wusun/sxjc.vue | 444 + src/views/ysjl/8000/jj/edit.vue | 935 + src/views/ysjl/8000/jj/edit2.vue | 803 + src/views/ysjl/8000/jj/fenxiang/ajlsy.vue | 211 + src/views/ysjl/8000/jj/fenxiang/aqfj.vue | 597 + src/views/ysjl/8000/jj/fenxiang/bhcd.vue | 296 + src/views/ysjl/8000/jj/fenxiang/czmxb.vue | 207 + src/views/ysjl/8000/jj/fenxiang/gzaqqrb.vue | 139 + src/views/ysjl/8000/jj/fenxiang/hlsjl.vue | 175 + src/views/ysjl/8000/jj/fenxiang/hxcf.vue | 193 + src/views/ysjl/8000/jj/fenxiang/jxfx.vue | 180 + src/views/ysjl/8000/jj/fenxiang/mxb.vue | 181 + src/views/ysjl/8000/jj/fenxiang/mxb2.vue | 187 + src/views/ysjl/8000/jj/fenxiang/nyjh.vue | 272 + src/views/ysjl/8000/jj/fenxiang/nysy.vue | 262 + src/views/ysjl/8000/jj/fenxiang/qmxsy.vue | 215 + src/views/ysjl/8000/jj/fenxiang/sxjcfb.vue | 251 + src/views/ysjl/8000/jj/fenxiang/sxzlcc.vue | 351 + src/views/ysjl/8000/jj/fenxiang/wzt.vue | 90 + src/views/ysjl/8000/jj/fenxiang/ydjc.vue | 208 + src/views/ysjl/8000/jj/fenxiang/zlsspj.vue | 161 + src/views/ysjl/8000/jj/wusun/cfjc.vue | 362 + src/views/ysjl/8000/jj/wusun/csjc.vue | 373 + src/views/ysjl/8000/jj/wusun/stjc.vue | 362 + src/views/ysjl/8000/jj/wusun/sxjc.vue | 453 + src/views/ysjl/8000/nd/edit.vue | 718 + src/views/ysjl/8000/nd/fenxiang/aqfj.vue | 123 + src/views/ysjl/8000/nd/fenxiang/bhcd.vue | 267 + src/views/ysjl/8000/nd/fenxiang/dz.vue | 227 + src/views/ysjl/8000/nd/fenxiang/mxb.vue | 168 + src/views/ysjl/F000/dj/edit.vue | 654 + src/views/ysjl/addJyfa.vue | 267 + .../ysjl/components/gascylinder_db_list.vue | 383 + .../ysjl/components/gascylinder_yb_list.vue | 149 + .../ysjl/components/manufacture_db_list.vue | 1017 + .../ysjl/components/manufacture_yb_list.vue | 154 + .../ysjl/components/original_db_list.vue | 535 + .../ysjl/components/original_yb_list.vue | 224 + src/views/ysjl/db_list.vue | 21 + src/views/ysjl/yb_list.vue | 22 + src/views/zjd/zjbg_list.vue | 404 + src/views/zjd/zjd_list.vue | 364 + vue.config.js | 128 + 949 files changed, 227101 insertions(+) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.test create mode 100644 .eslintignore create mode 100644 .eslintrc.js create mode 100644 .gitignore create mode 100644 README.md create mode 100644 babel.config.js create mode 100644 package.json create mode 100644 public/favicon.ico create mode 100644 public/index.html create mode 100644 public/static/build/pdf.js create mode 100644 public/static/build/pdf.js.map create mode 100644 public/static/build/pdf.worker.js create mode 100644 public/static/build/pdf.worker.js.map create mode 100644 public/static/login/QRcode.png create mode 100644 public/static/login/bg-img.jpg create mode 100644 public/static/login/illustratio.png create mode 100644 public/static/login/login_title.png create mode 100644 public/static/login/login_title_new.png create mode 100644 public/static/login/prompts.png create mode 100644 public/static/web/cmaps/78-EUC-H.bcmap create mode 100644 public/static/web/cmaps/78-EUC-V.bcmap create mode 100644 public/static/web/cmaps/78-H.bcmap create mode 100644 public/static/web/cmaps/78-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/78-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/78-V.bcmap create mode 100644 public/static/web/cmaps/78ms-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/78ms-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/83pv-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/90ms-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/90ms-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/90msp-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/90msp-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/90pv-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/90pv-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/Add-H.bcmap create mode 100644 public/static/web/cmaps/Add-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/Add-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/Add-V.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-0.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-1.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-2.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-3.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-4.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-5.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-6.bcmap create mode 100644 public/static/web/cmaps/Adobe-CNS1-UCS2.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-0.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-1.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-2.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-3.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-4.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-5.bcmap create mode 100644 public/static/web/cmaps/Adobe-GB1-UCS2.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-0.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-1.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-2.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-3.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-4.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-5.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-6.bcmap create mode 100644 public/static/web/cmaps/Adobe-Japan1-UCS2.bcmap create mode 100644 public/static/web/cmaps/Adobe-Korea1-0.bcmap create mode 100644 public/static/web/cmaps/Adobe-Korea1-1.bcmap create mode 100644 public/static/web/cmaps/Adobe-Korea1-2.bcmap create mode 100644 public/static/web/cmaps/Adobe-Korea1-UCS2.bcmap create mode 100644 public/static/web/cmaps/B5-H.bcmap create mode 100644 public/static/web/cmaps/B5-V.bcmap create mode 100644 public/static/web/cmaps/B5pc-H.bcmap create mode 100644 public/static/web/cmaps/B5pc-V.bcmap create mode 100644 public/static/web/cmaps/CNS-EUC-H.bcmap create mode 100644 public/static/web/cmaps/CNS-EUC-V.bcmap create mode 100644 public/static/web/cmaps/CNS1-H.bcmap create mode 100644 public/static/web/cmaps/CNS1-V.bcmap create mode 100644 public/static/web/cmaps/CNS2-H.bcmap create mode 100644 public/static/web/cmaps/CNS2-V.bcmap create mode 100644 public/static/web/cmaps/ETHK-B5-H.bcmap create mode 100644 public/static/web/cmaps/ETHK-B5-V.bcmap create mode 100644 public/static/web/cmaps/ETen-B5-H.bcmap create mode 100644 public/static/web/cmaps/ETen-B5-V.bcmap create mode 100644 public/static/web/cmaps/ETenms-B5-H.bcmap create mode 100644 public/static/web/cmaps/ETenms-B5-V.bcmap create mode 100644 public/static/web/cmaps/EUC-H.bcmap create mode 100644 public/static/web/cmaps/EUC-V.bcmap create mode 100644 public/static/web/cmaps/Ext-H.bcmap create mode 100644 public/static/web/cmaps/Ext-RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/Ext-RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/Ext-V.bcmap create mode 100644 public/static/web/cmaps/GB-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GB-EUC-V.bcmap create mode 100644 public/static/web/cmaps/GB-H.bcmap create mode 100644 public/static/web/cmaps/GB-V.bcmap create mode 100644 public/static/web/cmaps/GBK-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GBK-EUC-V.bcmap create mode 100644 public/static/web/cmaps/GBK2K-H.bcmap create mode 100644 public/static/web/cmaps/GBK2K-V.bcmap create mode 100644 public/static/web/cmaps/GBKp-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GBKp-EUC-V.bcmap create mode 100644 public/static/web/cmaps/GBT-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GBT-EUC-V.bcmap create mode 100644 public/static/web/cmaps/GBT-H.bcmap create mode 100644 public/static/web/cmaps/GBT-V.bcmap create mode 100644 public/static/web/cmaps/GBTpc-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GBTpc-EUC-V.bcmap create mode 100644 public/static/web/cmaps/GBpc-EUC-H.bcmap create mode 100644 public/static/web/cmaps/GBpc-EUC-V.bcmap create mode 100644 public/static/web/cmaps/H.bcmap create mode 100644 public/static/web/cmaps/HKdla-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKdla-B5-V.bcmap create mode 100644 public/static/web/cmaps/HKdlb-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKdlb-B5-V.bcmap create mode 100644 public/static/web/cmaps/HKgccs-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKgccs-B5-V.bcmap create mode 100644 public/static/web/cmaps/HKm314-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKm314-B5-V.bcmap create mode 100644 public/static/web/cmaps/HKm471-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKm471-B5-V.bcmap create mode 100644 public/static/web/cmaps/HKscs-B5-H.bcmap create mode 100644 public/static/web/cmaps/HKscs-B5-V.bcmap create mode 100644 public/static/web/cmaps/Hankaku.bcmap create mode 100644 public/static/web/cmaps/Hiragana.bcmap create mode 100644 public/static/web/cmaps/KSC-EUC-H.bcmap create mode 100644 public/static/web/cmaps/KSC-EUC-V.bcmap create mode 100644 public/static/web/cmaps/KSC-H.bcmap create mode 100644 public/static/web/cmaps/KSC-Johab-H.bcmap create mode 100644 public/static/web/cmaps/KSC-Johab-V.bcmap create mode 100644 public/static/web/cmaps/KSC-V.bcmap create mode 100644 public/static/web/cmaps/KSCms-UHC-H.bcmap create mode 100644 public/static/web/cmaps/KSCms-UHC-HW-H.bcmap create mode 100644 public/static/web/cmaps/KSCms-UHC-HW-V.bcmap create mode 100644 public/static/web/cmaps/KSCms-UHC-V.bcmap create mode 100644 public/static/web/cmaps/KSCpc-EUC-H.bcmap create mode 100644 public/static/web/cmaps/KSCpc-EUC-V.bcmap create mode 100644 public/static/web/cmaps/Katakana.bcmap create mode 100644 public/static/web/cmaps/LICENSE create mode 100644 public/static/web/cmaps/NWP-H.bcmap create mode 100644 public/static/web/cmaps/NWP-V.bcmap create mode 100644 public/static/web/cmaps/RKSJ-H.bcmap create mode 100644 public/static/web/cmaps/RKSJ-V.bcmap create mode 100644 public/static/web/cmaps/Roman.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UCS2-H.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UCS2-V.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF16-H.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF16-V.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF8-H.bcmap create mode 100644 public/static/web/cmaps/UniCNS-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/UniGB-UCS2-H.bcmap create mode 100644 public/static/web/cmaps/UniGB-UCS2-V.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF16-H.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF16-V.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF8-H.bcmap create mode 100644 public/static/web/cmaps/UniGB-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UCS2-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UCS2-HW-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UCS2-HW-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UCS2-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF16-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF16-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF8-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF16-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF16-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF8-H.bcmap create mode 100644 public/static/web/cmaps/UniJIS2004-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/UniJISPro-UCS2-HW-V.bcmap create mode 100644 public/static/web/cmaps/UniJISPro-UCS2-V.bcmap create mode 100644 public/static/web/cmaps/UniJISPro-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/UniJISX0213-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniJISX0213-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniJISX02132004-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniJISX02132004-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniKS-UCS2-H.bcmap create mode 100644 public/static/web/cmaps/UniKS-UCS2-V.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF16-H.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF16-V.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF32-H.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF32-V.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF8-H.bcmap create mode 100644 public/static/web/cmaps/UniKS-UTF8-V.bcmap create mode 100644 public/static/web/cmaps/V.bcmap create mode 100644 public/static/web/cmaps/WP-Symbol.bcmap create mode 100644 public/static/web/compressed.tracemonkey-pldi-09.pdf create mode 100644 public/static/web/debugger.js create mode 100644 public/static/web/images/aa.gif create mode 100644 public/static/web/images/annotation-check.svg create mode 100644 public/static/web/images/annotation-comment.svg create mode 100644 public/static/web/images/annotation-help.svg create mode 100644 public/static/web/images/annotation-insert.svg create mode 100644 public/static/web/images/annotation-key.svg create mode 100644 public/static/web/images/annotation-newparagraph.svg create mode 100644 public/static/web/images/annotation-noicon.svg create mode 100644 public/static/web/images/annotation-note.svg create mode 100644 public/static/web/images/annotation-paragraph.svg create mode 100644 public/static/web/images/app.png create mode 100644 public/static/web/images/findbarButton-next-rtl.png create mode 100644 public/static/web/images/findbarButton-next-rtl@2x.png create mode 100644 public/static/web/images/findbarButton-next.png create mode 100644 public/static/web/images/findbarButton-next@2x.png create mode 100644 public/static/web/images/findbarButton-previous-rtl.png create mode 100644 public/static/web/images/findbarButton-previous-rtl@2x.png create mode 100644 public/static/web/images/findbarButton-previous.png create mode 100644 public/static/web/images/findbarButton-previous@2x.png create mode 100644 public/static/web/images/grab.cur create mode 100644 public/static/web/images/grabbing.cur create mode 100644 public/static/web/images/loading-icon.gif create mode 100644 public/static/web/images/loading-small.png create mode 100644 public/static/web/images/loading-small@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-documentProperties.png create mode 100644 public/static/web/images/secondaryToolbarButton-documentProperties@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-firstPage.png create mode 100644 public/static/web/images/secondaryToolbarButton-firstPage@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-handTool.png create mode 100644 public/static/web/images/secondaryToolbarButton-handTool@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-lastPage.png create mode 100644 public/static/web/images/secondaryToolbarButton-lastPage@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-rotateCcw.png create mode 100644 public/static/web/images/secondaryToolbarButton-rotateCcw@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-rotateCw.png create mode 100644 public/static/web/images/secondaryToolbarButton-rotateCw@2x.png create mode 100644 public/static/web/images/secondaryToolbarButton-selectTool.png create mode 100644 public/static/web/images/secondaryToolbarButton-selectTool@2x.png create mode 100644 public/static/web/images/shadow.png create mode 100644 public/static/web/images/texture.png create mode 100644 public/static/web/images/toolbarButton-bookmark.png create mode 100644 public/static/web/images/toolbarButton-bookmark@2x.png create mode 100644 public/static/web/images/toolbarButton-download.png create mode 100644 public/static/web/images/toolbarButton-download@2x.png create mode 100644 public/static/web/images/toolbarButton-menuArrows.png create mode 100644 public/static/web/images/toolbarButton-menuArrows@2x.png create mode 100644 public/static/web/images/toolbarButton-openFile.png create mode 100644 public/static/web/images/toolbarButton-openFile@2x.png create mode 100644 public/static/web/images/toolbarButton-pageDown-rtl.png create mode 100644 public/static/web/images/toolbarButton-pageDown-rtl@2x.png create mode 100644 public/static/web/images/toolbarButton-pageDown.png create mode 100644 public/static/web/images/toolbarButton-pageDown@2x.png create mode 100644 public/static/web/images/toolbarButton-pageUp-rtl.png create mode 100644 public/static/web/images/toolbarButton-pageUp-rtl@2x.png create mode 100644 public/static/web/images/toolbarButton-pageUp.png create mode 100644 public/static/web/images/toolbarButton-pageUp@2x.png create mode 100644 public/static/web/images/toolbarButton-presentationMode.png create mode 100644 public/static/web/images/toolbarButton-presentationMode@2x.png create mode 100644 public/static/web/images/toolbarButton-print.png create mode 100644 public/static/web/images/toolbarButton-print@2x.png create mode 100644 public/static/web/images/toolbarButton-search.png create mode 100644 public/static/web/images/toolbarButton-search@2x.png create mode 100644 public/static/web/images/toolbarButton-secondaryToolbarToggle-rtl.png create mode 100644 public/static/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png create mode 100644 public/static/web/images/toolbarButton-secondaryToolbarToggle.png create mode 100644 public/static/web/images/toolbarButton-secondaryToolbarToggle@2x.png create mode 100644 public/static/web/images/toolbarButton-sidebarToggle-rtl.png create mode 100644 public/static/web/images/toolbarButton-sidebarToggle-rtl@2x.png create mode 100644 public/static/web/images/toolbarButton-sidebarToggle.png create mode 100644 public/static/web/images/toolbarButton-sidebarToggle@2x.png create mode 100644 public/static/web/images/toolbarButton-viewAttachments.png create mode 100644 public/static/web/images/toolbarButton-viewAttachments@2x.png create mode 100644 public/static/web/images/toolbarButton-viewOutline-rtl.png create mode 100644 public/static/web/images/toolbarButton-viewOutline-rtl@2x.png create mode 100644 public/static/web/images/toolbarButton-viewOutline.png create mode 100644 public/static/web/images/toolbarButton-viewOutline@2x.png create mode 100644 public/static/web/images/toolbarButton-viewThumbnail.png create mode 100644 public/static/web/images/toolbarButton-viewThumbnail@2x.png create mode 100644 public/static/web/images/toolbarButton-zoomIn.png create mode 100644 public/static/web/images/toolbarButton-zoomIn@2x.png create mode 100644 public/static/web/images/toolbarButton-zoomOut.png create mode 100644 public/static/web/images/toolbarButton-zoomOut@2x.png create mode 100644 public/static/web/images/treeitem-collapsed-rtl.png create mode 100644 public/static/web/images/treeitem-collapsed-rtl@2x.png create mode 100644 public/static/web/images/treeitem-collapsed.png create mode 100644 public/static/web/images/treeitem-collapsed@2x.png create mode 100644 public/static/web/images/treeitem-expanded.png create mode 100644 public/static/web/images/treeitem-expanded@2x.png create mode 100644 public/static/web/images/zzjjlogo.jpg create mode 100644 public/static/web/locale/ach/viewer.properties create mode 100644 public/static/web/locale/af/viewer.properties create mode 100644 public/static/web/locale/ak/viewer.properties create mode 100644 public/static/web/locale/an/viewer.properties create mode 100644 public/static/web/locale/ar/viewer.properties create mode 100644 public/static/web/locale/as/viewer.properties create mode 100644 public/static/web/locale/ast/viewer.properties create mode 100644 public/static/web/locale/az/viewer.properties create mode 100644 public/static/web/locale/be/viewer.properties create mode 100644 public/static/web/locale/bg/viewer.properties create mode 100644 public/static/web/locale/bn-BD/viewer.properties create mode 100644 public/static/web/locale/bn-IN/viewer.properties create mode 100644 public/static/web/locale/br/viewer.properties create mode 100644 public/static/web/locale/bs/viewer.properties create mode 100644 public/static/web/locale/ca/viewer.properties create mode 100644 public/static/web/locale/cs/viewer.properties create mode 100644 public/static/web/locale/csb/viewer.properties create mode 100644 public/static/web/locale/cy/viewer.properties create mode 100644 public/static/web/locale/da/viewer.properties create mode 100644 public/static/web/locale/de/viewer.properties create mode 100644 public/static/web/locale/el/viewer.properties create mode 100644 public/static/web/locale/en-GB/viewer.properties create mode 100644 public/static/web/locale/en-US/viewer.properties create mode 100644 public/static/web/locale/en-ZA/viewer.properties create mode 100644 public/static/web/locale/eo/viewer.properties create mode 100644 public/static/web/locale/es-AR/viewer.properties create mode 100644 public/static/web/locale/es-CL/viewer.properties create mode 100644 public/static/web/locale/es-ES/viewer.properties create mode 100644 public/static/web/locale/es-MX/viewer.properties create mode 100644 public/static/web/locale/et/viewer.properties create mode 100644 public/static/web/locale/eu/viewer.properties create mode 100644 public/static/web/locale/fa/viewer.properties create mode 100644 public/static/web/locale/ff/viewer.properties create mode 100644 public/static/web/locale/fi/viewer.properties create mode 100644 public/static/web/locale/fr/viewer.properties create mode 100644 public/static/web/locale/fy-NL/viewer.properties create mode 100644 public/static/web/locale/ga-IE/viewer.properties create mode 100644 public/static/web/locale/gd/viewer.properties create mode 100644 public/static/web/locale/gl/viewer.properties create mode 100644 public/static/web/locale/gu-IN/viewer.properties create mode 100644 public/static/web/locale/he/viewer.properties create mode 100644 public/static/web/locale/hi-IN/viewer.properties create mode 100644 public/static/web/locale/hr/viewer.properties create mode 100644 public/static/web/locale/hu/viewer.properties create mode 100644 public/static/web/locale/hy-AM/viewer.properties create mode 100644 public/static/web/locale/id/viewer.properties create mode 100644 public/static/web/locale/is/viewer.properties create mode 100644 public/static/web/locale/it/viewer.properties create mode 100644 public/static/web/locale/ja/viewer.properties create mode 100644 public/static/web/locale/ka/viewer.properties create mode 100644 public/static/web/locale/kk/viewer.properties create mode 100644 public/static/web/locale/km/viewer.properties create mode 100644 public/static/web/locale/kn/viewer.properties create mode 100644 public/static/web/locale/ko/viewer.properties create mode 100644 public/static/web/locale/ku/viewer.properties create mode 100644 public/static/web/locale/lg/viewer.properties create mode 100644 public/static/web/locale/lij/viewer.properties create mode 100644 public/static/web/locale/locale.properties create mode 100644 public/static/web/locale/lt/viewer.properties create mode 100644 public/static/web/locale/lv/viewer.properties create mode 100644 public/static/web/locale/mai/viewer.properties create mode 100644 public/static/web/locale/mk/viewer.properties create mode 100644 public/static/web/locale/ml/viewer.properties create mode 100644 public/static/web/locale/mn/viewer.properties create mode 100644 public/static/web/locale/mr/viewer.properties create mode 100644 public/static/web/locale/ms/viewer.properties create mode 100644 public/static/web/locale/my/viewer.properties create mode 100644 public/static/web/locale/nb-NO/viewer.properties create mode 100644 public/static/web/locale/nl/viewer.properties create mode 100644 public/static/web/locale/nn-NO/viewer.properties create mode 100644 public/static/web/locale/nso/viewer.properties create mode 100644 public/static/web/locale/oc/viewer.properties create mode 100644 public/static/web/locale/or/viewer.properties create mode 100644 public/static/web/locale/pa-IN/viewer.properties create mode 100644 public/static/web/locale/pl/viewer.properties create mode 100644 public/static/web/locale/pt-BR/viewer.properties create mode 100644 public/static/web/locale/pt-PT/viewer.properties create mode 100644 public/static/web/locale/rm/viewer.properties create mode 100644 public/static/web/locale/ro/viewer.properties create mode 100644 public/static/web/locale/ru/viewer.properties create mode 100644 public/static/web/locale/rw/viewer.properties create mode 100644 public/static/web/locale/sah/viewer.properties create mode 100644 public/static/web/locale/si/viewer.properties create mode 100644 public/static/web/locale/sk/viewer.properties create mode 100644 public/static/web/locale/sl/viewer.properties create mode 100644 public/static/web/locale/son/viewer.properties create mode 100644 public/static/web/locale/sq/viewer.properties create mode 100644 public/static/web/locale/sr/viewer.properties create mode 100644 public/static/web/locale/sv-SE/viewer.properties create mode 100644 public/static/web/locale/sw/viewer.properties create mode 100644 public/static/web/locale/ta-LK/viewer.properties create mode 100644 public/static/web/locale/ta/viewer.properties create mode 100644 public/static/web/locale/te/viewer.properties create mode 100644 public/static/web/locale/th/viewer.properties create mode 100644 public/static/web/locale/tl/viewer.properties create mode 100644 public/static/web/locale/tn/viewer.properties create mode 100644 public/static/web/locale/tr/viewer.properties create mode 100644 public/static/web/locale/uk/viewer.properties create mode 100644 public/static/web/locale/ur/viewer.properties create mode 100644 public/static/web/locale/vi/viewer.properties create mode 100644 public/static/web/locale/wo/viewer.properties create mode 100644 public/static/web/locale/xh/viewer.properties create mode 100644 public/static/web/locale/zh-CN/viewer.properties create mode 100644 public/static/web/locale/zh-TW/viewer.properties create mode 100644 public/static/web/locale/zu/viewer.properties create mode 100644 public/static/web/viewer.css create mode 100644 public/static/web/viewer.html create mode 100644 public/static/web/viewer.js create mode 100644 public/static/web/viewer.js.map create mode 100644 src/App.vue create mode 100644 src/api/dashboard.js create mode 100644 src/api/jyxm.js create mode 100644 src/api/message.js create mode 100644 src/api/renwu.js create mode 100644 src/api/template.js create mode 100644 src/api/ysjl.js create mode 100644 src/assets/404_images/404.png create mode 100644 src/assets/404_images/404_cloud.png create mode 100644 src/assets/bjd/search.png create mode 100644 src/assets/custom-theme/fonts/element-icons.ttf create mode 100644 src/assets/custom-theme/fonts/element-icons.woff create mode 100644 src/assets/custom-theme/index.css create mode 100644 src/assets/fangwei/error.png create mode 100644 src/assets/fangwei/success.png create mode 100644 src/assets/fangwei/unknown.jpg create mode 100644 src/assets/logo/jnsei.jpg create mode 100644 src/assets/logo/logo.png create mode 100644 src/assets/logo/roof_placement.png create mode 100644 src/components/Breadcrumb/index.vue create mode 100644 src/components/Charts/MixBar.vue create mode 100644 src/components/Charts/MixChart.vue create mode 100644 src/components/Charts/MixCharts.vue create mode 100644 src/components/Charts/mixins/resize.js create mode 100644 src/components/ColorPicker/index.vue create mode 100644 src/components/ConnectUsImg/index.vue create mode 100644 src/components/Download/index.vue create mode 100644 src/components/Hamburger/index.vue create mode 100644 src/components/HeaderSearch/index.vue create mode 100644 src/components/IconSelect/index.vue create mode 100644 src/components/IconSelect/requireIcons.js create mode 100644 src/components/Iframe/index.vue create mode 100644 src/components/Notice/index.vue create mode 100644 src/components/Notice/message.vue create mode 100644 src/components/Pagination/index.vue create mode 100644 src/components/PanThumb/index.vue create mode 100644 src/components/Screenfull/index.vue create mode 100644 src/components/ScrollPane/index.vue create mode 100644 src/components/SizeSelect/index.vue create mode 100644 src/components/SliceUpload/index.vue create mode 100644 src/components/Sticky/index.vue create mode 100644 src/components/SvgIcon/index.vue create mode 100644 src/components/UpdateLog/index.vue create mode 100644 src/components/Upload/index.vue create mode 100644 src/components/UploadExcel/index.vue create mode 100644 src/components/drawerDialog/index.vue create mode 100644 src/controller/bjdController.js create mode 100644 src/controller/index.js create mode 100644 src/controller/jyxmController.js create mode 100644 src/controller/renwuController.js create mode 100644 src/controller/templateController.js create mode 100644 src/controller/ysjlController.js create mode 100644 src/directive/el-table/adaptive.js create mode 100644 src/directive/el-table/index.js create mode 100644 src/icons/index.js create mode 100644 src/icons/svg/404.svg create mode 100644 src/icons/svg/archive.svg create mode 100644 src/icons/svg/bug.svg create mode 100644 src/icons/svg/charge.svg create mode 100644 src/icons/svg/chargeBill.svg create mode 100644 src/icons/svg/chart.svg create mode 100644 src/icons/svg/clear.svg create mode 100644 src/icons/svg/clipboard.svg create mode 100644 src/icons/svg/component.svg create mode 100644 src/icons/svg/dashboard.svg create mode 100644 src/icons/svg/documentation.svg create mode 100644 src/icons/svg/download.svg create mode 100644 src/icons/svg/download_show.svg create mode 100644 src/icons/svg/drag.svg create mode 100644 src/icons/svg/edit.svg create mode 100644 src/icons/svg/email.svg create mode 100644 src/icons/svg/example.svg create mode 100644 src/icons/svg/excel.svg create mode 100644 src/icons/svg/exit-fullscreen.svg create mode 100644 src/icons/svg/eye.svg create mode 100644 src/icons/svg/finance.svg create mode 100644 src/icons/svg/finance1.svg create mode 100644 src/icons/svg/form.svg create mode 100644 src/icons/svg/fullscreen.svg create mode 100644 src/icons/svg/guide.svg create mode 100644 src/icons/svg/hide_password.svg create mode 100644 src/icons/svg/icon.svg create mode 100644 src/icons/svg/information.svg create mode 100644 src/icons/svg/international.svg create mode 100644 src/icons/svg/invoice.svg create mode 100644 src/icons/svg/landline.svg create mode 100644 src/icons/svg/language.svg create mode 100644 src/icons/svg/link.svg create mode 100644 src/icons/svg/list.svg create mode 100644 src/icons/svg/lock.svg create mode 100644 src/icons/svg/manufacture.svg create mode 100644 src/icons/svg/manufacturingUnit.svg create mode 100644 src/icons/svg/message.svg create mode 100644 src/icons/svg/money.svg create mode 100644 src/icons/svg/monitor.svg create mode 100644 src/icons/svg/nested.svg create mode 100644 src/icons/svg/notice.svg create mode 100644 src/icons/svg/old.svg create mode 100644 src/icons/svg/parts.svg create mode 100644 src/icons/svg/password.svg create mode 100644 src/icons/svg/pdf.svg create mode 100644 src/icons/svg/pending.svg create mode 100644 src/icons/svg/people.svg create mode 100644 src/icons/svg/peoples.svg create mode 100644 src/icons/svg/phone.svg create mode 100644 src/icons/svg/qq.svg create mode 100644 src/icons/svg/reject.svg create mode 100644 src/icons/svg/roof_placement.svg create mode 100644 src/icons/svg/scan.svg create mode 100644 src/icons/svg/search.svg create mode 100644 src/icons/svg/send.svg create mode 100644 src/icons/svg/shoppingCard.svg create mode 100644 src/icons/svg/show_password.svg create mode 100644 src/icons/svg/sign.svg create mode 100644 src/icons/svg/sign_list.svg create mode 100644 src/icons/svg/size.svg create mode 100644 src/icons/svg/star.svg create mode 100644 src/icons/svg/statistics.svg create mode 100644 src/icons/svg/system.svg create mode 100644 src/icons/svg/tab.svg create mode 100644 src/icons/svg/table.svg create mode 100644 src/icons/svg/task.svg create mode 100644 src/icons/svg/theme.svg create mode 100644 src/icons/svg/tool.svg create mode 100644 src/icons/svg/tree.svg create mode 100644 src/icons/svg/update_log.svg create mode 100644 src/icons/svg/user.svg create mode 100644 src/icons/svg/wechat.svg create mode 100644 src/icons/svg/zip.svg create mode 100644 src/layout/Layout.vue create mode 100644 src/layout/components/AppMain.vue create mode 100644 src/layout/components/Navbar.vue create mode 100644 src/layout/components/Sidebar/FixiOSBug.js create mode 100644 src/layout/components/Sidebar/Item.vue create mode 100644 src/layout/components/Sidebar/Link.vue create mode 100644 src/layout/components/Sidebar/SidebarItem.vue create mode 100644 src/layout/components/Sidebar/index.vue create mode 100644 src/layout/components/TagsView.vue create mode 100644 src/layout/components/index.js create mode 100644 src/layout/mixin/ResizeHandler.js create mode 100644 src/layout/mixin/StorageHandle.js create mode 100644 src/main.js create mode 100644 src/permission.js create mode 100644 src/remote/index.vue create mode 100644 src/router/index.js create mode 100644 src/store/getters.js create mode 100644 src/store/index.js create mode 100644 src/store/modules/app.js create mode 100644 src/store/modules/permission.js create mode 100644 src/store/modules/tagsView.js create mode 100644 src/store/modules/user.js create mode 100644 src/styles/btn.scss create mode 100644 src/styles/element-ui.scss create mode 100644 src/styles/element-variables.scss create mode 100644 src/styles/generator.scss create mode 100644 src/styles/index.scss create mode 100644 src/styles/mixin.scss create mode 100644 src/styles/sidebar.scss create mode 100644 src/styles/transition.scss create mode 100644 src/styles/variables.scss create mode 100644 src/utils/api.js create mode 100644 src/utils/apiHelper.js create mode 100644 src/utils/apibjd.js create mode 100644 src/utils/apisjse.js create mode 100644 src/utils/auth.js create mode 100644 src/utils/calculate.js create mode 100644 src/utils/clipboard.js create mode 100644 src/utils/columnConfigs.js create mode 100644 src/utils/common.js create mode 100644 src/utils/contact.js create mode 100644 src/utils/formatter.js create mode 100644 src/utils/generator/config.js create mode 100644 src/utils/generator/css.js create mode 100644 src/utils/generator/drawingDefalut.js create mode 100644 src/utils/generator/html.js create mode 100644 src/utils/generator/icon.json create mode 100644 src/utils/generator/js.js create mode 100644 src/utils/generator/render.js create mode 100644 src/utils/index.js create mode 100644 src/utils/numberToChinese.js create mode 100644 src/utils/preview.js create mode 100644 src/utils/scrollTo.js create mode 100644 src/utils/server.js create mode 100644 src/utils/signview.js create mode 100644 src/utils/sliceFile.js create mode 100644 src/utils/table.js create mode 100644 src/utils/validate.js create mode 100644 src/vendor/Blob.js create mode 100644 src/vendor/Export2Excel.js create mode 100644 src/vendor/Export2Zip.js create mode 100644 src/views/404.vue create mode 100644 src/views/allot/components/chengya_list.vue create mode 100644 src/views/allot/components/jidian_list.vue create mode 100644 src/views/allot/hasAllot.vue create mode 100644 src/views/allot/list.vue create mode 100644 src/views/allot/old_list.vue create mode 100644 src/views/allot/project.vue create mode 100644 src/views/allot/rwd_list.vue create mode 100644 src/views/allot/team_list.vue create mode 100644 src/views/allot/tuihui_list.vue create mode 100644 src/views/allot/zuofei_list.vue create mode 100644 src/views/archive/archive_info.vue create mode 100644 src/views/archive/archive_new.vue create mode 100644 src/views/archive/archive_old.vue create mode 100644 src/views/archive/archive_scan.vue create mode 100644 src/views/archive/components/AutoComplete/index.vue create mode 100644 src/views/archive/list.vue create mode 100644 src/views/assign/hasAssign.vue create mode 100644 src/views/assign/list.vue create mode 100644 src/views/assign/missionList.vue create mode 100644 src/views/assign/old_list.vue create mode 100644 src/views/audit/list.vue create mode 100644 src/views/base/list.vue create mode 100644 src/views/bggl/2000/jj/cyqp.vue create mode 100644 src/views/bggl/8000/dj/dq/edit.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/ajlsy.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/aqfj.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/bhcd.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/dxt.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/gzaqqrb.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/hlsjl.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/hxcf.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/jxfx.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/mxb.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/nyjh.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/nysy.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/qmxsy.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/sxjcfb.vue create mode 100644 src/views/bggl/8000/dj/dq/fenxiang/ydjc.vue create mode 100644 src/views/bggl/8000/dj/dq/wusun/cfjc.vue create mode 100644 src/views/bggl/8000/dj/dq/wusun/csjc.vue create mode 100644 src/views/bggl/8000/dj/dq/wusun/stjc.vue create mode 100644 src/views/bggl/8000/dj/dq/wusun/sxjc.vue create mode 100644 src/views/bggl/8000/dj/mxb.vue create mode 100644 src/views/bggl/8000/dj/nd/edit.vue create mode 100644 src/views/bggl/8000/dj/nd/fenxiang/aqfj.vue create mode 100644 src/views/bggl/8000/dj/nd/fenxiang/bhcd.vue create mode 100644 src/views/bggl/8000/dj/nd/fenxiang/dz.vue create mode 100644 src/views/bggl/8000/dj/nd/fenxiang/mxb.vue create mode 100644 src/views/bggl/8000/jj/edit.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/aqjmfx.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/azzlsc.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/czsc.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/dtztsyx.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/jgzlsc.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/jsdw.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/nyxlsy.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/qxsc.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/ssaz.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/wtclyj.vue create mode 100644 src/views/bggl/8000/jj/fenxiang/zlsc.vue create mode 100644 src/views/bggl/8000/jj/mxb.vue create mode 100644 src/views/bggl/addJyfa.vue create mode 100644 src/views/bggl/banjie_list.vue create mode 100644 src/views/bggl/components/boiler_db_list.vue create mode 100644 src/views/bggl/components/original_db_list.vue create mode 100644 src/views/bggl/daiban_list.vue create mode 100644 src/views/bggl/daishen_list.vue create mode 100644 src/views/bggl/eliminatingred_list.vue create mode 100644 src/views/bggl/sign_list.vue create mode 100644 src/views/bggl/yiban_list.vue create mode 100644 src/views/bjd/department_list.vue create mode 100644 src/views/bjd/dj_create.vue create mode 100644 src/views/bjd/dj_input.vue create mode 100644 src/views/bjd/dj_list.vue create mode 100644 src/views/bjd/dt_list.vue create mode 100644 src/views/bjd/jj_create.vue create mode 100644 src/views/bjd/jj_input.vue create mode 100644 src/views/bjd/jj_list.vue create mode 100644 src/views/bjd/qy_list.vue create mode 100644 src/views/bjd/sjse/upload_list.vue create mode 100644 src/views/bjd/sjse/upload_list_20200721.vue create mode 100644 src/views/bjd/sjse/upload_list_param.vue create mode 100644 src/views/bjd/sjse/upload_list_xingshi.vue create mode 100644 src/views/bjd/view_hzd.vue create mode 100644 src/views/bjd/wx_list.vue create mode 100644 src/views/bjd/zf_list.vue create mode 100644 src/views/bjd/zj_input.vue create mode 100644 src/views/bjd/zj_list.vue create mode 100644 src/views/bjd/zlsc_list.vue create mode 100644 src/views/bjd/zlsc_list_all.vue create mode 100644 src/views/changeInformation/information.vue create mode 100644 src/views/chargeBill/JD/create.vue create mode 100644 src/views/chargeBill/ZJ/create.vue create mode 100644 src/views/chargeBill/components/add.vue create mode 100644 src/views/chargeBill/components/complex.vue create mode 100644 src/views/chargeBill/components/detail.vue create mode 100644 src/views/chargeBill/components/statisticDetail.vue create mode 100644 src/views/chargeBill/create-list.vue create mode 100644 src/views/chargeBill/index.vue create mode 100644 src/views/chargeBill/other/create.vue create mode 100644 src/views/chargeBill/statistic.vue create mode 100644 src/views/chargeBill/task.vue create mode 100644 src/views/chargeTask/db_list.vue create mode 100644 src/views/chargeTask/yb_list.vue create mode 100644 src/views/common/AllotFp/index.vue create mode 100644 src/views/common/DepartmentUser/index.vue create mode 100644 src/views/common/Enclosure/index.vue create mode 100644 src/views/common/FxButton/index.vue create mode 100644 src/views/common/SignName/index.vue create mode 100644 src/views/common/Symbols/index.vue create mode 100644 src/views/common/WsButton/index.vue create mode 100644 src/views/common/WsFxButton/index.vue create mode 100644 src/views/dashboard/components/BarChart.vue create mode 100644 src/views/dashboard/components/LineChart.vue create mode 100644 src/views/dashboard/components/PanelGroup.vue create mode 100644 src/views/dashboard/components/PieChart.vue create mode 100644 src/views/dashboard/components/RaddarChart.vue create mode 100644 src/views/dashboard/components/SubmoduleTable.vue create mode 100644 src/views/dashboard/components/TransactionTable.vue create mode 100644 src/views/dashboard/components/ViewMessage.vue create mode 100644 src/views/dashboard/index.vue create mode 100644 src/views/dic/category.vue create mode 100644 src/views/dic/dic_data.vue create mode 100644 src/views/dic/dic_type.vue create mode 100644 src/views/dic/dic_xinghao.vue create mode 100644 src/views/download/list.vue create mode 100644 src/views/dwxx/examine.vue create mode 100644 src/views/dwxx/list.vue create mode 100644 src/views/dwxx/reviewed.vue create mode 100644 src/views/dwxx/zzdw.vue create mode 100644 src/views/finance/djList.vue create mode 100644 src/views/finance/jfjd_list.vue create mode 100644 src/views/finance/jjList.vue create mode 100644 src/views/finance/web_jfdqr_list.vue create mode 100644 src/views/finance/web_sfdsf_list.vue create mode 100644 src/views/finance/web_xxsfd_list.vue create mode 100644 src/views/finance/wsf_list.vue create mode 100644 src/views/finance/ycdw_list.vue create mode 100644 src/views/finance/ysf_list.vue create mode 100644 src/views/finance/zzList.vue create mode 100644 src/views/flow/definition.vue create mode 100644 src/views/flow/detail.vue create mode 100644 src/views/flow/link.vue create mode 100644 src/views/flow/message.vue create mode 100644 src/views/flow/restart.vue create mode 100644 src/views/flow/template.vue create mode 100644 src/views/invoice/create.vue create mode 100644 src/views/invoice/list.vue create mode 100644 src/views/invoice/toBeInvoiced.vue create mode 100644 src/views/liaison/list.vue create mode 100644 src/views/log/update.vue create mode 100644 src/views/login/index.vue create mode 100644 src/views/monitor/log_error.vue create mode 100644 src/views/monitor/log_info.vue create mode 100644 src/views/monitor/online.vue create mode 100644 src/views/monitor/redis.vue create mode 100644 src/views/preview/common/index.vue create mode 100644 src/views/preview/draw_canvas.vue create mode 100644 src/views/preview/image.vue create mode 100644 src/views/preview/old_project.vue create mode 100644 src/views/preview/rawrecords.vue create mode 100644 src/views/preview/ysjl.vue create mode 100644 src/views/print/1000/grant_create.vue create mode 100644 src/views/print/1000/grant_list_yff.vue create mode 100644 src/views/print/1000/print_list.vue create mode 100644 src/views/print/1000/print_list_depar.vue create mode 100644 src/views/print/1000/print_list_zj.vue create mode 100644 src/views/print/2000/print_list.vue create mode 100644 src/views/print/2000/print_list_zj.vue create mode 100644 src/views/print/3000/print_list.vue create mode 100644 src/views/print/4000/print_list.vue create mode 100644 src/views/print/5000/print_list.vue create mode 100644 src/views/print/7000/print_list.vue create mode 100644 src/views/print/8000/print_list.vue create mode 100644 src/views/print/grant/grant_list_chengya.vue create mode 100644 src/views/print/grant/grant_list_jidian.vue create mode 100644 src/views/print/grant_list.vue create mode 100644 src/views/print/print_list_bg.vue create mode 100644 src/views/print/print_list_jl.vue create mode 100644 src/views/print/sign_info.vue create mode 100644 src/views/print/sign_view.vue create mode 100644 src/views/profile/components/AuthSetting.vue create mode 100644 src/views/profile/components/UserCard.vue create mode 100644 src/views/profile/components/WxSetting.vue create mode 100644 src/views/profile/index.vue create mode 100644 src/views/redirect/index.vue create mode 100644 src/views/search/list.vue create mode 100644 src/views/security/components/2000/zj.vue create mode 100644 src/views/security/index.vue create mode 100644 src/views/statistics/components/gl_zzdw.vue create mode 100644 src/views/statistics/components/rq_zzdw.vue create mode 100644 src/views/statistics/filing.vue create mode 100644 src/views/statistics/finance.vue create mode 100644 src/views/statistics/gldj.vue create mode 100644 src/views/statistics/liaison_statistic.vue create mode 100644 src/views/statistics/manufacture_stats.vue create mode 100644 src/views/statistics/quantification.vue create mode 100644 src/views/svg-icons/generateIconsView.js create mode 100644 src/views/svg-icons/index.vue create mode 100644 src/views/task/list.vue create mode 100644 src/views/task/qiye_list.vue create mode 100644 src/views/tool/build/CodeTypeDialog.vue create mode 100644 src/views/tool/build/DraggableItem.vue create mode 100644 src/views/tool/build/IconsDialog.vue create mode 100644 src/views/tool/build/RightPanel.vue create mode 100644 src/views/tool/build/TreeNodeDialog.vue create mode 100644 src/views/tool/build/index.vue create mode 100644 src/views/tool/icon.vue create mode 100644 src/views/tool/quartz.vue create mode 100644 src/views/tool/quartz_log.vue create mode 100644 src/views/user/department.vue create mode 100644 src/views/user/password.vue create mode 100644 src/views/user/permission.vue create mode 100644 src/views/user/role.vue create mode 100644 src/views/user/user.vue create mode 100644 src/views/user/version.vue create mode 100644 src/views/ysjl/1000/common/dzsclJyxmBzz.js create mode 100644 src/views/ysjl/1000/common/glft.vue create mode 100644 src/views/ysjl/1000/common/gysclJyxmBzz.js create mode 100644 src/views/ysjl/1000/common/sfqk.vue create mode 100644 src/views/ysjl/1000/common/sz/dzscl.vue create mode 100644 src/views/ysjl/1000/common/sz/gyscl.vue create mode 100644 src/views/ysjl/1000/dj/nb/2.0/dznb.vue create mode 100644 src/views/ysjl/1000/dj/nb/2.0/gynb.vue create mode 100644 src/views/ysjl/1000/dj/nb/dznb.vue create mode 100644 src/views/ysjl/1000/dj/nb/gynb.vue create mode 100644 src/views/ysjl/1000/dj/sy/2.0/sysy.vue create mode 100644 src/views/ysjl/1000/dj/sy/sysy.vue create mode 100644 src/views/ysjl/1000/dj/sz/dzscl.vue create mode 100644 src/views/ysjl/1000/dj/sz/gyscl.vue create mode 100644 src/views/ysjl/1000/dj/wb/2.0/dzwb.vue create mode 100644 src/views/ysjl/1000/dj/wb/2.0/gywb.vue create mode 100644 src/views/ysjl/1000/dj/wb/dzwb.vue create mode 100644 src/views/ysjl/1000/dj/wb/gywb.vue create mode 100644 src/views/ysjl/1000/fenxiang/dxt.vue create mode 100644 src/views/ysjl/1000/jj/2.0/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/1000/jj/2.0/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/1000/jj/2.0/fenxiang/sjwjsc.vue create mode 100644 src/views/ysjl/1000/jj/2.0/fenxiang/wgjh.vue create mode 100644 src/views/ysjl/1000/jj/2.0/gzwx.vue create mode 100644 src/views/ysjl/1000/jj/2.0/jkjd.vue create mode 100644 src/views/ysjl/1000/jj/2.0/sg.vue create mode 100644 src/views/ysjl/1000/jj/2.0/zg.vue create mode 100644 src/views/ysjl/1000/jj/gzwx.vue create mode 100644 src/views/ysjl/1000/jj/jkjd.vue create mode 100644 src/views/ysjl/1000/jj/sg.vue create mode 100644 src/views/ysjl/1000/jj/sz/dzscl.vue create mode 100644 src/views/ysjl/1000/jj/sz/gyscl.vue create mode 100644 src/views/ysjl/1000/jj/zg.vue create mode 100644 src/views/ysjl/1000/zj/common/index.vue create mode 100644 src/views/ysjl/1000/zj/fqg.vue create mode 100644 src/views/ysjl/1000/zj/gks.vue create mode 100644 src/views/ysjl/1000/zj/glbj.vue create mode 100644 src/views/ysjl/1000/zj/lxcpg.vue create mode 100644 src/views/ysjl/1000/zj/sgs.vue create mode 100644 src/views/ysjl/1000/zj/sz.vue create mode 100644 src/views/ysjl/1000/zj/yjrzt.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/ajlsy.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/bhjh.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/clcffx.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/fjjy.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/hlsjl.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/jxfx.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/nysy.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/qmxsy.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/sskzk.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/sxjcfb.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/tbl.vue create mode 100644 src/views/ysjl/2000/2100/fenxiang/ydjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/cfjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/csjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/sfsjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/stjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/sxjc.vue create mode 100644 src/views/ysjl/2000/2100/wusun/tofd.vue create mode 100644 src/views/ysjl/2000/2100/zbg/dj/edit.vue create mode 100644 src/views/ysjl/2000/2100/zbg/jj/dxgz.vue create mode 100644 src/views/ysjl/2000/2100/zbg/nd/edit.vue create mode 100644 src/views/ysjl/2000/2100/zjqg/detail.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/bhjh.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/clcffx.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/fjjy.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/jxfx.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/nysy.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/qmxsy.vue create mode 100644 src/views/ysjl/2000/2200/fenxiang/ydjc.vue create mode 100644 src/views/ysjl/2000/2200/wusun/cfjc.vue create mode 100644 src/views/ysjl/2000/2200/wusun/csjc.vue create mode 100644 src/views/ysjl/2000/2200/wusun/stjc.vue create mode 100644 src/views/ysjl/2000/2200/wusun/sxjc.vue create mode 100644 src/views/ysjl/2000/2200/zbg/dj/edit.vue create mode 100644 src/views/ysjl/2000/2200/zbg/nd/tuoche.vue create mode 100644 src/views/ysjl/2000/2300/zbg/jj/cyqp.vue create mode 100644 src/views/ysjl/2000/2400/common/ycjl.vue create mode 100644 src/views/ysjl/2000/2400/fenxiang/azdw.vue create mode 100644 src/views/ysjl/2000/2400/fenxiang/ycjc.vue create mode 100644 src/views/ysjl/2000/2400/fenxiang/ycqmx.vue create mode 100644 src/views/ysjl/2000/2400/zbg/dj/edit.vue create mode 100644 src/views/ysjl/2000/2400/zbg/jj/edit.vue create mode 100644 src/views/ysjl/2000/2400/zbg/nd/edit.vue create mode 100644 src/views/ysjl/2000/sfqk.vue create mode 100644 src/views/ysjl/2000/sftj.vue create mode 100644 src/views/ysjl/7000/jj/edit.vue create mode 100644 src/views/ysjl/8000/dj/edit.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/ajlsy.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/dxt.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/gzaqqrb.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/hlsjl.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/hxcf.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/jxfx.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/mxb.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/nyjh.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/nysy.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/qmxsy.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/sxjcfb.vue create mode 100644 src/views/ysjl/8000/dj/fenxiang/ydjc.vue create mode 100644 src/views/ysjl/8000/dj/wusun/cfjc.vue create mode 100644 src/views/ysjl/8000/dj/wusun/csjc.vue create mode 100644 src/views/ysjl/8000/dj/wusun/stjc.vue create mode 100644 src/views/ysjl/8000/dj/wusun/sxjc.vue create mode 100644 src/views/ysjl/8000/jj/edit.vue create mode 100644 src/views/ysjl/8000/jj/edit2.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/ajlsy.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/czmxb.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/gzaqqrb.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/hlsjl.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/hxcf.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/jxfx.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/mxb.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/mxb2.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/nyjh.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/nysy.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/qmxsy.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/sxjcfb.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/sxzlcc.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/wzt.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/ydjc.vue create mode 100644 src/views/ysjl/8000/jj/fenxiang/zlsspj.vue create mode 100644 src/views/ysjl/8000/jj/wusun/cfjc.vue create mode 100644 src/views/ysjl/8000/jj/wusun/csjc.vue create mode 100644 src/views/ysjl/8000/jj/wusun/stjc.vue create mode 100644 src/views/ysjl/8000/jj/wusun/sxjc.vue create mode 100644 src/views/ysjl/8000/nd/edit.vue create mode 100644 src/views/ysjl/8000/nd/fenxiang/aqfj.vue create mode 100644 src/views/ysjl/8000/nd/fenxiang/bhcd.vue create mode 100644 src/views/ysjl/8000/nd/fenxiang/dz.vue create mode 100644 src/views/ysjl/8000/nd/fenxiang/mxb.vue create mode 100644 src/views/ysjl/F000/dj/edit.vue create mode 100644 src/views/ysjl/addJyfa.vue create mode 100644 src/views/ysjl/components/gascylinder_db_list.vue create mode 100644 src/views/ysjl/components/gascylinder_yb_list.vue create mode 100644 src/views/ysjl/components/manufacture_db_list.vue create mode 100644 src/views/ysjl/components/manufacture_yb_list.vue create mode 100644 src/views/ysjl/components/original_db_list.vue create mode 100644 src/views/ysjl/components/original_yb_list.vue create mode 100644 src/views/ysjl/db_list.vue create mode 100644 src/views/ysjl/yb_list.vue create mode 100644 src/views/zjd/zjbg_list.vue create mode 100644 src/views/zjd/zjd_list.vue create mode 100644 vue.config.js diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..1c60a2e --- /dev/null +++ b/.env.development @@ -0,0 +1,28 @@ +# 开发环境相关配置 + +# 微服务IP +VUE_APP_SERVER_ADDRESS = 'test.sdma.mingansei.com' + +# 省局数据后台IP +VUE_APP_SJ_BASE_IP_ADDRESS = '192.168.1.130' + +# 微服务地址 +VUE_APP_SERVER_API = 'http://${VUE_APP_SERVER_ADDRESS}' + +# 项目名称 +VUE_APP_PROJECT_NAME = 'SJJY' + +# 业务后台访问地址 +VUE_APP_BASE_API = '${VUE_APP_SERVER_API}/sdma-manage/' + +# 报检后台访问地址 +VUE_APP_BJD_API = '${VUE_APP_SERVER_API}/sdma-bjd/' + +# 省局数据后台访问地址 +VUE_APP_SJ_API = 'http://${VUE_APP_SJ_BASE_IP_ADDRESS}:9092/SJSE/' + +# 预览后台访问地址 +VUE_APP_PREVIEW_API = '${VUE_APP_SERVER_API}/sdma-preview/' + +# websocket连接地址 +VUE_APP_WEBSOCKET = 'ws://${VUE_APP_SERVER_ADDRESS}:9100/sdma-manage/websocket/' diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..93f2e3f --- /dev/null +++ b/.env.production @@ -0,0 +1,25 @@ +# 生产环境相关配置 + +# 微服务IP +VUE_APP_SERVER_ADDRESS = '192.168.1.130' + +# 省局数据后台IP +VUE_APP_SJ_BASE_IP_ADDRESS = '192.168.1.130' + +# 微服务地址 +VUE_APP_SERVER_API = 'http://${VUE_APP_SERVER_ADDRESS}:9100' + +# 业务后台访问地址 +VUE_APP_BASE_API = '${VUE_APP_SERVER_API}/sdma-manage/' + +# 报检后台访问地址 +VUE_APP_BJD_API = '${VUE_APP_SERVER_API}/sdma-bjd/' + +# 省局数据后台访问地址 +VUE_APP_SJ_API = 'http://${VUE_APP_SJ_BASE_IP_ADDRESS}:9092/SJSE/' + +# 预览后台访问地址 +VUE_APP_PREVIEW_API = '${VUE_APP_SERVER_API}/sdma-preview/' + +# websocket连接地址 +VUE_APP_WEBSOCKET = 'ws://${VUE_APP_SERVER_ADDRESS}:9100/sdma-manage/websocket/' diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..97a0b2b --- /dev/null +++ b/.env.test @@ -0,0 +1,25 @@ +# 测试环境相关配置 + +# 微服务IP +VUE_APP_SERVER_ADDRESS = 'test.mingansei.com' + +# 省局数据后台IP +VUE_APP_SJ_BASE_IP_ADDRESS = 'test.mingansei.com' + +# 微服务地址 +VUE_APP_SERVER_API = 'http://${VUE_APP_SERVER_ADDRESS}:9100' + +# 业务后台访问地址 +VUE_APP_BASE_API = '${VUE_APP_SERVER_API}/sdma-manage/' + +# 报检后台访问地址 +VUE_APP_BJD_API = '${VUE_APP_SERVER_API}/sdma-bjd/' + +# 省局数据后台访问地址 +VUE_APP_SJ_API = 'http://${VUE_APP_SJ_BASE_IP_ADDRESS}:9092/SJSE/' + +# 预览后台访问地址 +VUE_APP_PREVIEW_API = '${VUE_APP_SERVER_API}/sdma-preview/' + +# websocket连接地址 +VUE_APP_WEBSOCKET = 'ws://${VUE_APP_SERVER_ADDRESS}:9100/sdma-manage/websocket/' diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..a4262a4 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,4 @@ +build/*.js +src/assets +src/utils/generator +public diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..bc22aca --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,193 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/name-property-casing": ["error", "PascalCase"], + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': [2, 'allow-null'], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 0, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'vue/require-prop-types': 0, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f3794e0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +.DS_Store +node_modules +/jinan + +# local env files +.env.local +.env.*.local + +# Log files +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw* + +package-lock.json +yarn.lock + diff --git a/README.md b/README.md new file mode 100644 index 0000000..d876434 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# MATest + +## Project setup +``` +yarn install +``` + +### Compiles and hot-reloads for development +``` +yarn run serve +``` + +### Compiles and minifies for production +``` +yarn run build +``` + +### Run your tests +``` +yarn run test +``` + +### Lints and fixes files +``` +yarn run lint +``` + +### Customize configuration +See [Configuration Reference](https://cli.vuejs.org/config/). diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000..7cd5430 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,10 @@ +module.exports = { + presets: ['@vue/app'], + plugins: [ + ['import', { + libraryName: 'vant', + libraryDirectory: 'es', + style: (name) => `${name}/style/less` + }, 'vant'] + ] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8f858ee --- /dev/null +++ b/package.json @@ -0,0 +1,86 @@ +{ + "name": "sdma-front", + "version": "0.2.1", + "private": true, + "author": "zichen ", + "scripts": { + "dev": "vue-cli-service serve", + "build:test": "vue-cli-service build --mode test", + "build:prod": "vue-cli-service build", + "lint": "vue-cli-service lint" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "dependencies": { + "axios": "^0.19.2", + "babel-plugin-import": "^1.13.0", + "clipboard": "^2.0.4", + "core-js": "^2.6.5", + "echarts": "5.1.1", + "element-ui": "2.11.1", + "file-saver": "2.0.1", + "fuse.js": "3.4.4", + "js-beautify": "^1.10.2", + "js-cookie": "2.2.0", + "js-md5": "^0.7.3", + "jsonlint": "1.6.3", + "less": "^3.12.2", + "less-loader": "^7.0.0", + "node-uuid": "^1.4.8", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "screenfull": "4.2.0", + "vant": "^2.10.3", + "vcolorpicker": "^0.1.8", + "vue": "^2.6.6", + "vue-count-to": "1.0.13", + "vue-qr": "^2.3.0", + "vue-router": "3.0.2", + "vuedraggable": "2.23.2", + "vuex": "3.1.0", + "xlsx": "0.16.2", + "xlsx-style": "^0.8.13" + }, + "devDependencies": { + "@babel/core": "7.0.0", + "@babel/register": "7.0.0", + "@vue/cli-plugin-babel": "^3.5.0", + "@vue/cli-plugin-eslint": "^3.5.0", + "@vue/cli-service": "^3.5.0", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "^10.0.1", + "eslint": "^5.8.0", + "eslint-plugin-vue": "^5.0.0", + "monaco": "^0.1.1", + "node-sass": "^4.14.1", + "sass-loader": "^7.1.0", + "script-ext-html-webpack-plugin": "2.0.1", + "script-loader": "0.7.2", + "svg-sprite-loader": "4.1.3", + "vue-template-compiler": "^2.5.21" + }, + "postcss": { + "plugins": { + "autoprefixer": {} + } + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..fa7a5001f011b917b88d6866f6575fb5c8f1f6cc GIT binary patch literal 172990 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%0Aq$51 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 QAwWKQBb3cjq5lp3ACyUK)&Kwi literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..7d61bc0 --- /dev/null +++ b/public/index.html @@ -0,0 +1,14 @@ + + + + + + + + JNFront + + +

+ + + diff --git a/public/static/build/pdf.js b/public/static/build/pdf.js new file mode 100644 index 0000000..be0ba7d --- /dev/null +++ b/public/static/build/pdf.js @@ -0,0 +1,13922 @@ +/* Copyright 2017 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. + */ + +(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.pdfjsDistBuildPdf = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __w_pdfjs_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __w_pdfjs_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __w_pdfjs_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __w_pdfjs_require__.d = function(exports, name, getter) { +/******/ if(!__w_pdfjs_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __w_pdfjs_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __w_pdfjs_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __w_pdfjs_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 15); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +__w_pdfjs_require__(16); + +var _streams_polyfill = __w_pdfjs_require__(17); + +var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined; +var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +var NativeImageDecoding = { + NONE: 'none', + DECODE: 'decode', + DISPLAY: 'display' +}; +var 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 +}; +var ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +var 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 +}; +var AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +var 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 +}; +var AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +var StreamType = { + UNKNOWN: 0, + FLATE: 1, + LZW: 2, + DCT: 3, + JPX: 4, + JBIG: 5, + A85: 6, + AHX: 7, + CCF: 8, + RL: 9 +}; +var FontType = { + UNKNOWN: 0, + TYPE1: 1, + TYPE1C: 2, + CIDFONTTYPE0: 3, + CIDFONTTYPE0C: 4, + TRUETYPE: 5, + CIDFONTTYPE2: 6, + TYPE3: 7, + OPENTYPE: 8, + TYPE0: 9, + MMTYPE1: 10 +}; +var VERBOSITY_LEVELS = { + errors: 0, + warnings: 1, + infos: 5 +}; +var CMapCompressionType = { + NONE: 0, + BINARY: 1, + STREAM: 2 +}; +var 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 +}; +var verbosity = VERBOSITY_LEVELS.warnings; +function setVerbosityLevel(level) { + verbosity = level; +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VERBOSITY_LEVELS.infos) { + console.log('Info: ' + msg); + } +} +function warn(msg) { + if (verbosity >= VERBOSITY_LEVELS.warnings) { + console.log('Warning: ' + msg); + } +} +function deprecated(details) { + console.log('Deprecated API usage: ' + details); +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +var UNSUPPORTED_FEATURES = { + unknown: 'unknown', + forms: 'forms', + javaScript: 'javaScript', + smask: 'smask', + shadingPattern: 'shadingPattern', + font: 'font' +}; +function isSameOrigin(baseUrl, otherUrl) { + try { + var base = new URL(baseUrl); + if (!base.origin || base.origin === 'null') { + return false; + } + } catch (e) { + return false; + } + var 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) { + if (!url) { + return null; + } + try { + var 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: value, + enumerable: true, + configurable: true, + writable: false + }); + return value; +} +function getLookupTableFactory(initializer) { + var lookup; + return function () { + if (initializer) { + lookup = Object.create(null); + initializer(lookup); + initializer = null; + } + return lookup; + }; +} +var PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +var PasswordException = function PasswordExceptionClosure() { + function PasswordException(msg, code) { + this.name = 'PasswordException'; + this.message = msg; + this.code = code; + } + PasswordException.prototype = new Error(); + PasswordException.constructor = PasswordException; + return PasswordException; +}(); +var UnknownErrorException = function UnknownErrorExceptionClosure() { + function UnknownErrorException(msg, details) { + this.name = 'UnknownErrorException'; + this.message = msg; + this.details = details; + } + UnknownErrorException.prototype = new Error(); + UnknownErrorException.constructor = UnknownErrorException; + return UnknownErrorException; +}(); +var InvalidPDFException = function InvalidPDFExceptionClosure() { + function InvalidPDFException(msg) { + this.name = 'InvalidPDFException'; + this.message = msg; + } + InvalidPDFException.prototype = new Error(); + InvalidPDFException.constructor = InvalidPDFException; + return InvalidPDFException; +}(); +var MissingPDFException = function MissingPDFExceptionClosure() { + function MissingPDFException(msg) { + this.name = 'MissingPDFException'; + this.message = msg; + } + MissingPDFException.prototype = new Error(); + MissingPDFException.constructor = MissingPDFException; + return MissingPDFException; +}(); +var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { + function UnexpectedResponseException(msg, status) { + this.name = 'UnexpectedResponseException'; + this.message = msg; + this.status = status; + } + UnexpectedResponseException.prototype = new Error(); + UnexpectedResponseException.constructor = UnexpectedResponseException; + return UnexpectedResponseException; +}(); +var NotImplementedException = function NotImplementedExceptionClosure() { + function NotImplementedException(msg) { + this.message = msg; + } + NotImplementedException.prototype = new Error(); + NotImplementedException.prototype.name = 'NotImplementedException'; + NotImplementedException.constructor = NotImplementedException; + return NotImplementedException; +}(); +var MissingDataException = function MissingDataExceptionClosure() { + function MissingDataException(begin, end) { + this.begin = begin; + this.end = end; + this.message = 'Missing data [' + begin + ', ' + end + ')'; + } + MissingDataException.prototype = new Error(); + MissingDataException.prototype.name = 'MissingDataException'; + MissingDataException.constructor = MissingDataException; + return MissingDataException; +}(); +var XRefParseException = function XRefParseExceptionClosure() { + function XRefParseException(msg) { + this.message = msg; + } + XRefParseException.prototype = new Error(); + XRefParseException.prototype.name = 'XRefParseException'; + XRefParseException.constructor = XRefParseException; + return XRefParseException; +}(); +var FormatError = function FormatErrorClosure() { + function FormatError(msg) { + this.message = msg; + } + FormatError.prototype = new Error(); + FormatError.prototype.name = 'FormatError'; + FormatError.constructor = FormatError; + return FormatError; +}(); +var AbortException = function AbortExceptionClosure() { + function AbortException(msg) { + this.name = 'AbortException'; + this.message = msg; + } + AbortException.prototype = new Error(); + AbortException.constructor = AbortException; + return AbortException; +}(); +var NullCharactersRegExp = /\x00/g; +function removeNullCharacters(str) { + if (typeof str !== 'string') { + warn('The argument for removeNullCharacters must be a string.'); + return str; + } + return str.replace(NullCharactersRegExp, ''); +} +function bytesToString(bytes) { + assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); + var length = bytes.length; + var MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + var strBuf = []; + for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + var 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'); + var length = str.length; + var bytes = new Uint8Array(length); + for (var 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); + return arr.byteLength; +} +function arraysToBytes(arr) { + if (arr.length === 1 && arr[0] instanceof Uint8Array) { + return arr[0]; + } + var resultLength = 0; + var i, + ii = arr.length; + var item, itemLength; + for (i = 0; i < ii; i++) { + item = arr[i]; + itemLength = arrayByteLength(item); + resultLength += itemLength; + } + var pos = 0; + var data = new Uint8Array(resultLength); + for (i = 0; i < ii; i++) { + item = arr[i]; + if (!(item instanceof Uint8Array)) { + if (typeof item === 'string') { + item = stringToBytes(item); + } else { + item = new Uint8Array(item); + } + } + 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 log2(x) { + var n = 1, + i = 0; + while (x > n) { + n <<= 1; + i++; + } + return i; +} +function readInt8(data, start) { + return data[start] << 24 >> 24; +} +function readUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} +function readUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} +function isLittleEndian() { + var buffer8 = new Uint8Array(4); + buffer8[0] = 1; + var view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(''); + return true; + } catch (e) { + return false; + } +} +var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +var Util = function UtilClosure() { + function Util() {} + var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; + Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { + rgbBuf[1] = r; + rgbBuf[3] = g; + rgbBuf[5] = b; + return rgbBuf.join(''); + }; + Util.transform = function Util_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]]; + }; + Util.applyTransform = function Util_applyTransform(p, m) { + var xt = p[0] * m[0] + p[1] * m[2] + m[4]; + var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + }; + Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { + var d = m[0] * m[3] - m[1] * m[2]; + var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + }; + Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { + var p1 = Util.applyTransform(r, m); + var p2 = Util.applyTransform(r.slice(2, 4), m); + var p3 = Util.applyTransform([r[0], r[3]], m); + var 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])]; + }; + Util.inverseTransform = function Util_inverseTransform(m) { + var 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]; + }; + Util.apply3dTransform = function Util_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]]; + }; + Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { + var transpose = [m[0], m[2], m[1], m[3]]; + var a = m[0] * transpose[0] + m[1] * transpose[2]; + var b = m[0] * transpose[1] + m[1] * transpose[3]; + var c = m[2] * transpose[0] + m[3] * transpose[2]; + var d = m[2] * transpose[1] + m[3] * transpose[3]; + var first = (a + d) / 2; + var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; + var sx = first + second || 1; + var sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + }; + Util.normalizeRect = function Util_normalizeRect(rect) { + var 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; + }; + Util.intersect = function Util_intersect(rect1, rect2) { + function compare(a, b) { + return a - b; + } + var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), + orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), + 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 false; + } + 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 false; + } + return result; + }; + Util.sign = function Util_sign(num) { + return num < 0 ? -1 : 1; + }; + var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; + Util.toRoman = function Util_toRoman(number, lowerCase) { + assert(isInt(number) && number > 0, 'The number should be a positive integer.'); + var pos, + romanBuf = []; + while (number >= 1000) { + number -= 1000; + romanBuf.push('M'); + } + pos = number / 100 | 0; + number %= 100; + romanBuf.push(ROMAN_NUMBER_MAP[pos]); + pos = number / 10 | 0; + number %= 10; + romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); + romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); + var romanStr = romanBuf.join(''); + return lowerCase ? romanStr.toLowerCase() : romanStr; + }; + Util.appendToArray = function Util_appendToArray(arr1, arr2) { + Array.prototype.push.apply(arr1, arr2); + }; + Util.prependToArray = function Util_prependToArray(arr1, arr2) { + Array.prototype.unshift.apply(arr1, arr2); + }; + Util.extendObj = function extendObj(obj1, obj2) { + for (var key in obj2) { + obj1[key] = obj2[key]; + } + }; + Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) { + while (dict && !dict.has(name)) { + dict = dict.get('Parent'); + } + if (!dict) { + return null; + } + return getArray ? dict.getArray(name) : dict.get(name); + }; + Util.inherit = function Util_inherit(sub, base, prototype) { + sub.prototype = Object.create(base.prototype); + sub.prototype.constructor = sub; + for (var prop in prototype) { + sub.prototype[prop] = prototype[prop]; + } + }; + Util.loadScript = function Util_loadScript(src, callback) { + var script = document.createElement('script'); + var loaded = false; + script.setAttribute('src', src); + if (callback) { + script.onload = function () { + if (!loaded) { + callback(); + } + loaded = true; + }; + } + document.getElementsByTagName('head')[0].appendChild(script); + }; + return Util; +}(); +var PageViewport = function PageViewportClosure() { + function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + var centerX = (viewBox[2] + viewBox[0]) / 2; + var centerY = (viewBox[3] + viewBox[1]) / 2; + var rotateA, rotateB, rotateC, rotateD; + rotation = rotation % 360; + rotation = rotation < 0 ? rotation + 360 : rotation; + 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; + default: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + } + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + var offsetCanvasX, offsetCanvasY; + var 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; + this.fontScale = scale; + } + PageViewport.prototype = { + clone: function PageViewPort_clone(args) { + args = args || {}; + var scale = 'scale' in args ? args.scale : this.scale; + var rotation = 'rotation' in args ? args.rotation : this.rotation; + return new PageViewport(this.viewBox.slice(), scale, rotation, this.offsetX, this.offsetY, args.dontFlip); + }, + convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { + return Util.applyTransform([x, y], this.transform); + }, + convertToViewportRectangle: function PageViewport_convertToViewportRectangle(rect) { + var tl = Util.applyTransform([rect[0], rect[1]], this.transform); + var br = Util.applyTransform([rect[2], rect[3]], this.transform); + return [tl[0], tl[1], br[0], br[1]]; + }, + convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { + return Util.applyInverseTransform([x, y], this.transform); + } + }; + return PageViewport; +}(); +var 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) { + var i, + n = str.length, + strBuf = []; + if (str[0] === '\xFE' && str[1] === '\xFF') { + for (i = 2; i < n; i += 2) { + strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); + } + } else { + for (i = 0; i < n; ++i) { + var code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + } + return strBuf.join(''); +} +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isEmptyObj(obj) { + for (var key in obj) { + return false; + } + return true; +} +function isBool(v) { + return typeof v === 'boolean'; +} +function isInt(v) { + return typeof v === 'number' && (v | 0) === v; +} +function isNum(v) { + return typeof v === 'number'; +} +function isString(v) { + return typeof v === 'string'; +} +function isArray(v) { + return v instanceof Array; +} +function isArrayBuffer(v) { + return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined; +} +function isSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; +} +function isNodeJS() { + return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]'; +} +function createPromiseCapability() { + var capability = {}; + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = resolve; + capability.reject = reject; + }); + return capability; +} +var StatTimer = function StatTimerClosure() { + function rpad(str, pad, length) { + while (str.length < length) { + str += pad; + } + return str; + } + function StatTimer() { + this.started = Object.create(null); + this.times = []; + this.enabled = true; + } + StatTimer.prototype = { + time: function StatTimer_time(name) { + if (!this.enabled) { + return; + } + if (name in this.started) { + warn('Timer is already running for ' + name); + } + this.started[name] = Date.now(); + }, + timeEnd: function StatTimer_timeEnd(name) { + if (!this.enabled) { + return; + } + if (!(name in this.started)) { + warn('Timer has not been started for ' + name); + } + this.times.push({ + 'name': name, + 'start': this.started[name], + 'end': Date.now() + }); + delete this.started[name]; + }, + toString: function StatTimer_toString() { + var i, ii; + var times = this.times; + var out = ''; + var longest = 0; + for (i = 0, ii = times.length; i < ii; ++i) { + var name = times[i]['name']; + if (name.length > longest) { + longest = name.length; + } + } + for (i = 0, ii = times.length; i < ii; ++i) { + var span = times[i]; + var duration = span.end - span.start; + out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; + } + return out; + } + }; + return StatTimer; +}(); +var createBlob = function createBlob(data, contentType) { + if (typeof Blob !== 'undefined') { + return new Blob([data], { type: contentType }); + } + throw new Error('The "Blob" constructor is not supported.'); +}; +var createObjectURL = function createObjectURLClosure() { + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + return function createObjectURL(data, contentType) { + var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!forceDataSchema && URL.createObjectURL) { + var blob = createBlob(data, contentType); + return URL.createObjectURL(blob); + } + var buffer = 'data:' + contentType + ';base64,'; + for (var i = 0, ii = data.length; i < ii; i += 3) { + var b1 = data[i] & 0xFF; + var b2 = data[i + 1] & 0xFF; + var b3 = data[i + 2] & 0xFF; + var d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; + var d4 = i + 2 < ii ? b3 & 0x3F : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + return buffer; + }; +}(); +function resolveCall(fn, args) { + var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + if (!fn) { + return Promise.resolve(undefined); + } + return new Promise(function (resolve, reject) { + resolve(fn.apply(thisArg, args)); + }); +} +function wrapReason(reason) { + if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') { + return reason; + } + switch (reason.name) { + case 'AbortException': + return new AbortException(reason.message); + case 'MissingPDFException': + return new MissingPDFException(reason.message); + case 'UnexpectedResponseException': + return new UnexpectedResponseException(reason.message, reason.status); + default: + return new UnknownErrorException(reason.message, reason.details); + } +} +function resolveOrReject(capability, success, reason) { + if (success) { + capability.resolve(); + } else { + capability.reject(reason); + } +} +function finalize(promise) { + return Promise.resolve(promise).catch(function () {}); +} +function MessageHandler(sourceName, targetName, comObj) { + var _this = this; + + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.postMessageTransfers = true; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); + var ah = this.actionHandler = Object.create(null); + this._onComObjOnMessage = function (event) { + var data = event.data; + if (data.targetName !== _this.sourceName) { + return; + } + if (data.stream) { + _this._processStreamMessage(data); + } else if (data.isReply) { + var callbackId = data.callbackId; + if (data.callbackId in callbacksCapabilities) { + var callback = callbacksCapabilities[callbackId]; + delete callbacksCapabilities[callbackId]; + if ('error' in data) { + callback.reject(wrapReason(data.error)); + } else { + callback.resolve(data.data); + } + } else { + throw new Error('Cannot resolve callback ' + callbackId); + } + } else if (data.action in ah) { + var action = ah[data.action]; + if (data.callbackId) { + var _sourceName = _this.sourceName; + var _targetName = data.sourceName; + Promise.resolve().then(function () { + return action[0].call(action[1], data.data); + }).then(function (result) { + comObj.postMessage({ + sourceName: _sourceName, + targetName: _targetName, + isReply: true, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + if (reason instanceof Error) { + reason = reason + ''; + } + comObj.postMessage({ + sourceName: _sourceName, + targetName: _targetName, + isReply: true, + callbackId: data.callbackId, + error: reason + }); + }); + } else if (data.streamId) { + _this._createStreamSink(data); + } else { + action[0].call(action[1], data.data); + } + } else { + throw new Error('Unknown action from worker: ' + data.action); + } + }; + comObj.addEventListener('message', this._onComObjOnMessage); +} +MessageHandler.prototype = { + on: function on(actionName, handler, scope) { + var ah = this.actionHandler; + if (ah[actionName]) { + throw new Error('There is already an actionName called "' + actionName + '"'); + } + ah[actionName] = [handler, scope]; + }, + send: function send(actionName, data, transfers) { + var message = { + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data: data + }; + this.postMessage(message, transfers); + }, + sendWithPromise: function sendWithPromise(actionName, data, transfers) { + var callbackId = this.callbackId++; + var message = { + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data: data, + callbackId: callbackId + }; + var capability = createPromiseCapability(); + this.callbacksCapabilities[callbackId] = capability; + try { + this.postMessage(message, transfers); + } catch (e) { + capability.reject(e); + } + return capability.promise; + }, + sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { + var _this2 = this; + + var streamId = this.streamId++; + var sourceName = this.sourceName; + var targetName = this.targetName; + return new _streams_polyfill.ReadableStream({ + start: function start(controller) { + var startCapability = createPromiseCapability(); + _this2.streamControllers[streamId] = { + controller: controller, + startCall: startCapability, + isClosed: false + }; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + action: actionName, + streamId: streamId, + data: data, + desiredSize: controller.desiredSize + }); + return startCapability.promise; + }, + pull: function pull(controller) { + var pullCapability = createPromiseCapability(); + _this2.streamControllers[streamId].pullCall = pullCapability; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: 'pull', + streamId: streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: function cancel(reason) { + var cancelCapability = createPromiseCapability(); + _this2.streamControllers[streamId].cancelCall = cancelCapability; + _this2.streamControllers[streamId].isClosed = true; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: 'cancel', + reason: reason, + streamId: streamId + }); + return cancelCapability.promise; + } + }, queueingStrategy); + }, + _createStreamSink: function _createStreamSink(data) { + var _this3 = this; + + var self = this; + var action = this.actionHandler[data.action]; + var streamId = data.streamId; + var desiredSize = data.desiredSize; + var sourceName = this.sourceName; + var targetName = data.sourceName; + var capability = createPromiseCapability(); + var sendStreamRequest = function sendStreamRequest(_ref) { + var stream = _ref.stream, + chunk = _ref.chunk, + transfers = _ref.transfers, + success = _ref.success, + reason = _ref.reason; + + _this3.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: stream, + streamId: streamId, + chunk: chunk, + success: success, + reason: reason + }, transfers); + }; + var streamSink = { + enqueue: function enqueue(chunk) { + var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + var transfers = arguments[2]; + + if (this.isCancelled) { + return; + } + var lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = createPromiseCapability(); + this.ready = this.sinkCapability.promise; + } + sendStreamRequest({ + stream: 'enqueue', + chunk: chunk, + transfers: transfers + }); + }, + close: function close() { + if (this.isCancelled) { + return; + } + sendStreamRequest({ stream: 'close' }); + delete self.streamSinks[streamId]; + }, + error: function error(reason) { + if (this.isCancelled) { + return; + } + this.isCancelled = true; + sendStreamRequest({ + stream: 'error', + reason: reason + }); + }, + + sinkCapability: capability, + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { + sendStreamRequest({ + stream: 'start_complete', + success: true + }); + }, function (reason) { + sendStreamRequest({ + stream: 'start_complete', + success: false, + reason: reason + }); + }); + }, + _processStreamMessage: function _processStreamMessage(data) { + var _this4 = this; + + var sourceName = this.sourceName; + var targetName = data.sourceName; + var streamId = data.streamId; + var sendStreamResponse = function sendStreamResponse(_ref2) { + var stream = _ref2.stream, + success = _ref2.success, + reason = _ref2.reason; + + _this4.comObj.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: stream, + success: success, + streamId: streamId, + reason: reason + }); + }; + var deleteStreamController = function deleteStreamController() { + Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { + return capability && finalize(capability.promise); + })).then(function () { + delete _this4.streamControllers[data.streamId]; + }); + }; + switch (data.stream) { + case 'start_complete': + resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); + break; + case 'pull_complete': + resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); + break; + case 'pull': + if (!this.streamSinks[data.streamId]) { + sendStreamResponse({ + stream: 'pull_complete', + success: true + }); + break; + } + if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { + this.streamSinks[data.streamId].sinkCapability.resolve(); + } + this.streamSinks[data.streamId].desiredSize = data.desiredSize; + resolveCall(this.streamSinks[data.streamId].onPull).then(function () { + sendStreamResponse({ + stream: 'pull_complete', + success: true + }); + }, function (reason) { + sendStreamResponse({ + stream: 'pull_complete', + success: false, + reason: reason + }); + }); + break; + case 'enqueue': + assert(this.streamControllers[data.streamId], 'enqueue should have stream controller'); + if (!this.streamControllers[data.streamId].isClosed) { + this.streamControllers[data.streamId].controller.enqueue(data.chunk); + } + break; + case 'close': + assert(this.streamControllers[data.streamId], 'close should have stream controller'); + if (this.streamControllers[data.streamId].isClosed) { + break; + } + this.streamControllers[data.streamId].isClosed = true; + this.streamControllers[data.streamId].controller.close(); + deleteStreamController(); + break; + case 'error': + assert(this.streamControllers[data.streamId], 'error should have stream controller'); + this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); + deleteStreamController(); + break; + case 'cancel_complete': + resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); + deleteStreamController(); + break; + case 'cancel': + if (!this.streamSinks[data.streamId]) { + break; + } + resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { + sendStreamResponse({ + stream: 'cancel_complete', + success: true + }); + }, function (reason) { + sendStreamResponse({ + stream: 'cancel_complete', + success: false, + reason: reason + }); + }); + this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); + this.streamSinks[data.streamId].isCancelled = true; + delete this.streamSinks[data.streamId]; + break; + default: + throw new Error('Unexpected stream case'); + } + }, + postMessage: function postMessage(message, transfers) { + if (transfers && this.postMessageTransfers) { + this.comObj.postMessage(message, transfers); + } else { + this.comObj.postMessage(message); + } + }, + destroy: function destroy() { + this.comObj.removeEventListener('message', this._onComObjOnMessage); + } +}; +function loadJpegStream(id, imageUrl, objs) { + var img = new Image(); + img.onload = function loadJpegStream_onloadClosure() { + objs.resolve(id, img); + }; + img.onerror = function loadJpegStream_onerrorClosure() { + objs.resolve(id, null); + warn('Error during JPEG image loading'); + }; + img.src = imageUrl; +} +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +exports.OPS = OPS; +exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +exports.AnnotationFlag = AnnotationFlag; +exports.AnnotationType = AnnotationType; +exports.FontType = FontType; +exports.ImageKind = ImageKind; +exports.CMapCompressionType = CMapCompressionType; +exports.AbortException = AbortException; +exports.InvalidPDFException = InvalidPDFException; +exports.MessageHandler = MessageHandler; +exports.MissingDataException = MissingDataException; +exports.MissingPDFException = MissingPDFException; +exports.NativeImageDecoding = NativeImageDecoding; +exports.NotImplementedException = NotImplementedException; +exports.PageViewport = PageViewport; +exports.PasswordException = PasswordException; +exports.PasswordResponses = PasswordResponses; +exports.StatTimer = StatTimer; +exports.StreamType = StreamType; +exports.TextRenderingMode = TextRenderingMode; +exports.UnexpectedResponseException = UnexpectedResponseException; +exports.UnknownErrorException = UnknownErrorException; +exports.Util = Util; +exports.XRefParseException = XRefParseException; +exports.FormatError = FormatError; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createBlob = createBlob; +exports.createPromiseCapability = createPromiseCapability; +exports.createObjectURL = createObjectURL; +exports.deprecated = deprecated; +exports.getLookupTableFactory = getLookupTableFactory; +exports.getVerbosityLevel = getVerbosityLevel; +exports.globalScope = globalScope; +exports.info = info; +exports.isArray = isArray; +exports.isArrayBuffer = isArrayBuffer; +exports.isBool = isBool; +exports.isEmptyObj = isEmptyObj; +exports.isInt = isInt; +exports.isNum = isNum; +exports.isString = isString; +exports.isSpace = isSpace; +exports.isNodeJS = isNodeJS; +exports.isSameOrigin = isSameOrigin; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.isLittleEndian = isLittleEndian; +exports.isEvalSupported = isEvalSupported; +exports.loadJpegStream = loadJpegStream; +exports.log2 = log2; +exports.readInt8 = readInt8; +exports.readUint16 = readUint16; +exports.readUint32 = readUint32; +exports.removeNullCharacters = removeNullCharacters; +exports.ReadableStream = _streams_polyfill.ReadableStream; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF8String = stringToUTF8String; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +exports.unreachable = unreachable; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _util = __w_pdfjs_require__(0); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; + +var DOMCanvasFactory = function () { + function DOMCanvasFactory() { + _classCallCheck(this, DOMCanvasFactory); + } + + _createClass(DOMCanvasFactory, [{ + key: 'create', + value: function create(width, height) { + if (width <= 0 || height <= 0) { + throw new Error('invalid canvas size'); + } + var canvas = document.createElement('canvas'); + var context = canvas.getContext('2d'); + canvas.width = width; + canvas.height = height; + return { + canvas: canvas, + context: context + }; + } + }, { + key: 'reset', + value: function 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; + } + }, { + key: 'destroy', + value: function 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; + } + }]); + + return DOMCanvasFactory; +}(); + +var DOMCMapReaderFactory = function () { + function DOMCMapReaderFactory(_ref) { + var _ref$baseUrl = _ref.baseUrl, + baseUrl = _ref$baseUrl === undefined ? null : _ref$baseUrl, + _ref$isCompressed = _ref.isCompressed, + isCompressed = _ref$isCompressed === undefined ? false : _ref$isCompressed; + + _classCallCheck(this, DOMCMapReaderFactory); + + this.baseUrl = baseUrl; + this.isCompressed = isCompressed; + } + + _createClass(DOMCMapReaderFactory, [{ + key: 'fetch', + value: function fetch(_ref2) { + var _this = this; + + var name = _ref2.name; + + if (!name) { + return Promise.reject(new Error('CMap name must be specified.')); + } + return new Promise(function (resolve, reject) { + var url = _this.baseUrl + name + (_this.isCompressed ? '.bcmap' : ''); + var request = new XMLHttpRequest(); + request.open('GET', url, true); + if (_this.isCompressed) { + request.responseType = 'arraybuffer'; + } + request.onreadystatechange = function () { + if (request.readyState !== XMLHttpRequest.DONE) { + return; + } + if (request.status === 200 || request.status === 0) { + var data = void 0; + if (_this.isCompressed && request.response) { + data = new Uint8Array(request.response); + } else if (!_this.isCompressed && request.responseText) { + data = (0, _util.stringToBytes)(request.responseText); + } + if (data) { + resolve({ + cMapData: data, + compressionType: _this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE + }); + return; + } + } + reject(new Error('Unable to load ' + (_this.isCompressed ? 'binary ' : '') + 'CMap at: ' + url)); + }; + request.send(null); + }); + } + }]); + + return DOMCMapReaderFactory; +}(); + +var CustomStyle = function CustomStyleClosure() { + var prefixes = ['ms', 'Moz', 'Webkit', 'O']; + var _cache = Object.create(null); + function CustomStyle() {} + CustomStyle.getProp = function get(propName, element) { + if (arguments.length === 1 && typeof _cache[propName] === 'string') { + return _cache[propName]; + } + element = element || document.documentElement; + var style = element.style, + prefixed, + uPropName; + if (typeof style[propName] === 'string') { + return _cache[propName] = propName; + } + uPropName = propName.charAt(0).toUpperCase() + propName.slice(1); + for (var i = 0, l = prefixes.length; i < l; i++) { + prefixed = prefixes[i] + uPropName; + if (typeof style[prefixed] === 'string') { + return _cache[propName] = prefixed; + } + } + return _cache[propName] = 'undefined'; + }; + CustomStyle.setProp = function set(propName, element, str) { + var prop = this.getProp(propName); + if (prop !== 'undefined') { + element.style[prop] = str; + } + }; + return CustomStyle; +}(); +var RenderingCancelledException = function RenderingCancelledException() { + function RenderingCancelledException(msg, type) { + this.message = msg; + this.type = type; + } + RenderingCancelledException.prototype = new Error(); + RenderingCancelledException.prototype.name = 'RenderingCancelledException'; + RenderingCancelledException.constructor = RenderingCancelledException; + return RenderingCancelledException; +}(); +var LinkTarget = { + NONE: 0, + SELF: 1, + BLANK: 2, + PARENT: 3, + TOP: 4 +}; +var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; +function addLinkAttributes(link, params) { + var url = params && params.url; + link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; + if (url) { + var target = params.target; + if (typeof target === 'undefined') { + target = getDefaultSetting('externalLinkTarget'); + } + link.target = LinkTargetStringMap[target]; + var rel = params.rel; + if (typeof rel === 'undefined') { + rel = getDefaultSetting('externalLinkRel'); + } + link.rel = rel; + } +} +function getFilenameFromUrl(url) { + var anchor = url.indexOf('#'); + var query = url.indexOf('?'); + var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length); + return url.substring(url.lastIndexOf('/', end) + 1, end); +} +function getDefaultSetting(id) { + var globalSettings = _util.globalScope.PDFJS; + switch (id) { + case 'pdfBug': + return globalSettings ? globalSettings.pdfBug : false; + case 'disableAutoFetch': + return globalSettings ? globalSettings.disableAutoFetch : false; + case 'disableStream': + return globalSettings ? globalSettings.disableStream : false; + case 'disableRange': + return globalSettings ? globalSettings.disableRange : false; + case 'disableFontFace': + return globalSettings ? globalSettings.disableFontFace : false; + case 'disableCreateObjectURL': + return globalSettings ? globalSettings.disableCreateObjectURL : false; + case 'disableWebGL': + return globalSettings ? globalSettings.disableWebGL : true; + case 'cMapUrl': + return globalSettings ? globalSettings.cMapUrl : null; + case 'cMapPacked': + return globalSettings ? globalSettings.cMapPacked : false; + case 'postMessageTransfers': + return globalSettings ? globalSettings.postMessageTransfers : true; + case 'workerPort': + return globalSettings ? globalSettings.workerPort : null; + case 'workerSrc': + return globalSettings ? globalSettings.workerSrc : null; + case 'disableWorker': + return globalSettings ? globalSettings.disableWorker : false; + case 'maxImageSize': + return globalSettings ? globalSettings.maxImageSize : -1; + case 'imageResourcesPath': + return globalSettings ? globalSettings.imageResourcesPath : ''; + case 'isEvalSupported': + return globalSettings ? globalSettings.isEvalSupported : true; + case 'externalLinkTarget': + if (!globalSettings) { + return LinkTarget.NONE; + } + switch (globalSettings.externalLinkTarget) { + case LinkTarget.NONE: + case LinkTarget.SELF: + case LinkTarget.BLANK: + case LinkTarget.PARENT: + case LinkTarget.TOP: + return globalSettings.externalLinkTarget; + } + (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); + globalSettings.externalLinkTarget = LinkTarget.NONE; + return LinkTarget.NONE; + case 'externalLinkRel': + return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL; + case 'enableStats': + return !!(globalSettings && globalSettings.enableStats); + case 'pdfjsNext': + return !!(globalSettings && globalSettings.pdfjsNext); + default: + throw new Error('Unknown default setting: ' + id); + } +} +function isExternalLinkTargetSet() { + var externalLinkTarget = getDefaultSetting('externalLinkTarget'); + switch (externalLinkTarget) { + case LinkTarget.NONE: + return false; + case LinkTarget.SELF: + case LinkTarget.BLANK: + case LinkTarget.PARENT: + case LinkTarget.TOP: + return true; + } +} +function isValidUrl(url, allowRelative) { + (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); + var baseUrl = allowRelative ? 'http://example.com' : null; + return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; +} +exports.CustomStyle = CustomStyle; +exports.RenderingCancelledException = RenderingCancelledException; +exports.addLinkAttributes = addLinkAttributes; +exports.isExternalLinkTargetSet = isExternalLinkTargetSet; +exports.isValidUrl = isValidUrl; +exports.getFilenameFromUrl = getFilenameFromUrl; +exports.LinkTarget = LinkTarget; +exports.getDefaultSetting = getDefaultSetting; +exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; +exports.DOMCanvasFactory = DOMCanvasFactory; +exports.DOMCMapReaderFactory = DOMCMapReaderFactory; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.build = exports.version = exports._UnsupportedManager = exports.setPDFNetworkStreamClass = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(1); + +var _font_loader = __w_pdfjs_require__(12); + +var _canvas = __w_pdfjs_require__(11); + +var _metadata = __w_pdfjs_require__(6); + +var _transport_stream = __w_pdfjs_require__(14); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var DEFAULT_RANGE_CHUNK_SIZE = 65536; +var isWorkerDisabled = false; +var workerSrc; +var isPostMessageTransfersDisabled = false; +var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : null; +var fakeWorkerFilesLoader = null; +var useRequireEnsure = false; +{ + if (typeof window === 'undefined') { + isWorkerDisabled = true; + if (typeof require.ensure === 'undefined') { + require.ensure = require('node-ensure'); + } + useRequireEnsure = true; + } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') { + useRequireEnsure = true; + } + if (typeof requirejs !== 'undefined' && requirejs.toUrl) { + workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js'); + } + var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load; + fakeWorkerFilesLoader = useRequireEnsure ? function (callback) { + require.ensure([], function () { + var worker; + worker = require('./pdf.worker.js'); + callback(worker.WorkerMessageHandler); + }); + } : dynamicLoaderSupported ? function (callback) { + requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) { + callback(worker.WorkerMessageHandler); + }); + } : null; +} +var PDFNetworkStream; +function setPDFNetworkStreamClass(cls) { + PDFNetworkStream = cls; +} +function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { + var task = new PDFDocumentLoadingTask(); + if (arguments.length > 1) { + (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); + } + if (pdfDataRangeTransport) { + if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { + pdfDataRangeTransport = Object.create(pdfDataRangeTransport); + pdfDataRangeTransport.length = src.length; + pdfDataRangeTransport.initialData = src.initialData; + if (!pdfDataRangeTransport.abort) { + pdfDataRangeTransport.abort = function () {}; + } + } + src = Object.create(src); + src.range = pdfDataRangeTransport; + } + task.onPassword = passwordCallback || null; + task.onProgress = progressCallback || null; + var source; + if (typeof src === 'string') { + source = { url: src }; + } else if ((0, _util.isArrayBuffer)(src)) { + source = { data: src }; + } else if (src instanceof PDFDataRangeTransport) { + source = { range: src }; + } else { + if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { + throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object'); + } + if (!src.url && !src.data && !src.range) { + throw new Error('Invalid parameter object: need either .data, .range or .url'); + } + source = src; + } + var params = {}; + var rangeTransport = null; + var worker = null; + var CMapReaderFactory = _dom_utils.DOMCMapReaderFactory; + for (var key in source) { + if (key === 'url' && typeof window !== 'undefined') { + params[key] = new URL(source[key], window.location).href; + continue; + } else if (key === 'range') { + rangeTransport = source[key]; + continue; + } else if (key === 'worker') { + worker = source[key]; + continue; + } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { + var pdfBytes = source[key]; + if (typeof pdfBytes === 'string') { + params[key] = (0, _util.stringToBytes)(pdfBytes); + } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { + params[key] = new Uint8Array(pdfBytes); + } else if ((0, _util.isArrayBuffer)(pdfBytes)) { + params[key] = new Uint8Array(pdfBytes); + } else { + throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.'); + } + continue; + } else if (key === 'CMapReaderFactory') { + CMapReaderFactory = source[key]; + continue; + } + params[key] = source[key]; + } + params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; + params.ignoreErrors = params.stopAtErrors !== true; + if (params.disableNativeImageDecoder !== undefined) { + (0, _util.deprecated)('parameter disableNativeImageDecoder, ' + 'use nativeImageDecoderSupport instead'); + } + params.nativeImageDecoderSupport = params.nativeImageDecoderSupport || (params.disableNativeImageDecoder === true ? _util.NativeImageDecoding.NONE : _util.NativeImageDecoding.DECODE); + if (params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DECODE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && params.nativeImageDecoderSupport !== _util.NativeImageDecoding.DISPLAY) { + (0, _util.warn)('Invalid parameter nativeImageDecoderSupport: ' + 'need a state of enum {NativeImageDecoding}'); + params.nativeImageDecoderSupport = _util.NativeImageDecoding.DECODE; + } + if (!worker) { + var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); + worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker(); + task._worker = worker; + } + var docId = task.docId; + worker.promise.then(function () { + if (task.destroyed) { + throw new Error('Loading aborted'); + } + return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) { + if (task.destroyed) { + throw new Error('Loading aborted'); + } + var networkStream = void 0; + if (rangeTransport) { + networkStream = new _transport_stream.PDFDataTransportStream(params, rangeTransport); + } else if (!params.data) { + networkStream = new PDFNetworkStream({ + source: params, + disableRange: (0, _dom_utils.getDefaultSetting)('disableRange') + }); + } + var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); + messageHandler.postMessageTransfers = worker.postMessageTransfers; + var transport = new WorkerTransport(messageHandler, task, networkStream, CMapReaderFactory); + task._transport = transport; + messageHandler.send('Ready', null); + }); + }).catch(task._capability.reject); + return task; +} +function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { + if (worker.destroyed) { + return Promise.reject(new Error('Worker was destroyed')); + } + source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); + source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); + source.chunkedViewerLoading = !!pdfDataRangeTransport; + if (pdfDataRangeTransport) { + source.length = pdfDataRangeTransport.length; + source.initialData = pdfDataRangeTransport.initialData; + } + return worker.messageHandler.sendWithPromise('GetDocRequest', { + docId: docId, + source: { + data: source.data, + url: source.url, + password: source.password, + disableAutoFetch: source.disableAutoFetch, + rangeChunkSize: source.rangeChunkSize, + length: source.length + }, + maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), + disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), + postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, + docBaseUrl: source.docBaseUrl, + nativeImageDecoderSupport: source.nativeImageDecoderSupport, + ignoreErrors: source.ignoreErrors + }).then(function (workerId) { + if (worker.destroyed) { + throw new Error('Worker was destroyed'); + } + return workerId; + }); +} +var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { + var nextDocumentId = 0; + function PDFDocumentLoadingTask() { + this._capability = (0, _util.createPromiseCapability)(); + this._transport = null; + this._worker = null; + this.docId = 'd' + nextDocumentId++; + this.destroyed = false; + this.onPassword = null; + this.onProgress = null; + this.onUnsupportedFeature = null; + } + PDFDocumentLoadingTask.prototype = { + get promise() { + return this._capability.promise; + }, + destroy: function destroy() { + var _this = this; + + this.destroyed = true; + var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy(); + return transportDestroyed.then(function () { + _this._transport = null; + if (_this._worker) { + _this._worker.destroy(); + _this._worker = null; + } + }); + }, + + then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) { + return this.promise.then.apply(this.promise, arguments); + } + }; + return PDFDocumentLoadingTask; +}(); +var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { + function PDFDataRangeTransport(length, initialData) { + this.length = length; + this.initialData = initialData; + this._rangeListeners = []; + this._progressListeners = []; + this._progressiveReadListeners = []; + this._readyCapability = (0, _util.createPromiseCapability)(); + } + PDFDataRangeTransport.prototype = { + addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { + this._rangeListeners.push(listener); + }, + addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) { + this._progressListeners.push(listener); + }, + addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) { + this._progressiveReadListeners.push(listener); + }, + onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) { + var listeners = this._rangeListeners; + for (var i = 0, n = listeners.length; i < n; ++i) { + listeners[i](begin, chunk); + } + }, + onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) { + var _this2 = this; + + this._readyCapability.promise.then(function () { + var listeners = _this2._progressListeners; + for (var i = 0, n = listeners.length; i < n; ++i) { + listeners[i](loaded); + } + }); + }, + onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) { + var _this3 = this; + + this._readyCapability.promise.then(function () { + var listeners = _this3._progressiveReadListeners; + for (var i = 0, n = listeners.length; i < n; ++i) { + listeners[i](chunk); + } + }); + }, + transportReady: function PDFDataRangeTransport_transportReady() { + this._readyCapability.resolve(); + }, + requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) { + throw new Error('Abstract method PDFDataRangeTransport.requestDataRange'); + }, + abort: function PDFDataRangeTransport_abort() {} + }; + return PDFDataRangeTransport; +}(); +var PDFDocumentProxy = function PDFDocumentProxyClosure() { + function PDFDocumentProxy(pdfInfo, transport, loadingTask) { + this.pdfInfo = pdfInfo; + this.transport = transport; + this.loadingTask = loadingTask; + } + PDFDocumentProxy.prototype = { + get numPages() { + return this.pdfInfo.numPages; + }, + get fingerprint() { + return this.pdfInfo.fingerprint; + }, + getPage: function PDFDocumentProxy_getPage(pageNumber) { + return this.transport.getPage(pageNumber); + }, + getPageIndex: function PDFDocumentProxy_getPageIndex(ref) { + return this.transport.getPageIndex(ref); + }, + getDestinations: function PDFDocumentProxy_getDestinations() { + return this.transport.getDestinations(); + }, + getDestination: function PDFDocumentProxy_getDestination(id) { + return this.transport.getDestination(id); + }, + getPageLabels: function PDFDocumentProxy_getPageLabels() { + return this.transport.getPageLabels(); + }, + getPageMode: function getPageMode() { + return this.transport.getPageMode(); + }, + + getAttachments: function PDFDocumentProxy_getAttachments() { + return this.transport.getAttachments(); + }, + getJavaScript: function PDFDocumentProxy_getJavaScript() { + return this.transport.getJavaScript(); + }, + getOutline: function PDFDocumentProxy_getOutline() { + return this.transport.getOutline(); + }, + getMetadata: function PDFDocumentProxy_getMetadata() { + return this.transport.getMetadata(); + }, + getData: function PDFDocumentProxy_getData() { + return this.transport.getData(); + }, + getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() { + return this.transport.downloadInfoCapability.promise; + }, + getStats: function PDFDocumentProxy_getStats() { + return this.transport.getStats(); + }, + cleanup: function PDFDocumentProxy_cleanup() { + this.transport.startCleanup(); + }, + destroy: function PDFDocumentProxy_destroy() { + return this.loadingTask.destroy(); + } + }; + return PDFDocumentProxy; +}(); +var PDFPageProxy = function PDFPageProxyClosure() { + function PDFPageProxy(pageIndex, pageInfo, transport) { + this.pageIndex = pageIndex; + this.pageInfo = pageInfo; + this.transport = transport; + this.stats = new _util.StatTimer(); + this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); + this.commonObjs = transport.commonObjs; + this.objs = new PDFObjects(); + this.cleanupAfterRender = false; + this.pendingCleanup = false; + this.intentStates = Object.create(null); + this.destroyed = false; + } + PDFPageProxy.prototype = { + 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: function PDFPageProxy_getViewport(scale, rotate) { + if (arguments.length < 2) { + rotate = this.rotate; + } + return new _util.PageViewport(this.view, scale, rotate, 0, 0); + }, + getAnnotations: function PDFPageProxy_getAnnotations(params) { + var intent = params && params.intent || null; + if (!this.annotationsPromise || this.annotationsIntent !== intent) { + this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent); + this.annotationsIntent = intent; + } + return this.annotationsPromise; + }, + render: function PDFPageProxy_render(params) { + var _this4 = this; + + var stats = this.stats; + stats.time('Overall'); + this.pendingCleanup = false; + var renderingIntent = params.intent === 'print' ? 'print' : 'display'; + var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); + if (!this.intentStates[renderingIntent]) { + this.intentStates[renderingIntent] = Object.create(null); + } + var intentState = this.intentStates[renderingIntent]; + if (!intentState.displayReadyCapability) { + intentState.receivingOperatorList = true; + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + this.stats.time('Page Request'); + this.transport.messageHandler.send('RenderPageRequest', { + pageIndex: this.pageNumber - 1, + intent: renderingIntent, + renderInteractiveForms: params.renderInteractiveForms === true + }); + } + var complete = function complete(error) { + var i = intentState.renderTasks.indexOf(internalRenderTask); + if (i >= 0) { + intentState.renderTasks.splice(i, 1); + } + if (_this4.cleanupAfterRender) { + _this4.pendingCleanup = true; + } + _this4._tryCleanup(); + if (error) { + internalRenderTask.capability.reject(error); + } else { + internalRenderTask.capability.resolve(); + } + stats.timeEnd('Rendering'); + stats.timeEnd('Overall'); + }; + var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory); + internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print'; + if (!intentState.renderTasks) { + intentState.renderTasks = []; + } + intentState.renderTasks.push(internalRenderTask); + var renderTask = internalRenderTask.task; + if (params.continueCallback) { + (0, _util.deprecated)('render is used with continueCallback parameter'); + renderTask.onContinue = params.continueCallback; + } + intentState.displayReadyCapability.promise.then(function (transparency) { + if (_this4.pendingCleanup) { + complete(); + return; + } + stats.time('Rendering'); + internalRenderTask.initializeGraphics(transparency); + internalRenderTask.operatorListChanged(); + }).catch(complete); + return renderTask; + }, + getOperatorList: function PDFPageProxy_getOperatorList() { + function operatorListChanged() { + if (intentState.operatorList.lastChunk) { + intentState.opListReadCapability.resolve(intentState.operatorList); + var i = intentState.renderTasks.indexOf(opListTask); + if (i >= 0) { + intentState.renderTasks.splice(i, 1); + } + } + } + var renderingIntent = 'oplist'; + if (!this.intentStates[renderingIntent]) { + this.intentStates[renderingIntent] = Object.create(null); + } + var intentState = this.intentStates[renderingIntent]; + var opListTask; + if (!intentState.opListReadCapability) { + opListTask = {}; + opListTask.operatorListChanged = operatorListChanged; + intentState.receivingOperatorList = true; + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); + intentState.renderTasks = []; + intentState.renderTasks.push(opListTask); + intentState.operatorList = { + fnArray: [], + argsArray: [], + lastChunk: false + }; + this.transport.messageHandler.send('RenderPageRequest', { + pageIndex: this.pageIndex, + intent: renderingIntent + }); + } + return intentState.opListReadCapability.promise; + }, + streamTextContent: function streamTextContent() { + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + var TEXT_CONTENT_CHUNK_SIZE = 100; + return this.transport.messageHandler.sendWithStream('GetTextContent', { + pageIndex: this.pageNumber - 1, + normalizeWhitespace: params.normalizeWhitespace === true, + combineTextItems: params.disableCombineTextItems !== true + }, { + highWaterMark: TEXT_CONTENT_CHUNK_SIZE, + size: function size(textContent) { + return textContent.items.length; + } + }); + }, + + getTextContent: function PDFPageProxy_getTextContent(params) { + params = params || {}; + var readableStream = this.streamTextContent(params); + return new Promise(function (resolve, reject) { + function pump() { + reader.read().then(function (_ref) { + var value = _ref.value, + done = _ref.done; + + if (done) { + resolve(textContent); + return; + } + _util.Util.extendObj(textContent.styles, value.styles); + _util.Util.appendToArray(textContent.items, value.items); + pump(); + }, reject); + } + var reader = readableStream.getReader(); + var textContent = { + items: [], + styles: Object.create(null) + }; + pump(); + }); + }, + _destroy: function PDFPageProxy_destroy() { + this.destroyed = true; + this.transport.pageCache[this.pageIndex] = null; + var waitOn = []; + Object.keys(this.intentStates).forEach(function (intent) { + if (intent === 'oplist') { + return; + } + var intentState = this.intentStates[intent]; + intentState.renderTasks.forEach(function (renderTask) { + var renderCompleted = renderTask.capability.promise.catch(function () {}); + waitOn.push(renderCompleted); + renderTask.cancel(); + }); + }, this); + this.objs.clear(); + this.annotationsPromise = null; + this.pendingCleanup = false; + return Promise.all(waitOn); + }, + destroy: function destroy() { + (0, _util.deprecated)('page destroy method, use cleanup() instead'); + this.cleanup(); + }, + + cleanup: function PDFPageProxy_cleanup() { + this.pendingCleanup = true; + this._tryCleanup(); + }, + _tryCleanup: function PDFPageProxy_tryCleanup() { + if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) { + var intentState = this.intentStates[intent]; + return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList; + }, this)) { + return; + } + Object.keys(this.intentStates).forEach(function (intent) { + delete this.intentStates[intent]; + }, this); + this.objs.clear(); + this.annotationsPromise = null; + this.pendingCleanup = false; + }, + _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) { + var intentState = this.intentStates[intent]; + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.resolve(transparency); + } + }, + _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) { + var intentState = this.intentStates[intent]; + var i, ii; + for (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 (i = 0; i < intentState.renderTasks.length; i++) { + intentState.renderTasks[i].operatorListChanged(); + } + if (operatorListChunk.lastChunk) { + intentState.receivingOperatorList = false; + this._tryCleanup(); + } + } + }; + return PDFPageProxy; +}(); + +var LoopbackPort = function () { + function LoopbackPort(defer) { + _classCallCheck(this, LoopbackPort); + + this._listeners = []; + this._defer = defer; + this._deferred = Promise.resolve(undefined); + } + + _createClass(LoopbackPort, [{ + key: 'postMessage', + value: function postMessage(obj, transfers) { + var _this5 = this; + + function cloneValue(value) { + if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) { + return value; + } + if (cloned.has(value)) { + return cloned.get(value); + } + var result; + var buffer; + if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { + var transferable = transfers && transfers.indexOf(buffer) >= 0; + if (value === buffer) { + result = value; + } else if (transferable) { + result = new value.constructor(buffer, value.byteOffset, value.byteLength); + } else { + result = new value.constructor(value); + } + cloned.set(value, result); + return result; + } + result = (0, _util.isArray)(value) ? [] : {}; + cloned.set(value, result); + for (var i in value) { + var desc, + p = value; + while (!(desc = Object.getOwnPropertyDescriptor(p, i))) { + p = Object.getPrototypeOf(p); + } + if (typeof desc.value === 'undefined' || typeof desc.value === 'function') { + continue; + } + result[i] = cloneValue(desc.value); + } + return result; + } + if (!this._defer) { + this._listeners.forEach(function (listener) { + listener.call(this, { data: obj }); + }, this); + return; + } + var cloned = new WeakMap(); + var e = { data: cloneValue(obj) }; + this._deferred.then(function () { + _this5._listeners.forEach(function (listener) { + listener.call(this, e); + }, _this5); + }); + } + }, { + key: 'addEventListener', + value: function addEventListener(name, listener) { + this._listeners.push(listener); + } + }, { + key: 'removeEventListener', + value: function removeEventListener(name, listener) { + var i = this._listeners.indexOf(listener); + this._listeners.splice(i, 1); + } + }, { + key: 'terminate', + value: function terminate() { + this._listeners = []; + } + }]); + + return LoopbackPort; +}(); + +var PDFWorker = function PDFWorkerClosure() { + var nextFakeWorkerId = 0; + function getWorkerSrc() { + if (typeof workerSrc !== 'undefined') { + return workerSrc; + } + if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { + return (0, _dom_utils.getDefaultSetting)('workerSrc'); + } + if (pdfjsFilePath) { + return pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2'); + } + throw new Error('No PDFJS.workerSrc specified'); + } + var fakeWorkerFilesLoadedCapability = void 0; + function setupFakeWorkerGlobal() { + var WorkerMessageHandler; + if (fakeWorkerFilesLoadedCapability) { + return fakeWorkerFilesLoadedCapability.promise; + } + fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); + var loader = fakeWorkerFilesLoader || function (callback) { + _util.Util.loadScript(getWorkerSrc(), function () { + callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler); + }); + }; + loader(fakeWorkerFilesLoadedCapability.resolve); + return fakeWorkerFilesLoadedCapability.promise; + } + function createCDNWrapper(url) { + var wrapper = 'importScripts(\'' + url + '\');'; + return URL.createObjectURL(new Blob([wrapper])); + } + var pdfWorkerPorts = new WeakMap(); + function PDFWorker(name, port) { + if (port && pdfWorkerPorts.has(port)) { + throw new Error('Cannot use more than one PDFWorker per port'); + } + this.name = name; + this.destroyed = false; + this.postMessageTransfers = true; + this._readyCapability = (0, _util.createPromiseCapability)(); + this._port = null; + this._webWorker = null; + this._messageHandler = null; + if (port) { + pdfWorkerPorts.set(port, this); + this._initializeFromPort(port); + return; + } + this._initialize(); + } + PDFWorker.prototype = { + get promise() { + return this._readyCapability.promise; + }, + get port() { + return this._port; + }, + get messageHandler() { + return this._messageHandler; + }, + _initializeFromPort: function PDFWorker_initializeFromPort(port) { + this._port = port; + this._messageHandler = new _util.MessageHandler('main', 'worker', port); + this._messageHandler.on('ready', function () {}); + this._readyCapability.resolve(); + }, + _initialize: function PDFWorker_initialize() { + var _this6 = this; + + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker') && typeof Worker !== 'undefined') { + var workerSrc = getWorkerSrc(); + try { + if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { + workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); + } + var worker = new Worker(workerSrc); + var messageHandler = new _util.MessageHandler('main', 'worker', worker); + var terminateEarly = function terminateEarly() { + worker.removeEventListener('error', onWorkerError); + messageHandler.destroy(); + worker.terminate(); + if (_this6.destroyed) { + _this6._readyCapability.reject(new Error('Worker was destroyed')); + } else { + _this6._setupFakeWorker(); + } + }; + var onWorkerError = function onWorkerError() { + if (!_this6._webWorker) { + terminateEarly(); + } + }; + worker.addEventListener('error', onWorkerError); + messageHandler.on('test', function (data) { + worker.removeEventListener('error', onWorkerError); + if (_this6.destroyed) { + terminateEarly(); + return; + } + var supportTypedArray = data && data.supportTypedArray; + if (supportTypedArray) { + _this6._messageHandler = messageHandler; + _this6._port = worker; + _this6._webWorker = worker; + if (!data.supportTransfers) { + _this6.postMessageTransfers = false; + isPostMessageTransfersDisabled = true; + } + _this6._readyCapability.resolve(); + messageHandler.send('configure', { verbosity: (0, _util.getVerbosityLevel)() }); + } else { + _this6._setupFakeWorker(); + messageHandler.destroy(); + worker.terminate(); + } + }); + messageHandler.on('console_log', function (data) { + console.log.apply(console, data); + }); + messageHandler.on('console_error', function (data) { + console.error.apply(console, data); + }); + messageHandler.on('ready', function (data) { + worker.removeEventListener('error', onWorkerError); + if (_this6.destroyed) { + terminateEarly(); + return; + } + try { + sendTest(); + } catch (e) { + _this6._setupFakeWorker(); + } + }); + var sendTest = function sendTest() { + var postMessageTransfers = (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled; + var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); + try { + messageHandler.send('test', testObj, [testObj.buffer]); + } catch (ex) { + (0, _util.info)('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: function PDFWorker_setupFakeWorker() { + var _this7 = this; + + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { + (0, _util.warn)('Setting up fake worker.'); + isWorkerDisabled = true; + } + setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { + if (_this7.destroyed) { + _this7._readyCapability.reject(new Error('Worker was destroyed')); + return; + } + var isTypedArraysPresent = Uint8Array !== Float32Array; + var port = new LoopbackPort(isTypedArraysPresent); + _this7._port = port; + var id = 'fake' + nextFakeWorkerId++; + var workerHandler = new _util.MessageHandler(id + '_worker', id, port); + WorkerMessageHandler.setup(workerHandler, port); + var messageHandler = new _util.MessageHandler(id, id + '_worker', port); + _this7._messageHandler = messageHandler; + _this7._readyCapability.resolve(); + }); + }, + destroy: function PDFWorker_destroy() { + this.destroyed = true; + if (this._webWorker) { + this._webWorker.terminate(); + this._webWorker = null; + } + pdfWorkerPorts.delete(this._port); + this._port = null; + if (this._messageHandler) { + this._messageHandler.destroy(); + this._messageHandler = null; + } + } + }; + PDFWorker.fromPort = function (port) { + if (pdfWorkerPorts.has(port)) { + return pdfWorkerPorts.get(port); + } + return new PDFWorker(null, port); + }; + return PDFWorker; +}(); +var WorkerTransport = function WorkerTransportClosure() { + function WorkerTransport(messageHandler, loadingTask, networkStream, CMapReaderFactory) { + this.messageHandler = messageHandler; + this.loadingTask = loadingTask; + this.commonObjs = new PDFObjects(); + this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); + this.CMapReaderFactory = new CMapReaderFactory({ + baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), + isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') + }); + this.destroyed = false; + this.destroyCapability = null; + this._passwordCapability = null; + this._networkStream = networkStream; + this._fullReader = null; + this._lastProgress = null; + this.pageCache = []; + this.pagePromises = []; + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); + this.setupMessageHandler(); + } + WorkerTransport.prototype = { + destroy: function WorkerTransport_destroy() { + var _this8 = this; + + 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')); + } + var waitOn = []; + this.pageCache.forEach(function (page) { + if (page) { + waitOn.push(page._destroy()); + } + }); + this.pageCache = []; + this.pagePromises = []; + var terminated = this.messageHandler.sendWithPromise('Terminate', null); + waitOn.push(terminated); + Promise.all(waitOn).then(function () { + _this8.fontLoader.clear(); + if (_this8._networkStream) { + _this8._networkStream.cancelAllRequests(); + } + if (_this8.messageHandler) { + _this8.messageHandler.destroy(); + _this8.messageHandler = null; + } + _this8.destroyCapability.resolve(); + }, this.destroyCapability.reject); + return this.destroyCapability.promise; + }, + setupMessageHandler: function WorkerTransport_setupMessageHandler() { + var messageHandler = this.messageHandler; + var loadingTask = this.loadingTask; + messageHandler.on('GetReader', function (data, sink) { + var _this9 = this; + + (0, _util.assert)(this._networkStream); + this._fullReader = this._networkStream.getFullReader(); + this._fullReader.onProgress = function (evt) { + _this9._lastProgress = { + loaded: evt.loaded, + total: evt.total + }; + }; + sink.onPull = function () { + _this9._fullReader.read().then(function (_ref2) { + var value = _ref2.value, + done = _ref2.done; + + if (done) { + sink.close(); + return; + } + (0, _util.assert)((0, _util.isArrayBuffer)(value)); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(function (reason) { + sink.error(reason); + }); + }; + sink.onCancel = function (reason) { + _this9._fullReader.cancel(reason); + }; + }, this); + messageHandler.on('ReaderHeadersReady', function (data) { + var _this10 = this; + + var headersCapability = (0, _util.createPromiseCapability)(); + var fullReader = this._fullReader; + fullReader.headersReady.then(function () { + if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) { + if (_this10._lastProgress) { + var _loadingTask = _this10.loadingTask; + if (_loadingTask.onProgress) { + _loadingTask.onProgress(_this10._lastProgress); + } + } + fullReader.onProgress = function (evt) { + var loadingTask = _this10.loadingTask; + if (loadingTask.onProgress) { + loadingTask.onProgress({ + loaded: evt.loaded, + total: evt.total + }); + } + }; + } + headersCapability.resolve({ + isStreamingSupported: fullReader.isStreamingSupported, + isRangeSupported: fullReader.isRangeSupported, + contentLength: fullReader.contentLength + }); + }, headersCapability.reject); + return headersCapability.promise; + }, this); + messageHandler.on('GetRangeReader', function (data, sink) { + (0, _util.assert)(this._networkStream); + var _rangeReader = this._networkStream.getRangeReader(data.begin, data.end); + sink.onPull = function () { + _rangeReader.read().then(function (_ref3) { + var value = _ref3.value, + done = _ref3.done; + + if (done) { + sink.close(); + return; + } + (0, _util.assert)((0, _util.isArrayBuffer)(value)); + sink.enqueue(new Uint8Array(value), 1, [value]); + }).catch(function (reason) { + sink.error(reason); + }); + }; + sink.onCancel = function (reason) { + _rangeReader.cancel(reason); + }; + }, this); + messageHandler.on('GetDoc', function transportDoc(data) { + var pdfInfo = data.pdfInfo; + this.numPages = data.pdfInfo.numPages; + var loadingTask = this.loadingTask; + var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask); + this.pdfDocument = pdfDocument; + loadingTask._capability.resolve(pdfDocument); + }, this); + messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { + var _this11 = this; + + this._passwordCapability = (0, _util.createPromiseCapability)(); + if (loadingTask.onPassword) { + var updatePassword = function updatePassword(password) { + _this11._passwordCapability.resolve({ password: password }); + }; + loadingTask.onPassword(updatePassword, exception.code); + } else { + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); + } + return this._passwordCapability.promise; + }, this); + messageHandler.on('PasswordException', function transportPasswordException(exception) { + loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); + }, this); + messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { + this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); + }, this); + messageHandler.on('MissingPDF', function transportMissingPDF(exception) { + this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); + }, this); + messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { + this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); + }, this); + messageHandler.on('UnknownError', function transportUnknownError(exception) { + this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); + }, this); + messageHandler.on('DataLoaded', function transportPage(data) { + this.downloadInfoCapability.resolve(data); + }, this); + messageHandler.on('PDFManagerReady', function transportPage(data) {}, this); + messageHandler.on('StartRenderPage', function transportRender(data) { + if (this.destroyed) { + return; + } + var page = this.pageCache[data.pageIndex]; + page.stats.timeEnd('Page Request'); + page._startRenderPage(data.transparency, data.intent); + }, this); + messageHandler.on('RenderPageChunk', function transportRender(data) { + if (this.destroyed) { + return; + } + var page = this.pageCache[data.pageIndex]; + page._renderPageChunk(data.operatorList, data.intent); + }, this); + messageHandler.on('commonobj', function transportObj(data) { + var _this12 = this; + + if (this.destroyed) { + return; + } + var id = data[0]; + var type = data[1]; + if (this.commonObjs.hasData(id)) { + return; + } + switch (type) { + case 'Font': + var exportedData = data[2]; + if ('error' in exportedData) { + var exportedError = exportedData.error; + (0, _util.warn)('Error during font loading: ' + exportedError); + this.commonObjs.resolve(id, exportedError); + break; + } + var fontRegistry = null; + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { + fontRegistry = { + registerFont: function registerFont(font, url) { + _util.globalScope['FontInspector'].fontAdded(font, url); + } + }; + } + var font = new _font_loader.FontFaceObject(exportedData, { + isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), + fontRegistry: fontRegistry + }); + var fontReady = function fontReady(fontObjs) { + _this12.commonObjs.resolve(id, font); + }; + this.fontLoader.bind([font], fontReady); + break; + case 'FontPath': + this.commonObjs.resolve(id, data[2]); + break; + default: + throw new Error('Got unknown common object type ' + type); + } + }, this); + messageHandler.on('obj', function transportObj(data) { + if (this.destroyed) { + return; + } + var id = data[0]; + var pageIndex = data[1]; + var type = data[2]; + var pageProxy = this.pageCache[pageIndex]; + var imageData; + if (pageProxy.objs.hasData(id)) { + return; + } + switch (type) { + case 'JpegStream': + imageData = data[3]; + (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); + break; + case 'Image': + imageData = data[3]; + pageProxy.objs.resolve(id, imageData); + var MAX_IMAGE_SIZE_TO_STORE = 8000000; + if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) { + pageProxy.cleanupAfterRender = true; + } + break; + default: + throw new Error('Got unknown object type ' + type); + } + }, this); + messageHandler.on('DocProgress', function transportDocProgress(data) { + if (this.destroyed) { + return; + } + var loadingTask = this.loadingTask; + if (loadingTask.onProgress) { + loadingTask.onProgress({ + loaded: data.loaded, + total: data.total + }); + } + }, this); + messageHandler.on('PageError', function transportError(data) { + if (this.destroyed) { + return; + } + var page = this.pageCache[data.pageNum - 1]; + var intentState = page.intentStates[data.intent]; + if (intentState.displayReadyCapability) { + intentState.displayReadyCapability.reject(data.error); + } else { + throw new Error(data.error); + } + if (intentState.operatorList) { + intentState.operatorList.lastChunk = true; + for (var i = 0; i < intentState.renderTasks.length; i++) { + intentState.renderTasks[i].operatorListChanged(); + } + } + }, this); + messageHandler.on('UnsupportedFeature', function transportUnsupportedFeature(data) { + if (this.destroyed) { + return; + } + var featureId = data.featureId; + var loadingTask = this.loadingTask; + if (loadingTask.onUnsupportedFeature) { + loadingTask.onUnsupportedFeature(featureId); + } + _UnsupportedManager.notify(featureId); + }, this); + messageHandler.on('JpegDecode', function (data) { + if (this.destroyed) { + return Promise.reject(new Error('Worker was destroyed')); + } + if (typeof document === 'undefined') { + return Promise.reject(new Error('"document" is not defined.')); + } + var imageUrl = data[0]; + var components = data[1]; + if (components !== 3 && components !== 1) { + return Promise.reject(new Error('Only 3 components or 1 component can be returned')); + } + return new Promise(function (resolve, reject) { + var img = new Image(); + img.onload = function () { + var width = img.width; + var height = img.height; + var size = width * height; + var rgbaLength = size * 4; + var buf = new Uint8Array(size * components); + var tmpCanvas = document.createElement('canvas'); + tmpCanvas.width = width; + tmpCanvas.height = height; + var tmpCtx = tmpCanvas.getContext('2d'); + tmpCtx.drawImage(img, 0, 0); + var data = tmpCtx.getImageData(0, 0, width, height).data; + var i, j; + if (components === 3) { + for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) { + buf[j] = data[i]; + buf[j + 1] = data[i + 1]; + buf[j + 2] = data[i + 2]; + } + } else if (components === 1) { + for (i = 0, j = 0; i < rgbaLength; i += 4, j++) { + buf[j] = data[i]; + } + } + resolve({ + data: buf, + width: width, + height: height + }); + }; + img.onerror = function () { + reject(new Error('JpegDecode failed to load image')); + }; + img.src = imageUrl; + }); + }, this); + messageHandler.on('FetchBuiltInCMap', function (data) { + if (this.destroyed) { + return Promise.reject(new Error('Worker was destroyed')); + } + return this.CMapReaderFactory.fetch({ name: data.name }); + }, this); + }, + getData: function WorkerTransport_getData() { + return this.messageHandler.sendWithPromise('GetData', null); + }, + getPage: function WorkerTransport_getPage(pageNumber, capability) { + var _this13 = this; + + if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { + return Promise.reject(new Error('Invalid page request')); + } + var pageIndex = pageNumber - 1; + if (pageIndex in this.pagePromises) { + return this.pagePromises[pageIndex]; + } + var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) { + if (_this13.destroyed) { + throw new Error('Transport destroyed'); + } + var page = new PDFPageProxy(pageIndex, pageInfo, _this13); + _this13.pageCache[pageIndex] = page; + return page; + }); + this.pagePromises[pageIndex] = promise; + return promise; + }, + getPageIndex: function WorkerTransport_getPageIndexByRef(ref) { + return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) { + return Promise.reject(new Error(reason)); + }); + }, + getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) { + return this.messageHandler.sendWithPromise('GetAnnotations', { + pageIndex: pageIndex, + intent: intent + }); + }, + getDestinations: function WorkerTransport_getDestinations() { + return this.messageHandler.sendWithPromise('GetDestinations', null); + }, + getDestination: function WorkerTransport_getDestination(id) { + return this.messageHandler.sendWithPromise('GetDestination', { id: id }); + }, + getPageLabels: function WorkerTransport_getPageLabels() { + return this.messageHandler.sendWithPromise('GetPageLabels', null); + }, + getPageMode: function getPageMode() { + return this.messageHandler.sendWithPromise('GetPageMode', null); + }, + + getAttachments: function WorkerTransport_getAttachments() { + return this.messageHandler.sendWithPromise('GetAttachments', null); + }, + getJavaScript: function WorkerTransport_getJavaScript() { + return this.messageHandler.sendWithPromise('GetJavaScript', null); + }, + getOutline: function WorkerTransport_getOutline() { + return this.messageHandler.sendWithPromise('GetOutline', null); + }, + getMetadata: function WorkerTransport_getMetadata() { + return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { + return { + info: results[0], + metadata: results[1] ? new _metadata.Metadata(results[1]) : null + }; + }); + }, + getStats: function WorkerTransport_getStats() { + return this.messageHandler.sendWithPromise('GetStats', null); + }, + startCleanup: function WorkerTransport_startCleanup() { + var _this14 = this; + + this.messageHandler.sendWithPromise('Cleanup', null).then(function () { + for (var i = 0, ii = _this14.pageCache.length; i < ii; i++) { + var page = _this14.pageCache[i]; + if (page) { + page.cleanup(); + } + } + _this14.commonObjs.clear(); + _this14.fontLoader.clear(); + }); + } + }; + return WorkerTransport; +}(); +var PDFObjects = function PDFObjectsClosure() { + function PDFObjects() { + this.objs = Object.create(null); + } + PDFObjects.prototype = { + ensureObj: function PDFObjects_ensureObj(objId) { + if (this.objs[objId]) { + return this.objs[objId]; + } + var obj = { + capability: (0, _util.createPromiseCapability)(), + data: null, + resolved: false + }; + this.objs[objId] = obj; + return obj; + }, + get: function PDFObjects_get(objId, callback) { + if (callback) { + this.ensureObj(objId).capability.promise.then(callback); + return null; + } + var obj = this.objs[objId]; + if (!obj || !obj.resolved) { + throw new Error('Requesting object that isn\'t resolved yet ' + objId); + } + return obj.data; + }, + resolve: function PDFObjects_resolve(objId, data) { + var obj = this.ensureObj(objId); + obj.resolved = true; + obj.data = data; + obj.capability.resolve(data); + }, + isResolved: function PDFObjects_isResolved(objId) { + var objs = this.objs; + if (!objs[objId]) { + return false; + } + return objs[objId].resolved; + }, + hasData: function PDFObjects_hasData(objId) { + return this.isResolved(objId); + }, + getData: function PDFObjects_getData(objId) { + var objs = this.objs; + if (!objs[objId] || !objs[objId].resolved) { + return null; + } + return objs[objId].data; + }, + clear: function PDFObjects_clear() { + this.objs = Object.create(null); + } + }; + return PDFObjects; +}(); +var RenderTask = function RenderTaskClosure() { + function RenderTask(internalRenderTask) { + this._internalRenderTask = internalRenderTask; + this.onContinue = null; + } + RenderTask.prototype = { + get promise() { + return this._internalRenderTask.capability.promise; + }, + cancel: function RenderTask_cancel() { + this._internalRenderTask.cancel(); + }, + then: function RenderTask_then(onFulfilled, onRejected) { + return this.promise.then.apply(this.promise, arguments); + } + }; + return RenderTask; +}(); +var InternalRenderTask = function InternalRenderTaskClosure() { + var canvasInRendering = new WeakMap(); + function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory) { + this.callback = callback; + this.params = params; + this.objs = objs; + this.commonObjs = commonObjs; + this.operatorListIdx = null; + this.operatorList = operatorList; + this.pageNumber = pageNumber; + this.canvasFactory = canvasFactory; + this.running = false; + this.graphicsReadyCallback = null; + this.graphicsReady = false; + this.useRequestAnimationFrame = false; + this.cancelled = false; + this.capability = (0, _util.createPromiseCapability)(); + this.task = new RenderTask(this); + this._continueBound = this._continue.bind(this); + this._scheduleNextBound = this._scheduleNext.bind(this); + this._nextBound = this._next.bind(this); + this._canvas = params.canvasContext.canvas; + } + InternalRenderTask.prototype = { + initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) { + if (this._canvas) { + if (canvasInRendering.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.'); + } + canvasInRendering.set(this._canvas, this); + } + if (this.cancelled) { + return; + } + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { + this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); + this.stepper.init(this.operatorList); + this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); + } + var params = this.params; + this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); + this.gfx.beginDrawing({ + transform: params.transform, + viewport: params.viewport, + transparency: transparency, + background: params.background + }); + this.operatorListIdx = 0; + this.graphicsReady = true; + if (this.graphicsReadyCallback) { + this.graphicsReadyCallback(); + } + }, + cancel: function InternalRenderTask_cancel() { + this.running = false; + this.cancelled = true; + if (this._canvas) { + canvasInRendering.delete(this._canvas); + } + if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { + this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); + } else { + this.callback('cancelled'); + } + }, + operatorListChanged: function InternalRenderTask_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: function InternalRenderTask__continue() { + this.running = true; + if (this.cancelled) { + return; + } + if (this.task.onContinue) { + this.task.onContinue(this._scheduleNextBound); + } else { + this._scheduleNext(); + } + }, + _scheduleNext: function InternalRenderTask__scheduleNext() { + if (this.useRequestAnimationFrame && typeof window !== 'undefined') { + window.requestAnimationFrame(this._nextBound); + } else { + Promise.resolve(undefined).then(this._nextBound); + } + }, + _next: function InternalRenderTask__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) { + canvasInRendering.delete(this._canvas); + } + this.callback(); + } + } + } + }; + return InternalRenderTask; +}(); +var _UnsupportedManager = function UnsupportedManagerClosure() { + var listeners = []; + return { + listen: function listen(cb) { + (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); + listeners.push(cb); + }, + notify: function notify(featureId) { + for (var i = 0, ii = listeners.length; i < ii; i++) { + listeners[i](featureId); + } + } + }; +}(); +var version, build; +{ + exports.version = version = '1.9.426'; + exports.build = build = '2558a58d'; +} +exports.getDocument = getDocument; +exports.LoopbackPort = LoopbackPort; +exports.PDFDataRangeTransport = PDFDataRangeTransport; +exports.PDFWorker = PDFWorker; +exports.PDFDocumentProxy = PDFDocumentProxy; +exports.PDFPageProxy = PDFPageProxy; +exports.setPDFNetworkStreamClass = setPDFNetworkStreamClass; +exports._UnsupportedManager = _UnsupportedManager; +exports.version = version; +exports.build = build; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AnnotationLayer = undefined; + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + +function AnnotationElementFactory() {} +AnnotationElementFactory.prototype = { + create: function AnnotationElementFactory_create(parameters) { + var subtype = parameters.data.annotationType; + switch (subtype) { + case _util.AnnotationType.LINK: + return new LinkAnnotationElement(parameters); + case _util.AnnotationType.TEXT: + return new TextAnnotationElement(parameters); + case _util.AnnotationType.WIDGET: + var fieldType = parameters.data.fieldType; + switch (fieldType) { + case 'Tx': + return new TextWidgetAnnotationElement(parameters); + case 'Btn': + if (parameters.data.radioButton) { + return new RadioButtonWidgetAnnotationElement(parameters); + } else if (parameters.data.checkBox) { + return new CheckboxWidgetAnnotationElement(parameters); + } + (0, _util.warn)('Unimplemented button widget annotation: pushbutton'); + break; + case 'Ch': + return new ChoiceWidgetAnnotationElement(parameters); + } + return new WidgetAnnotationElement(parameters); + case _util.AnnotationType.POPUP: + return new PopupAnnotationElement(parameters); + case _util.AnnotationType.LINE: + return new LineAnnotationElement(parameters); + case _util.AnnotationType.HIGHLIGHT: + return new HighlightAnnotationElement(parameters); + case _util.AnnotationType.UNDERLINE: + return new UnderlineAnnotationElement(parameters); + case _util.AnnotationType.SQUIGGLY: + return new SquigglyAnnotationElement(parameters); + case _util.AnnotationType.STRIKEOUT: + return new StrikeOutAnnotationElement(parameters); + case _util.AnnotationType.FILEATTACHMENT: + return new FileAttachmentAnnotationElement(parameters); + default: + return new AnnotationElement(parameters); + } + } +}; +var AnnotationElement = function AnnotationElementClosure() { + function AnnotationElement(parameters, isRenderable, ignoreBorder) { + this.isRenderable = isRenderable || false; + this.data = parameters.data; + this.layer = parameters.layer; + this.page = parameters.page; + this.viewport = parameters.viewport; + this.linkService = parameters.linkService; + this.downloadManager = parameters.downloadManager; + this.imageResourcesPath = parameters.imageResourcesPath; + this.renderInteractiveForms = parameters.renderInteractiveForms; + if (isRenderable) { + this.container = this._createContainer(ignoreBorder); + } + } + AnnotationElement.prototype = { + _createContainer: function AnnotationElement_createContainer(ignoreBorder) { + var data = this.data, + page = this.page, + viewport = this.viewport; + var container = document.createElement('section'); + var width = data.rect[2] - data.rect[0]; + var height = data.rect[3] - data.rect[1]; + container.setAttribute('data-annotation-id', data.id); + var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + _dom_utils.CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); + if (!ignoreBorder && data.borderStyle.width > 0) { + container.style.borderWidth = data.borderStyle.width + 'px'; + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { + width = width - 2 * data.borderStyle.width; + height = height - 2 * data.borderStyle.width; + } + var horizontalRadius = data.borderStyle.horizontalCornerRadius; + var verticalRadius = data.borderStyle.verticalCornerRadius; + if (horizontalRadius > 0 || verticalRadius > 0) { + var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; + _dom_utils.CustomStyle.setProp('borderRadius', container, radius); + } + switch (data.borderStyle.style) { + case _util.AnnotationBorderStyleType.SOLID: + container.style.borderStyle = 'solid'; + break; + case _util.AnnotationBorderStyleType.DASHED: + container.style.borderStyle = 'dashed'; + break; + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)('Unimplemented border style: beveled'); + break; + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)('Unimplemented border style: inset'); + break; + case _util.AnnotationBorderStyleType.UNDERLINE: + container.style.borderBottomStyle = 'solid'; + break; + default: + break; + } + if (data.color) { + container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + } else { + container.style.borderWidth = 0; + } + } + container.style.left = rect[0] + 'px'; + container.style.top = rect[1] + 'px'; + container.style.width = width + 'px'; + container.style.height = height + 'px'; + return container; + }, + _createPopup: function AnnotationElement_createPopup(container, trigger, data) { + if (!trigger) { + trigger = document.createElement('div'); + trigger.style.height = container.style.height; + trigger.style.width = container.style.width; + container.appendChild(trigger); + } + var popupElement = new PopupElement({ + container: container, + trigger: trigger, + color: data.color, + title: data.title, + contents: data.contents, + hideWrapper: true + }); + var popup = popupElement.render(); + popup.style.left = container.style.width; + container.appendChild(popup); + }, + render: function AnnotationElement_render() { + throw new Error('Abstract method AnnotationElement.render called'); + } + }; + return AnnotationElement; +}(); +var LinkAnnotationElement = function LinkAnnotationElementClosure() { + function LinkAnnotationElement(parameters) { + AnnotationElement.call(this, parameters, true); + } + _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { + render: function LinkAnnotationElement_render() { + this.container.className = 'linkAnnotation'; + var link = document.createElement('a'); + (0, _dom_utils.addLinkAttributes)(link, { + url: this.data.url, + target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined + }); + if (!this.data.url) { + if (this.data.action) { + this._bindNamedAction(link, this.data.action); + } else { + this._bindLink(link, this.data.dest); + } + } + this.container.appendChild(link); + return this.container; + }, + _bindLink: function _bindLink(link, destination) { + var _this = this; + + link.href = this.linkService.getDestinationHash(destination); + link.onclick = function () { + if (destination) { + _this.linkService.navigateTo(destination); + } + return false; + }; + if (destination) { + link.className = 'internalLink'; + } + }, + _bindNamedAction: function _bindNamedAction(link, action) { + var _this2 = this; + + link.href = this.linkService.getAnchorUrl(''); + link.onclick = function () { + _this2.linkService.executeNamedAction(action); + return false; + }; + link.className = 'internalLink'; + } + }); + return LinkAnnotationElement; +}(); +var TextAnnotationElement = function TextAnnotationElementClosure() { + function TextAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable); + } + _util.Util.inherit(TextAnnotationElement, AnnotationElement, { + render: function TextAnnotationElement_render() { + this.container.className = 'textAnnotation'; + var image = document.createElement('img'); + image.style.height = this.container.style.height; + image.style.width = this.container.style.width; + image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg'; + image.alt = '[{{type}} Annotation]'; + image.dataset.l10nId = 'text_annotation_type'; + image.dataset.l10nArgs = JSON.stringify({ type: this.data.name }); + if (!this.data.hasPopup) { + this._createPopup(this.container, image, this.data); + } + this.container.appendChild(image); + return this.container; + } + }); + return TextAnnotationElement; +}(); +var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { + function WidgetAnnotationElement(parameters, isRenderable) { + AnnotationElement.call(this, parameters, isRenderable); + } + _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { + render: function WidgetAnnotationElement_render() { + return this.container; + } + }); + return WidgetAnnotationElement; +}(); +var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() { + var TEXT_ALIGNMENT = ['left', 'center', 'right']; + function TextWidgetAnnotationElement(parameters) { + var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; + WidgetAnnotationElement.call(this, parameters, isRenderable); + } + _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { + render: function TextWidgetAnnotationElement_render() { + this.container.className = 'textWidgetAnnotation'; + var element = null; + if (this.renderInteractiveForms) { + if (this.data.multiLine) { + element = document.createElement('textarea'); + element.textContent = this.data.fieldValue; + } else { + element = document.createElement('input'); + element.type = 'text'; + element.setAttribute('value', this.data.fieldValue); + } + element.disabled = this.data.readOnly; + if (this.data.maxLen !== null) { + element.maxLength = this.data.maxLen; + } + if (this.data.comb) { + var fieldWidth = this.data.rect[2] - this.data.rect[0]; + var combWidth = fieldWidth / this.data.maxLen; + element.classList.add('comb'); + element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)'; + } + } else { + element = document.createElement('div'); + element.textContent = this.data.fieldValue; + element.style.verticalAlign = 'middle'; + element.style.display = 'table-cell'; + var font = null; + if (this.data.fontRefName) { + font = this.page.commonObjs.getData(this.data.fontRefName); + } + this._setTextStyle(element, font); + } + if (this.data.textAlignment !== null) { + element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment]; + } + this.container.appendChild(element); + return this.container; + }, + _setTextStyle: function TextWidgetAnnotationElement_setTextStyle(element, font) { + var style = element.style; + style.fontSize = this.data.fontSize + 'px'; + style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr'; + if (!font) { + return; + } + style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal'; + style.fontStyle = font.italic ? 'italic' : 'normal'; + var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : ''; + var fallbackName = font.fallbackName || 'Helvetica, sans-serif'; + style.fontFamily = fontFamily + fallbackName; + } + }); + return TextWidgetAnnotationElement; +}(); +var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementClosure() { + function CheckboxWidgetAnnotationElement(parameters) { + WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); + } + _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { + render: function CheckboxWidgetAnnotationElement_render() { + this.container.className = 'buttonWidgetAnnotation checkBox'; + var element = document.createElement('input'); + element.disabled = this.data.readOnly; + element.type = 'checkbox'; + if (this.data.fieldValue && this.data.fieldValue !== 'Off') { + element.setAttribute('checked', true); + } + this.container.appendChild(element); + return this.container; + } + }); + return CheckboxWidgetAnnotationElement; +}(); +var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationElementClosure() { + function RadioButtonWidgetAnnotationElement(parameters) { + WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); + } + _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { + render: function RadioButtonWidgetAnnotationElement_render() { + this.container.className = 'buttonWidgetAnnotation radioButton'; + var element = document.createElement('input'); + element.disabled = this.data.readOnly; + element.type = 'radio'; + element.name = this.data.fieldName; + if (this.data.fieldValue === this.data.buttonValue) { + element.setAttribute('checked', true); + } + this.container.appendChild(element); + return this.container; + } + }); + return RadioButtonWidgetAnnotationElement; +}(); +var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosure() { + function ChoiceWidgetAnnotationElement(parameters) { + WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); + } + _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { + render: function ChoiceWidgetAnnotationElement_render() { + this.container.className = 'choiceWidgetAnnotation'; + var selectElement = document.createElement('select'); + selectElement.disabled = this.data.readOnly; + if (!this.data.combo) { + selectElement.size = this.data.options.length; + if (this.data.multiSelect) { + selectElement.multiple = true; + } + } + for (var i = 0, ii = this.data.options.length; i < ii; i++) { + var option = this.data.options[i]; + var optionElement = document.createElement('option'); + optionElement.textContent = option.displayValue; + optionElement.value = option.exportValue; + if (this.data.fieldValue.indexOf(option.displayValue) >= 0) { + optionElement.setAttribute('selected', true); + } + selectElement.appendChild(optionElement); + } + this.container.appendChild(selectElement); + return this.container; + } + }); + return ChoiceWidgetAnnotationElement; +}(); +var PopupAnnotationElement = function PopupAnnotationElementClosure() { + var IGNORE_TYPES = ['Line']; + function PopupAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable); + } + _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { + render: function PopupAnnotationElement_render() { + this.container.className = 'popupAnnotation'; + if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { + return this.container; + } + var selector = '[data-annotation-id="' + this.data.parentId + '"]'; + var parentElement = this.layer.querySelector(selector); + if (!parentElement) { + return this.container; + } + var popup = new PopupElement({ + container: this.container, + trigger: parentElement, + color: this.data.color, + title: this.data.title, + contents: this.data.contents + }); + var parentLeft = parseFloat(parentElement.style.left); + var parentWidth = parseFloat(parentElement.style.width); + _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); + this.container.style.left = parentLeft + parentWidth + 'px'; + this.container.appendChild(popup.render()); + return this.container; + } + }); + return PopupAnnotationElement; +}(); +var PopupElement = function PopupElementClosure() { + var BACKGROUND_ENLIGHT = 0.7; + function PopupElement(parameters) { + this.container = parameters.container; + this.trigger = parameters.trigger; + this.color = parameters.color; + this.title = parameters.title; + this.contents = parameters.contents; + this.hideWrapper = parameters.hideWrapper || false; + this.pinned = false; + } + PopupElement.prototype = { + render: function PopupElement_render() { + var wrapper = document.createElement('div'); + wrapper.className = 'popupWrapper'; + this.hideElement = this.hideWrapper ? wrapper : this.container; + this.hideElement.setAttribute('hidden', true); + var popup = document.createElement('div'); + popup.className = 'popup'; + var color = this.color; + if (color) { + var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; + var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; + var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; + popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); + } + var contents = this._formatContents(this.contents); + var title = document.createElement('h1'); + title.textContent = this.title; + this.trigger.addEventListener('click', this._toggle.bind(this)); + this.trigger.addEventListener('mouseover', this._show.bind(this, false)); + this.trigger.addEventListener('mouseout', this._hide.bind(this, false)); + popup.addEventListener('click', this._hide.bind(this, true)); + popup.appendChild(title); + popup.appendChild(contents); + wrapper.appendChild(popup); + return wrapper; + }, + _formatContents: function PopupElement_formatContents(contents) { + var p = document.createElement('p'); + var lines = contents.split(/(?:\r\n?|\n)/); + for (var i = 0, ii = lines.length; i < ii; ++i) { + var line = lines[i]; + p.appendChild(document.createTextNode(line)); + if (i < ii - 1) { + p.appendChild(document.createElement('br')); + } + } + return p; + }, + _toggle: function PopupElement_toggle() { + if (this.pinned) { + this._hide(true); + } else { + this._show(true); + } + }, + _show: function PopupElement_show(pin) { + if (pin) { + this.pinned = true; + } + if (this.hideElement.hasAttribute('hidden')) { + this.hideElement.removeAttribute('hidden'); + this.container.style.zIndex += 1; + } + }, + _hide: function PopupElement_hide(unpin) { + if (unpin) { + this.pinned = false; + } + if (!this.hideElement.hasAttribute('hidden') && !this.pinned) { + this.hideElement.setAttribute('hidden', true); + this.container.style.zIndex -= 1; + } + } + }; + return PopupElement; +}(); +var LineAnnotationElement = function LineAnnotationElementClosure() { + var SVG_NS = 'http://www.w3.org/2000/svg'; + function LineAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable, true); + } + _util.Util.inherit(LineAnnotationElement, AnnotationElement, { + render: function LineAnnotationElement_render() { + this.container.className = 'lineAnnotation'; + var data = this.data; + var width = data.rect[2] - data.rect[0]; + var height = data.rect[3] - data.rect[1]; + var svg = document.createElementNS(SVG_NS, 'svg:svg'); + svg.setAttributeNS(null, 'version', '1.1'); + svg.setAttributeNS(null, 'width', width + 'px'); + svg.setAttributeNS(null, 'height', height + 'px'); + svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height); + var line = document.createElementNS(SVG_NS, 'svg:line'); + line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]); + line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]); + line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]); + line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]); + line.setAttributeNS(null, 'stroke-width', data.borderStyle.width); + line.setAttributeNS(null, 'stroke', 'transparent'); + svg.appendChild(line); + this.container.append(svg); + this._createPopup(this.container, line, this.data); + return this.container; + } + }); + return LineAnnotationElement; +}(); +var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { + function HighlightAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable, true); + } + _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { + render: function HighlightAnnotationElement_render() { + this.container.className = 'highlightAnnotation'; + if (!this.data.hasPopup) { + this._createPopup(this.container, null, this.data); + } + return this.container; + } + }); + return HighlightAnnotationElement; +}(); +var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { + function UnderlineAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable, true); + } + _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { + render: function UnderlineAnnotationElement_render() { + this.container.className = 'underlineAnnotation'; + if (!this.data.hasPopup) { + this._createPopup(this.container, null, this.data); + } + return this.container; + } + }); + return UnderlineAnnotationElement; +}(); +var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { + function SquigglyAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable, true); + } + _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { + render: function SquigglyAnnotationElement_render() { + this.container.className = 'squigglyAnnotation'; + if (!this.data.hasPopup) { + this._createPopup(this.container, null, this.data); + } + return this.container; + } + }); + return SquigglyAnnotationElement; +}(); +var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { + function StrikeOutAnnotationElement(parameters) { + var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); + AnnotationElement.call(this, parameters, isRenderable, true); + } + _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { + render: function StrikeOutAnnotationElement_render() { + this.container.className = 'strikeoutAnnotation'; + if (!this.data.hasPopup) { + this._createPopup(this.container, null, this.data); + } + return this.container; + } + }); + return StrikeOutAnnotationElement; +}(); +var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementClosure() { + function FileAttachmentAnnotationElement(parameters) { + AnnotationElement.call(this, parameters, true); + var file = this.data.file; + this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); + this.content = file.content; + this.linkService.onFileAttachmentAnnotation({ + id: (0, _util.stringToPDFString)(file.filename), + filename: file.filename, + content: file.content + }); + } + _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { + render: function FileAttachmentAnnotationElement_render() { + this.container.className = 'fileAttachmentAnnotation'; + var trigger = document.createElement('div'); + trigger.style.height = this.container.style.height; + trigger.style.width = this.container.style.width; + trigger.addEventListener('dblclick', this._download.bind(this)); + if (!this.data.hasPopup && (this.data.title || this.data.contents)) { + this._createPopup(this.container, trigger, this.data); + } + this.container.appendChild(trigger); + return this.container; + }, + _download: function FileAttachmentAnnotationElement_download() { + if (!this.downloadManager) { + (0, _util.warn)('Download cannot be started due to unavailable download manager'); + return; + } + this.downloadManager.downloadData(this.content, this.filename, ''); + } + }); + return FileAttachmentAnnotationElement; +}(); +var AnnotationLayer = function AnnotationLayerClosure() { + return { + render: function AnnotationLayer_render(parameters) { + var annotationElementFactory = new AnnotationElementFactory(); + for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { + var data = parameters.annotations[i]; + if (!data) { + continue; + } + var element = annotationElementFactory.create({ + data: data, + layer: parameters.div, + page: parameters.page, + viewport: parameters.viewport, + linkService: parameters.linkService, + downloadManager: parameters.downloadManager, + imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), + renderInteractiveForms: parameters.renderInteractiveForms || false + }); + if (element.isRenderable) { + parameters.div.appendChild(element.render()); + } + } + }, + update: function AnnotationLayer_update(parameters) { + for (var i = 0, ii = parameters.annotations.length; i < ii; i++) { + var data = parameters.annotations[i]; + var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); + if (element) { + _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); + } + } + parameters.div.removeAttribute('hidden'); + } + }; +}(); +exports.AnnotationLayer = AnnotationLayer; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SVGGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var SVGGraphics = function SVGGraphics() { + throw new Error('Not implemented: SVGGraphics'); +}; +{ + var SVG_DEFAULTS = { + fontStyle: 'normal', + fontWeight: 'normal', + fillColor: '#000000' + }; + var convertImgDataToPng = function convertImgDataToPngClosure() { + var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + var CHUNK_WRAPPER_SIZE = 12; + var crcTable = new Int32Array(256); + for (var i = 0; i < 256; i++) { + var c = i; + for (var h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedB88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + crcTable[i] = c; + } + function crc32(data, start, end) { + var crc = -1; + for (var i = start; i < end; i++) { + var a = (crc ^ data[i]) & 0xff; + var b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + return crc ^ -1; + } + function writePngChunk(type, body, data, offset) { + var p = offset; + var len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + var crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + function adler32(data, start, end) { + var a = 1; + var b = 0; + for (var i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + return b << 16 | a; + } + function deflateSync(literals) { + if (!(0, _util.isNodeJS)()) { + return deflateSyncUncompressed(literals); + } + try { + var input; + if (parseInt(process.versions.node) >= 8) { + input = literals; + } else { + input = new Buffer(literals); + } + var output = require('zlib').deflateSync(input, { level: 9 }); + return output instanceof Uint8Array ? output : new Uint8Array(output); + } catch (e) { + (0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e); + } + return deflateSyncUncompressed(literals); + } + function deflateSyncUncompressed(literals) { + var len = literals.length; + var maxBlockLength = 0xFFFF; + var deflateBlocks = Math.ceil(len / maxBlockLength); + var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + var pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + var pos = 0; + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + var adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + return idat; + } + function encode(imgData, kind, forceDataSchema) { + var width = imgData.width; + var height = imgData.height; + var bitDepth, colorType, lineSize; + var bytes = imgData.data; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + default: + throw new Error('invalid format'); + } + var literals = new Uint8Array((1 + lineSize) * height); + var offsetLiterals = 0, + offsetBytes = 0; + var y, i; + for (y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + if (kind === _util.ImageKind.GRAYSCALE_1BPP) { + offsetLiterals = 0; + for (y = 0; y < height; y++) { + offsetLiterals++; + for (i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xFF; + } + } + } + var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + var idat = deflateSync(literals); + var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + var data = new Uint8Array(pngLength); + var offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk('IHDR', ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk('IDATA', idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk('IEND', new Uint8Array(0), data, offset); + return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); + } + return function convertImgDataToPng(imgData, forceDataSchema) { + var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema); + }; + }(); + var SVGExtraState = function SVGExtraStateClosure() { + function SVGExtraState() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + 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.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = '#000000'; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ''; + this.lineCap = ''; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ''; + } + SVGExtraState.prototype = { + clone: function SVGExtraState_clone() { + return Object.create(this); + }, + setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + }; + return SVGExtraState; + }(); + exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { + function opListToTree(opList) { + var opTree = []; + var tmp = []; + var opListLen = opList.length; + for (var x = 0; x < opListLen; x++) { + if (opList[x].fn === 'save') { + opTree.push({ + 'fnId': 92, + 'fn': 'group', + 'items': [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + if (opList[x].fn === 'restore') { + opTree = tmp.pop(); + } else { + opTree.push(opList[x]); + } + } + return opTree; + } + function pf(value) { + if (value === (value | 0)) { + return value.toString(); + } + var s = value.toFixed(10); + var i = s.length - 1; + if (s[i] !== '0') { + return s; + } + do { + i--; + } while (s[i] === '0'); + return s.substr(0, s[i] === '.' ? i : i + 1); + } + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ''; + } + return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; + } + if (m[0] === m[3] && m[1] === -m[2]) { + var a = Math.acos(m[0]) * 180 / Math.PI; + return 'rotate(' + pf(a) + ')'; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + } + return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + function SVGGraphics(commonObjs, objs, forceDataSchema) { + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingClip = null; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + } + var NS = 'http://www.w3.org/2000/svg'; + var XML_NS = 'http://www.w3.org/XML/1998/namespace'; + var XLINK_NS = 'http://www.w3.org/1999/xlink'; + var LINE_CAP_STYLES = ['butt', 'round', 'square']; + var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; + var clipCount = 0; + var maskCount = 0; + SVGGraphics.prototype = { + save: function SVGGraphics_save() { + this.transformStack.push(this.transformMatrix); + var old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + }, + restore: function SVGGraphics_restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.pendingClip = null; + this.tgrp = null; + }, + group: function SVGGraphics_group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + }, + loadDependencies: function SVGGraphics_loadDependencies(operatorList) { + var _this = this; + + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var argsArray = operatorList.argsArray; + for (var i = 0; i < fnArrayLen; i++) { + if (_util.OPS.dependency === fnArray[i]) { + var deps = argsArray[i]; + for (var n = 0, nn = deps.length; n < nn; n++) { + var obj = deps[n]; + var common = obj.substring(0, 2) === 'g_'; + var promise; + if (common) { + promise = new Promise(function (resolve) { + _this.commonObjs.get(obj, resolve); + }); + } else { + promise = new Promise(function (resolve) { + _this.objs.get(obj, resolve); + }); + } + this.current.dependencies.push(promise); + } + } + } + return Promise.all(this.current.dependencies); + }, + transform: function SVGGraphics_transform(a, b, c, d, e, f) { + var transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + }, + getSVG: function SVGGraphics_getSVG(operatorList, viewport) { + var _this2 = this; + + this.viewport = viewport; + var svgElement = this._initialize(viewport); + return this.loadDependencies(operatorList).then(function () { + _this2.transformMatrix = _util.IDENTITY_MATRIX; + var opTree = _this2.convertOpList(operatorList); + _this2.executeOpTree(opTree); + return svgElement; + }); + }, + convertOpList: function SVGGraphics_convertOpList(operatorList) { + var argsArray = operatorList.argsArray; + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var REVOPS = []; + var opList = []; + for (var op in _util.OPS) { + REVOPS[_util.OPS[op]] = op; + } + for (var x = 0; x < fnArrayLen; x++) { + var fnId = fnArray[x]; + opList.push({ + 'fnId': fnId, + 'fn': REVOPS[fnId], + 'args': argsArray[x] + }); + } + return opListToTree(opList); + }, + executeOpTree: function SVGGraphics_executeOpTree(opTree) { + var opTreeLen = opTree.length; + for (var x = 0; x < opTreeLen; x++) { + var fn = opTree[x].fn; + var fnId = opTree[x].fnId; + var args = opTree[x].args; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + case _util.OPS.setLeading: + this.setLeading(args); + break; + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + case _util.OPS.setFont: + this.setFont(args); + break; + case _util.OPS.showText: + this.showText(args[0]); + break; + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + case _util.OPS.endText: + this.endText(); + break; + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + case _util.OPS.setGState: + this.setGState(args[0]); + break; + case _util.OPS.fill: + this.fill(); + break; + case _util.OPS.eoFill: + this.eoFill(); + break; + case _util.OPS.stroke: + this.stroke(); + break; + case _util.OPS.fillStroke: + this.fillStroke(); + break; + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + case _util.OPS.clip: + this.clip('nonzero'); + break; + case _util.OPS.eoClip: + this.clip('evenodd'); + break; + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + case _util.OPS.paintJpegXObject: + this.paintJpegXObject(args[0], args[1], args[2]); + break; + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + case _util.OPS.closePath: + this.closePath(); + break; + case _util.OPS.closeStroke: + this.closeStroke(); + break; + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + case _util.OPS.nextLine: + this.nextLine(); + break; + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + case _util.OPS.endPath: + this.endPath(); + break; + case 92: + this.group(opTree[x].items); + break; + default: + (0, _util.warn)('Unimplemented operator ' + fn); + break; + } + } + }, + setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + }, + setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + }, + nextLine: function SVGGraphics_nextLine() { + this.moveText(0, this.current.leading); + }, + setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { + var current = this.current; + this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.txtElement = document.createElementNS(NS, 'svg:text'); + current.txtElement.appendChild(current.tspan); + }, + beginText: function SVGGraphics_beginText() { + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.lineMatrix = _util.IDENTITY_MATRIX; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.txtElement = document.createElementNS(NS, 'svg:text'); + this.current.txtgrp = document.createElementNS(NS, 'svg:g'); + this.current.xcoords = []; + }, + moveText: function SVGGraphics_moveText(x, y) { + var current = this.current; + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + }, + showText: function SVGGraphics_showText(glyphs) { + var current = this.current; + var font = current.font; + var fontSize = current.fontSize; + if (fontSize === 0) { + return; + } + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var fontDirection = current.fontDirection; + var textHScale = current.textHScale * fontDirection; + var glyphsLength = glyphs.length; + var vertical = font.vertical; + var widthAdvanceScale = fontSize * current.fontMatrix[0]; + var x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + var glyph = glyphs[i]; + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if ((0, _util.isNum)(glyph)) { + x += -glyph * fontSize * 0.001; + continue; + } + current.xcoords.push(current.x + x * textHScale); + var width = glyph.width; + var character = glyph.fontChar; + var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + var charWidth = width * widthAdvanceScale + spacing * fontDirection; + x += charWidth; + current.tspan.textContent += character; + } + if (vertical) { + current.y -= x * textHScale; + } else { + current.x += x * textHScale; + } + current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); + } + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); + } + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, 'fill', current.fillColor); + } + current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); + current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + this._ensureTransformGroup().appendChild(current.txtElement); + }, + setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + }, + addFontStyle: function SVGGraphics_addFontStyle(fontObj) { + if (!this.cssStyle) { + this.cssStyle = document.createElementNS(NS, 'svg:style'); + this.cssStyle.setAttributeNS(null, 'type', 'text/css'); + this.defs.appendChild(this.cssStyle); + } + var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; + }, + setFont: function SVGGraphics_setFont(details) { + var current = this.current; + var fontObj = this.commonObjs.get(details[0]); + var size = details[1]; + this.current.font = fontObj; + if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; + var italic = fontObj.italic ? 'italic' : 'normal'; + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.xcoords = []; + }, + endText: function SVGGraphics_endText() {}, + setLineWidth: function SVGGraphics_setLineWidth(width) { + this.current.lineWidth = width; + }, + setLineCap: function SVGGraphics_setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + }, + setLineJoin: function SVGGraphics_setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + }, + setMiterLimit: function SVGGraphics_setMiterLimit(limit) { + this.current.miterLimit = limit; + }, + setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) { + this.current.strokeAlpha = strokeAlpha; + }, + setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.strokeColor = color; + }, + setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) { + this.current.fillAlpha = fillAlpha; + }, + setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.fillColor = color; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.xcoords = []; + }, + setDash: function SVGGraphics_setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + }, + constructPath: function SVGGraphics_constructPath(ops, args) { + var current = this.current; + var x = current.x, + y = current.y; + current.path = document.createElementNS(NS, 'svg:path'); + var d = []; + var opLength = ops.length; + for (var i = 0, j = 0; i < opLength; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + var width = args[j++]; + var height = args[j++]; + var xw = x + width; + var yh = y + height; + d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push('M', pf(x), pf(y)); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push('L', pf(x), pf(y)); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + case _util.OPS.curveTo2: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + j += 4; + break; + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + case _util.OPS.closePath: + d.push('Z'); + break; + } + } + current.path.setAttributeNS(null, 'd', d.join(' ')); + current.path.setAttributeNS(null, 'fill', 'none'); + this._ensureTransformGroup().appendChild(current.path); + current.element = current.path; + current.setCurrentPoint(x, y); + }, + endPath: function SVGGraphics_endPath() { + if (!this.pendingClip) { + return; + } + var current = this.current; + var clipId = 'clippath' + clipCount; + clipCount++; + var clipPath = document.createElementNS(NS, 'svg:clipPath'); + clipPath.setAttributeNS(null, 'id', clipId); + clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + var clipElement = current.element.cloneNode(); + if (this.pendingClip === 'evenodd') { + clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); + } else { + clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); + } + this.pendingClip = null; + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + if (current.activeClipUrl) { + current.clipGroup = null; + this.extraStack.forEach(function (prev) { + prev.clipGroup = null; + }); + } + current.activeClipUrl = 'url(#' + clipId + ')'; + this.tgrp = null; + }, + clip: function SVGGraphics_clip(type) { + this.pendingClip = type; + }, + closePath: function SVGGraphics_closePath() { + var current = this.current; + var d = current.path.getAttributeNS(null, 'd'); + d += 'Z'; + current.path.setAttributeNS(null, 'd', d); + }, + setLeading: function SVGGraphics_setLeading(leading) { + this.current.leading = -leading; + }, + setTextRise: function SVGGraphics_setTextRise(textRise) { + this.current.textRise = textRise; + }, + setHScale: function SVGGraphics_setHScale(scale) { + this.current.textHScale = scale / 100; + }, + setGState: function SVGGraphics_setGState(states) { + for (var i = 0, ii = states.length; i < ii; i++) { + var state = states[i]; + var key = state[0]; + var 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 'Font': + this.setFont(value); + break; + case 'CA': + this.setStrokeAlpha(value); + break; + case 'ca': + this.setFillAlpha(value); + break; + default: + (0, _util.warn)('Unimplemented graphic state ' + key); + break; + } + } + }, + fill: function SVGGraphics_fill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha); + }, + stroke: function SVGGraphics_stroke() { + var current = this.current; + current.element.setAttributeNS(null, 'stroke', current.strokeColor); + current.element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha); + current.element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); + current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap); + current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); + current.element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); + current.element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); + current.element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); + current.element.setAttributeNS(null, 'fill', 'none'); + }, + eoFill: function SVGGraphics_eoFill() { + this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + this.fill(); + }, + fillStroke: function SVGGraphics_fillStroke() { + this.stroke(); + this.fill(); + }, + eoFillStroke: function SVGGraphics_eoFillStroke() { + this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + this.fillStroke(); + }, + closeStroke: function SVGGraphics_closeStroke() { + this.closePath(); + this.stroke(); + }, + closeFillStroke: function SVGGraphics_closeFillStroke() { + this.closePath(); + this.fillStroke(); + }, + paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { + var current = this.current; + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', '1px'); + rect.setAttributeNS(null, 'height', '1px'); + rect.setAttributeNS(null, 'fill', current.fillColor); + this._ensureTransformGroup().appendChild(rect); + }, + paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { + var imgObj = this.objs.get(objId); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); + imgEl.setAttributeNS(null, 'width', pf(w)); + imgEl.setAttributeNS(null, 'height', pf(h)); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-h)); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); + this._ensureTransformGroup().appendChild(imgEl); + }, + paintImageXObject: function SVGGraphics_paintImageXObject(objId) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.paintInlineImageXObject(imgData); + }, + paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { + var width = imgData.width; + var height = imgData.height; + var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); + var cliprect = document.createElementNS(NS, 'svg:rect'); + cliprect.setAttributeNS(null, 'x', '0'); + cliprect.setAttributeNS(null, 'y', '0'); + cliprect.setAttributeNS(null, 'width', pf(width)); + cliprect.setAttributeNS(null, 'height', pf(height)); + this.current.element = cliprect; + this.clip('nonzero'); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-height)); + imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); + imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); + if (mask) { + mask.appendChild(imgEl); + } else { + this._ensureTransformGroup().appendChild(imgEl); + } + }, + paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { + var current = this.current; + var width = imgData.width; + var height = imgData.height; + var fillColor = current.fillColor; + current.maskId = 'mask' + maskCount++; + var mask = document.createElementNS(NS, 'svg:mask'); + mask.setAttributeNS(null, 'id', current.maskId); + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', pf(width)); + rect.setAttributeNS(null, 'height', pf(height)); + rect.setAttributeNS(null, 'fill', fillColor); + rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); + this.defs.appendChild(mask); + this._ensureTransformGroup().appendChild(rect); + this.paintInlineImageXObject(imgData, mask); + }, + paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var width = bbox[2] - bbox[0]; + var height = bbox[3] - bbox[1]; + var cliprect = document.createElementNS(NS, 'svg:rect'); + cliprect.setAttributeNS(null, 'x', bbox[0]); + cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'width', pf(width)); + cliprect.setAttributeNS(null, 'height', pf(height)); + this.current.element = cliprect; + this.clip('nonzero'); + this.endPath(); + } + }, + paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, + _initialize: function SVGGraphics_initialize(viewport) { + var svg = document.createElementNS(NS, 'svg:svg'); + svg.setAttributeNS(null, 'version', '1.1'); + svg.setAttributeNS(null, 'width', viewport.width + 'px'); + svg.setAttributeNS(null, 'height', viewport.height + 'px'); + svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); + var definitions = document.createElementNS(NS, 'svg:defs'); + svg.appendChild(definitions); + this.defs = definitions; + var rootGroup = document.createElementNS(NS, 'svg:g'); + rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + }, + _ensureClipGroup: function SVGGraphics_ensureClipGroup() { + if (!this.current.clipGroup) { + var clipGroup = document.createElementNS(NS, 'svg:g'); + clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + return this.current.clipGroup; + }, + _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = document.createElementNS(NS, 'svg:g'); + this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + return this.tgrp; + } + }; + return SVGGraphics; + }(); +} +exports.SVGGraphics = SVGGraphics; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.renderTextLayer = undefined; + +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(1); + +var renderTextLayer = function renderTextLayerClosure() { + var MAX_TEXT_DIVS_TO_RENDER = 100000; + var NonWhitespaceRegexp = /\S/; + function isAllWhitespace(str) { + return !NonWhitespaceRegexp.test(str); + } + var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';']; + function appendText(task, geom, styles) { + var textDiv = document.createElement('div'); + var textDivProperties = { + style: null, + angle: 0, + canvasWidth: 0, + isWhitespace: false, + originalTransform: null, + paddingBottom: 0, + paddingLeft: 0, + paddingRight: 0, + paddingTop: 0, + scale: 1 + }; + task._textDivs.push(textDiv); + if (isAllWhitespace(geom.str)) { + textDivProperties.isWhitespace = true; + task._textDivProperties.set(textDiv, textDivProperties); + return; + } + var tx = _util.Util.transform(task._viewport.transform, geom.transform); + var angle = Math.atan2(tx[1], tx[0]); + var style = styles[geom.fontName]; + if (style.vertical) { + angle += Math.PI / 2; + } + var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]); + var fontAscent = fontHeight; + if (style.ascent) { + fontAscent = style.ascent * fontAscent; + } else if (style.descent) { + fontAscent = (1 + style.descent) * fontAscent; + } + var left; + var top; + if (angle === 0) { + left = tx[4]; + top = tx[5] - fontAscent; + } else { + left = tx[4] + fontAscent * Math.sin(angle); + top = tx[5] - fontAscent * Math.cos(angle); + } + styleBuf[1] = left; + styleBuf[3] = top; + styleBuf[5] = fontHeight; + styleBuf[7] = style.fontFamily; + textDivProperties.style = styleBuf.join(''); + textDiv.setAttribute('style', textDivProperties.style); + textDiv.textContent = geom.str; + if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { + textDiv.dataset.fontName = geom.fontName; + } + if (angle !== 0) { + textDivProperties.angle = angle * (180 / Math.PI); + } + if (geom.str.length > 1) { + if (style.vertical) { + textDivProperties.canvasWidth = geom.height * task._viewport.scale; + } else { + textDivProperties.canvasWidth = geom.width * task._viewport.scale; + } + } + task._textDivProperties.set(textDiv, textDivProperties); + if (task._textContentStream) { + task._layoutText(textDiv); + } + if (task._enhanceTextSelection) { + var angleCos = 1, + angleSin = 0; + if (angle !== 0) { + angleCos = Math.cos(angle); + angleSin = Math.sin(angle); + } + var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale; + var divHeight = fontHeight; + var m, b; + if (angle !== 0) { + m = [angleCos, angleSin, -angleSin, angleCos, left, top]; + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + } else { + b = [left, top, left + divWidth, top + divHeight]; + } + task._bounds.push({ + left: b[0], + top: b[1], + right: b[2], + bottom: b[3], + div: textDiv, + size: [divWidth, divHeight], + m: m + }); + } + } + function render(task) { + if (task._canceled) { + return; + } + var textDivs = task._textDivs; + var capability = task._capability; + var textDivsLength = textDivs.length; + if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) { + task._renderingDone = true; + capability.resolve(); + return; + } + if (!task._textContentStream) { + for (var i = 0; i < textDivsLength; i++) { + task._layoutText(textDivs[i]); + } + } + task._renderingDone = true; + capability.resolve(); + } + function expand(task) { + var bounds = task._bounds; + var viewport = task._viewport; + var expanded = expandBounds(viewport.width, viewport.height, bounds); + for (var i = 0; i < expanded.length; i++) { + var div = bounds[i].div; + var divProperties = task._textDivProperties.get(div); + if (divProperties.angle === 0) { + divProperties.paddingLeft = bounds[i].left - expanded[i].left; + divProperties.paddingTop = bounds[i].top - expanded[i].top; + divProperties.paddingRight = expanded[i].right - bounds[i].right; + divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom; + task._textDivProperties.set(div, divProperties); + continue; + } + var e = expanded[i], + b = bounds[i]; + var m = b.m, + c = m[0], + s = m[1]; + var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; + var ts = new Float64Array(64); + points.forEach(function (p, i) { + var t = _util.Util.applyTransform(p, m); + ts[i + 0] = c && (e.left - t[0]) / c; + ts[i + 4] = s && (e.top - t[1]) / s; + ts[i + 8] = c && (e.right - t[0]) / c; + ts[i + 12] = s && (e.bottom - t[1]) / s; + ts[i + 16] = s && (e.left - t[0]) / -s; + ts[i + 20] = c && (e.top - t[1]) / c; + ts[i + 24] = s && (e.right - t[0]) / -s; + ts[i + 28] = c && (e.bottom - t[1]) / c; + ts[i + 32] = c && (e.left - t[0]) / -c; + ts[i + 36] = s && (e.top - t[1]) / -s; + ts[i + 40] = c && (e.right - t[0]) / -c; + ts[i + 44] = s && (e.bottom - t[1]) / -s; + ts[i + 48] = s && (e.left - t[0]) / s; + ts[i + 52] = c && (e.top - t[1]) / -c; + ts[i + 56] = s && (e.right - t[0]) / s; + ts[i + 60] = c && (e.bottom - t[1]) / -c; + }); + var findPositiveMin = function findPositiveMin(ts, offset, count) { + var result = 0; + for (var i = 0; i < count; i++) { + var t = ts[offset++]; + if (t > 0) { + result = result ? Math.min(t, result) : t; + } + } + return result; + }; + var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s)); + divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale; + divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale; + divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale; + divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale; + task._textDivProperties.set(div, divProperties); + } + } + function expandBounds(width, height, boxes) { + var bounds = boxes.map(function (box, i) { + return { + x1: box.left, + y1: box.top, + x2: box.right, + y2: box.bottom, + index: i, + x1New: undefined, + x2New: undefined + }; + }); + expandBoundsLTR(width, bounds); + var expanded = new Array(boxes.length); + bounds.forEach(function (b) { + var i = b.index; + expanded[i] = { + left: b.x1New, + top: 0, + right: b.x2New, + bottom: 0 + }; + }); + boxes.map(function (box, i) { + var e = expanded[i], + b = bounds[i]; + b.x1 = box.top; + b.y1 = width - e.right; + b.x2 = box.bottom; + b.y2 = width - e.left; + b.index = i; + b.x1New = undefined; + b.x2New = undefined; + }); + expandBoundsLTR(height, bounds); + bounds.forEach(function (b) { + var i = b.index; + expanded[i].top = b.x1New; + expanded[i].bottom = b.x2New; + }); + return expanded; + } + function expandBoundsLTR(width, bounds) { + bounds.sort(function (a, b) { + return a.x1 - b.x1 || a.index - b.index; + }); + var fakeBoundary = { + x1: -Infinity, + y1: -Infinity, + x2: 0, + y2: Infinity, + index: -1, + x1New: 0, + x2New: 0 + }; + var horizon = [{ + start: -Infinity, + end: Infinity, + boundary: fakeBoundary + }]; + bounds.forEach(function (boundary) { + var i = 0; + while (i < horizon.length && horizon[i].end <= boundary.y1) { + i++; + } + var j = horizon.length - 1; + while (j >= 0 && horizon[j].start >= boundary.y2) { + j--; + } + var horizonPart, affectedBoundary; + var q, + k, + maxXNew = -Infinity; + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + var xNew; + if (affectedBoundary.x2 > boundary.x1) { + xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1; + } else if (affectedBoundary.x2New === undefined) { + xNew = (affectedBoundary.x2 + boundary.x1) / 2; + } else { + xNew = affectedBoundary.x2New; + } + if (xNew > maxXNew) { + maxXNew = xNew; + } + } + boundary.x1New = maxXNew; + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + if (affectedBoundary.x2New === undefined) { + if (affectedBoundary.x2 > boundary.x1) { + if (affectedBoundary.index > boundary.index) { + affectedBoundary.x2New = affectedBoundary.x2; + } + } else { + affectedBoundary.x2New = maxXNew; + } + } else if (affectedBoundary.x2New > maxXNew) { + affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2); + } + } + var changedHorizon = [], + lastBoundary = null; + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary; + if (lastBoundary === useBoundary) { + changedHorizon[changedHorizon.length - 1].end = horizonPart.end; + } else { + changedHorizon.push({ + start: horizonPart.start, + end: horizonPart.end, + boundary: useBoundary + }); + lastBoundary = useBoundary; + } + } + if (horizon[i].start < boundary.y1) { + changedHorizon[0].start = boundary.y1; + changedHorizon.unshift({ + start: horizon[i].start, + end: boundary.y1, + boundary: horizon[i].boundary + }); + } + if (boundary.y2 < horizon[j].end) { + changedHorizon[changedHorizon.length - 1].end = boundary.y2; + changedHorizon.push({ + start: boundary.y2, + end: horizon[j].end, + boundary: horizon[j].boundary + }); + } + for (q = i; q <= j; q++) { + horizonPart = horizon[q]; + affectedBoundary = horizonPart.boundary; + if (affectedBoundary.x2New !== undefined) { + continue; + } + var used = false; + for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) { + used = horizon[k].boundary === affectedBoundary; + } + for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) { + used = horizon[k].boundary === affectedBoundary; + } + for (k = 0; !used && k < changedHorizon.length; k++) { + used = changedHorizon[k].boundary === affectedBoundary; + } + if (!used) { + affectedBoundary.x2New = maxXNew; + } + } + Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon)); + }); + horizon.forEach(function (horizonPart) { + var affectedBoundary = horizonPart.boundary; + if (affectedBoundary.x2New === undefined) { + affectedBoundary.x2New = Math.max(width, affectedBoundary.x2); + } + }); + } + function TextLayerRenderTask(_ref) { + var textContent = _ref.textContent, + textContentStream = _ref.textContentStream, + container = _ref.container, + viewport = _ref.viewport, + textDivs = _ref.textDivs, + textContentItemsStr = _ref.textContentItemsStr, + enhanceTextSelection = _ref.enhanceTextSelection; + + this._textContent = textContent; + this._textContentStream = textContentStream; + this._container = container; + this._viewport = viewport; + this._textDivs = textDivs || []; + this._textContentItemsStr = textContentItemsStr || []; + this._enhanceTextSelection = !!enhanceTextSelection; + this._reader = null; + this._layoutTextLastFontSize = null; + this._layoutTextLastFontFamily = null; + this._layoutTextCtx = null; + this._textDivProperties = new WeakMap(); + this._renderingDone = false; + this._canceled = false; + this._capability = (0, _util.createPromiseCapability)(); + this._renderTimer = null; + this._bounds = []; + } + TextLayerRenderTask.prototype = { + get promise() { + return this._capability.promise; + }, + cancel: function TextLayer_cancel() { + if (this._reader) { + this._reader.cancel(new _util.AbortException('text layer task cancelled')); + this._reader = null; + } + this._canceled = true; + if (this._renderTimer !== null) { + clearTimeout(this._renderTimer); + this._renderTimer = null; + } + this._capability.reject('canceled'); + }, + _processItems: function _processItems(items, styleCache) { + for (var i = 0, len = items.length; i < len; i++) { + this._textContentItemsStr.push(items[i].str); + appendText(this, items[i], styleCache); + } + }, + _layoutText: function _layoutText(textDiv) { + var textLayerFrag = this._container; + var textDivProperties = this._textDivProperties.get(textDiv); + if (textDivProperties.isWhitespace) { + return; + } + var fontSize = textDiv.style.fontSize; + var fontFamily = textDiv.style.fontFamily; + if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) { + this._layoutTextCtx.font = fontSize + ' ' + fontFamily; + this._lastFontSize = fontSize; + this._lastFontFamily = fontFamily; + } + var width = this._layoutTextCtx.measureText(textDiv.textContent).width; + var transform = ''; + if (textDivProperties.canvasWidth !== 0 && width > 0) { + textDivProperties.scale = textDivProperties.canvasWidth / width; + transform = 'scaleX(' + textDivProperties.scale + ')'; + } + if (textDivProperties.angle !== 0) { + transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform; + } + if (transform !== '') { + textDivProperties.originalTransform = transform; + _dom_utils.CustomStyle.setProp('transform', textDiv, transform); + } + this._textDivProperties.set(textDiv, textDivProperties); + textLayerFrag.appendChild(textDiv); + }, + + _render: function TextLayer_render(timeout) { + var _this = this; + + var capability = (0, _util.createPromiseCapability)(); + var styleCache = Object.create(null); + var canvas = document.createElement('canvas'); + canvas.mozOpaque = true; + this._layoutTextCtx = canvas.getContext('2d', { alpha: false }); + if (this._textContent) { + var textItems = this._textContent.items; + var textStyles = this._textContent.styles; + this._processItems(textItems, textStyles); + capability.resolve(); + } else if (this._textContentStream) { + var pump = function pump() { + _this._reader.read().then(function (_ref2) { + var value = _ref2.value, + done = _ref2.done; + + if (done) { + capability.resolve(); + return; + } + _util.Util.extendObj(styleCache, value.styles); + _this._processItems(value.items, styleCache); + pump(); + }, capability.reject); + }; + this._reader = this._textContentStream.getReader(); + pump(); + } else { + throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.'); + } + capability.promise.then(function () { + styleCache = null; + if (!timeout) { + render(_this); + } else { + _this._renderTimer = setTimeout(function () { + render(_this); + _this._renderTimer = null; + }, timeout); + } + }, this._capability.reject); + }, + expandTextDivs: function TextLayer_expandTextDivs(expandDivs) { + if (!this._enhanceTextSelection || !this._renderingDone) { + return; + } + if (this._bounds !== null) { + expand(this); + this._bounds = null; + } + for (var i = 0, ii = this._textDivs.length; i < ii; i++) { + var div = this._textDivs[i]; + var divProperties = this._textDivProperties.get(div); + if (divProperties.isWhitespace) { + continue; + } + if (expandDivs) { + var transform = '', + padding = ''; + if (divProperties.scale !== 1) { + transform = 'scaleX(' + divProperties.scale + ')'; + } + if (divProperties.angle !== 0) { + transform = 'rotate(' + divProperties.angle + 'deg) ' + transform; + } + if (divProperties.paddingLeft !== 0) { + padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;'; + transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)'; + } + if (divProperties.paddingTop !== 0) { + padding += ' padding-top: ' + divProperties.paddingTop + 'px;'; + transform += ' translateY(' + -divProperties.paddingTop + 'px)'; + } + if (divProperties.paddingRight !== 0) { + padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;'; + } + if (divProperties.paddingBottom !== 0) { + padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;'; + } + if (padding !== '') { + div.setAttribute('style', divProperties.style + padding); + } + if (transform !== '') { + _dom_utils.CustomStyle.setProp('transform', div, transform); + } + } else { + div.style.padding = 0; + _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); + } + } + } + }; + function renderTextLayer(renderParameters) { + var task = new TextLayerRenderTask({ + textContent: renderParameters.textContent, + textContentStream: renderParameters.textContentStream, + container: renderParameters.container, + viewport: renderParameters.viewport, + textDivs: renderParameters.textDivs, + textContentItemsStr: renderParameters.textContentItemsStr, + enhanceTextSelection: renderParameters.enhanceTextSelection + }); + task._render(renderParameters.timeout); + return task; + } + return renderTextLayer; +}(); +exports.renderTextLayer = renderTextLayer; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +function fixMetadata(meta) { + return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { + var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { + return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1); + }); + var chars = ''; + for (var i = 0; i < bytes.length; i += 2) { + var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1); + chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38 ? String.fromCharCode(code) : '&#x' + (0x10000 + code).toString(16).substring(1) + ';'; + } + return '>' + chars; + }); +} +function Metadata(meta) { + if (typeof meta === 'string') { + meta = fixMetadata(meta); + var parser = new DOMParser(); + meta = parser.parseFromString(meta, 'application/xml'); + } else if (!(meta instanceof Document)) { + throw new Error('Metadata: Invalid metadata object'); + } + this.metaDocument = meta; + this.metadata = Object.create(null); + this.parse(); +} +Metadata.prototype = { + parse: function Metadata_parse() { + var doc = this.metaDocument; + var rdf = doc.documentElement; + if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { + rdf = rdf.firstChild; + while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') { + rdf = rdf.nextSibling; + } + } + var nodeName = rdf ? rdf.nodeName.toLowerCase() : null; + if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) { + return; + } + var children = rdf.childNodes, + desc, + entry, + name, + i, + ii, + length, + iLength; + for (i = 0, length = children.length; i < length; i++) { + desc = children[i]; + if (desc.nodeName.toLowerCase() !== 'rdf:description') { + continue; + } + for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) { + if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') { + entry = desc.childNodes[ii]; + name = entry.nodeName.toLowerCase(); + this.metadata[name] = entry.textContent.trim(); + } + } + } + }, + get: function Metadata_get(name) { + return this.metadata[name] || null; + }, + has: function Metadata_has(name) { + return typeof this.metadata[name] !== 'undefined'; + } +}; +exports.Metadata = Metadata; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WebGLUtils = undefined; + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + +var WebGLUtils = function WebGLUtilsClosure() { + function loadShader(gl, code, shaderType) { + var shader = gl.createShader(shaderType); + gl.shaderSource(shader, code); + gl.compileShader(shader); + var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + if (!compiled) { + var errorMsg = gl.getShaderInfoLog(shader); + throw new Error('Error during shader compilation: ' + errorMsg); + } + return shader; + } + function createVertexShader(gl, code) { + return loadShader(gl, code, gl.VERTEX_SHADER); + } + function createFragmentShader(gl, code) { + return loadShader(gl, code, gl.FRAGMENT_SHADER); + } + function createProgram(gl, shaders) { + var program = gl.createProgram(); + for (var i = 0, ii = shaders.length; i < ii; ++i) { + gl.attachShader(program, shaders[i]); + } + gl.linkProgram(program); + var linked = gl.getProgramParameter(program, gl.LINK_STATUS); + if (!linked) { + var errorMsg = gl.getProgramInfoLog(program); + throw new Error('Error during program linking: ' + errorMsg); + } + return program; + } + function createTexture(gl, image, textureId) { + gl.activeTexture(textureId); + var texture = gl.createTexture(); + gl.bindTexture(gl.TEXTURE_2D, texture); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image); + return texture; + } + var currentGL, currentCanvas; + function generateGL() { + if (currentGL) { + return; + } + currentCanvas = document.createElement('canvas'); + currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false }); + } + var smaskVertexShaderCode = '\ + attribute vec2 a_position; \ + attribute vec2 a_texCoord; \ + \ + uniform vec2 u_resolution; \ + \ + varying vec2 v_texCoord; \ + \ + void main() { \ + vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \ + gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ + \ + v_texCoord = a_texCoord; \ + } '; + var smaskFragmentShaderCode = '\ + precision mediump float; \ + \ + uniform vec4 u_backdrop; \ + uniform int u_subtype; \ + uniform sampler2D u_image; \ + uniform sampler2D u_mask; \ + \ + varying vec2 v_texCoord; \ + \ + void main() { \ + vec4 imageColor = texture2D(u_image, v_texCoord); \ + vec4 maskColor = texture2D(u_mask, v_texCoord); \ + if (u_backdrop.a > 0.0) { \ + maskColor.rgb = maskColor.rgb * maskColor.a + \ + u_backdrop.rgb * (1.0 - maskColor.a); \ + } \ + float lum; \ + if (u_subtype == 0) { \ + lum = maskColor.a; \ + } else { \ + lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \ + maskColor.b * 0.11; \ + } \ + imageColor.a *= lum; \ + imageColor.rgb *= imageColor.a; \ + gl_FragColor = imageColor; \ + } '; + var smaskCache = null; + function initSmaskGL() { + var canvas, gl; + generateGL(); + canvas = currentCanvas; + currentCanvas = null; + gl = currentGL; + currentGL = null; + var vertexShader = createVertexShader(gl, smaskVertexShaderCode); + var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode); + var program = createProgram(gl, [vertexShader, fragmentShader]); + gl.useProgram(program); + var cache = {}; + cache.gl = gl; + cache.canvas = canvas; + cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); + cache.positionLocation = gl.getAttribLocation(program, 'a_position'); + cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop'); + cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype'); + var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord'); + var texLayerLocation = gl.getUniformLocation(program, 'u_image'); + var texMaskLocation = gl.getUniformLocation(program, 'u_mask'); + var texCoordBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 0.0, 1.0, 1.0]), gl.STATIC_DRAW); + gl.enableVertexAttribArray(texCoordLocation); + gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0); + gl.uniform1i(texLayerLocation, 0); + gl.uniform1i(texMaskLocation, 1); + smaskCache = cache; + } + function composeSMask(layer, mask, properties) { + var width = layer.width, + height = layer.height; + if (!smaskCache) { + initSmaskGL(); + } + var cache = smaskCache, + canvas = cache.canvas, + gl = cache.gl; + canvas.width = width; + canvas.height = height; + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + gl.uniform2f(cache.resolutionLocation, width, height); + if (properties.backdrop) { + gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1); + } else { + gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0); + } + gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0); + var texture = createTexture(gl, layer, gl.TEXTURE0); + var maskTexture = createTexture(gl, mask, gl.TEXTURE1); + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([0, 0, width, 0, 0, height, 0, height, width, 0, width, height]), gl.STATIC_DRAW); + gl.enableVertexAttribArray(cache.positionLocation); + gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); + gl.clearColor(0, 0, 0, 0); + gl.enable(gl.BLEND); + gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA); + gl.clear(gl.COLOR_BUFFER_BIT); + gl.drawArrays(gl.TRIANGLES, 0, 6); + gl.flush(); + gl.deleteTexture(texture); + gl.deleteTexture(maskTexture); + gl.deleteBuffer(buffer); + return canvas; + } + var figuresVertexShaderCode = '\ + attribute vec2 a_position; \ + attribute vec3 a_color; \ + \ + uniform vec2 u_resolution; \ + uniform vec2 u_scale; \ + uniform vec2 u_offset; \ + \ + varying vec4 v_color; \ + \ + void main() { \ + vec2 position = (a_position + u_offset) * u_scale; \ + vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \ + gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \ + \ + v_color = vec4(a_color / 255.0, 1.0); \ + } '; + var figuresFragmentShaderCode = '\ + precision mediump float; \ + \ + varying vec4 v_color; \ + \ + void main() { \ + gl_FragColor = v_color; \ + } '; + var figuresCache = null; + function initFiguresGL() { + var canvas, gl; + generateGL(); + canvas = currentCanvas; + currentCanvas = null; + gl = currentGL; + currentGL = null; + var vertexShader = createVertexShader(gl, figuresVertexShaderCode); + var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode); + var program = createProgram(gl, [vertexShader, fragmentShader]); + gl.useProgram(program); + var cache = {}; + cache.gl = gl; + cache.canvas = canvas; + cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution'); + cache.scaleLocation = gl.getUniformLocation(program, 'u_scale'); + cache.offsetLocation = gl.getUniformLocation(program, 'u_offset'); + cache.positionLocation = gl.getAttribLocation(program, 'a_position'); + cache.colorLocation = gl.getAttribLocation(program, 'a_color'); + figuresCache = cache; + } + function drawFigures(width, height, backgroundColor, figures, context) { + if (!figuresCache) { + initFiguresGL(); + } + var cache = figuresCache, + canvas = cache.canvas, + gl = cache.gl; + canvas.width = width; + canvas.height = height; + gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); + gl.uniform2f(cache.resolutionLocation, width, height); + var count = 0; + var i, ii, rows; + for (i = 0, ii = figures.length; i < ii; i++) { + switch (figures[i].type) { + case 'lattice': + rows = figures[i].coords.length / figures[i].verticesPerRow | 0; + count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6; + break; + case 'triangles': + count += figures[i].coords.length; + break; + } + } + var coords = new Float32Array(count * 2); + var colors = new Uint8Array(count * 3); + var coordsMap = context.coords, + colorsMap = context.colors; + var pIndex = 0, + cIndex = 0; + for (i = 0, ii = figures.length; i < ii; i++) { + var figure = figures[i], + ps = figure.coords, + cs = figure.colors; + switch (figure.type) { + case 'lattice': + var cols = figure.verticesPerRow; + rows = ps.length / cols | 0; + for (var row = 1; row < rows; row++) { + var offset = row * cols + 1; + for (var col = 1; col < cols; col++, offset++) { + coords[pIndex] = coordsMap[ps[offset - cols - 1]]; + coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1]; + coords[pIndex + 2] = coordsMap[ps[offset - cols]]; + coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1]; + coords[pIndex + 4] = coordsMap[ps[offset - 1]]; + coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1]; + colors[cIndex] = colorsMap[cs[offset - cols - 1]]; + colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1]; + colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2]; + colors[cIndex + 3] = colorsMap[cs[offset - cols]]; + colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1]; + colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2]; + colors[cIndex + 6] = colorsMap[cs[offset - 1]]; + colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1]; + colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2]; + coords[pIndex + 6] = coords[pIndex + 2]; + coords[pIndex + 7] = coords[pIndex + 3]; + coords[pIndex + 8] = coords[pIndex + 4]; + coords[pIndex + 9] = coords[pIndex + 5]; + coords[pIndex + 10] = coordsMap[ps[offset]]; + coords[pIndex + 11] = coordsMap[ps[offset] + 1]; + colors[cIndex + 9] = colors[cIndex + 3]; + colors[cIndex + 10] = colors[cIndex + 4]; + colors[cIndex + 11] = colors[cIndex + 5]; + colors[cIndex + 12] = colors[cIndex + 6]; + colors[cIndex + 13] = colors[cIndex + 7]; + colors[cIndex + 14] = colors[cIndex + 8]; + colors[cIndex + 15] = colorsMap[cs[offset]]; + colors[cIndex + 16] = colorsMap[cs[offset] + 1]; + colors[cIndex + 17] = colorsMap[cs[offset] + 2]; + pIndex += 12; + cIndex += 18; + } + } + break; + case 'triangles': + for (var j = 0, jj = ps.length; j < jj; j++) { + coords[pIndex] = coordsMap[ps[j]]; + coords[pIndex + 1] = coordsMap[ps[j] + 1]; + colors[cIndex] = colorsMap[cs[j]]; + colors[cIndex + 1] = colorsMap[cs[j] + 1]; + colors[cIndex + 2] = colorsMap[cs[j] + 2]; + pIndex += 2; + cIndex += 3; + } + break; + } + } + if (backgroundColor) { + gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0); + } else { + gl.clearColor(0, 0, 0, 0); + } + gl.clear(gl.COLOR_BUFFER_BIT); + var coordsBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer); + gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW); + gl.enableVertexAttribArray(cache.positionLocation); + gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0); + var colorsBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer); + gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW); + gl.enableVertexAttribArray(cache.colorLocation); + gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0); + gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY); + gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY); + gl.drawArrays(gl.TRIANGLES, 0, count); + gl.flush(); + gl.deleteBuffer(coordsBuffer); + gl.deleteBuffer(colorsBuffer); + return canvas; + } + function cleanup() { + if (smaskCache && smaskCache.canvas) { + smaskCache.canvas.width = 0; + smaskCache.canvas.height = 0; + } + if (figuresCache && figuresCache.canvas) { + figuresCache.canvas.width = 0; + figuresCache.canvas.height = 0; + } + smaskCache = null; + figuresCache = null; + } + return { + get isEnabled() { + if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { + return false; + } + var enabled = false; + try { + generateGL(); + enabled = !!currentGL; + } catch (e) {} + return (0, _util.shadow)(this, 'isEnabled', enabled); + }, + composeSMask: composeSMask, + drawFigures: drawFigures, + clear: cleanup + }; +}(); +exports.WebGLUtils = WebGLUtils; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFJS = exports.isWorker = exports.globalScope = undefined; + +var _api = __w_pdfjs_require__(2); + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + +var _annotation_layer = __w_pdfjs_require__(3); + +var _metadata = __w_pdfjs_require__(6); + +var _text_layer = __w_pdfjs_require__(5); + +var _svg = __w_pdfjs_require__(4); + +var isWorker = typeof window === 'undefined'; +if (!_util.globalScope.PDFJS) { + _util.globalScope.PDFJS = {}; +} +var PDFJS = _util.globalScope.PDFJS; +{ + PDFJS.version = '1.9.426'; + PDFJS.build = '2558a58d'; +} +PDFJS.pdfBug = false; +if (PDFJS.verbosity !== undefined) { + (0, _util.setVerbosityLevel)(PDFJS.verbosity); +} +delete PDFJS.verbosity; +Object.defineProperty(PDFJS, 'verbosity', { + get: function get() { + return (0, _util.getVerbosityLevel)(); + }, + set: function set(level) { + (0, _util.setVerbosityLevel)(level); + }, + + enumerable: true, + configurable: true +}); +PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; +PDFJS.OPS = _util.OPS; +PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; +PDFJS.isValidUrl = _dom_utils.isValidUrl; +PDFJS.shadow = _util.shadow; +PDFJS.createBlob = _util.createBlob; +PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { + return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); +}; +Object.defineProperty(PDFJS, 'isLittleEndian', { + configurable: true, + get: function PDFJS_isLittleEndian() { + return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); + } +}); +PDFJS.removeNullCharacters = _util.removeNullCharacters; +PDFJS.PasswordResponses = _util.PasswordResponses; +PDFJS.PasswordException = _util.PasswordException; +PDFJS.UnknownErrorException = _util.UnknownErrorException; +PDFJS.InvalidPDFException = _util.InvalidPDFException; +PDFJS.MissingPDFException = _util.MissingPDFException; +PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; +PDFJS.Util = _util.Util; +PDFJS.PageViewport = _util.PageViewport; +PDFJS.createPromiseCapability = _util.createPromiseCapability; +PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; +PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; +PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; +PDFJS.disableFontFace = PDFJS.disableFontFace === undefined ? false : PDFJS.disableFontFace; +PDFJS.imageResourcesPath = PDFJS.imageResourcesPath === undefined ? '' : PDFJS.imageResourcesPath; +PDFJS.disableWorker = PDFJS.disableWorker === undefined ? false : PDFJS.disableWorker; +PDFJS.workerSrc = PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc; +PDFJS.workerPort = PDFJS.workerPort === undefined ? null : PDFJS.workerPort; +PDFJS.disableRange = PDFJS.disableRange === undefined ? false : PDFJS.disableRange; +PDFJS.disableStream = PDFJS.disableStream === undefined ? false : PDFJS.disableStream; +PDFJS.disableAutoFetch = PDFJS.disableAutoFetch === undefined ? false : PDFJS.disableAutoFetch; +PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; +PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; +PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; +PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; +PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; +PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; +PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; +PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; +{ + var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; + delete PDFJS.openExternalLinksInNewWindow; + Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { + get: function get() { + return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; + }, + set: function set(value) { + if (value) { + (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); + } + if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { + (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); + return; + } + PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; + }, + + enumerable: true, + configurable: true + }); + if (savedOpenExternalLinksInNewWindow) { + PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; + } +} +PDFJS.getDocument = _api.getDocument; +PDFJS.LoopbackPort = _api.LoopbackPort; +PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; +PDFJS.PDFWorker = _api.PDFWorker; +PDFJS.hasCanvasTypedArrays = true; +PDFJS.CustomStyle = _dom_utils.CustomStyle; +PDFJS.LinkTarget = _dom_utils.LinkTarget; +PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; +PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; +PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; +PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; +PDFJS.renderTextLayer = _text_layer.renderTextLayer; +PDFJS.Metadata = _metadata.Metadata; +PDFJS.SVGGraphics = _svg.SVGGraphics; +PDFJS.UnsupportedManager = _api._UnsupportedManager; +exports.globalScope = _util.globalScope; +exports.isWorker = isWorker; +exports.PDFJS = PDFJS; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NetworkManager = exports.PDFNetworkStream = undefined; + +var _util = __w_pdfjs_require__(0); + +var _api = __w_pdfjs_require__(2); + +; +var OK_RESPONSE = 200; +var PARTIAL_CONTENT_RESPONSE = 206; +function NetworkManager(url, args) { + this.url = url; + args = args || {}; + this.isHttp = /^https?:/i.test(url); + this.httpHeaders = this.isHttp && args.httpHeaders || {}; + this.withCredentials = args.withCredentials || false; + this.getXhr = args.getXhr || function NetworkManager_getXhr() { + return new XMLHttpRequest(); + }; + this.currXhrId = 0; + this.pendingRequests = Object.create(null); + this.loadedRequests = Object.create(null); +} +function getArrayBuffer(xhr) { + var data = xhr.response; + if (typeof data !== 'string') { + return data; + } + var length = data.length; + var array = new Uint8Array(length); + for (var i = 0; i < length; i++) { + array[i] = data.charCodeAt(i) & 0xFF; + } + return array.buffer; +} +var supportsMozChunked = function supportsMozChunkedClosure() { + try { + var x = new XMLHttpRequest(); + x.open('GET', _util.globalScope.location.href); + x.responseType = 'moz-chunked-arraybuffer'; + return x.responseType === 'moz-chunked-arraybuffer'; + } catch (e) { + return false; + } +}(); +NetworkManager.prototype = { + requestRange: function NetworkManager_requestRange(begin, end, listeners) { + var args = { + begin: begin, + end: end + }; + for (var prop in listeners) { + args[prop] = listeners[prop]; + } + return this.request(args); + }, + requestFull: function NetworkManager_requestFull(listeners) { + return this.request(listeners); + }, + request: function NetworkManager_request(args) { + var xhr = this.getXhr(); + var xhrId = this.currXhrId++; + var pendingRequest = this.pendingRequests[xhrId] = { xhr: xhr }; + xhr.open('GET', this.url); + xhr.withCredentials = this.withCredentials; + for (var property in this.httpHeaders) { + var value = this.httpHeaders[property]; + if (typeof value === 'undefined') { + continue; + } + xhr.setRequestHeader(property, value); + } + if (this.isHttp && 'begin' in args && 'end' in args) { + var rangeStr = args.begin + '-' + (args.end - 1); + xhr.setRequestHeader('Range', 'bytes=' + rangeStr); + pendingRequest.expectedStatus = 206; + } else { + pendingRequest.expectedStatus = 200; + } + var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData; + if (useMozChunkedLoading) { + xhr.responseType = 'moz-chunked-arraybuffer'; + pendingRequest.onProgressiveData = args.onProgressiveData; + pendingRequest.mozChunked = true; + } else { + xhr.responseType = 'arraybuffer'; + } + if (args.onError) { + xhr.onerror = function (evt) { + args.onError(xhr.status); + }; + } + xhr.onreadystatechange = this.onStateChange.bind(this, xhrId); + xhr.onprogress = this.onProgress.bind(this, xhrId); + pendingRequest.onHeadersReceived = args.onHeadersReceived; + pendingRequest.onDone = args.onDone; + pendingRequest.onError = args.onError; + pendingRequest.onProgress = args.onProgress; + xhr.send(null); + return xhrId; + }, + onProgress: function NetworkManager_onProgress(xhrId, evt) { + var pendingRequest = this.pendingRequests[xhrId]; + if (!pendingRequest) { + return; + } + if (pendingRequest.mozChunked) { + var chunk = getArrayBuffer(pendingRequest.xhr); + pendingRequest.onProgressiveData(chunk); + } + var onProgress = pendingRequest.onProgress; + if (onProgress) { + onProgress(evt); + } + }, + onStateChange: function NetworkManager_onStateChange(xhrId, evt) { + var pendingRequest = this.pendingRequests[xhrId]; + if (!pendingRequest) { + return; + } + var xhr = pendingRequest.xhr; + if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) { + pendingRequest.onHeadersReceived(); + delete pendingRequest.onHeadersReceived; + } + if (xhr.readyState !== 4) { + return; + } + if (!(xhrId in this.pendingRequests)) { + return; + } + delete this.pendingRequests[xhrId]; + if (xhr.status === 0 && this.isHttp) { + if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + return; + } + var xhrStatus = xhr.status || OK_RESPONSE; + var ok_response_on_range_request = xhrStatus === OK_RESPONSE && pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE; + if (!ok_response_on_range_request && xhrStatus !== pendingRequest.expectedStatus) { + if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + return; + } + this.loadedRequests[xhrId] = true; + var chunk = getArrayBuffer(xhr); + if (xhrStatus === PARTIAL_CONTENT_RESPONSE) { + var rangeHeader = xhr.getResponseHeader('Content-Range'); + var matches = /bytes (\d+)-(\d+)\/(\d+)/.exec(rangeHeader); + var begin = parseInt(matches[1], 10); + pendingRequest.onDone({ + begin: begin, + chunk: chunk + }); + } else if (pendingRequest.onProgressiveData) { + pendingRequest.onDone(null); + } else if (chunk) { + pendingRequest.onDone({ + begin: 0, + chunk: chunk + }); + } else if (pendingRequest.onError) { + pendingRequest.onError(xhr.status); + } + }, + hasPendingRequests: function NetworkManager_hasPendingRequests() { + for (var xhrId in this.pendingRequests) { + return true; + } + return false; + }, + getRequestXhr: function NetworkManager_getXhr(xhrId) { + return this.pendingRequests[xhrId].xhr; + }, + isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) { + return !!this.pendingRequests[xhrId].onProgressiveData; + }, + isPendingRequest: function NetworkManager_isPendingRequest(xhrId) { + return xhrId in this.pendingRequests; + }, + isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) { + return xhrId in this.loadedRequests; + }, + abortAllRequests: function NetworkManager_abortAllRequests() { + for (var xhrId in this.pendingRequests) { + this.abortRequest(xhrId | 0); + } + }, + abortRequest: function NetworkManager_abortRequest(xhrId) { + var xhr = this.pendingRequests[xhrId].xhr; + delete this.pendingRequests[xhrId]; + xhr.abort(); + } +}; +function PDFNetworkStream(options) { + this._options = options; + var source = options.source; + this._manager = new NetworkManager(source.url, { + httpHeaders: source.httpHeaders, + withCredentials: source.withCredentials + }); + this._rangeChunkSize = source.rangeChunkSize; + this._fullRequestReader = null; + this._rangeRequestReaders = []; +} +PDFNetworkStream.prototype = { + _onRangeRequestReaderClosed: function PDFNetworkStream_onRangeRequestReaderClosed(reader) { + var i = this._rangeRequestReaders.indexOf(reader); + if (i >= 0) { + this._rangeRequestReaders.splice(i, 1); + } + }, + getFullReader: function PDFNetworkStream_getFullReader() { + (0, _util.assert)(!this._fullRequestReader); + this._fullRequestReader = new PDFNetworkStreamFullRequestReader(this._manager, this._options); + return this._fullRequestReader; + }, + getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) { + var reader = new PDFNetworkStreamRangeRequestReader(this._manager, begin, end); + reader.onClosed = this._onRangeRequestReaderClosed.bind(this); + this._rangeRequestReaders.push(reader); + return reader; + }, + cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + var readers = this._rangeRequestReaders.slice(0); + readers.forEach(function (reader) { + reader.cancel(reason); + }); + } +}; +function PDFNetworkStreamFullRequestReader(manager, options) { + this._manager = manager; + var source = options.source; + var args = { + onHeadersReceived: this._onHeadersReceived.bind(this), + onProgressiveData: source.disableStream ? null : this._onProgressiveData.bind(this), + onDone: this._onDone.bind(this), + onError: this._onError.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._url = source.url; + this._fullRequestId = manager.requestFull(args); + this._headersReceivedCapability = (0, _util.createPromiseCapability)(); + this._disableRange = options.disableRange || false; + this._contentLength = source.length; + this._rangeChunkSize = source.rangeChunkSize; + if (!this._rangeChunkSize && !this._disableRange) { + this._disableRange = true; + } + this._isStreamingSupported = false; + this._isRangeSupported = false; + this._cachedChunks = []; + this._requests = []; + this._done = false; + this._storedError = undefined; + this.onProgress = null; +} +PDFNetworkStreamFullRequestReader.prototype = { + _validateRangeRequestCapabilities: function PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() { + if (this._disableRange) { + return false; + } + var networkManager = this._manager; + if (!networkManager.isHttp) { + return false; + } + var fullRequestXhrId = this._fullRequestId; + var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId); + if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') { + return false; + } + var contentEncoding = fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity'; + if (contentEncoding !== 'identity') { + return false; + } + var length = fullRequestXhr.getResponseHeader('Content-Length'); + length = parseInt(length, 10); + if (!(0, _util.isInt)(length)) { + return false; + } + this._contentLength = length; + if (length <= 2 * this._rangeChunkSize) { + return false; + } + return true; + }, + _onHeadersReceived: function PDFNetworkStreamFullRequestReader_onHeadersReceived() { + if (this._validateRangeRequestCapabilities()) { + this._isRangeSupported = true; + } + var networkManager = this._manager; + var fullRequestXhrId = this._fullRequestId; + if (networkManager.isStreamingRequest(fullRequestXhrId)) { + this._isStreamingSupported = true; + } else if (this._isRangeSupported) { + networkManager.abortRequest(fullRequestXhrId); + } + this._headersReceivedCapability.resolve(); + }, + _onProgressiveData: function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) { + if (this._requests.length > 0) { + var requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._cachedChunks.push(chunk); + } + }, + _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) { + if (args) { + this._onProgressiveData(args.chunk); + } + this._done = true; + if (this._cachedChunks.length > 0) { + return; + } + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + }, + _onError: function PDFNetworkStreamFullRequestReader_onError(status) { + var url = this._url; + var exception; + if (status === 404 || status === 0 && /^file:/.test(url)) { + exception = new _util.MissingPDFException('Missing PDF "' + url + '".'); + } else { + exception = new _util.UnexpectedResponseException('Unexpected server response (' + status + ') while retrieving PDF "' + url + '".', status); + } + this._storedError = exception; + this._headersReceivedCapability.reject(exception); + this._requests.forEach(function (requestCapability) { + requestCapability.reject(exception); + }); + this._requests = []; + this._cachedChunks = []; + }, + _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) { + if (this.onProgress) { + this.onProgress({ + loaded: data.loaded, + total: data.lengthComputable ? data.total : this._contentLength + }); + } + }, + get isRangeSupported() { + return this._isRangeSupported; + }, + get isStreamingSupported() { + return this._isStreamingSupported; + }, + get contentLength() { + return this._contentLength; + }, + get headersReady() { + return this._headersReceivedCapability.promise; + }, + read: function PDFNetworkStreamFullRequestReader_read() { + if (this._storedError) { + return Promise.reject(this._storedError); + } + if (this._cachedChunks.length > 0) { + var chunk = this._cachedChunks.shift(); + return Promise.resolve({ + value: chunk, + done: false + }); + } + if (this._done) { + return Promise.resolve({ + value: undefined, + done: true + }); + } + var requestCapability = (0, _util.createPromiseCapability)(); + this._requests.push(requestCapability); + return requestCapability.promise; + }, + cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) { + this._done = true; + this._headersReceivedCapability.reject(reason); + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + if (this._manager.isPendingRequest(this._fullRequestId)) { + this._manager.abortRequest(this._fullRequestId); + } + this._fullRequestReader = null; + } +}; +function PDFNetworkStreamRangeRequestReader(manager, begin, end) { + this._manager = manager; + var args = { + onDone: this._onDone.bind(this), + onProgress: this._onProgress.bind(this) + }; + this._requestId = manager.requestRange(begin, end, args); + this._requests = []; + this._queuedChunk = null; + this._done = false; + this.onProgress = null; + this.onClosed = null; +} +PDFNetworkStreamRangeRequestReader.prototype = { + _close: function PDFNetworkStreamRangeRequestReader_close() { + if (this.onClosed) { + this.onClosed(this); + } + }, + _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) { + var chunk = data.chunk; + if (this._requests.length > 0) { + var requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: chunk, + done: false + }); + } else { + this._queuedChunk = chunk; + } + this._done = true; + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + this._close(); + }, + _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) { + if (!this.isStreamingSupported && this.onProgress) { + this.onProgress({ loaded: evt.loaded }); + } + }, + get isStreamingSupported() { + return false; + }, + read: function PDFNetworkStreamRangeRequestReader_read() { + if (this._queuedChunk !== null) { + var chunk = this._queuedChunk; + this._queuedChunk = null; + return Promise.resolve({ + value: chunk, + done: false + }); + } + if (this._done) { + return Promise.resolve({ + value: undefined, + done: true + }); + } + var requestCapability = (0, _util.createPromiseCapability)(); + this._requests.push(requestCapability); + return requestCapability.promise; + }, + cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) { + this._done = true; + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + if (this._manager.isPendingRequest(this._requestId)) { + this._manager.abortRequest(this._requestId); + } + this._close(); + } +}; +(0, _api.setPDFNetworkStreamClass)(PDFNetworkStream); +exports.PDFNetworkStream = PDFNetworkStream; +exports.NetworkManager = NetworkManager; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +(function (e, a) { + for (var i in a) { + e[i] = a[i]; + } +})(exports, function (modules) { + var installedModules = {}; + function __w_pdfjs_require__(moduleId) { + if (installedModules[moduleId]) return installedModules[moduleId].exports; + var module = installedModules[moduleId] = { + i: moduleId, + l: false, + exports: {} + }; + modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); + module.l = true; + return module.exports; + } + __w_pdfjs_require__.m = modules; + __w_pdfjs_require__.c = installedModules; + __w_pdfjs_require__.i = function (value) { + return value; + }; + __w_pdfjs_require__.d = function (exports, name, getter) { + if (!__w_pdfjs_require__.o(exports, name)) { + Object.defineProperty(exports, name, { + configurable: false, + enumerable: true, + get: getter + }); + } + }; + __w_pdfjs_require__.n = function (module) { + var getter = module && module.__esModule ? function getDefault() { + return module['default']; + } : function getModuleExports() { + return module; + }; + __w_pdfjs_require__.d(getter, 'a', getter); + return getter; + }; + __w_pdfjs_require__.o = function (object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + __w_pdfjs_require__.p = ""; + return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); +}([function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { + return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + }; + var _require = __w_pdfjs_require__(1), + assert = _require.assert; + function IsPropertyKey(argument) { + return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; + } + exports.typeIsObject = function (x) { + return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; + }; + exports.createDataProperty = function (o, p, v) { + assert(exports.typeIsObject(o)); + Object.defineProperty(o, p, { + value: v, + writable: true, + enumerable: true, + configurable: true + }); + }; + exports.createArrayFromList = function (elements) { + return elements.slice(); + }; + exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { + new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); + }; + exports.CreateIterResultObject = function (value, done) { + assert(typeof done === 'boolean'); + var obj = {}; + Object.defineProperty(obj, 'value', { + value: value, + enumerable: true, + writable: true, + configurable: true + }); + Object.defineProperty(obj, 'done', { + value: done, + enumerable: true, + writable: true, + configurable: true + }); + return obj; + }; + exports.IsFiniteNonNegativeNumber = function (v) { + if (Number.isNaN(v)) { + return false; + } + if (v === Infinity) { + return false; + } + if (v < 0) { + return false; + } + return true; + }; + function Call(F, V, args) { + if (typeof F !== 'function') { + throw new TypeError('Argument is not a function'); + } + return Function.prototype.apply.call(F, V, args); + } + exports.InvokeOrNoop = function (O, P, args) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + var method = O[P]; + if (method === undefined) { + return undefined; + } + return Call(method, O, args); + }; + exports.PromiseInvokeOrNoop = function (O, P, args) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + try { + return Promise.resolve(exports.InvokeOrNoop(O, P, args)); + } catch (returnValueE) { + return Promise.reject(returnValueE); + } + }; + exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + assert(Array.isArray(argsF)); + var method = void 0; + try { + method = O[P]; + } catch (methodE) { + return Promise.reject(methodE); + } + if (method === undefined) { + return F.apply(null, argsF); + } + try { + return Promise.resolve(Call(method, O, args)); + } catch (e) { + return Promise.reject(e); + } + }; + exports.TransferArrayBuffer = function (O) { + return O.slice(); + }; + exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { + highWaterMark = Number(highWaterMark); + if (Number.isNaN(highWaterMark) || highWaterMark < 0) { + throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); + } + return highWaterMark; + }; + exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { + if (size !== undefined && typeof size !== 'function') { + throw new TypeError('size property of a queuing strategy must be a function'); + } + highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); + return { + size: size, + highWaterMark: highWaterMark + }; + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + function rethrowAssertionErrorRejection(e) { + if (e && e.constructor === AssertionError) { + setTimeout(function () { + throw e; + }, 0); + } + } + function AssertionError(message) { + this.name = 'AssertionError'; + this.message = message || ''; + this.stack = new Error().stack; + } + AssertionError.prototype = Object.create(Error.prototype); + AssertionError.prototype.constructor = AssertionError; + function assert(value, message) { + if (!value) { + throw new AssertionError(message); + } + } + module.exports = { + rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, + AssertionError: AssertionError, + assert: assert + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(0), + InvokeOrNoop = _require.InvokeOrNoop, + PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, + ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, + typeIsObject = _require.typeIsObject; + var _require2 = __w_pdfjs_require__(1), + assert = _require2.assert, + rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; + var _require3 = __w_pdfjs_require__(3), + DequeueValue = _require3.DequeueValue, + EnqueueValueWithSize = _require3.EnqueueValueWithSize, + PeekQueueValue = _require3.PeekQueueValue, + ResetQueue = _require3.ResetQueue; + var WritableStream = function () { + function WritableStream() { + var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + size = _ref.size, + _ref$highWaterMark = _ref.highWaterMark, + highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; + _classCallCheck(this, WritableStream); + this._state = 'writable'; + this._storedError = undefined; + this._writer = undefined; + this._writableStreamController = undefined; + this._writeRequests = []; + this._inFlightWriteRequest = undefined; + this._closeRequest = undefined; + this._inFlightCloseRequest = undefined; + this._pendingAbortRequest = undefined; + this._backpressure = false; + var type = underlyingSink.type; + if (type !== undefined) { + throw new RangeError('Invalid type is specified'); + } + this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); + this._writableStreamController.__startSteps(); + } + _createClass(WritableStream, [{ + key: 'abort', + value: function abort(reason) { + if (IsWritableStream(this) === false) { + return Promise.reject(streamBrandCheckException('abort')); + } + if (IsWritableStreamLocked(this) === true) { + return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); + } + return WritableStreamAbort(this, reason); + } + }, { + key: 'getWriter', + value: function getWriter() { + if (IsWritableStream(this) === false) { + throw streamBrandCheckException('getWriter'); + } + return AcquireWritableStreamDefaultWriter(this); + } + }, { + key: 'locked', + get: function get() { + if (IsWritableStream(this) === false) { + throw streamBrandCheckException('locked'); + } + return IsWritableStreamLocked(this); + } + }]); + return WritableStream; + }(); + module.exports = { + AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, + IsWritableStream: IsWritableStream, + IsWritableStreamLocked: IsWritableStreamLocked, + WritableStream: WritableStream, + WritableStreamAbort: WritableStreamAbort, + WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, + WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, + WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, + WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, + WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight + }; + function AcquireWritableStreamDefaultWriter(stream) { + return new WritableStreamDefaultWriter(stream); + } + function IsWritableStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { + return false; + } + return true; + } + function IsWritableStreamLocked(stream) { + assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); + if (stream._writer === undefined) { + return false; + } + return true; + } + function WritableStreamAbort(stream, reason) { + var state = stream._state; + if (state === 'closed') { + return Promise.resolve(undefined); + } + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + var error = new TypeError('Requested to abort'); + if (stream._pendingAbortRequest !== undefined) { + return Promise.reject(error); + } + assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); + var wasAlreadyErroring = false; + if (state === 'erroring') { + wasAlreadyErroring = true; + reason = undefined; + } + var promise = new Promise(function (resolve, reject) { + stream._pendingAbortRequest = { + _resolve: resolve, + _reject: reject, + _reason: reason, + _wasAlreadyErroring: wasAlreadyErroring + }; + }); + if (wasAlreadyErroring === false) { + WritableStreamStartErroring(stream, error); + } + return promise; + } + function WritableStreamAddWriteRequest(stream) { + assert(IsWritableStreamLocked(stream) === true); + assert(stream._state === 'writable'); + var promise = new Promise(function (resolve, reject) { + var writeRequest = { + _resolve: resolve, + _reject: reject + }; + stream._writeRequests.push(writeRequest); + }); + return promise; + } + function WritableStreamDealWithRejection(stream, error) { + var state = stream._state; + if (state === 'writable') { + WritableStreamStartErroring(stream, error); + return; + } + assert(state === 'erroring'); + WritableStreamFinishErroring(stream); + } + function WritableStreamStartErroring(stream, reason) { + assert(stream._storedError === undefined, 'stream._storedError === undefined'); + assert(stream._state === 'writable', 'state must be writable'); + var controller = stream._writableStreamController; + assert(controller !== undefined, 'controller must not be undefined'); + stream._state = 'erroring'; + stream._storedError = reason; + var writer = stream._writer; + if (writer !== undefined) { + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); + } + if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { + WritableStreamFinishErroring(stream); + } + } + function WritableStreamFinishErroring(stream) { + assert(stream._state === 'erroring', 'stream._state === erroring'); + assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); + stream._state = 'errored'; + stream._writableStreamController.__errorSteps(); + var storedError = stream._storedError; + for (var i = 0; i < stream._writeRequests.length; i++) { + var writeRequest = stream._writeRequests[i]; + writeRequest._reject(storedError); + } + stream._writeRequests = []; + if (stream._pendingAbortRequest === undefined) { + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + var abortRequest = stream._pendingAbortRequest; + stream._pendingAbortRequest = undefined; + if (abortRequest._wasAlreadyErroring === true) { + abortRequest._reject(storedError); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); + promise.then(function () { + abortRequest._resolve(); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + }, function (reason) { + abortRequest._reject(reason); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + }); + } + function WritableStreamFinishInFlightWrite(stream) { + assert(stream._inFlightWriteRequest !== undefined); + stream._inFlightWriteRequest._resolve(undefined); + stream._inFlightWriteRequest = undefined; + } + function WritableStreamFinishInFlightWriteWithError(stream, error) { + assert(stream._inFlightWriteRequest !== undefined); + stream._inFlightWriteRequest._reject(error); + stream._inFlightWriteRequest = undefined; + assert(stream._state === 'writable' || stream._state === 'erroring'); + WritableStreamDealWithRejection(stream, error); + } + function WritableStreamFinishInFlightClose(stream) { + assert(stream._inFlightCloseRequest !== undefined); + stream._inFlightCloseRequest._resolve(undefined); + stream._inFlightCloseRequest = undefined; + var state = stream._state; + assert(state === 'writable' || state === 'erroring'); + if (state === 'erroring') { + stream._storedError = undefined; + if (stream._pendingAbortRequest !== undefined) { + stream._pendingAbortRequest._resolve(); + stream._pendingAbortRequest = undefined; + } + } + stream._state = 'closed'; + var writer = stream._writer; + if (writer !== undefined) { + defaultWriterClosedPromiseResolve(writer); + } + assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); + assert(stream._storedError === undefined, 'stream._storedError === undefined'); + } + function WritableStreamFinishInFlightCloseWithError(stream, error) { + assert(stream._inFlightCloseRequest !== undefined); + stream._inFlightCloseRequest._reject(error); + stream._inFlightCloseRequest = undefined; + assert(stream._state === 'writable' || stream._state === 'erroring'); + if (stream._pendingAbortRequest !== undefined) { + stream._pendingAbortRequest._reject(error); + stream._pendingAbortRequest = undefined; + } + WritableStreamDealWithRejection(stream, error); + } + function WritableStreamCloseQueuedOrInFlight(stream) { + if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { + return false; + } + return true; + } + function WritableStreamHasOperationMarkedInFlight(stream) { + if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { + return false; + } + return true; + } + function WritableStreamMarkCloseRequestInFlight(stream) { + assert(stream._inFlightCloseRequest === undefined); + assert(stream._closeRequest !== undefined); + stream._inFlightCloseRequest = stream._closeRequest; + stream._closeRequest = undefined; + } + function WritableStreamMarkFirstWriteRequestInFlight(stream) { + assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); + assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); + stream._inFlightWriteRequest = stream._writeRequests.shift(); + } + function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { + assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); + if (stream._closeRequest !== undefined) { + assert(stream._inFlightCloseRequest === undefined); + stream._closeRequest._reject(stream._storedError); + stream._closeRequest = undefined; + } + var writer = stream._writer; + if (writer !== undefined) { + defaultWriterClosedPromiseReject(writer, stream._storedError); + writer._closedPromise.catch(function () {}); + } + } + function WritableStreamUpdateBackpressure(stream, backpressure) { + assert(stream._state === 'writable'); + assert(WritableStreamCloseQueuedOrInFlight(stream) === false); + var writer = stream._writer; + if (writer !== undefined && backpressure !== stream._backpressure) { + if (backpressure === true) { + defaultWriterReadyPromiseReset(writer); + } else { + assert(backpressure === false); + defaultWriterReadyPromiseResolve(writer); + } + } + stream._backpressure = backpressure; + } + var WritableStreamDefaultWriter = function () { + function WritableStreamDefaultWriter(stream) { + _classCallCheck(this, WritableStreamDefaultWriter); + if (IsWritableStream(stream) === false) { + throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); + } + if (IsWritableStreamLocked(stream) === true) { + throw new TypeError('This stream has already been locked for exclusive writing by another writer'); + } + this._ownerWritableStream = stream; + stream._writer = this; + var state = stream._state; + if (state === 'writable') { + if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { + defaultWriterReadyPromiseInitialize(this); + } else { + defaultWriterReadyPromiseInitializeAsResolved(this); + } + defaultWriterClosedPromiseInitialize(this); + } else if (state === 'erroring') { + defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); + this._readyPromise.catch(function () {}); + defaultWriterClosedPromiseInitialize(this); + } else if (state === 'closed') { + defaultWriterReadyPromiseInitializeAsResolved(this); + defaultWriterClosedPromiseInitializeAsResolved(this); + } else { + assert(state === 'errored', 'state must be errored'); + var storedError = stream._storedError; + defaultWriterReadyPromiseInitializeAsRejected(this, storedError); + this._readyPromise.catch(function () {}); + defaultWriterClosedPromiseInitializeAsRejected(this, storedError); + this._closedPromise.catch(function () {}); + } + } + _createClass(WritableStreamDefaultWriter, [{ + key: 'abort', + value: function abort(reason) { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('abort')); + } + if (this._ownerWritableStream === undefined) { + return Promise.reject(defaultWriterLockException('abort')); + } + return WritableStreamDefaultWriterAbort(this, reason); + } + }, { + key: 'close', + value: function close() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('close')); + } + var stream = this._ownerWritableStream; + if (stream === undefined) { + return Promise.reject(defaultWriterLockException('close')); + } + if (WritableStreamCloseQueuedOrInFlight(stream) === true) { + return Promise.reject(new TypeError('cannot close an already-closing stream')); + } + return WritableStreamDefaultWriterClose(this); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (IsWritableStreamDefaultWriter(this) === false) { + throw defaultWriterBrandCheckException('releaseLock'); + } + var stream = this._ownerWritableStream; + if (stream === undefined) { + return; + } + assert(stream._writer !== undefined); + WritableStreamDefaultWriterRelease(this); + } + }, { + key: 'write', + value: function write(chunk) { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('write')); + } + if (this._ownerWritableStream === undefined) { + return Promise.reject(defaultWriterLockException('write to')); + } + return WritableStreamDefaultWriterWrite(this, chunk); + } + }, { + key: 'closed', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('closed')); + } + return this._closedPromise; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + throw defaultWriterBrandCheckException('desiredSize'); + } + if (this._ownerWritableStream === undefined) { + throw defaultWriterLockException('desiredSize'); + } + return WritableStreamDefaultWriterGetDesiredSize(this); + } + }, { + key: 'ready', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('ready')); + } + return this._readyPromise; + } + }]); + return WritableStreamDefaultWriter; + }(); + function IsWritableStreamDefaultWriter(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { + return false; + } + return true; + } + function WritableStreamDefaultWriterAbort(writer, reason) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + return WritableStreamAbort(stream, reason); + } + function WritableStreamDefaultWriterClose(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var state = stream._state; + if (state === 'closed' || state === 'errored') { + return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); + } + assert(state === 'writable' || state === 'erroring'); + assert(WritableStreamCloseQueuedOrInFlight(stream) === false); + var promise = new Promise(function (resolve, reject) { + var closeRequest = { + _resolve: resolve, + _reject: reject + }; + stream._closeRequest = closeRequest; + }); + if (stream._backpressure === true && state === 'writable') { + defaultWriterReadyPromiseResolve(writer); + } + WritableStreamDefaultControllerClose(stream._writableStreamController); + return promise; + } + function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var state = stream._state; + if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { + return Promise.resolve(); + } + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + assert(state === 'writable' || state === 'erroring'); + return WritableStreamDefaultWriterClose(writer); + } + function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { + if (writer._closedPromiseState === 'pending') { + defaultWriterClosedPromiseReject(writer, error); + } else { + defaultWriterClosedPromiseResetToRejected(writer, error); + } + writer._closedPromise.catch(function () {}); + } + function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { + if (writer._readyPromiseState === 'pending') { + defaultWriterReadyPromiseReject(writer, error); + } else { + defaultWriterReadyPromiseResetToRejected(writer, error); + } + writer._readyPromise.catch(function () {}); + } + function WritableStreamDefaultWriterGetDesiredSize(writer) { + var stream = writer._ownerWritableStream; + var state = stream._state; + if (state === 'errored' || state === 'erroring') { + return null; + } + if (state === 'closed') { + return 0; + } + return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); + } + function WritableStreamDefaultWriterRelease(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + assert(stream._writer === writer); + var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); + WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); + stream._writer = undefined; + writer._ownerWritableStream = undefined; + } + function WritableStreamDefaultWriterWrite(writer, chunk) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var controller = stream._writableStreamController; + var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); + if (stream !== writer._ownerWritableStream) { + return Promise.reject(defaultWriterLockException('write to')); + } + var state = stream._state; + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { + return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); + } + if (state === 'erroring') { + return Promise.reject(stream._storedError); + } + assert(state === 'writable'); + var promise = WritableStreamAddWriteRequest(stream); + WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); + return promise; + } + var WritableStreamDefaultController = function () { + function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { + _classCallCheck(this, WritableStreamDefaultController); + if (IsWritableStream(stream) === false) { + throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); + } + if (stream._writableStreamController !== undefined) { + throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); + } + this._controlledWritableStream = stream; + this._underlyingSink = underlyingSink; + this._queue = undefined; + this._queueTotalSize = undefined; + ResetQueue(this); + this._started = false; + var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this._strategySize = normalizedStrategy.size; + this._strategyHWM = normalizedStrategy.highWaterMark; + var backpressure = WritableStreamDefaultControllerGetBackpressure(this); + WritableStreamUpdateBackpressure(stream, backpressure); + } + _createClass(WritableStreamDefaultController, [{ + key: 'error', + value: function error(e) { + if (IsWritableStreamDefaultController(this) === false) { + throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); + } + var state = this._controlledWritableStream._state; + if (state !== 'writable') { + return; + } + WritableStreamDefaultControllerError(this, e); + } + }, { + key: '__abortSteps', + value: function __abortSteps(reason) { + return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); + } + }, { + key: '__errorSteps', + value: function __errorSteps() { + ResetQueue(this); + } + }, { + key: '__startSteps', + value: function __startSteps() { + var _this = this; + var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); + var stream = this._controlledWritableStream; + Promise.resolve(startResult).then(function () { + assert(stream._state === 'writable' || stream._state === 'erroring'); + _this._started = true; + WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); + }, function (r) { + assert(stream._state === 'writable' || stream._state === 'erroring'); + _this._started = true; + WritableStreamDealWithRejection(stream, r); + }).catch(rethrowAssertionErrorRejection); + } + }]); + return WritableStreamDefaultController; + }(); + function WritableStreamDefaultControllerClose(controller) { + EnqueueValueWithSize(controller, 'close', 0); + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { + var strategySize = controller._strategySize; + if (strategySize === undefined) { + return 1; + } + try { + return strategySize(chunk); + } catch (chunkSizeE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); + return 1; + } + } + function WritableStreamDefaultControllerGetDesiredSize(controller) { + return controller._strategyHWM - controller._queueTotalSize; + } + function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { + var writeRecord = { chunk: chunk }; + try { + EnqueueValueWithSize(controller, writeRecord, chunkSize); + } catch (enqueueE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); + return; + } + var stream = controller._controlledWritableStream; + if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { + var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function IsWritableStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { + return false; + } + return true; + } + function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { + var stream = controller._controlledWritableStream; + if (controller._started === false) { + return; + } + if (stream._inFlightWriteRequest !== undefined) { + return; + } + var state = stream._state; + if (state === 'closed' || state === 'errored') { + return; + } + if (state === 'erroring') { + WritableStreamFinishErroring(stream); + return; + } + if (controller._queue.length === 0) { + return; + } + var writeRecord = PeekQueueValue(controller); + if (writeRecord === 'close') { + WritableStreamDefaultControllerProcessClose(controller); + } else { + WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); + } + } + function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { + if (controller._controlledWritableStream._state === 'writable') { + WritableStreamDefaultControllerError(controller, error); + } + } + function WritableStreamDefaultControllerProcessClose(controller) { + var stream = controller._controlledWritableStream; + WritableStreamMarkCloseRequestInFlight(stream); + DequeueValue(controller); + assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); + var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); + sinkClosePromise.then(function () { + WritableStreamFinishInFlightClose(stream); + }, function (reason) { + WritableStreamFinishInFlightCloseWithError(stream, reason); + }).catch(rethrowAssertionErrorRejection); + } + function WritableStreamDefaultControllerProcessWrite(controller, chunk) { + var stream = controller._controlledWritableStream; + WritableStreamMarkFirstWriteRequestInFlight(stream); + var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); + sinkWritePromise.then(function () { + WritableStreamFinishInFlightWrite(stream); + var state = stream._state; + assert(state === 'writable' || state === 'erroring'); + DequeueValue(controller); + if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { + var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + }, function (reason) { + WritableStreamFinishInFlightWriteWithError(stream, reason); + }).catch(rethrowAssertionErrorRejection); + } + function WritableStreamDefaultControllerGetBackpressure(controller) { + var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); + return desiredSize <= 0; + } + function WritableStreamDefaultControllerError(controller, error) { + var stream = controller._controlledWritableStream; + assert(stream._state === 'writable'); + WritableStreamStartErroring(stream, error); + } + function streamBrandCheckException(name) { + return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); + } + function defaultWriterBrandCheckException(name) { + return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); + } + function defaultWriterLockException(name) { + return new TypeError('Cannot ' + name + ' a stream using a released writer'); + } + function defaultWriterClosedPromiseInitialize(writer) { + writer._closedPromise = new Promise(function (resolve, reject) { + writer._closedPromise_resolve = resolve; + writer._closedPromise_reject = reject; + writer._closedPromiseState = 'pending'; + }); + } + function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { + writer._closedPromise = Promise.reject(reason); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseInitializeAsResolved(writer) { + writer._closedPromise = Promise.resolve(undefined); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'resolved'; + } + function defaultWriterClosedPromiseReject(writer, reason) { + assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); + assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); + assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); + writer._closedPromise_reject(reason); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseResetToRejected(writer, reason) { + assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); + assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); + assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); + writer._closedPromise = Promise.reject(reason); + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseResolve(writer) { + assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); + assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); + assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); + writer._closedPromise_resolve(undefined); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'resolved'; + } + function defaultWriterReadyPromiseInitialize(writer) { + writer._readyPromise = new Promise(function (resolve, reject) { + writer._readyPromise_resolve = resolve; + writer._readyPromise_reject = reject; + }); + writer._readyPromiseState = 'pending'; + } + function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { + writer._readyPromise = Promise.reject(reason); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseInitializeAsResolved(writer) { + writer._readyPromise = Promise.resolve(undefined); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'fulfilled'; + } + function defaultWriterReadyPromiseReject(writer, reason) { + assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); + assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); + writer._readyPromise_reject(reason); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseReset(writer) { + assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); + assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); + writer._readyPromise = new Promise(function (resolve, reject) { + writer._readyPromise_resolve = resolve; + writer._readyPromise_reject = reject; + }); + writer._readyPromiseState = 'pending'; + } + function defaultWriterReadyPromiseResetToRejected(writer, reason) { + assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); + assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); + writer._readyPromise = Promise.reject(reason); + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseResolve(writer) { + assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); + assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); + writer._readyPromise_resolve(undefined); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'fulfilled'; + } +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _require = __w_pdfjs_require__(0), + IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; + var _require2 = __w_pdfjs_require__(1), + assert = _require2.assert; + exports.DequeueValue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); + var pair = container._queue.shift(); + container._queueTotalSize -= pair.size; + if (container._queueTotalSize < 0) { + container._queueTotalSize = 0; + } + return pair.value; + }; + exports.EnqueueValueWithSize = function (container, value, size) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); + size = Number(size); + if (!IsFiniteNonNegativeNumber(size)) { + throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); + } + container._queue.push({ + value: value, + size: size + }); + container._queueTotalSize += size; + }; + exports.PeekQueueValue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); + var pair = container._queue[0]; + return pair.value; + }; + exports.ResetQueue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + container._queue = []; + container._queueTotalSize = 0; + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(0), + ArrayBufferCopy = _require.ArrayBufferCopy, + CreateIterResultObject = _require.CreateIterResultObject, + IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, + InvokeOrNoop = _require.InvokeOrNoop, + PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, + TransferArrayBuffer = _require.TransferArrayBuffer, + ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, + ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; + var _require2 = __w_pdfjs_require__(0), + createArrayFromList = _require2.createArrayFromList, + createDataProperty = _require2.createDataProperty, + typeIsObject = _require2.typeIsObject; + var _require3 = __w_pdfjs_require__(1), + assert = _require3.assert, + rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; + var _require4 = __w_pdfjs_require__(3), + DequeueValue = _require4.DequeueValue, + EnqueueValueWithSize = _require4.EnqueueValueWithSize, + ResetQueue = _require4.ResetQueue; + var _require5 = __w_pdfjs_require__(2), + AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, + IsWritableStream = _require5.IsWritableStream, + IsWritableStreamLocked = _require5.IsWritableStreamLocked, + WritableStreamAbort = _require5.WritableStreamAbort, + WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, + WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, + WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, + WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; + var ReadableStream = function () { + function ReadableStream() { + var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + size = _ref.size, + highWaterMark = _ref.highWaterMark; + _classCallCheck(this, ReadableStream); + this._state = 'readable'; + this._reader = undefined; + this._storedError = undefined; + this._disturbed = false; + this._readableStreamController = undefined; + var type = underlyingSource.type; + var typeString = String(type); + if (typeString === 'bytes') { + if (highWaterMark === undefined) { + highWaterMark = 0; + } + this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); + } else if (type === undefined) { + if (highWaterMark === undefined) { + highWaterMark = 1; + } + this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); + } else { + throw new RangeError('Invalid type is specified'); + } + } + _createClass(ReadableStream, [{ + key: 'cancel', + value: function cancel(reason) { + if (IsReadableStream(this) === false) { + return Promise.reject(streamBrandCheckException('cancel')); + } + if (IsReadableStreamLocked(this) === true) { + return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); + } + return ReadableStreamCancel(this, reason); + } + }, { + key: 'getReader', + value: function getReader() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + mode = _ref2.mode; + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('getReader'); + } + if (mode === undefined) { + return AcquireReadableStreamDefaultReader(this); + } + mode = String(mode); + if (mode === 'byob') { + return AcquireReadableStreamBYOBReader(this); + } + throw new RangeError('Invalid mode is specified'); + } + }, { + key: 'pipeThrough', + value: function pipeThrough(_ref3, options) { + var writable = _ref3.writable, + readable = _ref3.readable; + var promise = this.pipeTo(writable, options); + ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); + return readable; + } + }, { + key: 'pipeTo', + value: function pipeTo(dest) { + var _this = this; + var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + preventClose = _ref4.preventClose, + preventAbort = _ref4.preventAbort, + preventCancel = _ref4.preventCancel; + if (IsReadableStream(this) === false) { + return Promise.reject(streamBrandCheckException('pipeTo')); + } + if (IsWritableStream(dest) === false) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); + } + preventClose = Boolean(preventClose); + preventAbort = Boolean(preventAbort); + preventCancel = Boolean(preventCancel); + if (IsReadableStreamLocked(this) === true) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); + } + if (IsWritableStreamLocked(dest) === true) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); + } + var reader = AcquireReadableStreamDefaultReader(this); + var writer = AcquireWritableStreamDefaultWriter(dest); + var shuttingDown = false; + var currentWrite = Promise.resolve(); + return new Promise(function (resolve, reject) { + function pipeLoop() { + currentWrite = Promise.resolve(); + if (shuttingDown === true) { + return Promise.resolve(); + } + return writer._readyPromise.then(function () { + return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { + var value = _ref5.value, + done = _ref5.done; + if (done === true) { + return; + } + currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {}); + }); + }).then(pipeLoop); + } + isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { + if (preventAbort === false) { + shutdownWithAction(function () { + return WritableStreamAbort(dest, storedError); + }, true, storedError); + } else { + shutdown(true, storedError); + } + }); + isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { + if (preventCancel === false) { + shutdownWithAction(function () { + return ReadableStreamCancel(_this, storedError); + }, true, storedError); + } else { + shutdown(true, storedError); + } + }); + isOrBecomesClosed(_this, reader._closedPromise, function () { + if (preventClose === false) { + shutdownWithAction(function () { + return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); + }); + } else { + shutdown(); + } + }); + if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { + var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); + if (preventCancel === false) { + shutdownWithAction(function () { + return ReadableStreamCancel(_this, destClosed); + }, true, destClosed); + } else { + shutdown(true, destClosed); + } + } + pipeLoop().catch(function (err) { + currentWrite = Promise.resolve(); + rethrowAssertionErrorRejection(err); + }); + function waitForWritesToFinish() { + var oldCurrentWrite = currentWrite; + return currentWrite.then(function () { + return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; + }); + } + function isOrBecomesErrored(stream, promise, action) { + if (stream._state === 'errored') { + action(stream._storedError); + } else { + promise.catch(action).catch(rethrowAssertionErrorRejection); + } + } + function isOrBecomesClosed(stream, promise, action) { + if (stream._state === 'closed') { + action(); + } else { + promise.then(action).catch(rethrowAssertionErrorRejection); + } + } + function shutdownWithAction(action, originalIsError, originalError) { + if (shuttingDown === true) { + return; + } + shuttingDown = true; + if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { + waitForWritesToFinish().then(doTheRest); + } else { + doTheRest(); + } + function doTheRest() { + action().then(function () { + return finalize(originalIsError, originalError); + }, function (newError) { + return finalize(true, newError); + }).catch(rethrowAssertionErrorRejection); + } + } + function shutdown(isError, error) { + if (shuttingDown === true) { + return; + } + shuttingDown = true; + if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { + waitForWritesToFinish().then(function () { + return finalize(isError, error); + }).catch(rethrowAssertionErrorRejection); + } else { + finalize(isError, error); + } + } + function finalize(isError, error) { + WritableStreamDefaultWriterRelease(writer); + ReadableStreamReaderGenericRelease(reader); + if (isError) { + reject(error); + } else { + resolve(undefined); + } + } + }); + } + }, { + key: 'tee', + value: function tee() { + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('tee'); + } + var branches = ReadableStreamTee(this, false); + return createArrayFromList(branches); + } + }, { + key: 'locked', + get: function get() { + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('locked'); + } + return IsReadableStreamLocked(this); + } + }]); + return ReadableStream; + }(); + module.exports = { + ReadableStream: ReadableStream, + IsReadableStreamDisturbed: IsReadableStreamDisturbed, + ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, + ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, + ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, + ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize + }; + function AcquireReadableStreamBYOBReader(stream) { + return new ReadableStreamBYOBReader(stream); + } + function AcquireReadableStreamDefaultReader(stream) { + return new ReadableStreamDefaultReader(stream); + } + function IsReadableStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { + return false; + } + return true; + } + function IsReadableStreamDisturbed(stream) { + assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); + return stream._disturbed; + } + function IsReadableStreamLocked(stream) { + assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); + if (stream._reader === undefined) { + return false; + } + return true; + } + function ReadableStreamTee(stream, cloneForBranch2) { + assert(IsReadableStream(stream) === true); + assert(typeof cloneForBranch2 === 'boolean'); + var reader = AcquireReadableStreamDefaultReader(stream); + var teeState = { + closedOrErrored: false, + canceled1: false, + canceled2: false, + reason1: undefined, + reason2: undefined + }; + teeState.promise = new Promise(function (resolve) { + teeState._resolve = resolve; + }); + var pull = create_ReadableStreamTeePullFunction(); + pull._reader = reader; + pull._teeState = teeState; + pull._cloneForBranch2 = cloneForBranch2; + var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); + cancel1._stream = stream; + cancel1._teeState = teeState; + var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); + cancel2._stream = stream; + cancel2._teeState = teeState; + var underlyingSource1 = Object.create(Object.prototype); + createDataProperty(underlyingSource1, 'pull', pull); + createDataProperty(underlyingSource1, 'cancel', cancel1); + var branch1Stream = new ReadableStream(underlyingSource1); + var underlyingSource2 = Object.create(Object.prototype); + createDataProperty(underlyingSource2, 'pull', pull); + createDataProperty(underlyingSource2, 'cancel', cancel2); + var branch2Stream = new ReadableStream(underlyingSource2); + pull._branch1 = branch1Stream._readableStreamController; + pull._branch2 = branch2Stream._readableStreamController; + reader._closedPromise.catch(function (r) { + if (teeState.closedOrErrored === true) { + return; + } + ReadableStreamDefaultControllerError(pull._branch1, r); + ReadableStreamDefaultControllerError(pull._branch2, r); + teeState.closedOrErrored = true; + }); + return [branch1Stream, branch2Stream]; + } + function create_ReadableStreamTeePullFunction() { + function f() { + var reader = f._reader, + branch1 = f._branch1, + branch2 = f._branch2, + teeState = f._teeState; + return ReadableStreamDefaultReaderRead(reader).then(function (result) { + assert(typeIsObject(result)); + var value = result.value; + var done = result.done; + assert(typeof done === 'boolean'); + if (done === true && teeState.closedOrErrored === false) { + if (teeState.canceled1 === false) { + ReadableStreamDefaultControllerClose(branch1); + } + if (teeState.canceled2 === false) { + ReadableStreamDefaultControllerClose(branch2); + } + teeState.closedOrErrored = true; + } + if (teeState.closedOrErrored === true) { + return; + } + var value1 = value; + var value2 = value; + if (teeState.canceled1 === false) { + ReadableStreamDefaultControllerEnqueue(branch1, value1); + } + if (teeState.canceled2 === false) { + ReadableStreamDefaultControllerEnqueue(branch2, value2); + } + }); + } + return f; + } + function create_ReadableStreamTeeBranch1CancelFunction() { + function f(reason) { + var stream = f._stream, + teeState = f._teeState; + teeState.canceled1 = true; + teeState.reason1 = reason; + if (teeState.canceled2 === true) { + var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); + var cancelResult = ReadableStreamCancel(stream, compositeReason); + teeState._resolve(cancelResult); + } + return teeState.promise; + } + return f; + } + function create_ReadableStreamTeeBranch2CancelFunction() { + function f(reason) { + var stream = f._stream, + teeState = f._teeState; + teeState.canceled2 = true; + teeState.reason2 = reason; + if (teeState.canceled1 === true) { + var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); + var cancelResult = ReadableStreamCancel(stream, compositeReason); + teeState._resolve(cancelResult); + } + return teeState.promise; + } + return f; + } + function ReadableStreamAddReadIntoRequest(stream) { + assert(IsReadableStreamBYOBReader(stream._reader) === true); + assert(stream._state === 'readable' || stream._state === 'closed'); + var promise = new Promise(function (resolve, reject) { + var readIntoRequest = { + _resolve: resolve, + _reject: reject + }; + stream._reader._readIntoRequests.push(readIntoRequest); + }); + return promise; + } + function ReadableStreamAddReadRequest(stream) { + assert(IsReadableStreamDefaultReader(stream._reader) === true); + assert(stream._state === 'readable'); + var promise = new Promise(function (resolve, reject) { + var readRequest = { + _resolve: resolve, + _reject: reject + }; + stream._reader._readRequests.push(readRequest); + }); + return promise; + } + function ReadableStreamCancel(stream, reason) { + stream._disturbed = true; + if (stream._state === 'closed') { + return Promise.resolve(undefined); + } + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + ReadableStreamClose(stream); + var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); + return sourceCancelPromise.then(function () { + return undefined; + }); + } + function ReadableStreamClose(stream) { + assert(stream._state === 'readable'); + stream._state = 'closed'; + var reader = stream._reader; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + for (var i = 0; i < reader._readRequests.length; i++) { + var _resolve = reader._readRequests[i]._resolve; + _resolve(CreateIterResultObject(undefined, true)); + } + reader._readRequests = []; + } + defaultReaderClosedPromiseResolve(reader); + return undefined; + } + function ReadableStreamError(stream, e) { + assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); + assert(stream._state === 'readable', 'state must be readable'); + stream._state = 'errored'; + stream._storedError = e; + var reader = stream._reader; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + for (var i = 0; i < reader._readRequests.length; i++) { + var readRequest = reader._readRequests[i]; + readRequest._reject(e); + } + reader._readRequests = []; + } else { + assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); + for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { + var readIntoRequest = reader._readIntoRequests[_i]; + readIntoRequest._reject(e); + } + reader._readIntoRequests = []; + } + defaultReaderClosedPromiseReject(reader, e); + reader._closedPromise.catch(function () {}); + } + function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { + var reader = stream._reader; + assert(reader._readIntoRequests.length > 0); + var readIntoRequest = reader._readIntoRequests.shift(); + readIntoRequest._resolve(CreateIterResultObject(chunk, done)); + } + function ReadableStreamFulfillReadRequest(stream, chunk, done) { + var reader = stream._reader; + assert(reader._readRequests.length > 0); + var readRequest = reader._readRequests.shift(); + readRequest._resolve(CreateIterResultObject(chunk, done)); + } + function ReadableStreamGetNumReadIntoRequests(stream) { + return stream._reader._readIntoRequests.length; + } + function ReadableStreamGetNumReadRequests(stream) { + return stream._reader._readRequests.length; + } + function ReadableStreamHasBYOBReader(stream) { + var reader = stream._reader; + if (reader === undefined) { + return false; + } + if (IsReadableStreamBYOBReader(reader) === false) { + return false; + } + return true; + } + function ReadableStreamHasDefaultReader(stream) { + var reader = stream._reader; + if (reader === undefined) { + return false; + } + if (IsReadableStreamDefaultReader(reader) === false) { + return false; + } + return true; + } + var ReadableStreamDefaultReader = function () { + function ReadableStreamDefaultReader(stream) { + _classCallCheck(this, ReadableStreamDefaultReader); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); + } + if (IsReadableStreamLocked(stream) === true) { + throw new TypeError('This stream has already been locked for exclusive reading by another reader'); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readRequests = []; + } + _createClass(ReadableStreamDefaultReader, [{ + key: 'cancel', + value: function cancel(reason) { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('cancel')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('cancel')); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + }, { + key: 'read', + value: function read() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('read')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('read from')); + } + return ReadableStreamDefaultReaderRead(this); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (IsReadableStreamDefaultReader(this) === false) { + throw defaultReaderBrandCheckException('releaseLock'); + } + if (this._ownerReadableStream === undefined) { + return; + } + if (this._readRequests.length > 0) { + throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); + } + ReadableStreamReaderGenericRelease(this); + } + }, { + key: 'closed', + get: function get() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('closed')); + } + return this._closedPromise; + } + }]); + return ReadableStreamDefaultReader; + }(); + var ReadableStreamBYOBReader = function () { + function ReadableStreamBYOBReader(stream) { + _classCallCheck(this, ReadableStreamBYOBReader); + if (!IsReadableStream(stream)) { + throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); + } + if (IsReadableByteStreamController(stream._readableStreamController) === false) { + throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); + } + if (IsReadableStreamLocked(stream)) { + throw new TypeError('This stream has already been locked for exclusive reading by another reader'); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readIntoRequests = []; + } + _createClass(ReadableStreamBYOBReader, [{ + key: 'cancel', + value: function cancel(reason) { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('cancel')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('cancel')); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + }, { + key: 'read', + value: function read(view) { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('read')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('read from')); + } + if (!ArrayBuffer.isView(view)) { + return Promise.reject(new TypeError('view must be an array buffer view')); + } + if (view.byteLength === 0) { + return Promise.reject(new TypeError('view must have non-zero byteLength')); + } + return ReadableStreamBYOBReaderRead(this, view); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (!IsReadableStreamBYOBReader(this)) { + throw byobReaderBrandCheckException('releaseLock'); + } + if (this._ownerReadableStream === undefined) { + return; + } + if (this._readIntoRequests.length > 0) { + throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); + } + ReadableStreamReaderGenericRelease(this); + } + }, { + key: 'closed', + get: function get() { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('closed')); + } + return this._closedPromise; + } + }]); + return ReadableStreamBYOBReader; + }(); + function IsReadableStreamBYOBReader(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { + return false; + } + return true; + } + function IsReadableStreamDefaultReader(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { + return false; + } + return true; + } + function ReadableStreamReaderGenericInitialize(reader, stream) { + reader._ownerReadableStream = stream; + stream._reader = reader; + if (stream._state === 'readable') { + defaultReaderClosedPromiseInitialize(reader); + } else if (stream._state === 'closed') { + defaultReaderClosedPromiseInitializeAsResolved(reader); + } else { + assert(stream._state === 'errored', 'state must be errored'); + defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); + reader._closedPromise.catch(function () {}); + } + } + function ReadableStreamReaderGenericCancel(reader, reason) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + return ReadableStreamCancel(stream, reason); + } + function ReadableStreamReaderGenericRelease(reader) { + assert(reader._ownerReadableStream !== undefined); + assert(reader._ownerReadableStream._reader === reader); + if (reader._ownerReadableStream._state === 'readable') { + defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); + } else { + defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); + } + reader._closedPromise.catch(function () {}); + reader._ownerReadableStream._reader = undefined; + reader._ownerReadableStream = undefined; + } + function ReadableStreamBYOBReaderRead(reader, view) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + stream._disturbed = true; + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); + } + function ReadableStreamDefaultReaderRead(reader) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + stream._disturbed = true; + if (stream._state === 'closed') { + return Promise.resolve(CreateIterResultObject(undefined, true)); + } + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + assert(stream._state === 'readable'); + return stream._readableStreamController.__pullSteps(); + } + var ReadableStreamDefaultController = function () { + function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { + _classCallCheck(this, ReadableStreamDefaultController); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); + } + if (stream._readableStreamController !== undefined) { + throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); + } + this._controlledReadableStream = stream; + this._underlyingSource = underlyingSource; + this._queue = undefined; + this._queueTotalSize = undefined; + ResetQueue(this); + this._started = false; + this._closeRequested = false; + this._pullAgain = false; + this._pulling = false; + var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this._strategySize = normalizedStrategy.size; + this._strategyHWM = normalizedStrategy.highWaterMark; + var controller = this; + var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); + Promise.resolve(startResult).then(function () { + controller._started = true; + assert(controller._pulling === false); + assert(controller._pullAgain === false); + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + }, function (r) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, r); + }).catch(rethrowAssertionErrorRejection); + } + _createClass(ReadableStreamDefaultController, [{ + key: 'close', + value: function close() { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('close'); + } + if (this._closeRequested === true) { + throw new TypeError('The stream has already been closed; do not close it again!'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); + } + ReadableStreamDefaultControllerClose(this); + } + }, { + key: 'enqueue', + value: function enqueue(chunk) { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('enqueue'); + } + if (this._closeRequested === true) { + throw new TypeError('stream is closed or draining'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); + } + return ReadableStreamDefaultControllerEnqueue(this, chunk); + } + }, { + key: 'error', + value: function error(e) { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('error'); + } + var stream = this._controlledReadableStream; + if (stream._state !== 'readable') { + throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); + } + ReadableStreamDefaultControllerError(this, e); + } + }, { + key: '__cancelSteps', + value: function __cancelSteps(reason) { + ResetQueue(this); + return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); + } + }, { + key: '__pullSteps', + value: function __pullSteps() { + var stream = this._controlledReadableStream; + if (this._queue.length > 0) { + var chunk = DequeueValue(this); + if (this._closeRequested === true && this._queue.length === 0) { + ReadableStreamClose(stream); + } else { + ReadableStreamDefaultControllerCallPullIfNeeded(this); + } + return Promise.resolve(CreateIterResultObject(chunk, false)); + } + var pendingPromise = ReadableStreamAddReadRequest(stream); + ReadableStreamDefaultControllerCallPullIfNeeded(this); + return pendingPromise; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('desiredSize'); + } + return ReadableStreamDefaultControllerGetDesiredSize(this); + } + }]); + return ReadableStreamDefaultController; + }(); + function IsReadableStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { + return false; + } + return true; + } + function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { + var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); + if (shouldPull === false) { + return undefined; + } + if (controller._pulling === true) { + controller._pullAgain = true; + return undefined; + } + assert(controller._pullAgain === false); + controller._pulling = true; + var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); + pullPromise.then(function () { + controller._pulling = false; + if (controller._pullAgain === true) { + controller._pullAgain = false; + return ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + return undefined; + }, function (e) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, e); + }).catch(rethrowAssertionErrorRejection); + return undefined; + } + function ReadableStreamDefaultControllerShouldCallPull(controller) { + var stream = controller._controlledReadableStream; + if (stream._state === 'closed' || stream._state === 'errored') { + return false; + } + if (controller._closeRequested === true) { + return false; + } + if (controller._started === false) { + return false; + } + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + if (desiredSize > 0) { + return true; + } + return false; + } + function ReadableStreamDefaultControllerClose(controller) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + controller._closeRequested = true; + if (controller._queue.length === 0) { + ReadableStreamClose(stream); + } + } + function ReadableStreamDefaultControllerEnqueue(controller, chunk) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + ReadableStreamFulfillReadRequest(stream, chunk, false); + } else { + var chunkSize = 1; + if (controller._strategySize !== undefined) { + var strategySize = controller._strategySize; + try { + chunkSize = strategySize(chunk); + } catch (chunkSizeE) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); + throw chunkSizeE; + } + } + try { + EnqueueValueWithSize(controller, chunk, chunkSize); + } catch (enqueueE) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); + throw enqueueE; + } + } + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + return undefined; + } + function ReadableStreamDefaultControllerError(controller, e) { + var stream = controller._controlledReadableStream; + assert(stream._state === 'readable'); + ResetQueue(controller); + ReadableStreamError(stream, e); + } + function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { + if (controller._controlledReadableStream._state === 'readable') { + ReadableStreamDefaultControllerError(controller, e); + } + } + function ReadableStreamDefaultControllerGetDesiredSize(controller) { + var stream = controller._controlledReadableStream; + var state = stream._state; + if (state === 'errored') { + return null; + } + if (state === 'closed') { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; + } + var ReadableStreamBYOBRequest = function () { + function ReadableStreamBYOBRequest(controller, view) { + _classCallCheck(this, ReadableStreamBYOBRequest); + this._associatedReadableByteStreamController = controller; + this._view = view; + } + _createClass(ReadableStreamBYOBRequest, [{ + key: 'respond', + value: function respond(bytesWritten) { + if (IsReadableStreamBYOBRequest(this) === false) { + throw byobRequestBrandCheckException('respond'); + } + if (this._associatedReadableByteStreamController === undefined) { + throw new TypeError('This BYOB request has been invalidated'); + } + ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); + } + }, { + key: 'respondWithNewView', + value: function respondWithNewView(view) { + if (IsReadableStreamBYOBRequest(this) === false) { + throw byobRequestBrandCheckException('respond'); + } + if (this._associatedReadableByteStreamController === undefined) { + throw new TypeError('This BYOB request has been invalidated'); + } + if (!ArrayBuffer.isView(view)) { + throw new TypeError('You can only respond with array buffer views'); + } + ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); + } + }, { + key: 'view', + get: function get() { + return this._view; + } + }]); + return ReadableStreamBYOBRequest; + }(); + var ReadableByteStreamController = function () { + function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { + _classCallCheck(this, ReadableByteStreamController); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); + } + if (stream._readableStreamController !== undefined) { + throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); + } + this._controlledReadableStream = stream; + this._underlyingByteSource = underlyingByteSource; + this._pullAgain = false; + this._pulling = false; + ReadableByteStreamControllerClearPendingPullIntos(this); + this._queue = this._queueTotalSize = undefined; + ResetQueue(this); + this._closeRequested = false; + this._started = false; + this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); + var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; + if (autoAllocateChunkSize !== undefined) { + if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { + throw new RangeError('autoAllocateChunkSize must be a positive integer'); + } + } + this._autoAllocateChunkSize = autoAllocateChunkSize; + this._pendingPullIntos = []; + var controller = this; + var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); + Promise.resolve(startResult).then(function () { + controller._started = true; + assert(controller._pulling === false); + assert(controller._pullAgain === false); + ReadableByteStreamControllerCallPullIfNeeded(controller); + }, function (r) { + if (stream._state === 'readable') { + ReadableByteStreamControllerError(controller, r); + } + }).catch(rethrowAssertionErrorRejection); + } + _createClass(ReadableByteStreamController, [{ + key: 'close', + value: function close() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('close'); + } + if (this._closeRequested === true) { + throw new TypeError('The stream has already been closed; do not close it again!'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); + } + ReadableByteStreamControllerClose(this); + } + }, { + key: 'enqueue', + value: function enqueue(chunk) { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('enqueue'); + } + if (this._closeRequested === true) { + throw new TypeError('stream is closed or draining'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); + } + if (!ArrayBuffer.isView(chunk)) { + throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); + } + ReadableByteStreamControllerEnqueue(this, chunk); + } + }, { + key: 'error', + value: function error(e) { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('error'); + } + var stream = this._controlledReadableStream; + if (stream._state !== 'readable') { + throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); + } + ReadableByteStreamControllerError(this, e); + } + }, { + key: '__cancelSteps', + value: function __cancelSteps(reason) { + if (this._pendingPullIntos.length > 0) { + var firstDescriptor = this._pendingPullIntos[0]; + firstDescriptor.bytesFilled = 0; + } + ResetQueue(this); + return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); + } + }, { + key: '__pullSteps', + value: function __pullSteps() { + var stream = this._controlledReadableStream; + assert(ReadableStreamHasDefaultReader(stream) === true); + if (this._queueTotalSize > 0) { + assert(ReadableStreamGetNumReadRequests(stream) === 0); + var entry = this._queue.shift(); + this._queueTotalSize -= entry.byteLength; + ReadableByteStreamControllerHandleQueueDrain(this); + var view = void 0; + try { + view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); + } catch (viewE) { + return Promise.reject(viewE); + } + return Promise.resolve(CreateIterResultObject(view, false)); + } + var autoAllocateChunkSize = this._autoAllocateChunkSize; + if (autoAllocateChunkSize !== undefined) { + var buffer = void 0; + try { + buffer = new ArrayBuffer(autoAllocateChunkSize); + } catch (bufferE) { + return Promise.reject(bufferE); + } + var pullIntoDescriptor = { + buffer: buffer, + byteOffset: 0, + byteLength: autoAllocateChunkSize, + bytesFilled: 0, + elementSize: 1, + ctor: Uint8Array, + readerType: 'default' + }; + this._pendingPullIntos.push(pullIntoDescriptor); + } + var promise = ReadableStreamAddReadRequest(stream); + ReadableByteStreamControllerCallPullIfNeeded(this); + return promise; + } + }, { + key: 'byobRequest', + get: function get() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('byobRequest'); + } + if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { + var firstDescriptor = this._pendingPullIntos[0]; + var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); + this._byobRequest = new ReadableStreamBYOBRequest(this, view); + } + return this._byobRequest; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('desiredSize'); + } + return ReadableByteStreamControllerGetDesiredSize(this); + } + }]); + return ReadableByteStreamController; + }(); + function IsReadableByteStreamController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { + return false; + } + return true; + } + function IsReadableStreamBYOBRequest(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { + return false; + } + return true; + } + function ReadableByteStreamControllerCallPullIfNeeded(controller) { + var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); + if (shouldPull === false) { + return undefined; + } + if (controller._pulling === true) { + controller._pullAgain = true; + return undefined; + } + assert(controller._pullAgain === false); + controller._pulling = true; + var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); + pullPromise.then(function () { + controller._pulling = false; + if (controller._pullAgain === true) { + controller._pullAgain = false; + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + }, function (e) { + if (controller._controlledReadableStream._state === 'readable') { + ReadableByteStreamControllerError(controller, e); + } + }).catch(rethrowAssertionErrorRejection); + return undefined; + } + function ReadableByteStreamControllerClearPendingPullIntos(controller) { + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + controller._pendingPullIntos = []; + } + function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { + assert(stream._state !== 'errored', 'state must not be errored'); + var done = false; + if (stream._state === 'closed') { + assert(pullIntoDescriptor.bytesFilled === 0); + done = true; + } + var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + if (pullIntoDescriptor.readerType === 'default') { + ReadableStreamFulfillReadRequest(stream, filledView, done); + } else { + assert(pullIntoDescriptor.readerType === 'byob'); + ReadableStreamFulfillReadIntoRequest(stream, filledView, done); + } + } + function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { + var bytesFilled = pullIntoDescriptor.bytesFilled; + var elementSize = pullIntoDescriptor.elementSize; + assert(bytesFilled <= pullIntoDescriptor.byteLength); + assert(bytesFilled % elementSize === 0); + return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); + } + function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { + controller._queue.push({ + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength + }); + controller._queueTotalSize += byteLength; + } + function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { + var elementSize = pullIntoDescriptor.elementSize; + var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; + var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); + var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; + var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; + var totalBytesToCopyRemaining = maxBytesToCopy; + var ready = false; + if (maxAlignedBytes > currentAlignedBytes) { + totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; + ready = true; + } + var queue = controller._queue; + while (totalBytesToCopyRemaining > 0) { + var headOfQueue = queue[0]; + var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); + var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); + if (headOfQueue.byteLength === bytesToCopy) { + queue.shift(); + } else { + headOfQueue.byteOffset += bytesToCopy; + headOfQueue.byteLength -= bytesToCopy; + } + controller._queueTotalSize -= bytesToCopy; + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); + totalBytesToCopyRemaining -= bytesToCopy; + } + if (ready === false) { + assert(controller._queueTotalSize === 0, 'queue must be empty'); + assert(pullIntoDescriptor.bytesFilled > 0); + assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); + } + return ready; + } + function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { + assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + pullIntoDescriptor.bytesFilled += size; + } + function ReadableByteStreamControllerHandleQueueDrain(controller) { + assert(controller._controlledReadableStream._state === 'readable'); + if (controller._queueTotalSize === 0 && controller._closeRequested === true) { + ReadableStreamClose(controller._controlledReadableStream); + } else { + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + } + function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { + if (controller._byobRequest === undefined) { + return; + } + controller._byobRequest._associatedReadableByteStreamController = undefined; + controller._byobRequest._view = undefined; + controller._byobRequest = undefined; + } + function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { + assert(controller._closeRequested === false); + while (controller._pendingPullIntos.length > 0) { + if (controller._queueTotalSize === 0) { + return; + } + var pullIntoDescriptor = controller._pendingPullIntos[0]; + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { + ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); + } + } + } + function ReadableByteStreamControllerPullInto(controller, view) { + var stream = controller._controlledReadableStream; + var elementSize = 1; + if (view.constructor !== DataView) { + elementSize = view.constructor.BYTES_PER_ELEMENT; + } + var ctor = view.constructor; + var pullIntoDescriptor = { + buffer: view.buffer, + byteOffset: view.byteOffset, + byteLength: view.byteLength, + bytesFilled: 0, + elementSize: elementSize, + ctor: ctor, + readerType: 'byob' + }; + if (controller._pendingPullIntos.length > 0) { + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + controller._pendingPullIntos.push(pullIntoDescriptor); + return ReadableStreamAddReadIntoRequest(stream); + } + if (stream._state === 'closed') { + var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); + return Promise.resolve(CreateIterResultObject(emptyView, true)); + } + if (controller._queueTotalSize > 0) { + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { + var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + ReadableByteStreamControllerHandleQueueDrain(controller); + return Promise.resolve(CreateIterResultObject(filledView, false)); + } + if (controller._closeRequested === true) { + var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); + ReadableByteStreamControllerError(controller, e); + return Promise.reject(e); + } + } + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + controller._pendingPullIntos.push(pullIntoDescriptor); + var promise = ReadableStreamAddReadIntoRequest(stream); + ReadableByteStreamControllerCallPullIfNeeded(controller); + return promise; + } + function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { + firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); + assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); + var stream = controller._controlledReadableStream; + if (ReadableStreamHasBYOBReader(stream) === true) { + while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { + var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); + } + } + } + function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { + if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { + throw new RangeError('bytesWritten out of range'); + } + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); + if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { + return; + } + ReadableByteStreamControllerShiftPendingPullInto(controller); + var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; + if (remainderSize > 0) { + var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); + ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); + } + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + pullIntoDescriptor.bytesFilled -= remainderSize; + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } + function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { + var firstDescriptor = controller._pendingPullIntos[0]; + var stream = controller._controlledReadableStream; + if (stream._state === 'closed') { + if (bytesWritten !== 0) { + throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); + } + ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); + } else { + assert(stream._state === 'readable'); + ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); + } + } + function ReadableByteStreamControllerShiftPendingPullInto(controller) { + var descriptor = controller._pendingPullIntos.shift(); + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + return descriptor; + } + function ReadableByteStreamControllerShouldCallPull(controller) { + var stream = controller._controlledReadableStream; + if (stream._state !== 'readable') { + return false; + } + if (controller._closeRequested === true) { + return false; + } + if (controller._started === false) { + return false; + } + if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { + return true; + } + if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { + return true; + } + return false; + } + function ReadableByteStreamControllerClose(controller) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + if (controller._queueTotalSize > 0) { + controller._closeRequested = true; + return; + } + if (controller._pendingPullIntos.length > 0) { + var firstPendingPullInto = controller._pendingPullIntos[0]; + if (firstPendingPullInto.bytesFilled > 0) { + var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); + ReadableByteStreamControllerError(controller, e); + throw e; + } + } + ReadableStreamClose(stream); + } + function ReadableByteStreamControllerEnqueue(controller, chunk) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + var buffer = chunk.buffer; + var byteOffset = chunk.byteOffset; + var byteLength = chunk.byteLength; + var transferredBuffer = TransferArrayBuffer(buffer); + if (ReadableStreamHasDefaultReader(stream) === true) { + if (ReadableStreamGetNumReadRequests(stream) === 0) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } else { + assert(controller._queue.length === 0); + var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); + ReadableStreamFulfillReadRequest(stream, transferredView, false); + } + } else if (ReadableStreamHasBYOBReader(stream) === true) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } else { + assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } + } + function ReadableByteStreamControllerError(controller, e) { + var stream = controller._controlledReadableStream; + assert(stream._state === 'readable'); + ReadableByteStreamControllerClearPendingPullIntos(controller); + ResetQueue(controller); + ReadableStreamError(stream, e); + } + function ReadableByteStreamControllerGetDesiredSize(controller) { + var stream = controller._controlledReadableStream; + var state = stream._state; + if (state === 'errored') { + return null; + } + if (state === 'closed') { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; + } + function ReadableByteStreamControllerRespond(controller, bytesWritten) { + bytesWritten = Number(bytesWritten); + if (IsFiniteNonNegativeNumber(bytesWritten) === false) { + throw new RangeError('bytesWritten must be a finite'); + } + assert(controller._pendingPullIntos.length > 0); + ReadableByteStreamControllerRespondInternal(controller, bytesWritten); + } + function ReadableByteStreamControllerRespondWithNewView(controller, view) { + assert(controller._pendingPullIntos.length > 0); + var firstDescriptor = controller._pendingPullIntos[0]; + if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { + throw new RangeError('The region specified by view does not match byobRequest'); + } + if (firstDescriptor.byteLength !== view.byteLength) { + throw new RangeError('The buffer of view has different capacity than byobRequest'); + } + firstDescriptor.buffer = view.buffer; + ReadableByteStreamControllerRespondInternal(controller, view.byteLength); + } + function streamBrandCheckException(name) { + return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); + } + function readerLockException(name) { + return new TypeError('Cannot ' + name + ' a stream using a released reader'); + } + function defaultReaderBrandCheckException(name) { + return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); + } + function defaultReaderClosedPromiseInitialize(reader) { + reader._closedPromise = new Promise(function (resolve, reject) { + reader._closedPromise_resolve = resolve; + reader._closedPromise_reject = reject; + }); + } + function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { + reader._closedPromise = Promise.reject(reason); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseInitializeAsResolved(reader) { + reader._closedPromise = Promise.resolve(undefined); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseReject(reader, reason) { + assert(reader._closedPromise_resolve !== undefined); + assert(reader._closedPromise_reject !== undefined); + reader._closedPromise_reject(reason); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseResetToRejected(reader, reason) { + assert(reader._closedPromise_resolve === undefined); + assert(reader._closedPromise_reject === undefined); + reader._closedPromise = Promise.reject(reason); + } + function defaultReaderClosedPromiseResolve(reader) { + assert(reader._closedPromise_resolve !== undefined); + assert(reader._closedPromise_reject !== undefined); + reader._closedPromise_resolve(undefined); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function byobReaderBrandCheckException(name) { + return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); + } + function defaultControllerBrandCheckException(name) { + return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); + } + function byobRequestBrandCheckException(name) { + return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); + } + function byteStreamControllerBrandCheckException(name) { + return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); + } + function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { + try { + Promise.prototype.then.call(promise, undefined, function () {}); + } catch (e) {} + } +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var transformStream = __w_pdfjs_require__(6); + var readableStream = __w_pdfjs_require__(4); + var writableStream = __w_pdfjs_require__(2); + exports.TransformStream = transformStream.TransformStream; + exports.ReadableStream = readableStream.ReadableStream; + exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; + exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; + exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; + exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; + exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; + exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; + exports.IsWritableStream = writableStream.IsWritableStream; + exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; + exports.WritableStream = writableStream.WritableStream; + exports.WritableStreamAbort = writableStream.WritableStreamAbort; + exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; + exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; + exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; + exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(1), + assert = _require.assert; + var _require2 = __w_pdfjs_require__(0), + InvokeOrNoop = _require2.InvokeOrNoop, + PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, + PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, + typeIsObject = _require2.typeIsObject; + var _require3 = __w_pdfjs_require__(4), + ReadableStream = _require3.ReadableStream, + ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, + ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, + ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, + ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; + var _require4 = __w_pdfjs_require__(2), + WritableStream = _require4.WritableStream, + WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; + function TransformStreamCloseReadable(transformStream) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + if (transformStream._readableClosed === true) { + throw new TypeError('Readable side is already closed'); + } + TransformStreamCloseReadableInternal(transformStream); + } + function TransformStreamEnqueueToReadable(transformStream, chunk) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + if (transformStream._readableClosed === true) { + throw new TypeError('Readable side is already closed'); + } + var controller = transformStream._readableController; + try { + ReadableStreamDefaultControllerEnqueue(controller, chunk); + } catch (e) { + transformStream._readableClosed = true; + TransformStreamErrorIfNeeded(transformStream, e); + throw transformStream._storedError; + } + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + var maybeBackpressure = desiredSize <= 0; + if (maybeBackpressure === true && transformStream._backpressure === false) { + TransformStreamSetBackpressure(transformStream, true); + } + } + function TransformStreamError(transformStream, e) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + TransformStreamErrorInternal(transformStream, e); + } + function TransformStreamCloseReadableInternal(transformStream) { + assert(transformStream._errored === false); + assert(transformStream._readableClosed === false); + try { + ReadableStreamDefaultControllerClose(transformStream._readableController); + } catch (e) { + assert(false); + } + transformStream._readableClosed = true; + } + function TransformStreamErrorIfNeeded(transformStream, e) { + if (transformStream._errored === false) { + TransformStreamErrorInternal(transformStream, e); + } + } + function TransformStreamErrorInternal(transformStream, e) { + assert(transformStream._errored === false); + transformStream._errored = true; + transformStream._storedError = e; + if (transformStream._writableDone === false) { + WritableStreamDefaultControllerError(transformStream._writableController, e); + } + if (transformStream._readableClosed === false) { + ReadableStreamDefaultControllerError(transformStream._readableController, e); + } + } + function TransformStreamReadableReadyPromise(transformStream) { + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + if (transformStream._backpressure === false) { + return Promise.resolve(); + } + assert(transformStream._backpressure === true, '_backpressure should have been initialized'); + return transformStream._backpressureChangePromise; + } + function TransformStreamSetBackpressure(transformStream, backpressure) { + assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); + if (transformStream._backpressureChangePromise !== undefined) { + transformStream._backpressureChangePromise_resolve(backpressure); + } + transformStream._backpressureChangePromise = new Promise(function (resolve) { + transformStream._backpressureChangePromise_resolve = resolve; + }); + transformStream._backpressureChangePromise.then(function (resolution) { + assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); + }); + transformStream._backpressure = backpressure; + } + function TransformStreamDefaultTransform(chunk, transformStreamController) { + var transformStream = transformStreamController._controlledTransformStream; + TransformStreamEnqueueToReadable(transformStream, chunk); + return Promise.resolve(); + } + function TransformStreamTransform(transformStream, chunk) { + assert(transformStream._errored === false); + assert(transformStream._transforming === false); + assert(transformStream._backpressure === false); + transformStream._transforming = true; + var transformer = transformStream._transformer; + var controller = transformStream._transformStreamController; + var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); + return transformPromise.then(function () { + transformStream._transforming = false; + return TransformStreamReadableReadyPromise(transformStream); + }, function (e) { + TransformStreamErrorIfNeeded(transformStream, e); + return Promise.reject(e); + }); + } + function IsTransformStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { + return false; + } + return true; + } + function IsTransformStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { + return false; + } + return true; + } + var TransformStreamSink = function () { + function TransformStreamSink(transformStream, startPromise) { + _classCallCheck(this, TransformStreamSink); + this._transformStream = transformStream; + this._startPromise = startPromise; + } + _createClass(TransformStreamSink, [{ + key: 'start', + value: function start(c) { + var transformStream = this._transformStream; + transformStream._writableController = c; + return this._startPromise.then(function () { + return TransformStreamReadableReadyPromise(transformStream); + }); + } + }, { + key: 'write', + value: function write(chunk) { + var transformStream = this._transformStream; + return TransformStreamTransform(transformStream, chunk); + } + }, { + key: 'abort', + value: function abort() { + var transformStream = this._transformStream; + transformStream._writableDone = true; + TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); + } + }, { + key: 'close', + value: function close() { + var transformStream = this._transformStream; + assert(transformStream._transforming === false); + transformStream._writableDone = true; + var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); + return flushPromise.then(function () { + if (transformStream._errored === true) { + return Promise.reject(transformStream._storedError); + } + if (transformStream._readableClosed === false) { + TransformStreamCloseReadableInternal(transformStream); + } + return Promise.resolve(); + }).catch(function (r) { + TransformStreamErrorIfNeeded(transformStream, r); + return Promise.reject(transformStream._storedError); + }); + } + }]); + return TransformStreamSink; + }(); + var TransformStreamSource = function () { + function TransformStreamSource(transformStream, startPromise) { + _classCallCheck(this, TransformStreamSource); + this._transformStream = transformStream; + this._startPromise = startPromise; + } + _createClass(TransformStreamSource, [{ + key: 'start', + value: function start(c) { + var transformStream = this._transformStream; + transformStream._readableController = c; + return this._startPromise.then(function () { + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + if (transformStream._backpressure === true) { + return Promise.resolve(); + } + assert(transformStream._backpressure === false, '_backpressure should have been initialized'); + return transformStream._backpressureChangePromise; + }); + } + }, { + key: 'pull', + value: function pull() { + var transformStream = this._transformStream; + assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + TransformStreamSetBackpressure(transformStream, false); + return transformStream._backpressureChangePromise; + } + }, { + key: 'cancel', + value: function cancel() { + var transformStream = this._transformStream; + transformStream._readableClosed = true; + TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); + } + }]); + return TransformStreamSource; + }(); + var TransformStreamDefaultController = function () { + function TransformStreamDefaultController(transformStream) { + _classCallCheck(this, TransformStreamDefaultController); + if (IsTransformStream(transformStream) === false) { + throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); + } + if (transformStream._transformStreamController !== undefined) { + throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); + } + this._controlledTransformStream = transformStream; + } + _createClass(TransformStreamDefaultController, [{ + key: 'enqueue', + value: function enqueue(chunk) { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('enqueue'); + } + TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); + } + }, { + key: 'close', + value: function close() { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('close'); + } + TransformStreamCloseReadable(this._controlledTransformStream); + } + }, { + key: 'error', + value: function error(reason) { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('error'); + } + TransformStreamError(this._controlledTransformStream, reason); + } + }, { + key: 'desiredSize', + get: function get() { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('desiredSize'); + } + var transformStream = this._controlledTransformStream; + var readableController = transformStream._readableController; + return ReadableStreamDefaultControllerGetDesiredSize(readableController); + } + }]); + return TransformStreamDefaultController; + }(); + var TransformStream = function () { + function TransformStream() { + var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _classCallCheck(this, TransformStream); + this._transformer = transformer; + var readableStrategy = transformer.readableStrategy, + writableStrategy = transformer.writableStrategy; + this._transforming = false; + this._errored = false; + this._storedError = undefined; + this._writableController = undefined; + this._readableController = undefined; + this._transformStreamController = undefined; + this._writableDone = false; + this._readableClosed = false; + this._backpressure = undefined; + this._backpressureChangePromise = undefined; + this._backpressureChangePromise_resolve = undefined; + this._transformStreamController = new TransformStreamDefaultController(this); + var startPromise_resolve = void 0; + var startPromise = new Promise(function (resolve) { + startPromise_resolve = resolve; + }); + var source = new TransformStreamSource(this, startPromise); + this._readable = new ReadableStream(source, readableStrategy); + var sink = new TransformStreamSink(this, startPromise); + this._writable = new WritableStream(sink, writableStrategy); + assert(this._writableController !== undefined); + assert(this._readableController !== undefined); + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); + TransformStreamSetBackpressure(this, desiredSize <= 0); + var transformStream = this; + var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); + startPromise_resolve(startResult); + startPromise.catch(function (e) { + if (transformStream._errored === false) { + transformStream._errored = true; + transformStream._storedError = e; + } + }); + } + _createClass(TransformStream, [{ + key: 'readable', + get: function get() { + if (IsTransformStream(this) === false) { + throw streamBrandCheckException('readable'); + } + return this._readable; + } + }, { + key: 'writable', + get: function get() { + if (IsTransformStream(this) === false) { + throw streamBrandCheckException('writable'); + } + return this._writable; + } + }]); + return TransformStream; + }(); + module.exports = { TransformStream: TransformStream }; + function defaultControllerBrandCheckException(name) { + return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); + } + function streamBrandCheckException(name) { + return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); + } +}, function (module, exports, __w_pdfjs_require__) { + module.exports = __w_pdfjs_require__(5); +}])); + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CanvasGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var _pattern_helper = __w_pdfjs_require__(13); + +var _webgl = __w_pdfjs_require__(7); + +var MIN_FONT_SIZE = 16; +var MAX_FONT_SIZE = 100; +var MAX_GROUP_SIZE = 4096; +var MIN_WIDTH_FACTOR = 0.65; +var COMPILE_TYPE3_GLYPHS = true; +var MAX_SIZE_TO_COMPILE = 1000; +var FULL_CHUNK_HEIGHT = 16; +var IsLittleEndianCached = { + get value() { + return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); + } +}; +function addContextCurrentTransform(ctx) { + if (!ctx.mozCurrentTransform) { + 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._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0]; + ctx._transformStack = []; + Object.defineProperty(ctx, 'mozCurrentTransform', { + get: function getCurrentTransform() { + return this._transformMatrix; + } + }); + Object.defineProperty(ctx, 'mozCurrentTransformInverse', { + get: function getCurrentTransformInverse() { + var m = this._transformMatrix; + var a = m[0], + b = m[1], + c = m[2], + d = m[3], + e = m[4], + f = m[5]; + var ad_bc = a * d - b * c; + var 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() { + var old = this._transformMatrix; + this._transformStack.push(old); + this._transformMatrix = old.slice(0, 6); + this._originalSave(); + }; + ctx.restore = function ctxRestore() { + var prev = this._transformStack.pop(); + if (prev) { + this._transformMatrix = prev; + this._originalRestore(); + } + }; + ctx.translate = function ctxTranslate(x, y) { + var 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) { + var m = this._transformMatrix; + m[0] = m[0] * x; + m[1] = m[1] * x; + m[2] = m[2] * y; + m[3] = m[3] * y; + this._originalScale(x, y); + }; + ctx.transform = function ctxTransform(a, b, c, d, e, f) { + var 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.rotate = function ctxRotate(angle) { + var cosValue = Math.cos(angle); + var sinValue = Math.sin(angle); + var 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); + }; + } +} +var CachedCanvases = function CachedCanvasesClosure() { + function CachedCanvases(canvasFactory) { + this.canvasFactory = canvasFactory; + this.cache = Object.create(null); + } + CachedCanvases.prototype = { + getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) { + var 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: function clear() { + for (var id in this.cache) { + var canvasEntry = this.cache[id]; + this.canvasFactory.destroy(canvasEntry); + delete this.cache[id]; + } + } + }; + return CachedCanvases; +}(); +function compileType3Glyph(imgData) { + var POINT_TO_PROCESS_LIMIT = 1000; + var width = imgData.width, + height = imgData.height; + var i, + j, + j0, + width1 = width + 1; + var points = new Uint8Array(width1 * (height + 1)); + var POINT_TYPES = new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]); + var lineSize = width + 7 & ~7, + data0 = imgData.data; + var data = new Uint8Array(lineSize * height), + pos = 0, + ii; + for (i = 0, ii = data0.length; i < ii; i++) { + var mask = 128, + elem = data0[i]; + while (mask > 0) { + data[pos++] = elem & mask ? 0 : 255; + mask >>= 1; + } + } + var 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; + } + var 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; + } + var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]); + var outlines = []; + for (i = 0; count && i <= height; i++) { + var p = i * width1; + var end = p + width; + while (p < end && !points[p]) { + p++; + } + if (p === end) { + continue; + } + var coords = [p % width1, i]; + var type = points[p], + p0 = p, + pp; + do { + var step = steps[type]; + do { + p += step; + } while (!points[p]); + 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); + coords.push(p / width1 | 0); + --count; + } while (p0 !== p); + outlines.push(coords); + --i; + } + var drawOutline = function drawOutline(c) { + c.save(); + c.scale(1 / width, -1 / height); + c.translate(0, -height); + c.beginPath(); + for (var i = 0, ii = outlines.length; i < ii; i++) { + var o = outlines[i]; + c.moveTo(o[0], o[1]); + for (var j = 2, jj = o.length; j < jj; j += 2) { + c.lineTo(o[j], o[j + 1]); + } + } + c.fill(); + c.beginPath(); + c.restore(); + }; + return drawOutline; +} +var CanvasExtraState = function CanvasExtraStateClosure() { + function CanvasExtraState() { + 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.resumeSMaskCtx = null; + } + CanvasExtraState.prototype = { + clone: function CanvasExtraState_clone() { + return Object.create(this); + }, + setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) { + this.x = x; + this.y = y; + } + }; + return CanvasExtraState; +}(); +var CanvasGraphics = function CanvasGraphicsClosure() { + var EXECUTION_TIME = 15; + var EXECUTION_STEPS = 10; + function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, imageLayer) { + this.ctx = canvasCtx; + this.current = new CanvasExtraState(); + 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.cachedCanvases = new CachedCanvases(this.canvasFactory); + if (canvasCtx) { + addContextCurrentTransform(canvasCtx); + } + this.cachedGetSinglePixelWidth = null; + } + function putBinaryImageData(ctx, imgData) { + if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) { + ctx.putImageData(imgData, 0, 0); + return; + } + var height = imgData.height, + width = imgData.width; + var partialChunkHeight = height % FULL_CHUNK_HEIGHT; + var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + var srcPos = 0, + destPos; + var src = imgData.data; + var dest = chunkImgData.data; + var i, j, thisChunkHeight, elemsInThisChunk; + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { + var srcLength = src.byteLength; + var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); + var dest32DataLength = dest32.length; + var fullSrcDiff = width + 7 >> 3; + var white = 0xFFFFFFFF; + var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF; + for (i = 0; i < totalChunks; i++) { + thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + destPos = 0; + for (j = 0; j < thisChunkHeight; j++) { + var srcDiff = srcLength - srcPos; + var k = 0; + var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7; + var kEndUnrolled = kEnd & ~7; + var mask = 0; + var 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) { + j = 0; + elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; + for (i = 0; i < fullChunks; i++) { + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + srcPos += elemsInThisChunk; + ctx.putImageData(chunkImgData, 0, j); + j += FULL_CHUNK_HEIGHT; + } + if (i < totalChunks) { + elemsInThisChunk = width * partialChunkHeight * 4; + dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); + ctx.putImageData(chunkImgData, 0, j); + } + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { + 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; + } + ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); + } + } else { + throw new Error('bad image kind: ' + imgData.kind); + } + } + function putBinaryImageMask(ctx, imgData) { + var height = imgData.height, + width = imgData.width; + var partialChunkHeight = height % FULL_CHUNK_HEIGHT; + var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT; + var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1; + var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT); + var srcPos = 0; + var src = imgData.data; + var dest = chunkImgData.data; + for (var i = 0; i < totalChunks; i++) { + var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight; + var destPos = 3; + for (var j = 0; j < thisChunkHeight; j++) { + var mask = 0; + for (var k = 0; k < width; k++) { + if (!mask) { + var 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) { + var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha', 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit', 'globalCompositeOperation', 'font']; + for (var i = 0, ii = properties.length; i < ii; i++) { + var 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) { + var length = bytes.length; + for (var i = 3; i < length; i += 4) { + var alpha = bytes[i]; + if (alpha === 0) { + bytes[i - 3] = r0; + bytes[i - 2] = g0; + bytes[i - 1] = b0; + } else if (alpha < 255) { + var 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) { + var length = maskData.length; + var scale = 1 / 255; + for (var i = 3; i < length; i += 4) { + var alpha = transferMap ? transferMap[maskData[i]] : maskData[i]; + layerData[i] = layerData[i] * alpha * scale | 0; + } + } + function composeSMaskLuminosity(maskData, layerData, transferMap) { + var length = maskData.length; + for (var i = 3; i < length; i += 4) { + var 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) { + var hasBackdrop = !!backdrop; + var r0 = hasBackdrop ? backdrop[0] : 0; + var g0 = hasBackdrop ? backdrop[1] : 0; + var b0 = hasBackdrop ? backdrop[2] : 0; + var composeFn; + if (subtype === 'Luminosity') { + composeFn = composeSMaskLuminosity; + } else { + composeFn = composeSMaskAlpha; + } + var PIXELS_TO_PROCESS = 1048576; + var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width)); + for (var row = 0; row < height; row += chunkSize) { + var chunkHeight = Math.min(chunkSize, height - row); + var maskData = maskCtx.getImageData(0, row, width, chunkHeight); + var layerData = layerCtx.getImageData(0, row, width, chunkHeight); + if (hasBackdrop) { + composeSMaskBackdrop(maskData.data, r0, g0, b0); + } + composeFn(maskData.data, layerData.data, transferMap); + maskCtx.putImageData(layerData, 0, row); + } + } + function composeSMask(ctx, smask, layerCtx) { + var mask = smask.canvas; + var maskCtx = smask.context; + ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); + var backdrop = smask.backdrop || null; + if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { + var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { + subtype: smask.subtype, + backdrop: backdrop + }); + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.drawImage(composed, smask.offsetX, smask.offsetY); + return; + } + genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap); + ctx.drawImage(mask, 0, 0); + } + var LINE_CAP_STYLES = ['butt', 'round', 'square']; + var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; + var NORMAL_CLIP = {}; + var EO_CLIP = {}; + CanvasGraphics.prototype = { + beginDrawing: function beginDrawing(_ref) { + var transform = _ref.transform, + viewport = _ref.viewport, + transparency = _ref.transparency, + _ref$background = _ref.background, + background = _ref$background === undefined ? null : _ref$background; + + var width = this.ctx.canvas.width; + var 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) { + var 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.ctx.transform.apply(this.ctx, viewport.transform); + this.baseTransform = this.ctx.mozCurrentTransform.slice(); + if (this.imageLayer) { + this.imageLayer.beginLayout(); + } + }, + + executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) { + var argsArray = operatorList.argsArray; + var fnArray = operatorList.fnArray; + var i = executionStartIdx || 0; + var argsArrayLen = argsArray.length; + if (argsArrayLen === i) { + return i; + } + var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function'; + var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0; + var steps = 0; + var commonObjs = this.commonObjs; + var objs = this.objs; + var 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 { + var deps = argsArray[i]; + for (var n = 0, nn = deps.length; n < nn; n++) { + var depObjId = deps[n]; + var common = depObjId[0] === 'g' && depObjId[1] === '_'; + var objsPool = common ? commonObjs : objs; + if (!objsPool.isResolved(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: function CanvasGraphics_endDrawing() { + if (this.current.activeSMask !== null) { + this.endSMaskGroup(); + } + 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(); + _webgl.WebGLUtils.clear(); + if (this.imageLayer) { + this.imageLayer.endLayout(); + } + }, + setLineWidth: function CanvasGraphics_setLineWidth(width) { + this.current.lineWidth = width; + this.ctx.lineWidth = width; + }, + setLineCap: function CanvasGraphics_setLineCap(style) { + this.ctx.lineCap = LINE_CAP_STYLES[style]; + }, + setLineJoin: function CanvasGraphics_setLineJoin(style) { + this.ctx.lineJoin = LINE_JOIN_STYLES[style]; + }, + setMiterLimit: function CanvasGraphics_setMiterLimit(limit) { + this.ctx.miterLimit = limit; + }, + setDash: function CanvasGraphics_setDash(dashArray, dashPhase) { + var ctx = this.ctx; + if (ctx.setLineDash !== undefined) { + ctx.setLineDash(dashArray); + ctx.lineDashOffset = dashPhase; + } + }, + setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {}, + setFlatness: function CanvasGraphics_setFlatness(flatness) {}, + setGState: function CanvasGraphics_setGState(states) { + for (var i = 0, ii = states.length; i < ii; i++) { + var state = states[i]; + var key = state[0]; + var 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': + if (this.current.activeSMask) { + if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) { + this.suspendSMaskGroup(); + } else { + this.endSMaskGroup(); + } + } + this.current.activeSMask = value ? this.tempSMask : null; + if (this.current.activeSMask) { + this.beginSMaskGroup(); + } + this.tempSMask = null; + break; + } + } + }, + beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() { + var activeSMask = this.current.activeSMask; + var drawnWidth = activeSMask.canvas.width; + var drawnHeight = activeSMask.canvas.height; + var cacheId = 'smaskGroupAt' + this.groupLevel; + var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + var currentCtx = this.ctx; + var currentTransform = currentCtx.mozCurrentTransform; + this.ctx.save(); + var groupCtx = scratchCanvas.context; + groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY); + groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY); + groupCtx.transform.apply(groupCtx, currentTransform); + activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse; + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + }, + suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() { + var groupCtx = this.ctx; + this.groupLevel--; + this.ctx = this.groupStack.pop(); + composeSMask(this.ctx, this.current.activeSMask, groupCtx); + this.ctx.restore(); + this.ctx.save(); + copyCtxState(groupCtx, this.ctx); + this.current.resumeSMaskCtx = groupCtx; + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + this.ctx.transform.apply(this.ctx, deltaTransform); + groupCtx.save(); + groupCtx.setTransform(1, 0, 0, 1, 0, 0); + groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height); + groupCtx.restore(); + }, + resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() { + var groupCtx = this.current.resumeSMaskCtx; + var currentCtx = this.ctx; + this.ctx = groupCtx; + this.groupStack.push(currentCtx); + this.groupLevel++; + }, + endSMaskGroup: function CanvasGraphics_endSMaskGroup() { + var groupCtx = this.ctx; + this.groupLevel--; + this.ctx = this.groupStack.pop(); + composeSMask(this.ctx, this.current.activeSMask, groupCtx); + this.ctx.restore(); + copyCtxState(groupCtx, this.ctx); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + this.ctx.transform.apply(this.ctx, deltaTransform); + }, + save: function CanvasGraphics_save() { + this.ctx.save(); + var old = this.current; + this.stateStack.push(old); + this.current = old.clone(); + this.current.resumeSMaskCtx = null; + }, + restore: function CanvasGraphics_restore() { + if (this.current.resumeSMaskCtx) { + this.resumeSMaskGroup(); + } + if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) { + this.endSMaskGroup(); + } + if (this.stateStack.length !== 0) { + this.current = this.stateStack.pop(); + this.ctx.restore(); + this.pendingClip = null; + this.cachedGetSinglePixelWidth = null; + } + }, + transform: function CanvasGraphics_transform(a, b, c, d, e, f) { + this.ctx.transform(a, b, c, d, e, f); + this.cachedGetSinglePixelWidth = null; + }, + constructPath: function CanvasGraphics_constructPath(ops, args) { + var ctx = this.ctx; + var current = this.current; + var x = current.x, + y = current.y; + for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + var width = args[j++]; + var height = args[j++]; + if (width === 0) { + width = this.getSinglePixelWidth(); + } + if (height === 0) { + height = this.getSinglePixelWidth(); + } + var xw = x + width; + var yh = y + height; + this.ctx.moveTo(x, y); + this.ctx.lineTo(xw, y); + this.ctx.lineTo(xw, yh); + this.ctx.lineTo(x, yh); + this.ctx.lineTo(x, y); + this.ctx.closePath(); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + ctx.moveTo(x, y); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + ctx.lineTo(x, y); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); + j += 6; + break; + case _util.OPS.curveTo2: + ctx.bezierCurveTo(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: + x = args[j + 2]; + y = args[j + 3]; + ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); + j += 4; + break; + case _util.OPS.closePath: + ctx.closePath(); + break; + } + } + current.setCurrentPoint(x, y); + }, + closePath: function CanvasGraphics_closePath() { + this.ctx.closePath(); + }, + stroke: function CanvasGraphics_stroke(consumePath) { + consumePath = typeof consumePath !== 'undefined' ? consumePath : true; + var ctx = this.ctx; + var strokeColor = this.current.strokeColor; + ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth); + ctx.globalAlpha = this.current.strokeAlpha; + if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') { + ctx.save(); + ctx.strokeStyle = strokeColor.getPattern(ctx, this); + ctx.stroke(); + ctx.restore(); + } else { + ctx.stroke(); + } + if (consumePath) { + this.consumePath(); + } + ctx.globalAlpha = this.current.fillAlpha; + }, + closeStroke: function CanvasGraphics_closeStroke() { + this.closePath(); + this.stroke(); + }, + fill: function CanvasGraphics_fill(consumePath) { + consumePath = typeof consumePath !== 'undefined' ? consumePath : true; + var ctx = this.ctx; + var fillColor = this.current.fillColor; + var isPatternFill = this.current.patternFill; + var needRestore = false; + if (isPatternFill) { + ctx.save(); + if (this.baseTransform) { + ctx.setTransform.apply(ctx, this.baseTransform); + } + ctx.fillStyle = fillColor.getPattern(ctx, this); + needRestore = true; + } + if (this.pendingEOFill) { + ctx.fill('evenodd'); + this.pendingEOFill = false; + } else { + ctx.fill(); + } + if (needRestore) { + ctx.restore(); + } + if (consumePath) { + this.consumePath(); + } + }, + eoFill: function CanvasGraphics_eoFill() { + this.pendingEOFill = true; + this.fill(); + }, + fillStroke: function CanvasGraphics_fillStroke() { + this.fill(false); + this.stroke(false); + this.consumePath(); + }, + eoFillStroke: function CanvasGraphics_eoFillStroke() { + this.pendingEOFill = true; + this.fillStroke(); + }, + closeFillStroke: function CanvasGraphics_closeFillStroke() { + this.closePath(); + this.fillStroke(); + }, + closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() { + this.pendingEOFill = true; + this.closePath(); + this.fillStroke(); + }, + endPath: function CanvasGraphics_endPath() { + this.consumePath(); + }, + clip: function CanvasGraphics_clip() { + this.pendingClip = NORMAL_CLIP; + }, + eoClip: function CanvasGraphics_eoClip() { + this.pendingClip = EO_CLIP; + }, + beginText: function CanvasGraphics_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: function CanvasGraphics_endText() { + var paths = this.pendingTextPaths; + var ctx = this.ctx; + if (paths === undefined) { + ctx.beginPath(); + return; + } + ctx.save(); + ctx.beginPath(); + for (var i = 0; i < paths.length; i++) { + var 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: function CanvasGraphics_setCharSpacing(spacing) { + this.current.charSpacing = spacing; + }, + setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) { + this.current.wordSpacing = spacing; + }, + setHScale: function CanvasGraphics_setHScale(scale) { + this.current.textHScale = scale / 100; + }, + setLeading: function CanvasGraphics_setLeading(leading) { + this.current.leading = -leading; + }, + setFont: function CanvasGraphics_setFont(fontRefName, size) { + var fontObj = this.commonObjs.get(fontRefName); + var current = this.current; + if (!fontObj) { + throw new Error('Can\'t find font for ' + fontRefName); + } + current.fontMatrix = fontObj.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; + } + var name = fontObj.loadedName || 'sans-serif'; + var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal'; + var italic = fontObj.italic ? 'italic' : 'normal'; + var typeface = '"' + name + '", ' + fontObj.fallbackName; + var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size; + this.current.fontSizeScale = size / browserFontSize; + var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface; + this.ctx.font = rule; + }, + setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) { + this.current.textRenderingMode = mode; + }, + setTextRise: function CanvasGraphics_setTextRise(rise) { + this.current.textRise = rise; + }, + moveText: function CanvasGraphics_moveText(x, y) { + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + }, + setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + }, + setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) { + this.current.textMatrix = [a, b, c, d, e, f]; + this.current.textMatrixScale = Math.sqrt(a * a + b * b); + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + }, + nextLine: function CanvasGraphics_nextLine() { + this.moveText(0, this.current.leading); + }, + paintChar: function CanvasGraphics_paintChar(character, x, y) { + var ctx = this.ctx; + var current = this.current; + var font = current.font; + var textRenderingMode = current.textRenderingMode; + var fontSize = current.fontSize / current.fontSizeScale; + var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + var addToPath; + if (font.disableFontFace || isAddToPathSet) { + addToPath = font.getPathGenerator(this.commonObjs, character); + } + if (font.disableFontFace) { + ctx.save(); + ctx.translate(x, y); + ctx.beginPath(); + addToPath(ctx, fontSize); + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + ctx.fill(); + } + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + 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) { + ctx.strokeText(character, x, y); + } + } + if (isAddToPathSet) { + var paths = this.pendingTextPaths || (this.pendingTextPaths = []); + paths.push({ + transform: ctx.mozCurrentTransform, + x: x, + y: y, + fontSize: fontSize, + addToPath: addToPath + }); + } + }, + get isFontSubpixelAAEnabled() { + var ctx = this.canvasFactory.create(10, 10).context; + ctx.scale(1.5, 1); + ctx.fillText('I', 0, 10); + var data = ctx.getImageData(0, 0, 10, 10).data; + var enabled = false; + for (var 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: function CanvasGraphics_showText(glyphs) { + var current = this.current; + var font = current.font; + if (font.isType3Font) { + return this.showType3Text(glyphs); + } + var fontSize = current.fontSize; + if (fontSize === 0) { + return; + } + var ctx = this.ctx; + var fontSizeScale = current.fontSizeScale; + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var fontDirection = current.fontDirection; + var textHScale = current.textHScale * fontDirection; + var glyphsLength = glyphs.length; + var vertical = font.vertical; + var spacingDir = vertical ? 1 : -1; + var defaultVMetrics = font.defaultVMetrics; + var widthAdvanceScale = fontSize * current.fontMatrix[0]; + var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; + ctx.save(); + ctx.transform.apply(ctx, current.textMatrix); + ctx.translate(current.x, current.y + current.textRise); + if (current.patternFill) { + ctx.fillStyle = current.fillColor.getPattern(ctx, this); + } + if (fontDirection > 0) { + ctx.scale(textHScale, -1); + } else { + ctx.scale(textHScale, 1); + } + var lineWidth = current.lineWidth; + var scale = current.textMatrixScale; + if (scale === 0 || lineWidth === 0) { + var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { + this.cachedGetSinglePixelWidth = null; + lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; + } + } else { + lineWidth /= scale; + } + if (fontSizeScale !== 1.0) { + ctx.scale(fontSizeScale, fontSizeScale); + lineWidth /= fontSizeScale; + } + ctx.lineWidth = lineWidth; + var x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + var glyph = glyphs[i]; + if ((0, _util.isNum)(glyph)) { + x += spacingDir * glyph * fontSize / 1000; + continue; + } + var restoreNeeded = false; + var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + var character = glyph.fontChar; + var accent = glyph.accent; + var scaledX, scaledY, scaledAccentX, scaledAccentY; + var width = glyph.width; + if (vertical) { + var vmetric, vx, vy; + vmetric = glyph.vmetric || defaultVMetrics; + vx = glyph.vmetric ? vmetric[1] : width * 0.5; + vx = -vx * widthAdvanceScale; + 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) { + var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + var characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale; + } + } + if (glyph.isInFont || font.missingFile) { + if (simpleFillText && !accent) { + ctx.fillText(character, scaledX, scaledY); + } else { + this.paintChar(character, scaledX, scaledY); + if (accent) { + scaledAccentX = scaledX + accent.offset.x / fontSizeScale; + scaledAccentY = scaledY - accent.offset.y / fontSizeScale; + this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY); + } + } + } + var charWidth = width * widthAdvanceScale + spacing * fontDirection; + x += charWidth; + if (restoreNeeded) { + ctx.restore(); + } + } + if (vertical) { + current.y -= x * textHScale; + } else { + current.x += x * textHScale; + } + ctx.restore(); + }, + showType3Text: function CanvasGraphics_showType3Text(glyphs) { + var ctx = this.ctx; + var current = this.current; + var font = current.font; + var fontSize = current.fontSize; + var fontDirection = current.fontDirection; + var spacingDir = font.vertical ? 1 : -1; + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var textHScale = current.textHScale * fontDirection; + var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; + var glyphsLength = glyphs.length; + var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; + var 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; + } + var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; + var operatorList = font.charProcOperatorList[glyph.operatorListId]; + if (!operatorList) { + (0, _util.warn)('Type3 character "' + glyph.operatorListId + '" is not available.'); + continue; + } + this.processingType3 = glyph; + this.save(); + ctx.scale(fontSize, fontSize); + ctx.transform.apply(ctx, fontMatrix); + this.executeOperatorList(operatorList); + this.restore(); + var 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: function CanvasGraphics_setCharWidth(xWidth, yWidth) {}, + setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) { + this.ctx.rect(llx, lly, urx - llx, ury - lly); + this.clip(); + this.endPath(); + }, + getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) { + var _this = this; + + var pattern; + if (IR[0] === 'TilingPattern') { + var color = IR[1]; + var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice(); + var canvasGraphicsFactory = { + createCanvasGraphics: function 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 = (0, _pattern_helper.getShadingPatternFromIR)(IR); + } + return pattern; + }, + setStrokeColorN: function CanvasGraphics_setStrokeColorN() { + this.current.strokeColor = this.getColorN_Pattern(arguments); + }, + setFillColorN: function CanvasGraphics_setFillColorN() { + this.current.fillColor = this.getColorN_Pattern(arguments); + this.current.patternFill = true; + }, + setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.ctx.strokeStyle = color; + this.current.strokeColor = color; + }, + setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.ctx.fillStyle = color; + this.current.fillColor = color; + this.current.patternFill = false; + }, + shadingFill: function CanvasGraphics_shadingFill(patternIR) { + var ctx = this.ctx; + this.save(); + var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); + ctx.fillStyle = pattern.getPattern(ctx, this, true); + var inv = ctx.mozCurrentTransformInverse; + if (inv) { + var canvas = ctx.canvas; + var width = canvas.width; + var height = canvas.height; + var bl = _util.Util.applyTransform([0, 0], inv); + var br = _util.Util.applyTransform([0, height], inv); + var ul = _util.Util.applyTransform([width, 0], inv); + var ur = _util.Util.applyTransform([width, height], inv); + var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); + var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); + var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); + var 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.restore(); + }, + beginInlineImage: function CanvasGraphics_beginInlineImage() { + throw new Error('Should not call beginInlineImage'); + }, + beginImageData: function CanvasGraphics_beginImageData() { + throw new Error('Should not call beginImageData'); + }, + paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { + this.save(); + this.baseTransformStack.push(this.baseTransform); + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + this.transform.apply(this, matrix); + } + this.baseTransform = this.ctx.mozCurrentTransform; + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var width = bbox[2] - bbox[0]; + var height = bbox[3] - bbox[1]; + this.ctx.rect(bbox[0], bbox[1], width, height); + this.clip(); + this.endPath(); + } + }, + paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() { + this.restore(); + this.baseTransform = this.baseTransformStack.pop(); + }, + beginGroup: function CanvasGraphics_beginGroup(group) { + this.save(); + var currentCtx = this.ctx; + if (!group.isolated) { + (0, _util.info)('TODO: Support non-isolated groups.'); + } + if (group.knockout) { + (0, _util.warn)('Knockout groups not supported.'); + } + var currentTransform = currentCtx.mozCurrentTransform; + if (group.matrix) { + currentCtx.transform.apply(currentCtx, group.matrix); + } + if (!group.bbox) { + throw new Error('Bounding box is required.'); + } + var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + var offsetX = Math.floor(bounds[0]); + var offsetY = Math.floor(bounds[1]); + var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); + var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1); + var 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; + } + var cacheId = 'groupAt' + this.groupLevel; + if (group.smask) { + cacheId += '_smask_' + this.smaskCounter++ % 2; + } + var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true); + var 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: offsetX, + offsetY: offsetY, + scaleX: scaleX, + scaleY: 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); + } + copyCtxState(currentCtx, groupCtx); + this.ctx = groupCtx; + this.setGState([['BM', 'source-over'], ['ca', 1], ['CA', 1]]); + this.groupStack.push(currentCtx); + this.groupLevel++; + this.current.activeSMask = null; + }, + endGroup: function CanvasGraphics_endGroup(group) { + this.groupLevel--; + var groupCtx = this.ctx; + this.ctx = this.groupStack.pop(); + if (this.ctx.imageSmoothingEnabled !== undefined) { + this.ctx.imageSmoothingEnabled = false; + } else { + this.ctx.mozImageSmoothingEnabled = false; + } + if (group.smask) { + this.tempSMask = this.smaskStack.pop(); + } else { + this.ctx.drawImage(groupCtx.canvas, 0, 0); + } + this.restore(); + }, + beginAnnotations: function CanvasGraphics_beginAnnotations() { + this.save(); + if (this.baseTransform) { + this.ctx.setTransform.apply(this.ctx, this.baseTransform); + } + }, + endAnnotations: function CanvasGraphics_endAnnotations() { + this.restore(); + }, + beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { + this.save(); + resetCtxToDefault(this.ctx); + this.current = new CanvasExtraState(); + if ((0, _util.isArray)(rect) && rect.length === 4) { + var width = rect[2] - rect[0]; + var height = rect[3] - rect[1]; + this.ctx.rect(rect[0], rect[1], width, height); + this.clip(); + this.endPath(); + } + this.transform.apply(this, transform); + this.transform.apply(this, matrix); + }, + endAnnotation: function CanvasGraphics_endAnnotation() { + this.restore(); + }, + paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { + var domImage = this.objs.get(objId); + if (!domImage) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.save(); + var ctx = this.ctx; + ctx.scale(1 / w, -1 / h); + ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h); + if (this.imageLayer) { + var currentTransform = ctx.mozCurrentTransformInverse; + var position = this.getCanvasPosition(0, 0); + this.imageLayer.appendImage({ + objId: objId, + left: position[0], + top: position[1], + width: w / currentTransform[0], + height: h / currentTransform[3] + }); + } + this.restore(); + }, + paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) { + var ctx = this.ctx; + var width = img.width, + height = img.height; + var fillColor = this.current.fillColor; + var isPatternFill = this.current.patternFill; + var 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: width, + height: height + }); + } else { + glyph.compiled = null; + } + } + if (glyph && glyph.compiled) { + glyph.compiled(ctx); + return; + } + var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); + var maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, img); + maskCtx.globalCompositeOperation = 'source-in'; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + this.paintInlineImageXObject(maskCanvas.canvas); + }, + paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) { + var width = imgData.width; + var height = imgData.height; + var fillColor = this.current.fillColor; + var isPatternFill = this.current.patternFill; + var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); + var maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, imgData); + maskCtx.globalCompositeOperation = 'source-in'; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + var ctx = this.ctx; + for (var i = 0, ii = positions.length; i < ii; i += 2) { + ctx.save(); + ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]); + ctx.scale(1, -1); + ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + }, + paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) { + var ctx = this.ctx; + var fillColor = this.current.fillColor; + var isPatternFill = this.current.patternFill; + for (var i = 0, ii = images.length; i < ii; i++) { + var image = images[i]; + var width = image.width, + height = image.height; + var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height); + var maskCtx = maskCanvas.context; + maskCtx.save(); + putBinaryImageMask(maskCtx, image); + maskCtx.globalCompositeOperation = 'source-in'; + maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor; + maskCtx.fillRect(0, 0, width, height); + maskCtx.restore(); + ctx.save(); + ctx.transform.apply(ctx, image.transform); + ctx.scale(1, -1); + ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1); + ctx.restore(); + } + }, + paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.paintInlineImageXObject(imgData); + }, + paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + var width = imgData.width; + var height = imgData.height; + var map = []; + for (var i = 0, ii = positions.length; i < ii; i += 2) { + map.push({ + transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]], + x: 0, + y: 0, + w: width, + h: height + }); + } + this.paintInlineImageXObjectGroup(imgData, map); + }, + paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) { + var width = imgData.width; + var height = imgData.height; + var ctx = this.ctx; + this.save(); + ctx.scale(1 / width, -1 / height); + var currentTransform = ctx.mozCurrentTransformInverse; + var a = currentTransform[0], + b = currentTransform[1]; + var widthScale = Math.max(Math.sqrt(a * a + b * b), 1); + var c = currentTransform[2], + d = currentTransform[3]; + var heightScale = Math.max(Math.sqrt(c * c + d * d), 1); + var imgToPaint, tmpCanvas; + if (imgData instanceof HTMLElement || !imgData.data) { + imgToPaint = imgData; + } else { + tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height); + var tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + imgToPaint = tmpCanvas.canvas; + } + var paintWidth = width, + paintHeight = height; + var tmpCanvasId = 'prescale1'; + while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) { + var 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(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight); + imgToPaint = tmpCanvas.canvas; + paintWidth = newWidth; + paintHeight = newHeight; + tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1'; + } + ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height); + if (this.imageLayer) { + var position = this.getCanvasPosition(0, -height); + this.imageLayer.appendImage({ + imgData: imgData, + left: position[0], + top: position[1], + width: width / currentTransform[0], + height: height / currentTransform[3] + }); + } + this.restore(); + }, + paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) { + var ctx = this.ctx; + var w = imgData.width; + var h = imgData.height; + var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h); + var tmpCtx = tmpCanvas.context; + putBinaryImageData(tmpCtx, imgData); + for (var i = 0, ii = map.length; i < ii; i++) { + var entry = map[i]; + ctx.save(); + ctx.transform.apply(ctx, entry.transform); + ctx.scale(1, -1); + ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1); + if (this.imageLayer) { + var position = this.getCanvasPosition(entry.x, entry.y); + this.imageLayer.appendImage({ + imgData: imgData, + left: position[0], + top: position[1], + width: w, + height: h + }); + } + ctx.restore(); + } + }, + paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() { + this.ctx.fillRect(0, 0, 1, 1); + }, + paintXObject: function CanvasGraphics_paintXObject() { + (0, _util.warn)('Unsupported \'paintXObject\' command.'); + }, + markPoint: function CanvasGraphics_markPoint(tag) {}, + markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, + beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {}, + beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {}, + endMarkedContent: function CanvasGraphics_endMarkedContent() {}, + beginCompat: function CanvasGraphics_beginCompat() {}, + endCompat: function CanvasGraphics_endCompat() {}, + consumePath: function CanvasGraphics_consumePath() { + var ctx = this.ctx; + if (this.pendingClip) { + if (this.pendingClip === EO_CLIP) { + ctx.clip('evenodd'); + } else { + ctx.clip(); + } + this.pendingClip = null; + } + ctx.beginPath(); + }, + getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) { + if (this.cachedGetSinglePixelWidth === null) { + this.ctx.save(); + var inverse = this.ctx.mozCurrentTransformInverse; + this.ctx.restore(); + this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(inverse[0] * inverse[0] + inverse[1] * inverse[1], inverse[2] * inverse[2] + inverse[3] * inverse[3])); + } + return this.cachedGetSinglePixelWidth; + }, + getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) { + var transform = this.ctx.mozCurrentTransform; + return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; + } + }; + for (var op in _util.OPS) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; + } + return CanvasGraphics; +}(); +exports.CanvasGraphics = CanvasGraphics; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FontLoader = exports.FontFaceObject = undefined; + +var _util = __w_pdfjs_require__(0); + +function FontLoader(docId) { + this.docId = docId; + this.styleElement = null; + this.nativeFontFaces = []; + this.loadTestFontId = 0; + this.loadingContext = { + requests: [], + nextRequestId: 0 + }; +} +FontLoader.prototype = { + insertRule: function fontLoaderInsertRule(rule) { + var styleElement = this.styleElement; + if (!styleElement) { + styleElement = this.styleElement = document.createElement('style'); + styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId; + document.documentElement.getElementsByTagName('head')[0].appendChild(styleElement); + } + var styleSheet = styleElement.sheet; + styleSheet.insertRule(rule, styleSheet.cssRules.length); + }, + clear: function fontLoaderClear() { + if (this.styleElement) { + this.styleElement.remove(); + this.styleElement = null; + } + this.nativeFontFaces.forEach(function (nativeFontFace) { + document.fonts.delete(nativeFontFace); + }); + this.nativeFontFaces.length = 0; + } +}; +{ + var getLoadTestFont = function getLoadTestFont() { + return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); + }; + Object.defineProperty(FontLoader.prototype, 'loadTestFont', { + get: function get() { + return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); + }, + + configurable: true + }); + FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + document.fonts.add(nativeFontFace); + }; + FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { + var rules = []; + var fontsToLoad = []; + var fontLoadPromises = []; + var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { + return nativeFontFace.loaded.catch(function (e) { + (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); + }); + }; + var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; + for (var i = 0, ii = fonts.length; i < ii; i++) { + var font = fonts[i]; + if (font.attached || font.loading === false) { + continue; + } + font.attached = true; + if (isFontLoadingAPISupported) { + var nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + } else { + var rule = font.createFontFaceRule(); + if (rule) { + this.insertRule(rule); + rules.push(rule); + fontsToLoad.push(font); + } + } + } + var request = this.queueLoadingCallback(callback); + if (isFontLoadingAPISupported) { + Promise.all(fontLoadPromises).then(function () { + request.complete(); + }); + } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { + this.prepareFontLoadEvent(rules, fontsToLoad, request); + } else { + request.complete(); + } + }; + FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { + function LoadLoader_completeRequest() { + (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); + request.end = Date.now(); + while (context.requests.length > 0 && context.requests[0].end) { + var otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + var context = this.loadingContext; + var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; + var request = { + id: requestId, + complete: LoadLoader_completeRequest, + callback: callback, + started: Date.now() + }; + context.requests.push(request); + return request; + }; + FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(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) { + var chunk1 = s.substr(0, offset); + var chunk2 = s.substr(offset + remove); + return chunk1 + insert + chunk2; + } + var i, ii; + var canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + var ctx = canvas.getContext('2d'); + var 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); + var imageData = ctx.getImageData(0, 0, 1, 1); + if (imageData.data[3] > 0) { + callback(); + return; + } + setTimeout(isFontReady.bind(null, name, callback)); + } + var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; + var data = this.loadTestFont; + var COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + var CFF_CHECKSUM_OFFSET = 16; + var XXXX_VALUE = 0x58585858; + var 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)); + var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; + var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; + this.insertRule(rule); + var names = []; + for (i = 0, ii = fonts.length; i < ii; i++) { + names.push(fonts[i].loadedName); + } + names.push(loadTestFontId); + var div = document.createElement('div'); + div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); + for (i = 0, ii = names.length; i < ii; ++i) { + var span = document.createElement('span'); + span.textContent = 'Hi'; + span.style.fontFamily = names[i]; + div.appendChild(span); + } + document.body.appendChild(div); + isFontReady(loadTestFontId, function () { + document.body.removeChild(div); + request.complete(); + }); + }; +} +{ + FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; +} +{ + var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { + if (typeof navigator === 'undefined') { + return true; + } + var supported = false; + var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + if (m && m[1] >= 14) { + supported = true; + } + return supported; + }; + Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { + get: function get() { + return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); + }, + + enumerable: true, + configurable: true + }); +} +var IsEvalSupportedCached = { + get value() { + return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); + } +}; +var FontFaceObject = function FontFaceObjectClosure() { + function FontFaceObject(translatedData, options) { + this.compiledGlyphs = Object.create(null); + for (var i in translatedData) { + this[i] = translatedData[i]; + } + this.options = options; + } + FontFaceObject.prototype = { + createNativeFontFace: function FontFaceObject_createNativeFontFace() { + if (!this.data) { + return null; + } + if (this.options.disableFontFace) { + this.disableFontFace = true; + return null; + } + var nativeFontFace = new FontFace(this.loadedName, this.data, {}); + if (this.options.fontRegistry) { + this.options.fontRegistry.registerFont(this); + } + return nativeFontFace; + }, + createFontFaceRule: function FontFaceObject_createFontFaceRule() { + if (!this.data) { + return null; + } + if (this.options.disableFontFace) { + this.disableFontFace = true; + return null; + } + var data = (0, _util.bytesToString)(new Uint8Array(this.data)); + var fontName = this.loadedName; + var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; + var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; + if (this.options.fontRegistry) { + this.options.fontRegistry.registerFont(this, url); + } + return rule; + }, + getPathGenerator: function FontFaceObject_getPathGenerator(objs, character) { + if (!(character in this.compiledGlyphs)) { + var cmds = objs.get(this.loadedName + '_path_' + character); + var current, i, len; + if (this.options.isEvalSupported && IsEvalSupportedCached.value) { + var args, + js = ''; + for (i = 0, len = cmds.length; i < len; i++) { + current = cmds[i]; + if (current.args !== undefined) { + args = current.args.join(','); + } else { + args = ''; + } + js += 'c.' + current.cmd + '(' + args + ');\n'; + } + this.compiledGlyphs[character] = new Function('c', 'size', js); + } else { + this.compiledGlyphs[character] = function (c, size) { + for (i = 0, len = cmds.length; i < len; i++) { + current = cmds[i]; + if (current.cmd === 'scale') { + current.args = [size, -size]; + } + c[current.cmd].apply(c, current.args); + } + }; + } + } + return this.compiledGlyphs[character]; + } + }; + return FontFaceObject; +}(); +exports.FontFaceObject = FontFaceObject; +exports.FontLoader = FontLoader; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TilingPattern = exports.getShadingPatternFromIR = undefined; + +var _util = __w_pdfjs_require__(0); + +var _webgl = __w_pdfjs_require__(7); + +var ShadingIRs = {}; +ShadingIRs.RadialAxial = { + fromIR: function RadialAxial_fromIR(raw) { + var type = raw[1]; + var colorStops = raw[2]; + var p0 = raw[3]; + var p1 = raw[4]; + var r0 = raw[5]; + var r1 = raw[6]; + return { + type: 'Pattern', + getPattern: function RadialAxial_getPattern(ctx) { + var grad; + if (type === 'axial') { + grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]); + } else if (type === 'radial') { + grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1); + } + for (var i = 0, ii = colorStops.length; i < ii; ++i) { + var c = colorStops[i]; + grad.addColorStop(c[0], c[1]); + } + return grad; + } + }; + } +}; +var createMeshCanvas = function createMeshCanvasClosure() { + function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) { + var coords = context.coords, + colors = context.colors; + var bytes = data.data, + rowSize = data.width * 4; + var tmp; + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + if (coords[p2 + 1] > coords[p3 + 1]) { + tmp = p2; + p2 = p3; + p3 = tmp; + tmp = c2; + c2 = c3; + c3 = tmp; + } + if (coords[p1 + 1] > coords[p2 + 1]) { + tmp = p1; + p1 = p2; + p2 = tmp; + tmp = c1; + c1 = c2; + c2 = tmp; + } + var x1 = (coords[p1] + context.offsetX) * context.scaleX; + var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY; + var x2 = (coords[p2] + context.offsetX) * context.scaleX; + var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY; + var x3 = (coords[p3] + context.offsetX) * context.scaleX; + var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY; + if (y1 >= y3) { + return; + } + var c1r = colors[c1], + c1g = colors[c1 + 1], + c1b = colors[c1 + 2]; + var c2r = colors[c2], + c2g = colors[c2 + 1], + c2b = colors[c2 + 2]; + var c3r = colors[c3], + c3g = colors[c3 + 1], + c3b = colors[c3 + 2]; + var minY = Math.round(y1), + maxY = Math.round(y3); + var xa, car, cag, cab; + var xb, cbr, cbg, cbb; + var k; + for (var y = minY; y <= maxY; y++) { + if (y < y2) { + k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2); + xa = x1 - (x1 - x2) * k; + car = c1r - (c1r - c2r) * k; + cag = c1g - (c1g - c2g) * k; + cab = c1b - (c1b - c2b) * k; + } else { + k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3); + xa = x2 - (x2 - x3) * k; + car = c2r - (c2r - c3r) * k; + cag = c2g - (c2g - c3g) * k; + cab = c2b - (c2b - c3b) * k; + } + k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3); + xb = x1 - (x1 - x3) * k; + cbr = c1r - (c1r - c3r) * k; + cbg = c1g - (c1g - c3g) * k; + cbb = c1b - (c1b - c3b) * k; + var x1_ = Math.round(Math.min(xa, xb)); + var x2_ = Math.round(Math.max(xa, xb)); + var j = rowSize * y + x1_ * 4; + for (var x = x1_; x <= x2_; x++) { + k = (xa - x) / (xa - xb); + k = k < 0 ? 0 : k > 1 ? 1 : k; + bytes[j++] = car - (car - cbr) * k | 0; + bytes[j++] = cag - (cag - cbg) * k | 0; + bytes[j++] = cab - (cab - cbb) * k | 0; + bytes[j++] = 255; + } + } + } + function drawFigure(data, figure, context) { + var ps = figure.coords; + var cs = figure.colors; + var i, ii; + switch (figure.type) { + case 'lattice': + var verticesPerRow = figure.verticesPerRow; + var rows = Math.floor(ps.length / verticesPerRow) - 1; + var cols = verticesPerRow - 1; + for (i = 0; i < rows; i++) { + var q = i * verticesPerRow; + for (var j = 0; j < cols; j++, q++) { + drawTriangle(data, context, ps[q], ps[q + 1], ps[q + verticesPerRow], cs[q], cs[q + 1], cs[q + verticesPerRow]); + drawTriangle(data, context, ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow], cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]); + } + } + break; + case 'triangles': + for (i = 0, ii = ps.length; i < ii; i += 3) { + drawTriangle(data, context, ps[i], ps[i + 1], ps[i + 2], cs[i], cs[i + 1], cs[i + 2]); + } + break; + default: + throw new Error('illegal figure'); + } + } + function createMeshCanvas(bounds, combinesScale, coords, colors, figures, backgroundColor, cachedCanvases) { + var EXPECTED_SCALE = 1.1; + var MAX_PATTERN_SIZE = 3000; + var BORDER_SIZE = 2; + var offsetX = Math.floor(bounds[0]); + var offsetY = Math.floor(bounds[1]); + var boundsWidth = Math.ceil(bounds[2]) - offsetX; + var boundsHeight = Math.ceil(bounds[3]) - offsetY; + var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] * EXPECTED_SCALE)), MAX_PATTERN_SIZE); + var scaleX = boundsWidth / width; + var scaleY = boundsHeight / height; + var context = { + coords: coords, + colors: colors, + offsetX: -offsetX, + offsetY: -offsetY, + scaleX: 1 / scaleX, + scaleY: 1 / scaleY + }; + var paddedWidth = width + BORDER_SIZE * 2; + var paddedHeight = height + BORDER_SIZE * 2; + var canvas, tmpCanvas, i, ii; + if (_webgl.WebGLUtils.isEnabled) { + canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); + tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); + tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); + canvas = tmpCanvas.canvas; + } else { + tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); + var tmpCtx = tmpCanvas.context; + var data = tmpCtx.createImageData(width, height); + if (backgroundColor) { + var bytes = data.data; + for (i = 0, ii = bytes.length; i < ii; i += 4) { + bytes[i] = backgroundColor[0]; + bytes[i + 1] = backgroundColor[1]; + bytes[i + 2] = backgroundColor[2]; + bytes[i + 3] = 255; + } + } + for (i = 0; i < figures.length; i++) { + drawFigure(data, figures[i], context); + } + tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE); + canvas = tmpCanvas.canvas; + } + return { + canvas: canvas, + offsetX: offsetX - BORDER_SIZE * scaleX, + offsetY: offsetY - BORDER_SIZE * scaleY, + scaleX: scaleX, + scaleY: scaleY + }; + } + return createMeshCanvas; +}(); +ShadingIRs.Mesh = { + fromIR: function Mesh_fromIR(raw) { + var coords = raw[2]; + var colors = raw[3]; + var figures = raw[4]; + var bounds = raw[5]; + var matrix = raw[6]; + var background = raw[8]; + return { + type: 'Pattern', + getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { + var scale; + if (shadingFill) { + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + } else { + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); + if (matrix) { + var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); + scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; + } + } + var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords, colors, figures, shadingFill ? null : background, owner.cachedCanvases); + if (!shadingFill) { + ctx.setTransform.apply(ctx, owner.baseTransform); + if (matrix) { + ctx.transform.apply(ctx, matrix); + } + } + ctx.translate(temporaryPatternCanvas.offsetX, temporaryPatternCanvas.offsetY); + ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY); + return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat'); + } + }; + } +}; +ShadingIRs.Dummy = { + fromIR: function Dummy_fromIR() { + return { + type: 'Pattern', + getPattern: function Dummy_fromIR_getPattern() { + return 'hotpink'; + } + }; + } +}; +function getShadingPatternFromIR(raw) { + var shadingIR = ShadingIRs[raw[0]]; + if (!shadingIR) { + throw new Error('Unknown IR type: ' + raw[0]); + } + return shadingIR.fromIR(raw); +} +var TilingPattern = function TilingPatternClosure() { + var PaintType = { + COLORED: 1, + UNCOLORED: 2 + }; + var MAX_PATTERN_SIZE = 3000; + function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { + this.operatorList = IR[2]; + this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; + this.bbox = IR[4]; + this.xstep = IR[5]; + this.ystep = IR[6]; + this.paintType = IR[7]; + this.tilingType = IR[8]; + this.color = color; + this.canvasGraphicsFactory = canvasGraphicsFactory; + this.baseTransform = baseTransform; + this.type = 'Pattern'; + this.ctx = ctx; + } + TilingPattern.prototype = { + createPatternCanvas: function TilinPattern_createPatternCanvas(owner) { + var operatorList = this.operatorList; + var bbox = this.bbox; + var xstep = this.xstep; + var ystep = this.ystep; + var paintType = this.paintType; + var tilingType = this.tilingType; + var color = this.color; + var canvasGraphicsFactory = this.canvasGraphicsFactory; + (0, _util.info)('TilingType: ' + tilingType); + var x0 = bbox[0], + y0 = bbox[1], + x1 = bbox[2], + y1 = bbox[3]; + var topLeft = [x0, y0]; + var botRight = [x0 + xstep, y0 + ystep]; + var width = botRight[0] - topLeft[0]; + var height = botRight[1] - topLeft[1]; + var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); + var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; + width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); + height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); + var tmpCanvas = owner.cachedCanvases.getCanvas('pattern', width, height, true); + var tmpCtx = tmpCanvas.context; + var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx); + graphics.groupLevel = owner.groupLevel; + this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color); + this.setScale(width, height, xstep, ystep); + this.transformToScale(graphics); + var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]]; + graphics.transform.apply(graphics, tmpTranslate); + this.clipBbox(graphics, bbox, x0, y0, x1, y1); + graphics.executeOperatorList(operatorList); + return tmpCanvas.canvas; + }, + setScale: function TilingPattern_setScale(width, height, xstep, ystep) { + this.scale = [width / xstep, height / ystep]; + }, + transformToScale: function TilingPattern_transformToScale(graphics) { + var scale = this.scale; + var tmpScale = [scale[0], 0, 0, scale[1], 0, 0]; + graphics.transform.apply(graphics, tmpScale); + }, + scaleToContext: function TilingPattern_scaleToContext() { + var scale = this.scale; + this.ctx.scale(1 / scale[0], 1 / scale[1]); + }, + clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var bboxWidth = x1 - x0; + var bboxHeight = y1 - y0; + graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); + graphics.clip(); + graphics.endPath(); + } + }, + setFillAndStrokeStyleToContext: function setFillAndStrokeStyleToContext(context, paintType, color) { + switch (paintType) { + case PaintType.COLORED: + var ctx = this.ctx; + context.fillStyle = ctx.fillStyle; + context.strokeStyle = ctx.strokeStyle; + break; + case PaintType.UNCOLORED: + var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); + context.fillStyle = cssColor; + context.strokeStyle = cssColor; + break; + default: + throw new _util.FormatError('Unsupported paint type: ' + paintType); + } + }, + getPattern: function TilingPattern_getPattern(ctx, owner) { + var temporaryPatternCanvas = this.createPatternCanvas(owner); + ctx = this.ctx; + ctx.setTransform.apply(ctx, this.baseTransform); + ctx.transform.apply(ctx, this.matrix); + this.scaleToContext(); + return ctx.createPattern(temporaryPatternCanvas, 'repeat'); + } + }; + return TilingPattern; +}(); +exports.getShadingPatternFromIR = getShadingPatternFromIR; +exports.TilingPattern = TilingPattern; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFDataTransportStream = undefined; + +var _util = __w_pdfjs_require__(0); + +var PDFDataTransportStream = function PDFDataTransportStreamClosure() { + function PDFDataTransportStream(params, pdfDataRangeTransport) { + var _this = this; + + (0, _util.assert)(pdfDataRangeTransport); + this._queuedChunks = []; + var initialData = params.initialData; + if (initialData && initialData.length > 0) { + var buffer = new Uint8Array(initialData).buffer; + this._queuedChunks.push(buffer); + } + this._pdfDataRangeTransport = pdfDataRangeTransport; + this._isRangeSupported = !params.disableRange; + this._isStreamingSupported = !params.disableStream; + this._contentLength = params.length; + this._fullRequestReader = null; + this._rangeReaders = []; + this._pdfDataRangeTransport.addRangeListener(function (begin, chunk) { + _this._onReceiveData({ + begin: begin, + chunk: chunk + }); + }); + this._pdfDataRangeTransport.addProgressListener(function (loaded) { + _this._onProgress({ loaded: loaded }); + }); + this._pdfDataRangeTransport.addProgressiveReadListener(function (chunk) { + _this._onReceiveData({ chunk: chunk }); + }); + this._pdfDataRangeTransport.transportReady(); + } + PDFDataTransportStream.prototype = { + _onReceiveData: function PDFDataTransportStream_onReceiveData(args) { + var buffer = new Uint8Array(args.chunk).buffer; + if (args.begin === undefined) { + if (this._fullRequestReader) { + this._fullRequestReader._enqueue(buffer); + } else { + this._queuedChunks.push(buffer); + } + } else { + var found = this._rangeReaders.some(function (rangeReader) { + if (rangeReader._begin !== args.begin) { + return false; + } + rangeReader._enqueue(buffer); + return true; + }); + (0, _util.assert)(found); + } + }, + _onProgress: function PDFDataTransportStream_onDataProgress(evt) { + if (this._rangeReaders.length > 0) { + var firstReader = this._rangeReaders[0]; + if (firstReader.onProgress) { + firstReader.onProgress({ loaded: evt.loaded }); + } + } + }, + _removeRangeReader: function PDFDataTransportStream_removeRangeReader(reader) { + var i = this._rangeReaders.indexOf(reader); + if (i >= 0) { + this._rangeReaders.splice(i, 1); + } + }, + getFullReader: function PDFDataTransportStream_getFullReader() { + (0, _util.assert)(!this._fullRequestReader); + var queuedChunks = this._queuedChunks; + this._queuedChunks = null; + return new PDFDataTransportStreamReader(this, queuedChunks); + }, + getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) { + var reader = new PDFDataTransportStreamRangeReader(this, begin, end); + this._pdfDataRangeTransport.requestDataRange(begin, end); + this._rangeReaders.push(reader); + return reader; + }, + cancelAllRequests: function PDFDataTransportStream_cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + var readers = this._rangeReaders.slice(0); + readers.forEach(function (rangeReader) { + rangeReader.cancel(reason); + }); + this._pdfDataRangeTransport.abort(); + } + }; + function PDFDataTransportStreamReader(stream, queuedChunks) { + this._stream = stream; + this._done = false; + this._queuedChunks = queuedChunks || []; + this._requests = []; + this._headersReady = Promise.resolve(); + stream._fullRequestReader = this; + this.onProgress = null; + } + PDFDataTransportStreamReader.prototype = { + _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) { + if (this._done) { + return; + } + if (this._requests.length > 0) { + var requestCapability = this._requests.shift(); + requestCapability.resolve({ + value: chunk, + done: false + }); + return; + } + this._queuedChunks.push(chunk); + }, + get headersReady() { + return this._headersReady; + }, + get isRangeSupported() { + return this._stream._isRangeSupported; + }, + get isStreamingSupported() { + return this._stream._isStreamingSupported; + }, + get contentLength() { + return this._stream._contentLength; + }, + read: function PDFDataTransportStreamReader_read() { + if (this._queuedChunks.length > 0) { + var chunk = this._queuedChunks.shift(); + return Promise.resolve({ + value: chunk, + done: false + }); + } + if (this._done) { + return Promise.resolve({ + value: undefined, + done: true + }); + } + var requestCapability = (0, _util.createPromiseCapability)(); + this._requests.push(requestCapability); + return requestCapability.promise; + }, + cancel: function PDFDataTransportStreamReader_cancel(reason) { + this._done = true; + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + } + }; + function PDFDataTransportStreamRangeReader(stream, begin, end) { + this._stream = stream; + this._begin = begin; + this._end = end; + this._queuedChunk = null; + this._requests = []; + this._done = false; + this.onProgress = null; + } + PDFDataTransportStreamRangeReader.prototype = { + _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) { + if (this._done) { + return; + } + if (this._requests.length === 0) { + this._queuedChunk = chunk; + } else { + var requestsCapability = this._requests.shift(); + requestsCapability.resolve({ + value: chunk, + done: false + }); + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + } + this._done = true; + this._stream._removeRangeReader(this); + }, + get isStreamingSupported() { + return false; + }, + read: function PDFDataTransportStreamRangeReader_read() { + if (this._queuedChunk) { + var chunk = this._queuedChunk; + this._queuedChunk = null; + return Promise.resolve({ + value: chunk, + done: false + }); + } + if (this._done) { + return Promise.resolve({ + value: undefined, + done: true + }); + } + var requestCapability = (0, _util.createPromiseCapability)(); + this._requests.push(requestCapability); + return requestCapability.promise; + }, + cancel: function PDFDataTransportStreamRangeReader_cancel(reason) { + this._done = true; + this._requests.forEach(function (requestCapability) { + requestCapability.resolve({ + value: undefined, + done: true + }); + }); + this._requests = []; + this._stream._removeRangeReader(this); + } + }; + return PDFDataTransportStream; +}(); +exports.PDFDataTransportStream = PDFDataTransportStream; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var pdfjsVersion = '1.9.426'; +var pdfjsBuild = '2558a58d'; +var pdfjsSharedUtil = __w_pdfjs_require__(0); +var pdfjsDisplayGlobal = __w_pdfjs_require__(8); +var pdfjsDisplayAPI = __w_pdfjs_require__(2); +var pdfjsDisplayTextLayer = __w_pdfjs_require__(5); +var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(3); +var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1); +var pdfjsDisplaySVG = __w_pdfjs_require__(4); +{ + __w_pdfjs_require__(9); +} +exports.PDFJS = pdfjsDisplayGlobal.PDFJS; +exports.build = pdfjsDisplayAPI.build; +exports.version = pdfjsDisplayAPI.version; +exports.getDocument = pdfjsDisplayAPI.getDocument; +exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort; +exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport; +exports.PDFWorker = pdfjsDisplayAPI.PDFWorker; +exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer; +exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer; +exports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle; +exports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability; +exports.PasswordResponses = pdfjsSharedUtil.PasswordResponses; +exports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException; +exports.MissingPDFException = pdfjsSharedUtil.MissingPDFException; +exports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics; +exports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding; +exports.UnexpectedResponseException = pdfjsSharedUtil.UnexpectedResponseException; +exports.OPS = pdfjsSharedUtil.OPS; +exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES; +exports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl; +exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl; +exports.createObjectURL = pdfjsSharedUtil.createObjectURL; +exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters; +exports.shadow = pdfjsSharedUtil.shadow; +exports.createBlob = pdfjsSharedUtil.createBlob; +exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException; +exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl; +exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes; +exports.StatTimer = pdfjsSharedUtil.StatTimer; + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +if (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked) { + var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : false ? undefined : {}; + var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || ''; + var isAndroid = /Android/.test(userAgent); + var isAndroidPre3 = /Android\s[0-2][^\d]/.test(userAgent); + var isAndroidPre5 = /Android\s[0-4][^\d]/.test(userAgent); + var isChrome = userAgent.indexOf('Chrom') >= 0; + var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(userAgent); + var isIOSChrome = userAgent.indexOf('CriOS') >= 0; + var isIE = userAgent.indexOf('Trident') >= 0; + var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); + var isOpera = userAgent.indexOf('Opera') >= 0; + var isSafari = /Safari\//.test(userAgent) && !/(Chrome\/|Android\s)/.test(userAgent); + var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object'; + if (typeof PDFJS === 'undefined') { + globalScope.PDFJS = {}; + } + PDFJS.compatibilityChecked = true; + (function checkTypedArrayCompatibility() { + if (typeof Uint8Array !== 'undefined') { + if (typeof Uint8Array.prototype.subarray === 'undefined') { + Uint8Array.prototype.subarray = function subarray(start, end) { + return new Uint8Array(this.slice(start, end)); + }; + Float32Array.prototype.subarray = function subarray(start, end) { + return new Float32Array(this.slice(start, end)); + }; + } + if (typeof Float64Array === 'undefined') { + globalScope.Float64Array = Float32Array; + } + return; + } + function subarray(start, end) { + return new TypedArray(this.slice(start, end)); + } + function setArrayOffset(array, offset) { + if (arguments.length < 2) { + offset = 0; + } + for (var i = 0, n = array.length; i < n; ++i, ++offset) { + this[offset] = array[i] & 0xFF; + } + } + function Uint32ArrayView(buffer, length) { + this.buffer = buffer; + this.byteLength = buffer.length; + this.length = length; + ensureUint32ArrayViewProps(this.length); + } + Uint32ArrayView.prototype = Object.create(null); + var uint32ArrayViewSetters = 0; + function createUint32ArrayProp(index) { + return { + get: function get() { + var buffer = this.buffer, + offset = index << 2; + return (buffer[offset] | buffer[offset + 1] << 8 | buffer[offset + 2] << 16 | buffer[offset + 3] << 24) >>> 0; + }, + set: function set(value) { + var buffer = this.buffer, + offset = index << 2; + buffer[offset] = value & 255; + buffer[offset + 1] = value >> 8 & 255; + buffer[offset + 2] = value >> 16 & 255; + buffer[offset + 3] = value >>> 24 & 255; + } + }; + } + function ensureUint32ArrayViewProps(length) { + while (uint32ArrayViewSetters < length) { + Object.defineProperty(Uint32ArrayView.prototype, uint32ArrayViewSetters, createUint32ArrayProp(uint32ArrayViewSetters)); + uint32ArrayViewSetters++; + } + } + function TypedArray(arg1) { + var result, i, n; + if (typeof arg1 === 'number') { + result = []; + for (i = 0; i < arg1; ++i) { + result[i] = 0; + } + } else if ('slice' in arg1) { + result = arg1.slice(0); + } else { + result = []; + for (i = 0, n = arg1.length; i < n; ++i) { + result[i] = arg1[i]; + } + } + result.subarray = subarray; + result.buffer = result; + result.byteLength = result.length; + result.set = setArrayOffset; + if ((typeof arg1 === 'undefined' ? 'undefined' : _typeof(arg1)) === 'object' && arg1.buffer) { + result.buffer = arg1.buffer; + } + return result; + } + globalScope.Uint8Array = TypedArray; + globalScope.Int8Array = TypedArray; + globalScope.Int32Array = TypedArray; + globalScope.Uint16Array = TypedArray; + globalScope.Float32Array = TypedArray; + globalScope.Float64Array = TypedArray; + globalScope.Uint32Array = function () { + if (arguments.length === 3) { + if (arguments[1] !== 0) { + throw new Error('offset !== 0 is not supported'); + } + return new Uint32ArrayView(arguments[0], arguments[2]); + } + return TypedArray.apply(this, arguments); + }; + })(); + (function canvasPixelArrayBuffer() { + if (!hasDOM || !window.CanvasPixelArray) { + return; + } + var cpaProto = window.CanvasPixelArray.prototype; + if ('buffer' in cpaProto) { + return; + } + Object.defineProperty(cpaProto, 'buffer', { + get: function get() { + return this; + }, + + enumerable: false, + configurable: true + }); + Object.defineProperty(cpaProto, 'byteLength', { + get: function get() { + return this.length; + }, + + enumerable: false, + configurable: true + }); + })(); + (function normalizeURLObject() { + if (!globalScope.URL) { + globalScope.URL = globalScope.webkitURL; + } + })(); + (function checkObjectDefinePropertyCompatibility() { + if (typeof Object.defineProperty !== 'undefined') { + var definePropertyPossible = true; + try { + if (hasDOM) { + Object.defineProperty(new Image(), 'id', { value: 'test' }); + } + var Test = function Test() {}; + Test.prototype = { + get id() {} + }; + Object.defineProperty(new Test(), 'id', { + value: '', + configurable: true, + enumerable: true, + writable: false + }); + } catch (e) { + definePropertyPossible = false; + } + if (definePropertyPossible) { + return; + } + } + Object.defineProperty = function objectDefineProperty(obj, name, def) { + delete obj[name]; + if ('get' in def) { + obj.__defineGetter__(name, def['get']); + } + if ('set' in def) { + obj.__defineSetter__(name, def['set']); + } + if ('value' in def) { + obj.__defineSetter__(name, function objectDefinePropertySetter(value) { + this.__defineGetter__(name, function objectDefinePropertyGetter() { + return value; + }); + return value; + }); + obj[name] = def.value; + } + }; + })(); + (function checkXMLHttpRequestResponseCompatibility() { + if (typeof XMLHttpRequest === 'undefined') { + return; + } + var xhrPrototype = XMLHttpRequest.prototype; + var xhr = new XMLHttpRequest(); + if (!('overrideMimeType' in xhr)) { + Object.defineProperty(xhrPrototype, 'overrideMimeType', { + value: function xmlHttpRequestOverrideMimeType(mimeType) {} + }); + } + if ('responseType' in xhr) { + return; + } + Object.defineProperty(xhrPrototype, 'responseType', { + get: function xmlHttpRequestGetResponseType() { + return this._responseType || 'text'; + }, + set: function xmlHttpRequestSetResponseType(value) { + if (value === 'text' || value === 'arraybuffer') { + this._responseType = value; + if (value === 'arraybuffer' && typeof this.overrideMimeType === 'function') { + this.overrideMimeType('text/plain; charset=x-user-defined'); + } + } + } + }); + if (typeof VBArray !== 'undefined') { + Object.defineProperty(xhrPrototype, 'response', { + get: function xmlHttpRequestResponseGet() { + if (this.responseType === 'arraybuffer') { + return new Uint8Array(new VBArray(this.responseBody).toArray()); + } + return this.responseText; + } + }); + return; + } + Object.defineProperty(xhrPrototype, 'response', { + get: function xmlHttpRequestResponseGet() { + if (this.responseType !== 'arraybuffer') { + return this.responseText; + } + var text = this.responseText; + var i, + n = text.length; + var result = new Uint8Array(n); + for (i = 0; i < n; ++i) { + result[i] = text.charCodeAt(i) & 0xFF; + } + return result.buffer; + } + }); + })(); + (function checkWindowBtoaCompatibility() { + if ('btoa' in globalScope) { + return; + } + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + globalScope.btoa = function (chars) { + var buffer = ''; + var i, n; + for (i = 0, n = chars.length; i < n; i += 3) { + var b1 = chars.charCodeAt(i) & 0xFF; + var b2 = chars.charCodeAt(i + 1) & 0xFF; + var b3 = chars.charCodeAt(i + 2) & 0xFF; + var d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + var d3 = i + 1 < n ? (b2 & 0xF) << 2 | b3 >> 6 : 64; + var d4 = i + 2 < n ? b3 & 0x3F : 64; + buffer += digits.charAt(d1) + digits.charAt(d2) + digits.charAt(d3) + digits.charAt(d4); + } + return buffer; + }; + })(); + (function checkWindowAtobCompatibility() { + if ('atob' in globalScope) { + return; + } + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + globalScope.atob = function (input) { + input = input.replace(/=+$/, ''); + if (input.length % 4 === 1) { + throw new Error('bad atob input'); + } + for (var bc = 0, bs, buffer, idx = 0, output = ''; buffer = input.charAt(idx++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) { + buffer = digits.indexOf(buffer); + } + return output; + }; + })(); + (function checkFunctionPrototypeBindCompatibility() { + if (typeof Function.prototype.bind !== 'undefined') { + return; + } + Function.prototype.bind = function functionPrototypeBind(obj) { + var fn = this, + headArgs = Array.prototype.slice.call(arguments, 1); + var bound = function functionPrototypeBindBound() { + var args = headArgs.concat(Array.prototype.slice.call(arguments)); + return fn.apply(obj, args); + }; + return bound; + }; + })(); + (function checkDatasetProperty() { + if (!hasDOM) { + return; + } + var div = document.createElement('div'); + if ('dataset' in div) { + return; + } + Object.defineProperty(HTMLElement.prototype, 'dataset', { + get: function get() { + if (this._dataset) { + return this._dataset; + } + var dataset = {}; + for (var j = 0, jj = this.attributes.length; j < jj; j++) { + var attribute = this.attributes[j]; + if (attribute.name.substring(0, 5) !== 'data-') { + continue; + } + var key = attribute.name.substring(5).replace(/\-([a-z])/g, function (all, ch) { + return ch.toUpperCase(); + }); + dataset[key] = attribute.value; + } + Object.defineProperty(this, '_dataset', { + value: dataset, + writable: false, + enumerable: false + }); + return dataset; + }, + + enumerable: true + }); + })(); + (function checkClassListProperty() { + function changeList(element, itemName, add, remove) { + var s = element.className || ''; + var list = s.split(/\s+/g); + if (list[0] === '') { + list.shift(); + } + var index = list.indexOf(itemName); + if (index < 0 && add) { + list.push(itemName); + } + if (index >= 0 && remove) { + list.splice(index, 1); + } + element.className = list.join(' '); + return index >= 0; + } + if (!hasDOM) { + return; + } + var div = document.createElement('div'); + if ('classList' in div) { + return; + } + var classListPrototype = { + add: function add(name) { + changeList(this.element, name, true, false); + }, + contains: function contains(name) { + return changeList(this.element, name, false, false); + }, + remove: function remove(name) { + changeList(this.element, name, false, true); + }, + toggle: function toggle(name) { + changeList(this.element, name, true, true); + } + }; + Object.defineProperty(HTMLElement.prototype, 'classList', { + get: function get() { + if (this._classList) { + return this._classList; + } + var classList = Object.create(classListPrototype, { + element: { + value: this, + writable: false, + enumerable: true + } + }); + Object.defineProperty(this, '_classList', { + value: classList, + writable: false, + enumerable: false + }); + return classList; + }, + + enumerable: true + }); + })(); + (function checkWorkerConsoleCompatibility() { + if (typeof importScripts === 'undefined' || 'console' in globalScope) { + return; + } + var consoleTimer = {}; + var workerConsole = { + log: function log() { + var args = Array.prototype.slice.call(arguments); + globalScope.postMessage({ + targetName: 'main', + action: 'console_log', + data: args + }); + }, + error: function error() { + var args = Array.prototype.slice.call(arguments); + globalScope.postMessage({ + targetName: 'main', + action: 'console_error', + data: args + }); + }, + time: function time(name) { + consoleTimer[name] = Date.now(); + }, + timeEnd: function timeEnd(name) { + var time = consoleTimer[name]; + if (!time) { + throw new Error('Unknown timer name ' + name); + } + this.log('Timer:', name, Date.now() - time); + } + }; + globalScope.console = workerConsole; + })(); + (function checkConsoleCompatibility() { + if (!hasDOM) { + return; + } + if (!('console' in window)) { + window.console = { + log: function log() {}, + error: function error() {}, + warn: function warn() {} + }; + return; + } + if (!('bind' in console.log)) { + console.log = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.log); + console.error = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.error); + console.warn = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.warn); + return; + } + })(); + (function checkOnClickCompatibility() { + function ignoreIfTargetDisabled(event) { + if (isDisabled(event.target)) { + event.stopPropagation(); + } + } + function isDisabled(node) { + return node.disabled || node.parentNode && isDisabled(node.parentNode); + } + if (isOpera) { + document.addEventListener('click', ignoreIfTargetDisabled, true); + } + })(); + (function checkOnBlobSupport() { + if (isIE || isIOSChrome) { + PDFJS.disableCreateObjectURL = true; + } + })(); + (function checkNavigatorLanguage() { + if (typeof navigator === 'undefined') { + return; + } + if ('language' in navigator) { + return; + } + PDFJS.locale = navigator.userLanguage || 'en-US'; + })(); + (function checkRangeRequests() { + if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) { + PDFJS.disableRange = true; + PDFJS.disableStream = true; + } + })(); + (function checkHistoryManipulation() { + if (!hasDOM) { + return; + } + if (!history.pushState || isAndroidPre3) { + PDFJS.disableHistory = true; + } + })(); + (function checkSetPresenceInImageData() { + if (!hasDOM) { + return; + } + if (window.CanvasPixelArray) { + if (typeof window.CanvasPixelArray.prototype.set !== 'function') { + window.CanvasPixelArray.prototype.set = function (arr) { + for (var i = 0, ii = this.length; i < ii; i++) { + this[i] = arr[i]; + } + }; + } + } else { + var polyfill = false, + versionMatch; + if (isChrome) { + versionMatch = userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); + polyfill = versionMatch && parseInt(versionMatch[2]) < 21; + } else if (isAndroid) { + polyfill = isAndroidPre5; + } else if (isSafari) { + versionMatch = userAgent.match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); + polyfill = versionMatch && parseInt(versionMatch[1]) < 6; + } + if (polyfill) { + var contextPrototype = window.CanvasRenderingContext2D.prototype; + var createImageData = contextPrototype.createImageData; + contextPrototype.createImageData = function (w, h) { + var imageData = createImageData.call(this, w, h); + imageData.data.set = function (arr) { + for (var i = 0, ii = this.length; i < ii; i++) { + this[i] = arr[i]; + } + }; + return imageData; + }; + contextPrototype = null; + } + } + })(); + (function checkRequestAnimationFrame() { + function installFakeAnimationFrameFunctions() { + window.requestAnimationFrame = function (callback) { + return window.setTimeout(callback, 20); + }; + window.cancelAnimationFrame = function (timeoutID) { + window.clearTimeout(timeoutID); + }; + } + if (!hasDOM) { + return; + } + if (isIOS) { + installFakeAnimationFrameFunctions(); + return; + } + if ('requestAnimationFrame' in window) { + return; + } + window.requestAnimationFrame = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame; + if (window.requestAnimationFrame) { + return; + } + installFakeAnimationFrameFunctions(); + })(); + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + PDFJS.maxCanvasPixels = 5242880; + } + })(); + (function checkFullscreenSupport() { + if (!hasDOM) { + return; + } + if (isIE && window.parent !== window) { + PDFJS.disableFullscreen = true; + } + })(); + (function checkCurrentScript() { + if (!hasDOM) { + return; + } + if ('currentScript' in document) { + return; + } + Object.defineProperty(document, 'currentScript', { + get: function get() { + var scripts = document.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + }, + + enumerable: true, + configurable: true + }); + })(); + (function checkInputTypeNumberAssign() { + if (!hasDOM) { + return; + } + var el = document.createElement('input'); + try { + el.type = 'number'; + } catch (ex) { + var inputProto = el.constructor.prototype; + var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type'); + Object.defineProperty(inputProto, 'type', { + get: function get() { + return typeProperty.get.call(this); + }, + set: function set(value) { + typeProperty.set.call(this, value === 'number' ? 'text' : value); + }, + + enumerable: true, + configurable: true + }); + } + })(); + (function checkDocumentReadyState() { + if (!hasDOM) { + return; + } + if (!document.attachEvent) { + return; + } + var documentProto = document.constructor.prototype; + var readyStateProto = Object.getOwnPropertyDescriptor(documentProto, 'readyState'); + Object.defineProperty(documentProto, 'readyState', { + get: function get() { + var value = readyStateProto.get.call(this); + return value === 'interactive' ? 'loading' : value; + }, + set: function set(value) { + readyStateProto.set.call(this, value); + }, + + enumerable: true, + configurable: true + }); + })(); + (function checkChildNodeRemove() { + if (!hasDOM) { + return; + } + if (typeof Element.prototype.remove !== 'undefined') { + return; + } + Element.prototype.remove = function () { + if (this.parentNode) { + this.parentNode.removeChild(this); + } + }; + })(); + (function checkNumberIsNaN() { + if (Number.isNaN) { + return; + } + Number.isNaN = function (value) { + return typeof value === 'number' && isNaN(value); + }; + })(); + (function checkNumberIsInteger() { + if (Number.isInteger) { + return; + } + Number.isInteger = function (value) { + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; + }; + })(); + (function checkPromise() { + if (globalScope.Promise) { + if (typeof globalScope.Promise.all !== 'function') { + globalScope.Promise.all = function (iterable) { + var count = 0, + results = [], + resolve, + reject; + var promise = new globalScope.Promise(function (resolve_, reject_) { + resolve = resolve_; + reject = reject_; + }); + iterable.forEach(function (p, i) { + count++; + p.then(function (result) { + results[i] = result; + count--; + if (count === 0) { + resolve(results); + } + }, reject); + }); + if (count === 0) { + resolve(results); + } + return promise; + }; + } + if (typeof globalScope.Promise.resolve !== 'function') { + globalScope.Promise.resolve = function (value) { + return new globalScope.Promise(function (resolve) { + resolve(value); + }); + }; + } + if (typeof globalScope.Promise.reject !== 'function') { + globalScope.Promise.reject = function (reason) { + return new globalScope.Promise(function (resolve, reject) { + reject(reason); + }); + }; + } + if (typeof globalScope.Promise.prototype.catch !== 'function') { + globalScope.Promise.prototype.catch = function (onReject) { + return globalScope.Promise.prototype.then(undefined, onReject); + }; + } + return; + } + var STATUS_PENDING = 0; + var STATUS_RESOLVED = 1; + var STATUS_REJECTED = 2; + var REJECTION_TIMEOUT = 500; + var HandlerManager = { + handlers: [], + running: false, + unhandledRejections: [], + pendingRejectionCheck: false, + scheduleHandlers: function scheduleHandlers(promise) { + if (promise._status === STATUS_PENDING) { + return; + } + this.handlers = this.handlers.concat(promise._handlers); + promise._handlers = []; + if (this.running) { + return; + } + this.running = true; + setTimeout(this.runHandlers.bind(this), 0); + }, + runHandlers: function runHandlers() { + var RUN_TIMEOUT = 1; + var timeoutAt = Date.now() + RUN_TIMEOUT; + while (this.handlers.length > 0) { + var handler = this.handlers.shift(); + var nextStatus = handler.thisPromise._status; + var nextValue = handler.thisPromise._value; + try { + if (nextStatus === STATUS_RESOLVED) { + if (typeof handler.onResolve === 'function') { + nextValue = handler.onResolve(nextValue); + } + } else if (typeof handler.onReject === 'function') { + nextValue = handler.onReject(nextValue); + nextStatus = STATUS_RESOLVED; + if (handler.thisPromise._unhandledRejection) { + this.removeUnhandeledRejection(handler.thisPromise); + } + } + } catch (ex) { + nextStatus = STATUS_REJECTED; + nextValue = ex; + } + handler.nextPromise._updateStatus(nextStatus, nextValue); + if (Date.now() >= timeoutAt) { + break; + } + } + if (this.handlers.length > 0) { + setTimeout(this.runHandlers.bind(this), 0); + return; + } + this.running = false; + }, + addUnhandledRejection: function addUnhandledRejection(promise) { + this.unhandledRejections.push({ + promise: promise, + time: Date.now() + }); + this.scheduleRejectionCheck(); + }, + removeUnhandeledRejection: function removeUnhandeledRejection(promise) { + promise._unhandledRejection = false; + for (var i = 0; i < this.unhandledRejections.length; i++) { + if (this.unhandledRejections[i].promise === promise) { + this.unhandledRejections.splice(i); + i--; + } + } + }, + scheduleRejectionCheck: function scheduleRejectionCheck() { + var _this = this; + + if (this.pendingRejectionCheck) { + return; + } + this.pendingRejectionCheck = true; + setTimeout(function () { + _this.pendingRejectionCheck = false; + var now = Date.now(); + for (var i = 0; i < _this.unhandledRejections.length; i++) { + if (now - _this.unhandledRejections[i].time > REJECTION_TIMEOUT) { + var unhandled = _this.unhandledRejections[i].promise._value; + var msg = 'Unhandled rejection: ' + unhandled; + if (unhandled.stack) { + msg += '\n' + unhandled.stack; + } + try { + throw new Error(msg); + } catch (_) { + console.warn(msg); + } + _this.unhandledRejections.splice(i); + i--; + } + } + if (_this.unhandledRejections.length) { + _this.scheduleRejectionCheck(); + } + }, REJECTION_TIMEOUT); + } + }; + var Promise = function Promise(resolver) { + this._status = STATUS_PENDING; + this._handlers = []; + try { + resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); + } catch (e) { + this._reject(e); + } + }; + Promise.all = function Promise_all(promises) { + var resolveAll, rejectAll; + var deferred = new Promise(function (resolve, reject) { + resolveAll = resolve; + rejectAll = reject; + }); + var unresolved = promises.length; + var results = []; + if (unresolved === 0) { + resolveAll(results); + return deferred; + } + function reject(reason) { + if (deferred._status === STATUS_REJECTED) { + return; + } + results = []; + rejectAll(reason); + } + for (var i = 0, ii = promises.length; i < ii; ++i) { + var promise = promises[i]; + var resolve = function (i) { + return function (value) { + if (deferred._status === STATUS_REJECTED) { + return; + } + results[i] = value; + unresolved--; + if (unresolved === 0) { + resolveAll(results); + } + }; + }(i); + if (Promise.isPromise(promise)) { + promise.then(resolve, reject); + } else { + resolve(promise); + } + } + return deferred; + }; + Promise.isPromise = function Promise_isPromise(value) { + return value && typeof value.then === 'function'; + }; + Promise.resolve = function Promise_resolve(value) { + return new Promise(function (resolve) { + resolve(value); + }); + }; + Promise.reject = function Promise_reject(reason) { + return new Promise(function (resolve, reject) { + reject(reason); + }); + }; + Promise.prototype = { + _status: null, + _value: null, + _handlers: null, + _unhandledRejection: null, + _updateStatus: function Promise__updateStatus(status, value) { + if (this._status === STATUS_RESOLVED || this._status === STATUS_REJECTED) { + return; + } + if (status === STATUS_RESOLVED && Promise.isPromise(value)) { + value.then(this._updateStatus.bind(this, STATUS_RESOLVED), this._updateStatus.bind(this, STATUS_REJECTED)); + return; + } + this._status = status; + this._value = value; + if (status === STATUS_REJECTED && this._handlers.length === 0) { + this._unhandledRejection = true; + HandlerManager.addUnhandledRejection(this); + } + HandlerManager.scheduleHandlers(this); + }, + _resolve: function Promise_resolve(value) { + this._updateStatus(STATUS_RESOLVED, value); + }, + _reject: function Promise_reject(reason) { + this._updateStatus(STATUS_REJECTED, reason); + }, + then: function Promise_then(onResolve, onReject) { + var nextPromise = new Promise(function (resolve, reject) { + this.resolve = resolve; + this.reject = reject; + }); + this._handlers.push({ + thisPromise: this, + onResolve: onResolve, + onReject: onReject, + nextPromise: nextPromise + }); + HandlerManager.scheduleHandlers(this); + return nextPromise; + }, + catch: function Promise_catch(onReject) { + return this.then(undefined, onReject); + } + }; + globalScope.Promise = Promise; + })(); + (function checkWeakMap() { + if (globalScope.WeakMap) { + return; + } + var id = 0; + function WeakMap() { + this.id = '$weakmap' + id++; + } + WeakMap.prototype = { + has: function has(obj) { + if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && typeof obj !== 'function' || obj === null) { + return false; + } + return !!Object.getOwnPropertyDescriptor(obj, this.id); + }, + get: function get(obj) { + return this.has(obj) ? obj[this.id] : undefined; + }, + set: function set(obj, value) { + Object.defineProperty(obj, this.id, { + value: value, + enumerable: false, + configurable: true + }); + }, + delete: function _delete(obj) { + delete obj[this.id]; + } + }; + globalScope.WeakMap = WeakMap; + })(); + (function checkURLConstructor() { + var hasWorkingUrl = false; + try { + if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { + var u = new URL('b', 'http://a'); + u.pathname = 'c%20d'; + hasWorkingUrl = u.href === 'http://a/c%20d'; + } + } catch (e) {} + if (hasWorkingUrl) { + return; + } + var relative = Object.create(null); + relative['ftp'] = 21; + relative['file'] = 0; + relative['gopher'] = 70; + relative['http'] = 80; + relative['https'] = 443; + relative['ws'] = 80; + relative['wss'] = 443; + var relativePathDotMapping = Object.create(null); + relativePathDotMapping['%2e'] = '.'; + relativePathDotMapping['.%2e'] = '..'; + relativePathDotMapping['%2e.'] = '..'; + relativePathDotMapping['%2e%2e'] = '..'; + function isRelativeScheme(scheme) { + return relative[scheme] !== undefined; + } + function invalid() { + clear.call(this); + this._isInvalid = true; + } + function IDNAToASCII(h) { + if (h === '') { + invalid.call(this); + } + return h.toLowerCase(); + } + function percentEscape(c) { + var unicode = c.charCodeAt(0); + if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { + return c; + } + return encodeURIComponent(c); + } + function percentEscapeQuery(c) { + var unicode = c.charCodeAt(0); + if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { + return c; + } + return encodeURIComponent(c); + } + var EOF, + ALPHA = /[a-zA-Z]/, + ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; + function parse(input, stateOverride, base) { + function err(message) { + errors.push(message); + } + var state = stateOverride || 'scheme start', + cursor = 0, + buffer = '', + seenAt = false, + seenBracket = false, + errors = []; + loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { + var c = input[cursor]; + switch (state) { + case 'scheme start': + if (c && ALPHA.test(c)) { + buffer += c.toLowerCase(); + state = 'scheme'; + } else if (!stateOverride) { + buffer = ''; + state = 'no scheme'; + continue; + } else { + err('Invalid scheme.'); + break loop; + } + break; + case 'scheme': + if (c && ALPHANUMERIC.test(c)) { + buffer += c.toLowerCase(); + } else if (c === ':') { + this._scheme = buffer; + buffer = ''; + if (stateOverride) { + break loop; + } + if (isRelativeScheme(this._scheme)) { + this._isRelative = true; + } + if (this._scheme === 'file') { + state = 'relative'; + } else if (this._isRelative && base && base._scheme === this._scheme) { + state = 'relative or authority'; + } else if (this._isRelative) { + state = 'authority first slash'; + } else { + state = 'scheme data'; + } + } else if (!stateOverride) { + buffer = ''; + cursor = 0; + state = 'no scheme'; + continue; + } else if (c === EOF) { + break loop; + } else { + err('Code point not allowed in scheme: ' + c); + break loop; + } + break; + case 'scheme data': + if (c === '?') { + this._query = '?'; + state = 'query'; + } else if (c === '#') { + this._fragment = '#'; + state = 'fragment'; + } else { + if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._schemeData += percentEscape(c); + } + } + break; + case 'no scheme': + if (!base || !isRelativeScheme(base._scheme)) { + err('Missing scheme.'); + invalid.call(this); + } else { + state = 'relative'; + continue; + } + break; + case 'relative or authority': + if (c === '/' && input[cursor + 1] === '/') { + state = 'authority ignore slashes'; + } else { + err('Expected /, got: ' + c); + state = 'relative'; + continue; + } + break; + case 'relative': + this._isRelative = true; + if (this._scheme !== 'file') { + this._scheme = base._scheme; + } + if (c === EOF) { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = base._query; + this._username = base._username; + this._password = base._password; + break loop; + } else if (c === '/' || c === '\\') { + if (c === '\\') { + err('\\ is an invalid code point.'); + } + state = 'relative slash'; + } else if (c === '?') { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = '?'; + this._username = base._username; + this._password = base._password; + state = 'query'; + } else if (c === '#') { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = base._query; + this._fragment = '#'; + this._username = base._username; + this._password = base._password; + state = 'fragment'; + } else { + var nextC = input[cursor + 1]; + var nextNextC = input[cursor + 2]; + if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { + this._host = base._host; + this._port = base._port; + this._username = base._username; + this._password = base._password; + this._path = base._path.slice(); + this._path.pop(); + } + state = 'relative path'; + continue; + } + break; + case 'relative slash': + if (c === '/' || c === '\\') { + if (c === '\\') { + err('\\ is an invalid code point.'); + } + if (this._scheme === 'file') { + state = 'file host'; + } else { + state = 'authority ignore slashes'; + } + } else { + if (this._scheme !== 'file') { + this._host = base._host; + this._port = base._port; + this._username = base._username; + this._password = base._password; + } + state = 'relative path'; + continue; + } + break; + case 'authority first slash': + if (c === '/') { + state = 'authority second slash'; + } else { + err('Expected \'/\', got: ' + c); + state = 'authority ignore slashes'; + continue; + } + break; + case 'authority second slash': + state = 'authority ignore slashes'; + if (c !== '/') { + err('Expected \'/\', got: ' + c); + continue; + } + break; + case 'authority ignore slashes': + if (c !== '/' && c !== '\\') { + state = 'authority'; + continue; + } else { + err('Expected authority, got: ' + c); + } + break; + case 'authority': + if (c === '@') { + if (seenAt) { + err('@ already seen.'); + buffer += '%40'; + } + seenAt = true; + for (var i = 0; i < buffer.length; i++) { + var cp = buffer[i]; + if (cp === '\t' || cp === '\n' || cp === '\r') { + err('Invalid whitespace in authority.'); + continue; + } + if (cp === ':' && this._password === null) { + this._password = ''; + continue; + } + var tempC = percentEscape(cp); + if (this._password !== null) { + this._password += tempC; + } else { + this._username += tempC; + } + } + buffer = ''; + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + cursor -= buffer.length; + buffer = ''; + state = 'host'; + continue; + } else { + buffer += c; + } + break; + case 'file host': + if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { + state = 'relative path'; + } else if (buffer.length === 0) { + state = 'relative path start'; + } else { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'relative path start'; + } + continue; + } else if (c === '\t' || c === '\n' || c === '\r') { + err('Invalid whitespace in file host.'); + } else { + buffer += c; + } + break; + case 'host': + case 'hostname': + if (c === ':' && !seenBracket) { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'port'; + if (stateOverride === 'hostname') { + break loop; + } + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'relative path start'; + if (stateOverride) { + break loop; + } + continue; + } else if (c !== '\t' && c !== '\n' && c !== '\r') { + if (c === '[') { + seenBracket = true; + } else if (c === ']') { + seenBracket = false; + } + buffer += c; + } else { + err('Invalid code point in host/hostname: ' + c); + } + break; + case 'port': + if (/[0-9]/.test(c)) { + buffer += c; + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { + if (buffer !== '') { + var temp = parseInt(buffer, 10); + if (temp !== relative[this._scheme]) { + this._port = temp + ''; + } + buffer = ''; + } + if (stateOverride) { + break loop; + } + state = 'relative path start'; + continue; + } else if (c === '\t' || c === '\n' || c === '\r') { + err('Invalid code point in port: ' + c); + } else { + invalid.call(this); + } + break; + case 'relative path start': + if (c === '\\') { + err('\'\\\' not allowed in path.'); + } + state = 'relative path'; + if (c !== '/' && c !== '\\') { + continue; + } + break; + case 'relative path': + if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { + if (c === '\\') { + err('\\ not allowed in relative path.'); + } + var tmp; + if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { + buffer = tmp; + } + if (buffer === '..') { + this._path.pop(); + if (c !== '/' && c !== '\\') { + this._path.push(''); + } + } else if (buffer === '.' && c !== '/' && c !== '\\') { + this._path.push(''); + } else if (buffer !== '.') { + if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { + buffer = buffer[0] + ':'; + } + this._path.push(buffer); + } + buffer = ''; + if (c === '?') { + this._query = '?'; + state = 'query'; + } else if (c === '#') { + this._fragment = '#'; + state = 'fragment'; + } + } else if (c !== '\t' && c !== '\n' && c !== '\r') { + buffer += percentEscape(c); + } + break; + case 'query': + if (!stateOverride && c === '#') { + this._fragment = '#'; + state = 'fragment'; + } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._query += percentEscapeQuery(c); + } + break; + case 'fragment': + if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._fragment += c; + } + break; + } + cursor++; + } + } + function clear() { + this._scheme = ''; + this._schemeData = ''; + this._username = ''; + this._password = null; + this._host = ''; + this._port = ''; + this._path = []; + this._query = ''; + this._fragment = ''; + this._isInvalid = false; + this._isRelative = false; + } + function JURL(url, base) { + if (base !== undefined && !(base instanceof JURL)) { + base = new JURL(String(base)); + } + this._url = url; + clear.call(this); + var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); + parse.call(this, input, null, base); + } + JURL.prototype = { + toString: function toString() { + return this.href; + }, + + get href() { + if (this._isInvalid) { + return this._url; + } + var authority = ''; + if (this._username !== '' || this._password !== null) { + authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; + } + return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; + }, + set href(value) { + clear.call(this); + parse.call(this, value); + }, + get protocol() { + return this._scheme + ':'; + }, + set protocol(value) { + if (this._isInvalid) { + return; + } + parse.call(this, value + ':', 'scheme start'); + }, + get host() { + return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; + }, + set host(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'host'); + }, + get hostname() { + return this._host; + }, + set hostname(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'hostname'); + }, + get port() { + return this._port; + }, + set port(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'port'); + }, + get pathname() { + return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; + }, + set pathname(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + this._path = []; + parse.call(this, value, 'relative path start'); + }, + get search() { + return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; + }, + set search(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + this._query = '?'; + if (value[0] === '?') { + value = value.slice(1); + } + parse.call(this, value, 'query'); + }, + get hash() { + return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; + }, + set hash(value) { + if (this._isInvalid) { + return; + } + this._fragment = '#'; + if (value[0] === '#') { + value = value.slice(1); + } + parse.call(this, value, 'fragment'); + }, + get origin() { + var host; + if (this._isInvalid || !this._scheme) { + return ''; + } + switch (this._scheme) { + case 'data': + case 'file': + case 'javascript': + case 'mailto': + return 'null'; + case 'blob': + try { + return new JURL(this._schemeData).origin || 'null'; + } catch (_) {} + return 'null'; + } + host = this.host; + if (!host) { + return ''; + } + return this._scheme + '://' + host; + } + }; + var OriginalURL = globalScope.URL; + if (OriginalURL) { + JURL.createObjectURL = function (blob) { + return OriginalURL.createObjectURL.apply(OriginalURL, arguments); + }; + JURL.revokeObjectURL = function (url) { + OriginalURL.revokeObjectURL(url); + }; + } + globalScope.URL = JURL; + })(); +} + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var isReadableStreamSupported = false; +if (typeof ReadableStream !== 'undefined') { + try { + new ReadableStream({ + start: function start(controller) { + controller.close(); + } + }); + isReadableStreamSupported = true; + } catch (e) {} +} +if (isReadableStreamSupported) { + exports.ReadableStream = ReadableStream; +} else { + exports.ReadableStream = __w_pdfjs_require__(10).ReadableStream; +} + +/***/ }) +/******/ ]); +}); +//# sourceMappingURL=pdf.js.map \ No newline at end of file diff --git a/public/static/build/pdf.js.map b/public/static/build/pdf.js.map new file mode 100644 index 0000000..d50a381 --- /dev/null +++ b/public/static/build/pdf.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap b5fe8ab6eb949fc98816","webpack:///src/shared/util.js","webpack:///src/display/dom_utils.js","webpack:///src/display/api.js","webpack:///src/display/annotation_layer.js","webpack:///src/display/svg.js","webpack:///src/display/text_layer.js","webpack:///src/display/metadata.js","webpack:///src/display/webgl.js","webpack:///src/display/global.js","webpack:///src/display/network.js","webpack:///external/streams/streams-lib.js","webpack:///src/display/canvas.js","webpack:///src/display/font_loader.js","webpack:///src/display/pattern_helper.js","webpack:///src/display/transport_stream.js","webpack:///src/pdf.js","webpack:///src/shared/compatibility.js","webpack:///src/shared/streams_polyfill.js"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__w_pdfjs_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 15);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap b5fe8ab6eb949fc98816","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self : this;\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: 'none',\n DECODE: 'decode',\n DISPLAY: 'display',\n};\n\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nvar AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nvar AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nvar AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9,\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10,\n};\n\nvar VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5,\n};\n\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nvar OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nvar verbosity = VERBOSITY_LEVELS.warnings;\n\nfunction setVerbosityLevel(level) {\n verbosity = level;\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Deprecated API function -- display regardless of the PDFJS.verbosity setting.\nfunction deprecated(details) {\n console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nvar UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font',\n};\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n try {\n var base = new URL(baseUrl);\n if (!base.origin || base.origin === 'null') {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case 'http:':\n case 'https:':\n case 'ftp:':\n case 'mailto:':\n case 'tel:':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL (utilizing `isValidProtocol`).\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value,\n enumerable: true,\n configurable: true,\n writable: false, });\n return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n var lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n function FormatError(msg) {\n this.message = msg;\n }\n\n FormatError.prototype = new Error();\n FormatError.prototype.name = 'FormatError';\n FormatError.constructor = FormatError;\n\n return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n function AbortException(msg) {\n this.name = 'AbortException';\n this.message = msg;\n }\n\n AbortException.prototype = new Error();\n AbortException.constructor = AbortException;\n\n return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== 'string') {\n warn('The argument for removeNullCharacters must be a string.');\n return str;\n }\n return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n // Shortcut: if first and only item is Uint8Array, return it.\n if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n return arr[0];\n }\n var resultLength = 0;\n var i, ii = arr.length;\n var item, itemLength;\n for (i = 0; i < ii; i++) {\n item = arr[i];\n itemLength = arrayByteLength(item);\n resultLength += itemLength;\n }\n var pos = 0;\n var data = new Uint8Array(resultLength);\n for (i = 0; i < ii; i++) {\n item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === 'string') {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(''); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n var ROMAN_NUMBER_MAP = [\n '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n ];\n /**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default is false.\n * @return {string} The resulting Roman number.\n */\n Util.toRoman = function Util_toRoman(number, lowerCase) {\n assert(isInt(number) && number > 0,\n 'The number should be a positive integer.');\n var pos, romanBuf = [];\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push('M');\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n var romanStr = romanBuf.join('');\n return (lowerCase ? romanStr.toLowerCase() : romanStr);\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty =\n function Util_getInheritableProperty(dict, name, getArray) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return getArray ? dict.getArray(name) : dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PageViewport\n */\nvar PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n },\n };\n return PageViewport;\n})();\n\nvar PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\nfunction isNodeJS() {\n // eslint-disable-next-line no-undef\n return typeof process === 'object' && process + '' === '[object process]';\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = Object.create(null);\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end': Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n },\n toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n },\n };\n return StatTimer;\n})();\n\nvar createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType, });\n }\n throw new Error('The \"Blob\" constructor is not supported.');\n};\n\nvar createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction resolveCall(fn, args, thisArg = null) {\n if (!fn) {\n return Promise.resolve(undefined);\n }\n return new Promise((resolve, reject) => {\n resolve(fn.apply(thisArg, args));\n });\n}\n\nfunction wrapReason(reason) {\n if (typeof reason !== 'object') {\n return reason;\n }\n switch (reason.name) {\n case 'AbortException':\n return new AbortException(reason.message);\n case 'MissingPDFException':\n return new MissingPDFException(reason.message);\n case 'UnexpectedResponseException':\n return new UnexpectedResponseException(reason.message, reason.status);\n default:\n return new UnknownErrorException(reason.message, reason.details);\n }\n}\n\nfunction resolveOrReject(capability, success, reason) {\n if (success) {\n capability.resolve();\n } else {\n capability.reject(reason);\n }\n}\n\nfunction finalize(promise) {\n return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n let ah = this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = (event) => {\n let data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n } else if (data.isReply) {\n let callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n let callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(wrapReason(data.error));\n } else {\n callback.resolve(data.data);\n }\n } else {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n } else if (data.action in ah) {\n let action = ah[data.action];\n if (data.callbackId) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then((result) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n data: result,\n });\n }, (reason) => {\n if (reason instanceof Error) {\n // Serialize error to avoid \"DataCloneError\"\n reason = reason + '';\n }\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n error: reason,\n });\n });\n } else if (data.streamId) {\n this._createStreamSink(data);\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n };\n comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n on(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n */\n send(actionName, data, transfers) {\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n callbackId,\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @return {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n let streamId = this.streamId++;\n let sourceName = this.sourceName;\n let targetName = this.targetName;\n\n return new ReadableStream({\n start: (controller) => {\n let startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n isClosed: false,\n };\n this.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n });\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: (controller) => {\n let pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'pull',\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: (reason) => {\n let cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'cancel',\n reason,\n streamId,\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n }, queueingStrategy);\n },\n\n _createStreamSink(data) {\n let self = this;\n let action = this.actionHandler[data.action];\n let streamId = data.streamId;\n let desiredSize = data.desiredSize;\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let capability = createPromiseCapability();\n\n let sendStreamRequest = ({ stream, chunk, transfers,\n success, reason, }) => {\n this.postMessage({ sourceName, targetName, stream, streamId,\n chunk, success, reason, }, transfers);\n };\n\n let streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n let lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n sendStreamRequest({ stream: 'close', });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'error', reason, });\n },\n\n sinkCapability: capability,\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n sendStreamRequest({ stream: 'start_complete', success: true, });\n }, (reason) => {\n sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n });\n },\n\n _processStreamMessage(data) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let streamId = data.streamId;\n\n let sendStreamResponse = ({ stream, success, reason, }) => {\n this.comObj.postMessage({ sourceName, targetName, stream,\n success, streamId, reason, });\n };\n\n let deleteStreamController = () => {\n // Delete streamController only when start, pull and\n // cancel callbacks are resolved, to avoid \"TypeError\".\n Promise.all([\n this.streamControllers[data.streamId].startCall,\n this.streamControllers[data.streamId].pullCall,\n this.streamControllers[data.streamId].cancelCall\n ].map(function(capability) {\n return capability && finalize(capability.promise);\n })).then(() => {\n delete this.streamControllers[data.streamId];\n });\n };\n\n switch (data.stream) {\n case 'start_complete':\n resolveOrReject(this.streamControllers[data.streamId].startCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull_complete':\n resolveOrReject(this.streamControllers[data.streamId].pullCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull':\n // Ignore any pull after close is called.\n if (!this.streamSinks[data.streamId]) {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n data.desiredSize > 0) {\n this.streamSinks[data.streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'pull_complete',\n success: false, reason, });\n });\n break;\n case 'enqueue':\n assert(this.streamControllers[data.streamId],\n 'enqueue should have stream controller');\n if (!this.streamControllers[data.streamId].isClosed) {\n this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n }\n break;\n case 'close':\n assert(this.streamControllers[data.streamId],\n 'close should have stream controller');\n if (this.streamControllers[data.streamId].isClosed) {\n break;\n }\n this.streamControllers[data.streamId].isClosed = true;\n this.streamControllers[data.streamId].controller.close();\n deleteStreamController();\n break;\n case 'error':\n assert(this.streamControllers[data.streamId],\n 'error should have stream controller');\n this.streamControllers[data.streamId].controller.\n error(wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel_complete':\n resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n data.success, wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel':\n if (!this.streamSinks[data.streamId]) {\n break;\n }\n resolveCall(this.streamSinks[data.streamId].onCancel,\n [wrapReason(data.reason)]).then(() => {\n sendStreamResponse({ stream: 'cancel_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'cancel_complete',\n success: false, reason, });\n });\n this.streamSinks[data.streamId].sinkCapability.\n reject(wrapReason(data.reason));\n this.streamSinks[data.streamId].isCancelled = true;\n delete this.streamSinks[data.streamId];\n break;\n default:\n throw new Error('Unexpected stream case');\n }\n },\n\n /**\n * Sends raw message to the comObj.\n * @private\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n },\n\n destroy() {\n this.comObj.removeEventListener('message', this._onComObjOnMessage);\n },\n};\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}\n\nexport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VERBOSITY_LEVELS,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MessageHandler,\n MissingDataException,\n MissingPDFException,\n NativeImageDecoding,\n NotImplementedException,\n PageViewport,\n PasswordException,\n PasswordResponses,\n StatTimer,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n XRefParseException,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createBlob,\n createPromiseCapability,\n createObjectURL,\n deprecated,\n getLookupTableFactory,\n getVerbosityLevel,\n globalScope,\n info,\n isArray,\n isArrayBuffer,\n isBool,\n isEmptyObj,\n isInt,\n isNum,\n isString,\n isSpace,\n isNodeJS,\n isSameOrigin,\n createValidAbsoluteUrl,\n isLittleEndian,\n isEvalSupported,\n loadJpegStream,\n log2,\n readInt8,\n readUint16,\n readUint32,\n removeNullCharacters,\n ReadableStream,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/shared/util.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType, createValidAbsoluteUrl, deprecated, globalScope,\n removeNullCharacters, stringToBytes, warn\n} from '../shared/util';\n\nvar DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\n\nclass DOMCanvasFactory {\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n let canvas = document.createElement('canvas');\n let context = canvas.getContext('2d');\n canvas.width = width;\n canvas.height = height;\n return {\n canvas,\n context,\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n if (width <= 0 || height <= 0) {\n throw new Error('invalid canvas size');\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error('canvas is not specified');\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n}\n\nclass DOMCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false, }) {\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n fetch({ name, }) {\n if (!name) {\n return Promise.reject(new Error('CMap name must be specified.'));\n }\n return new Promise((resolve, reject) => {\n let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');\n\n let request = new XMLHttpRequest();\n request.open('GET', url, true);\n\n if (this.isCompressed) {\n request.responseType = 'arraybuffer';\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (this.isCompressed && request.response) {\n data = new Uint8Array(request.response);\n } else if (!this.isCompressed && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve({\n cMapData: data,\n compressionType: this.isCompressed ?\n CMapCompressionType.BINARY : CMapCompressionType.NONE,\n });\n return;\n }\n }\n reject(new Error('Unable to load ' +\n (this.isCompressed ? 'binary ' : '') +\n 'CMap at: ' + url));\n };\n\n request.send(null);\n });\n }\n}\n\n/**\n * Optimised CSS custom property getter/setter.\n * @class\n */\nvar CustomStyle = (function CustomStyleClosure() {\n\n // As noted on: http://www.zachstronaut.com/posts/2009/02/17/\n // animate-css-transforms-firefox-webkit.html\n // in some versions of IE9 it is critical that ms appear in this list\n // before Moz\n var prefixes = ['ms', 'Moz', 'Webkit', 'O'];\n var _cache = Object.create(null);\n\n function CustomStyle() {}\n\n CustomStyle.getProp = function get(propName, element) {\n // check cache only when no element is given\n if (arguments.length === 1 && typeof _cache[propName] === 'string') {\n return _cache[propName];\n }\n\n element = element || document.documentElement;\n var style = element.style, prefixed, uPropName;\n\n // test standard property first\n if (typeof style[propName] === 'string') {\n return (_cache[propName] = propName);\n }\n\n // capitalize\n uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);\n\n // test vendor specific properties\n for (var i = 0, l = prefixes.length; i < l; i++) {\n prefixed = prefixes[i] + uPropName;\n if (typeof style[prefixed] === 'string') {\n return (_cache[propName] = prefixed);\n }\n }\n\n // If all fails then set to undefined.\n return (_cache[propName] = 'undefined');\n };\n\n CustomStyle.setProp = function set(propName, element, str) {\n var prop = this.getProp(propName);\n if (prop !== 'undefined') {\n element.style[prop] = str;\n }\n };\n\n return CustomStyle;\n})();\n\nvar RenderingCancelledException = (function RenderingCancelledException() {\n function RenderingCancelledException(msg, type) {\n this.message = msg;\n this.type = type;\n }\n\n RenderingCancelledException.prototype = new Error();\n RenderingCancelledException.prototype.name = 'RenderingCancelledException';\n RenderingCancelledException.constructor = RenderingCancelledException;\n\n return RenderingCancelledException;\n})();\n\nvar LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\nvar LinkTargetStringMap = [\n '',\n '_self',\n '_blank',\n '_parent',\n '_top'\n];\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} target - The link target.\n * @property {string} rel - The link relationship.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLLinkElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, params) {\n var url = params && params.url;\n link.href = link.title = (url ? removeNullCharacters(url) : '');\n\n if (url) {\n var target = params.target;\n if (typeof target === 'undefined') {\n target = getDefaultSetting('externalLinkTarget');\n }\n link.target = LinkTargetStringMap[target];\n\n var rel = params.rel;\n if (typeof rel === 'undefined') {\n rel = getDefaultSetting('externalLinkRel');\n }\n link.rel = rel;\n }\n}\n\n// Gets the file name from a given URL.\nfunction getFilenameFromUrl(url) {\n var anchor = url.indexOf('#');\n var query = url.indexOf('?');\n var end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length);\n return url.substring(url.lastIndexOf('/', end) + 1, end);\n}\n\nfunction getDefaultSetting(id) {\n // The list of the settings and their default is maintained for backward\n // compatibility and shall not be extended or modified. See also global.js.\n var globalSettings = globalScope.PDFJS;\n switch (id) {\n case 'pdfBug':\n return globalSettings ? globalSettings.pdfBug : false;\n case 'disableAutoFetch':\n return globalSettings ? globalSettings.disableAutoFetch : false;\n case 'disableStream':\n return globalSettings ? globalSettings.disableStream : false;\n case 'disableRange':\n return globalSettings ? globalSettings.disableRange : false;\n case 'disableFontFace':\n return globalSettings ? globalSettings.disableFontFace : false;\n case 'disableCreateObjectURL':\n return globalSettings ? globalSettings.disableCreateObjectURL : false;\n case 'disableWebGL':\n return globalSettings ? globalSettings.disableWebGL : true;\n case 'cMapUrl':\n return globalSettings ? globalSettings.cMapUrl : null;\n case 'cMapPacked':\n return globalSettings ? globalSettings.cMapPacked : false;\n case 'postMessageTransfers':\n return globalSettings ? globalSettings.postMessageTransfers : true;\n case 'workerPort':\n return globalSettings ? globalSettings.workerPort : null;\n case 'workerSrc':\n return globalSettings ? globalSettings.workerSrc : null;\n case 'disableWorker':\n return globalSettings ? globalSettings.disableWorker : false;\n case 'maxImageSize':\n return globalSettings ? globalSettings.maxImageSize : -1;\n case 'imageResourcesPath':\n return globalSettings ? globalSettings.imageResourcesPath : '';\n case 'isEvalSupported':\n return globalSettings ? globalSettings.isEvalSupported : true;\n case 'externalLinkTarget':\n if (!globalSettings) {\n return LinkTarget.NONE;\n }\n switch (globalSettings.externalLinkTarget) {\n case LinkTarget.NONE:\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return globalSettings.externalLinkTarget;\n }\n warn('PDFJS.externalLinkTarget is invalid: ' +\n globalSettings.externalLinkTarget);\n // Reset the external link target, to suppress further warnings.\n globalSettings.externalLinkTarget = LinkTarget.NONE;\n return LinkTarget.NONE;\n case 'externalLinkRel':\n return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL;\n case 'enableStats':\n return !!(globalSettings && globalSettings.enableStats);\n case 'pdfjsNext':\n return !!(globalSettings && globalSettings.pdfjsNext);\n default:\n throw new Error('Unknown default setting: ' + id);\n }\n}\n\nfunction isExternalLinkTargetSet() {\n var externalLinkTarget = getDefaultSetting('externalLinkTarget');\n switch (externalLinkTarget) {\n case LinkTarget.NONE:\n return false;\n case LinkTarget.SELF:\n case LinkTarget.BLANK:\n case LinkTarget.PARENT:\n case LinkTarget.TOP:\n return true;\n }\n}\n\nfunction isValidUrl(url, allowRelative) {\n deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.');\n var baseUrl = allowRelative ? 'http://example.com' : null;\n return createValidAbsoluteUrl(url, baseUrl) !== null;\n}\n\nexport {\n CustomStyle,\n RenderingCancelledException,\n addLinkAttributes,\n isExternalLinkTargetSet,\n isValidUrl,\n getFilenameFromUrl,\n LinkTarget,\n getDefaultSetting,\n DEFAULT_LINK_REL,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/dom_utils.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals requirejs, __non_webpack_require__ */\n\nimport {\n assert, createPromiseCapability, deprecated, getVerbosityLevel, globalScope,\n info, InvalidPDFException, isArray, isArrayBuffer, isInt, isSameOrigin,\n loadJpegStream, MessageHandler, MissingPDFException, NativeImageDecoding,\n PageViewport, PasswordException, StatTimer, stringToBytes,\n UnexpectedResponseException, UnknownErrorException, Util, warn\n} from '../shared/util';\nimport {\n DOMCanvasFactory, DOMCMapReaderFactory, getDefaultSetting,\n RenderingCancelledException\n} from './dom_utils';\nimport { FontFaceObject, FontLoader } from './font_loader';\nimport { CanvasGraphics } from './canvas';\nimport { Metadata } from './metadata';\nimport { PDFDataTransportStream } from './transport_stream';\n\nvar DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\n\nvar isWorkerDisabled = false;\nvar workerSrc;\nvar isPostMessageTransfersDisabled = false;\n\nvar pdfjsFilePath =\n typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n typeof document !== 'undefined' && document.currentScript ?\n document.currentScript.src : null;\n\nvar fakeWorkerFilesLoader = null;\nvar useRequireEnsure = false;\nif (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('GENERIC && !SINGLE_FILE')) {\n // For GENERIC build we need add support of different fake file loaders\n // for different frameworks.\n if (typeof window === 'undefined') {\n // node.js - disable worker and set require.ensure.\n isWorkerDisabled = true;\n if (typeof __non_webpack_require__.ensure === 'undefined') {\n __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');\n }\n useRequireEnsure = true;\n } else if (typeof __non_webpack_require__ !== 'undefined' &&\n typeof __non_webpack_require__.ensure === 'function') {\n useRequireEnsure = true;\n }\n if (typeof requirejs !== 'undefined' && requirejs.toUrl) {\n workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');\n }\n var dynamicLoaderSupported =\n typeof requirejs !== 'undefined' && requirejs.load;\n fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {\n __non_webpack_require__.ensure([], function () {\n var worker;\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {\n worker = __non_webpack_require__('../pdf.worker.js');\n } else {\n worker = __non_webpack_require__('./pdf.worker.js');\n }\n callback(worker.WorkerMessageHandler);\n });\n }) : dynamicLoaderSupported ? (function (callback) {\n requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {\n callback(worker.WorkerMessageHandler);\n });\n }) : null;\n}\n\n/** @type IPDFStream */\nvar PDFNetworkStream;\n\n/**\n * Sets PDFNetworkStream class to be used as alternative PDF data transport.\n * @param {IPDFStream} cls - the PDF data transport.\n */\nfunction setPDFNetworkStreamClass(cls) {\n PDFNetworkStream = cls;\n}\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string} url - The URL of the PDF.\n * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays\n * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,\n * use atob() to convert it to a binary string first.\n * @property {Object} httpHeaders - Basic authentication headers.\n * @property {boolean} withCredentials - Indicates whether or not cross-site\n * Access-Control requests should be made using credentials such as cookies\n * or authorization headers. The default is false.\n * @property {string} password - For decrypting password-protected PDFs.\n * @property {TypedArray} initialData - A typed array with the first portion or\n * all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} length - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} range\n * @property {number} rangeChunkSize - Optional parameter to specify\n * maximum number of bytes fetched per range request. The default value is\n * 2^16 = 65536.\n * @property {PDFWorker} worker - The worker that will be used for the loading\n * and parsing of the PDF data.\n * @property {string} docBaseUrl - (optional) The base URL of the document,\n * used when attempting to recover valid absolute URLs for annotations, and\n * outline items, that (incorrectly) only specify relative URLs.\n * @property {boolean} disableNativeImageDecoder - (deprecated) Disable decoding\n * of certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image support, such as e.g. Node.js.\n * The default value is `false`.\n * @property {string} nativeImageDecoderSupport - (optional) Strategy for\n * decoding certain (simple) JPEG images in the browser. This is useful for\n * environments without DOM image and canvas support, such as e.g. Node.js.\n * Valid values are 'decode', 'display' or 'none'; where 'decode' is intended\n * for browsers with full image/canvas support, 'display' for environments\n * with limited image support through stubs (useful for SVG conversion),\n * and 'none' where JPEG images will be decoded entirely by PDF.js.\n * The default value is 'decode'.\n * @property {Object} CMapReaderFactory - (optional) The factory that will be\n * used when reading built-in CMap files. Providing a custom factory is useful\n * for environments without `XMLHttpRequest` support, such as e.g. Node.js.\n * The default value is {DOMCMapReaderFactory}.\n * @property {boolean} stopAtErrors - (optional) Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n */\n\n/**\n * @typedef {Object} PDFDocumentStats\n * @property {Array} streamTypes - Used stream types in the document (an item\n * is set to true if specific stream ID was used in the document).\n * @property {Array} fontTypes - Used font type in the document (an item is set\n * to true if specific font ID was used in the document).\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)\n * is used, which means it must follow the same origin rules that any XHR does\n * e.g. No cross domain requests without CORS.\n *\n * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src\n * Can be a url to where a PDF is located, a typed array (Uint8Array)\n * already populated with data or parameter object.\n *\n * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used\n * if you want to manually serve range requests for data in the PDF.\n *\n * @param {function} passwordCallback (deprecated) It is used to request a\n * password if wrong or no password was provided. The callback receives two\n * parameters: function that needs to be called with new password and reason\n * (see {PasswordResponses}).\n *\n * @param {function} progressCallback (deprecated) It is used to be able to\n * monitor the loading progress of the PDF file (necessary to implement e.g.\n * a loading bar). The callback receives an {Object} with the properties:\n * {number} loaded and {number} total.\n *\n * @return {PDFDocumentLoadingTask}\n */\nfunction getDocument(src, pdfDataRangeTransport,\n passwordCallback, progressCallback) {\n var task = new PDFDocumentLoadingTask();\n\n // Support of the obsolete arguments (for compatibility with API v1.0)\n if (arguments.length > 1) {\n deprecated('getDocument is called with pdfDataRangeTransport, ' +\n 'passwordCallback or progressCallback argument');\n }\n if (pdfDataRangeTransport) {\n if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {\n // Not a PDFDataRangeTransport instance, trying to add missing properties.\n pdfDataRangeTransport = Object.create(pdfDataRangeTransport);\n pdfDataRangeTransport.length = src.length;\n pdfDataRangeTransport.initialData = src.initialData;\n if (!pdfDataRangeTransport.abort) {\n pdfDataRangeTransport.abort = function () {};\n }\n }\n src = Object.create(src);\n src.range = pdfDataRangeTransport;\n }\n task.onPassword = passwordCallback || null;\n task.onProgress = progressCallback || null;\n\n var source;\n if (typeof src === 'string') {\n source = { url: src, };\n } else if (isArrayBuffer(src)) {\n source = { data: src, };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src, };\n } else {\n if (typeof src !== 'object') {\n throw new Error('Invalid parameter in getDocument, ' +\n 'need either Uint8Array, string or a parameter object');\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n 'Invalid parameter object: need either .data, .range or .url');\n }\n\n source = src;\n }\n\n var params = {};\n var rangeTransport = null;\n var worker = null;\n var CMapReaderFactory = DOMCMapReaderFactory;\n\n for (var key in source) {\n if (key === 'url' && typeof window !== 'undefined') {\n // The full path is required in the 'url' field.\n params[key] = new URL(source[key], window.location).href;\n continue;\n } else if (key === 'range') {\n rangeTransport = source[key];\n continue;\n } else if (key === 'worker') {\n worker = source[key];\n continue;\n } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {\n // Converting string or array-like data to Uint8Array.\n var pdfBytes = source[key];\n if (typeof pdfBytes === 'string') {\n params[key] = stringToBytes(pdfBytes);\n } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&\n !isNaN(pdfBytes.length)) {\n params[key] = new Uint8Array(pdfBytes);\n } else if (isArrayBuffer(pdfBytes)) {\n params[key] = new Uint8Array(pdfBytes);\n } else {\n throw new Error('Invalid PDF binary data: either typed array, ' +\n 'string or array-like object is expected in the ' +\n 'data property.');\n }\n continue;\n } else if (key === 'CMapReaderFactory') {\n CMapReaderFactory = source[key];\n continue;\n }\n params[key] = source[key];\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.ignoreErrors = params.stopAtErrors !== true;\n\n if (params.disableNativeImageDecoder !== undefined) {\n deprecated('parameter disableNativeImageDecoder, ' +\n 'use nativeImageDecoderSupport instead');\n }\n params.nativeImageDecoderSupport = params.nativeImageDecoderSupport ||\n (params.disableNativeImageDecoder === true ? NativeImageDecoding.NONE :\n NativeImageDecoding.DECODE);\n if (params.nativeImageDecoderSupport !== NativeImageDecoding.DECODE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n params.nativeImageDecoderSupport !== NativeImageDecoding.DISPLAY) {\n warn('Invalid parameter nativeImageDecoderSupport: ' +\n 'need a state of enum {NativeImageDecoding}');\n params.nativeImageDecoderSupport = NativeImageDecoding.DECODE;\n }\n\n if (!worker) {\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global settings, using it.\n var workerPort = getDefaultSetting('workerPort');\n worker = workerPort ? PDFWorker.fromPort(workerPort) : new PDFWorker();\n task._worker = worker;\n }\n var docId = task.docId;\n worker.promise.then(function () {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n return _fetchDocument(worker, params, rangeTransport, docId).then(\n function (workerId) {\n if (task.destroyed) {\n throw new Error('Loading aborted');\n }\n\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(params, rangeTransport);\n } else if (!params.data) {\n networkStream = new PDFNetworkStream({\n source: params,\n disableRange: getDefaultSetting('disableRange'),\n });\n }\n\n var messageHandler = new MessageHandler(docId, workerId, worker.port);\n messageHandler.postMessageTransfers = worker.postMessageTransfers;\n var transport = new WorkerTransport(messageHandler, task, networkStream,\n CMapReaderFactory);\n task._transport = transport;\n messageHandler.send('Ready', null);\n });\n }).catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId Unique document id, used as MessageHandler id.\n * @returns {Promise} The promise, which is resolved when worker id of\n * MessageHandler is known.\n * @private\n */\nfunction _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n source.disableAutoFetch = getDefaultSetting('disableAutoFetch');\n source.disableStream = getDefaultSetting('disableStream');\n source.chunkedViewerLoading = !!pdfDataRangeTransport;\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n }\n return worker.messageHandler.sendWithPromise('GetDocRequest', {\n docId,\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: getDefaultSetting('maxImageSize'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'),\n postMessageTransfers: getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled,\n docBaseUrl: source.docBaseUrl,\n nativeImageDecoderSupport: source.nativeImageDecoderSupport,\n ignoreErrors: source.ignoreErrors,\n }).then(function (workerId) {\n if (worker.destroyed) {\n throw new Error('Worker was destroyed');\n }\n return workerId;\n });\n}\n\n/**\n * PDF document loading operation.\n * @class\n * @alias PDFDocumentLoadingTask\n */\nvar PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {\n var nextDocumentId = 0;\n\n /** @constructs PDFDocumentLoadingTask */\n function PDFDocumentLoadingTask() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique document loading task id -- used in MessageHandlers.\n * @type {string}\n */\n this.docId = 'd' + (nextDocumentId++);\n\n /**\n * Shows if loading task is destroyed.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if wrong or no password was provided.\n * The callback receives two parameters: function that needs to be called\n * with new password and reason (see {PasswordResponses}).\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar). The callback receives\n * an {Object} with the properties: {number} loaded and {number} total.\n */\n this.onProgress = null;\n\n /**\n * Callback to when unsupported feature is used. The callback receives\n * an {UNSUPPORTED_FEATURES} argument.\n */\n this.onUnsupportedFeature = null;\n }\n\n PDFDocumentLoadingTask.prototype =\n /** @lends PDFDocumentLoadingTask.prototype */ {\n /**\n * @return {Promise}\n */\n get promise() {\n return this._capability.promise;\n },\n\n /**\n * Aborts all network requests and destroys worker.\n * @return {Promise} A promise that is resolved after destruction activity\n * is completed.\n */\n destroy() {\n this.destroyed = true;\n\n var transportDestroyed = !this._transport ? Promise.resolve() :\n this._transport.destroy();\n return transportDestroyed.then(() => {\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n });\n },\n\n /**\n * Registers callbacks to indicate the document loading completion.\n *\n * @param {function} onFulfilled The callback for the loading completion.\n * @param {function} onRejected The callback for the loading failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return PDFDocumentLoadingTask;\n})();\n\n/**\n * Abstract class to support range requests file loading.\n * @class\n * @alias PDFDataRangeTransport\n * @param {number} length\n * @param {Uint8Array} initialData\n */\nvar PDFDataRangeTransport = (function pdfDataRangeTransportClosure() {\n function PDFDataRangeTransport(length, initialData) {\n this.length = length;\n this.initialData = initialData;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n PDFDataRangeTransport.prototype =\n /** @lends PDFDataRangeTransport.prototype */ {\n addRangeListener:\n function PDFDataRangeTransport_addRangeListener(listener) {\n this._rangeListeners.push(listener);\n },\n\n addProgressListener:\n function PDFDataRangeTransport_addProgressListener(listener) {\n this._progressListeners.push(listener);\n },\n\n addProgressiveReadListener:\n function PDFDataRangeTransport_addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n },\n\n onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {\n var listeners = this._rangeListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](begin, chunk);\n }\n },\n\n onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](loaded);\n }\n });\n },\n\n onDataProgressiveRead:\n function PDFDataRangeTransport_onDataProgress(chunk) {\n this._readyCapability.promise.then(() => {\n var listeners = this._progressiveReadListeners;\n for (var i = 0, n = listeners.length; i < n; ++i) {\n listeners[i](chunk);\n }\n });\n },\n\n transportReady: function PDFDataRangeTransport_transportReady() {\n this._readyCapability.resolve();\n },\n\n requestDataRange:\n function PDFDataRangeTransport_requestDataRange(begin, end) {\n throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');\n },\n\n abort: function PDFDataRangeTransport_abort() {\n },\n };\n return PDFDataRangeTransport;\n})();\n\n/**\n * Proxy to a PDFDocument in the worker thread. Also, contains commonly used\n * properties that can be read synchronously.\n * @class\n * @alias PDFDocumentProxy\n */\nvar PDFDocumentProxy = (function PDFDocumentProxyClosure() {\n function PDFDocumentProxy(pdfInfo, transport, loadingTask) {\n this.pdfInfo = pdfInfo;\n this.transport = transport;\n this.loadingTask = loadingTask;\n }\n PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ {\n /**\n * @return {number} Total number of pages the PDF contains.\n */\n get numPages() {\n return this.pdfInfo.numPages;\n },\n /**\n * @return {string} A unique ID to identify a PDF. Not guaranteed to be\n * unique.\n */\n get fingerprint() {\n return this.pdfInfo.fingerprint;\n },\n /**\n * @param {number} pageNumber The page number to get. The first page is 1.\n * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}\n * object.\n */\n getPage: function PDFDocumentProxy_getPage(pageNumber) {\n return this.transport.getPage(pageNumber);\n },\n /**\n * @param {{num: number, gen: number}} ref The page reference. Must have\n * the 'num' and 'gen' properties.\n * @return {Promise} A promise that is resolved with the page index that is\n * associated with the reference.\n */\n getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {\n return this.transport.getPageIndex(ref);\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named destinations to reference numbers.\n *\n * This can be slow for large documents: use getDestination instead\n */\n getDestinations: function PDFDocumentProxy_getDestinations() {\n return this.transport.getDestinations();\n },\n /**\n * @param {string} id The named destination to get.\n * @return {Promise} A promise that is resolved with all information\n * of the given named destination.\n */\n getDestination: function PDFDocumentProxy_getDestination(id) {\n return this.transport.getDestination(id);\n },\n /**\n * @return {Promise} A promise that is resolved with:\n * an Array containing the pageLabels that correspond to the pageIndexes,\n * or `null` when no pageLabels are present in the PDF file.\n */\n getPageLabels: function PDFDocumentProxy_getPageLabels() {\n return this.transport.getPageLabels();\n },\n /**\n * @return {Promise} A promise that is resolved with a {string} containing\n * the PageMode name.\n */\n getPageMode() {\n return this.transport.getPageMode();\n },\n /**\n * @return {Promise} A promise that is resolved with a lookup table for\n * mapping named attachments to their content.\n */\n getAttachments: function PDFDocumentProxy_getAttachments() {\n return this.transport.getAttachments();\n },\n /**\n * @return {Promise} A promise that is resolved with an array of all the\n * JavaScript strings in the name tree.\n */\n getJavaScript: function PDFDocumentProxy_getJavaScript() {\n return this.transport.getJavaScript();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Array} that is a\n * tree outline (if it has one) of the PDF. The tree is in the format of:\n * [\n * {\n * title: string,\n * bold: boolean,\n * italic: boolean,\n * color: rgb Uint8Array,\n * dest: dest obj,\n * url: string,\n * items: array of more items like this\n * },\n * ...\n * ].\n */\n getOutline: function PDFDocumentProxy_getOutline() {\n return this.transport.getOutline();\n },\n /**\n * @return {Promise} A promise that is resolved with an {Object} that has\n * info and metadata properties. Info is an {Object} filled with anything\n * available in the information dictionary and similarly metadata is a\n * {Metadata} object with information from the metadata section of the PDF.\n */\n getMetadata: function PDFDocumentProxy_getMetadata() {\n return this.transport.getMetadata();\n },\n /**\n * @return {Promise} A promise that is resolved with a TypedArray that has\n * the raw data from the PDF.\n */\n getData: function PDFDocumentProxy_getData() {\n return this.transport.getData();\n },\n /**\n * @return {Promise} A promise that is resolved when the document's data\n * is loaded. It is resolved with an {Object} that contains the length\n * property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {\n return this.transport.downloadInfoCapability.promise;\n },\n /**\n * @return {Promise} A promise this is resolved with current stats about\n * document structures (see {@link PDFDocumentStats}).\n */\n getStats: function PDFDocumentProxy_getStats() {\n return this.transport.getStats();\n },\n /**\n * Cleans up resources allocated by the document, e.g. created @font-face.\n */\n cleanup: function PDFDocumentProxy_cleanup() {\n this.transport.startCleanup();\n },\n /**\n * Destroys current document instance and terminates worker.\n */\n destroy: function PDFDocumentProxy_destroy() {\n return this.loadingTask.destroy();\n },\n };\n return PDFDocumentProxy;\n})();\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {array} items - array of {@link TextItem}\n * @property {Object} styles - {@link TextStyles} objects, indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - text content.\n * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {array} transform - transformation matrix.\n * @property {number} width - width in device space.\n * @property {number} height - height in device space.\n * @property {string} fontName - font name used by pdf.js for converted font.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - font ascent.\n * @property {number} descent - font descent.\n * @property {boolean} vertical - text is in vertical mode.\n * @property {string} fontFamily - possible font family\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} intent - Determines the annotations that will be fetched,\n * can be either 'display' (viewable annotations) or 'print'\n * (printable annotations).\n * If the parameter is omitted, all annotations are fetched.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by\n * calling of PDFPage.getViewport method.\n * @property {string} intent - Rendering intent, can be 'display' or 'print'\n * (default value is 'display').\n * @property {boolean} renderInteractiveForms - (optional) Whether or not\n * interactive form elements are rendered in the display\n * layer. If so, we do not render them on canvas as well.\n * @property {Array} transform - (optional) Additional transform, applied\n * just before viewport transform.\n * @property {Object} imageLayer - (optional) An object that has beginLayout,\n * endLayout and appendImage functions.\n * @property {function} continueCallback - (deprecated) A function that will be\n * called each time the rendering is paused. To continue\n * rendering call the function that is the first argument\n * to the callback.\n * @property {Object} canvasFactory - (optional) The factory that will be used\n * when creating canvases. The default value is\n * {DOMCanvasFactory}.\n * @property {Object} background - (optional) Background to use for the canvas.\n * Can use any valid canvas.fillStyle: A DOMString parsed as\n * CSS value, a CanvasGradient object (a linear or\n * radial gradient) or a CanvasPattern object (a repetitive\n * image). The default value is 'rgb(255,255,255)'.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array} fnArray - Array containing the operator functions.\n * @property {Array} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a PDFPage in the worker thread.\n * @class\n * @alias PDFPageProxy\n */\nvar PDFPageProxy = (function PDFPageProxyClosure() {\n function PDFPageProxy(pageIndex, pageInfo, transport) {\n this.pageIndex = pageIndex;\n this.pageInfo = pageInfo;\n this.transport = transport;\n this.stats = new StatTimer();\n this.stats.enabled = getDefaultSetting('enableStats');\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this.intentStates = Object.create(null);\n this.destroyed = false;\n }\n PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {\n /**\n * @return {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this.pageIndex + 1;\n },\n /**\n * @return {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this.pageInfo.rotate;\n },\n /**\n * @return {Object} The reference that points to this page. It has 'num' and\n * 'gen' properties.\n */\n get ref() {\n return this.pageInfo.ref;\n },\n /**\n * @return {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this.pageInfo.userUnit;\n },\n /**\n * @return {Array} An array of the visible portion of the PDF page in the\n * user space units - [x1, y1, x2, y2].\n */\n get view() {\n return this.pageInfo.view;\n },\n /**\n * @param {number} scale The desired scale of the viewport.\n * @param {number} rotate Degrees to rotate the viewport. If omitted this\n * defaults to the page rotation.\n * @return {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport: function PDFPageProxy_getViewport(scale, rotate) {\n if (arguments.length < 2) {\n rotate = this.rotate;\n }\n return new PageViewport(this.view, scale, rotate, 0, 0);\n },\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @return {Promise} A promise that is resolved with an {Array} of the\n * annotation objects.\n */\n getAnnotations: function PDFPageProxy_getAnnotations(params) {\n var intent = (params && params.intent) || null;\n\n if (!this.annotationsPromise || this.annotationsIntent !== intent) {\n this.annotationsPromise = this.transport.getAnnotations(this.pageIndex,\n intent);\n this.annotationsIntent = intent;\n }\n return this.annotationsPromise;\n },\n /**\n * Begins the process of rendering a page to the desired context.\n * @param {RenderParameters} params Page render parameters.\n * @return {RenderTask} An object that contains the promise, which\n * is resolved when the page finishes rendering.\n */\n render: function PDFPageProxy_render(params) {\n var stats = this.stats;\n stats.time('Overall');\n\n // If there was a pending destroy cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n var renderingIntent = (params.intent === 'print' ? 'print' : 'display');\n var canvasFactory = params.canvasFactory || new DOMCanvasFactory();\n\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.receivingOperatorList = true;\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.stats.time('Page Request');\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageNumber - 1,\n intent: renderingIntent,\n renderInteractiveForms: (params.renderInteractiveForms === true),\n });\n }\n\n var complete = (error) => {\n var i = intentState.renderTasks.indexOf(internalRenderTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n\n if (this.cleanupAfterRender) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n } else {\n internalRenderTask.capability.resolve();\n }\n stats.timeEnd('Rendering');\n stats.timeEnd('Overall');\n };\n\n var internalRenderTask = new InternalRenderTask(complete, params,\n this.objs,\n this.commonObjs,\n intentState.operatorList,\n this.pageNumber,\n canvasFactory);\n internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';\n if (!intentState.renderTasks) {\n intentState.renderTasks = [];\n }\n intentState.renderTasks.push(internalRenderTask);\n var renderTask = internalRenderTask.task;\n\n // Obsolete parameter support\n if (params.continueCallback) {\n deprecated('render is used with continueCallback parameter');\n renderTask.onContinue = params.continueCallback;\n }\n\n intentState.displayReadyCapability.promise.then((transparency) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n stats.time('Rendering');\n internalRenderTask.initializeGraphics(transparency);\n internalRenderTask.operatorListChanged();\n }).catch(complete);\n\n return renderTask;\n },\n\n /**\n * @return {Promise} A promise resolved with an {@link PDFOperatorList}\n * object that represents page's operator list.\n */\n getOperatorList: function PDFPageProxy_getOperatorList() {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n var i = intentState.renderTasks.indexOf(opListTask);\n if (i >= 0) {\n intentState.renderTasks.splice(i, 1);\n }\n }\n }\n\n var renderingIntent = 'oplist';\n if (!this.intentStates[renderingIntent]) {\n this.intentStates[renderingIntent] = Object.create(null);\n }\n var intentState = this.intentStates[renderingIntent];\n var opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = {};\n opListTask.operatorListChanged = operatorListChanged;\n intentState.receivingOperatorList = true;\n intentState.opListReadCapability = createPromiseCapability();\n intentState.renderTasks = [];\n intentState.renderTasks.push(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n this.transport.messageHandler.send('RenderPageRequest', {\n pageIndex: this.pageIndex,\n intent: renderingIntent,\n });\n }\n return intentState.opListReadCapability.promise;\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {ReadableStream} ReadableStream to read textContent chunks.\n */\n streamTextContent(params = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n return this.transport.messageHandler.sendWithStream('GetTextContent', {\n pageIndex: this.pageNumber - 1,\n normalizeWhitespace: (params.normalizeWhitespace === true),\n combineTextItems: (params.disableCombineTextItems !== true),\n }, {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n });\n },\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @return {Promise} That is resolved a {@link TextContent}\n * object that represent the page text content.\n */\n getTextContent: function PDFPageProxy_getTextContent(params) {\n params = params || {};\n let readableStream = this.streamTextContent(params);\n\n return new Promise(function(resolve, reject) {\n function pump() {\n reader.read().then(function({ value, done, }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Util.extendObj(textContent.styles, value.styles);\n Util.appendToArray(textContent.items, value.items);\n pump();\n }, reject);\n }\n\n let reader = readableStream.getReader();\n let textContent = {\n items: [],\n styles: Object.create(null),\n };\n\n pump();\n });\n },\n\n /**\n * Destroys page object.\n */\n _destroy: function PDFPageProxy_destroy() {\n this.destroyed = true;\n this.transport.pageCache[this.pageIndex] = null;\n\n var waitOn = [];\n Object.keys(this.intentStates).forEach(function(intent) {\n if (intent === 'oplist') {\n // Avoid errors below, since the renderTasks are just stubs.\n return;\n }\n var intentState = this.intentStates[intent];\n intentState.renderTasks.forEach(function(renderTask) {\n var renderCompleted = renderTask.capability.promise.\n catch(function () {}); // ignoring failures\n waitOn.push(renderCompleted);\n renderTask.cancel();\n });\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n },\n\n /**\n * Cleans up resources allocated by the page. (deprecated)\n */\n destroy() {\n deprecated('page destroy method, use cleanup() instead');\n this.cleanup();\n },\n\n /**\n * Cleans up resources allocated by the page.\n */\n cleanup: function PDFPageProxy_cleanup() {\n this.pendingCleanup = true;\n this._tryCleanup();\n },\n /**\n * For internal use only. Attempts to clean up if rendering is in a state\n * where that's possible.\n * @ignore\n */\n _tryCleanup: function PDFPageProxy_tryCleanup() {\n if (!this.pendingCleanup ||\n Object.keys(this.intentStates).some(function(intent) {\n var intentState = this.intentStates[intent];\n return (intentState.renderTasks.length !== 0 ||\n intentState.receivingOperatorList);\n }, this)) {\n return;\n }\n\n Object.keys(this.intentStates).forEach(function(intent) {\n delete this.intentStates[intent];\n }, this);\n this.objs.clear();\n this.annotationsPromise = null;\n this.pendingCleanup = false;\n },\n /**\n * For internal use only.\n * @ignore\n */\n _startRenderPage: function PDFPageProxy_startRenderPage(transparency,\n intent) {\n var intentState = this.intentStates[intent];\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n },\n /**\n * For internal use only.\n * @ignore\n */\n _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,\n intent) {\n var intentState = this.intentStates[intent];\n var i, ii;\n // Add the new chunk to the current operator list.\n for (i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(\n operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n intentState.receivingOperatorList = false;\n this._tryCleanup();\n }\n },\n };\n return PDFPageProxy;\n})();\n\nclass LoopbackPort {\n constructor(defer) {\n this._listeners = [];\n this._defer = defer;\n this._deferred = Promise.resolve(undefined);\n }\n\n postMessage(obj, transfers) {\n function cloneValue(value) {\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n if (typeof value !== 'object' || value === null) {\n return value;\n }\n if (cloned.has(value)) { // already cloned the object\n return cloned.get(value);\n }\n var result;\n var buffer;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n var transferable = transfers && transfers.indexOf(buffer) >= 0;\n if (value === buffer) {\n // Special case when we are faking typed arrays in compatibility.js.\n result = value;\n } else if (transferable) {\n result = new value.constructor(buffer, value.byteOffset,\n value.byteLength);\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n result = isArray(value) ? [] : {};\n cloned.set(value, result); // adding to cache now for cyclic references\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (var i in value) {\n var desc, p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === 'undefined' ||\n typeof desc.value === 'function') {\n continue;\n }\n result[i] = cloneValue(desc.value);\n }\n return result;\n }\n\n if (!this._defer) {\n this._listeners.forEach(function (listener) {\n listener.call(this, { data: obj, });\n }, this);\n return;\n }\n\n var cloned = new WeakMap();\n var e = { data: cloneValue(obj), };\n this._deferred.then(() => {\n this._listeners.forEach(function (listener) {\n listener.call(this, e);\n }, this);\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n var i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners = [];\n }\n}\n\n/**\n * PDF.js web worker abstraction, it controls instantiation of PDF documents and\n * WorkerTransport for them. If creation of a web worker is not possible,\n * a \"fake\" worker will be used instead.\n * @class\n */\nvar PDFWorker = (function PDFWorkerClosure() {\n let nextFakeWorkerId = 0;\n\n function getWorkerSrc() {\n if (typeof workerSrc !== 'undefined') {\n return workerSrc;\n }\n if (getDefaultSetting('workerSrc')) {\n return getDefaultSetting('workerSrc');\n }\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PRODUCTION && !(MOZCENTRAL || FIREFOX)') &&\n pdfjsFilePath) {\n return pdfjsFilePath.replace(/(\\.(?:min\\.)?js)(\\?.*)?$/i, '.worker$1$2');\n }\n throw new Error('No PDFJS.workerSrc specified');\n }\n\n let fakeWorkerFilesLoadedCapability;\n\n // Loads worker code into main thread.\n function setupFakeWorkerGlobal() {\n var WorkerMessageHandler;\n if (fakeWorkerFilesLoadedCapability) {\n return fakeWorkerFilesLoadedCapability.promise;\n }\n fakeWorkerFilesLoadedCapability = createPromiseCapability();\n // In the developer build load worker_loader which in turn loads all the\n // other files and resolves the promise. In production only the\n // pdf.worker.js file is needed.\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n if (typeof SystemJS === 'object') {\n SystemJS.import('pdfjs/core/worker').then((worker) => {\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n });\n } else if (typeof require === 'function') {\n var worker = require('../core/worker.js');\n WorkerMessageHandler = worker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n throw new Error(\n 'SystemJS or CommonJS must be used to load fake worker.');\n }\n } else if (PDFJSDev.test('SINGLE_FILE')) {\n var pdfjsCoreWorker = require('../core/worker.js');\n WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n fakeWorkerFilesLoadedCapability.resolve(WorkerMessageHandler);\n } else {\n var loader = fakeWorkerFilesLoader || function (callback) {\n Util.loadScript(getWorkerSrc(), function () {\n callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);\n });\n };\n loader(fakeWorkerFilesLoadedCapability.resolve);\n }\n return fakeWorkerFilesLoadedCapability.promise;\n }\n\n function createCDNWrapper(url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n var wrapper = 'importScripts(\\'' + url + '\\');';\n return URL.createObjectURL(new Blob([wrapper]));\n }\n\n let pdfWorkerPorts = new WeakMap();\n\n function PDFWorker(name, port) {\n if (port && pdfWorkerPorts.has(port)) {\n throw new Error('Cannot use more than one PDFWorker per port');\n }\n\n this.name = name;\n this.destroyed = false;\n this.postMessageTransfers = true;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n pdfWorkerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n\n this._initialize();\n }\n\n PDFWorker.prototype = /** @lends PDFWorker.prototype */ {\n get promise() {\n return this._readyCapability.promise;\n },\n\n get port() {\n return this._port;\n },\n\n get messageHandler() {\n return this._messageHandler;\n },\n\n _initializeFromPort: function PDFWorker_initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler('main', 'worker', port);\n this._messageHandler.on('ready', function () {\n // Ignoring 'ready' event -- MessageHandler shall be already initialized\n // and ready to accept the messages.\n });\n this._readyCapability.resolve();\n },\n\n _initialize: function PDFWorker_initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('SINGLE_FILE')) &&\n !isWorkerDisabled && !getDefaultSetting('disableWorker') &&\n typeof Worker !== 'undefined') {\n var workerSrc = getWorkerSrc();\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC') &&\n !isSameOrigin(window.location.href, workerSrc)) {\n workerSrc = createCDNWrapper(\n new URL(workerSrc, window.location).href);\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n var worker = new Worker(workerSrc);\n var messageHandler = new MessageHandler('main', 'worker', worker);\n var terminateEarly = () => {\n worker.removeEventListener('error', onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n var onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener('error', onWorkerError);\n\n messageHandler.on('test', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n var supportTypedArray = data && data.supportTypedArray;\n if (supportTypedArray) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n if (!data.supportTransfers) {\n this.postMessageTransfers = false;\n isPostMessageTransfersDisabled = true;\n }\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send('configure', {\n verbosity: getVerbosityLevel(),\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on('console_log', function (data) {\n console.log.apply(console, data);\n });\n messageHandler.on('console_error', function (data) {\n console.error.apply(console, data);\n });\n\n messageHandler.on('ready', (data) => {\n worker.removeEventListener('error', onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n var sendTest = function () {\n var postMessageTransfers =\n getDefaultSetting('postMessageTransfers') &&\n !isPostMessageTransfersDisabled;\n var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send('test', testObj, [testObj.buffer]);\n } catch (ex) {\n info('Cannot use postMessage transfers');\n testObj[0] = 0;\n messageHandler.send('test', testObj);\n }\n };\n\n // It might take time for worker to initialize (especially when AMD\n // loader is used). We will try to send test immediately, and then\n // when 'ready' message will arrive. The worker shall process only\n // first received 'test'.\n sendTest();\n return;\n } catch (e) {\n info('The worker has been disabled.');\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n },\n\n _setupFakeWorker: function PDFWorker_setupFakeWorker() {\n if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) {\n warn('Setting up fake worker.');\n isWorkerDisabled = true;\n }\n\n setupFakeWorkerGlobal().then((WorkerMessageHandler) => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error('Worker was destroyed'));\n return;\n }\n\n // We cannot turn on proper fake port simulation (this includes\n // structured cloning) when typed arrays are not supported. Relying\n // on a chance that messages will be sent in proper order.\n var isTypedArraysPresent = Uint8Array !== Float32Array;\n var port = new LoopbackPort(isTypedArraysPresent);\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n var id = 'fake' + (nextFakeWorkerId++);\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n var workerHandler = new MessageHandler(id + '_worker', id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n var messageHandler = new MessageHandler(id, id + '_worker', port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n });\n },\n\n /**\n * Destroys the worker instance.\n */\n destroy: function PDFWorker_destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n pdfWorkerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n },\n };\n\n PDFWorker.fromPort = function (port) {\n if (pdfWorkerPorts.has(port)) {\n return pdfWorkerPorts.get(port);\n }\n return new PDFWorker(null, port);\n };\n\n return PDFWorker;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar WorkerTransport = (function WorkerTransportClosure() {\n function WorkerTransport(messageHandler, loadingTask, networkStream,\n CMapReaderFactory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader(loadingTask.docId);\n this.CMapReaderFactory = new CMapReaderFactory({\n baseUrl: getDefaultSetting('cMapUrl'),\n isCompressed: getDefaultSetting('cMapPacked'),\n });\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n\n this.pageCache = [];\n this.pagePromises = [];\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n WorkerTransport.prototype = {\n destroy: function WorkerTransport_destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error('Worker was destroyed during onPassword callback'));\n }\n\n var waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n this.pageCache.forEach(function (page) {\n if (page) {\n waitOn.push(page._destroy());\n }\n });\n this.pageCache = [];\n this.pagePromises = [];\n // We also need to wait for the worker to finish its long running tasks.\n var terminated = this.messageHandler.sendWithPromise('Terminate', null);\n waitOn.push(terminated);\n Promise.all(waitOn).then(() => {\n this.fontLoader.clear();\n if (this._networkStream) {\n this._networkStream.cancelAllRequests();\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n },\n\n setupMessageHandler: function WorkerTransport_setupMessageHandler() {\n var messageHandler = this.messageHandler;\n var loadingTask = this.loadingTask;\n\n messageHandler.on('GetReader', function(data, sink) {\n assert(this._networkStream);\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = (evt) => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n this._fullReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('ReaderHeadersReady', function(data) {\n let headersCapability = createPromiseCapability();\n let fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported ||\n !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress(this._lastProgress);\n }\n }\n fullReader.onProgress = (evt) => {\n let loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n }, this);\n\n messageHandler.on('GetRangeReader', function(data, sink) {\n assert(this._networkStream);\n let _rangeReader =\n this._networkStream.getRangeReader(data.begin, data.end);\n\n sink.onPull = () => {\n _rangeReader.read().then(function({ value, done, }) {\n if (done) {\n sink.close();\n return;\n }\n assert(isArrayBuffer(value));\n sink.enqueue(new Uint8Array(value), 1, [value]);\n }).catch((reason) => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = (reason) => {\n _rangeReader.cancel(reason);\n };\n }, this);\n\n messageHandler.on('GetDoc', function transportDoc(data) {\n var pdfInfo = data.pdfInfo;\n this.numPages = data.pdfInfo.numPages;\n var loadingTask = this.loadingTask;\n var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);\n this.pdfDocument = pdfDocument;\n loadingTask._capability.resolve(pdfDocument);\n }, this);\n\n messageHandler.on('PasswordRequest',\n function transportPasswordRequest(exception) {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n var updatePassword = (password) => {\n this._passwordCapability.resolve({\n password,\n });\n };\n loadingTask.onPassword(updatePassword, exception.code);\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code));\n }\n return this._passwordCapability.promise;\n }, this);\n\n messageHandler.on('PasswordException',\n function transportPasswordException(exception) {\n loadingTask._capability.reject(\n new PasswordException(exception.message, exception.code));\n }, this);\n\n messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {\n this.loadingTask._capability.reject(\n new InvalidPDFException(exception.message));\n }, this);\n\n messageHandler.on('MissingPDF', function transportMissingPDF(exception) {\n this.loadingTask._capability.reject(\n new MissingPDFException(exception.message));\n }, this);\n\n messageHandler.on('UnexpectedResponse',\n function transportUnexpectedResponse(exception) {\n this.loadingTask._capability.reject(\n new UnexpectedResponseException(exception.message, exception.status));\n }, this);\n\n messageHandler.on('UnknownError',\n function transportUnknownError(exception) {\n this.loadingTask._capability.reject(\n new UnknownErrorException(exception.message, exception.details));\n }, this);\n\n messageHandler.on('DataLoaded', function transportPage(data) {\n this.downloadInfoCapability.resolve(data);\n }, this);\n\n messageHandler.on('PDFManagerReady', function transportPage(data) {\n }, this);\n\n messageHandler.on('StartRenderPage', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page.stats.timeEnd('Page Request');\n page._startRenderPage(data.transparency, data.intent);\n }, this);\n\n messageHandler.on('RenderPageChunk', function transportRender(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var page = this.pageCache[data.pageIndex];\n\n page._renderPageChunk(data.operatorList, data.intent);\n }, this);\n\n messageHandler.on('commonobj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var type = data[1];\n if (this.commonObjs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'Font':\n var exportedData = data[2];\n\n if ('error' in exportedData) {\n var exportedError = exportedData.error;\n warn('Error during font loading: ' + exportedError);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n var fontRegistry = null;\n if (getDefaultSetting('pdfBug') && globalScope.FontInspector &&\n globalScope['FontInspector'].enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalScope['FontInspector'].fontAdded(font, url);\n },\n };\n }\n var font = new FontFaceObject(exportedData, {\n isEvalSuported: getDefaultSetting('isEvalSupported'),\n disableFontFace: getDefaultSetting('disableFontFace'),\n fontRegistry,\n });\n var fontReady = (fontObjs) => {\n this.commonObjs.resolve(id, font);\n };\n\n this.fontLoader.bind([font], fontReady);\n break;\n case 'FontPath':\n this.commonObjs.resolve(id, data[2]);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n }, this);\n\n messageHandler.on('obj', function transportObj(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var id = data[0];\n var pageIndex = data[1];\n var type = data[2];\n var pageProxy = this.pageCache[pageIndex];\n var imageData;\n if (pageProxy.objs.hasData(id)) {\n return;\n }\n\n switch (type) {\n case 'JpegStream':\n imageData = data[3];\n loadJpegStream(id, imageData, pageProxy.objs);\n break;\n case 'Image':\n imageData = data[3];\n pageProxy.objs.resolve(id, imageData);\n\n // heuristics that will allow not to store large data\n var MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData && 'data' in imageData &&\n imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n }, this);\n\n messageHandler.on('DocProgress', function transportDocProgress(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var loadingTask = this.loadingTask;\n if (loadingTask.onProgress) {\n loadingTask.onProgress({\n loaded: data.loaded,\n total: data.total,\n });\n }\n }, this);\n\n messageHandler.on('PageError', function transportError(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n var page = this.pageCache[data.pageNum - 1];\n var intentState = page.intentStates[data.intent];\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(data.error);\n } else {\n throw new Error(data.error);\n }\n\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n for (var i = 0; i < intentState.renderTasks.length; i++) {\n intentState.renderTasks[i].operatorListChanged();\n }\n }\n }, this);\n\n messageHandler.on('UnsupportedFeature',\n function transportUnsupportedFeature(data) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n var featureId = data.featureId;\n var loadingTask = this.loadingTask;\n if (loadingTask.onUnsupportedFeature) {\n loadingTask.onUnsupportedFeature(featureId);\n }\n _UnsupportedManager.notify(featureId);\n }, this);\n\n messageHandler.on('JpegDecode', function(data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n\n if (typeof document === 'undefined') {\n // Make sure that this code is not executing in node.js, as\n // it's using DOM image, and there is no library to support that.\n return Promise.reject(new Error('\"document\" is not defined.'));\n }\n\n var imageUrl = data[0];\n var components = data[1];\n if (components !== 3 && components !== 1) {\n return Promise.reject(\n new Error('Only 3 components or 1 component can be returned'));\n }\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n img.onload = function () {\n var width = img.width;\n var height = img.height;\n var size = width * height;\n var rgbaLength = size * 4;\n var buf = new Uint8Array(size * components);\n var tmpCanvas = document.createElement('canvas');\n tmpCanvas.width = width;\n tmpCanvas.height = height;\n var tmpCtx = tmpCanvas.getContext('2d');\n tmpCtx.drawImage(img, 0, 0);\n var data = tmpCtx.getImageData(0, 0, width, height).data;\n var i, j;\n\n if (components === 3) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {\n buf[j] = data[i];\n buf[j + 1] = data[i + 1];\n buf[j + 2] = data[i + 2];\n }\n } else if (components === 1) {\n for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {\n buf[j] = data[i];\n }\n }\n resolve({ data: buf, width, height, });\n };\n img.onerror = function () {\n reject(new Error('JpegDecode failed to load image'));\n };\n img.src = imageUrl;\n });\n }, this);\n\n messageHandler.on('FetchBuiltInCMap', function (data) {\n if (this.destroyed) {\n return Promise.reject(new Error('Worker was destroyed'));\n }\n return this.CMapReaderFactory.fetch({\n name: data.name,\n });\n }, this);\n },\n\n getData: function WorkerTransport_getData() {\n return this.messageHandler.sendWithPromise('GetData', null);\n },\n\n getPage: function WorkerTransport_getPage(pageNumber, capability) {\n if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {\n return Promise.reject(new Error('Invalid page request'));\n }\n\n var pageIndex = pageNumber - 1;\n if (pageIndex in this.pagePromises) {\n return this.pagePromises[pageIndex];\n }\n var promise = this.messageHandler.sendWithPromise('GetPage', {\n pageIndex,\n }).then((pageInfo) => {\n if (this.destroyed) {\n throw new Error('Transport destroyed');\n }\n var page = new PDFPageProxy(pageIndex, pageInfo, this);\n this.pageCache[pageIndex] = page;\n return page;\n });\n this.pagePromises[pageIndex] = promise;\n return promise;\n },\n\n getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {\n return this.messageHandler.sendWithPromise('GetPageIndex', {\n ref,\n }).catch(function (reason) {\n return Promise.reject(new Error(reason));\n });\n },\n\n getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise('GetAnnotations', {\n pageIndex,\n intent,\n });\n },\n\n getDestinations: function WorkerTransport_getDestinations() {\n return this.messageHandler.sendWithPromise('GetDestinations', null);\n },\n\n getDestination: function WorkerTransport_getDestination(id) {\n return this.messageHandler.sendWithPromise('GetDestination', {\n id,\n });\n },\n\n getPageLabels: function WorkerTransport_getPageLabels() {\n return this.messageHandler.sendWithPromise('GetPageLabels', null);\n },\n\n getPageMode() {\n return this.messageHandler.sendWithPromise('GetPageMode', null);\n },\n\n getAttachments: function WorkerTransport_getAttachments() {\n return this.messageHandler.sendWithPromise('GetAttachments', null);\n },\n\n getJavaScript: function WorkerTransport_getJavaScript() {\n return this.messageHandler.sendWithPromise('GetJavaScript', null);\n },\n\n getOutline: function WorkerTransport_getOutline() {\n return this.messageHandler.sendWithPromise('GetOutline', null);\n },\n\n getMetadata: function WorkerTransport_getMetadata() {\n return this.messageHandler.sendWithPromise('GetMetadata', null).\n then(function transportMetadata(results) {\n return {\n info: results[0],\n metadata: (results[1] ? new Metadata(results[1]) : null),\n };\n });\n },\n\n getStats: function WorkerTransport_getStats() {\n return this.messageHandler.sendWithPromise('GetStats', null);\n },\n\n startCleanup: function WorkerTransport_startCleanup() {\n this.messageHandler.sendWithPromise('Cleanup', null).then(() => {\n for (var i = 0, ii = this.pageCache.length; i < ii; i++) {\n var page = this.pageCache[i];\n if (page) {\n page.cleanup();\n }\n }\n this.commonObjs.clear();\n this.fontLoader.clear();\n });\n },\n };\n return WorkerTransport;\n\n})();\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects\n * for fonts, images, rendering code and such. These objects might get processed\n * inside of a worker. The `PDFObjects` implements some basic functions to\n * manage these objects.\n * @ignore\n */\nvar PDFObjects = (function PDFObjectsClosure() {\n function PDFObjects() {\n this.objs = Object.create(null);\n }\n\n PDFObjects.prototype = {\n /**\n * Internal function.\n * Ensures there is an object defined for `objId`.\n */\n ensureObj: function PDFObjects_ensureObj(objId) {\n if (this.objs[objId]) {\n return this.objs[objId];\n }\n\n var obj = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n };\n this.objs[objId] = obj;\n\n return obj;\n },\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this function throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this\n * function and the object is already resolved, the callback gets called\n * right away.\n */\n get: function PDFObjects_get(objId, callback) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now\n if (callback) {\n this.ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n var obj = this.objs[objId];\n\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}`);\n }\n\n return obj.data;\n },\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve: function PDFObjects_resolve(objId, data) {\n var obj = this.ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n },\n\n isResolved: function PDFObjects_isResolved(objId) {\n var objs = this.objs;\n\n if (!objs[objId]) {\n return false;\n }\n return objs[objId].resolved;\n },\n\n hasData: function PDFObjects_hasData(objId) {\n return this.isResolved(objId);\n },\n\n /**\n * Returns the data of `objId` if object exists, null otherwise.\n */\n getData: function PDFObjects_getData(objId) {\n var objs = this.objs;\n if (!objs[objId] || !objs[objId].resolved) {\n return null;\n }\n return objs[objId].data;\n },\n\n clear: function PDFObjects_clear() {\n this.objs = Object.create(null);\n },\n };\n return PDFObjects;\n})();\n\n/**\n * Allows controlling of the rendering tasks.\n * @class\n * @alias RenderTask\n */\nvar RenderTask = (function RenderTaskClosure() {\n function RenderTask(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n RenderTask.prototype = /** @lends RenderTask.prototype */ {\n /**\n * Promise for rendering task completion.\n * @return {Promise}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n },\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel: function RenderTask_cancel() {\n this._internalRenderTask.cancel();\n },\n\n /**\n * Registers callbacks to indicate the rendering task completion.\n *\n * @param {function} onFulfilled The callback for the rendering completion.\n * @param {function} onRejected The callback for the rendering failure.\n * @return {Promise} A promise that is resolved after the onFulfilled or\n * onRejected callback.\n */\n then: function RenderTask_then(onFulfilled, onRejected) {\n return this.promise.then.apply(this.promise, arguments);\n },\n };\n\n return RenderTask;\n})();\n\n/**\n * For internal use only.\n * @ignore\n */\nvar InternalRenderTask = (function InternalRenderTaskClosure() {\n let canvasInRendering = new WeakMap();\n\n function InternalRenderTask(callback, params, objs, commonObjs, operatorList,\n pageNumber, canvasFactory) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this.pageNumber = pageNumber;\n this.canvasFactory = canvasFactory;\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this.useRequestAnimationFrame = false;\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n InternalRenderTask.prototype = {\n\n initializeGraphics:\n function InternalRenderTask_initializeGraphics(transparency) {\n\n if (this._canvas) {\n if (canvasInRendering.has(this._canvas)) {\n throw new Error(\n 'Cannot use the same canvas during multiple render() operations. ' +\n 'Use different canvas or ensure previous operations were ' +\n 'cancelled or completed.');\n }\n canvasInRendering.set(this._canvas, this);\n }\n\n if (this.cancelled) {\n return;\n }\n if (getDefaultSetting('pdfBug') && globalScope.StepperManager &&\n globalScope.StepperManager.enabled) {\n this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n\n var params = this.params;\n this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,\n this.objs, this.canvasFactory,\n params.imageLayer);\n\n this.gfx.beginDrawing({\n transform: params.transform,\n viewport: params.viewport,\n transparency,\n background: params.background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n },\n\n cancel: function InternalRenderTask_cancel() {\n this.running = false;\n this.cancelled = true;\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n\n if ((typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PDFJS_NEXT')) ||\n getDefaultSetting('pdfjsNext')) {\n this.callback(new RenderingCancelledException(\n 'Rendering cancelled, page ' + this.pageNumber, 'canvas'));\n } else {\n this.callback('cancelled');\n }\n },\n\n operatorListChanged: function InternalRenderTask_operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n },\n\n _continue: function InternalRenderTask__continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n },\n\n _scheduleNext: function InternalRenderTask__scheduleNext() {\n if (this.useRequestAnimationFrame && typeof window !== 'undefined') {\n window.requestAnimationFrame(this._nextBound);\n } else {\n Promise.resolve(undefined).then(this._nextBound);\n }\n },\n\n _next: function InternalRenderTask__next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper);\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n canvasInRendering.delete(this._canvas);\n }\n this.callback();\n }\n }\n },\n\n };\n\n return InternalRenderTask;\n})();\n\n/**\n * (Deprecated) Global observer of unsupported feature usages. Use\n * onUnsupportedFeature callback of the {PDFDocumentLoadingTask} instance.\n */\nvar _UnsupportedManager = (function UnsupportedManagerClosure() {\n var listeners = [];\n return {\n listen(cb) {\n deprecated('Global UnsupportedManager.listen is used: ' +\n ' use PDFDocumentLoadingTask.onUnsupportedFeature instead');\n listeners.push(cb);\n },\n notify(featureId) {\n for (var i = 0, ii = listeners.length; i < ii; i++) {\n listeners[i](featureId);\n }\n },\n };\n})();\n\nvar version, build;\nif (typeof PDFJSDev !== 'undefined') {\n version = PDFJSDev.eval('BUNDLE_VERSION');\n build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nexport {\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n PDFDocumentProxy,\n PDFPageProxy,\n setPDFNetworkStreamClass,\n _UnsupportedManager,\n version,\n build,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/api.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n addLinkAttributes, CustomStyle, getDefaultSetting, getFilenameFromUrl,\n LinkTarget\n} from './dom_utils';\nimport {\n AnnotationBorderStyleType, AnnotationType, stringToPDFString, Util, warn\n} from '../shared/util';\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPage} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationElementFactory\n */\nfunction AnnotationElementFactory() {}\nAnnotationElementFactory.prototype =\n /** @lends AnnotationElementFactory.prototype */ {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n create: function AnnotationElementFactory_create(parameters) {\n var subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n var fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case 'Tx':\n return new TextWidgetAnnotationElement(parameters);\n case 'Btn':\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n warn('Unimplemented button widget annotation: pushbutton');\n break;\n case 'Ch':\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n },\n};\n\n/**\n * @class\n * @alias AnnotationElement\n */\nvar AnnotationElement = (function AnnotationElementClosure() {\n function AnnotationElement(parameters, isRenderable, ignoreBorder) {\n this.isRenderable = isRenderable || false;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderInteractiveForms = parameters.renderInteractiveForms;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n }\n\n AnnotationElement.prototype = /** @lends AnnotationElement.prototype */ {\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer:\n function AnnotationElement_createContainer(ignoreBorder) {\n var data = this.data, page = this.page, viewport = this.viewport;\n var container = document.createElement('section');\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n\n container.setAttribute('data-annotation-id', data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n var rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1]\n ]);\n\n CustomStyle.setProp('transform', container,\n 'matrix(' + viewport.transform.join(',') + ')');\n CustomStyle.setProp('transformOrigin', container,\n -rect[0] + 'px ' + -rect[1] + 'px');\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = data.borderStyle.width + 'px';\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width = width - 2 * data.borderStyle.width;\n height = height - 2 * data.borderStyle.width;\n }\n\n var horizontalRadius = data.borderStyle.horizontalCornerRadius;\n var verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';\n CustomStyle.setProp('borderRadius', container, radius);\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = 'solid';\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = 'dashed';\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn('Unimplemented border style: beveled');\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn('Unimplemented border style: inset');\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = 'solid';\n break;\n\n default:\n break;\n }\n\n if (data.color) {\n container.style.borderColor =\n Util.makeCssRgb(data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0);\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = rect[0] + 'px';\n container.style.top = rect[1] + 'px';\n\n container.style.width = width + 'px';\n container.style.height = height + 'px';\n\n return container;\n },\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLSectionElement} container\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup:\n function AnnotationElement_createPopup(container, trigger, data) {\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement('div');\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n var popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n title: data.title,\n contents: data.contents,\n hideWrapper: true,\n });\n var popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n },\n\n /**\n * Render the annotation's HTML element in the empty container.\n *\n * @public\n * @memberof AnnotationElement\n */\n render: function AnnotationElement_render() {\n throw new Error('Abstract method AnnotationElement.render called');\n },\n };\n\n return AnnotationElement;\n})();\n\n/**\n * @class\n * @alias LinkAnnotationElement\n */\nvar LinkAnnotationElement = (function LinkAnnotationElementClosure() {\n function LinkAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n }\n\n Util.inherit(LinkAnnotationElement, AnnotationElement, {\n /**\n * Render the link annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LinkAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LinkAnnotationElement_render() {\n this.container.className = 'linkAnnotation';\n\n var link = document.createElement('a');\n addLinkAttributes(link, {\n url: this.data.url,\n target: (this.data.newWindow ? LinkTarget.BLANK : undefined),\n });\n\n if (!this.data.url) {\n if (this.data.action) {\n this._bindNamedAction(link, this.data.action);\n } else {\n this._bindLink(link, this.data.dest);\n }\n }\n\n this.container.appendChild(link);\n return this.container;\n },\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n return false;\n };\n if (destination) {\n link.className = 'internalLink';\n }\n },\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl('');\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = 'internalLink';\n },\n });\n\n return LinkAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextAnnotationElement\n */\nvar TextAnnotationElement = (function TextAnnotationElementClosure() {\n function TextAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextAnnotationElement, AnnotationElement, {\n /**\n * Render the text annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextAnnotationElement_render() {\n this.container.className = 'textAnnotation';\n\n var image = document.createElement('img');\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src = this.imageResourcesPath + 'annotation-' +\n this.data.name.toLowerCase() + '.svg';\n image.alt = '[{{type}} Annotation]';\n image.dataset.l10nId = 'text_annotation_type';\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name, });\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n },\n });\n\n return TextAnnotationElement;\n})();\n\n/**\n * @class\n * @alias WidgetAnnotationElement\n */\nvar WidgetAnnotationElement = (function WidgetAnnotationElementClosure() {\n function WidgetAnnotationElement(parameters, isRenderable) {\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(WidgetAnnotationElement, AnnotationElement, {\n /**\n * Render the widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof WidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function WidgetAnnotationElement_render() {\n // Show only the container for unsupported field types.\n return this.container;\n },\n });\n\n return WidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias TextWidgetAnnotationElement\n */\nvar TextWidgetAnnotationElement = (\n function TextWidgetAnnotationElementClosure() {\n var TEXT_ALIGNMENT = ['left', 'center', 'right'];\n\n function TextWidgetAnnotationElement(parameters) {\n var isRenderable = parameters.renderInteractiveForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n WidgetAnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the text widget annotation's HTML element in the empty container.\n *\n * @public\n * @memberof TextWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function TextWidgetAnnotationElement_render() {\n this.container.className = 'textWidgetAnnotation';\n\n var element = null;\n if (this.renderInteractiveForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n if (this.data.multiLine) {\n element = document.createElement('textarea');\n element.textContent = this.data.fieldValue;\n } else {\n element = document.createElement('input');\n element.type = 'text';\n element.setAttribute('value', this.data.fieldValue);\n }\n\n element.disabled = this.data.readOnly;\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n var fieldWidth = this.data.rect[2] - this.data.rect[0];\n var combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add('comb');\n element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';\n }\n } else {\n element = document.createElement('div');\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = 'middle';\n element.style.display = 'table-cell';\n\n var font = null;\n if (this.data.fontRefName) {\n font = this.page.commonObjs.getData(this.data.fontRefName);\n }\n this._setTextStyle(element, font);\n }\n\n if (this.data.textAlignment !== null) {\n element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @param {Object} font\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle:\n function TextWidgetAnnotationElement_setTextStyle(element, font) {\n // TODO: This duplicates some of the logic in CanvasGraphics.setFont().\n var style = element.style;\n style.fontSize = this.data.fontSize + 'px';\n style.direction = (this.data.fontDirection < 0 ? 'rtl' : 'ltr');\n\n if (!font) {\n return;\n }\n\n style.fontWeight = (font.black ?\n (font.bold ? '900' : 'bold') :\n (font.bold ? 'bold' : 'normal'));\n style.fontStyle = (font.italic ? 'italic' : 'normal');\n\n // Use a reasonable default font if the font doesn't specify a fallback.\n var fontFamily = font.loadedName ? '\"' + font.loadedName + '\", ' : '';\n var fallbackName = font.fallbackName || 'Helvetica, sans-serif';\n style.fontFamily = fontFamily + fallbackName;\n },\n });\n\n return TextWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias CheckboxWidgetAnnotationElement\n */\nvar CheckboxWidgetAnnotationElement =\n (function CheckboxWidgetAnnotationElementClosure() {\n function CheckboxWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the checkbox widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof CheckboxWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function CheckboxWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation checkBox';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'checkbox';\n if (this.data.fieldValue && this.data.fieldValue !== 'Off') {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return CheckboxWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias RadioButtonWidgetAnnotationElement\n */\nvar RadioButtonWidgetAnnotationElement =\n (function RadioButtonWidgetAnnotationElementClosure() {\n function RadioButtonWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the radio button widget annotation's HTML element\n * in the empty container.\n *\n * @public\n * @memberof RadioButtonWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function RadioButtonWidgetAnnotationElement_render() {\n this.container.className = 'buttonWidgetAnnotation radioButton';\n\n var element = document.createElement('input');\n element.disabled = this.data.readOnly;\n element.type = 'radio';\n element.name = this.data.fieldName;\n if (this.data.fieldValue === this.data.buttonValue) {\n element.setAttribute('checked', true);\n }\n\n this.container.appendChild(element);\n return this.container;\n },\n });\n\n return RadioButtonWidgetAnnotationElement;\n})();\n\n /**\n * @class\n * @alias ChoiceWidgetAnnotationElement\n */\nvar ChoiceWidgetAnnotationElement = (\n function ChoiceWidgetAnnotationElementClosure() {\n function ChoiceWidgetAnnotationElement(parameters) {\n WidgetAnnotationElement.call(this, parameters,\n parameters.renderInteractiveForms);\n }\n\n Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, {\n /**\n * Render the choice widget annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof ChoiceWidgetAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function ChoiceWidgetAnnotationElement_render() {\n this.container.className = 'choiceWidgetAnnotation';\n\n var selectElement = document.createElement('select');\n selectElement.disabled = this.data.readOnly;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n // Insert the options into the choice field.\n for (var i = 0, ii = this.data.options.length; i < ii; i++) {\n var option = this.data.options[i];\n\n var optionElement = document.createElement('option');\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n\n if (this.data.fieldValue.indexOf(option.displayValue) >= 0) {\n optionElement.setAttribute('selected', true);\n }\n\n selectElement.appendChild(optionElement);\n }\n\n this.container.appendChild(selectElement);\n return this.container;\n },\n });\n\n return ChoiceWidgetAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupAnnotationElement\n */\nvar PopupAnnotationElement = (function PopupAnnotationElementClosure() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n var IGNORE_TYPES = ['Line'];\n\n function PopupAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable);\n }\n\n Util.inherit(PopupAnnotationElement, AnnotationElement, {\n /**\n * Render the popup annotation's HTML element in the empty container.\n *\n * @public\n * @memberof PopupAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupAnnotationElement_render() {\n this.container.className = 'popupAnnotation';\n\n if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) {\n return this.container;\n }\n\n var selector = '[data-annotation-id=\"' + this.data.parentId + '\"]';\n var parentElement = this.layer.querySelector(selector);\n if (!parentElement) {\n return this.container;\n }\n\n var popup = new PopupElement({\n container: this.container,\n trigger: parentElement,\n color: this.data.color,\n title: this.data.title,\n contents: this.data.contents,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n var parentLeft = parseFloat(parentElement.style.left);\n var parentWidth = parseFloat(parentElement.style.width);\n CustomStyle.setProp('transformOrigin', this.container,\n -(parentLeft + parentWidth) + 'px -' +\n parentElement.style.top);\n this.container.style.left = (parentLeft + parentWidth) + 'px';\n\n this.container.appendChild(popup.render());\n return this.container;\n },\n });\n\n return PopupAnnotationElement;\n})();\n\n/**\n * @class\n * @alias PopupElement\n */\nvar PopupElement = (function PopupElementClosure() {\n var BACKGROUND_ENLIGHT = 0.7;\n\n function PopupElement(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.title = parameters.title;\n this.contents = parameters.contents;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n PopupElement.prototype = /** @lends PopupElement.prototype */ {\n /**\n * Render the popup's HTML element.\n *\n * @public\n * @memberof PopupElement\n * @returns {HTMLSectionElement}\n */\n render: function PopupElement_render() {\n var wrapper = document.createElement('div');\n wrapper.className = 'popupWrapper';\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = (this.hideWrapper ? wrapper : this.container);\n this.hideElement.setAttribute('hidden', true);\n\n var popup = document.createElement('div');\n popup.className = 'popup';\n\n var color = this.color;\n if (color) {\n // Enlighten the color.\n var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);\n }\n\n var contents = this._formatContents(this.contents);\n var title = document.createElement('h1');\n title.textContent = this.title;\n\n // Attach the event listeners to the trigger element.\n this.trigger.addEventListener('click', this._toggle.bind(this));\n this.trigger.addEventListener('mouseover', this._show.bind(this, false));\n this.trigger.addEventListener('mouseout', this._hide.bind(this, false));\n popup.addEventListener('click', this._hide.bind(this, true));\n\n popup.appendChild(title);\n popup.appendChild(contents);\n wrapper.appendChild(popup);\n return wrapper;\n },\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {string} contents\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents: function PopupElement_formatContents(contents) {\n var p = document.createElement('p');\n var lines = contents.split(/(?:\\r\\n?|\\n)/);\n for (var i = 0, ii = lines.length; i < ii; ++i) {\n var line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < (ii - 1)) {\n p.appendChild(document.createElement('br'));\n }\n }\n return p;\n },\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle: function PopupElement_toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n },\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show: function PopupElement_show(pin) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hasAttribute('hidden')) {\n this.hideElement.removeAttribute('hidden');\n this.container.style.zIndex += 1;\n }\n },\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide: function PopupElement_hide(unpin) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {\n this.hideElement.setAttribute('hidden', true);\n this.container.style.zIndex -= 1;\n }\n },\n };\n\n return PopupElement;\n})();\n\n/**\n * @class\n * @alias LineAnnotationElement\n */\nvar LineAnnotationElement = (function LineAnnotationElementClosure() {\n var SVG_NS = 'http://www.w3.org/2000/svg';\n\n function LineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(LineAnnotationElement, AnnotationElement, {\n /**\n * Render the line annotation's HTML element in the empty container.\n *\n * @public\n * @memberof LineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function LineAnnotationElement_render() {\n this.container.className = 'lineAnnotation';\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n var data = this.data;\n var width = data.rect[2] - data.rect[0];\n var height = data.rect[3] - data.rect[1];\n\n var svg = document.createElementNS(SVG_NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', width + 'px');\n svg.setAttributeNS(null, 'height', height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + width + ' ' + height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n var line = document.createElementNS(SVG_NS, 'svg:line');\n line.setAttributeNS(null, 'x1', data.rect[2] - data.lineCoordinates[0]);\n line.setAttributeNS(null, 'y1', data.rect[3] - data.lineCoordinates[1]);\n line.setAttributeNS(null, 'x2', data.rect[2] - data.lineCoordinates[2]);\n line.setAttributeNS(null, 'y2', data.rect[3] - data.lineCoordinates[3]);\n line.setAttributeNS(null, 'stroke-width', data.borderStyle.width);\n line.setAttributeNS(null, 'stroke', 'transparent');\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(this.container, line, this.data);\n\n return this.container;\n },\n });\n\n return LineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias HighlightAnnotationElement\n */\nvar HighlightAnnotationElement = (\n function HighlightAnnotationElementClosure() {\n function HighlightAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(HighlightAnnotationElement, AnnotationElement, {\n /**\n * Render the highlight annotation's HTML element in the empty container.\n *\n * @public\n * @memberof HighlightAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function HighlightAnnotationElement_render() {\n this.container.className = 'highlightAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return HighlightAnnotationElement;\n})();\n\n/**\n * @class\n * @alias UnderlineAnnotationElement\n */\nvar UnderlineAnnotationElement = (\n function UnderlineAnnotationElementClosure() {\n function UnderlineAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(UnderlineAnnotationElement, AnnotationElement, {\n /**\n * Render the underline annotation's HTML element in the empty container.\n *\n * @public\n * @memberof UnderlineAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function UnderlineAnnotationElement_render() {\n this.container.className = 'underlineAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return UnderlineAnnotationElement;\n})();\n\n/**\n * @class\n * @alias SquigglyAnnotationElement\n */\nvar SquigglyAnnotationElement = (function SquigglyAnnotationElementClosure() {\n function SquigglyAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(SquigglyAnnotationElement, AnnotationElement, {\n /**\n * Render the squiggly annotation's HTML element in the empty container.\n *\n * @public\n * @memberof SquigglyAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function SquigglyAnnotationElement_render() {\n this.container.className = 'squigglyAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return SquigglyAnnotationElement;\n})();\n\n/**\n * @class\n * @alias StrikeOutAnnotationElement\n */\nvar StrikeOutAnnotationElement = (\n function StrikeOutAnnotationElementClosure() {\n function StrikeOutAnnotationElement(parameters) {\n var isRenderable = !!(parameters.data.hasPopup ||\n parameters.data.title || parameters.data.contents);\n AnnotationElement.call(this, parameters, isRenderable,\n /* ignoreBorder = */ true);\n }\n\n Util.inherit(StrikeOutAnnotationElement, AnnotationElement, {\n /**\n * Render the strikeout annotation's HTML element in the empty container.\n *\n * @public\n * @memberof StrikeOutAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function StrikeOutAnnotationElement_render() {\n this.container.className = 'strikeoutAnnotation';\n\n if (!this.data.hasPopup) {\n this._createPopup(this.container, null, this.data);\n }\n return this.container;\n },\n });\n\n return StrikeOutAnnotationElement;\n})();\n\n/**\n * @class\n * @alias FileAttachmentAnnotationElement\n */\nvar FileAttachmentAnnotationElement = (\n function FileAttachmentAnnotationElementClosure() {\n function FileAttachmentAnnotationElement(parameters) {\n AnnotationElement.call(this, parameters, true);\n\n var file = this.data.file;\n this.filename = getFilenameFromUrl(file.filename);\n this.content = file.content;\n\n this.linkService.onFileAttachmentAnnotation({\n id: stringToPDFString(file.filename),\n filename: file.filename,\n content: file.content,\n });\n }\n\n Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, {\n /**\n * Render the file attachment annotation's HTML element in the empty\n * container.\n *\n * @public\n * @memberof FileAttachmentAnnotationElement\n * @returns {HTMLSectionElement}\n */\n render: function FileAttachmentAnnotationElement_render() {\n this.container.className = 'fileAttachmentAnnotation';\n\n var trigger = document.createElement('div');\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener('dblclick', this._download.bind(this));\n\n if (!this.data.hasPopup && (this.data.title || this.data.contents)) {\n this._createPopup(this.container, trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n },\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download: function FileAttachmentAnnotationElement_download() {\n if (!this.downloadManager) {\n warn('Download cannot be started due to unavailable download manager');\n return;\n }\n this.downloadManager.downloadData(this.content, this.filename, '');\n },\n });\n\n return FileAttachmentAnnotationElement;\n})();\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPage} page\n * @property {IPDFLinkService} linkService\n * @property {string} imageResourcesPath\n * @property {boolean} renderInteractiveForms\n */\n\n/**\n * @class\n * @alias AnnotationLayer\n */\nvar AnnotationLayer = (function AnnotationLayerClosure() {\n return {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n render: function AnnotationLayer_render(parameters) {\n var annotationElementFactory = new AnnotationElementFactory();\n\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n if (!data) {\n continue;\n }\n var element = annotationElementFactory.create({\n data,\n layer: parameters.div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath ||\n getDefaultSetting('imageResourcesPath'),\n renderInteractiveForms: parameters.renderInteractiveForms || false,\n });\n if (element.isRenderable) {\n parameters.div.appendChild(element.render());\n }\n }\n },\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n update: function AnnotationLayer_update(parameters) {\n for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {\n var data = parameters.annotations[i];\n var element = parameters.div.querySelector(\n '[data-annotation-id=\"' + data.id + '\"]');\n if (element) {\n CustomStyle.setProp('transform', element,\n 'matrix(' + parameters.viewport.transform.join(',') + ')');\n }\n }\n parameters.div.removeAttribute('hidden');\n },\n };\n})();\n\nexport {\n AnnotationLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/annotation_layer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n createObjectURL, FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, isArray,\n isNodeJS, isNum, OPS, Util, warn\n} from '../shared/util';\n\nvar SVGGraphics = function() {\n throw new Error('Not implemented: SVGGraphics');\n};\n\nif (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('GENERIC || SINGLE_FILE')) {\n\nvar SVG_DEFAULTS = {\n fontStyle: 'normal',\n fontWeight: 'normal',\n fillColor: '#000000',\n};\n\nvar convertImgDataToPng = (function convertImgDataToPngClosure() {\n var PNG_HEADER =\n new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);\n\n var CHUNK_WRAPPER_SIZE = 12;\n\n var crcTable = new Int32Array(256);\n for (var i = 0; i < 256; i++) {\n var c = i;\n for (var h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedB88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n var crc = -1;\n for (var i = start; i < end; i++) {\n var a = (crc ^ data[i]) & 0xff;\n var b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n var p = offset;\n var len = body.length;\n\n data[p] = len >> 24 & 0xff;\n data[p + 1] = len >> 16 & 0xff;\n data[p + 2] = len >> 8 & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n var crc = crc32(data, offset + 4, p);\n\n data[p] = crc >> 24 & 0xff;\n data[p + 1] = crc >> 16 & 0xff;\n data[p + 2] = crc >> 8 & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n var a = 1;\n var b = 0;\n for (var i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS()) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the canvas\n // API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n var input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = new Buffer(literals);\n }\n var output = __non_webpack_require__('zlib')\n .deflateSync(input, { level: 9, });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n var len = literals.length;\n var maxBlockLength = 0xFFFF;\n\n var deflateBlocks = Math.ceil(len / maxBlockLength);\n var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n var pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n var pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = len >> 8 & 0xff;\n idat[pi++] = (~len & 0xffff) & 0xff;\n idat[pi++] = (~len & 0xffff) >> 8 & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n var adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = adler >> 24 & 0xff;\n idat[pi++] = adler >> 16 & 0xff;\n idat[pi++] = adler >> 8 & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema) {\n var width = imgData.width;\n var height = imgData.height;\n var bitDepth, colorType, lineSize;\n var bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error('invalid format');\n }\n\n // prefix every row with predictor 0\n var literals = new Uint8Array((1 + lineSize) * height);\n var offsetLiterals = 0, offsetBytes = 0;\n var y, i;\n for (y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals);\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP) {\n // inverting for B/W\n offsetLiterals = 0;\n for (y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xFF;\n }\n }\n }\n\n var ihdr = new Uint8Array([\n width >> 24 & 0xff,\n width >> 16 & 0xff,\n width >> 8 & 0xff,\n width & 0xff,\n height >> 24 & 0xff,\n height >> 16 & 0xff,\n height >> 8 & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00 // interlace method\n ]);\n\n var idat = deflateSync(literals);\n\n // PNG will consists: header, IHDR+data, IDAT+data, and IEND.\n var pngLength = PNG_HEADER.length + (CHUNK_WRAPPER_SIZE * 3) +\n ihdr.length + idat.length;\n var data = new Uint8Array(pngLength);\n var offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk('IHDR', ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk('IDATA', idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk('IEND', new Uint8Array(0), data, offset);\n\n return createObjectURL(data, 'image/png', forceDataSchema);\n }\n\n return function convertImgDataToPng(imgData, forceDataSchema) {\n var kind = (imgData.kind === undefined ?\n ImageKind.GRAYSCALE_1BPP : imgData.kind);\n return encode(imgData, kind, forceDataSchema);\n };\n})();\n\nvar SVGExtraState = (function SVGExtraStateClosure() {\n function SVGExtraState() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = '#000000';\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = '';\n this.lineCap = '';\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = '';\n }\n\n SVGExtraState.prototype = {\n clone: function SVGExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return SVGExtraState;\n})();\n\nSVGGraphics = (function SVGGraphicsClosure() {\n function opListToTree(opList) {\n var opTree = [];\n var tmp = [];\n var opListLen = opList.length;\n\n for (var x = 0; x < opListLen; x++) {\n if (opList[x].fn === 'save') {\n opTree.push({ 'fnId': 92, 'fn': 'group', 'items': [], });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opList[x].fn === 'restore') {\n opTree = tmp.pop();\n } else {\n opTree.push(opList[x]);\n }\n }\n return opTree;\n }\n\n /**\n * Formats float number.\n * @param value {number} number to format.\n * @returns {string}\n */\n function pf(value) {\n if (value === (value | 0)) { // integer number\n return value.toString();\n }\n var s = value.toFixed(10);\n var i = s.length - 1;\n if (s[i] !== '0') {\n return s;\n }\n // removing trailing zeros\n do {\n i--;\n } while (s[i] === '0');\n return s.substr(0, s[i] === '.' ? i : i + 1);\n }\n\n /**\n * Formats transform matrix. The standard rotation, scale and translate\n * matrices are replaced by their shorter forms, and for identity matrix\n * returns empty string to save the memory.\n * @param m {Array} matrix to format.\n * @returns {string}\n */\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return '';\n }\n return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n var a = Math.acos(m[0]) * 180 / Math.PI;\n return 'rotate(' + pf(a) + ')';\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n }\n return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' +\n pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';\n }\n\n function SVGGraphics(commonObjs, objs, forceDataSchema) {\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n }\n\n var NS = 'http://www.w3.org/2000/svg';\n var XML_NS = 'http://www.w3.org/XML/1998/namespace';\n var XLINK_NS = 'http://www.w3.org/1999/xlink';\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var clipCount = 0;\n var maskCount = 0;\n\n SVGGraphics.prototype = {\n save: function SVGGraphics_save() {\n this.transformStack.push(this.transformMatrix);\n var old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n },\n\n restore: function SVGGraphics_restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n\n this.pendingClip = null;\n this.tgrp = null;\n },\n\n group: function SVGGraphics_group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n },\n\n loadDependencies: function SVGGraphics_loadDependencies(operatorList) {\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var argsArray = operatorList.argsArray;\n\n for (var i = 0; i < fnArrayLen; i++) {\n if (OPS.dependency === fnArray[i]) {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var obj = deps[n];\n var common = obj.substring(0, 2) === 'g_';\n var promise;\n if (common) {\n promise = new Promise((resolve) => {\n this.commonObjs.get(obj, resolve);\n });\n } else {\n promise = new Promise((resolve) => {\n this.objs.get(obj, resolve);\n });\n }\n this.current.dependencies.push(promise);\n }\n }\n }\n return Promise.all(this.current.dependencies);\n },\n\n transform: function SVGGraphics_transform(a, b, c, d, e, f) {\n var transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(this.transformMatrix,\n transformMatrix);\n this.tgrp = null;\n },\n\n getSVG: function SVGGraphics_getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n var svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n var opTree = this.convertOpList(operatorList);\n this.executeOpTree(opTree);\n return svgElement;\n });\n },\n\n convertOpList: function SVGGraphics_convertOpList(operatorList) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var fnArrayLen = fnArray.length;\n var REVOPS = [];\n var opList = [];\n\n for (var op in OPS) {\n REVOPS[OPS[op]] = op;\n }\n\n for (var x = 0; x < fnArrayLen; x++) {\n var fnId = fnArray[x];\n opList.push({\n 'fnId': fnId,\n 'fn': REVOPS[fnId],\n 'args': argsArray[x],\n });\n }\n return opListToTree(opList);\n },\n\n executeOpTree: function SVGGraphics_executeOpTree(opTree) {\n var opTreeLen = opTree.length;\n for (var x = 0; x < opTreeLen; x++) {\n var fn = opTree[x].fn;\n var fnId = opTree[x].fnId;\n var args = opTree[x].args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(args[0], args[1], args[2],\n args[3], args[4], args[5]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip('nonzero');\n break;\n case OPS.eoClip:\n this.clip('evenodd');\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintJpegXObject:\n this.paintJpegXObject(args[0], args[1], args[2]);\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(args[0], args[1], args[2], args[3],\n args[4], args[5]);\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTree[x].items);\n break;\n default:\n warn('Unimplemented operator ' + fn);\n break;\n }\n }\n },\n\n setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n },\n\n setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n },\n\n nextLine: function SVGGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {\n var current = this.current;\n this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f];\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n\n current.txtElement = document.createElementNS(NS, 'svg:text');\n current.txtElement.appendChild(current.tspan);\n },\n\n beginText: function SVGGraphics_beginText() {\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.lineMatrix = IDENTITY_MATRIX;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.txtElement = document.createElementNS(NS, 'svg:text');\n this.current.txtgrp = document.createElementNS(NS, 'svg:g');\n this.current.xcoords = [];\n },\n\n moveText: function SVGGraphics_moveText(x, y) {\n var current = this.current;\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n\n current.xcoords = [];\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n },\n\n showText: function SVGGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n\n if (fontSize === 0) {\n return;\n }\n\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (glyph === null) {\n // word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += -glyph * fontSize * 0.001;\n continue;\n }\n current.xcoords.push(current.x + x * textHScale);\n\n var width = glyph.width;\n var character = glyph.fontChar;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n current.tspan.textContent += character;\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, 'x',\n current.xcoords.map(pf).join(' '));\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);\n current.tspan.setAttributeNS(null, 'font-size',\n pf(current.fontSize) + 'px');\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);\n }\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, 'fill', current.fillColor);\n }\n\n current.txtElement.setAttributeNS(null, 'transform',\n pm(current.textMatrix) +\n ' scale(1, -1)');\n current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n },\n\n setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n\n addFontStyle: function SVGGraphics_addFontStyle(fontObj) {\n if (!this.cssStyle) {\n this.cssStyle = document.createElementNS(NS, 'svg:style');\n this.cssStyle.setAttributeNS(null, 'type', 'text/css');\n this.defs.appendChild(this.cssStyle);\n }\n\n var url = createObjectURL(fontObj.data, fontObj.mimetype,\n this.forceDataSchema);\n this.cssStyle.textContent +=\n '@font-face { font-family: \"' + fontObj.loadedName + '\";' +\n ' src: url(' + url + '); }\\n';\n },\n\n setFont: function SVGGraphics_setFont(details) {\n var current = this.current;\n var fontObj = this.commonObjs.get(details[0]);\n var size = details[1];\n this.current.font = fontObj;\n\n if (this.embedFonts && fontObj.data &&\n !this.embeddedFonts[fontObj.loadedName]) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n var bold = fontObj.black ? (fontObj.bold ? 'bolder' : 'bold') :\n (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = document.createElementNS(NS, 'svg:tspan');\n current.tspan.setAttributeNS(null, 'y', pf(-current.y));\n current.xcoords = [];\n },\n\n endText: function SVGGraphics_endText() {},\n\n // Path properties\n setLineWidth: function SVGGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n },\n setLineCap: function SVGGraphics_setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function SVGGraphics_setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function SVGGraphics_setMiterLimit(limit) {\n this.current.miterLimit = limit;\n },\n setStrokeAlpha: function SVGGraphics_setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n },\n setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.strokeColor = color;\n },\n setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n },\n setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.current.fillColor = color;\n this.current.tspan = document.createElementNS(NS, 'svg:tspan');\n this.current.xcoords = [];\n },\n setDash: function SVGGraphics_setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n },\n\n constructPath: function SVGGraphics_constructPath(ops, args) {\n var current = this.current;\n var x = current.x, y = current.y;\n current.path = document.createElementNS(NS, 'svg:path');\n var d = [];\n var opLength = ops.length;\n\n for (var i = 0, j = 0; i < opLength; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n var xw = x + width;\n var yh = y + height;\n d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh),\n 'L', pf(x), pf(yh), 'Z');\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push('M', pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push('L', pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]),\n pf(args[j + 3]), pf(x), pf(y));\n j += 6;\n break;\n case OPS.curveTo2:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]),\n pf(args[j + 2]), pf(args[j + 3]));\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y),\n pf(x), pf(y));\n j += 4;\n break;\n case OPS.closePath:\n d.push('Z');\n break;\n }\n }\n current.path.setAttributeNS(null, 'd', d.join(' '));\n current.path.setAttributeNS(null, 'fill', 'none');\n\n this._ensureTransformGroup().appendChild(current.path);\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n },\n\n endPath: function SVGGraphics_endPath() {\n if (!this.pendingClip) {\n return;\n }\n var current = this.current;\n // Add current path to clipping path\n var clipId = 'clippath' + clipCount;\n clipCount++;\n var clipPath = document.createElementNS(NS, 'svg:clipPath');\n clipPath.setAttributeNS(null, 'id', clipId);\n clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n var clipElement = current.element.cloneNode();\n if (this.pendingClip === 'evenodd') {\n clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');\n } else {\n clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n this.extraStack.forEach(function (prev) {\n prev.clipGroup = null;\n });\n }\n current.activeClipUrl = 'url(#' + clipId + ')';\n\n this.tgrp = null;\n },\n\n clip: function SVGGraphics_clip(type) {\n this.pendingClip = type;\n },\n\n closePath: function SVGGraphics_closePath() {\n var current = this.current;\n var d = current.path.getAttributeNS(null, 'd');\n d += 'Z';\n current.path.setAttributeNS(null, 'd', d);\n },\n\n setLeading: function SVGGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n\n setTextRise: function SVGGraphics_setTextRise(textRise) {\n this.current.textRise = textRise;\n },\n\n setHScale: function SVGGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n\n setGState: function SVGGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'Font':\n this.setFont(value);\n break;\n case 'CA':\n this.setStrokeAlpha(value);\n break;\n case 'ca':\n this.setFillAlpha(value);\n break;\n default:\n warn('Unimplemented graphic state ' + key);\n break;\n }\n }\n },\n\n fill: function SVGGraphics_fill() {\n var current = this.current;\n current.element.setAttributeNS(null, 'fill', current.fillColor);\n current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);\n },\n\n stroke: function SVGGraphics_stroke() {\n var current = this.current;\n\n current.element.setAttributeNS(null, 'stroke', current.strokeColor);\n current.element.setAttributeNS(null, 'stroke-opacity',\n current.strokeAlpha);\n current.element.setAttributeNS(null, 'stroke-miterlimit',\n pf(current.miterLimit));\n current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap);\n current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);\n current.element.setAttributeNS(null, 'stroke-width',\n pf(current.lineWidth) + 'px');\n current.element.setAttributeNS(null, 'stroke-dasharray',\n current.dashArray.map(pf).join(' '));\n current.element.setAttributeNS(null, 'stroke-dashoffset',\n pf(current.dashPhase) + 'px');\n\n current.element.setAttributeNS(null, 'fill', 'none');\n },\n\n eoFill: function SVGGraphics_eoFill() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fill();\n },\n\n fillStroke: function SVGGraphics_fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n },\n\n eoFillStroke: function SVGGraphics_eoFillStroke() {\n this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');\n this.fillStroke();\n },\n\n closeStroke: function SVGGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n\n closeFillStroke: function SVGGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n\n paintSolidColorImageMask:\n function SVGGraphics_paintSolidColorImageMask() {\n var current = this.current;\n var rect = document.createElementNS(NS, 'svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', '1px');\n rect.setAttributeNS(null, 'height', '1px');\n rect.setAttributeNS(null, 'fill', current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n },\n\n paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {\n var imgObj = this.objs.get(objId);\n var imgEl = document.createElementNS(NS, 'svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);\n imgEl.setAttributeNS(null, 'width', pf(w));\n imgEl.setAttributeNS(null, 'height', pf(h));\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-h));\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');\n\n this._ensureTransformGroup().appendChild(imgEl);\n },\n\n paintImageXObject: function SVGGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n this.paintInlineImageXObject(imgData);\n },\n\n paintInlineImageXObject:\n function SVGGraphics_paintInlineImageXObject(imgData, mask) {\n var width = imgData.width;\n var height = imgData.height;\n\n var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema);\n var cliprect = document.createElementNS(NS, 'svg:rect');\n cliprect.setAttributeNS(null, 'x', '0');\n cliprect.setAttributeNS(null, 'y', '0');\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n var imgEl = document.createElementNS(NS, 'svg:image');\n imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);\n imgEl.setAttributeNS(null, 'x', '0');\n imgEl.setAttributeNS(null, 'y', pf(-height));\n imgEl.setAttributeNS(null, 'width', pf(width) + 'px');\n imgEl.setAttributeNS(null, 'height', pf(height) + 'px');\n imgEl.setAttributeNS(null, 'transform',\n 'scale(' + pf(1 / width) + ' ' +\n pf(-1 / height) + ')');\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n },\n\n paintImageMaskXObject:\n function SVGGraphics_paintImageMaskXObject(imgData) {\n var current = this.current;\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = current.fillColor;\n\n current.maskId = 'mask' + maskCount++;\n var mask = document.createElementNS(NS, 'svg:mask');\n mask.setAttributeNS(null, 'id', current.maskId);\n\n var rect = document.createElementNS(NS, 'svg:rect');\n rect.setAttributeNS(null, 'x', '0');\n rect.setAttributeNS(null, 'y', '0');\n rect.setAttributeNS(null, 'width', pf(width));\n rect.setAttributeNS(null, 'height', pf(height));\n rect.setAttributeNS(null, 'fill', fillColor);\n rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');\n this.defs.appendChild(mask);\n\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n },\n\n paintFormXObjectBegin:\n function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {\n if (isArray(matrix) && matrix.length === 6) {\n this.transform(matrix[0], matrix[1], matrix[2],\n matrix[3], matrix[4], matrix[5]);\n }\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n\n var cliprect = document.createElementNS(NS, 'svg:rect');\n cliprect.setAttributeNS(null, 'x', bbox[0]);\n cliprect.setAttributeNS(null, 'y', bbox[1]);\n cliprect.setAttributeNS(null, 'width', pf(width));\n cliprect.setAttributeNS(null, 'height', pf(height));\n this.current.element = cliprect;\n this.clip('nonzero');\n this.endPath();\n }\n },\n\n paintFormXObjectEnd:\n function SVGGraphics_paintFormXObjectEnd() {},\n\n /**\n * @private\n */\n _initialize: function SVGGraphics_initialize(viewport) {\n // Create the SVG element.\n var svg = document.createElementNS(NS, 'svg:svg');\n svg.setAttributeNS(null, 'version', '1.1');\n svg.setAttributeNS(null, 'width', viewport.width + 'px');\n svg.setAttributeNS(null, 'height', viewport.height + 'px');\n svg.setAttributeNS(null, 'preserveAspectRatio', 'none');\n svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width +\n ' ' + viewport.height);\n\n // Create the definitions element.\n var definitions = document.createElementNS(NS, 'svg:defs');\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n var rootGroup = document.createElementNS(NS, 'svg:g');\n rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n },\n\n /**\n * @private\n */\n _ensureClipGroup: function SVGGraphics_ensureClipGroup() {\n if (!this.current.clipGroup) {\n var clipGroup = document.createElementNS(NS, 'svg:g');\n clipGroup.setAttributeNS(null, 'clip-path',\n this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n },\n\n /**\n * @private\n */\n _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = document.createElementNS(NS, 'svg:g');\n this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n },\n };\n return SVGGraphics;\n})();\n\n}\n\nexport {\n SVGGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/svg.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, createPromiseCapability, Util } from '../shared/util';\nimport { CustomStyle, getDefaultSetting } from './dom_utils';\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {TextContent} textContent - (optional) Text content to render\n * (the object is returned by the page's getTextContent() method).\n * @property {ReadableStream} textContentStream - (optional) Text content\n * stream to render (the stream is returned by the page's\n * streamTextContent() method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {PageViewport} viewport - The target viewport to properly\n * layout the text runs.\n * @property {Array} textDivs - (optional) HTML elements that are correspond\n * the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array} textContentItemsStr - (optional) Strings that correspond\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} timeout - (optional) Delay in milliseconds before\n * rendering of the text runs occurs.\n * @property {boolean} enhanceTextSelection - (optional) Whether to turn on the\n * text selection enhancement.\n */\nvar renderTextLayer = (function renderTextLayerClosure() {\n var MAX_TEXT_DIVS_TO_RENDER = 100000;\n\n var NonWhitespaceRegexp = /\\S/;\n\n function isAllWhitespace(str) {\n return !NonWhitespaceRegexp.test(str);\n }\n\n // Text layers may contain many thousand div's, and using `styleBuf` avoids\n // creating many intermediate strings when building their 'style' properties.\n var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0,\n 'px; font-family: ', '', ';'];\n\n function appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n var textDiv = document.createElement('div');\n var textDivProperties = {\n style: null,\n angle: 0,\n canvasWidth: 0,\n isWhitespace: false,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n };\n\n task._textDivs.push(textDiv);\n if (isAllWhitespace(geom.str)) {\n textDivProperties.isWhitespace = true;\n task._textDivProperties.set(textDiv, textDivProperties);\n return;\n }\n\n var tx = Util.transform(task._viewport.transform, geom.transform);\n var angle = Math.atan2(tx[1], tx[0]);\n var style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));\n var fontAscent = fontHeight;\n if (style.ascent) {\n fontAscent = style.ascent * fontAscent;\n } else if (style.descent) {\n fontAscent = (1 + style.descent) * fontAscent;\n }\n\n var left;\n var top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + (fontAscent * Math.sin(angle));\n top = tx[5] - (fontAscent * Math.cos(angle));\n }\n styleBuf[1] = left;\n styleBuf[3] = top;\n styleBuf[5] = fontHeight;\n styleBuf[7] = style.fontFamily;\n textDivProperties.style = styleBuf.join('');\n textDiv.setAttribute('style', textDivProperties.style);\n\n textDiv.textContent = geom.str;\n // |fontName| is only used by the Font Inspector. This test will succeed\n // when e.g. the Font Inspector is off but the Stepper is on, but it's\n // not worth the effort to do a more accurate test. We only use `dataset`\n // here to make the font name available for the debugger.\n if (getDefaultSetting('pdfBug')) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n if (geom.str.length > 1) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection) {\n var angleCos = 1, angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n var divWidth = (style.vertical ? geom.height : geom.width) *\n task._viewport.scale;\n var divHeight = fontHeight;\n\n var m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n }\n\n function render(task) {\n if (task._canceled) {\n return;\n }\n var textDivs = task._textDivs;\n var capability = task._capability;\n var textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (var i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n }\n\n function expand(task) {\n var bounds = task._bounds;\n var viewport = task._viewport;\n\n var expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (var i = 0; i < expanded.length; i++) {\n var div = bounds[i].div;\n var divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n var e = expanded[i], b = bounds[i];\n var m = b.m, c = m[0], s = m[1];\n // Finding intersections with expanded box.\n var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n var ts = new Float64Array(64);\n points.forEach(function (p, i) {\n var t = Util.applyTransform(p, m);\n ts[i + 0] = c && (e.left - t[0]) / c;\n ts[i + 4] = s && (e.top - t[1]) / s;\n ts[i + 8] = c && (e.right - t[0]) / c;\n ts[i + 12] = s && (e.bottom - t[1]) / s;\n\n ts[i + 16] = s && (e.left - t[0]) / -s;\n ts[i + 20] = c && (e.top - t[1]) / c;\n ts[i + 24] = s && (e.right - t[0]) / -s;\n ts[i + 28] = c && (e.bottom - t[1]) / c;\n\n ts[i + 32] = c && (e.left - t[0]) / -c;\n ts[i + 36] = s && (e.top - t[1]) / -s;\n ts[i + 40] = c && (e.right - t[0]) / -c;\n ts[i + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[i + 48] = s && (e.left - t[0]) / s;\n ts[i + 52] = c && (e.top - t[1]) / -c;\n ts[i + 56] = s && (e.right - t[0]) / s;\n ts[i + 60] = c && (e.bottom - t[1]) / -c;\n });\n var findPositiveMin = function (ts, offset, count) {\n var result = 0;\n for (var i = 0; i < count; i++) {\n var t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n };\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n }\n\n function expandBounds(width, height, boxes) {\n var bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n var expanded = new Array(boxes.length);\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n });\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n var e = expanded[i], b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n bounds.forEach(function (b) {\n var i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n });\n return expanded;\n }\n\n function expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n var fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n var horizon = [{\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n }];\n\n bounds.forEach(function (boundary) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n var i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n var j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n var horizonPart, affectedBoundary;\n var q, k, maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n var xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected bondary\n // placed on top of the current one.\n xNew = affectedBoundary.index > boundary.index ?\n affectedBoundary.x1New : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n var changedHorizon = [], lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n var useBoundary = affectedBoundary.x2 > boundary.x2 ?\n affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n var used = false;\n for (k = i - 1; !used && k >= 0 &&\n horizon[k].start >= affectedBoundary.y1; k--) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = j + 1; !used && k < horizon.length &&\n horizon[k].end <= affectedBoundary.y2; k++) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(horizon,\n [i, j - i + 1].concat(changedHorizon));\n });\n\n // Set new x2 for all unset boundaries.\n horizon.forEach(function (horizonPart) {\n var affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n });\n }\n\n /**\n * Text layer rendering task.\n *\n * @param {TextContent} textContent\n * @param {HTMLElement} container\n * @param {PageViewport} viewport\n * @param {Array} textDivs\n * @param {boolean} enhanceTextSelection\n * @private\n */\n function TextLayerRenderTask({ textContent, textContentStream, container,\n viewport, textDivs, textContentItemsStr,\n enhanceTextSelection, }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n }\n TextLayerRenderTask.prototype = {\n get promise() {\n return this._capability.promise;\n },\n\n cancel: function TextLayer_cancel() {\n if (this._reader) {\n this._reader.cancel(new AbortException('text layer task cancelled'));\n this._reader = null;\n }\n this._canceled = true;\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject('canceled');\n },\n\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache);\n }\n },\n\n _layoutText(textDiv) {\n let textLayerFrag = this._container;\n\n let textDivProperties = this._textDivProperties.get(textDiv);\n if (textDivProperties.isWhitespace) {\n return;\n }\n\n let fontSize = textDiv.style.fontSize;\n let fontFamily = textDiv.style.fontFamily;\n\n // Only build font string and set to context if different from last.\n if (fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily) {\n this._layoutTextCtx.font = fontSize + ' ' + fontFamily;\n this._lastFontSize = fontSize;\n this._lastFontFamily = fontFamily;\n }\n\n let width = this._layoutTextCtx.measureText(textDiv.textContent).width;\n\n let transform = '';\n if (textDivProperties.canvasWidth !== 0 && width > 0) {\n textDivProperties.scale = textDivProperties.canvasWidth / width;\n transform = 'scaleX(' + textDivProperties.scale + ')';\n }\n if (textDivProperties.angle !== 0) {\n transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;\n }\n if (transform !== '') {\n textDivProperties.originalTransform = transform;\n CustomStyle.setProp('transform', textDiv, transform);\n }\n this._textDivProperties.set(textDiv, textDivProperties);\n textLayerFrag.appendChild(textDiv);\n },\n\n _render: function TextLayer_render(timeout) {\n let capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n let canvas = document.createElement('canvas');\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC')) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext('2d', { alpha: false, });\n\n if (this._textContent) {\n let textItems = this._textContent.items;\n let textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n let pump = () => {\n this._reader.read().then(({ value, done, }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Util.extendObj(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error('Neither \"textContent\" nor \"textContentStream\"' +\n ' parameters specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) { // Render right away\n render(this);\n } else { // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n },\n\n expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n\n for (var i = 0, ii = this._textDivs.length; i < ii; i++) {\n var div = this._textDivs[i];\n var divProperties = this._textDivProperties.get(div);\n\n if (divProperties.isWhitespace) {\n continue;\n }\n if (expandDivs) {\n var transform = '', padding = '';\n\n if (divProperties.scale !== 1) {\n transform = 'scaleX(' + divProperties.scale + ')';\n }\n if (divProperties.angle !== 0) {\n transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;\n }\n if (divProperties.paddingLeft !== 0) {\n padding += ' padding-left: ' +\n (divProperties.paddingLeft / divProperties.scale) + 'px;';\n transform += ' translateX(' +\n (-divProperties.paddingLeft / divProperties.scale) + 'px)';\n }\n if (divProperties.paddingTop !== 0) {\n padding += ' padding-top: ' + divProperties.paddingTop + 'px;';\n transform += ' translateY(' + (-divProperties.paddingTop) + 'px)';\n }\n if (divProperties.paddingRight !== 0) {\n padding += ' padding-right: ' +\n (divProperties.paddingRight / divProperties.scale) + 'px;';\n }\n if (divProperties.paddingBottom !== 0) {\n padding += ' padding-bottom: ' +\n divProperties.paddingBottom + 'px;';\n }\n\n if (padding !== '') {\n div.setAttribute('style', divProperties.style + padding);\n }\n if (transform !== '') {\n CustomStyle.setProp('transform', div, transform);\n }\n } else {\n div.style.padding = 0;\n CustomStyle.setProp('transform', div,\n divProperties.originalTransform || '');\n }\n }\n },\n };\n\n /**\n * Starts rendering of the text layer.\n *\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\n function renderTextLayer(renderParameters) {\n var task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n }\n\n return renderTextLayer;\n})();\n\nexport {\n renderTextLayer,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/text_layer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction fixMetadata(meta) {\n return meta.replace(/>\\\\376\\\\377([^<]+)/g, function(all, codes) {\n var bytes = codes.replace(/\\\\([0-3])([0-7])([0-7])/g,\n function(code, d1, d2, d3) {\n return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);\n });\n var chars = '';\n for (var i = 0; i < bytes.length; i += 2) {\n var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);\n chars += (code >= 32 && code < 127 && code !== 60 && code !== 62 &&\n code !== 38) ? String.fromCharCode(code) :\n '&#x' + (0x10000 + code).toString(16).substring(1) + ';';\n }\n return '>' + chars;\n });\n}\n\nfunction Metadata(meta) {\n if (typeof meta === 'string') {\n // Ghostscript produces invalid metadata\n meta = fixMetadata(meta);\n\n var parser = new DOMParser();\n meta = parser.parseFromString(meta, 'application/xml');\n } else if (!(meta instanceof Document)) {\n throw new Error('Metadata: Invalid metadata object');\n }\n\n this.metaDocument = meta;\n this.metadata = Object.create(null);\n this.parse();\n}\n\nMetadata.prototype = {\n parse: function Metadata_parse() {\n var doc = this.metaDocument;\n var rdf = doc.documentElement;\n\n if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in \n rdf = rdf.firstChild;\n while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {\n rdf = rdf.nextSibling;\n }\n }\n\n var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;\n if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {\n return;\n }\n\n var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;\n for (i = 0, length = children.length; i < length; i++) {\n desc = children[i];\n if (desc.nodeName.toLowerCase() !== 'rdf:description') {\n continue;\n }\n\n for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {\n if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {\n entry = desc.childNodes[ii];\n name = entry.nodeName.toLowerCase();\n this.metadata[name] = entry.textContent.trim();\n }\n }\n }\n },\n\n get: function Metadata_get(name) {\n return this.metadata[name] || null;\n },\n\n has: function Metadata_has(name) {\n return typeof this.metadata[name] !== 'undefined';\n },\n};\n\nexport {\n Metadata,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/metadata.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-str */\n\nimport { getDefaultSetting } from './dom_utils';\nimport { shadow } from '../shared/util';\n\nvar WebGLUtils = (function WebGLUtilsClosure() {\n function loadShader(gl, code, shaderType) {\n var shader = gl.createShader(shaderType);\n gl.shaderSource(shader, code);\n gl.compileShader(shader);\n var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\n if (!compiled) {\n var errorMsg = gl.getShaderInfoLog(shader);\n throw new Error('Error during shader compilation: ' + errorMsg);\n }\n return shader;\n }\n function createVertexShader(gl, code) {\n return loadShader(gl, code, gl.VERTEX_SHADER);\n }\n function createFragmentShader(gl, code) {\n return loadShader(gl, code, gl.FRAGMENT_SHADER);\n }\n function createProgram(gl, shaders) {\n var program = gl.createProgram();\n for (var i = 0, ii = shaders.length; i < ii; ++i) {\n gl.attachShader(program, shaders[i]);\n }\n gl.linkProgram(program);\n var linked = gl.getProgramParameter(program, gl.LINK_STATUS);\n if (!linked) {\n var errorMsg = gl.getProgramInfoLog(program);\n throw new Error('Error during program linking: ' + errorMsg);\n }\n return program;\n }\n function createTexture(gl, image, textureId) {\n gl.activeTexture(textureId);\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // Set the parameters so we can render any size image.\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n\n // Upload the image into the texture.\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n return texture;\n }\n\n var currentGL, currentCanvas;\n function generateGL() {\n if (currentGL) {\n return;\n }\n\n // The temporary canvas is used in the WebGL context.\n currentCanvas = document.createElement('canvas');\n currentGL = currentCanvas.getContext('webgl',\n { premultipliedalpha: false, });\n }\n\n var smaskVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec2 a_texCoord; \\\n \\\n uniform vec2 u_resolution; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_texCoord = a_texCoord; \\\n } ';\n\n var smaskFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n uniform vec4 u_backdrop; \\\n uniform int u_subtype; \\\n uniform sampler2D u_image; \\\n uniform sampler2D u_mask; \\\n \\\n varying vec2 v_texCoord; \\\n \\\n void main() { \\\n vec4 imageColor = texture2D(u_image, v_texCoord); \\\n vec4 maskColor = texture2D(u_mask, v_texCoord); \\\n if (u_backdrop.a > 0.0) { \\\n maskColor.rgb = maskColor.rgb * maskColor.a + \\\n u_backdrop.rgb * (1.0 - maskColor.a); \\\n } \\\n float lum; \\\n if (u_subtype == 0) { \\\n lum = maskColor.a; \\\n } else { \\\n lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \\\n maskColor.b * 0.11; \\\n } \\\n imageColor.a *= lum; \\\n imageColor.rgb *= imageColor.a; \\\n gl_FragColor = imageColor; \\\n } ';\n\n var smaskCache = null;\n\n function initSmaskGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, smaskVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');\n cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');\n\n var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');\n var texLayerLocation = gl.getUniformLocation(program, 'u_image');\n var texMaskLocation = gl.getUniformLocation(program, 'u_mask');\n\n // provide texture coordinates for the rectangle.\n var texCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0.0, 0.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 1.0, 1.0]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(texCoordLocation);\n gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);\n\n gl.uniform1i(texLayerLocation, 0);\n gl.uniform1i(texMaskLocation, 1);\n\n smaskCache = cache;\n }\n\n function composeSMask(layer, mask, properties) {\n var width = layer.width, height = layer.height;\n\n if (!smaskCache) {\n initSmaskGL();\n }\n var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n if (properties.backdrop) {\n gl.uniform4f(cache.resolutionLocation, properties.backdrop[0],\n properties.backdrop[1], properties.backdrop[2], 1);\n } else {\n gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);\n }\n gl.uniform1i(cache.subtypeLocation,\n properties.subtype === 'Luminosity' ? 1 : 0);\n\n // Create a textures\n var texture = createTexture(gl, layer, gl.TEXTURE0);\n var maskTexture = createTexture(gl, mask, gl.TEXTURE1);\n\n\n // Create a buffer and put a single clipspace rectangle in\n // it (2 triangles)\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([\n 0, 0,\n width, 0,\n 0, height,\n 0, height,\n width, 0,\n width, height]), gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n // draw\n gl.clearColor(0, 0, 0, 0);\n gl.enable(gl.BLEND);\n gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n gl.flush();\n\n gl.deleteTexture(texture);\n gl.deleteTexture(maskTexture);\n gl.deleteBuffer(buffer);\n\n return canvas;\n }\n\n var figuresVertexShaderCode = '\\\n attribute vec2 a_position; \\\n attribute vec3 a_color; \\\n \\\n uniform vec2 u_resolution; \\\n uniform vec2 u_scale; \\\n uniform vec2 u_offset; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n vec2 position = (a_position + u_offset) * u_scale; \\\n vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \\\n gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \\\n \\\n v_color = vec4(a_color / 255.0, 1.0); \\\n } ';\n\n var figuresFragmentShaderCode = '\\\n precision mediump float; \\\n \\\n varying vec4 v_color; \\\n \\\n void main() { \\\n gl_FragColor = v_color; \\\n } ';\n\n var figuresCache = null;\n\n function initFiguresGL() {\n var canvas, gl;\n\n generateGL();\n canvas = currentCanvas;\n currentCanvas = null;\n gl = currentGL;\n currentGL = null;\n\n // setup a GLSL program\n var vertexShader = createVertexShader(gl, figuresVertexShaderCode);\n var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);\n var program = createProgram(gl, [vertexShader, fragmentShader]);\n gl.useProgram(program);\n\n var cache = {};\n cache.gl = gl;\n cache.canvas = canvas;\n cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');\n cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');\n cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');\n cache.positionLocation = gl.getAttribLocation(program, 'a_position');\n cache.colorLocation = gl.getAttribLocation(program, 'a_color');\n\n figuresCache = cache;\n }\n\n function drawFigures(width, height, backgroundColor, figures, context) {\n if (!figuresCache) {\n initFiguresGL();\n }\n var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;\n\n canvas.width = width;\n canvas.height = height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n gl.uniform2f(cache.resolutionLocation, width, height);\n\n // count triangle points\n var count = 0;\n var i, ii, rows;\n for (i = 0, ii = figures.length; i < ii; i++) {\n switch (figures[i].type) {\n case 'lattice':\n rows = (figures[i].coords.length / figures[i].verticesPerRow) | 0;\n count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;\n break;\n case 'triangles':\n count += figures[i].coords.length;\n break;\n }\n }\n // transfer data\n var coords = new Float32Array(count * 2);\n var colors = new Uint8Array(count * 3);\n var coordsMap = context.coords, colorsMap = context.colors;\n var pIndex = 0, cIndex = 0;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i], ps = figure.coords, cs = figure.colors;\n switch (figure.type) {\n case 'lattice':\n var cols = figure.verticesPerRow;\n rows = (ps.length / cols) | 0;\n for (var row = 1; row < rows; row++) {\n var offset = row * cols + 1;\n for (var col = 1; col < cols; col++, offset++) {\n coords[pIndex] = coordsMap[ps[offset - cols - 1]];\n coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];\n coords[pIndex + 2] = coordsMap[ps[offset - cols]];\n coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];\n coords[pIndex + 4] = coordsMap[ps[offset - 1]];\n coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];\n colors[cIndex] = colorsMap[cs[offset - cols - 1]];\n colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];\n colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];\n colors[cIndex + 3] = colorsMap[cs[offset - cols]];\n colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];\n colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];\n colors[cIndex + 6] = colorsMap[cs[offset - 1]];\n colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];\n colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];\n\n coords[pIndex + 6] = coords[pIndex + 2];\n coords[pIndex + 7] = coords[pIndex + 3];\n coords[pIndex + 8] = coords[pIndex + 4];\n coords[pIndex + 9] = coords[pIndex + 5];\n coords[pIndex + 10] = coordsMap[ps[offset]];\n coords[pIndex + 11] = coordsMap[ps[offset] + 1];\n colors[cIndex + 9] = colors[cIndex + 3];\n colors[cIndex + 10] = colors[cIndex + 4];\n colors[cIndex + 11] = colors[cIndex + 5];\n colors[cIndex + 12] = colors[cIndex + 6];\n colors[cIndex + 13] = colors[cIndex + 7];\n colors[cIndex + 14] = colors[cIndex + 8];\n colors[cIndex + 15] = colorsMap[cs[offset]];\n colors[cIndex + 16] = colorsMap[cs[offset] + 1];\n colors[cIndex + 17] = colorsMap[cs[offset] + 2];\n pIndex += 12;\n cIndex += 18;\n }\n }\n break;\n case 'triangles':\n for (var j = 0, jj = ps.length; j < jj; j++) {\n coords[pIndex] = coordsMap[ps[j]];\n coords[pIndex + 1] = coordsMap[ps[j] + 1];\n colors[cIndex] = colorsMap[cs[j]];\n colors[cIndex + 1] = colorsMap[cs[j] + 1];\n colors[cIndex + 2] = colorsMap[cs[j] + 2];\n pIndex += 2;\n cIndex += 3;\n }\n break;\n }\n }\n\n // draw\n if (backgroundColor) {\n gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255,\n backgroundColor[2] / 255, 1.0);\n } else {\n gl.clearColor(0, 0, 0, 0);\n }\n gl.clear(gl.COLOR_BUFFER_BIT);\n\n var coordsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.positionLocation);\n gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);\n\n var colorsBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);\n gl.enableVertexAttribArray(cache.colorLocation);\n gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false,\n 0, 0);\n\n gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);\n gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);\n\n gl.drawArrays(gl.TRIANGLES, 0, count);\n\n gl.flush();\n\n gl.deleteBuffer(coordsBuffer);\n gl.deleteBuffer(colorsBuffer);\n\n return canvas;\n }\n\n function cleanup() {\n if (smaskCache && smaskCache.canvas) {\n smaskCache.canvas.width = 0;\n smaskCache.canvas.height = 0;\n }\n if (figuresCache && figuresCache.canvas) {\n figuresCache.canvas.width = 0;\n figuresCache.canvas.height = 0;\n }\n smaskCache = null;\n figuresCache = null;\n }\n\n return {\n get isEnabled() {\n if (getDefaultSetting('disableWebGL')) {\n return false;\n }\n var enabled = false;\n try {\n generateGL();\n enabled = !!currentGL;\n } catch (e) { }\n return shadow(this, 'isEnabled', enabled);\n },\n composeSMask,\n drawFigures,\n clear: cleanup,\n };\n})();\n\nexport {\n WebGLUtils,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/webgl.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _UnsupportedManager, getDocument, LoopbackPort, PDFDataRangeTransport,\n PDFWorker\n} from './api';\nimport {\n addLinkAttributes, CustomStyle, DEFAULT_LINK_REL, getFilenameFromUrl,\n isExternalLinkTargetSet, isValidUrl, LinkTarget\n} from './dom_utils';\nimport {\n createBlob, createObjectURL, createPromiseCapability, deprecated,\n getVerbosityLevel, globalScope, InvalidPDFException, isLittleEndian,\n MissingPDFException, OPS, PageViewport, PasswordException, PasswordResponses,\n removeNullCharacters, setVerbosityLevel, shadow, UnexpectedResponseException,\n UnknownErrorException, UNSUPPORTED_FEATURES, Util, VERBOSITY_LEVELS, warn\n} from '../shared/util';\nimport { AnnotationLayer } from './annotation_layer';\nimport { Metadata } from './metadata';\nimport { renderTextLayer } from './text_layer';\nimport { SVGGraphics } from './svg';\n\nvar isWorker = (typeof window === 'undefined');\n\n// The global PDFJS object is now deprecated and will not be supported in\n// the future. The members below are maintained for backward compatibility\n// and shall not be extended or modified. If the global.js is included as\n// a module, we will create a global PDFJS object instance or use existing.\nif (!globalScope.PDFJS) {\n globalScope.PDFJS = {};\n}\nvar PDFJS = globalScope.PDFJS;\n\nif (typeof PDFJSDev !== 'undefined') {\n PDFJS.version = PDFJSDev.eval('BUNDLE_VERSION');\n PDFJS.build = PDFJSDev.eval('BUNDLE_BUILD');\n}\n\nPDFJS.pdfBug = false;\n\nif (PDFJS.verbosity !== undefined) {\n setVerbosityLevel(PDFJS.verbosity);\n}\ndelete PDFJS.verbosity;\nObject.defineProperty(PDFJS, 'verbosity', {\n get() {\n return getVerbosityLevel();\n },\n set(level) {\n setVerbosityLevel(level);\n },\n enumerable: true,\n configurable: true,\n});\n\nPDFJS.VERBOSITY_LEVELS = VERBOSITY_LEVELS;\nPDFJS.OPS = OPS;\nPDFJS.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;\nPDFJS.isValidUrl = isValidUrl;\nPDFJS.shadow = shadow;\nPDFJS.createBlob = createBlob;\nPDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) {\n return createObjectURL(data, contentType, PDFJS.disableCreateObjectURL);\n};\nObject.defineProperty(PDFJS, 'isLittleEndian', {\n configurable: true,\n get: function PDFJS_isLittleEndian() {\n return shadow(PDFJS, 'isLittleEndian', isLittleEndian());\n },\n});\nPDFJS.removeNullCharacters = removeNullCharacters;\nPDFJS.PasswordResponses = PasswordResponses;\nPDFJS.PasswordException = PasswordException;\nPDFJS.UnknownErrorException = UnknownErrorException;\nPDFJS.InvalidPDFException = InvalidPDFException;\nPDFJS.MissingPDFException = MissingPDFException;\nPDFJS.UnexpectedResponseException = UnexpectedResponseException;\nPDFJS.Util = Util;\nPDFJS.PageViewport = PageViewport;\nPDFJS.createPromiseCapability = createPromiseCapability;\n\n/**\n * The maximum allowed image size in total pixels e.g. width * height. Images\n * above this value will not be drawn. Use -1 for no limit.\n * @var {number}\n */\nPDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ?\n -1 : PDFJS.maxImageSize);\n\n/**\n * The url of where the predefined Adobe CMaps are located. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl);\n\n/**\n * Specifies if CMaps are binary packed.\n * @var {boolean}\n */\nPDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;\n\n/**\n * By default fonts are converted to OpenType fonts and loaded via font face\n * rules. If disabled, the font will be rendered using a built in font\n * renderer that constructs the glyphs with primitive path commands.\n * @var {boolean}\n */\nPDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ?\n false : PDFJS.disableFontFace);\n\n/**\n * Path for image resources, mainly for annotation icons. Include trailing\n * slash.\n * @var {string}\n */\nPDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ?\n '' : PDFJS.imageResourcesPath);\n\n/**\n * Disable the web worker and run all code on the main thread. This will\n * happen automatically if the browser doesn't support workers or sending\n * typed arrays to workers.\n * @var {boolean}\n */\nPDFJS.disableWorker = (PDFJS.disableWorker === undefined ?\n false : PDFJS.disableWorker);\n\n/**\n * Path and filename of the worker file. Required when the worker is enabled\n * in development mode. If unspecified in the production build, the worker\n * will be loaded based on the location of the pdf.js file. It is recommended\n * that the workerSrc is set in a custom application to prevent issues caused\n * by third-party frameworks and libraries.\n * @var {string}\n */\nPDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc);\n\n/**\n * Defines global port for worker process. Overrides workerSrc and\n * disableWorker setting.\n */\nPDFJS.workerPort = (PDFJS.workerPort === undefined ? null : PDFJS.workerPort);\n\n/**\n * Disable range request loading of PDF files. When enabled and if the server\n * supports partial content requests then the PDF will be fetched in chunks.\n * Enabled (false) by default.\n * @var {boolean}\n */\nPDFJS.disableRange = (PDFJS.disableRange === undefined ?\n false : PDFJS.disableRange);\n\n/**\n * Disable streaming of PDF file data. By default PDF.js attempts to load PDF\n * in chunks. This default behavior can be disabled.\n * @var {boolean}\n */\nPDFJS.disableStream = (PDFJS.disableStream === undefined ?\n false : PDFJS.disableStream);\n\n/**\n * Disable pre-fetching of PDF file data. When range requests are enabled\n * PDF.js will automatically keep fetching more data even if it isn't needed\n * to display the current page. This default behavior can be disabled.\n *\n * NOTE: It is also necessary to disable streaming, see above,\n * in order for disabling of pre-fetching to work correctly.\n * @var {boolean}\n */\nPDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?\n false : PDFJS.disableAutoFetch);\n\n/**\n * Enables special hooks for debugging PDF.js.\n * @var {boolean}\n */\nPDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);\n\n/**\n * Enables transfer usage in postMessage for ArrayBuffers.\n * @var {boolean}\n */\nPDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?\n true : PDFJS.postMessageTransfers);\n\n/**\n * Disables URL.createObjectURL usage.\n * @var {boolean}\n */\nPDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ?\n false : PDFJS.disableCreateObjectURL);\n\n/**\n * Disables WebGL usage.\n * @var {boolean}\n */\nPDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ?\n true : PDFJS.disableWebGL);\n\n/**\n * Specifies the |target| attribute for external links.\n * The constants from PDFJS.LinkTarget should be used:\n * - NONE [default]\n * - SELF\n * - BLANK\n * - PARENT\n * - TOP\n * @var {number}\n */\nPDFJS.externalLinkTarget = (PDFJS.externalLinkTarget === undefined ?\n LinkTarget.NONE : PDFJS.externalLinkTarget);\n\n/**\n * Specifies the |rel| attribute for external links. Defaults to stripping\n * the referrer.\n * @var {string}\n */\nPDFJS.externalLinkRel = (PDFJS.externalLinkRel === undefined ?\n DEFAULT_LINK_REL : PDFJS.externalLinkRel);\n\n/**\n * Determines if we can eval strings as JS. Primarily used to improve\n * performance for font rendering.\n * @var {boolean}\n */\nPDFJS.isEvalSupported = (PDFJS.isEvalSupported === undefined ?\n true : PDFJS.isEvalSupported);\n\n/**\n * Opt-in to backwards incompatible API changes. NOTE:\n * If the `PDFJS_NEXT` build flag is set, it will override this setting.\n * @var {boolean}\n */\nPDFJS.pdfjsNext = (PDFJS.pdfjsNext === undefined) ? false : PDFJS.pdfjsNext;\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow;\n delete PDFJS.openExternalLinksInNewWindow;\n Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', {\n get() {\n return PDFJS.externalLinkTarget === LinkTarget.BLANK;\n },\n set(value) {\n if (value) {\n deprecated('PDFJS.openExternalLinksInNewWindow, please use ' +\n '\"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK\" instead.');\n }\n if (PDFJS.externalLinkTarget !== LinkTarget.NONE) {\n warn('PDFJS.externalLinkTarget is already initialized');\n return;\n }\n PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE;\n },\n enumerable: true,\n configurable: true,\n });\n if (savedOpenExternalLinksInNewWindow) {\n /**\n * (Deprecated) Opens external links in a new window if enabled.\n * The default behavior opens external links in the PDF.js window.\n *\n * NOTE: This property has been deprecated, please use\n * `PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK` instead.\n * @var {boolean}\n */\n PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow;\n }\n}\n\nPDFJS.getDocument = getDocument;\nPDFJS.LoopbackPort = LoopbackPort;\nPDFJS.PDFDataRangeTransport = PDFDataRangeTransport;\nPDFJS.PDFWorker = PDFWorker;\n\nPDFJS.hasCanvasTypedArrays = true; // compatibility.js ensures this invariant\nPDFJS.CustomStyle = CustomStyle;\nPDFJS.LinkTarget = LinkTarget;\nPDFJS.addLinkAttributes = addLinkAttributes;\nPDFJS.getFilenameFromUrl = getFilenameFromUrl;\nPDFJS.isExternalLinkTargetSet = isExternalLinkTargetSet;\n\nPDFJS.AnnotationLayer = AnnotationLayer;\n\nPDFJS.renderTextLayer = renderTextLayer;\n\nPDFJS.Metadata = Metadata;\n\nPDFJS.SVGGraphics = SVGGraphics;\n\nPDFJS.UnsupportedManager = _UnsupportedManager;\n\nexport {\n globalScope,\n isWorker,\n PDFJS,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/global.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, createPromiseCapability, globalScope, isInt, MissingPDFException,\n UnexpectedResponseException\n} from '../shared/util';\nimport { setPDFNetworkStreamClass } from './api';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n throw new Error('Module \"./network\" shall not ' +\n 'be used with FIREFOX or MOZCENTRAL build.');\n}\n\nvar OK_RESPONSE = 200;\nvar PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction NetworkManager(url, args) {\n this.url = url;\n args = args || {};\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || {};\n this.withCredentials = args.withCredentials || false;\n this.getXhr = args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n this.loadedRequests = Object.create(null);\n}\n\nfunction getArrayBuffer(xhr) {\n var data = xhr.response;\n if (typeof data !== 'string') {\n return data;\n }\n var length = data.length;\n var array = new Uint8Array(length);\n for (var i = 0; i < length; i++) {\n array[i] = data.charCodeAt(i) & 0xFF;\n }\n return array.buffer;\n}\n\nvar supportsMozChunked =\n typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') ? false :\n (function supportsMozChunkedClosure() {\n try {\n var x = new XMLHttpRequest();\n // Firefox 37- required .open() to be called before setting responseType.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=707484\n // Even though the URL is not visited, .open() could fail if the URL is\n // blocked, e.g. via the connect-src CSP directive or the NoScript addon.\n // When this error occurs, this feature detection method will mistakenly\n // report that moz-chunked-arraybuffer is not supported in Firefox 37-.\n x.open('GET', globalScope.location.href);\n x.responseType = 'moz-chunked-arraybuffer';\n return x.responseType === 'moz-chunked-arraybuffer';\n } catch (e) {\n return false;\n }\n})();\n\nNetworkManager.prototype = {\n requestRange: function NetworkManager_requestRange(begin, end, listeners) {\n var args = {\n begin,\n end,\n };\n for (var prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n },\n\n requestFull: function NetworkManager_requestFull(listeners) {\n return this.request(listeners);\n },\n\n request: function NetworkManager_request(args) {\n var xhr = this.getXhr();\n var xhrId = this.currXhrId++;\n var pendingRequest = this.pendingRequests[xhrId] = {\n xhr,\n };\n\n xhr.open('GET', this.url);\n xhr.withCredentials = this.withCredentials;\n for (var property in this.httpHeaders) {\n var value = this.httpHeaders[property];\n if (typeof value === 'undefined') {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && 'begin' in args && 'end' in args) {\n var rangeStr = args.begin + '-' + (args.end - 1);\n xhr.setRequestHeader('Range', 'bytes=' + rangeStr);\n pendingRequest.expectedStatus = 206;\n } else {\n pendingRequest.expectedStatus = 200;\n }\n\n var useMozChunkedLoading = supportsMozChunked && !!args.onProgressiveData;\n if (useMozChunkedLoading) {\n xhr.responseType = 'moz-chunked-arraybuffer';\n pendingRequest.onProgressiveData = args.onProgressiveData;\n pendingRequest.mozChunked = true;\n } else {\n xhr.responseType = 'arraybuffer';\n }\n\n if (args.onError) {\n xhr.onerror = function(evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n },\n\n onProgress: function NetworkManager_onProgress(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n if (pendingRequest.mozChunked) {\n var chunk = getArrayBuffer(pendingRequest.xhr);\n pendingRequest.onProgressiveData(chunk);\n }\n\n var onProgress = pendingRequest.onProgress;\n if (onProgress) {\n onProgress(evt);\n }\n },\n\n onStateChange: function NetworkManager_onStateChange(xhrId, evt) {\n var pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n // Maybe abortRequest was called...\n return;\n }\n\n var xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // success status == 0 can be on ftp, file and other protocols\n if (xhr.status === 0 && this.isHttp) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n var xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n var ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (!ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus) {\n if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n return;\n }\n\n this.loadedRequests[xhrId] = true;\n\n var chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n var rangeHeader = xhr.getResponseHeader('Content-Range');\n var matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n var begin = parseInt(matches[1], 10);\n pendingRequest.onDone({\n begin,\n chunk,\n });\n } else if (pendingRequest.onProgressiveData) {\n pendingRequest.onDone(null);\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else if (pendingRequest.onError) {\n pendingRequest.onError(xhr.status);\n }\n },\n\n hasPendingRequests: function NetworkManager_hasPendingRequests() {\n for (var xhrId in this.pendingRequests) {\n return true;\n }\n return false;\n },\n\n getRequestXhr: function NetworkManager_getXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n },\n\n isStreamingRequest: function NetworkManager_isStreamingRequest(xhrId) {\n return !!(this.pendingRequests[xhrId].onProgressiveData);\n },\n\n isPendingRequest: function NetworkManager_isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n },\n\n isLoadedRequest: function NetworkManager_isLoadedRequest(xhrId) {\n return xhrId in this.loadedRequests;\n },\n\n abortAllRequests: function NetworkManager_abortAllRequests() {\n for (var xhrId in this.pendingRequests) {\n this.abortRequest(xhrId | 0);\n }\n },\n\n abortRequest: function NetworkManager_abortRequest(xhrId) {\n var xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n },\n};\n\n/** @implements {IPDFStream} */\nfunction PDFNetworkStream(options) {\n this._options = options;\n var source = options.source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n}\n\nPDFNetworkStream.prototype = {\n _onRangeRequestReaderClosed:\n function PDFNetworkStream_onRangeRequestReaderClosed(reader) {\n var i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFNetworkStream_getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader =\n new PDFNetworkStreamFullRequestReader(this._manager, this._options);\n return this._fullRequestReader;\n },\n\n getRangeReader: function PDFNetworkStream_getRangeReader(begin, end) {\n var reader = new PDFNetworkStreamRangeRequestReader(this._manager,\n begin, end);\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests: function PDFNetworkStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n },\n};\n\n/** @implements {IPDFStreamReader} */\nfunction PDFNetworkStreamFullRequestReader(manager, options) {\n this._manager = manager;\n\n var source = options.source;\n var args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onProgressiveData: source.disableStream ? null :\n this._onProgressiveData.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = options.disableRange || false;\n this._contentLength = source.length; // optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n}\n\nPDFNetworkStreamFullRequestReader.prototype = {\n _validateRangeRequestCapabilities: function\n PDFNetworkStreamFullRequestReader_validateRangeRequestCapabilities() {\n\n if (this._disableRange) {\n return false;\n }\n\n var networkManager = this._manager;\n if (!networkManager.isHttp) {\n return false;\n }\n var fullRequestXhrId = this._fullRequestId;\n var fullRequestXhr = networkManager.getRequestXhr(fullRequestXhrId);\n if (fullRequestXhr.getResponseHeader('Accept-Ranges') !== 'bytes') {\n return false;\n }\n\n var contentEncoding =\n fullRequestXhr.getResponseHeader('Content-Encoding') || 'identity';\n if (contentEncoding !== 'identity') {\n return false;\n }\n\n var length = fullRequestXhr.getResponseHeader('Content-Length');\n length = parseInt(length, 10);\n if (!isInt(length)) {\n return false;\n }\n\n this._contentLength = length; // setting right content length\n\n if (length <= 2 * this._rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does\n // not make any sense to abort the request and retry with a range\n // request.\n return false;\n }\n\n return true;\n },\n\n _onHeadersReceived:\n function PDFNetworkStreamFullRequestReader_onHeadersReceived() {\n\n if (this._validateRangeRequestCapabilities()) {\n this._isRangeSupported = true;\n }\n\n var networkManager = this._manager;\n var fullRequestXhrId = this._fullRequestId;\n if (networkManager.isStreamingRequest(fullRequestXhrId)) {\n // We can continue fetching when progressive loading is enabled,\n // and we don't need the autoFetch feature.\n this._isStreamingSupported = true;\n } else if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range\n // requests.\n networkManager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n },\n\n _onProgressiveData:\n function PDFNetworkStreamFullRequestReader_onProgressiveData(chunk) {\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._cachedChunks.push(chunk);\n }\n },\n\n _onDone: function PDFNetworkStreamFullRequestReader_onDone(args) {\n if (args) {\n this._onProgressiveData(args.chunk);\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n\n _onError: function PDFNetworkStreamFullRequestReader_onError(status) {\n var url = this._url;\n var exception;\n if (status === 404 || status === 0 && /^file:/.test(url)) {\n exception = new MissingPDFException('Missing PDF \"' + url + '\".');\n } else {\n exception = new UnexpectedResponseException(\n 'Unexpected server response (' + status +\n ') while retrieving PDF \"' + url + '\".', status);\n }\n this._storedError = exception;\n this._headersReceivedCapability.reject(exception);\n this._requests.forEach(function (requestCapability) {\n requestCapability.reject(exception);\n });\n this._requests = [];\n this._cachedChunks = [];\n },\n\n _onProgress: function PDFNetworkStreamFullRequestReader_onProgress(data) {\n if (this.onProgress) {\n this.onProgress({\n loaded: data.loaded,\n total: data.lengthComputable ? data.total : this._contentLength,\n });\n }\n },\n\n get isRangeSupported() {\n return this._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n },\n\n get contentLength() {\n return this._contentLength;\n },\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n },\n\n read: function PDFNetworkStreamFullRequestReader_read() {\n if (this._storedError) {\n return Promise.reject(this._storedError);\n }\n if (this._cachedChunks.length > 0) {\n var chunk = this._cachedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamFullRequestReader_cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n },\n};\n\n/** @implements {IPDFStreamRangeReader} */\nfunction PDFNetworkStreamRangeRequestReader(manager, begin, end) {\n this._manager = manager;\n var args = {\n onDone: this._onDone.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n\n this.onProgress = null;\n this.onClosed = null;\n}\n\nPDFNetworkStreamRangeRequestReader.prototype = {\n _close: function PDFNetworkStreamRangeRequestReader_close() {\n if (this.onClosed) {\n this.onClosed(this);\n }\n },\n\n _onDone: function PDFNetworkStreamRangeRequestReader_onDone(data) {\n var chunk = data.chunk;\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._close();\n },\n\n _onProgress: function PDFNetworkStreamRangeRequestReader_onProgress(evt) {\n if (!this.isStreamingSupported && this.onProgress) {\n this.onProgress({\n loaded: evt.loaded,\n });\n }\n },\n\n get isStreamingSupported() {\n return false; // TODO allow progressive range bytes loading\n },\n\n read: function PDFNetworkStreamRangeRequestReader_read() {\n if (this._queuedChunk !== null) {\n var chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFNetworkStreamRangeRequestReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n },\n};\n\nsetPDFNetworkStreamClass(PDFNetworkStream);\n\nexport {\n PDFNetworkStream,\n NetworkManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/network.js","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/ // The module cache\n/******/ var installedModules = {};\n/******/\n/******/ // The require function\n/******/ function __w_pdfjs_require__(moduleId) {\n/******/\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n/******/\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n/******/\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n/******/\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n/******/\n/******/\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __w_pdfjs_require__.m = modules;\n/******/\n/******/ // expose the module cache\n/******/ __w_pdfjs_require__.c = installedModules;\n/******/\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/ // define getter function for harmony exports\n/******/ __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ if(!__w_pdfjs_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n/******/\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __w_pdfjs_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __w_pdfjs_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n/******/\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ // __webpack_public_path__\n/******/ __w_pdfjs_require__.p = \"\";\n/******/\n/******/ // Load entry module and return exports\n/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n assert(exports.typeIsObject(o));\n Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n assert(typeof done === 'boolean');\n var obj = {};\n Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n if (Number.isNaN(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n\n return true;\n};\n\nfunction Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n\n return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n\n return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n try {\n return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n } catch (returnValueE) {\n return Promise.reject(returnValueE);\n }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n assert(Array.isArray(argsF));\n\n var method = void 0;\n try {\n method = O[P];\n } catch (methodE) {\n return Promise.reject(methodE);\n }\n\n if (method === undefined) {\n return F.apply(null, argsF);\n }\n\n try {\n return Promise.resolve(Call(method, O, args));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n\n return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n if (size !== undefined && typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n\n highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n // expect any errors, but assertion errors are always problematic.\n if (e && e.constructor === AssertionError) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n};\n\nfunction AssertionError(message) {\n this.name = 'AssertionError';\n this.message = message || '';\n this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n\nmodule.exports = {\n rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n AssertionError: AssertionError,\n assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert,\n rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n DequeueValue = _require3.DequeueValue,\n EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n PeekQueueValue = _require3.PeekQueueValue,\n ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n function WritableStream() {\n var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n _ref$highWaterMark = _ref.highWaterMark,\n highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n _classCallCheck(this, WritableStream);\n\n this._state = 'writable';\n\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n this._storedError = undefined;\n\n this._writer = undefined;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._writableStreamController = undefined;\n\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n this._writeRequests = [];\n\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n this._inFlightWriteRequest = undefined;\n\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n this._closeRequest = undefined;\n\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n this._inFlightCloseRequest = undefined;\n\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n this._pendingAbortRequest = undefined;\n\n // The backpressure signal set by the controller.\n this._backpressure = false;\n\n var type = underlyingSink.type;\n\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n\n this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n this._writableStreamController.__startSteps();\n }\n\n _createClass(WritableStream, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('abort'));\n }\n\n if (IsWritableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n }\n\n return WritableStreamAbort(this, reason);\n }\n }, {\n key: 'getWriter',\n value: function getWriter() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n\n return AcquireWritableStreamDefaultWriter(this);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsWritableStreamLocked(this);\n }\n }]);\n\n return WritableStream;\n}();\n\nmodule.exports = {\n AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n IsWritableStream: IsWritableStream,\n IsWritableStreamLocked: IsWritableStreamLocked,\n WritableStream: WritableStream,\n WritableStreamAbort: WritableStreamAbort,\n WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n if (stream._writer === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n var error = new TypeError('Requested to abort');\n if (stream._pendingAbortRequest !== undefined) {\n return Promise.reject(error);\n }\n\n assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n\n var promise = new Promise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, error);\n }\n\n return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n assert(IsWritableStreamLocked(stream) === true);\n assert(stream._state === 'writable');\n\n var promise = new Promise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._writeRequests.push(writeRequest);\n });\n\n return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n\n assert(state === 'erroring');\n WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n assert(stream._state === 'writable', 'state must be writable');\n\n var controller = stream._writableStreamController;\n assert(controller !== undefined, 'controller must not be undefined');\n\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n assert(stream._state === 'erroring', 'stream._state === erroring');\n assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n stream._state = 'errored';\n stream._writableStreamController.__errorSteps();\n\n var storedError = stream._storedError;\n for (var i = 0; i < stream._writeRequests.length; i++) {\n var writeRequest = stream._writeRequests[i];\n writeRequest._reject(storedError);\n }\n stream._writeRequests = [];\n\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n promise.then(function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n\n var state = stream._state;\n\n assert(state === 'writable' || state === 'erroring');\n\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n\n stream._state = 'closed';\n\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n\n assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n assert(stream._inFlightCloseRequest === undefined);\n assert(stream._closeRequest !== undefined);\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n if (stream._closeRequest !== undefined) {\n assert(stream._inFlightCloseRequest === undefined);\n\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n writer._closedPromise.catch(function () {});\n }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n assert(stream._state === 'writable');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n assert(backpressure === false);\n\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n\n stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n _classCallCheck(this, WritableStreamDefaultWriter);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n\n this._ownerWritableStream = stream;\n stream._writer = this;\n\n var state = stream._state;\n\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n assert(state === 'errored', 'state must be errored');\n\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n this._closedPromise.catch(function () {});\n }\n }\n\n _createClass(WritableStreamDefaultWriter, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('abort'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('abort'));\n }\n\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('close'));\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return Promise.reject(defaultWriterLockException('close'));\n }\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return Promise.reject(new TypeError('cannot close an already-closing stream'));\n }\n\n return WritableStreamDefaultWriterClose(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return;\n }\n\n assert(stream._writer !== undefined);\n\n WritableStreamDefaultWriterRelease(this);\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('write'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n }, {\n key: 'ready',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('ready'));\n }\n\n return this._readyPromise;\n }\n }]);\n\n return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n\n return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n }\n\n assert(state === 'writable' || state === 'erroring');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var promise = new Promise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._closeRequest = closeRequest;\n });\n\n if (stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.resolve();\n }\n\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable' || state === 'erroring');\n\n return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n\n if (state === 'closed') {\n return 0;\n }\n\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n assert(stream !== undefined);\n assert(stream._writer === writer);\n\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var controller = stream._writableStreamController;\n\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n if (stream !== writer._ownerWritableStream) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n var state = stream._state;\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable');\n\n var promise = WritableStreamAddWriteRequest(stream);\n\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n _classCallCheck(this, WritableStreamDefaultController);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n }\n\n if (stream._writableStreamController !== undefined) {\n throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n }\n\n this._controlledWritableStream = stream;\n\n this._underlyingSink = underlyingSink;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n _createClass(WritableStreamDefaultController, [{\n key: 'error',\n value: function error(e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n\n WritableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__abortSteps',\n value: function __abortSteps(reason) {\n return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n }\n }, {\n key: '__errorSteps',\n value: function __errorSteps() {\n ResetQueue(this);\n }\n }, {\n key: '__startSteps',\n value: function __startSteps() {\n var _this = this;\n\n var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n var stream = this._controlledWritableStream;\n\n Promise.resolve(startResult).then(function () {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n }, function (r) {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDealWithRejection(stream, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n }]);\n\n return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n var strategySize = controller._strategySize;\n\n if (strategySize === undefined) {\n return 1;\n }\n\n try {\n return strategySize(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n\n if (controller._started === false) {\n return;\n }\n\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return;\n }\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n\n if (controller._queue.length === 0) {\n return;\n }\n\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkCloseRequestInFlight(stream);\n\n DequeueValue(controller);\n assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n sinkClosePromise.then(function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n sinkWritePromise.then(function () {\n WritableStreamFinishInFlightWrite(stream);\n\n var state = stream._state;\n assert(state === 'writable' || state === 'erroring');\n\n DequeueValue(controller);\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n\n assert(stream._state === 'writable');\n\n WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = new Promise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n writer._closedPromise = Promise.resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n writer._readyPromise = Promise.resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n\n return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n var pair = container._queue[0];\n return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n container._queue = [];\n container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n ArrayBufferCopy = _require.ArrayBufferCopy,\n CreateIterResultObject = _require.CreateIterResultObject,\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n TransferArrayBuffer = _require.TransferArrayBuffer,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n createArrayFromList = _require2.createArrayFromList,\n createDataProperty = _require2.createDataProperty,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n assert = _require3.assert,\n rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n DequeueValue = _require4.DequeueValue,\n EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n IsWritableStream = _require5.IsWritableStream,\n IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n WritableStreamAbort = _require5.WritableStreamAbort,\n WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n function ReadableStream() {\n var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n highWaterMark = _ref.highWaterMark;\n\n _classCallCheck(this, ReadableStream);\n\n // Exposed to controllers.\n this._state = 'readable';\n\n this._reader = undefined;\n this._storedError = undefined;\n\n this._disturbed = false;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._readableStreamController = undefined;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n\n _createClass(ReadableStream, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('cancel'));\n }\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n\n return ReadableStreamCancel(this, reason);\n }\n }, {\n key: 'getReader',\n value: function getReader() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mode = _ref2.mode;\n\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('getReader');\n }\n\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n\n mode = String(mode);\n\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this);\n }\n\n throw new RangeError('Invalid mode is specified');\n }\n }, {\n key: 'pipeThrough',\n value: function pipeThrough(_ref3, options) {\n var writable = _ref3.writable,\n readable = _ref3.readable;\n\n var promise = this.pipeTo(writable, options);\n\n ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n return readable;\n }\n }, {\n key: 'pipeTo',\n value: function pipeTo(dest) {\n var _this = this;\n\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n preventClose = _ref4.preventClose,\n preventAbort = _ref4.preventAbort,\n preventCancel = _ref4.preventCancel;\n\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n\n var reader = AcquireReadableStreamDefaultReader(this);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n\n var shuttingDown = false;\n\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = Promise.resolve();\n\n return new Promise(function (resolve, reject) {\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n currentWrite = Promise.resolve();\n\n if (shuttingDown === true) {\n return Promise.resolve();\n }\n\n return writer._readyPromise.then(function () {\n return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n var value = _ref5.value,\n done = _ref5.done;\n\n if (done === true) {\n return;\n }\n\n currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n });\n }).then(pipeLoop);\n }\n\n // Errors must be propagated forward\n isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Closing must be propagated forward\n isOrBecomesClosed(_this, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, destClosed);\n }, true, destClosed);\n } else {\n shutdown(true, destClosed);\n }\n }\n\n pipeLoop().catch(function (err) {\n currentWrite = Promise.resolve();\n rethrowAssertionErrorRejection(err);\n });\n\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return currentWrite.then(function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n promise.catch(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n promise.then(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(doTheRest);\n } else {\n doTheRest();\n }\n\n function doTheRest() {\n action().then(function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n }).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(function () {\n return finalize(isError, error);\n }).catch(rethrowAssertionErrorRejection);\n } else {\n finalize(isError, error);\n }\n }\n\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n }, {\n key: 'tee',\n value: function tee() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('tee');\n }\n\n var branches = ReadableStreamTee(this, false);\n return createArrayFromList(branches);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsReadableStreamLocked(this);\n }\n }]);\n\n return ReadableStream;\n}();\n\nmodule.exports = {\n ReadableStream: ReadableStream,\n IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n if (stream._reader === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n assert(IsReadableStream(stream) === true);\n assert(typeof cloneForBranch2 === 'boolean');\n\n var reader = AcquireReadableStreamDefaultReader(stream);\n\n var teeState = {\n closedOrErrored: false,\n canceled1: false,\n canceled2: false,\n reason1: undefined,\n reason2: undefined\n };\n teeState.promise = new Promise(function (resolve) {\n teeState._resolve = resolve;\n });\n\n var pull = create_ReadableStreamTeePullFunction();\n pull._reader = reader;\n pull._teeState = teeState;\n pull._cloneForBranch2 = cloneForBranch2;\n\n var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n cancel1._stream = stream;\n cancel1._teeState = teeState;\n\n var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n cancel2._stream = stream;\n cancel2._teeState = teeState;\n\n var underlyingSource1 = Object.create(Object.prototype);\n createDataProperty(underlyingSource1, 'pull', pull);\n createDataProperty(underlyingSource1, 'cancel', cancel1);\n var branch1Stream = new ReadableStream(underlyingSource1);\n\n var underlyingSource2 = Object.create(Object.prototype);\n createDataProperty(underlyingSource2, 'pull', pull);\n createDataProperty(underlyingSource2, 'cancel', cancel2);\n var branch2Stream = new ReadableStream(underlyingSource2);\n\n pull._branch1 = branch1Stream._readableStreamController;\n pull._branch2 = branch2Stream._readableStreamController;\n\n reader._closedPromise.catch(function (r) {\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n ReadableStreamDefaultControllerError(pull._branch1, r);\n ReadableStreamDefaultControllerError(pull._branch2, r);\n teeState.closedOrErrored = true;\n });\n\n return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n function f() {\n var reader = f._reader,\n branch1 = f._branch1,\n branch2 = f._branch2,\n teeState = f._teeState;\n\n\n return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n assert(typeIsObject(result));\n var value = result.value;\n var done = result.done;\n assert(typeof done === 'boolean');\n\n if (done === true && teeState.closedOrErrored === false) {\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1);\n }\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2);\n }\n teeState.closedOrErrored = true;\n }\n\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n var value1 = value;\n var value2 = value;\n\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1, value1);\n }\n\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2, value2);\n }\n });\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled1 = true;\n teeState.reason1 = reason;\n if (teeState.canceled2 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled2 = true;\n teeState.reason2 = reason;\n if (teeState.canceled1 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n assert(IsReadableStreamBYOBReader(stream._reader) === true);\n assert(stream._state === 'readable' || stream._state === 'closed');\n\n var promise = new Promise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n assert(IsReadableStreamDefaultReader(stream._reader) === true);\n assert(stream._state === 'readable');\n\n var promise = new Promise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readRequests.push(readRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n ReadableStreamClose(stream);\n\n var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n return sourceCancelPromise.then(function () {\n return undefined;\n });\n}\n\nfunction ReadableStreamClose(stream) {\n assert(stream._state === 'readable');\n\n stream._state = 'closed';\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var _resolve = reader._readRequests[i]._resolve;\n\n _resolve(CreateIterResultObject(undefined, true));\n }\n reader._readRequests = [];\n }\n\n defaultReaderClosedPromiseResolve(reader);\n\n return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n assert(stream._state === 'readable', 'state must be readable');\n\n stream._state = 'errored';\n stream._storedError = e;\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var readRequest = reader._readRequests[i];\n readRequest._reject(e);\n }\n\n reader._readRequests = [];\n } else {\n assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n var readIntoRequest = reader._readIntoRequests[_i];\n readIntoRequest._reject(e);\n }\n\n reader._readIntoRequests = [];\n }\n\n defaultReaderClosedPromiseReject(reader, e);\n reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readIntoRequests.length > 0);\n\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readRequests.length > 0);\n\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamBYOBReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamDefaultReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n _classCallCheck(this, ReadableStreamDefaultReader);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readRequests = [];\n }\n\n _createClass(ReadableStreamDefaultReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n return ReadableStreamDefaultReaderRead(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsReadableStreamDefaultReader(this) === false) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n _classCallCheck(this, ReadableStreamBYOBReader);\n\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readIntoRequests = [];\n }\n\n _createClass(ReadableStreamBYOBReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n if (!ArrayBuffer.isView(view)) {\n return Promise.reject(new TypeError('view must be an array buffer view'));\n }\n\n if (view.byteLength === 0) {\n return Promise.reject(new TypeError('view must have non-zero byteLength'));\n }\n\n return ReadableStreamBYOBReaderRead(this, view);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n assert(stream._state === 'errored', 'state must be errored');\n\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n reader._closedPromise.catch(function () {});\n }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n assert(stream !== undefined);\n return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n assert(reader._ownerReadableStream !== undefined);\n assert(reader._ownerReadableStream._reader === reader);\n\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._closedPromise.catch(function () {});\n\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n // Controllers must implement this.\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(CreateIterResultObject(undefined, true));\n }\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(stream._state === 'readable');\n\n return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n _classCallCheck(this, ReadableStreamDefaultController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingSource = underlyingSource;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n this._closeRequested = false;\n this._pullAgain = false;\n this._pulling = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableStreamDefaultController, [{\n key: 'close',\n value: function close() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableStreamDefaultControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n ResetQueue(this);\n return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n\n return Promise.resolve(CreateIterResultObject(chunk, false));\n }\n\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return undefined;\n }, function (e) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed' || stream._state === 'errored') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n controller._closeRequested = true;\n\n if (controller._queue.length === 0) {\n ReadableStreamClose(stream);\n }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = 1;\n\n if (controller._strategySize !== undefined) {\n var strategySize = controller._strategySize;\n try {\n chunkSize = strategySize(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n throw chunkSizeE;\n }\n }\n\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n throw enqueueE;\n }\n }\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ResetQueue(controller);\n\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableStreamDefaultControllerError(controller, e);\n }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest(controller, view) {\n _classCallCheck(this, ReadableStreamBYOBRequest);\n\n this._associatedReadableByteStreamController = controller;\n this._view = view;\n }\n\n _createClass(ReadableStreamBYOBRequest, [{\n key: 'respond',\n value: function respond(bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n }, {\n key: 'respondWithNewView',\n value: function respondWithNewView(view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }, {\n key: 'view',\n get: function get() {\n return this._view;\n }\n }]);\n\n return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n _classCallCheck(this, ReadableByteStreamController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingByteSource = underlyingByteSource;\n\n this._pullAgain = false;\n this._pulling = false;\n\n ReadableByteStreamControllerClearPendingPullIntos(this);\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._closeRequested = false;\n this._started = false;\n\n this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n this._pendingPullIntos = [];\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n if (stream._state === 'readable') {\n ReadableByteStreamControllerError(controller, r);\n }\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableByteStreamController, [{\n key: 'close',\n value: function close() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableByteStreamControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableByteStreamControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n firstDescriptor.bytesFilled = 0;\n }\n\n ResetQueue(this);\n\n return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n assert(ReadableStreamHasDefaultReader(stream) === true);\n\n if (this._queueTotalSize > 0) {\n assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n\n ReadableByteStreamControllerHandleQueueDrain(this);\n\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return Promise.reject(viewE);\n }\n\n return Promise.resolve(CreateIterResultObject(view, false));\n }\n\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return Promise.reject(bufferE);\n }\n\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n\n var promise = ReadableStreamAddReadRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(this);\n\n return promise;\n }\n }, {\n key: 'byobRequest',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n }\n\n return this._byobRequest;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n // TODO: Test controller argument\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableByteStreamControllerError(controller, e);\n }\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n assert(stream._state !== 'errored', 'state must not be errored');\n\n var done = false;\n if (stream._state === 'closed') {\n assert(pullIntoDescriptor.bytesFilled === 0);\n done = true;\n }\n\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n assert(pullIntoDescriptor.readerType === 'byob');\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n\n assert(bytesFilled <= pullIntoDescriptor.byteLength);\n assert(bytesFilled % elementSize === 0);\n\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n\n var queue = controller._queue;\n\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue[0];\n\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n\n if (ready === false) {\n assert(controller._queueTotalSize === 0, 'queue must be empty');\n assert(pullIntoDescriptor.bytesFilled > 0);\n assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n }\n\n return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n assert(controller._controlledReadableStream._state === 'readable');\n\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableStreamClose(controller._controlledReadableStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n assert(controller._closeRequested === false);\n\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n\n var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableStream;\n\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n\n var ctor = view.constructor;\n\n var pullIntoDescriptor = {\n buffer: view.buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n\n if (controller._pendingPullIntos.length > 0) {\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n\n return ReadableStreamAddReadIntoRequest(stream);\n }\n\n if (stream._state === 'closed') {\n var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return Promise.resolve(CreateIterResultObject(emptyView, true));\n }\n\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n ReadableByteStreamControllerHandleQueueDrain(controller);\n\n return Promise.resolve(CreateIterResultObject(filledView, false));\n }\n\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n return Promise.reject(e);\n }\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n var promise = ReadableStreamAddReadIntoRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n var stream = controller._controlledReadableStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos[0];\n\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state !== 'readable') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n\n return;\n }\n\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos[0];\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n throw e;\n }\n }\n\n ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n assert(controller._queue.length === 0);\n\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n ResetQueue(controller);\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n\n assert(controller._pendingPullIntos.length > 0);\n\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n assert(controller._pendingPullIntos.length > 0);\n\n var firstDescriptor = controller._pendingPullIntos[0];\n\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n\n firstDescriptor.buffer = view.buffer;\n\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = new Promise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n reader._closedPromise = Promise.reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n reader._closedPromise = Promise.resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n assert(reader._closedPromise_resolve === undefined);\n assert(reader._closedPromise_reject === undefined);\n\n reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n try {\n // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n Promise.prototype.then.call(promise, undefined, function () {});\n } catch (e) {\n // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n InvokeOrNoop = _require2.InvokeOrNoop,\n PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n ReadableStream = _require3.ReadableStream,\n ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n WritableStream = _require4.WritableStream,\n WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n // console.log('TransformStreamCloseReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n // console.log('TransformStreamEnqueueToReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamEnqueueToReadable() calls.\n\n var controller = transformStream._readableController;\n\n try {\n ReadableStreamDefaultControllerEnqueue(controller, chunk);\n } catch (e) {\n // This happens when readableStrategy.size() throws.\n // The ReadableStream has already errored itself.\n transformStream._readableClosed = true;\n TransformStreamErrorIfNeeded(transformStream, e);\n\n throw transformStream._storedError;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n var maybeBackpressure = desiredSize <= 0;\n\n if (maybeBackpressure === true && transformStream._backpressure === false) {\n // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n // asynchronously) after this because of pending read()s and set _backpressure back to false.\n //\n // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n // because there is always a promise pending from start() or pull() when _backpressure is false.\n TransformStreamSetBackpressure(transformStream, true);\n }\n}\n\nfunction TransformStreamError(transformStream, e) {\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n assert(transformStream._errored === false);\n assert(transformStream._readableClosed === false);\n\n try {\n ReadableStreamDefaultControllerClose(transformStream._readableController);\n } catch (e) {\n assert(false);\n }\n\n transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n if (transformStream._errored === false) {\n TransformStreamErrorInternal(transformStream, e);\n }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n // console.log('TransformStreamErrorInternal()');\n\n assert(transformStream._errored === false);\n\n transformStream._errored = true;\n transformStream._storedError = e;\n\n if (transformStream._writableDone === false) {\n WritableStreamDefaultControllerError(transformStream._writableController, e);\n }\n if (transformStream._readableClosed === false) {\n ReadableStreamDefaultControllerError(transformStream._readableController, e);\n }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === false) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n // Passes also when called during construction.\n assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n if (transformStream._backpressureChangePromise !== undefined) {\n // The fulfillment value is just for a sanity check.\n transformStream._backpressureChangePromise_resolve(backpressure);\n }\n\n transformStream._backpressureChangePromise = new Promise(function (resolve) {\n transformStream._backpressureChangePromise_resolve = resolve;\n });\n\n transformStream._backpressureChangePromise.then(function (resolution) {\n assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n });\n\n transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n var transformStream = transformStreamController._controlledTransformStream;\n TransformStreamEnqueueToReadable(transformStream, chunk);\n return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n // console.log('TransformStreamTransform()');\n\n assert(transformStream._errored === false);\n assert(transformStream._transforming === false);\n assert(transformStream._backpressure === false);\n\n transformStream._transforming = true;\n\n var transformer = transformStream._transformer;\n var controller = transformStream._transformStreamController;\n\n var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n return transformPromise.then(function () {\n transformStream._transforming = false;\n\n return TransformStreamReadableReadyPromise(transformStream);\n }, function (e) {\n TransformStreamErrorIfNeeded(transformStream, e);\n return Promise.reject(e);\n });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n\n return true;\n}\n\nvar TransformStreamSink = function () {\n function TransformStreamSink(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSink);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSink, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._writableController = c;\n\n return this._startPromise.then(function () {\n return TransformStreamReadableReadyPromise(transformStream);\n });\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n // console.log('TransformStreamSink.write()');\n\n var transformStream = this._transformStream;\n\n return TransformStreamTransform(transformStream, chunk);\n }\n }, {\n key: 'abort',\n value: function abort() {\n var transformStream = this._transformStream;\n transformStream._writableDone = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n }\n }, {\n key: 'close',\n value: function close() {\n // console.log('TransformStreamSink.close()');\n\n var transformStream = this._transformStream;\n\n assert(transformStream._transforming === false);\n\n transformStream._writableDone = true;\n\n var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n // Return a promise that is fulfilled with undefined on success.\n return flushPromise.then(function () {\n if (transformStream._errored === true) {\n return Promise.reject(transformStream._storedError);\n }\n if (transformStream._readableClosed === false) {\n TransformStreamCloseReadableInternal(transformStream);\n }\n return Promise.resolve();\n }).catch(function (r) {\n TransformStreamErrorIfNeeded(transformStream, r);\n return Promise.reject(transformStream._storedError);\n });\n }\n }]);\n\n return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n function TransformStreamSource(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSource);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSource, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._readableController = c;\n\n return this._startPromise.then(function () {\n // Prevent the first pull() call until there is backpressure.\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === true) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n });\n }\n }, {\n key: 'pull',\n value: function pull() {\n // console.log('TransformStreamSource.pull()');\n\n var transformStream = this._transformStream;\n\n // Invariant. Enforced by the promises returned by start() and pull().\n assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n TransformStreamSetBackpressure(transformStream, false);\n\n // Prevent the next pull() call until there is backpressure.\n return transformStream._backpressureChangePromise;\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n var transformStream = this._transformStream;\n transformStream._readableClosed = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n }\n }]);\n\n return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n function TransformStreamDefaultController(transformStream) {\n _classCallCheck(this, TransformStreamDefaultController);\n\n if (IsTransformStream(transformStream) === false) {\n throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n }\n\n if (transformStream._transformStreamController !== undefined) {\n throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n }\n\n this._controlledTransformStream = transformStream;\n }\n\n _createClass(TransformStreamDefaultController, [{\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n TransformStreamCloseReadable(this._controlledTransformStream);\n }\n }, {\n key: 'error',\n value: function error(reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n TransformStreamError(this._controlledTransformStream, reason);\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n var transformStream = this._controlledTransformStream;\n var readableController = transformStream._readableController;\n\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n }]);\n\n return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n function TransformStream() {\n var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, TransformStream);\n\n this._transformer = transformer;\n var readableStrategy = transformer.readableStrategy,\n writableStrategy = transformer.writableStrategy;\n\n\n this._transforming = false;\n this._errored = false;\n this._storedError = undefined;\n\n this._writableController = undefined;\n this._readableController = undefined;\n this._transformStreamController = undefined;\n\n this._writableDone = false;\n this._readableClosed = false;\n\n this._backpressure = undefined;\n this._backpressureChangePromise = undefined;\n this._backpressureChangePromise_resolve = undefined;\n\n this._transformStreamController = new TransformStreamDefaultController(this);\n\n var startPromise_resolve = void 0;\n var startPromise = new Promise(function (resolve) {\n startPromise_resolve = resolve;\n });\n\n var source = new TransformStreamSource(this, startPromise);\n\n this._readable = new ReadableStream(source, readableStrategy);\n\n var sink = new TransformStreamSink(this, startPromise);\n\n this._writable = new WritableStream(sink, writableStrategy);\n\n assert(this._writableController !== undefined);\n assert(this._readableController !== undefined);\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n // desiredSize being non-positive as backpressure.\n TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n var transformStream = this;\n var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n startPromise_resolve(startResult);\n startPromise.catch(function (e) {\n // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n if (transformStream._errored === false) {\n transformStream._errored = true;\n transformStream._storedError = e;\n }\n });\n }\n\n _createClass(TransformStream, [{\n key: 'readable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('readable');\n }\n\n return this._readable;\n }\n }, {\n key: 'writable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('writable');\n }\n\n return this._writable;\n }\n }]);\n\n return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));\n\n\n// WEBPACK FOOTER //\n// external/streams/streams-lib.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX, IDENTITY_MATRIX, ImageKind, info, isArray,\n isLittleEndian, isNum, OPS, shadow, TextRenderingMode, Util, warn\n} from '../shared/util';\nimport { getShadingPatternFromIR, TilingPattern } from './pattern_helper';\nimport { WebGLUtils } from './webgl';\n\n// contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n\n// Minimal font size that would be used during canvas fillText operations.\nvar MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nvar MAX_FONT_SIZE = 100;\nvar MAX_GROUP_SIZE = 4096;\n\n// Heuristic value used when enforcing minimum line widths.\nvar MIN_WIDTH_FACTOR = 0.65;\n\nvar COMPILE_TYPE3_GLYPHS = true;\nvar MAX_SIZE_TO_COMPILE = 1000;\n\nvar FULL_CHUNK_HEIGHT = 16;\n\nvar IsLittleEndianCached = {\n get value() {\n return shadow(IsLittleEndianCached, 'value', isLittleEndian());\n },\n};\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (!ctx.mozCurrentTransform) {\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n Object.defineProperty(ctx, 'mozCurrentTransform', {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, 'mozCurrentTransformInverse', {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n var m = this._transformMatrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n\n var ad_bc = a * d - b * c;\n var bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n var old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n var prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n var m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n var m = this._transformMatrix;\n m[0] = m[0] * x;\n m[1] = m[1] * x;\n m[2] = m[2] * y;\n m[3] = m[3] * y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5]\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.rotate = function ctxRotate(angle) {\n var cosValue = Math.cos(angle);\n var sinValue = Math.sin(angle);\n\n var m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * (-sinValue) + m[2] * cosValue,\n m[1] * (-sinValue) + m[3] * cosValue,\n m[4],\n m[5]\n ];\n\n this._originalRotate(angle);\n };\n }\n}\n\nvar CachedCanvases = (function CachedCanvasesClosure() {\n function CachedCanvases(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n CachedCanvases.prototype = {\n getCanvas: function CachedCanvases_getCanvas(id, width, height,\n trackTransform) {\n var canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n },\n clear() {\n for (var id in this.cache) {\n var canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n },\n };\n return CachedCanvases;\n})();\n\nfunction compileType3Glyph(imgData) {\n var POINT_TO_PROCESS_LIMIT = 1000;\n\n var width = imgData.width, height = imgData.height;\n var i, j, j0, width1 = width + 1;\n var points = new Uint8Array(width1 * (height + 1));\n var POINT_TYPES =\n new Uint8Array([0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0]);\n\n // decodes bit-packed mask data\n var lineSize = (width + 7) & ~7, data0 = imgData.data;\n var data = new Uint8Array(lineSize * height), pos = 0, ii;\n for (i = 0, ii = data0.length; i < ii; i++) {\n var mask = 128, elem = data0[i];\n while (mask > 0) {\n data[pos++] = (elem & mask) ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding iteresting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n var count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n var steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n var outlines = [];\n for (i = 0; count && i <= height; i++) {\n var p = i * width1;\n var end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n var coords = [p % width1, i];\n\n var type = points[p], p0 = p, pp;\n do {\n var step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else { // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2 | type << 2);\n }\n\n coords.push(p % width1);\n coords.push((p / width1) | 0);\n --count;\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n var drawOutline = function(c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (var i = 0, ii = outlines.length; i < ii; i++) {\n var o = outlines[i];\n c.moveTo(o[0], o[1]);\n for (var j = 2, jj = o.length; j < jj; j += 2) {\n c.lineTo(o[j], o[j + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nvar CanvasExtraState = (function CanvasExtraStateClosure() {\n function CanvasExtraState() {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = '#000000';\n this.strokeColor = '#000000';\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.resumeSMaskCtx = null; // nonclonable field (see the save method below)\n }\n\n CanvasExtraState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n },\n };\n return CanvasExtraState;\n})();\n\nvar CanvasGraphics = (function CanvasGraphicsClosure() {\n // Defines the time the executeOperatorList is going to be executing\n // before it stops and shedules a continue of execution.\n var EXECUTION_TIME = 15;\n // Defines the number of steps before checking the execution time\n var EXECUTION_STEPS = 10;\n\n function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory,\n imageLayer) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState();\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see pdf\n // spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this.cachedGetSinglePixelWidth = null;\n }\n\n function putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0, destPos;\n var src = imgData.data;\n var dest = chunkImgData.data;\n var i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n var srcLength = src.byteLength;\n var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n var dest32DataLength = dest32.length;\n var fullSrcDiff = (width + 7) >> 3;\n var white = 0xFFFFFFFF;\n var black = IsLittleEndianCached.value ? 0xFF000000 : 0x000000FF;\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n var srcDiff = srcLength - srcPos;\n var k = 0;\n var kEnd = (srcDiff > fullSrcDiff) ? width : srcDiff * 8 - 7;\n var kEndUnrolled = kEnd & ~7;\n var mask = 0;\n var srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = (srcByte & 128) ? white : black;\n dest32[destPos++] = (srcByte & 64) ? white : black;\n dest32[destPos++] = (srcByte & 32) ? white : black;\n dest32[destPos++] = (srcByte & 16) ? white : black;\n dest32[destPos++] = (srcByte & 8) ? white : black;\n dest32[destPos++] = (srcByte & 4) ? white : black;\n dest32[destPos++] = (srcByte & 2) ? white : black;\n dest32[destPos++] = (srcByte & 1) ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = (srcByte & mask) ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n ctx.putImageData(chunkImgData, 0, j);\n }\n\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--;) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n }\n\n function putBinaryImageMask(ctx, imgData) {\n var height = imgData.height, width = imgData.width;\n var partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n var srcPos = 0;\n var src = imgData.data;\n var dest = chunkImgData.data;\n\n for (var i = 0; i < totalChunks; i++) {\n var thisChunkHeight =\n (i < fullChunks) ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n var destPos = 3; // alpha component offset\n for (var j = 0; j < thisChunkHeight; j++) {\n var mask = 0;\n for (var k = 0; k < width; k++) {\n if (!mask) {\n var elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = (elem & mask) ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n }\n\n function copyCtxState(sourceCtx, destCtx) {\n var properties = ['strokeStyle', 'fillStyle', 'fillRule', 'globalAlpha',\n 'lineWidth', 'lineCap', 'lineJoin', 'miterLimit',\n 'globalCompositeOperation', 'font'];\n for (var i = 0, ii = properties.length; i < ii; i++) {\n var property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n }\n\n function resetCtxToDefault(ctx) {\n ctx.strokeStyle = '#000000';\n ctx.fillStyle = '#000000';\n ctx.fillRule = 'nonzero';\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = 'butt';\n ctx.lineJoin = 'miter';\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = 'source-over';\n ctx.font = '10px sans-serif';\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n }\n\n function composeSMaskBackdrop(bytes, r0, g0, b0) {\n var length = bytes.length;\n for (var i = 3; i < length; i += 4) {\n var alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n var alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n }\n\n function composeSMaskAlpha(maskData, layerData, transferMap) {\n var length = maskData.length;\n var scale = 1 / 255;\n for (var i = 3; i < length; i += 4) {\n var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n }\n\n function composeSMaskLuminosity(maskData, layerData, transferMap) {\n var length = maskData.length;\n for (var i = 3; i < length; i += 4) {\n var y = (maskData[i - 3] * 77) + // * 0.3 / 255 * 0x10000\n (maskData[i - 2] * 152) + // * 0.59 ....\n (maskData[i - 1] * 28); // * 0.11 ....\n layerData[i] = transferMap ?\n (layerData[i] * transferMap[y >> 8]) >> 8 :\n (layerData[i] * y) >> 16;\n }\n }\n\n function genericComposeSMask(maskCtx, layerCtx, width, height,\n subtype, backdrop, transferMap) {\n var hasBackdrop = !!backdrop;\n var r0 = hasBackdrop ? backdrop[0] : 0;\n var g0 = hasBackdrop ? backdrop[1] : 0;\n var b0 = hasBackdrop ? backdrop[2] : 0;\n\n var composeFn;\n if (subtype === 'Luminosity') {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n var PIXELS_TO_PROCESS = 1048576;\n var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (var row = 0; row < height; row += chunkSize) {\n var chunkHeight = Math.min(chunkSize, height - row);\n var maskData = maskCtx.getImageData(0, row, width, chunkHeight);\n var layerData = layerCtx.getImageData(0, row, width, chunkHeight);\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n maskCtx.putImageData(layerData, 0, row);\n }\n }\n\n function composeSMask(ctx, smask, layerCtx) {\n var mask = smask.canvas;\n var maskCtx = smask.context;\n\n ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY,\n smask.offsetX, smask.offsetY);\n\n var backdrop = smask.backdrop || null;\n if (!smask.transferMap && WebGLUtils.isEnabled) {\n var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask,\n { subtype: smask.subtype, backdrop, });\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(composed, smask.offsetX, smask.offsetY);\n return;\n }\n genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height,\n smask.subtype, backdrop, smask.transferMap);\n ctx.drawImage(mask, 0, 0);\n }\n\n var LINE_CAP_STYLES = ['butt', 'round', 'square'];\n var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];\n var NORMAL_CLIP = {};\n var EO_CLIP = {};\n\n CanvasGraphics.prototype = {\n\n beginDrawing({ transform, viewport, transparency,\n background = null, }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n var width = this.ctx.canvas.width;\n var height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || 'rgb(255, 255, 255)';\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n var transparentCanvas = this.cachedCanvases.getCanvas(\n 'transparent', width, height, true);\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx,\n this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n },\n\n executeOperatorList: function CanvasGraphics_executeOperatorList(\n operatorList,\n executionStartIdx, continueCallback,\n stepper) {\n var argsArray = operatorList.argsArray;\n var fnArray = operatorList.fnArray;\n var i = executionStartIdx || 0;\n var argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n var chunkOperations = (argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === 'function');\n var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n var steps = 0;\n\n var commonObjs = this.commonObjs;\n var objs = this.objs;\n var fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n var deps = argsArray[i];\n for (var n = 0, nn = deps.length; n < nn; n++) {\n var depObjId = deps[n];\n var common = depObjId[0] === 'g' && depObjId[1] === '_';\n var objsPool = common ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.isResolved(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n },\n\n endDrawing: function CanvasGraphics_endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n if (this.current.activeSMask !== null) {\n this.endSMaskGroup();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n WebGLUtils.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n },\n\n // Graphics state\n setLineWidth: function CanvasGraphics_setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n },\n setLineCap: function CanvasGraphics_setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n },\n setLineJoin: function CanvasGraphics_setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n },\n setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n },\n setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {\n var ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n },\n setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {\n // Maybe if we one day fully support color spaces this will be important\n // for now we can ignore.\n // TODO set rendering intent?\n },\n setFlatness: function CanvasGraphics_setFlatness(flatness) {\n // There's no way to control this with canvas, but we can safely ignore.\n // TODO set flatness?\n },\n setGState: function CanvasGraphics_setGState(states) {\n for (var i = 0, ii = states.length; i < ii; i++) {\n var state = states[i];\n var key = state[0];\n var value = state[1];\n\n switch (key) {\n case 'LW':\n this.setLineWidth(value);\n break;\n case 'LC':\n this.setLineCap(value);\n break;\n case 'LJ':\n this.setLineJoin(value);\n break;\n case 'ML':\n this.setMiterLimit(value);\n break;\n case 'D':\n this.setDash(value[0], value[1]);\n break;\n case 'RI':\n this.setRenderingIntent(value);\n break;\n case 'FL':\n this.setFlatness(value);\n break;\n case 'Font':\n this.setFont(value[0], value[1]);\n break;\n case 'CA':\n this.current.strokeAlpha = state[1];\n break;\n case 'ca':\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case 'BM':\n this.ctx.globalCompositeOperation = value;\n break;\n case 'SMask':\n if (this.current.activeSMask) {\n // If SMask is currrenly used, it needs to be suspended or\n // finished. Suspend only makes sense when at least one save()\n // was performed and state needs to be reverted on restore().\n if (this.stateStack.length > 0 &&\n (this.stateStack[this.stateStack.length - 1].activeSMask ===\n this.current.activeSMask)) {\n this.suspendSMaskGroup();\n } else {\n this.endSMaskGroup();\n }\n }\n this.current.activeSMask = value ? this.tempSMask : null;\n if (this.current.activeSMask) {\n this.beginSMaskGroup();\n }\n this.tempSMask = null;\n break;\n }\n }\n },\n beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {\n\n var activeSMask = this.current.activeSMask;\n var drawnWidth = activeSMask.canvas.width;\n var drawnHeight = activeSMask.canvas.height;\n var cacheId = 'smaskGroupAt' + this.groupLevel;\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n\n var currentCtx = this.ctx;\n var currentTransform = currentCtx.mozCurrentTransform;\n this.ctx.save();\n\n var groupCtx = scratchCanvas.context;\n groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);\n groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;\n\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Similar to endSMaskGroup, the intermediate canvas has to be composed\n // and future ctx state restored.\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n this.ctx.save(); // save is needed since SMask will be resumed.\n copyCtxState(groupCtx, this.ctx);\n\n // Saving state for resuming.\n this.current.resumeSMaskCtx = groupCtx;\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n\n // SMask was composed, the results at the groupCtx can be cleared.\n groupCtx.save();\n groupCtx.setTransform(1, 0, 0, 1, 0, 0);\n groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);\n groupCtx.restore();\n },\n resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n // Resuming state saved by suspendSMaskGroup. We don't need to restore\n // any groupCtx state since restore() command (the only caller) will do\n // that for us. See also beginSMaskGroup.\n var groupCtx = this.current.resumeSMaskCtx;\n var currentCtx = this.ctx;\n this.ctx = groupCtx;\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n },\n endSMaskGroup: function CanvasGraphics_endSMaskGroup() {\n var groupCtx = this.ctx;\n this.groupLevel--;\n this.ctx = this.groupStack.pop();\n\n composeSMask(this.ctx, this.current.activeSMask, groupCtx);\n this.ctx.restore();\n copyCtxState(groupCtx, this.ctx);\n // Transform was changed in the SMask canvas, reflecting this change on\n // this.ctx.\n var deltaTransform = Util.transform(\n this.current.activeSMask.startTransformInverse,\n groupCtx.mozCurrentTransform);\n this.ctx.transform.apply(this.ctx, deltaTransform);\n },\n save: function CanvasGraphics_save() {\n this.ctx.save();\n var old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n this.current.resumeSMaskCtx = null;\n },\n restore: function CanvasGraphics_restore() {\n // SMask was suspended, we just need to resume it.\n if (this.current.resumeSMaskCtx) {\n this.resumeSMaskGroup();\n }\n // SMask has to be finished once there is no states that are using the\n // same SMask.\n if (this.current.activeSMask !== null && (this.stateStack.length === 0 ||\n this.stateStack[this.stateStack.length - 1].activeSMask !==\n this.current.activeSMask)) {\n this.endSMaskGroup();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this.cachedGetSinglePixelWidth = null;\n }\n },\n transform: function CanvasGraphics_transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this.cachedGetSinglePixelWidth = null;\n },\n\n // Path\n constructPath: function CanvasGraphics_constructPath(ops, args) {\n var ctx = this.ctx;\n var current = this.current;\n var x = current.x, y = current.y;\n for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n var width = args[j++];\n var height = args[j++];\n if (width === 0) {\n width = this.getSinglePixelWidth();\n }\n if (height === 0) {\n height = this.getSinglePixelWidth();\n }\n var xw = x + width;\n var yh = y + height;\n this.ctx.moveTo(x, y);\n this.ctx.lineTo(xw, y);\n this.ctx.lineTo(xw, yh);\n this.ctx.lineTo(x, yh);\n this.ctx.lineTo(x, y);\n this.ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3],\n x, y);\n j += 6;\n break;\n case OPS.curveTo2:\n ctx.bezierCurveTo(x, y, args[j], args[j + 1],\n args[j + 2], args[j + 3]);\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n },\n closePath: function CanvasGraphics_closePath() {\n this.ctx.closePath();\n },\n stroke: function CanvasGraphics_stroke(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var strokeColor = this.current.strokeColor;\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR,\n this.current.lineWidth);\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (strokeColor && strokeColor.hasOwnProperty('type') &&\n strokeColor.type === 'Pattern') {\n // for patterns, we transform to pattern space, calculate\n // the pattern, call stroke, and restore to user space\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(ctx, this);\n ctx.stroke();\n ctx.restore();\n } else {\n ctx.stroke();\n }\n if (consumePath) {\n this.consumePath();\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n },\n closeStroke: function CanvasGraphics_closeStroke() {\n this.closePath();\n this.stroke();\n },\n fill: function CanvasGraphics_fill(consumePath) {\n consumePath = typeof consumePath !== 'undefined' ? consumePath : true;\n var ctx = this.ctx;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n var needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n if (this.baseTransform) {\n ctx.setTransform.apply(ctx, this.baseTransform);\n }\n ctx.fillStyle = fillColor.getPattern(ctx, this);\n needRestore = true;\n }\n\n if (this.pendingEOFill) {\n ctx.fill('evenodd');\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath();\n }\n },\n eoFill: function CanvasGraphics_eoFill() {\n this.pendingEOFill = true;\n this.fill();\n },\n fillStroke: function CanvasGraphics_fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n },\n eoFillStroke: function CanvasGraphics_eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n },\n closeFillStroke: function CanvasGraphics_closeFillStroke() {\n this.closePath();\n this.fillStroke();\n },\n closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n },\n endPath: function CanvasGraphics_endPath() {\n this.consumePath();\n },\n\n // Clipping\n clip: function CanvasGraphics_clip() {\n this.pendingClip = NORMAL_CLIP;\n },\n eoClip: function CanvasGraphics_eoClip() {\n this.pendingClip = EO_CLIP;\n },\n\n // Text\n beginText: function CanvasGraphics_beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n endText: function CanvasGraphics_endText() {\n var paths = this.pendingTextPaths;\n var ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (var i = 0; i < paths.length; i++) {\n var path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n },\n setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n },\n setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n },\n setHScale: function CanvasGraphics_setHScale(scale) {\n this.current.textHScale = scale / 100;\n },\n setLeading: function CanvasGraphics_setLeading(leading) {\n this.current.leading = -leading;\n },\n setFont: function CanvasGraphics_setFont(fontRefName, size) {\n var fontObj = this.commonObjs.get(fontRefName);\n var current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n\n current.fontMatrix = (fontObj.fontMatrix ?\n fontObj.fontMatrix : FONT_IDENTITY_MATRIX);\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 ||\n current.fontMatrix[3] === 0) {\n warn('Invalid font matrix for font ' + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n var name = fontObj.loadedName || 'sans-serif';\n var bold = fontObj.black ? '900' : (fontObj.bold ? 'bold' : 'normal');\n var italic = fontObj.italic ? 'italic' : 'normal';\n var typeface = '\"' + name + '\", ' + fontObj.fallbackName;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE :\n size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;\n this.current.fontSizeScale = size / browserFontSize;\n\n var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;\n this.ctx.font = rule;\n },\n setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n },\n setTextRise: function CanvasGraphics_setTextRise(rise) {\n this.current.textRise = rise;\n },\n moveText: function CanvasGraphics_moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n },\n setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n },\n setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.sqrt(a * a + b * b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n },\n nextLine: function CanvasGraphics_nextLine() {\n this.moveText(0, this.current.leading);\n },\n\n paintChar: function CanvasGraphics_paintChar(character, x, y) {\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var textRenderingMode = current.textRenderingMode;\n var fontSize = current.fontSize / current.fontSizeScale;\n var fillStrokeMode = textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n var isAddToPathSet = !!(textRenderingMode &\n TextRenderingMode.ADD_TO_PATH_FLAG);\n\n var addToPath;\n if (font.disableFontFace || isAddToPathSet) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fill();\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.fillText(character, x, y);\n }\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n var paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n },\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n var ctx = this.canvasFactory.create(10, 10).context;\n ctx.scale(1.5, 1);\n ctx.fillText('I', 0, 10);\n var data = ctx.getImageData(0, 0, 10, 10).data;\n var enabled = false;\n for (var i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, 'isFontSubpixelAAEnabled', enabled);\n },\n\n showText: function CanvasGraphics_showText(glyphs) {\n var current = this.current;\n var font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n var fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n var ctx = this.ctx;\n var fontSizeScale = current.fontSizeScale;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var fontDirection = current.fontDirection;\n var textHScale = current.textHScale * fontDirection;\n var glyphsLength = glyphs.length;\n var vertical = font.vertical;\n var spacingDir = vertical ? 1 : -1;\n var defaultVMetrics = font.defaultVMetrics;\n var widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n var simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (current.patternFill) {\n // TODO: Some shading patterns are not applied correctly to text,\n // e.g. issues 3988 and 5432, and ShowText-ShadingPattern.pdf.\n ctx.fillStyle = current.fillColor.getPattern(ctx, this);\n }\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n var lineWidth = current.lineWidth;\n var scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n var fillStrokeMode = current.textRenderingMode &\n TextRenderingMode.FILL_STROKE_MASK;\n if (fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE) {\n this.cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n var x = 0, i;\n for (i = 0; i < glyphsLength; ++i) {\n var glyph = glyphs[i];\n if (isNum(glyph)) {\n x += spacingDir * glyph * fontSize / 1000;\n continue;\n }\n\n var restoreNeeded = false;\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var character = glyph.fontChar;\n var accent = glyph.accent;\n var scaledX, scaledY, scaledAccentX, scaledAccentY;\n var width = glyph.width;\n if (vertical) {\n var vmetric, vx, vy;\n vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n var measuredWidth = ctx.measureText(character).width * 1000 /\n fontSize * fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n var characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX += (width - measuredWidth) / 2000 *\n fontSize / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (glyph.isInFont || font.missingFile) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY);\n if (accent) {\n scaledAccentX = scaledX + accent.offset.x / fontSizeScale;\n scaledAccentY = scaledY - accent.offset.y / fontSizeScale;\n this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY);\n }\n }\n }\n\n var charWidth = width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x * textHScale;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n },\n\n showType3Text: function CanvasGraphics_showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n var ctx = this.ctx;\n var current = this.current;\n var font = current.font;\n var fontSize = current.fontSize;\n var fontDirection = current.fontDirection;\n var spacingDir = font.vertical ? 1 : -1;\n var charSpacing = current.charSpacing;\n var wordSpacing = current.wordSpacing;\n var textHScale = current.textHScale * fontDirection;\n var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n var glyphsLength = glyphs.length;\n var isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n var i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this.cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = spacingDir * glyph * fontSize / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n var operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n\n var transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n },\n\n // Type3 fonts\n setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n },\n setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth,\n yWidth,\n llx,\n lly,\n urx,\n ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n },\n\n // Color\n getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {\n var pattern;\n if (IR[0] === 'TilingPattern') {\n var color = IR[1];\n var baseTransform = this.baseTransform ||\n this.ctx.mozCurrentTransform.slice();\n var canvasGraphicsFactory = {\n createCanvasGraphics: (ctx) => {\n return new CanvasGraphics(ctx, this.commonObjs, this.objs,\n this.canvasFactory);\n },\n };\n pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory,\n baseTransform);\n } else {\n pattern = getShadingPatternFromIR(IR);\n }\n return pattern;\n },\n setStrokeColorN: function CanvasGraphics_setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n },\n setFillColorN: function CanvasGraphics_setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n },\n setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n },\n setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {\n var color = Util.makeCssRgb(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n },\n\n shadingFill: function CanvasGraphics_shadingFill(patternIR) {\n var ctx = this.ctx;\n\n this.save();\n var pattern = getShadingPatternFromIR(patternIR);\n ctx.fillStyle = pattern.getPattern(ctx, this, true);\n\n var inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n var canvas = ctx.canvas;\n var width = canvas.width;\n var height = canvas.height;\n\n var bl = Util.applyTransform([0, 0], inv);\n var br = Util.applyTransform([0, height], inv);\n var ul = Util.applyTransform([width, 0], inv);\n var ur = Util.applyTransform([width, height], inv);\n\n var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.restore();\n },\n\n // Images\n beginInlineImage: function CanvasGraphics_beginInlineImage() {\n throw new Error('Should not call beginInlineImage');\n },\n beginImageData: function CanvasGraphics_beginImageData() {\n throw new Error('Should not call beginImageData');\n },\n\n paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix,\n bbox) {\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (isArray(bbox) && bbox.length === 4) {\n var width = bbox[2] - bbox[0];\n var height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.clip();\n this.endPath();\n }\n },\n\n paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n },\n\n beginGroup: function CanvasGraphics_beginGroup(group) {\n this.save();\n var currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info('TODO: Support non-isolated groups.');\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn('Knockout groups not supported.');\n }\n\n var currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error('Bounding box is required.');\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n var bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform);\n // Clip the bounding box to the current canvas.\n var canvasBounds = [0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n var scaleX = 1, scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n var cacheId = 'groupAt' + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += '_smask_' + ((this.smaskCounter++) % 2);\n }\n var scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId, drawnWidth, drawnHeight, true);\n var groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n ['BM', 'source-over'],\n ['ca', 1],\n ['CA', 1]\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n\n // Reseting mask state, masks will be applied on restore of the group.\n this.current.activeSMask = null;\n },\n\n endGroup: function CanvasGraphics_endGroup(group) {\n this.groupLevel--;\n var groupCtx = this.ctx;\n this.ctx = this.groupStack.pop();\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n if (this.ctx.imageSmoothingEnabled !== undefined) {\n this.ctx.imageSmoothingEnabled = false;\n } else {\n this.ctx.mozImageSmoothingEnabled = false;\n }\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n } else {\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n }\n this.restore();\n },\n\n beginAnnotations: function CanvasGraphics_beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n },\n\n endAnnotations: function CanvasGraphics_endAnnotations() {\n this.restore();\n },\n\n beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform,\n matrix) {\n this.save();\n resetCtxToDefault(this.ctx);\n this.current = new CanvasExtraState();\n\n if (isArray(rect) && rect.length === 4) {\n var width = rect[2] - rect[0];\n var height = rect[3] - rect[1];\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n },\n\n endAnnotation: function CanvasGraphics_endAnnotation() {\n this.restore();\n },\n\n paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {\n var domImage = this.objs.get(objId);\n if (!domImage) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.save();\n\n var ctx = this.ctx;\n // scale the image to the unit square\n ctx.scale(1 / w, -1 / h);\n\n ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height,\n 0, -h, w, h);\n if (this.imageLayer) {\n var currentTransform = ctx.mozCurrentTransformInverse;\n var position = this.getCanvasPosition(0, 0);\n this.imageLayer.appendImage({\n objId,\n left: position[0],\n top: position[1],\n width: w / currentTransform[0],\n height: h / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {\n var ctx = this.ctx;\n var width = img.width, height = img.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled =\n compileType3Glyph({ data: img.data, width, height, });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph && glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n this.paintInlineImageXObject(maskCanvas.canvas);\n },\n\n paintImageMaskXObjectRepeat:\n function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX,\n scaleY, positions) {\n var width = imgData.width;\n var height = imgData.height;\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, imgData);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n var ctx = this.ctx;\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n ctx.save();\n ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageMaskXObjectGroup:\n function CanvasGraphics_paintImageMaskXObjectGroup(images) {\n var ctx = this.ctx;\n\n var fillColor = this.current.fillColor;\n var isPatternFill = this.current.patternFill;\n for (var i = 0, ii = images.length; i < ii; i++) {\n var image = images[i];\n var width = image.width, height = image.height;\n\n var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas',\n width, height);\n var maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = 'source-in';\n\n maskCtx.fillStyle = isPatternFill ?\n fillColor.getPattern(maskCtx, this) : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height,\n 0, -1, 1, 1);\n ctx.restore();\n }\n },\n\n paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n },\n\n paintImageXObjectRepeat:\n function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY,\n positions) {\n var imgData = this.objs.get(objId);\n if (!imgData) {\n warn('Dependent image isn\\'t ready yet');\n return;\n }\n\n var width = imgData.width;\n var height = imgData.height;\n var map = [];\n for (var i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({ transform: [scaleX, 0, 0, scaleY, positions[i],\n positions[i + 1]], x: 0, y: 0, w: width, h: height, });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n },\n\n paintInlineImageXObject:\n function CanvasGraphics_paintInlineImageXObject(imgData) {\n var width = imgData.width;\n var height = imgData.height;\n var ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n var currentTransform = ctx.mozCurrentTransformInverse;\n var a = currentTransform[0], b = currentTransform[1];\n var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);\n var c = currentTransform[2], d = currentTransform[3];\n var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);\n\n var imgToPaint, tmpCanvas;\n // instanceof HTMLElement does not work in jsdom node.js module\n if (imgData instanceof HTMLElement || !imgData.data) {\n imgToPaint = imgData;\n } else {\n tmpCanvas = this.cachedCanvases.getCanvas('inlineImage',\n width, height);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = tmpCanvas.canvas;\n }\n\n var paintWidth = width, paintHeight = height;\n var tmpCanvasId = 'prescale1';\n // Vertial or horizontal scaling shall not be more than 2 to not loose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size\n while ((widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)) {\n var newWidth = paintWidth, newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId,\n newWidth, newHeight);\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, 0, newWidth, newHeight);\n imgToPaint = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';\n }\n ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight,\n 0, -height, width, height);\n\n if (this.imageLayer) {\n var position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / currentTransform[0],\n height: height / currentTransform[3],\n });\n }\n this.restore();\n },\n\n paintInlineImageXObjectGroup:\n function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {\n var ctx = this.ctx;\n var w = imgData.width;\n var h = imgData.height;\n\n var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);\n var tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n\n for (var i = 0, ii = map.length; i < ii; i++) {\n var entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h,\n 0, -1, 1, 1);\n if (this.imageLayer) {\n var position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n },\n\n paintSolidColorImageMask:\n function CanvasGraphics_paintSolidColorImageMask() {\n this.ctx.fillRect(0, 0, 1, 1);\n },\n\n paintXObject: function CanvasGraphics_paintXObject() {\n warn('Unsupported \\'paintXObject\\' command.');\n },\n\n // Marked content\n\n markPoint: function CanvasGraphics_markPoint(tag) {\n // TODO Marked content.\n },\n markPointProps: function CanvasGraphics_markPointProps(tag, properties) {\n // TODO Marked content.\n },\n beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {\n // TODO Marked content.\n },\n beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(\n tag, properties) {\n // TODO Marked content.\n },\n endMarkedContent: function CanvasGraphics_endMarkedContent() {\n // TODO Marked content.\n },\n\n // Compatibility\n\n beginCompat: function CanvasGraphics_beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n },\n endCompat: function CanvasGraphics_endCompat() {\n // TODO stop ignoring undefined operators\n },\n\n // Helper functions\n\n consumePath: function CanvasGraphics_consumePath() {\n var ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip('evenodd');\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n ctx.beginPath();\n },\n getSinglePixelWidth: function CanvasGraphics_getSinglePixelWidth(scale) {\n if (this.cachedGetSinglePixelWidth === null) {\n // NOTE: The `save` and `restore` commands used below is a workaround\n // that is necessary in order to prevent `mozCurrentTransformInverse`\n // from intermittently returning incorrect values in Firefox, see:\n // https://github.com/mozilla/pdf.js/issues/7188.\n this.ctx.save();\n var inverse = this.ctx.mozCurrentTransformInverse;\n this.ctx.restore();\n // max of the current horizontal and vertical scale\n this.cachedGetSinglePixelWidth = Math.sqrt(Math.max(\n (inverse[0] * inverse[0] + inverse[1] * inverse[1]),\n (inverse[2] * inverse[2] + inverse[3] * inverse[3])));\n }\n return this.cachedGetSinglePixelWidth;\n },\n getCanvasPosition: function CanvasGraphics_getCanvasPosition(x, y) {\n var transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5]\n ];\n },\n };\n\n for (var op in OPS) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n\n return CanvasGraphics;\n})();\n\nexport {\n CanvasGraphics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/canvas.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, bytesToString, isEvalSupported, shadow, string32, warn\n} from '../shared/util';\n\nfunction FontLoader(docId) {\n this.docId = docId;\n this.styleElement = null;\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces = [];\n this.loadTestFontId = 0;\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n }\n}\nFontLoader.prototype = {\n insertRule: function fontLoaderInsertRule(rule) {\n var styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = document.createElement('style');\n styleElement.id = 'PDFJS_FONT_STYLE_TAG_' + this.docId;\n document.documentElement.getElementsByTagName('head')[0].appendChild(\n styleElement);\n }\n\n var styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n },\n\n clear: function fontLoaderClear() {\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n this.nativeFontFaces.forEach(function(nativeFontFace) {\n document.fonts.delete(nativeFontFace);\n });\n this.nativeFontFaces.length = 0;\n }\n },\n};\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n var getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width and\n // height.\n return atob(\n 'T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' +\n 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' +\n 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' +\n 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' +\n 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' +\n 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' +\n 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' +\n 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' +\n 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' +\n 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' +\n 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' +\n 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' +\n 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' +\n 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' +\n 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' +\n 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' +\n 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' +\n 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' +\n 'ABAAAAAAAAAAAD6AAAAAAAAA==');\n };\n Object.defineProperty(FontLoader.prototype, 'loadTestFont', {\n get() {\n return shadow(this, 'loadTestFont', getLoadTestFont());\n },\n configurable: true,\n });\n\n FontLoader.prototype.addNativeFontFace =\n function fontLoader_addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n document.fonts.add(nativeFontFace);\n };\n\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n var rules = [];\n var fontsToLoad = [];\n var fontLoadPromises = [];\n var getNativeFontPromise = function(nativeFontFace) {\n // Return a promise that is always fulfilled, even when the font fails to\n // load.\n return nativeFontFace.loaded.catch(function(e) {\n warn('Failed to load font \"' + nativeFontFace.family + '\": ' + e);\n });\n };\n // Firefox Font Loading API does not work with mozPrintCallback --\n // disabling it in this case.\n var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported &&\n !FontLoader.isSyncFontLoadingSupported;\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n\n // Add the font to the DOM only once or skip if the font\n // is already loaded.\n if (font.attached || font.loading === false) {\n continue;\n }\n font.attached = true;\n\n if (isFontLoadingAPISupported) {\n var nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n fontLoadPromises.push(getNativeFontPromise(nativeFontFace));\n }\n } else {\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n rules.push(rule);\n fontsToLoad.push(font);\n }\n }\n }\n\n var request = this.queueLoadingCallback(callback);\n if (isFontLoadingAPISupported) {\n Promise.all(fontLoadPromises).then(function() {\n request.complete();\n });\n } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) {\n this.prepareFontLoadEvent(rules, fontsToLoad, request);\n } else {\n request.complete();\n }\n };\n\n FontLoader.prototype.queueLoadingCallback =\n function FontLoader_queueLoadingCallback(callback) {\n function LoadLoader_completeRequest() {\n assert(!request.end, 'completeRequest() cannot be called twice');\n request.end = Date.now();\n\n // sending all completed requests in order how they were queued\n while (context.requests.length > 0 && context.requests[0].end) {\n var otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n var context = this.loadingContext;\n var requestId = 'pdfjs-font-loading-' + (context.nextRequestId++);\n var request = {\n id: requestId,\n complete: LoadLoader_completeRequest,\n callback,\n started: Date.now(),\n };\n context.requests.push(request);\n return request;\n };\n\n FontLoader.prototype.prepareFontLoadEvent =\n function fontLoaderPrepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is\n // ready. It's assumed fonts are loaded in order, so add a known test\n // font after the desired fonts and then test for the loading of that\n // test font.\n\n function int32(data, offset) {\n return (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff);\n }\n\n function spliceString(s, offset, remove, insert) {\n var chunk1 = s.substr(0, offset);\n var chunk2 = s.substr(offset + remove);\n return chunk1 + insert + chunk2;\n }\n\n var i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n var canvas = document.createElement('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n\n var called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn('Load test font never loaded.');\n callback();\n return;\n }\n ctx.font = '30px ' + name;\n ctx.fillText('.', 0, 20);\n var imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n var data = this.loadTestFont;\n var COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length,\n loadTestFontId);\n // CFF checksum is important for IE, adjusting it\n var CFF_CHECKSUM_OFFSET = 16;\n var XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n var checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) { // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE +\n int32(loadTestFontId + 'XXX', i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n var url = 'url(data:font/opentype;base64,' + btoa(data) + ');';\n var rule = '@font-face { font-family:\"' + loadTestFontId + '\";src:' +\n url + '}';\n this.insertRule(rule);\n\n var names = [];\n for (i = 0, ii = fonts.length; i < ii; i++) {\n names.push(fonts[i].loadedName);\n }\n names.push(loadTestFontId);\n\n var div = document.createElement('div');\n div.setAttribute('style',\n 'visibility: hidden;' +\n 'width: 10px; height: 10px;' +\n 'position: absolute; top: 0px; left: 0px;');\n for (i = 0, ii = names.length; i < ii; ++i) {\n var span = document.createElement('span');\n span.textContent = 'Hi';\n span.style.fontFamily = names[i];\n div.appendChild(span);\n }\n document.body.appendChild(div);\n\n isFontReady(loadTestFontId, function() {\n document.body.removeChild(div);\n request.complete();\n });\n /** Hack end */\n };\n} else {\n FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) {\n for (var i = 0, ii = fonts.length; i < ii; i++) {\n var font = fonts[i];\n if (font.attached) {\n continue;\n }\n\n font.attached = true;\n var rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n }\n }\n\n setTimeout(callback);\n };\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL')) {\n FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' &&\n !!document.fonts;\n}\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('MOZCENTRAL || CHROME')) {\n var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() {\n if (typeof navigator === 'undefined') {\n // node.js - we can pretend sync font loading is supported.\n return true;\n }\n\n var supported = false;\n\n // User agent string sniffing is bad, but there is no reliable way to tell\n // if font is fully loaded and ready to be used with canvas.\n var m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(navigator.userAgent);\n if (m && m[1] >= 14) {\n supported = true;\n }\n // TODO other browsers\n return supported;\n };\n Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', {\n get() {\n return shadow(FontLoader, 'isSyncFontLoadingSupported',\n isSyncFontLoadingSupported());\n },\n enumerable: true,\n configurable: true,\n });\n}\n\nvar IsEvalSupportedCached = {\n get value() {\n return shadow(this, 'value', isEvalSupported());\n },\n};\n\nvar FontFaceObject = (function FontFaceObjectClosure() {\n function FontFaceObject(translatedData, options) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (var i in translatedData) {\n this[i] = translatedData[i];\n }\n this.options = options;\n }\n FontFaceObject.prototype = {\n createNativeFontFace: function FontFaceObject_createNativeFontFace() {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n throw new Error('Not implemented: createNativeFontFace');\n }\n\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var nativeFontFace = new FontFace(this.loadedName, this.data, {});\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n },\n\n createFontFaceRule: function FontFaceObject_createFontFaceRule() {\n if (!this.data) {\n return null;\n }\n\n if (this.options.disableFontFace) {\n this.disableFontFace = true;\n return null;\n }\n\n var data = bytesToString(new Uint8Array(this.data));\n var fontName = this.loadedName;\n\n // Add the font-face rule to the document\n var url = ('url(data:' + this.mimetype + ';base64,' + btoa(data) + ');');\n var rule = '@font-face { font-family:\"' + fontName + '\";src:' + url + '}';\n\n if (this.options.fontRegistry) {\n this.options.fontRegistry.registerFont(this, url);\n }\n\n return rule;\n },\n\n getPathGenerator:\n function FontFaceObject_getPathGenerator(objs, character) {\n if (!(character in this.compiledGlyphs)) {\n var cmds = objs.get(this.loadedName + '_path_' + character);\n var current, i, len;\n\n // If we can, compile cmds into JS for MAXIMUM SPEED\n if (this.options.isEvalSupported && IsEvalSupportedCached.value) {\n var args, js = '';\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.args !== undefined) {\n args = current.args.join(',');\n } else {\n args = '';\n }\n\n js += 'c.' + current.cmd + '(' + args + ');\\n';\n }\n // eslint-disable-next-line no-new-func\n this.compiledGlyphs[character] = new Function('c', 'size', js);\n } else {\n // But fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies)\n this.compiledGlyphs[character] = function(c, size) {\n for (i = 0, len = cmds.length; i < len; i++) {\n current = cmds[i];\n\n if (current.cmd === 'scale') {\n current.args = [size, -size];\n }\n\n c[current.cmd].apply(c, current.args);\n }\n };\n }\n }\n return this.compiledGlyphs[character];\n },\n };\n\n return FontFaceObject;\n})();\n\nexport {\n FontFaceObject,\n FontLoader,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/font_loader.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, isArray, Util } from '../shared/util';\nimport { WebGLUtils } from './webgl';\n\nvar ShadingIRs = {};\n\nShadingIRs.RadialAxial = {\n fromIR: function RadialAxial_fromIR(raw) {\n var type = raw[1];\n var colorStops = raw[2];\n var p0 = raw[3];\n var p1 = raw[4];\n var r0 = raw[5];\n var r1 = raw[6];\n return {\n type: 'Pattern',\n getPattern: function RadialAxial_getPattern(ctx) {\n var grad;\n if (type === 'axial') {\n grad = ctx.createLinearGradient(p0[0], p0[1], p1[0], p1[1]);\n } else if (type === 'radial') {\n grad = ctx.createRadialGradient(p0[0], p0[1], r0, p1[0], p1[1], r1);\n }\n\n for (var i = 0, ii = colorStops.length; i < ii; ++i) {\n var c = colorStops[i];\n grad.addColorStop(c[0], c[1]);\n }\n return grad;\n },\n };\n },\n};\n\nvar createMeshCanvas = (function createMeshCanvasClosure() {\n function drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n var coords = context.coords, colors = context.colors;\n var bytes = data.data, rowSize = data.width * 4;\n var tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2; p2 = p3; p3 = tmp; tmp = c2; c2 = c3; c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1; p1 = p2; p2 = tmp; tmp = c1; c1 = c2; c2 = tmp;\n }\n var x1 = (coords[p1] + context.offsetX) * context.scaleX;\n var y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n var x2 = (coords[p2] + context.offsetX) * context.scaleX;\n var y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n var x3 = (coords[p3] + context.offsetX) * context.scaleX;\n var y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n var c1r = colors[c1], c1g = colors[c1 + 1], c1b = colors[c1 + 2];\n var c2r = colors[c2], c2g = colors[c2 + 1], c2b = colors[c2 + 2];\n var c3r = colors[c3], c3g = colors[c3 + 1], c3b = colors[c3 + 2];\n\n var minY = Math.round(y1), maxY = Math.round(y3);\n var xa, car, cag, cab;\n var xb, cbr, cbg, cbb;\n var k;\n for (var y = minY; y <= maxY; y++) {\n if (y < y2) {\n k = y < y1 ? 0 : y1 === y2 ? 1 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n k = y > y3 ? 1 : y2 === y3 ? 0 : (y2 - y) / (y2 - y3);\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n k = y < y1 ? 0 : y > y3 ? 1 : (y1 - y) / (y1 - y3);\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n var x1_ = Math.round(Math.min(xa, xb));\n var x2_ = Math.round(Math.max(xa, xb));\n var j = rowSize * y + x1_ * 4;\n for (var x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n k = k < 0 ? 0 : k > 1 ? 1 : k;\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n }\n\n function drawFigure(data, figure, context) {\n var ps = figure.coords;\n var cs = figure.colors;\n var i, ii;\n switch (figure.type) {\n case 'lattice':\n var verticesPerRow = figure.verticesPerRow;\n var rows = Math.floor(ps.length / verticesPerRow) - 1;\n var cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n var q = i * verticesPerRow;\n for (var j = 0; j < cols; j++, q++) {\n drawTriangle(data, context,\n ps[q], ps[q + 1], ps[q + verticesPerRow],\n cs[q], cs[q + 1], cs[q + verticesPerRow]);\n drawTriangle(data, context,\n ps[q + verticesPerRow + 1], ps[q + 1], ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1], cs[q + 1], cs[q + verticesPerRow]);\n }\n }\n break;\n case 'triangles':\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(data, context,\n ps[i], ps[i + 1], ps[i + 2],\n cs[i], cs[i + 1], cs[i + 2]);\n }\n break;\n default:\n throw new Error('illegal figure');\n }\n }\n\n function createMeshCanvas(bounds, combinesScale, coords, colors, figures,\n backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n var EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n var BORDER_SIZE = 2;\n\n var offsetX = Math.floor(bounds[0]);\n var offsetY = Math.floor(bounds[1]);\n var boundsWidth = Math.ceil(bounds[2]) - offsetX;\n var boundsHeight = Math.ceil(bounds[3]) - offsetY;\n\n var width = Math.min(Math.ceil(Math.abs(boundsWidth * combinesScale[0] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var height = Math.min(Math.ceil(Math.abs(boundsHeight * combinesScale[1] *\n EXPECTED_SCALE)), MAX_PATTERN_SIZE);\n var scaleX = boundsWidth / width;\n var scaleY = boundsHeight / height;\n\n var context = {\n coords,\n colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n var paddedWidth = width + BORDER_SIZE * 2;\n var paddedHeight = height + BORDER_SIZE * 2;\n\n var canvas, tmpCanvas, i, ii;\n if (WebGLUtils.isEnabled) {\n canvas = WebGLUtils.drawFigures(width, height, backgroundColor,\n figures, context);\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=972126\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n } else {\n tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight,\n false);\n var tmpCtx = tmpCanvas.context;\n\n var data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n var bytes = data.data;\n for (i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (i = 0; i < figures.length; i++) {\n drawFigure(data, figures[i], context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n canvas = tmpCanvas.canvas;\n }\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n return createMeshCanvas;\n})();\n\nShadingIRs.Mesh = {\n fromIR: function Mesh_fromIR(raw) {\n // var type = raw[1];\n var coords = raw[2];\n var colors = raw[3];\n var figures = raw[4];\n var bounds = raw[5];\n var matrix = raw[6];\n // var bbox = raw[7];\n var background = raw[8];\n return {\n type: 'Pattern',\n getPattern: function Mesh_getPattern(ctx, owner, shadingFill) {\n var scale;\n if (shadingFill) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (matrix) {\n var matrixScale = Util.singularValueDecompose2dScale(matrix);\n scale = [scale[0] * matrixScale[0],\n scale[1] * matrixScale[1]];\n }\n }\n\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n var temporaryPatternCanvas = createMeshCanvas(bounds, scale, coords,\n colors, figures, shadingFill ? null : background,\n owner.cachedCanvases);\n\n if (!shadingFill) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (matrix) {\n ctx.transform.apply(ctx, matrix);\n }\n }\n\n ctx.translate(temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY);\n ctx.scale(temporaryPatternCanvas.scaleX,\n temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, 'no-repeat');\n },\n };\n },\n};\n\nShadingIRs.Dummy = {\n fromIR: function Dummy_fromIR() {\n return {\n type: 'Pattern',\n getPattern: function Dummy_fromIR_getPattern() {\n return 'hotpink';\n },\n };\n },\n};\n\nfunction getShadingPatternFromIR(raw) {\n var shadingIR = ShadingIRs[raw[0]];\n if (!shadingIR) {\n throw new Error(`Unknown IR type: ${raw[0]}`);\n }\n return shadingIR.fromIR(raw);\n}\n\nvar TilingPattern = (function TilingPatternClosure() {\n var PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n };\n\n var MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n\n function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n this.type = 'Pattern';\n this.ctx = ctx;\n }\n\n TilingPattern.prototype = {\n createPatternCanvas: function TilinPattern_createPatternCanvas(owner) {\n var operatorList = this.operatorList;\n var bbox = this.bbox;\n var xstep = this.xstep;\n var ystep = this.ystep;\n var paintType = this.paintType;\n var tilingType = this.tilingType;\n var color = this.color;\n var canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info('TilingType: ' + tilingType);\n\n var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], y1 = bbox[3];\n\n var topLeft = [x0, y0];\n // we want the canvas to be as large as the step size\n var botRight = [x0 + xstep, y0 + ystep];\n\n var width = botRight[0] - topLeft[0];\n var height = botRight[1] - topLeft[1];\n\n // Obtain scale from matrix and current transformation matrix.\n var matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n var curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform);\n var combinedScale = [matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1]];\n\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])),\n MAX_PATTERN_SIZE);\n\n height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])),\n MAX_PATTERN_SIZE);\n\n var tmpCanvas = owner.cachedCanvases.getCanvas('pattern',\n width, height, true);\n var tmpCtx = tmpCanvas.context;\n var graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(tmpCtx, paintType, color);\n\n this.setScale(width, height, xstep, ystep);\n this.transformToScale(graphics);\n\n // transform coordinates to pattern space\n var tmpTranslate = [1, 0, 0, 1, -topLeft[0], -topLeft[1]];\n graphics.transform.apply(graphics, tmpTranslate);\n\n this.clipBbox(graphics, bbox, x0, y0, x1, y1);\n\n graphics.executeOperatorList(operatorList);\n return tmpCanvas.canvas;\n },\n\n setScale: function TilingPattern_setScale(width, height, xstep, ystep) {\n this.scale = [width / xstep, height / ystep];\n },\n\n transformToScale: function TilingPattern_transformToScale(graphics) {\n var scale = this.scale;\n var tmpScale = [scale[0], 0, 0, scale[1], 0, 0];\n graphics.transform.apply(graphics, tmpScale);\n },\n\n scaleToContext: function TilingPattern_scaleToContext() {\n var scale = this.scale;\n this.ctx.scale(1 / scale[0], 1 / scale[1]);\n },\n\n clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) {\n if (isArray(bbox) && bbox.length === 4) {\n var bboxWidth = x1 - x0;\n var bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n },\n\n setFillAndStrokeStyleToContext:\n function setFillAndStrokeStyleToContext(context, paintType, color) {\n switch (paintType) {\n case PaintType.COLORED:\n var ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n var cssColor = Util.makeCssRgb(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n },\n\n getPattern: function TilingPattern_getPattern(ctx, owner) {\n var temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.baseTransform);\n ctx.transform.apply(ctx, this.matrix);\n this.scaleToContext();\n\n return ctx.createPattern(temporaryPatternCanvas, 'repeat');\n },\n };\n\n return TilingPattern;\n})();\n\nexport {\n getShadingPatternFromIR,\n TilingPattern,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/pattern_helper.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from '../shared/util';\n\n /** @implements {IPDFStream} */\nvar PDFDataTransportStream = (function PDFDataTransportStreamClosure() {\n function PDFDataTransportStream(params, pdfDataRangeTransport) {\n assert(pdfDataRangeTransport);\n\n this._queuedChunks = [];\n var initialData = params.initialData;\n if (initialData && initialData.length > 0) {\n let buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isRangeSupported = !(params.disableRange);\n this._isStreamingSupported = !(params.disableStream);\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk, });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded) => {\n this._onProgress({ loaded, });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener((chunk) => {\n this._onReceiveData({ chunk, });\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n PDFDataTransportStream.prototype = {\n _onReceiveData: function PDFDataTransportStream_onReceiveData(args) {\n let buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n var found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(found);\n }\n },\n\n _onProgress: function PDFDataTransportStream_onDataProgress(evt) {\n if (this._rangeReaders.length > 0) {\n // Reporting to first range reader.\n var firstReader = this._rangeReaders[0];\n if (firstReader.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded, });\n }\n }\n },\n\n _removeRangeReader:\n function PDFDataTransportStream_removeRangeReader(reader) {\n var i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n },\n\n getFullReader: function PDFDataTransportStream_getFullReader() {\n assert(!this._fullRequestReader);\n var queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(this, queuedChunks);\n },\n\n getRangeReader: function PDFDataTransportStream_getRangeReader(begin, end) {\n var reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests:\n function PDFDataTransportStream_cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n var readers = this._rangeReaders.slice(0);\n readers.forEach(function (rangeReader) {\n rangeReader.cancel(reason);\n });\n this._pdfDataRangeTransport.abort();\n },\n };\n\n /** @implements {IPDFStreamReader} */\n function PDFDataTransportStreamReader(stream, queuedChunks) {\n this._stream = stream;\n this._done = false;\n this._queuedChunks = queuedChunks || [];\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null; // not used\n }\n PDFDataTransportStreamReader.prototype = {\n _enqueue: function PDFDataTransportStreamReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length > 0) {\n var requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false, });\n return;\n }\n this._queuedChunks.push(chunk);\n },\n\n get headersReady() {\n return this._headersReady;\n },\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n },\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n },\n\n get contentLength() {\n return this._stream._contentLength;\n },\n\n read: function PDFDataTransportStreamReader_read() {\n if (this._queuedChunks.length > 0) {\n var chunk = this._queuedChunks.shift();\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n },\n };\n\n /** @implements {IPDFStreamRangeReader} */\n function PDFDataTransportStreamRangeReader(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n PDFDataTransportStreamRangeReader.prototype = {\n _enqueue: function PDFDataTransportStreamRangeReader_enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n var requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false, });\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n },\n\n get isStreamingSupported() {\n return false;\n },\n\n read: function PDFDataTransportStreamRangeReader_read() {\n if (this._queuedChunk) {\n let chunk = this._queuedChunk;\n this._queuedChunk = null;\n return Promise.resolve({ value: chunk, done: false, });\n }\n if (this._done) {\n return Promise.resolve({ value: undefined, done: true, });\n }\n var requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n },\n\n cancel: function PDFDataTransportStreamRangeReader_cancel(reason) {\n this._done = true;\n this._requests.forEach(function (requestCapability) {\n requestCapability.resolve({ value: undefined, done: true, });\n });\n this._requests = [];\n this._stream._removeRangeReader(this);\n },\n };\n\n return PDFDataTransportStream;\n})();\n\nexport {\n PDFDataTransportStream,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/display/transport_stream.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n'use strict';\n\nvar pdfjsVersion =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_VERSION') : void 0;\nvar pdfjsBuild =\n typeof PDFJSDev !== 'undefined' ? PDFJSDev.eval('BUNDLE_BUILD') : void 0;\n\nvar pdfjsSharedUtil = require('./shared/util.js');\nvar pdfjsDisplayGlobal = require('./display/global.js');\nvar pdfjsDisplayAPI = require('./display/api.js');\nvar pdfjsDisplayTextLayer = require('./display/text_layer.js');\nvar pdfjsDisplayAnnotationLayer = require('./display/annotation_layer.js');\nvar pdfjsDisplayDOMUtils = require('./display/dom_utils.js');\nvar pdfjsDisplaySVG = require('./display/svg.js');\n\nif (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n require('./display/network.js');\n}\n\nexports.PDFJS = pdfjsDisplayGlobal.PDFJS;\nexports.build = pdfjsDisplayAPI.build;\nexports.version = pdfjsDisplayAPI.version;\nexports.getDocument = pdfjsDisplayAPI.getDocument;\nexports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;\nexports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;\nexports.PDFWorker = pdfjsDisplayAPI.PDFWorker;\nexports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;\nexports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;\nexports.CustomStyle = pdfjsDisplayDOMUtils.CustomStyle;\nexports.createPromiseCapability = pdfjsSharedUtil.createPromiseCapability;\nexports.PasswordResponses = pdfjsSharedUtil.PasswordResponses;\nexports.InvalidPDFException = pdfjsSharedUtil.InvalidPDFException;\nexports.MissingPDFException = pdfjsSharedUtil.MissingPDFException;\nexports.SVGGraphics = pdfjsDisplaySVG.SVGGraphics;\nexports.NativeImageDecoding = pdfjsSharedUtil.NativeImageDecoding;\nexports.UnexpectedResponseException =\n pdfjsSharedUtil.UnexpectedResponseException;\nexports.OPS = pdfjsSharedUtil.OPS;\nexports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;\nexports.isValidUrl = pdfjsDisplayDOMUtils.isValidUrl;\nexports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;\nexports.createObjectURL = pdfjsSharedUtil.createObjectURL;\nexports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;\nexports.shadow = pdfjsSharedUtil.shadow;\nexports.createBlob = pdfjsSharedUtil.createBlob;\nexports.RenderingCancelledException =\n pdfjsDisplayDOMUtils.RenderingCancelledException;\nexports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;\nexports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;\nexports.StatTimer = pdfjsSharedUtil.StatTimer;\n\n\n\n// WEBPACK FOOTER //\n// src/pdf.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-extend-native */\n/* globals VBArray, PDFJS, global */\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) &&\n (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked)) {\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self :\n (typeof this !== 'undefined' && this.Math === Math) ? this : {};\n\nvar userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';\nvar isAndroid = /Android/.test(userAgent);\nvar isAndroidPre3 = /Android\\s[0-2][^\\d]/.test(userAgent);\nvar isAndroidPre5 = /Android\\s[0-4][^\\d]/.test(userAgent);\nvar isChrome = userAgent.indexOf('Chrom') >= 0;\nvar isChromeWithRangeBug = /Chrome\\/(39|40)\\./.test(userAgent);\nvar isIOSChrome = userAgent.indexOf('CriOS') >= 0;\nvar isIE = userAgent.indexOf('Trident') >= 0;\nvar isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\nvar isOpera = userAgent.indexOf('Opera') >= 0;\nvar isSafari = /Safari\\//.test(userAgent) &&\n !/(Chrome\\/|Android\\s)/.test(userAgent);\n\nvar hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Initializing PDFJS global object here, it case if we need to change/disable\n// some PDF.js features, e.g. range requests\nif (typeof PDFJS === 'undefined') {\n globalScope.PDFJS = {};\n}\n\nPDFJS.compatibilityChecked = true;\n\n// Checking if the typed arrays are supported\n// Support: iOS<6.0 (subarray), IE<10, Android<4.0\n(function checkTypedArrayCompatibility() {\n if (typeof Uint8Array !== 'undefined') {\n // Support: iOS<6.0\n if (typeof Uint8Array.prototype.subarray === 'undefined') {\n Uint8Array.prototype.subarray = function subarray(start, end) {\n return new Uint8Array(this.slice(start, end));\n };\n Float32Array.prototype.subarray = function subarray(start, end) {\n return new Float32Array(this.slice(start, end));\n };\n }\n\n // Support: Android<4.1\n if (typeof Float64Array === 'undefined') {\n globalScope.Float64Array = Float32Array;\n }\n return;\n }\n\n function subarray(start, end) {\n return new TypedArray(this.slice(start, end));\n }\n\n function setArrayOffset(array, offset) {\n if (arguments.length < 2) {\n offset = 0;\n }\n for (var i = 0, n = array.length; i < n; ++i, ++offset) {\n this[offset] = array[i] & 0xFF;\n }\n }\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get() {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set(value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n },\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n function TypedArray(arg1) {\n var result, i, n;\n if (typeof arg1 === 'number') {\n result = [];\n for (i = 0; i < arg1; ++i) {\n result[i] = 0;\n }\n } else if ('slice' in arg1) {\n result = arg1.slice(0);\n } else {\n result = [];\n for (i = 0, n = arg1.length; i < n; ++i) {\n result[i] = arg1[i];\n }\n }\n\n result.subarray = subarray;\n result.buffer = result;\n result.byteLength = result.length;\n result.set = setArrayOffset;\n\n if (typeof arg1 === 'object' && arg1.buffer) {\n result.buffer = arg1.buffer;\n }\n return result;\n }\n\n globalScope.Uint8Array = TypedArray;\n globalScope.Int8Array = TypedArray;\n\n // we don't need support for set, byteLength for 32-bit array\n // so we can use the TypedArray as well\n globalScope.Int32Array = TypedArray;\n globalScope.Uint16Array = TypedArray;\n globalScope.Float32Array = TypedArray;\n globalScope.Float64Array = TypedArray;\n\n globalScope.Uint32Array = function () {\n if (arguments.length === 3) {\n // Building view for buffer, offset, and length\n if (arguments[1] !== 0) {\n throw new Error('offset !== 0 is not supported');\n }\n return new Uint32ArrayView(arguments[0], arguments[2]);\n }\n return TypedArray.apply(this, arguments);\n };\n})();\n\n// window.CanvasPixelArray.buffer/.byteLength\n// Support: IE9\n(function canvasPixelArrayBuffer() {\n if (!hasDOM || !window.CanvasPixelArray) {\n return;\n }\n var cpaProto = window.CanvasPixelArray.prototype;\n if ('buffer' in cpaProto) {\n return;\n }\n // Trying to fake CanvasPixelArray as Uint8ClampedArray.\n Object.defineProperty(cpaProto, 'buffer', {\n get() {\n return this;\n },\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(cpaProto, 'byteLength', {\n get() {\n return this.length;\n },\n enumerable: false,\n configurable: true,\n });\n})();\n\n// URL = URL || webkitURL\n// Support: Safari<7, Android 4.2+\n(function normalizeURLObject() {\n if (!globalScope.URL) {\n globalScope.URL = globalScope.webkitURL;\n }\n})();\n\n// Object.defineProperty()?\n// Support: Android<4.0, Safari<5.1\n(function checkObjectDefinePropertyCompatibility() {\n if (typeof Object.defineProperty !== 'undefined') {\n var definePropertyPossible = true;\n try {\n if (hasDOM) {\n // some browsers (e.g. safari) cannot use defineProperty() on DOM\n // objects and thus the native version is not sufficient\n Object.defineProperty(new Image(), 'id', { value: 'test', });\n }\n // ... another test for android gb browser for non-DOM objects\n var Test = function Test() {};\n Test.prototype = { get id() { }, };\n Object.defineProperty(new Test(), 'id',\n { value: '', configurable: true, enumerable: true, writable: false, });\n } catch (e) {\n definePropertyPossible = false;\n }\n if (definePropertyPossible) {\n return;\n }\n }\n\n Object.defineProperty = function objectDefineProperty(obj, name, def) {\n delete obj[name];\n if ('get' in def) {\n obj.__defineGetter__(name, def['get']);\n }\n if ('set' in def) {\n obj.__defineSetter__(name, def['set']);\n }\n if ('value' in def) {\n obj.__defineSetter__(name, function objectDefinePropertySetter(value) {\n this.__defineGetter__(name, function objectDefinePropertyGetter() {\n return value;\n });\n return value;\n });\n obj[name] = def.value;\n }\n };\n})();\n\n\n// No XMLHttpRequest#response?\n// Support: IE<11, Android <4.0\n(function checkXMLHttpRequestResponseCompatibility() {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n var xhrPrototype = XMLHttpRequest.prototype;\n var xhr = new XMLHttpRequest();\n if (!('overrideMimeType' in xhr)) {\n // IE10 might have response, but not overrideMimeType\n // Support: IE10\n Object.defineProperty(xhrPrototype, 'overrideMimeType', {\n value: function xmlHttpRequestOverrideMimeType(mimeType) {},\n });\n }\n if ('responseType' in xhr) {\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'responseType', {\n get: function xmlHttpRequestGetResponseType() {\n return this._responseType || 'text';\n },\n set: function xmlHttpRequestSetResponseType(value) {\n if (value === 'text' || value === 'arraybuffer') {\n this._responseType = value;\n if (value === 'arraybuffer' &&\n typeof this.overrideMimeType === 'function') {\n this.overrideMimeType('text/plain; charset=x-user-defined');\n }\n }\n },\n });\n\n // Support: IE9\n if (typeof VBArray !== 'undefined') {\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType === 'arraybuffer') {\n return new Uint8Array(new VBArray(this.responseBody).toArray());\n }\n return this.responseText;\n },\n });\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType !== 'arraybuffer') {\n return this.responseText;\n }\n var text = this.responseText;\n var i, n = text.length;\n var result = new Uint8Array(n);\n for (i = 0; i < n; ++i) {\n result[i] = text.charCodeAt(i) & 0xFF;\n }\n return result.buffer;\n },\n });\n})();\n\n// window.btoa (base64 encode function) ?\n// Support: IE<10\n(function checkWindowBtoaCompatibility() {\n if ('btoa' in globalScope) {\n return;\n }\n\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n globalScope.btoa = function (chars) {\n var buffer = '';\n var i, n;\n for (i = 0, n = chars.length; i < n; i += 3) {\n var b1 = chars.charCodeAt(i) & 0xFF;\n var b2 = chars.charCodeAt(i + 1) & 0xFF;\n var b3 = chars.charCodeAt(i + 2) & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < n ? (b3 & 0x3F) : 64;\n buffer += (digits.charAt(d1) + digits.charAt(d2) +\n digits.charAt(d3) + digits.charAt(d4));\n }\n return buffer;\n };\n})();\n\n// window.atob (base64 encode function)?\n// Support: IE<10\n(function checkWindowAtobCompatibility() {\n if ('atob' in globalScope) {\n return;\n }\n\n // https://github.com/davidchambers/Base64.js\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n globalScope.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 === 1) {\n throw new Error('bad atob input');\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n (buffer = input.charAt(idx++));\n // character found in table?\n // initialize bit storage and add its ascii value\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = digits.indexOf(buffer);\n }\n return output;\n };\n})();\n\n// Function.prototype.bind?\n// Support: Android<4.0, iOS<6.0\n(function checkFunctionPrototypeBindCompatibility() {\n if (typeof Function.prototype.bind !== 'undefined') {\n return;\n }\n\n Function.prototype.bind = function functionPrototypeBind(obj) {\n var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);\n var bound = function functionPrototypeBindBound() {\n var args = headArgs.concat(Array.prototype.slice.call(arguments));\n return fn.apply(obj, args);\n };\n return bound;\n };\n})();\n\n// HTMLElement dataset property\n// Support: IE<11, Safari<5.1, Android<4.0\n(function checkDatasetProperty() {\n if (!hasDOM) {\n return;\n }\n var div = document.createElement('div');\n if ('dataset' in div) {\n return; // dataset property exists\n }\n\n Object.defineProperty(HTMLElement.prototype, 'dataset', {\n get() {\n if (this._dataset) {\n return this._dataset;\n }\n\n var dataset = {};\n for (var j = 0, jj = this.attributes.length; j < jj; j++) {\n var attribute = this.attributes[j];\n if (attribute.name.substring(0, 5) !== 'data-') {\n continue;\n }\n var key = attribute.name.substring(5).replace(/\\-([a-z])/g,\n function(all, ch) {\n return ch.toUpperCase();\n });\n dataset[key] = attribute.value;\n }\n\n Object.defineProperty(this, '_dataset', {\n value: dataset,\n writable: false,\n enumerable: false,\n });\n return dataset;\n },\n enumerable: true,\n });\n})();\n\n// HTMLElement classList property\n// Support: IE<10, Android<4.0, iOS<5.0\n(function checkClassListProperty() {\n function changeList(element, itemName, add, remove) {\n var s = element.className || '';\n var list = s.split(/\\s+/g);\n if (list[0] === '') {\n list.shift();\n }\n var index = list.indexOf(itemName);\n if (index < 0 && add) {\n list.push(itemName);\n }\n if (index >= 0 && remove) {\n list.splice(index, 1);\n }\n element.className = list.join(' ');\n return (index >= 0);\n }\n\n if (!hasDOM) {\n return;\n }\n\n var div = document.createElement('div');\n if ('classList' in div) {\n return; // classList property exists\n }\n\n var classListPrototype = {\n add(name) {\n changeList(this.element, name, true, false);\n },\n contains(name) {\n return changeList(this.element, name, false, false);\n },\n remove(name) {\n changeList(this.element, name, false, true);\n },\n toggle(name) {\n changeList(this.element, name, true, true);\n },\n };\n\n Object.defineProperty(HTMLElement.prototype, 'classList', {\n get() {\n if (this._classList) {\n return this._classList;\n }\n\n var classList = Object.create(classListPrototype, {\n element: {\n value: this,\n writable: false,\n enumerable: true,\n },\n });\n Object.defineProperty(this, '_classList', {\n value: classList,\n writable: false,\n enumerable: false,\n });\n return classList;\n },\n enumerable: true,\n });\n})();\n\n// Checking if worker has console support. Forwarding all messages to the main\n// thread if console object is absent.\n(function checkWorkerConsoleCompatibility() {\n if (typeof importScripts === 'undefined' || 'console' in globalScope) {\n return;\n }\n\n var consoleTimer = {};\n\n var workerConsole = {\n log: function log() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_log',\n data: args,\n });\n },\n\n error: function error() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_error',\n data: args,\n });\n },\n\n time: function time(name) {\n consoleTimer[name] = Date.now();\n },\n\n timeEnd: function timeEnd(name) {\n var time = consoleTimer[name];\n if (!time) {\n throw new Error('Unknown timer name ' + name);\n }\n this.log('Timer:', name, Date.now() - time);\n },\n };\n\n globalScope.console = workerConsole;\n})();\n\n// Check console compatibility\n// In older IE versions the console object is not available\n// unless console is open.\n// Support: IE<10\n(function checkConsoleCompatibility() {\n if (!hasDOM) {\n return;\n }\n if (!('console' in window)) {\n window.console = {\n log() {},\n error() {},\n warn() {},\n };\n return;\n }\n if (!('bind' in console.log)) {\n // native functions in IE9 might not have bind\n console.log = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.log);\n console.error = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.error);\n console.warn = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.warn);\n return;\n }\n})();\n\n// Check onclick compatibility in Opera\n// Support: Opera<15\n(function checkOnClickCompatibility() {\n // workaround for reported Opera bug DSK-354448:\n // onclick fires on disabled buttons with opaque content\n function ignoreIfTargetDisabled(event) {\n if (isDisabled(event.target)) {\n event.stopPropagation();\n }\n }\n function isDisabled(node) {\n return node.disabled || (node.parentNode && isDisabled(node.parentNode));\n }\n if (isOpera) {\n // use browser detection since we cannot feature-check this bug\n document.addEventListener('click', ignoreIfTargetDisabled, true);\n }\n})();\n\n// Checks if possible to use URL.createObjectURL()\n// Support: IE, Chrome on iOS\n(function checkOnBlobSupport() {\n // sometimes IE and Chrome on iOS loosing the data created with\n // createObjectURL(), see #3977 and #8081\n if (isIE || isIOSChrome) {\n PDFJS.disableCreateObjectURL = true;\n }\n})();\n\n// Checks if navigator.language is supported\n(function checkNavigatorLanguage() {\n if (typeof navigator === 'undefined') {\n return;\n }\n if ('language' in navigator) {\n return;\n }\n PDFJS.locale = navigator.userLanguage || 'en-US';\n})();\n\n// Support: Safari 6.0+, Android<3.0, Chrome 39/40, iOS\n(function checkRangeRequests() {\n // Safari has issues with cached range requests see:\n // https://github.com/mozilla/pdf.js/issues/3260\n // Last tested with version 6.0.4.\n\n // Older versions of Android (pre 3.0) has issues with range requests, see:\n // https://github.com/mozilla/pdf.js/issues/3381.\n // Make sure that we only match webkit-based Android browsers,\n // since Firefox/Fennec works as expected.\n\n // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318\n if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) {\n PDFJS.disableRange = true;\n PDFJS.disableStream = true;\n }\n})();\n\n// Check if the browser supports manipulation of the history.\n// Support: IE<10, Android<4.2\n(function checkHistoryManipulation() {\n if (!hasDOM) {\n return;\n }\n // Android 2.x has so buggy pushState support that it was removed in\n // Android 3.0 and restored as late as in Android 4.2.\n // Support: Android 2.x\n if (!history.pushState || isAndroidPre3) {\n PDFJS.disableHistory = true;\n }\n})();\n\n// Support: IE<11, Chrome<21, Android<4.4, Safari<6\n(function checkSetPresenceInImageData() {\n if (!hasDOM) {\n return;\n }\n // IE < 11 will use window.CanvasPixelArray which lacks set function.\n if (window.CanvasPixelArray) {\n if (typeof window.CanvasPixelArray.prototype.set !== 'function') {\n window.CanvasPixelArray.prototype.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n }\n } else {\n // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.\n // Because we cannot feature detect it, we rely on user agent parsing.\n var polyfill = false, versionMatch;\n if (isChrome) {\n versionMatch = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n // Chrome < 21 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[2]) < 21;\n } else if (isAndroid) {\n // Android < 4.4 lacks the set function.\n // Android >= 4.4 will contain Chrome in the user agent,\n // thus pass the Chrome check above and not reach this block.\n polyfill = isAndroidPre5;\n } else if (isSafari) {\n versionMatch = userAgent.\n match(/Version\\/([0-9]+)\\.([0-9]+)\\.([0-9]+) Safari\\//);\n // Safari < 6 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[1]) < 6;\n }\n\n if (polyfill) {\n var contextPrototype = window.CanvasRenderingContext2D.prototype;\n var createImageData = contextPrototype.createImageData;\n contextPrototype.createImageData = function(w, h) {\n var imageData = createImageData.call(this, w, h);\n imageData.data.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n return imageData;\n };\n // this closure will be kept referenced, so clear its vars\n contextPrototype = null;\n }\n }\n})();\n\n// Support: IE<10, Android<4.0, iOS\n(function checkRequestAnimationFrame() {\n function installFakeAnimationFrameFunctions() {\n window.requestAnimationFrame = function (callback) {\n return window.setTimeout(callback, 20);\n };\n window.cancelAnimationFrame = function (timeoutID) {\n window.clearTimeout(timeoutID);\n };\n }\n\n if (!hasDOM) {\n return;\n }\n if (isIOS) {\n // requestAnimationFrame on iOS is broken, replacing with fake one.\n installFakeAnimationFrameFunctions();\n return;\n }\n if ('requestAnimationFrame' in window) {\n return;\n }\n window.requestAnimationFrame = window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n if (window.requestAnimationFrame) {\n return;\n }\n installFakeAnimationFrameFunctions();\n})();\n\n// Support: Android, iOS\n(function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n // 5MP\n PDFJS.maxCanvasPixels = 5242880;\n }\n})();\n\n// Disable fullscreen support for certain problematic configurations.\n// Support: IE11+ (when embedded).\n(function checkFullscreenSupport() {\n if (!hasDOM) {\n return;\n }\n if (isIE && window.parent !== window) {\n PDFJS.disableFullscreen = true;\n }\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n if (!hasDOM) {\n return;\n }\n if ('currentScript' in document) {\n return;\n }\n Object.defineProperty(document, 'currentScript', {\n get() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides `input.type = 'type'` runtime failure protection.\n// Support: IE9,10.\n(function checkInputTypeNumberAssign() {\n if (!hasDOM) {\n return;\n }\n var el = document.createElement('input');\n try {\n el.type = 'number';\n } catch (ex) {\n var inputProto = el.constructor.prototype;\n var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type');\n Object.defineProperty(inputProto, 'type', {\n get() {\n return typeProperty.get.call(this);\n },\n set(value) {\n typeProperty.set.call(this, value === 'number' ? 'text' : value);\n },\n enumerable: true,\n configurable: true,\n });\n }\n})();\n\n// Provides correct document.readyState value for legacy browsers.\n// Support: IE9,10.\n(function checkDocumentReadyState() {\n if (!hasDOM) {\n return;\n }\n if (!document.attachEvent) {\n return;\n }\n var documentProto = document.constructor.prototype;\n var readyStateProto = Object.getOwnPropertyDescriptor(documentProto,\n 'readyState');\n Object.defineProperty(documentProto, 'readyState', {\n get() {\n var value = readyStateProto.get.call(this);\n return value === 'interactive' ? 'loading' : value;\n },\n set(value) {\n readyStateProto.set.call(this, value);\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== 'undefined') {\n return;\n }\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = function(value) {\n return typeof value === 'number' && isNaN(value);\n };\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE.\n(function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = function(value) {\n return typeof value === 'number' && isFinite(value) &&\n Math.floor(value) === value;\n };\n})();\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libraries are:\n * - There currently isn't a separate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function checkPromise() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) {\n resolve(value);\n });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch !== 'function') {\n globalScope.Promise.prototype.catch = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise,\n time: Date.now(),\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(() => {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n // Raising and catching the error, so debugger can break on it.\n try {\n throw new Error(msg);\n } catch (_) {\n console.warn(msg);\n }\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }, REJECTION_TIMEOUT);\n },\n };\n\n var Promise = function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n };\n\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} promises array of data and/or promises to wait for.\n * @return {Promise} New dependent promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve,\n onReject,\n nextPromise,\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n },\n };\n\n globalScope.Promise = Promise;\n})();\n\n(function checkWeakMap() {\n if (globalScope.WeakMap) {\n return;\n }\n\n var id = 0;\n function WeakMap() {\n this.id = '$weakmap' + (id++);\n }\n WeakMap.prototype = {\n has(obj) {\n if ((typeof obj !== 'object' && typeof obj !== 'function') ||\n obj === null) {\n return false;\n }\n return !!Object.getOwnPropertyDescriptor(obj, this.id);\n },\n get(obj) {\n return this.has(obj) ? obj[this.id] : undefined;\n },\n set(obj, value) {\n Object.defineProperty(obj, this.id, {\n value,\n enumerable: false,\n configurable: true,\n });\n },\n delete(obj) {\n delete obj[this.id];\n },\n };\n\n globalScope.WeakMap = WeakMap;\n})();\n\n// Polyfill from https://github.com/Polymer/URL\n/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n(function checkURLConstructor() {\n // feature detect for URL constructor\n var hasWorkingUrl = false;\n try {\n if (typeof URL === 'function' &&\n typeof URL.prototype === 'object' &&\n ('origin' in URL.prototype)) {\n var u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n hasWorkingUrl = u.href === 'http://a/c%20d';\n }\n } catch (e) { }\n\n if (hasWorkingUrl) {\n return;\n }\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if (h === '') {\n invalid.call(this);\n }\n // XXX\n return h.toLowerCase();\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF, ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message);\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (c === ':') {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if (this._scheme === 'file') {\n state = 'relative';\n } else if (this._isRelative && base &&\n base._scheme === this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (c === EOF) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c);\n break loop;\n }\n break;\n\n case 'scheme data':\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if (c === '/' && input[cursor + 1] === '/') {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if (this._scheme !== 'file') {\n this._scheme = base._scheme;\n }\n if (c === EOF) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n state = 'relative slash';\n } else if (c === '?') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if (c === '#') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor + 1];\n var nextNextC = input[cursor + 2];\n if (this._scheme !== 'file' || !ALPHA.test(c) ||\n (nextC !== ':' && nextC !== '|') ||\n (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n nextNextC !== '?' && nextNextC !== '#')) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n if (this._scheme === 'file') {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if (this._scheme !== 'file') {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if (c === '/') {\n state = 'authority second slash';\n } else {\n err('Expected \\'/\\', got: ' + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if (c !== '/') {\n err('Expected \\'/\\', got: ' + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if (c !== '/' && c !== '\\\\') {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if (c === '@') {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (cp === ':' && this._password === null) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n if (this._password !== null) {\n this._password += tempC;\n } else {\n this._username += tempC;\n }\n }\n buffer = '';\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#') {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n (buffer[1] === ':' || buffer[1] === '|')) {\n state = 'relative path';\n } else if (buffer.length === 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (c === ':' && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if (stateOverride === 'hostname') {\n break loop;\n }\n } else if (c === EOF || c === '/' ||\n c === '\\\\' || c === '?' || c === '#') {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n if (c === '[') {\n seenBracket = true;\n } else if (c === ']') {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#' || stateOverride) {\n if (buffer !== '') {\n var temp = parseInt(buffer, 10);\n if (temp !== relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if (c === '\\\\') {\n err('\\'\\\\\\' not allowed in path.');\n }\n state = 'relative path';\n if (c !== '/' && c !== '\\\\') {\n continue;\n }\n break;\n\n case 'relative path':\n if (c === EOF || c === '/' || c === '\\\\' ||\n (!stateOverride && (c === '?' || c === '#'))) {\n if (c === '\\\\') {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n buffer = tmp;\n }\n if (buffer === '..') {\n this._path.pop();\n if (c !== '/' && c !== '\\\\') {\n this._path.push('');\n }\n } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n this._path.push('');\n } else if (buffer !== '.') {\n if (this._scheme === 'file' && this._path.length === 0 &&\n buffer.length === 2 && ALPHA.test(buffer[0]) &&\n buffer[1] === '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n function JURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof JURL)) {\n base = new JURL(String(base));\n }\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n JURL.prototype = {\n toString() {\n return this.href;\n },\n get href() {\n if (this._isInvalid) {\n return this._url;\n }\n var authority = '';\n if (this._username !== '' || this._password !== null) {\n authority = this._username +\n (this._password !== null ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n // The named parameter should be different from the setter's function name.\n // Otherwise Safari 5 will throw an error (see issue 8541)\n set href(value) {\n clear.call(this);\n parse.call(this, value);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(value) {\n if (this._isInvalid) {\n return;\n }\n parse.call(this, value + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._path = [];\n parse.call(this, value, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || this._query === '?' ?\n '' : this._query;\n },\n set search(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._query = '?';\n if (value[0] === '?') {\n value = value.slice(1);\n }\n parse.call(this, value, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || this._fragment === '#' ?\n '' : this._fragment;\n },\n set hash(value) {\n if (this._isInvalid) {\n return;\n }\n this._fragment = '#';\n if (value[0] === '#') {\n value = value.slice(1);\n }\n parse.call(this, value, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n case 'blob':\n // Special case of blob: -- returns valid origin of _schemeData.\n try {\n return new JURL(this._schemeData).origin || 'null';\n } catch (_) {\n // Invalid _schemeData origin -- ignoring errors.\n }\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n },\n };\n\n // Copy over the static methods\n var OriginalURL = globalScope.URL;\n if (OriginalURL) {\n JURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument.\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n JURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n\n globalScope.URL = JURL;\n})();\n\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/compatibility.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n}\nif (isReadableStreamSupported) {\n exports.ReadableStream = ReadableStream;\n} else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n throw new Error('ReadableStream polyfill is not found for Chrome bundle');\n }\n exports.ReadableStream =\n require('../../external/streams/streams-lib').ReadableStream;\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/streams_polyfill.js"],"sourceRoot":""} \ No newline at end of file diff --git a/public/static/build/pdf.worker.js b/public/static/build/pdf.worker.js new file mode 100644 index 0000000..34737df --- /dev/null +++ b/public/static/build/pdf.worker.js @@ -0,0 +1,41661 @@ +/* Copyright 2017 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. + */ + +(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.worker", [], factory); + else if(typeof exports === 'object') + exports["pdfjs-dist/build/pdf.worker"] = factory(); + else + root["pdfjs-dist/build/pdf.worker"] = root.pdfjsDistBuildPdfWorker = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __w_pdfjs_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __w_pdfjs_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __w_pdfjs_require__.c = installedModules; +/******/ +/******/ // identity function for calling harmony imports with the correct context +/******/ __w_pdfjs_require__.i = function(value) { return value; }; +/******/ +/******/ // define getter function for harmony exports +/******/ __w_pdfjs_require__.d = function(exports, name, getter) { +/******/ if(!__w_pdfjs_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { +/******/ configurable: false, +/******/ enumerable: true, +/******/ get: getter +/******/ }); +/******/ } +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __w_pdfjs_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __w_pdfjs_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __w_pdfjs_require__.p = ""; +/******/ +/******/ // Load entry module and return exports +/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 35); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.loadJpegStream = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isNodeJS = exports.isSpace = exports.isString = exports.isNum = exports.isInt = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.isArray = exports.info = exports.globalScope = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.StatTimer = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VERBOSITY_LEVELS = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +__w_pdfjs_require__(36); + +var _streams_polyfill = __w_pdfjs_require__(37); + +var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : undefined; +var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0]; +var NativeImageDecoding = { + NONE: 'none', + DECODE: 'decode', + DISPLAY: 'display' +}; +var 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 +}; +var ImageKind = { + GRAYSCALE_1BPP: 1, + RGB_24BPP: 2, + RGBA_32BPP: 3 +}; +var 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 +}; +var AnnotationFlag = { + INVISIBLE: 0x01, + HIDDEN: 0x02, + PRINT: 0x04, + NOZOOM: 0x08, + NOROTATE: 0x10, + NOVIEW: 0x20, + READONLY: 0x40, + LOCKED: 0x80, + TOGGLENOVIEW: 0x100, + LOCKEDCONTENTS: 0x200 +}; +var 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 +}; +var AnnotationBorderStyleType = { + SOLID: 1, + DASHED: 2, + BEVELED: 3, + INSET: 4, + UNDERLINE: 5 +}; +var StreamType = { + UNKNOWN: 0, + FLATE: 1, + LZW: 2, + DCT: 3, + JPX: 4, + JBIG: 5, + A85: 6, + AHX: 7, + CCF: 8, + RL: 9 +}; +var FontType = { + UNKNOWN: 0, + TYPE1: 1, + TYPE1C: 2, + CIDFONTTYPE0: 3, + CIDFONTTYPE0C: 4, + TRUETYPE: 5, + CIDFONTTYPE2: 6, + TYPE3: 7, + OPENTYPE: 8, + TYPE0: 9, + MMTYPE1: 10 +}; +var VERBOSITY_LEVELS = { + errors: 0, + warnings: 1, + infos: 5 +}; +var CMapCompressionType = { + NONE: 0, + BINARY: 1, + STREAM: 2 +}; +var 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 +}; +var verbosity = VERBOSITY_LEVELS.warnings; +function setVerbosityLevel(level) { + verbosity = level; +} +function getVerbosityLevel() { + return verbosity; +} +function info(msg) { + if (verbosity >= VERBOSITY_LEVELS.infos) { + console.log('Info: ' + msg); + } +} +function warn(msg) { + if (verbosity >= VERBOSITY_LEVELS.warnings) { + console.log('Warning: ' + msg); + } +} +function deprecated(details) { + console.log('Deprecated API usage: ' + details); +} +function unreachable(msg) { + throw new Error(msg); +} +function assert(cond, msg) { + if (!cond) { + unreachable(msg); + } +} +var UNSUPPORTED_FEATURES = { + unknown: 'unknown', + forms: 'forms', + javaScript: 'javaScript', + smask: 'smask', + shadingPattern: 'shadingPattern', + font: 'font' +}; +function isSameOrigin(baseUrl, otherUrl) { + try { + var base = new URL(baseUrl); + if (!base.origin || base.origin === 'null') { + return false; + } + } catch (e) { + return false; + } + var 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) { + if (!url) { + return null; + } + try { + var 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: value, + enumerable: true, + configurable: true, + writable: false + }); + return value; +} +function getLookupTableFactory(initializer) { + var lookup; + return function () { + if (initializer) { + lookup = Object.create(null); + initializer(lookup); + initializer = null; + } + return lookup; + }; +} +var PasswordResponses = { + NEED_PASSWORD: 1, + INCORRECT_PASSWORD: 2 +}; +var PasswordException = function PasswordExceptionClosure() { + function PasswordException(msg, code) { + this.name = 'PasswordException'; + this.message = msg; + this.code = code; + } + PasswordException.prototype = new Error(); + PasswordException.constructor = PasswordException; + return PasswordException; +}(); +var UnknownErrorException = function UnknownErrorExceptionClosure() { + function UnknownErrorException(msg, details) { + this.name = 'UnknownErrorException'; + this.message = msg; + this.details = details; + } + UnknownErrorException.prototype = new Error(); + UnknownErrorException.constructor = UnknownErrorException; + return UnknownErrorException; +}(); +var InvalidPDFException = function InvalidPDFExceptionClosure() { + function InvalidPDFException(msg) { + this.name = 'InvalidPDFException'; + this.message = msg; + } + InvalidPDFException.prototype = new Error(); + InvalidPDFException.constructor = InvalidPDFException; + return InvalidPDFException; +}(); +var MissingPDFException = function MissingPDFExceptionClosure() { + function MissingPDFException(msg) { + this.name = 'MissingPDFException'; + this.message = msg; + } + MissingPDFException.prototype = new Error(); + MissingPDFException.constructor = MissingPDFException; + return MissingPDFException; +}(); +var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() { + function UnexpectedResponseException(msg, status) { + this.name = 'UnexpectedResponseException'; + this.message = msg; + this.status = status; + } + UnexpectedResponseException.prototype = new Error(); + UnexpectedResponseException.constructor = UnexpectedResponseException; + return UnexpectedResponseException; +}(); +var NotImplementedException = function NotImplementedExceptionClosure() { + function NotImplementedException(msg) { + this.message = msg; + } + NotImplementedException.prototype = new Error(); + NotImplementedException.prototype.name = 'NotImplementedException'; + NotImplementedException.constructor = NotImplementedException; + return NotImplementedException; +}(); +var MissingDataException = function MissingDataExceptionClosure() { + function MissingDataException(begin, end) { + this.begin = begin; + this.end = end; + this.message = 'Missing data [' + begin + ', ' + end + ')'; + } + MissingDataException.prototype = new Error(); + MissingDataException.prototype.name = 'MissingDataException'; + MissingDataException.constructor = MissingDataException; + return MissingDataException; +}(); +var XRefParseException = function XRefParseExceptionClosure() { + function XRefParseException(msg) { + this.message = msg; + } + XRefParseException.prototype = new Error(); + XRefParseException.prototype.name = 'XRefParseException'; + XRefParseException.constructor = XRefParseException; + return XRefParseException; +}(); +var FormatError = function FormatErrorClosure() { + function FormatError(msg) { + this.message = msg; + } + FormatError.prototype = new Error(); + FormatError.prototype.name = 'FormatError'; + FormatError.constructor = FormatError; + return FormatError; +}(); +var AbortException = function AbortExceptionClosure() { + function AbortException(msg) { + this.name = 'AbortException'; + this.message = msg; + } + AbortException.prototype = new Error(); + AbortException.constructor = AbortException; + return AbortException; +}(); +var NullCharactersRegExp = /\x00/g; +function removeNullCharacters(str) { + if (typeof str !== 'string') { + warn('The argument for removeNullCharacters must be a string.'); + return str; + } + return str.replace(NullCharactersRegExp, ''); +} +function bytesToString(bytes) { + assert(bytes !== null && (typeof bytes === 'undefined' ? 'undefined' : _typeof(bytes)) === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString'); + var length = bytes.length; + var MAX_ARGUMENT_COUNT = 8192; + if (length < MAX_ARGUMENT_COUNT) { + return String.fromCharCode.apply(null, bytes); + } + var strBuf = []; + for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) { + var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length); + var 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'); + var length = str.length; + var bytes = new Uint8Array(length); + for (var 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); + return arr.byteLength; +} +function arraysToBytes(arr) { + if (arr.length === 1 && arr[0] instanceof Uint8Array) { + return arr[0]; + } + var resultLength = 0; + var i, + ii = arr.length; + var item, itemLength; + for (i = 0; i < ii; i++) { + item = arr[i]; + itemLength = arrayByteLength(item); + resultLength += itemLength; + } + var pos = 0; + var data = new Uint8Array(resultLength); + for (i = 0; i < ii; i++) { + item = arr[i]; + if (!(item instanceof Uint8Array)) { + if (typeof item === 'string') { + item = stringToBytes(item); + } else { + item = new Uint8Array(item); + } + } + 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 log2(x) { + var n = 1, + i = 0; + while (x > n) { + n <<= 1; + i++; + } + return i; +} +function readInt8(data, start) { + return data[start] << 24 >> 24; +} +function readUint16(data, offset) { + return data[offset] << 8 | data[offset + 1]; +} +function readUint32(data, offset) { + return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0; +} +function isLittleEndian() { + var buffer8 = new Uint8Array(4); + buffer8[0] = 1; + var view32 = new Uint32Array(buffer8.buffer, 0, 1); + return view32[0] === 1; +} +function isEvalSupported() { + try { + new Function(''); + return true; + } catch (e) { + return false; + } +} +var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0]; +var Util = function UtilClosure() { + function Util() {} + var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')']; + Util.makeCssRgb = function Util_makeCssRgb(r, g, b) { + rgbBuf[1] = r; + rgbBuf[3] = g; + rgbBuf[5] = b; + return rgbBuf.join(''); + }; + Util.transform = function Util_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]]; + }; + Util.applyTransform = function Util_applyTransform(p, m) { + var xt = p[0] * m[0] + p[1] * m[2] + m[4]; + var yt = p[0] * m[1] + p[1] * m[3] + m[5]; + return [xt, yt]; + }; + Util.applyInverseTransform = function Util_applyInverseTransform(p, m) { + var d = m[0] * m[3] - m[1] * m[2]; + var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d; + var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d; + return [xt, yt]; + }; + Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) { + var p1 = Util.applyTransform(r, m); + var p2 = Util.applyTransform(r.slice(2, 4), m); + var p3 = Util.applyTransform([r[0], r[3]], m); + var 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])]; + }; + Util.inverseTransform = function Util_inverseTransform(m) { + var 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]; + }; + Util.apply3dTransform = function Util_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]]; + }; + Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) { + var transpose = [m[0], m[2], m[1], m[3]]; + var a = m[0] * transpose[0] + m[1] * transpose[2]; + var b = m[0] * transpose[1] + m[1] * transpose[3]; + var c = m[2] * transpose[0] + m[3] * transpose[2]; + var d = m[2] * transpose[1] + m[3] * transpose[3]; + var first = (a + d) / 2; + var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2; + var sx = first + second || 1; + var sy = first - second || 1; + return [Math.sqrt(sx), Math.sqrt(sy)]; + }; + Util.normalizeRect = function Util_normalizeRect(rect) { + var 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; + }; + Util.intersect = function Util_intersect(rect1, rect2) { + function compare(a, b) { + return a - b; + } + var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare), + orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare), + 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 false; + } + 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 false; + } + return result; + }; + Util.sign = function Util_sign(num) { + return num < 0 ? -1 : 1; + }; + var ROMAN_NUMBER_MAP = ['', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM', '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC', '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX']; + Util.toRoman = function Util_toRoman(number, lowerCase) { + assert(isInt(number) && number > 0, 'The number should be a positive integer.'); + var pos, + romanBuf = []; + while (number >= 1000) { + number -= 1000; + romanBuf.push('M'); + } + pos = number / 100 | 0; + number %= 100; + romanBuf.push(ROMAN_NUMBER_MAP[pos]); + pos = number / 10 | 0; + number %= 10; + romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]); + romanBuf.push(ROMAN_NUMBER_MAP[20 + number]); + var romanStr = romanBuf.join(''); + return lowerCase ? romanStr.toLowerCase() : romanStr; + }; + Util.appendToArray = function Util_appendToArray(arr1, arr2) { + Array.prototype.push.apply(arr1, arr2); + }; + Util.prependToArray = function Util_prependToArray(arr1, arr2) { + Array.prototype.unshift.apply(arr1, arr2); + }; + Util.extendObj = function extendObj(obj1, obj2) { + for (var key in obj2) { + obj1[key] = obj2[key]; + } + }; + Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) { + while (dict && !dict.has(name)) { + dict = dict.get('Parent'); + } + if (!dict) { + return null; + } + return getArray ? dict.getArray(name) : dict.get(name); + }; + Util.inherit = function Util_inherit(sub, base, prototype) { + sub.prototype = Object.create(base.prototype); + sub.prototype.constructor = sub; + for (var prop in prototype) { + sub.prototype[prop] = prototype[prop]; + } + }; + Util.loadScript = function Util_loadScript(src, callback) { + var script = document.createElement('script'); + var loaded = false; + script.setAttribute('src', src); + if (callback) { + script.onload = function () { + if (!loaded) { + callback(); + } + loaded = true; + }; + } + document.getElementsByTagName('head')[0].appendChild(script); + }; + return Util; +}(); +var PageViewport = function PageViewportClosure() { + function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) { + this.viewBox = viewBox; + this.scale = scale; + this.rotation = rotation; + this.offsetX = offsetX; + this.offsetY = offsetY; + var centerX = (viewBox[2] + viewBox[0]) / 2; + var centerY = (viewBox[3] + viewBox[1]) / 2; + var rotateA, rotateB, rotateC, rotateD; + rotation = rotation % 360; + rotation = rotation < 0 ? rotation + 360 : rotation; + 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; + default: + rotateA = 1; + rotateB = 0; + rotateC = 0; + rotateD = -1; + break; + } + if (dontFlip) { + rotateC = -rotateC; + rotateD = -rotateD; + } + var offsetCanvasX, offsetCanvasY; + var 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; + this.fontScale = scale; + } + PageViewport.prototype = { + clone: function PageViewPort_clone(args) { + args = args || {}; + var scale = 'scale' in args ? args.scale : this.scale; + var rotation = 'rotation' in args ? args.rotation : this.rotation; + return new PageViewport(this.viewBox.slice(), scale, rotation, this.offsetX, this.offsetY, args.dontFlip); + }, + convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) { + return Util.applyTransform([x, y], this.transform); + }, + convertToViewportRectangle: function PageViewport_convertToViewportRectangle(rect) { + var tl = Util.applyTransform([rect[0], rect[1]], this.transform); + var br = Util.applyTransform([rect[2], rect[3]], this.transform); + return [tl[0], tl[1], br[0], br[1]]; + }, + convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) { + return Util.applyInverseTransform([x, y], this.transform); + } + }; + return PageViewport; +}(); +var 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) { + var i, + n = str.length, + strBuf = []; + if (str[0] === '\xFE' && str[1] === '\xFF') { + for (i = 2; i < n; i += 2) { + strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1))); + } + } else { + for (i = 0; i < n; ++i) { + var code = PDFStringTranslateTable[str.charCodeAt(i)]; + strBuf.push(code ? String.fromCharCode(code) : str.charAt(i)); + } + } + return strBuf.join(''); +} +function stringToUTF8String(str) { + return decodeURIComponent(escape(str)); +} +function utf8StringToString(str) { + return unescape(encodeURIComponent(str)); +} +function isEmptyObj(obj) { + for (var key in obj) { + return false; + } + return true; +} +function isBool(v) { + return typeof v === 'boolean'; +} +function isInt(v) { + return typeof v === 'number' && (v | 0) === v; +} +function isNum(v) { + return typeof v === 'number'; +} +function isString(v) { + return typeof v === 'string'; +} +function isArray(v) { + return v instanceof Array; +} +function isArrayBuffer(v) { + return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.byteLength !== undefined; +} +function isSpace(ch) { + return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A; +} +function isNodeJS() { + return (typeof process === 'undefined' ? 'undefined' : _typeof(process)) === 'object' && process + '' === '[object process]'; +} +function createPromiseCapability() { + var capability = {}; + capability.promise = new Promise(function (resolve, reject) { + capability.resolve = resolve; + capability.reject = reject; + }); + return capability; +} +var StatTimer = function StatTimerClosure() { + function rpad(str, pad, length) { + while (str.length < length) { + str += pad; + } + return str; + } + function StatTimer() { + this.started = Object.create(null); + this.times = []; + this.enabled = true; + } + StatTimer.prototype = { + time: function StatTimer_time(name) { + if (!this.enabled) { + return; + } + if (name in this.started) { + warn('Timer is already running for ' + name); + } + this.started[name] = Date.now(); + }, + timeEnd: function StatTimer_timeEnd(name) { + if (!this.enabled) { + return; + } + if (!(name in this.started)) { + warn('Timer has not been started for ' + name); + } + this.times.push({ + 'name': name, + 'start': this.started[name], + 'end': Date.now() + }); + delete this.started[name]; + }, + toString: function StatTimer_toString() { + var i, ii; + var times = this.times; + var out = ''; + var longest = 0; + for (i = 0, ii = times.length; i < ii; ++i) { + var name = times[i]['name']; + if (name.length > longest) { + longest = name.length; + } + } + for (i = 0, ii = times.length; i < ii; ++i) { + var span = times[i]; + var duration = span.end - span.start; + out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n'; + } + return out; + } + }; + return StatTimer; +}(); +var createBlob = function createBlob(data, contentType) { + if (typeof Blob !== 'undefined') { + return new Blob([data], { type: contentType }); + } + throw new Error('The "Blob" constructor is not supported.'); +}; +var createObjectURL = function createObjectURLClosure() { + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + return function createObjectURL(data, contentType) { + var forceDataSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (!forceDataSchema && URL.createObjectURL) { + var blob = createBlob(data, contentType); + return URL.createObjectURL(blob); + } + var buffer = 'data:' + contentType + ';base64,'; + for (var i = 0, ii = data.length; i < ii; i += 3) { + var b1 = data[i] & 0xFF; + var b2 = data[i + 1] & 0xFF; + var b3 = data[i + 2] & 0xFF; + var d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64; + var d4 = i + 2 < ii ? b3 & 0x3F : 64; + buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4]; + } + return buffer; + }; +}(); +function resolveCall(fn, args) { + var thisArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; + + if (!fn) { + return Promise.resolve(undefined); + } + return new Promise(function (resolve, reject) { + resolve(fn.apply(thisArg, args)); + }); +} +function wrapReason(reason) { + if ((typeof reason === 'undefined' ? 'undefined' : _typeof(reason)) !== 'object') { + return reason; + } + switch (reason.name) { + case 'AbortException': + return new AbortException(reason.message); + case 'MissingPDFException': + return new MissingPDFException(reason.message); + case 'UnexpectedResponseException': + return new UnexpectedResponseException(reason.message, reason.status); + default: + return new UnknownErrorException(reason.message, reason.details); + } +} +function resolveOrReject(capability, success, reason) { + if (success) { + capability.resolve(); + } else { + capability.reject(reason); + } +} +function finalize(promise) { + return Promise.resolve(promise).catch(function () {}); +} +function MessageHandler(sourceName, targetName, comObj) { + var _this = this; + + this.sourceName = sourceName; + this.targetName = targetName; + this.comObj = comObj; + this.callbackId = 1; + this.streamId = 1; + this.postMessageTransfers = true; + this.streamSinks = Object.create(null); + this.streamControllers = Object.create(null); + var callbacksCapabilities = this.callbacksCapabilities = Object.create(null); + var ah = this.actionHandler = Object.create(null); + this._onComObjOnMessage = function (event) { + var data = event.data; + if (data.targetName !== _this.sourceName) { + return; + } + if (data.stream) { + _this._processStreamMessage(data); + } else if (data.isReply) { + var callbackId = data.callbackId; + if (data.callbackId in callbacksCapabilities) { + var callback = callbacksCapabilities[callbackId]; + delete callbacksCapabilities[callbackId]; + if ('error' in data) { + callback.reject(wrapReason(data.error)); + } else { + callback.resolve(data.data); + } + } else { + throw new Error('Cannot resolve callback ' + callbackId); + } + } else if (data.action in ah) { + var action = ah[data.action]; + if (data.callbackId) { + var _sourceName = _this.sourceName; + var _targetName = data.sourceName; + Promise.resolve().then(function () { + return action[0].call(action[1], data.data); + }).then(function (result) { + comObj.postMessage({ + sourceName: _sourceName, + targetName: _targetName, + isReply: true, + callbackId: data.callbackId, + data: result + }); + }, function (reason) { + if (reason instanceof Error) { + reason = reason + ''; + } + comObj.postMessage({ + sourceName: _sourceName, + targetName: _targetName, + isReply: true, + callbackId: data.callbackId, + error: reason + }); + }); + } else if (data.streamId) { + _this._createStreamSink(data); + } else { + action[0].call(action[1], data.data); + } + } else { + throw new Error('Unknown action from worker: ' + data.action); + } + }; + comObj.addEventListener('message', this._onComObjOnMessage); +} +MessageHandler.prototype = { + on: function on(actionName, handler, scope) { + var ah = this.actionHandler; + if (ah[actionName]) { + throw new Error('There is already an actionName called "' + actionName + '"'); + } + ah[actionName] = [handler, scope]; + }, + send: function send(actionName, data, transfers) { + var message = { + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data: data + }; + this.postMessage(message, transfers); + }, + sendWithPromise: function sendWithPromise(actionName, data, transfers) { + var callbackId = this.callbackId++; + var message = { + sourceName: this.sourceName, + targetName: this.targetName, + action: actionName, + data: data, + callbackId: callbackId + }; + var capability = createPromiseCapability(); + this.callbacksCapabilities[callbackId] = capability; + try { + this.postMessage(message, transfers); + } catch (e) { + capability.reject(e); + } + return capability.promise; + }, + sendWithStream: function sendWithStream(actionName, data, queueingStrategy, transfers) { + var _this2 = this; + + var streamId = this.streamId++; + var sourceName = this.sourceName; + var targetName = this.targetName; + return new _streams_polyfill.ReadableStream({ + start: function start(controller) { + var startCapability = createPromiseCapability(); + _this2.streamControllers[streamId] = { + controller: controller, + startCall: startCapability, + isClosed: false + }; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + action: actionName, + streamId: streamId, + data: data, + desiredSize: controller.desiredSize + }); + return startCapability.promise; + }, + pull: function pull(controller) { + var pullCapability = createPromiseCapability(); + _this2.streamControllers[streamId].pullCall = pullCapability; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: 'pull', + streamId: streamId, + desiredSize: controller.desiredSize + }); + return pullCapability.promise; + }, + cancel: function cancel(reason) { + var cancelCapability = createPromiseCapability(); + _this2.streamControllers[streamId].cancelCall = cancelCapability; + _this2.streamControllers[streamId].isClosed = true; + _this2.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: 'cancel', + reason: reason, + streamId: streamId + }); + return cancelCapability.promise; + } + }, queueingStrategy); + }, + _createStreamSink: function _createStreamSink(data) { + var _this3 = this; + + var self = this; + var action = this.actionHandler[data.action]; + var streamId = data.streamId; + var desiredSize = data.desiredSize; + var sourceName = this.sourceName; + var targetName = data.sourceName; + var capability = createPromiseCapability(); + var sendStreamRequest = function sendStreamRequest(_ref) { + var stream = _ref.stream, + chunk = _ref.chunk, + transfers = _ref.transfers, + success = _ref.success, + reason = _ref.reason; + + _this3.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: stream, + streamId: streamId, + chunk: chunk, + success: success, + reason: reason + }, transfers); + }; + var streamSink = { + enqueue: function enqueue(chunk) { + var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + var transfers = arguments[2]; + + if (this.isCancelled) { + return; + } + var lastDesiredSize = this.desiredSize; + this.desiredSize -= size; + if (lastDesiredSize > 0 && this.desiredSize <= 0) { + this.sinkCapability = createPromiseCapability(); + this.ready = this.sinkCapability.promise; + } + sendStreamRequest({ + stream: 'enqueue', + chunk: chunk, + transfers: transfers + }); + }, + close: function close() { + if (this.isCancelled) { + return; + } + sendStreamRequest({ stream: 'close' }); + delete self.streamSinks[streamId]; + }, + error: function error(reason) { + if (this.isCancelled) { + return; + } + this.isCancelled = true; + sendStreamRequest({ + stream: 'error', + reason: reason + }); + }, + + sinkCapability: capability, + onPull: null, + onCancel: null, + isCancelled: false, + desiredSize: desiredSize, + ready: null + }; + streamSink.sinkCapability.resolve(); + streamSink.ready = streamSink.sinkCapability.promise; + this.streamSinks[streamId] = streamSink; + resolveCall(action[0], [data.data, streamSink], action[1]).then(function () { + sendStreamRequest({ + stream: 'start_complete', + success: true + }); + }, function (reason) { + sendStreamRequest({ + stream: 'start_complete', + success: false, + reason: reason + }); + }); + }, + _processStreamMessage: function _processStreamMessage(data) { + var _this4 = this; + + var sourceName = this.sourceName; + var targetName = data.sourceName; + var streamId = data.streamId; + var sendStreamResponse = function sendStreamResponse(_ref2) { + var stream = _ref2.stream, + success = _ref2.success, + reason = _ref2.reason; + + _this4.comObj.postMessage({ + sourceName: sourceName, + targetName: targetName, + stream: stream, + success: success, + streamId: streamId, + reason: reason + }); + }; + var deleteStreamController = function deleteStreamController() { + Promise.all([_this4.streamControllers[data.streamId].startCall, _this4.streamControllers[data.streamId].pullCall, _this4.streamControllers[data.streamId].cancelCall].map(function (capability) { + return capability && finalize(capability.promise); + })).then(function () { + delete _this4.streamControllers[data.streamId]; + }); + }; + switch (data.stream) { + case 'start_complete': + resolveOrReject(this.streamControllers[data.streamId].startCall, data.success, wrapReason(data.reason)); + break; + case 'pull_complete': + resolveOrReject(this.streamControllers[data.streamId].pullCall, data.success, wrapReason(data.reason)); + break; + case 'pull': + if (!this.streamSinks[data.streamId]) { + sendStreamResponse({ + stream: 'pull_complete', + success: true + }); + break; + } + if (this.streamSinks[data.streamId].desiredSize <= 0 && data.desiredSize > 0) { + this.streamSinks[data.streamId].sinkCapability.resolve(); + } + this.streamSinks[data.streamId].desiredSize = data.desiredSize; + resolveCall(this.streamSinks[data.streamId].onPull).then(function () { + sendStreamResponse({ + stream: 'pull_complete', + success: true + }); + }, function (reason) { + sendStreamResponse({ + stream: 'pull_complete', + success: false, + reason: reason + }); + }); + break; + case 'enqueue': + assert(this.streamControllers[data.streamId], 'enqueue should have stream controller'); + if (!this.streamControllers[data.streamId].isClosed) { + this.streamControllers[data.streamId].controller.enqueue(data.chunk); + } + break; + case 'close': + assert(this.streamControllers[data.streamId], 'close should have stream controller'); + if (this.streamControllers[data.streamId].isClosed) { + break; + } + this.streamControllers[data.streamId].isClosed = true; + this.streamControllers[data.streamId].controller.close(); + deleteStreamController(); + break; + case 'error': + assert(this.streamControllers[data.streamId], 'error should have stream controller'); + this.streamControllers[data.streamId].controller.error(wrapReason(data.reason)); + deleteStreamController(); + break; + case 'cancel_complete': + resolveOrReject(this.streamControllers[data.streamId].cancelCall, data.success, wrapReason(data.reason)); + deleteStreamController(); + break; + case 'cancel': + if (!this.streamSinks[data.streamId]) { + break; + } + resolveCall(this.streamSinks[data.streamId].onCancel, [wrapReason(data.reason)]).then(function () { + sendStreamResponse({ + stream: 'cancel_complete', + success: true + }); + }, function (reason) { + sendStreamResponse({ + stream: 'cancel_complete', + success: false, + reason: reason + }); + }); + this.streamSinks[data.streamId].sinkCapability.reject(wrapReason(data.reason)); + this.streamSinks[data.streamId].isCancelled = true; + delete this.streamSinks[data.streamId]; + break; + default: + throw new Error('Unexpected stream case'); + } + }, + postMessage: function postMessage(message, transfers) { + if (transfers && this.postMessageTransfers) { + this.comObj.postMessage(message, transfers); + } else { + this.comObj.postMessage(message); + } + }, + destroy: function destroy() { + this.comObj.removeEventListener('message', this._onComObjOnMessage); + } +}; +function loadJpegStream(id, imageUrl, objs) { + var img = new Image(); + img.onload = function loadJpegStream_onloadClosure() { + objs.resolve(id, img); + }; + img.onerror = function loadJpegStream_onerrorClosure() { + objs.resolve(id, null); + warn('Error during JPEG image loading'); + }; + img.src = imageUrl; +} +exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX; +exports.IDENTITY_MATRIX = IDENTITY_MATRIX; +exports.OPS = OPS; +exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS; +exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; +exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +exports.AnnotationFieldFlag = AnnotationFieldFlag; +exports.AnnotationFlag = AnnotationFlag; +exports.AnnotationType = AnnotationType; +exports.FontType = FontType; +exports.ImageKind = ImageKind; +exports.CMapCompressionType = CMapCompressionType; +exports.AbortException = AbortException; +exports.InvalidPDFException = InvalidPDFException; +exports.MessageHandler = MessageHandler; +exports.MissingDataException = MissingDataException; +exports.MissingPDFException = MissingPDFException; +exports.NativeImageDecoding = NativeImageDecoding; +exports.NotImplementedException = NotImplementedException; +exports.PageViewport = PageViewport; +exports.PasswordException = PasswordException; +exports.PasswordResponses = PasswordResponses; +exports.StatTimer = StatTimer; +exports.StreamType = StreamType; +exports.TextRenderingMode = TextRenderingMode; +exports.UnexpectedResponseException = UnexpectedResponseException; +exports.UnknownErrorException = UnknownErrorException; +exports.Util = Util; +exports.XRefParseException = XRefParseException; +exports.FormatError = FormatError; +exports.arrayByteLength = arrayByteLength; +exports.arraysToBytes = arraysToBytes; +exports.assert = assert; +exports.bytesToString = bytesToString; +exports.createBlob = createBlob; +exports.createPromiseCapability = createPromiseCapability; +exports.createObjectURL = createObjectURL; +exports.deprecated = deprecated; +exports.getLookupTableFactory = getLookupTableFactory; +exports.getVerbosityLevel = getVerbosityLevel; +exports.globalScope = globalScope; +exports.info = info; +exports.isArray = isArray; +exports.isArrayBuffer = isArrayBuffer; +exports.isBool = isBool; +exports.isEmptyObj = isEmptyObj; +exports.isInt = isInt; +exports.isNum = isNum; +exports.isString = isString; +exports.isSpace = isSpace; +exports.isNodeJS = isNodeJS; +exports.isSameOrigin = isSameOrigin; +exports.createValidAbsoluteUrl = createValidAbsoluteUrl; +exports.isLittleEndian = isLittleEndian; +exports.isEvalSupported = isEvalSupported; +exports.loadJpegStream = loadJpegStream; +exports.log2 = log2; +exports.readInt8 = readInt8; +exports.readUint16 = readUint16; +exports.readUint32 = readUint32; +exports.removeNullCharacters = removeNullCharacters; +exports.ReadableStream = _streams_polyfill.ReadableStream; +exports.setVerbosityLevel = setVerbosityLevel; +exports.shadow = shadow; +exports.string32 = string32; +exports.stringToBytes = stringToBytes; +exports.stringToPDFString = stringToPDFString; +exports.stringToUTF8String = stringToUTF8String; +exports.utf8StringToString = utf8StringToString; +exports.warn = warn; +exports.unreachable = unreachable; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.isStream = exports.isRefsEqual = exports.isRef = exports.isName = exports.isDict = exports.isCmd = exports.isEOF = exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.Dict = exports.Cmd = exports.EOF = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var EOF = {}; +var Name = function NameClosure() { + function Name(name) { + this.name = name; + } + Name.prototype = {}; + var nameCache = Object.create(null); + Name.get = function Name_get(name) { + var nameValue = nameCache[name]; + return nameValue ? nameValue : nameCache[name] = new Name(name); + }; + return Name; +}(); +var Cmd = function CmdClosure() { + function Cmd(cmd) { + this.cmd = cmd; + } + Cmd.prototype = {}; + var cmdCache = Object.create(null); + Cmd.get = function Cmd_get(cmd) { + var cmdValue = cmdCache[cmd]; + return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd); + }; + return Cmd; +}(); +var Dict = function DictClosure() { + var nonSerializable = function nonSerializableClosure() { + return nonSerializable; + }; + function Dict(xref) { + this._map = Object.create(null); + this.xref = xref; + this.objId = null; + this.suppressEncryption = false; + this.__nonSerializable__ = nonSerializable; + } + Dict.prototype = { + assignXref: function Dict_assignXref(newXref) { + this.xref = newXref; + }, + get: function Dict_get(key1, key2, key3) { + var value; + var xref = this.xref, + suppressEncryption = this.suppressEncryption; + if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') { + return xref ? xref.fetchIfRef(value, suppressEncryption) : value; + } + if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') { + return xref ? xref.fetchIfRef(value, suppressEncryption) : value; + } + value = this._map[key3] || null; + return xref ? xref.fetchIfRef(value, suppressEncryption) : value; + }, + getAsync: function Dict_getAsync(key1, key2, key3) { + var value; + var xref = this.xref, + suppressEncryption = this.suppressEncryption; + if (typeof (value = this._map[key1]) !== 'undefined' || key1 in this._map || typeof key2 === 'undefined') { + if (xref) { + return xref.fetchIfRefAsync(value, suppressEncryption); + } + return Promise.resolve(value); + } + if (typeof (value = this._map[key2]) !== 'undefined' || key2 in this._map || typeof key3 === 'undefined') { + if (xref) { + return xref.fetchIfRefAsync(value, suppressEncryption); + } + return Promise.resolve(value); + } + value = this._map[key3] || null; + if (xref) { + return xref.fetchIfRefAsync(value, suppressEncryption); + } + return Promise.resolve(value); + }, + getArray: function Dict_getArray(key1, key2, key3) { + var value = this.get(key1, key2, key3); + var xref = this.xref, + suppressEncryption = this.suppressEncryption; + if (!(0, _util.isArray)(value) || !xref) { + return value; + } + value = value.slice(); + for (var i = 0, ii = value.length; i < ii; i++) { + if (!isRef(value[i])) { + continue; + } + value[i] = xref.fetch(value[i], suppressEncryption); + } + return value; + }, + getRaw: function Dict_getRaw(key) { + return this._map[key]; + }, + getKeys: function Dict_getKeys() { + return Object.keys(this._map); + }, + set: function Dict_set(key, value) { + this._map[key] = value; + }, + has: function Dict_has(key) { + return key in this._map; + }, + forEach: function Dict_forEach(callback) { + for (var key in this._map) { + callback(key, this.get(key)); + } + } + }; + Dict.empty = new Dict(null); + Dict.merge = function (xref, dictArray) { + var mergedDict = new Dict(xref); + for (var i = 0, ii = dictArray.length; i < ii; i++) { + var dict = dictArray[i]; + if (!isDict(dict)) { + continue; + } + for (var keyName in dict._map) { + if (mergedDict._map[keyName] !== undefined) { + continue; + } + mergedDict._map[keyName] = dict._map[keyName]; + } + } + return mergedDict; + }; + return Dict; +}(); +var Ref = function RefClosure() { + function Ref(num, gen) { + this.num = num; + this.gen = gen; + } + Ref.prototype = { + toString: function Ref_toString() { + var str = this.num + 'R'; + if (this.gen !== 0) { + str += this.gen; + } + return str; + } + }; + return Ref; +}(); +var RefSet = function RefSetClosure() { + function RefSet() { + this.dict = Object.create(null); + } + RefSet.prototype = { + has: function RefSet_has(ref) { + return ref.toString() in this.dict; + }, + put: function RefSet_put(ref) { + this.dict[ref.toString()] = true; + }, + remove: function RefSet_remove(ref) { + delete this.dict[ref.toString()]; + } + }; + return RefSet; +}(); +var RefSetCache = function RefSetCacheClosure() { + function RefSetCache() { + this.dict = Object.create(null); + } + RefSetCache.prototype = { + get: function RefSetCache_get(ref) { + return this.dict[ref.toString()]; + }, + has: function RefSetCache_has(ref) { + return ref.toString() in this.dict; + }, + put: function RefSetCache_put(ref, obj) { + this.dict[ref.toString()] = obj; + }, + putAlias: function RefSetCache_putAlias(ref, aliasRef) { + this.dict[ref.toString()] = this.get(aliasRef); + }, + forEach: function RefSetCache_forEach(fn, thisArg) { + for (var i in this.dict) { + fn.call(thisArg, this.dict[i]); + } + }, + clear: function RefSetCache_clear() { + this.dict = Object.create(null); + } + }; + return RefSetCache; +}(); +function isEOF(v) { + return v === EOF; +} +function isName(v, name) { + return v instanceof Name && (name === undefined || v.name === name); +} +function isCmd(v, cmd) { + return v instanceof Cmd && (cmd === undefined || v.cmd === cmd); +} +function isDict(v, type) { + return v instanceof Dict && (type === undefined || isName(v.get('Type'), type)); +} +function isRef(v) { + return v instanceof Ref; +} +function isRefsEqual(v1, v2) { + return v1.num === v2.num && v1.gen === v2.gen; +} +function isStream(v) { + return (typeof v === 'undefined' ? 'undefined' : _typeof(v)) === 'object' && v !== null && v.getBytes !== undefined; +} +exports.EOF = EOF; +exports.Cmd = Cmd; +exports.Dict = Dict; +exports.Name = Name; +exports.Ref = Ref; +exports.RefSet = RefSet; +exports.RefSetCache = RefSetCache; +exports.isEOF = isEOF; +exports.isCmd = isCmd; +exports.isDict = isDict; +exports.isName = isName; +exports.isRef = isRef; +exports.isRefsEqual = isRefsEqual; +exports.isStream = isStream; + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.JpxStream = exports.JpegStream = exports.Jbig2Stream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.CCITTFaxStream = exports.AsciiHexStream = exports.Ascii85Stream = undefined; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _jbig = __w_pdfjs_require__(27); + +var _jpg = __w_pdfjs_require__(28); + +var _jpx = __w_pdfjs_require__(14); + +var Stream = function StreamClosure() { + function Stream(arrayBuffer, start, length, dict) { + this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer); + this.start = start || 0; + this.pos = this.start; + this.end = start + length || this.bytes.length; + this.dict = dict; + } + Stream.prototype = { + get length() { + return this.end - this.start; + }, + get isEmpty() { + return this.length === 0; + }, + getByte: function Stream_getByte() { + if (this.pos >= this.end) { + return -1; + } + return this.bytes[this.pos++]; + }, + getUint16: function Stream_getUint16() { + var b0 = this.getByte(); + var b1 = this.getByte(); + if (b0 === -1 || b1 === -1) { + return -1; + } + return (b0 << 8) + b1; + }, + getInt32: function Stream_getInt32() { + var b0 = this.getByte(); + var b1 = this.getByte(); + var b2 = this.getByte(); + var b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + }, + getBytes: function Stream_getBytes(length) { + var bytes = this.bytes; + var pos = this.pos; + var strEnd = this.end; + if (!length) { + return bytes.subarray(pos, strEnd); + } + var end = pos + length; + if (end > strEnd) { + end = strEnd; + } + this.pos = end; + return bytes.subarray(pos, end); + }, + peekByte: function Stream_peekByte() { + var peekedByte = this.getByte(); + this.pos--; + return peekedByte; + }, + peekBytes: function Stream_peekBytes(length) { + var bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + }, + skip: function Stream_skip(n) { + if (!n) { + n = 1; + } + this.pos += n; + }, + reset: function Stream_reset() { + this.pos = this.start; + }, + moveStart: function Stream_moveStart() { + this.start = this.pos; + }, + makeSubStream: function Stream_makeSubStream(start, length, dict) { + return new Stream(this.bytes.buffer, start, length, dict); + } + }; + return Stream; +}(); +var StringStream = function StringStreamClosure() { + function StringStream(str) { + var length = str.length; + var bytes = new Uint8Array(length); + for (var n = 0; n < length; ++n) { + bytes[n] = str.charCodeAt(n); + } + Stream.call(this, bytes); + } + StringStream.prototype = Stream.prototype; + return StringStream; +}(); +var DecodeStream = function DecodeStreamClosure() { + var emptyBuffer = new Uint8Array(0); + function DecodeStream(maybeMinBufferLength) { + this.pos = 0; + this.bufferLength = 0; + this.eof = false; + this.buffer = emptyBuffer; + this.minBufferLength = 512; + if (maybeMinBufferLength) { + while (this.minBufferLength < maybeMinBufferLength) { + this.minBufferLength *= 2; + } + } + } + DecodeStream.prototype = { + get isEmpty() { + while (!this.eof && this.bufferLength === 0) { + this.readBlock(); + } + return this.bufferLength === 0; + }, + ensureBuffer: function DecodeStream_ensureBuffer(requested) { + var buffer = this.buffer; + if (requested <= buffer.byteLength) { + return buffer; + } + var size = this.minBufferLength; + while (size < requested) { + size *= 2; + } + var buffer2 = new Uint8Array(size); + buffer2.set(buffer); + return this.buffer = buffer2; + }, + getByte: function DecodeStream_getByte() { + var pos = this.pos; + while (this.bufferLength <= pos) { + if (this.eof) { + return -1; + } + this.readBlock(); + } + return this.buffer[this.pos++]; + }, + getUint16: function DecodeStream_getUint16() { + var b0 = this.getByte(); + var b1 = this.getByte(); + if (b0 === -1 || b1 === -1) { + return -1; + } + return (b0 << 8) + b1; + }, + getInt32: function DecodeStream_getInt32() { + var b0 = this.getByte(); + var b1 = this.getByte(); + var b2 = this.getByte(); + var b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + }, + getBytes: function DecodeStream_getBytes(length) { + var end, + pos = this.pos; + if (length) { + this.ensureBuffer(pos + length); + end = pos + length; + while (!this.eof && this.bufferLength < end) { + this.readBlock(); + } + var bufEnd = this.bufferLength; + if (end > bufEnd) { + end = bufEnd; + } + } else { + while (!this.eof) { + this.readBlock(); + } + end = this.bufferLength; + } + this.pos = end; + return this.buffer.subarray(pos, end); + }, + peekByte: function DecodeStream_peekByte() { + var peekedByte = this.getByte(); + this.pos--; + return peekedByte; + }, + peekBytes: function DecodeStream_peekBytes(length) { + var bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + }, + makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { + var end = start + length; + while (this.bufferLength <= end && !this.eof) { + this.readBlock(); + } + return new Stream(this.buffer, start, length, dict); + }, + skip: function DecodeStream_skip(n) { + if (!n) { + n = 1; + } + this.pos += n; + }, + reset: function DecodeStream_reset() { + this.pos = 0; + }, + getBaseStreams: function DecodeStream_getBaseStreams() { + if (this.str && this.str.getBaseStreams) { + return this.str.getBaseStreams(); + } + return []; + } + }; + return DecodeStream; +}(); +var StreamsSequenceStream = function StreamsSequenceStreamClosure() { + function StreamsSequenceStream(streams) { + this.streams = streams; + DecodeStream.call(this, null); + } + StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); + StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() { + var streams = this.streams; + if (streams.length === 0) { + this.eof = true; + return; + } + var stream = streams.shift(); + var chunk = stream.getBytes(); + var bufferLength = this.bufferLength; + var newLength = bufferLength + chunk.length; + var buffer = this.ensureBuffer(newLength); + buffer.set(chunk, bufferLength); + this.bufferLength = newLength; + }; + StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() { + var baseStreams = []; + for (var i = 0, ii = this.streams.length; i < ii; i++) { + var stream = this.streams[i]; + if (stream.getBaseStreams) { + _util.Util.appendToArray(baseStreams, stream.getBaseStreams()); + } + } + return baseStreams; + }; + return StreamsSequenceStream; +}(); +var FlateStream = function FlateStreamClosure() { + var codeLenCodeMap = new Int32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]); + var lengthDecode = new Int32Array([0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102]); + var distDecode = new Int32Array([0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d, 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1, 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01, 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001]); + var fixedLitCodeTab = [new Int32Array([0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0, 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0, 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0, 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8, 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8, 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8, 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4, 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4, 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4, 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc, 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec, 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc, 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2, 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2, 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2, 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca, 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea, 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da, 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6, 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6, 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6, 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce, 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee, 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de, 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe, 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1, 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1, 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1, 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1, 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9, 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9, 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9, 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9, 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5, 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5, 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5, 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5, 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd, 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed, 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd, 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd, 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3, 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3, 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3, 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3, 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb, 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb, 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db, 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb, 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7, 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7, 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7, 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7, 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf, 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef, 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df, 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff]), 9]; + var fixedDistCodeTab = [new Int32Array([0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c, 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000, 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d, 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000]), 5]; + function FlateStream(str, maybeLength) { + this.str = str; + this.dict = str.dict; + var cmf = str.getByte(); + var flg = str.getByte(); + if (cmf === -1 || flg === -1) { + throw new _util.FormatError('Invalid header in flate stream: ' + cmf + ', ' + flg); + } + if ((cmf & 0x0f) !== 0x08) { + throw new _util.FormatError('Unknown compression method in flate stream: ' + cmf + ', ' + flg); + } + if (((cmf << 8) + flg) % 31 !== 0) { + throw new _util.FormatError('Bad FCHECK in flate stream: ' + cmf + ', ' + flg); + } + if (flg & 0x20) { + throw new _util.FormatError('FDICT bit set in flate stream: ' + cmf + ', ' + flg); + } + this.codeSize = 0; + this.codeBuf = 0; + DecodeStream.call(this, maybeLength); + } + FlateStream.prototype = Object.create(DecodeStream.prototype); + FlateStream.prototype.getBits = function FlateStream_getBits(bits) { + var str = this.str; + var codeSize = this.codeSize; + var codeBuf = this.codeBuf; + var b; + while (codeSize < bits) { + if ((b = str.getByte()) === -1) { + throw new _util.FormatError('Bad encoding in flate stream'); + } + codeBuf |= b << codeSize; + codeSize += 8; + } + b = codeBuf & (1 << bits) - 1; + this.codeBuf = codeBuf >> bits; + this.codeSize = codeSize -= bits; + return b; + }; + FlateStream.prototype.getCode = function FlateStream_getCode(table) { + var str = this.str; + var codes = table[0]; + var maxLen = table[1]; + var codeSize = this.codeSize; + var codeBuf = this.codeBuf; + var b; + while (codeSize < maxLen) { + if ((b = str.getByte()) === -1) { + break; + } + codeBuf |= b << codeSize; + codeSize += 8; + } + var code = codes[codeBuf & (1 << maxLen) - 1]; + var codeLen = code >> 16; + var codeVal = code & 0xffff; + if (codeLen < 1 || codeSize < codeLen) { + throw new _util.FormatError('Bad encoding in flate stream'); + } + this.codeBuf = codeBuf >> codeLen; + this.codeSize = codeSize - codeLen; + return codeVal; + }; + FlateStream.prototype.generateHuffmanTable = function flateStreamGenerateHuffmanTable(lengths) { + var n = lengths.length; + var maxLen = 0; + var i; + for (i = 0; i < n; ++i) { + if (lengths[i] > maxLen) { + maxLen = lengths[i]; + } + } + var size = 1 << maxLen; + var codes = new Int32Array(size); + for (var len = 1, code = 0, skip = 2; len <= maxLen; ++len, code <<= 1, skip <<= 1) { + for (var val = 0; val < n; ++val) { + if (lengths[val] === len) { + var code2 = 0; + var t = code; + for (i = 0; i < len; ++i) { + code2 = code2 << 1 | t & 1; + t >>= 1; + } + for (i = code2; i < size; i += skip) { + codes[i] = len << 16 | val; + } + ++code; + } + } + } + return [codes, maxLen]; + }; + FlateStream.prototype.readBlock = function FlateStream_readBlock() { + var buffer, len; + var str = this.str; + var hdr = this.getBits(3); + if (hdr & 1) { + this.eof = true; + } + hdr >>= 1; + if (hdr === 0) { + var b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError('Bad block header in flate stream'); + } + var blockLen = b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError('Bad block header in flate stream'); + } + blockLen |= b << 8; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError('Bad block header in flate stream'); + } + var check = b; + if ((b = str.getByte()) === -1) { + throw new _util.FormatError('Bad block header in flate stream'); + } + check |= b << 8; + if (check !== (~blockLen & 0xffff) && (blockLen !== 0 || check !== 0)) { + throw new _util.FormatError('Bad uncompressed block length in flate stream'); + } + this.codeBuf = 0; + this.codeSize = 0; + var bufferLength = this.bufferLength; + buffer = this.ensureBuffer(bufferLength + blockLen); + var end = bufferLength + blockLen; + this.bufferLength = end; + if (blockLen === 0) { + if (str.peekByte() === -1) { + this.eof = true; + } + } else { + for (var n = bufferLength; n < end; ++n) { + if ((b = str.getByte()) === -1) { + this.eof = true; + break; + } + buffer[n] = b; + } + } + return; + } + var litCodeTable; + var distCodeTable; + if (hdr === 1) { + litCodeTable = fixedLitCodeTab; + distCodeTable = fixedDistCodeTab; + } else if (hdr === 2) { + var numLitCodes = this.getBits(5) + 257; + var numDistCodes = this.getBits(5) + 1; + var numCodeLenCodes = this.getBits(4) + 4; + var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length); + var i; + for (i = 0; i < numCodeLenCodes; ++i) { + codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3); + } + var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths); + len = 0; + i = 0; + var codes = numLitCodes + numDistCodes; + var codeLengths = new Uint8Array(codes); + var bitsLength, bitsOffset, what; + while (i < codes) { + var code = this.getCode(codeLenCodeTab); + if (code === 16) { + bitsLength = 2; + bitsOffset = 3; + what = len; + } else if (code === 17) { + bitsLength = 3; + bitsOffset = 3; + what = len = 0; + } else if (code === 18) { + bitsLength = 7; + bitsOffset = 11; + what = len = 0; + } else { + codeLengths[i++] = len = code; + continue; + } + var repeatLength = this.getBits(bitsLength) + bitsOffset; + while (repeatLength-- > 0) { + codeLengths[i++] = what; + } + } + litCodeTable = this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes)); + distCodeTable = this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes)); + } else { + throw new _util.FormatError('Unknown block type in flate stream'); + } + buffer = this.buffer; + var limit = buffer ? buffer.length : 0; + var pos = this.bufferLength; + while (true) { + var code1 = this.getCode(litCodeTable); + if (code1 < 256) { + if (pos + 1 >= limit) { + buffer = this.ensureBuffer(pos + 1); + limit = buffer.length; + } + buffer[pos++] = code1; + continue; + } + if (code1 === 256) { + this.bufferLength = pos; + return; + } + code1 -= 257; + code1 = lengthDecode[code1]; + var code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + len = (code1 & 0xffff) + code2; + code1 = this.getCode(distCodeTable); + code1 = distDecode[code1]; + code2 = code1 >> 16; + if (code2 > 0) { + code2 = this.getBits(code2); + } + var dist = (code1 & 0xffff) + code2; + if (pos + len >= limit) { + buffer = this.ensureBuffer(pos + len); + limit = buffer.length; + } + for (var k = 0; k < len; ++k, ++pos) { + buffer[pos] = buffer[pos - dist]; + } + } + }; + return FlateStream; +}(); +var PredictorStream = function PredictorStreamClosure() { + function PredictorStream(str, maybeLength, params) { + if (!(0, _primitives.isDict)(params)) { + return str; + } + var predictor = this.predictor = params.get('Predictor') || 1; + if (predictor <= 1) { + return str; + } + if (predictor !== 2 && (predictor < 10 || predictor > 15)) { + throw new _util.FormatError('Unsupported predictor: ' + predictor); + } + if (predictor === 2) { + this.readBlock = this.readBlockTiff; + } else { + this.readBlock = this.readBlockPng; + } + this.str = str; + this.dict = str.dict; + var colors = this.colors = params.get('Colors') || 1; + var bits = this.bits = params.get('BitsPerComponent') || 8; + var columns = this.columns = params.get('Columns') || 1; + this.pixBytes = colors * bits + 7 >> 3; + this.rowBytes = columns * colors * bits + 7 >> 3; + DecodeStream.call(this, maybeLength); + return this; + } + PredictorStream.prototype = Object.create(DecodeStream.prototype); + PredictorStream.prototype.readBlockTiff = function predictorStreamReadBlockTiff() { + var rowBytes = this.rowBytes; + var bufferLength = this.bufferLength; + var buffer = this.ensureBuffer(bufferLength + rowBytes); + var bits = this.bits; + var colors = this.colors; + var rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + var inbuf = 0, + outbuf = 0; + var inbits = 0, + outbits = 0; + var pos = bufferLength; + var i; + if (bits === 1 && colors === 1) { + for (i = 0; i < rowBytes; ++i) { + var c = rawBytes[i] ^ inbuf; + c ^= c >> 1; + c ^= c >> 2; + c ^= c >> 4; + inbuf = (c & 1) << 7; + buffer[pos++] = c; + } + } else if (bits === 8) { + for (i = 0; i < colors; ++i) { + buffer[pos++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[pos] = buffer[pos - colors] + rawBytes[i]; + pos++; + } + } else { + var compArray = new Uint8Array(colors + 1); + var bitMask = (1 << bits) - 1; + var j = 0, + k = bufferLength; + var columns = this.columns; + for (i = 0; i < columns; ++i) { + for (var kk = 0; kk < colors; ++kk) { + if (inbits < bits) { + inbuf = inbuf << 8 | rawBytes[j++] & 0xFF; + inbits += 8; + } + compArray[kk] = compArray[kk] + (inbuf >> inbits - bits) & bitMask; + inbits -= bits; + outbuf = outbuf << bits | compArray[kk]; + outbits += bits; + if (outbits >= 8) { + buffer[k++] = outbuf >> outbits - 8 & 0xFF; + outbits -= 8; + } + } + } + if (outbits > 0) { + buffer[k++] = (outbuf << 8 - outbits) + (inbuf & (1 << 8 - outbits) - 1); + } + } + this.bufferLength += rowBytes; + }; + PredictorStream.prototype.readBlockPng = function predictorStreamReadBlockPng() { + var rowBytes = this.rowBytes; + var pixBytes = this.pixBytes; + var predictor = this.str.getByte(); + var rawBytes = this.str.getBytes(rowBytes); + this.eof = !rawBytes.length; + if (this.eof) { + return; + } + var bufferLength = this.bufferLength; + var buffer = this.ensureBuffer(bufferLength + rowBytes); + var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength); + if (prevRow.length === 0) { + prevRow = new Uint8Array(rowBytes); + } + var i, + j = bufferLength, + up, + c; + switch (predictor) { + case 0: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + break; + case 1: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = buffer[j - pixBytes] + rawBytes[i] & 0xFF; + j++; + } + break; + case 2: + for (i = 0; i < rowBytes; ++i) { + buffer[j++] = prevRow[i] + rawBytes[i] & 0xFF; + } + break; + case 3: + for (i = 0; i < pixBytes; ++i) { + buffer[j++] = (prevRow[i] >> 1) + rawBytes[i]; + } + for (; i < rowBytes; ++i) { + buffer[j] = (prevRow[i] + buffer[j - pixBytes] >> 1) + rawBytes[i] & 0xFF; + j++; + } + break; + case 4: + for (i = 0; i < pixBytes; ++i) { + up = prevRow[i]; + c = rawBytes[i]; + buffer[j++] = up + c; + } + for (; i < rowBytes; ++i) { + up = prevRow[i]; + var upLeft = prevRow[i - pixBytes]; + var left = buffer[j - pixBytes]; + var p = left + up - upLeft; + var pa = p - left; + if (pa < 0) { + pa = -pa; + } + var pb = p - up; + if (pb < 0) { + pb = -pb; + } + var pc = p - upLeft; + if (pc < 0) { + pc = -pc; + } + c = rawBytes[i]; + if (pa <= pb && pa <= pc) { + buffer[j++] = left + c; + } else if (pb <= pc) { + buffer[j++] = up + c; + } else { + buffer[j++] = upLeft + c; + } + } + break; + default: + throw new _util.FormatError('Unsupported predictor: ' + predictor); + } + this.bufferLength += rowBytes; + }; + return PredictorStream; +}(); +var JpegStream = function JpegStreamClosure() { + function JpegStream(stream, maybeLength, dict, params) { + var ch; + while ((ch = stream.getByte()) !== -1) { + if (ch === 0xFF) { + stream.skip(-1); + break; + } + } + this.stream = stream; + this.maybeLength = maybeLength; + this.dict = dict; + this.params = params; + DecodeStream.call(this, maybeLength); + } + JpegStream.prototype = Object.create(DecodeStream.prototype); + Object.defineProperty(JpegStream.prototype, 'bytes', { + get: function JpegStream_bytes() { + return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); + }, + configurable: true + }); + JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) { + if (this.bufferLength) { + return; + } + var jpegImage = new _jpg.JpegImage(); + var decodeArr = this.dict.getArray('Decode', 'D'); + if (this.forceRGB && (0, _util.isArray)(decodeArr)) { + var bitsPerComponent = this.dict.get('BitsPerComponent') || 8; + var decodeArrLength = decodeArr.length; + var transform = new Int32Array(decodeArrLength); + var transformNeeded = false; + var maxValue = (1 << bitsPerComponent) - 1; + for (var i = 0; i < decodeArrLength; i += 2) { + transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0; + transform[i + 1] = decodeArr[i] * maxValue | 0; + if (transform[i] !== 256 || transform[i + 1] !== 0) { + transformNeeded = true; + } + } + if (transformNeeded) { + jpegImage.decodeTransform = transform; + } + } + if ((0, _primitives.isDict)(this.params)) { + var colorTransform = this.params.get('ColorTransform'); + if ((0, _util.isInt)(colorTransform)) { + jpegImage.colorTransform = colorTransform; + } + } + jpegImage.parse(this.bytes); + var data = jpegImage.getData(this.drawWidth, this.drawHeight, this.forceRGB); + this.buffer = data; + this.bufferLength = data.length; + this.eof = true; + }; + JpegStream.prototype.getBytes = function JpegStream_getBytes(length) { + this.ensureBuffer(); + return this.buffer; + }; + JpegStream.prototype.getIR = function JpegStream_getIR(forceDataSchema) { + return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema); + }; + return JpegStream; +}(); +var JpxStream = function JpxStreamClosure() { + function JpxStream(stream, maybeLength, dict, params) { + this.stream = stream; + this.maybeLength = maybeLength; + this.dict = dict; + this.params = params; + DecodeStream.call(this, maybeLength); + } + JpxStream.prototype = Object.create(DecodeStream.prototype); + Object.defineProperty(JpxStream.prototype, 'bytes', { + get: function JpxStream_bytes() { + return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); + }, + configurable: true + }); + JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) { + if (this.bufferLength) { + return; + } + var jpxImage = new _jpx.JpxImage(); + jpxImage.parse(this.bytes); + var width = jpxImage.width; + var height = jpxImage.height; + var componentsCount = jpxImage.componentsCount; + var tileCount = jpxImage.tiles.length; + if (tileCount === 1) { + this.buffer = jpxImage.tiles[0].items; + } else { + var data = new Uint8Array(width * height * componentsCount); + for (var k = 0; k < tileCount; k++) { + var tileComponents = jpxImage.tiles[k]; + var tileWidth = tileComponents.width; + var tileHeight = tileComponents.height; + var tileLeft = tileComponents.left; + var tileTop = tileComponents.top; + var src = tileComponents.items; + var srcPosition = 0; + var dataPosition = (width * tileTop + tileLeft) * componentsCount; + var imgRowSize = width * componentsCount; + var tileRowSize = tileWidth * componentsCount; + for (var j = 0; j < tileHeight; j++) { + var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize); + data.set(rowBytes, dataPosition); + srcPosition += tileRowSize; + dataPosition += imgRowSize; + } + } + this.buffer = data; + } + this.bufferLength = this.buffer.length; + this.eof = true; + }; + return JpxStream; +}(); +var Jbig2Stream = function Jbig2StreamClosure() { + function Jbig2Stream(stream, maybeLength, dict, params) { + this.stream = stream; + this.maybeLength = maybeLength; + this.dict = dict; + this.params = params; + DecodeStream.call(this, maybeLength); + } + Jbig2Stream.prototype = Object.create(DecodeStream.prototype); + Object.defineProperty(Jbig2Stream.prototype, 'bytes', { + get: function Jbig2Stream_bytes() { + return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength)); + }, + configurable: true + }); + Jbig2Stream.prototype.ensureBuffer = function Jbig2Stream_ensureBuffer(req) { + if (this.bufferLength) { + return; + } + var jbig2Image = new _jbig.Jbig2Image(); + var chunks = []; + if ((0, _primitives.isDict)(this.params)) { + var globalsStream = this.params.get('JBIG2Globals'); + if ((0, _primitives.isStream)(globalsStream)) { + var globals = globalsStream.getBytes(); + chunks.push({ + data: globals, + start: 0, + end: globals.length + }); + } + } + chunks.push({ + data: this.bytes, + start: 0, + end: this.bytes.length + }); + var data = jbig2Image.parseChunks(chunks); + var dataLength = data.length; + for (var i = 0; i < dataLength; i++) { + data[i] ^= 0xFF; + } + this.buffer = data; + this.bufferLength = dataLength; + this.eof = true; + }; + return Jbig2Stream; +}(); +var DecryptStream = function DecryptStreamClosure() { + function DecryptStream(str, maybeLength, decrypt) { + this.str = str; + this.dict = str.dict; + this.decrypt = decrypt; + this.nextChunk = null; + this.initialized = false; + DecodeStream.call(this, maybeLength); + } + var chunkSize = 512; + DecryptStream.prototype = Object.create(DecodeStream.prototype); + DecryptStream.prototype.readBlock = function DecryptStream_readBlock() { + var chunk; + if (this.initialized) { + chunk = this.nextChunk; + } else { + chunk = this.str.getBytes(chunkSize); + this.initialized = true; + } + if (!chunk || chunk.length === 0) { + this.eof = true; + return; + } + this.nextChunk = this.str.getBytes(chunkSize); + var hasMoreData = this.nextChunk && this.nextChunk.length > 0; + var decrypt = this.decrypt; + chunk = decrypt(chunk, !hasMoreData); + var bufferLength = this.bufferLength; + var i, + n = chunk.length; + var buffer = this.ensureBuffer(bufferLength + n); + for (i = 0; i < n; i++) { + buffer[bufferLength++] = chunk[i]; + } + this.bufferLength = bufferLength; + }; + return DecryptStream; +}(); +var Ascii85Stream = function Ascii85StreamClosure() { + function Ascii85Stream(str, maybeLength) { + this.str = str; + this.dict = str.dict; + this.input = new Uint8Array(5); + if (maybeLength) { + maybeLength = 0.8 * maybeLength; + } + DecodeStream.call(this, maybeLength); + } + Ascii85Stream.prototype = Object.create(DecodeStream.prototype); + Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() { + var TILDA_CHAR = 0x7E; + var Z_LOWER_CHAR = 0x7A; + var EOF = -1; + var str = this.str; + var c = str.getByte(); + while ((0, _util.isSpace)(c)) { + c = str.getByte(); + } + if (c === EOF || c === TILDA_CHAR) { + this.eof = true; + return; + } + var bufferLength = this.bufferLength, + buffer; + var i; + if (c === Z_LOWER_CHAR) { + buffer = this.ensureBuffer(bufferLength + 4); + for (i = 0; i < 4; ++i) { + buffer[bufferLength + i] = 0; + } + this.bufferLength += 4; + } else { + var input = this.input; + input[0] = c; + for (i = 1; i < 5; ++i) { + c = str.getByte(); + while ((0, _util.isSpace)(c)) { + c = str.getByte(); + } + input[i] = c; + if (c === EOF || c === TILDA_CHAR) { + break; + } + } + buffer = this.ensureBuffer(bufferLength + i - 1); + this.bufferLength += i - 1; + if (i < 5) { + for (; i < 5; ++i) { + input[i] = 0x21 + 84; + } + this.eof = true; + } + var t = 0; + for (i = 0; i < 5; ++i) { + t = t * 85 + (input[i] - 0x21); + } + for (i = 3; i >= 0; --i) { + buffer[bufferLength + i] = t & 0xFF; + t >>= 8; + } + } + }; + return Ascii85Stream; +}(); +var AsciiHexStream = function AsciiHexStreamClosure() { + function AsciiHexStream(str, maybeLength) { + this.str = str; + this.dict = str.dict; + this.firstDigit = -1; + if (maybeLength) { + maybeLength = 0.5 * maybeLength; + } + DecodeStream.call(this, maybeLength); + } + AsciiHexStream.prototype = Object.create(DecodeStream.prototype); + AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() { + var UPSTREAM_BLOCK_SIZE = 8000; + var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE); + if (!bytes.length) { + this.eof = true; + return; + } + var maxDecodeLength = bytes.length + 1 >> 1; + var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength); + var bufferLength = this.bufferLength; + var firstDigit = this.firstDigit; + for (var i = 0, ii = bytes.length; i < ii; i++) { + var ch = bytes[i], + digit; + if (ch >= 0x30 && ch <= 0x39) { + digit = ch & 0x0F; + } else if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + digit = (ch & 0x0F) + 9; + } else if (ch === 0x3E) { + this.eof = true; + break; + } else { + continue; + } + if (firstDigit < 0) { + firstDigit = digit; + } else { + buffer[bufferLength++] = firstDigit << 4 | digit; + firstDigit = -1; + } + } + if (firstDigit >= 0 && this.eof) { + buffer[bufferLength++] = firstDigit << 4; + firstDigit = -1; + } + this.firstDigit = firstDigit; + this.bufferLength = bufferLength; + }; + return AsciiHexStream; +}(); +var RunLengthStream = function RunLengthStreamClosure() { + function RunLengthStream(str, maybeLength) { + this.str = str; + this.dict = str.dict; + DecodeStream.call(this, maybeLength); + } + RunLengthStream.prototype = Object.create(DecodeStream.prototype); + RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() { + var repeatHeader = this.str.getBytes(2); + if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) { + this.eof = true; + return; + } + var buffer; + var bufferLength = this.bufferLength; + var n = repeatHeader[0]; + if (n < 128) { + buffer = this.ensureBuffer(bufferLength + n + 1); + buffer[bufferLength++] = repeatHeader[1]; + if (n > 0) { + var source = this.str.getBytes(n); + buffer.set(source, bufferLength); + bufferLength += n; + } + } else { + n = 257 - n; + var b = repeatHeader[1]; + buffer = this.ensureBuffer(bufferLength + n + 1); + for (var i = 0; i < n; i++) { + buffer[bufferLength++] = b; + } + } + this.bufferLength = bufferLength; + }; + return RunLengthStream; +}(); +var CCITTFaxStream = function CCITTFaxStreamClosure() { + var ccittEOL = -2; + var ccittEOF = -1; + var twoDimPass = 0; + var twoDimHoriz = 1; + var twoDimVert0 = 2; + var twoDimVertR1 = 3; + var twoDimVertL1 = 4; + var twoDimVertR2 = 5; + var twoDimVertL2 = 6; + var twoDimVertR3 = 7; + var twoDimVertL3 = 8; + var twoDimTable = [[-1, -1], [-1, -1], [7, twoDimVertL3], [7, twoDimVertR3], [6, twoDimVertL2], [6, twoDimVertL2], [6, twoDimVertR2], [6, twoDimVertR2], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [4, twoDimPass], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimHoriz], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertL1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [3, twoDimVertR1], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0], [1, twoDimVert0]]; + var whiteTable1 = [[-1, -1], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [12, 1984], [12, 2048], [12, 2112], [12, 2176], [12, 2240], [12, 2304], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [12, 2368], [12, 2432], [12, 2496], [12, 2560]]; + var whiteTable2 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [8, 29], [8, 29], [8, 30], [8, 30], [8, 45], [8, 45], [8, 46], [8, 46], [7, 22], [7, 22], [7, 22], [7, 22], [7, 23], [7, 23], [7, 23], [7, 23], [8, 47], [8, 47], [8, 48], [8, 48], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [6, 13], [7, 20], [7, 20], [7, 20], [7, 20], [8, 33], [8, 33], [8, 34], [8, 34], [8, 35], [8, 35], [8, 36], [8, 36], [8, 37], [8, 37], [8, 38], [8, 38], [7, 19], [7, 19], [7, 19], [7, 19], [8, 31], [8, 31], [8, 32], [8, 32], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 1], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [6, 12], [8, 53], [8, 53], [8, 54], [8, 54], [7, 26], [7, 26], [7, 26], [7, 26], [8, 39], [8, 39], [8, 40], [8, 40], [8, 41], [8, 41], [8, 42], [8, 42], [8, 43], [8, 43], [8, 44], [8, 44], [7, 21], [7, 21], [7, 21], [7, 21], [7, 28], [7, 28], [7, 28], [7, 28], [8, 61], [8, 61], [8, 62], [8, 62], [8, 63], [8, 63], [8, 0], [8, 0], [8, 320], [8, 320], [8, 384], [8, 384], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 10], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [5, 11], [7, 27], [7, 27], [7, 27], [7, 27], [8, 59], [8, 59], [8, 60], [8, 60], [9, 1472], [9, 1536], [9, 1600], [9, 1728], [7, 18], [7, 18], [7, 18], [7, 18], [7, 24], [7, 24], [7, 24], [7, 24], [8, 49], [8, 49], [8, 50], [8, 50], [8, 51], [8, 51], [8, 52], [8, 52], [7, 25], [7, 25], [7, 25], [7, 25], [8, 55], [8, 55], [8, 56], [8, 56], [8, 57], [8, 57], [8, 58], [8, 58], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 192], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [6, 1664], [8, 448], [8, 448], [8, 512], [8, 512], [9, 704], [9, 768], [8, 640], [8, 640], [8, 576], [8, 576], [9, 832], [9, 896], [9, 960], [9, 1024], [9, 1088], [9, 1152], [9, 1216], [9, 1280], [9, 1344], [9, 1408], [7, 256], [7, 256], [7, 256], [7, 256], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 2], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [4, 3], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 128], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 8], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [5, 9], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 16], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [6, 17], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 4], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [4, 5], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 14], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [6, 15], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [5, 64], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 6], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7], [4, 7]]; + var blackTable1 = [[-1, -1], [-1, -1], [12, ccittEOL], [12, ccittEOL], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [-1, -1], [11, 1792], [11, 1792], [11, 1792], [11, 1792], [12, 1984], [12, 1984], [12, 2048], [12, 2048], [12, 2112], [12, 2112], [12, 2176], [12, 2176], [12, 2240], [12, 2240], [12, 2304], [12, 2304], [11, 1856], [11, 1856], [11, 1856], [11, 1856], [11, 1920], [11, 1920], [11, 1920], [11, 1920], [12, 2368], [12, 2368], [12, 2432], [12, 2432], [12, 2496], [12, 2496], [12, 2560], [12, 2560], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [10, 18], [12, 52], [12, 52], [13, 640], [13, 704], [13, 768], [13, 832], [12, 55], [12, 55], [12, 56], [12, 56], [13, 1280], [13, 1344], [13, 1408], [13, 1472], [12, 59], [12, 59], [12, 60], [12, 60], [13, 1536], [13, 1600], [11, 24], [11, 24], [11, 24], [11, 24], [11, 25], [11, 25], [11, 25], [11, 25], [13, 1664], [13, 1728], [12, 320], [12, 320], [12, 384], [12, 384], [12, 448], [12, 448], [13, 512], [13, 576], [12, 53], [12, 53], [12, 54], [12, 54], [13, 896], [13, 960], [13, 1024], [13, 1088], [13, 1152], [13, 1216], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64], [10, 64]]; + var blackTable2 = [[8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [8, 13], [11, 23], [11, 23], [12, 50], [12, 51], [12, 44], [12, 45], [12, 46], [12, 47], [12, 57], [12, 58], [12, 61], [12, 256], [10, 16], [10, 16], [10, 16], [10, 16], [10, 17], [10, 17], [10, 17], [10, 17], [12, 48], [12, 49], [12, 62], [12, 63], [12, 30], [12, 31], [12, 32], [12, 33], [12, 40], [12, 41], [11, 22], [11, 22], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [8, 14], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 10], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [7, 11], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [9, 15], [12, 128], [12, 192], [12, 26], [12, 27], [12, 28], [12, 29], [11, 19], [11, 19], [11, 20], [11, 20], [12, 34], [12, 35], [12, 36], [12, 37], [12, 38], [12, 39], [11, 21], [11, 21], [12, 42], [12, 43], [10, 0], [10, 0], [10, 0], [10, 0], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12], [7, 12]]; + var blackTable3 = [[-1, -1], [-1, -1], [-1, -1], [-1, -1], [6, 9], [6, 8], [5, 7], [5, 7], [4, 6], [4, 6], [4, 6], [4, 6], [4, 5], [4, 5], [4, 5], [4, 5], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 1], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [3, 4], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 3], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2], [2, 2]]; + function CCITTFaxStream(str, maybeLength, params) { + this.str = str; + this.dict = str.dict; + params = params || _primitives.Dict.empty; + this.encoding = params.get('K') || 0; + this.eoline = params.get('EndOfLine') || false; + this.byteAlign = params.get('EncodedByteAlign') || false; + this.columns = params.get('Columns') || 1728; + this.rows = params.get('Rows') || 0; + var eoblock = params.get('EndOfBlock'); + if (eoblock === null || eoblock === undefined) { + eoblock = true; + } + this.eoblock = eoblock; + this.black = params.get('BlackIs1') || false; + this.codingLine = new Uint32Array(this.columns + 1); + this.refLine = new Uint32Array(this.columns + 2); + this.codingLine[0] = this.columns; + this.codingPos = 0; + this.row = 0; + this.nextLine2D = this.encoding < 0; + this.inputBits = 0; + this.inputBuf = 0; + this.outputBits = 0; + var code1; + while ((code1 = this.lookBits(12)) === 0) { + this.eatBits(1); + } + if (code1 === 1) { + this.eatBits(12); + } + if (this.encoding > 0) { + this.nextLine2D = !this.lookBits(1); + this.eatBits(1); + } + DecodeStream.call(this, maybeLength); + } + CCITTFaxStream.prototype = Object.create(DecodeStream.prototype); + CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() { + while (!this.eof) { + var c = this.lookChar(); + this.ensureBuffer(this.bufferLength + 1); + this.buffer[this.bufferLength++] = c; + } + }; + CCITTFaxStream.prototype.addPixels = function ccittFaxStreamAddPixels(a1, blackPixels) { + var codingLine = this.codingLine; + var codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)('row is wrong length'); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + }; + CCITTFaxStream.prototype.addPixelsNeg = function ccittFaxStreamAddPixelsNeg(a1, blackPixels) { + var codingLine = this.codingLine; + var codingPos = this.codingPos; + if (a1 > codingLine[codingPos]) { + if (a1 > this.columns) { + (0, _util.info)('row is wrong length'); + this.err = true; + a1 = this.columns; + } + if (codingPos & 1 ^ blackPixels) { + ++codingPos; + } + codingLine[codingPos] = a1; + } else if (a1 < codingLine[codingPos]) { + if (a1 < 0) { + (0, _util.info)('invalid code'); + this.err = true; + a1 = 0; + } + while (codingPos > 0 && a1 < codingLine[codingPos - 1]) { + --codingPos; + } + codingLine[codingPos] = a1; + } + this.codingPos = codingPos; + }; + CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() { + var refLine = this.refLine; + var codingLine = this.codingLine; + var columns = this.columns; + var refPos, blackPixels, bits, i; + if (this.outputBits === 0) { + if (this.eof) { + return null; + } + this.err = false; + var code1, code2, code3; + if (this.nextLine2D) { + for (i = 0; codingLine[i] < columns; ++i) { + refLine[i] = codingLine[i]; + } + refLine[i++] = columns; + refLine[i] = columns; + codingLine[0] = 0; + this.codingPos = 0; + refPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = this.getTwoDimCode(); + switch (code1) { + case twoDimPass: + this.addPixels(refLine[refPos + 1], blackPixels); + if (refLine[refPos + 1] < columns) { + refPos += 2; + } + break; + case twoDimHoriz: + code1 = code2 = 0; + if (blackPixels) { + do { + code1 += code3 = this.getBlackCode(); + } while (code3 >= 64); + do { + code2 += code3 = this.getWhiteCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this.getWhiteCode(); + } while (code3 >= 64); + do { + code2 += code3 = this.getBlackCode(); + } while (code3 >= 64); + } + this.addPixels(codingLine[this.codingPos] + code1, blackPixels); + if (codingLine[this.codingPos] < columns) { + this.addPixels(codingLine[this.codingPos] + code2, blackPixels ^ 1); + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + break; + case twoDimVertR3: + this.addPixels(refLine[refPos] + 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR2: + this.addPixels(refLine[refPos] + 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertR1: + this.addPixels(refLine[refPos] + 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVert0: + this.addPixels(refLine[refPos], blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + ++refPos; + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL3: + this.addPixelsNeg(refLine[refPos] - 3, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL2: + this.addPixelsNeg(refLine[refPos] - 2, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case twoDimVertL1: + this.addPixelsNeg(refLine[refPos] - 1, blackPixels); + blackPixels ^= 1; + if (codingLine[this.codingPos] < columns) { + if (refPos > 0) { + --refPos; + } else { + ++refPos; + } + while (refLine[refPos] <= codingLine[this.codingPos] && refLine[refPos] < columns) { + refPos += 2; + } + } + break; + case ccittEOF: + this.addPixels(columns, 0); + this.eof = true; + break; + default: + (0, _util.info)('bad 2d code'); + this.addPixels(columns, 0); + this.err = true; + } + } + } else { + codingLine[0] = 0; + this.codingPos = 0; + blackPixels = 0; + while (codingLine[this.codingPos] < columns) { + code1 = 0; + if (blackPixels) { + do { + code1 += code3 = this.getBlackCode(); + } while (code3 >= 64); + } else { + do { + code1 += code3 = this.getWhiteCode(); + } while (code3 >= 64); + } + this.addPixels(codingLine[this.codingPos] + code1, blackPixels); + blackPixels ^= 1; + } + } + var gotEOL = false; + if (this.byteAlign) { + this.inputBits &= ~7; + } + if (!this.eoblock && this.row === this.rows - 1) { + this.eof = true; + } else { + code1 = this.lookBits(12); + if (this.eoline) { + while (code1 !== ccittEOF && code1 !== 1) { + this.eatBits(1); + code1 = this.lookBits(12); + } + } else { + while (code1 === 0) { + this.eatBits(1); + code1 = this.lookBits(12); + } + } + if (code1 === 1) { + this.eatBits(12); + gotEOL = true; + } else if (code1 === ccittEOF) { + this.eof = true; + } + } + if (!this.eof && this.encoding > 0) { + this.nextLine2D = !this.lookBits(1); + this.eatBits(1); + } + if (this.eoblock && gotEOL && this.byteAlign) { + code1 = this.lookBits(12); + if (code1 === 1) { + this.eatBits(12); + if (this.encoding > 0) { + this.lookBits(1); + this.eatBits(1); + } + if (this.encoding >= 0) { + for (i = 0; i < 4; ++i) { + code1 = this.lookBits(12); + if (code1 !== 1) { + (0, _util.info)('bad rtc code: ' + code1); + } + this.eatBits(12); + if (this.encoding > 0) { + this.lookBits(1); + this.eatBits(1); + } + } + } + this.eof = true; + } + } else if (this.err && this.eoline) { + while (true) { + code1 = this.lookBits(13); + if (code1 === ccittEOF) { + this.eof = true; + return null; + } + if (code1 >> 1 === 1) { + break; + } + this.eatBits(1); + } + this.eatBits(12); + if (this.encoding > 0) { + this.eatBits(1); + this.nextLine2D = !(code1 & 1); + } + } + if (codingLine[0] > 0) { + this.outputBits = codingLine[this.codingPos = 0]; + } else { + this.outputBits = codingLine[this.codingPos = 1]; + } + this.row++; + } + var c; + if (this.outputBits >= 8) { + c = this.codingPos & 1 ? 0 : 0xFF; + this.outputBits -= 8; + if (this.outputBits === 0 && codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } + } else { + bits = 8; + c = 0; + do { + if (this.outputBits > bits) { + c <<= bits; + if (!(this.codingPos & 1)) { + c |= 0xFF >> 8 - bits; + } + this.outputBits -= bits; + bits = 0; + } else { + c <<= this.outputBits; + if (!(this.codingPos & 1)) { + c |= 0xFF >> 8 - this.outputBits; + } + bits -= this.outputBits; + this.outputBits = 0; + if (codingLine[this.codingPos] < columns) { + this.codingPos++; + this.outputBits = codingLine[this.codingPos] - codingLine[this.codingPos - 1]; + } else if (bits > 0) { + c <<= bits; + bits = 0; + } + } + } while (bits); + } + if (this.black) { + c ^= 0xFF; + } + return c; + }; + CCITTFaxStream.prototype.findTableCode = function ccittFaxStreamFindTableCode(start, end, table, limit) { + var limitValue = limit || 0; + for (var i = start; i <= end; ++i) { + var code = this.lookBits(i); + if (code === ccittEOF) { + return [true, 1, false]; + } + if (i < end) { + code <<= end - i; + } + if (!limitValue || code >= limitValue) { + var p = table[code - limitValue]; + if (p[0] === i) { + this.eatBits(i); + return [true, p[1], true]; + } + } + } + return [false, 0, false]; + }; + CCITTFaxStream.prototype.getTwoDimCode = function ccittFaxStreamGetTwoDimCode() { + var code = 0; + var p; + if (this.eoblock) { + code = this.lookBits(7); + p = twoDimTable[code]; + if (p && p[0] > 0) { + this.eatBits(p[0]); + return p[1]; + } + } else { + var result = this.findTableCode(1, 7, twoDimTable); + if (result[0] && result[2]) { + return result[1]; + } + } + (0, _util.info)('Bad two dim code'); + return ccittEOF; + }; + CCITTFaxStream.prototype.getWhiteCode = function ccittFaxStreamGetWhiteCode() { + var code = 0; + var p; + if (this.eoblock) { + code = this.lookBits(12); + if (code === ccittEOF) { + return 1; + } + if (code >> 5 === 0) { + p = whiteTable1[code]; + } else { + p = whiteTable2[code >> 3]; + } + if (p[0] > 0) { + this.eatBits(p[0]); + return p[1]; + } + } else { + var result = this.findTableCode(1, 9, whiteTable2); + if (result[0]) { + return result[1]; + } + result = this.findTableCode(11, 12, whiteTable1); + if (result[0]) { + return result[1]; + } + } + (0, _util.info)('bad white code'); + this.eatBits(1); + return 1; + }; + CCITTFaxStream.prototype.getBlackCode = function ccittFaxStreamGetBlackCode() { + var code, p; + if (this.eoblock) { + code = this.lookBits(13); + if (code === ccittEOF) { + return 1; + } + if (code >> 7 === 0) { + p = blackTable1[code]; + } else if (code >> 9 === 0 && code >> 7 !== 0) { + p = blackTable2[(code >> 1) - 64]; + } else { + p = blackTable3[code >> 7]; + } + if (p[0] > 0) { + this.eatBits(p[0]); + return p[1]; + } + } else { + var result = this.findTableCode(2, 6, blackTable3); + if (result[0]) { + return result[1]; + } + result = this.findTableCode(7, 12, blackTable2, 64); + if (result[0]) { + return result[1]; + } + result = this.findTableCode(10, 13, blackTable1); + if (result[0]) { + return result[1]; + } + } + (0, _util.info)('bad black code'); + this.eatBits(1); + return 1; + }; + CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) { + var c; + while (this.inputBits < n) { + if ((c = this.str.getByte()) === -1) { + if (this.inputBits === 0) { + return ccittEOF; + } + return this.inputBuf << n - this.inputBits & 0xFFFF >> 16 - n; + } + this.inputBuf = this.inputBuf << 8 | c; + this.inputBits += 8; + } + return this.inputBuf >> this.inputBits - n & 0xFFFF >> 16 - n; + }; + CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) { + if ((this.inputBits -= n) < 0) { + this.inputBits = 0; + } + }; + return CCITTFaxStream; +}(); +var LZWStream = function LZWStreamClosure() { + function LZWStream(str, maybeLength, earlyChange) { + this.str = str; + this.dict = str.dict; + this.cachedData = 0; + this.bitsCached = 0; + var maxLzwDictionarySize = 4096; + var lzwState = { + earlyChange: earlyChange, + codeLength: 9, + nextCode: 258, + dictionaryValues: new Uint8Array(maxLzwDictionarySize), + dictionaryLengths: new Uint16Array(maxLzwDictionarySize), + dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize), + currentSequence: new Uint8Array(maxLzwDictionarySize), + currentSequenceLength: 0 + }; + for (var i = 0; i < 256; ++i) { + lzwState.dictionaryValues[i] = i; + lzwState.dictionaryLengths[i] = 1; + } + this.lzwState = lzwState; + DecodeStream.call(this, maybeLength); + } + LZWStream.prototype = Object.create(DecodeStream.prototype); + LZWStream.prototype.readBits = function LZWStream_readBits(n) { + var bitsCached = this.bitsCached; + var cachedData = this.cachedData; + while (bitsCached < n) { + var c = this.str.getByte(); + if (c === -1) { + this.eof = true; + return null; + } + cachedData = cachedData << 8 | c; + bitsCached += 8; + } + this.bitsCached = bitsCached -= n; + this.cachedData = cachedData; + this.lastCode = null; + return cachedData >>> bitsCached & (1 << n) - 1; + }; + LZWStream.prototype.readBlock = function LZWStream_readBlock() { + var blockSize = 512; + var estimatedDecodedSize = blockSize * 2, + decodedSizeDelta = blockSize; + var i, j, q; + var lzwState = this.lzwState; + if (!lzwState) { + return; + } + var earlyChange = lzwState.earlyChange; + var nextCode = lzwState.nextCode; + var dictionaryValues = lzwState.dictionaryValues; + var dictionaryLengths = lzwState.dictionaryLengths; + var dictionaryPrevCodes = lzwState.dictionaryPrevCodes; + var codeLength = lzwState.codeLength; + var prevCode = lzwState.prevCode; + var currentSequence = lzwState.currentSequence; + var currentSequenceLength = lzwState.currentSequenceLength; + var decodedLength = 0; + var currentBufferLength = this.bufferLength; + var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + for (i = 0; i < blockSize; i++) { + var code = this.readBits(codeLength); + var hasPrev = currentSequenceLength > 0; + if (code < 256) { + currentSequence[0] = code; + currentSequenceLength = 1; + } else if (code >= 258) { + if (code < nextCode) { + currentSequenceLength = dictionaryLengths[code]; + for (j = currentSequenceLength - 1, q = code; j >= 0; j--) { + currentSequence[j] = dictionaryValues[q]; + q = dictionaryPrevCodes[q]; + } + } else { + currentSequence[currentSequenceLength++] = currentSequence[0]; + } + } else if (code === 256) { + codeLength = 9; + nextCode = 258; + currentSequenceLength = 0; + continue; + } else { + this.eof = true; + delete this.lzwState; + break; + } + if (hasPrev) { + dictionaryPrevCodes[nextCode] = prevCode; + dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1; + dictionaryValues[nextCode] = currentSequence[0]; + nextCode++; + codeLength = nextCode + earlyChange & nextCode + earlyChange - 1 ? codeLength : Math.min(Math.log(nextCode + earlyChange) / 0.6931471805599453 + 1, 12) | 0; + } + prevCode = code; + decodedLength += currentSequenceLength; + if (estimatedDecodedSize < decodedLength) { + do { + estimatedDecodedSize += decodedSizeDelta; + } while (estimatedDecodedSize < decodedLength); + buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize); + } + for (j = 0; j < currentSequenceLength; j++) { + buffer[currentBufferLength++] = currentSequence[j]; + } + } + lzwState.nextCode = nextCode; + lzwState.codeLength = codeLength; + lzwState.prevCode = prevCode; + lzwState.currentSequenceLength = currentSequenceLength; + this.bufferLength = currentBufferLength; + }; + return LZWStream; +}(); +var NullStream = function NullStreamClosure() { + function NullStream() { + Stream.call(this, new Uint8Array(0)); + } + NullStream.prototype = Stream.prototype; + return NullStream; +}(); +exports.Ascii85Stream = Ascii85Stream; +exports.AsciiHexStream = AsciiHexStream; +exports.CCITTFaxStream = CCITTFaxStream; +exports.DecryptStream = DecryptStream; +exports.DecodeStream = DecodeStream; +exports.FlateStream = FlateStream; +exports.Jbig2Stream = Jbig2Stream; +exports.JpegStream = JpegStream; +exports.JpxStream = JpxStream; +exports.NullStream = NullStream; +exports.PredictorStream = PredictorStream; +exports.RunLengthStream = RunLengthStream; +exports.Stream = Stream; +exports.StreamsSequenceStream = StreamsSequenceStream; +exports.StringStream = StringStream; +exports.LZWStream = LZWStream; + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ColorSpace = undefined; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _function = __w_pdfjs_require__(7); + +var ColorSpace = function ColorSpaceClosure() { + function resizeRgbImage(src, bpc, w1, h1, w2, h2, alpha01, dest) { + var COMPONENTS = 3; + alpha01 = alpha01 !== 1 ? 0 : alpha01; + var xRatio = w1 / w2; + var yRatio = h1 / h2; + var i, + j, + py, + newIndex = 0, + oldIndex; + var xScaled = new Uint16Array(w2); + var w1Scanline = w1 * COMPONENTS; + for (i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio) * COMPONENTS; + } + for (i = 0; i < h2; i++) { + py = Math.floor(i * yRatio) * w1Scanline; + for (j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + dest[newIndex++] = src[oldIndex++]; + newIndex += alpha01; + } + } + } + function ColorSpace() { + throw new Error('should not call ColorSpace constructor'); + } + ColorSpace.prototype = { + getRgb: function ColorSpace_getRgb(src, srcOffset) { + var rgb = new Uint8Array(3); + this.getRgbItem(src, srcOffset, rgb, 0); + return rgb; + }, + getRgbItem: function ColorSpace_getRgbItem(src, srcOffset, dest, destOffset) { + throw new Error('Should not call ColorSpace.getRgbItem'); + }, + getRgbBuffer: function ColorSpace_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + throw new Error('Should not call ColorSpace.getRgbBuffer'); + }, + getOutputLength: function ColorSpace_getOutputLength(inputLength, alpha01) { + throw new Error('Should not call ColorSpace.getOutputLength'); + }, + isPassthrough: function ColorSpace_isPassthrough(bits) { + return false; + }, + fillRgb: function ColorSpace_fillRgb(dest, originalWidth, originalHeight, width, height, actualHeight, bpc, comps, alpha01) { + var count = originalWidth * originalHeight; + var rgbBuf = null; + var numComponentColors = 1 << bpc; + var needsResizing = originalHeight !== height || originalWidth !== width; + var i, ii; + if (this.isPassthrough(bpc)) { + rgbBuf = comps; + } else if (this.numComps === 1 && count > numComponentColors && this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') { + var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) : new Uint16Array(numComponentColors); + var key; + for (i = 0; i < numComponentColors; i++) { + allColors[i] = i; + } + var colorMap = new Uint8Array(numComponentColors * 3); + this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc, 0); + var destPos, rgbPos; + if (!needsResizing) { + destPos = 0; + for (i = 0; i < count; ++i) { + key = comps[i] * 3; + dest[destPos++] = colorMap[key]; + dest[destPos++] = colorMap[key + 1]; + dest[destPos++] = colorMap[key + 2]; + destPos += alpha01; + } + } else { + rgbBuf = new Uint8Array(count * 3); + rgbPos = 0; + for (i = 0; i < count; ++i) { + key = comps[i] * 3; + rgbBuf[rgbPos++] = colorMap[key]; + rgbBuf[rgbPos++] = colorMap[key + 1]; + rgbBuf[rgbPos++] = colorMap[key + 2]; + } + } + } else { + if (!needsResizing) { + this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01); + } else { + rgbBuf = new Uint8Array(count * 3); + this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, 0); + } + } + if (rgbBuf) { + if (needsResizing) { + resizeRgbImage(rgbBuf, bpc, originalWidth, originalHeight, width, height, alpha01, dest); + } else { + rgbPos = 0; + destPos = 0; + for (i = 0, ii = width * actualHeight; i < ii; i++) { + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + dest[destPos++] = rgbBuf[rgbPos++]; + destPos += alpha01; + } + } + } + }, + usesZeroToOneRange: true + }; + ColorSpace.parse = function ColorSpace_parse(cs, xref, res) { + var IR = ColorSpace.parseToIR(cs, xref, res); + if (IR instanceof AlternateCS) { + return IR; + } + return ColorSpace.fromIR(IR); + }; + ColorSpace.fromIR = function ColorSpace_fromIR(IR) { + var name = (0, _util.isArray)(IR) ? IR[0] : IR; + var whitePoint, blackPoint, gamma; + switch (name) { + case 'DeviceGrayCS': + return this.singletons.gray; + case 'DeviceRgbCS': + return this.singletons.rgb; + case 'DeviceCmykCS': + return this.singletons.cmyk; + case 'CalGrayCS': + whitePoint = IR[1]; + blackPoint = IR[2]; + gamma = IR[3]; + return new CalGrayCS(whitePoint, blackPoint, gamma); + case 'CalRGBCS': + whitePoint = IR[1]; + blackPoint = IR[2]; + gamma = IR[3]; + var matrix = IR[4]; + return new CalRGBCS(whitePoint, blackPoint, gamma, matrix); + case 'PatternCS': + var basePatternCS = IR[1]; + if (basePatternCS) { + basePatternCS = ColorSpace.fromIR(basePatternCS); + } + return new PatternCS(basePatternCS); + case 'IndexedCS': + var baseIndexedCS = IR[1]; + var hiVal = IR[2]; + var lookup = IR[3]; + return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup); + case 'AlternateCS': + var numComps = IR[1]; + var alt = IR[2]; + var tintFnIR = IR[3]; + return new AlternateCS(numComps, ColorSpace.fromIR(alt), _function.PDFFunction.fromIR(tintFnIR)); + case 'LabCS': + whitePoint = IR[1]; + blackPoint = IR[2]; + var range = IR[3]; + return new LabCS(whitePoint, blackPoint, range); + default: + throw new _util.FormatError('Unknown colorspace name: ' + name); + } + }; + ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) { + if ((0, _primitives.isName)(cs)) { + var colorSpaces = res.get('ColorSpace'); + if ((0, _primitives.isDict)(colorSpaces)) { + var refcs = colorSpaces.get(cs.name); + if (refcs) { + cs = refcs; + } + } + } + cs = xref.fetchIfRef(cs); + if ((0, _primitives.isName)(cs)) { + switch (cs.name) { + case 'DeviceGray': + case 'G': + return 'DeviceGrayCS'; + case 'DeviceRGB': + case 'RGB': + return 'DeviceRgbCS'; + case 'DeviceCMYK': + case 'CMYK': + return 'DeviceCmykCS'; + case 'Pattern': + return ['PatternCS', null]; + default: + throw new _util.FormatError('unrecognized colorspace ' + cs.name); + } + } + if ((0, _util.isArray)(cs)) { + var mode = xref.fetchIfRef(cs[0]).name; + var numComps, params, alt, whitePoint, blackPoint, gamma; + switch (mode) { + case 'DeviceGray': + case 'G': + return 'DeviceGrayCS'; + case 'DeviceRGB': + case 'RGB': + return 'DeviceRgbCS'; + case 'DeviceCMYK': + case 'CMYK': + return 'DeviceCmykCS'; + case 'CalGray': + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray('WhitePoint'); + blackPoint = params.getArray('BlackPoint'); + gamma = params.get('Gamma'); + return ['CalGrayCS', whitePoint, blackPoint, gamma]; + case 'CalRGB': + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray('WhitePoint'); + blackPoint = params.getArray('BlackPoint'); + gamma = params.getArray('Gamma'); + var matrix = params.getArray('Matrix'); + return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix]; + case 'ICCBased': + var stream = xref.fetchIfRef(cs[1]); + var dict = stream.dict; + numComps = dict.get('N'); + alt = dict.get('Alternate'); + if (alt) { + var altIR = ColorSpace.parseToIR(alt, xref, res); + var altCS = ColorSpace.fromIR(altIR); + if (altCS.numComps === numComps) { + return altIR; + } + (0, _util.warn)('ICCBased color space: Ignoring incorrect /Alternate entry.'); + } + if (numComps === 1) { + return 'DeviceGrayCS'; + } else if (numComps === 3) { + return 'DeviceRgbCS'; + } else if (numComps === 4) { + return 'DeviceCmykCS'; + } + break; + case 'Pattern': + var basePatternCS = cs[1] || null; + if (basePatternCS) { + basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res); + } + return ['PatternCS', basePatternCS]; + case 'Indexed': + case 'I': + var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res); + var hiVal = xref.fetchIfRef(cs[2]) + 1; + var lookup = xref.fetchIfRef(cs[3]); + if ((0, _primitives.isStream)(lookup)) { + lookup = lookup.getBytes(); + } + return ['IndexedCS', baseIndexedCS, hiVal, lookup]; + case 'Separation': + case 'DeviceN': + var name = xref.fetchIfRef(cs[1]); + numComps = (0, _util.isArray)(name) ? name.length : 1; + alt = ColorSpace.parseToIR(cs[2], xref, res); + var tintFnIR = _function.PDFFunction.getIR(xref, xref.fetchIfRef(cs[3])); + return ['AlternateCS', numComps, alt, tintFnIR]; + case 'Lab': + params = xref.fetchIfRef(cs[1]); + whitePoint = params.getArray('WhitePoint'); + blackPoint = params.getArray('BlackPoint'); + var range = params.getArray('Range'); + return ['LabCS', whitePoint, blackPoint, range]; + default: + throw new _util.FormatError('unimplemented color space object "' + mode + '"'); + } + } + throw new _util.FormatError('unrecognized color space object: "' + cs + '"'); + }; + ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) { + if (!(0, _util.isArray)(decode)) { + return true; + } + if (n * 2 !== decode.length) { + (0, _util.warn)('The decode map is not the correct length'); + return true; + } + for (var i = 0, ii = decode.length; i < ii; i += 2) { + if (decode[i] !== 0 || decode[i + 1] !== 1) { + return false; + } + } + return true; + }; + ColorSpace.singletons = { + get gray() { + return (0, _util.shadow)(this, 'gray', new DeviceGrayCS()); + }, + get rgb() { + return (0, _util.shadow)(this, 'rgb', new DeviceRgbCS()); + }, + get cmyk() { + return (0, _util.shadow)(this, 'cmyk', new DeviceCmykCS()); + } + }; + return ColorSpace; +}(); +var AlternateCS = function AlternateCSClosure() { + function AlternateCS(numComps, base, tintFn) { + this.name = 'Alternate'; + this.numComps = numComps; + this.defaultColor = new Float32Array(numComps); + for (var i = 0; i < numComps; ++i) { + this.defaultColor[i] = 1; + } + this.base = base; + this.tintFn = tintFn; + this.tmpBuf = new Float32Array(base.numComps); + } + AlternateCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function AlternateCS_getRgbItem(src, srcOffset, dest, destOffset) { + var tmpBuf = this.tmpBuf; + this.tintFn(src, srcOffset, tmpBuf, 0); + this.base.getRgbItem(tmpBuf, 0, dest, destOffset); + }, + getRgbBuffer: function AlternateCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var tintFn = this.tintFn; + var base = this.base; + var scale = 1 / ((1 << bits) - 1); + var baseNumComps = base.numComps; + var usesZeroToOneRange = base.usesZeroToOneRange; + var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0; + var pos = isPassthrough ? destOffset : 0; + var baseBuf = isPassthrough ? dest : new Uint8Array(baseNumComps * count); + var numComps = this.numComps; + var scaled = new Float32Array(numComps); + var tinted = new Float32Array(baseNumComps); + var i, j; + for (i = 0; i < count; i++) { + for (j = 0; j < numComps; j++) { + scaled[j] = src[srcOffset++] * scale; + } + tintFn(scaled, 0, tinted, 0); + if (usesZeroToOneRange) { + for (j = 0; j < baseNumComps; j++) { + baseBuf[pos++] = tinted[j] * 255; + } + } else { + base.getRgbItem(tinted, 0, baseBuf, pos); + pos += baseNumComps; + } + } + if (!isPassthrough) { + base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01); + } + }, + getOutputLength: function AlternateCS_getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps / this.numComps, alpha01); + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return AlternateCS; +}(); +var PatternCS = function PatternCSClosure() { + function PatternCS(baseCS) { + this.name = 'Pattern'; + this.base = baseCS; + } + PatternCS.prototype = {}; + return PatternCS; +}(); +var IndexedCS = function IndexedCSClosure() { + function IndexedCS(base, highVal, lookup) { + this.name = 'Indexed'; + this.numComps = 1; + this.defaultColor = new Uint8Array(this.numComps); + this.base = base; + this.highVal = highVal; + var baseNumComps = base.numComps; + var length = baseNumComps * highVal; + if ((0, _primitives.isStream)(lookup)) { + this.lookup = new Uint8Array(length); + var bytes = lookup.getBytes(length); + this.lookup.set(bytes); + } else if ((0, _util.isString)(lookup)) { + this.lookup = new Uint8Array(length); + for (var i = 0; i < length; ++i) { + this.lookup[i] = lookup.charCodeAt(i); + } + } else if (lookup instanceof Uint8Array || lookup instanceof Array) { + this.lookup = lookup; + } else { + throw new _util.FormatError('Unrecognized lookup table: ' + lookup); + } + } + IndexedCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function IndexedCS_getRgbItem(src, srcOffset, dest, destOffset) { + var numComps = this.base.numComps; + var start = src[srcOffset] * numComps; + this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0); + }, + getRgbBuffer: function IndexedCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var base = this.base; + var numComps = base.numComps; + var outputDelta = base.getOutputLength(numComps, alpha01); + var lookup = this.lookup; + for (var i = 0; i < count; ++i) { + var lookupPos = src[srcOffset++] * numComps; + base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01); + destOffset += outputDelta; + } + }, + getOutputLength: function IndexedCS_getOutputLength(inputLength, alpha01) { + return this.base.getOutputLength(inputLength * this.base.numComps, alpha01); + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) { + return true; + }, + usesZeroToOneRange: true + }; + return IndexedCS; +}(); +var DeviceGrayCS = function DeviceGrayCSClosure() { + function DeviceGrayCS() { + this.name = 'DeviceGray'; + this.numComps = 1; + this.defaultColor = new Float32Array(this.numComps); + } + DeviceGrayCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function DeviceGrayCS_getRgbItem(src, srcOffset, dest, destOffset) { + var c = src[srcOffset] * 255 | 0; + c = c < 0 ? 0 : c > 255 ? 255 : c; + dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c; + }, + getRgbBuffer: function DeviceGrayCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var scale = 255 / ((1 << bits) - 1); + var j = srcOffset, + q = destOffset; + for (var i = 0; i < count; ++i) { + var c = scale * src[j++] | 0; + dest[q++] = c; + dest[q++] = c; + dest[q++] = c; + q += alpha01; + } + }, + getOutputLength: function DeviceGrayCS_getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return DeviceGrayCS; +}(); +var DeviceRgbCS = function DeviceRgbCSClosure() { + function DeviceRgbCS() { + this.name = 'DeviceRGB'; + this.numComps = 3; + this.defaultColor = new Float32Array(this.numComps); + } + DeviceRgbCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function DeviceRgbCS_getRgbItem(src, srcOffset, dest, destOffset) { + var r = src[srcOffset] * 255 | 0; + var g = src[srcOffset + 1] * 255 | 0; + var b = src[srcOffset + 2] * 255 | 0; + dest[destOffset] = r < 0 ? 0 : r > 255 ? 255 : r; + dest[destOffset + 1] = g < 0 ? 0 : g > 255 ? 255 : g; + dest[destOffset + 2] = b < 0 ? 0 : b > 255 ? 255 : b; + }, + getRgbBuffer: function DeviceRgbCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + if (bits === 8 && alpha01 === 0) { + dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset); + return; + } + var scale = 255 / ((1 << bits) - 1); + var j = srcOffset, + q = destOffset; + for (var i = 0; i < count; ++i) { + dest[q++] = scale * src[j++] | 0; + dest[q++] = scale * src[j++] | 0; + dest[q++] = scale * src[j++] | 0; + q += alpha01; + } + }, + getOutputLength: function DeviceRgbCS_getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + }, + isPassthrough: function DeviceRgbCS_isPassthrough(bits) { + return bits === 8; + }, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return DeviceRgbCS; +}(); +var DeviceCmykCS = function DeviceCmykCSClosure() { + function convertToRgb(src, srcOffset, srcScale, dest, destOffset) { + var c = src[srcOffset + 0] * srcScale; + var m = src[srcOffset + 1] * srcScale; + var y = src[srcOffset + 2] * srcScale; + var k = src[srcOffset + 3] * srcScale; + var r = c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k + -285.2331026137004) + m * (1.7149763477362134 * m - 5.6096736904047315 * y + -17.873870861415444 * k - 5.497006427196366) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) + k * (-21.86122147463605 * k - 189.48180835922747) + 255 | 0; + var g = c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k + -79.2970844816548) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 190.9453302588951) + y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) + k * (-20.737325471181034 * k - 187.80453709719578) + 255 | 0; + var b = c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k + -14.183576799673286) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 112.23884253719248) + y * (0.03296041114873217 * y + 115.60384449646641 * k + -193.58209356861505) + k * (-22.33816807309886 * k - 180.12613974708367) + 255 | 0; + dest[destOffset] = r > 255 ? 255 : r < 0 ? 0 : r; + dest[destOffset + 1] = g > 255 ? 255 : g < 0 ? 0 : g; + dest[destOffset + 2] = b > 255 ? 255 : b < 0 ? 0 : b; + } + function DeviceCmykCS() { + this.name = 'DeviceCMYK'; + this.numComps = 4; + this.defaultColor = new Float32Array(this.numComps); + this.defaultColor[3] = 1; + } + DeviceCmykCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function DeviceCmykCS_getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(src, srcOffset, 1, dest, destOffset); + }, + getRgbBuffer: function DeviceCmykCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var scale = 1 / ((1 << bits) - 1); + for (var i = 0; i < count; i++) { + convertToRgb(src, srcOffset, scale, dest, destOffset); + srcOffset += 4; + destOffset += 3 + alpha01; + } + }, + getOutputLength: function DeviceCmykCS_getOutputLength(inputLength, alpha01) { + return inputLength / 4 * (3 + alpha01) | 0; + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return DeviceCmykCS; +}(); +var CalGrayCS = function CalGrayCSClosure() { + function CalGrayCS(whitePoint, blackPoint, gamma) { + this.name = 'CalGray'; + this.numComps = 1; + this.defaultColor = new Float32Array(this.numComps); + if (!whitePoint) { + throw new _util.FormatError('WhitePoint missing - required for color space CalGray'); + } + blackPoint = blackPoint || [0, 0, 0]; + gamma = gamma || 1; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + this.G = gamma; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError('Invalid WhitePoint components for ' + this.name + ', no fallback available'); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)('Invalid BlackPoint for ' + this.name + ', falling back to default'); + this.XB = this.YB = this.ZB = 0; + } + if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) { + (0, _util.warn)(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB + ', ZB: ' + this.ZB + ', only default values are supported.'); + } + if (this.G < 1) { + (0, _util.info)('Invalid Gamma: ' + this.G + ' for ' + this.name + ', falling back to default'); + this.G = 1; + } + } + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + var A = src[srcOffset] * scale; + var AG = Math.pow(A, cs.G); + var L = cs.YW * AG; + var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0; + dest[destOffset] = val; + dest[destOffset + 1] = val; + dest[destOffset + 2] = val; + } + CalGrayCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + }, + getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var scale = 1 / ((1 << bits) - 1); + for (var i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 1; + destOffset += 3 + alpha01; + } + }, + getOutputLength: function CalGrayCS_getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01); + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return CalGrayCS; +}(); +var CalRGBCS = function CalRGBCSClosure() { + var BRADFORD_SCALE_MATRIX = new Float32Array([0.8951, 0.2664, -0.1614, -0.7502, 1.7135, 0.0367, 0.0389, -0.0685, 1.0296]); + var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([0.9869929, -0.1470543, 0.1599627, 0.4323053, 0.5183603, 0.0492912, -0.0085287, 0.0400428, 0.9684867]); + var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([3.2404542, -1.5371385, -0.4985314, -0.9692660, 1.8760108, 0.0415560, 0.0556434, -0.2040259, 1.0572252]); + var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]); + var tempNormalizeMatrix = new Float32Array(3); + var tempConvertMatrix1 = new Float32Array(3); + var tempConvertMatrix2 = new Float32Array(3); + var DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0; + function CalRGBCS(whitePoint, blackPoint, gamma, matrix) { + this.name = 'CalRGB'; + this.numComps = 3; + this.defaultColor = new Float32Array(this.numComps); + if (!whitePoint) { + throw new _util.FormatError('WhitePoint missing - required for color space CalRGB'); + } + blackPoint = blackPoint || new Float32Array(3); + gamma = gamma || new Float32Array([1, 1, 1]); + matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]); + var XW = whitePoint[0]; + var YW = whitePoint[1]; + var ZW = whitePoint[2]; + this.whitePoint = whitePoint; + var XB = blackPoint[0]; + var YB = blackPoint[1]; + var ZB = blackPoint[2]; + this.blackPoint = blackPoint; + this.GR = gamma[0]; + this.GG = gamma[1]; + this.GB = gamma[2]; + this.MXA = matrix[0]; + this.MYA = matrix[1]; + this.MZA = matrix[2]; + this.MXB = matrix[3]; + this.MYB = matrix[4]; + this.MZB = matrix[5]; + this.MXC = matrix[6]; + this.MYC = matrix[7]; + this.MZC = matrix[8]; + if (XW < 0 || ZW < 0 || YW !== 1) { + throw new _util.FormatError('Invalid WhitePoint components for ' + this.name + ', no fallback available'); + } + if (XB < 0 || YB < 0 || ZB < 0) { + (0, _util.info)('Invalid BlackPoint for ' + this.name + ' [' + XB + ', ' + YB + ', ' + ZB + '], falling back to default'); + this.blackPoint = new Float32Array(3); + } + if (this.GR < 0 || this.GG < 0 || this.GB < 0) { + (0, _util.info)('Invalid Gamma [' + this.GR + ', ' + this.GG + ', ' + this.GB + '] for ' + this.name + ', falling back to default'); + this.GR = this.GG = this.GB = 1; + } + if (this.MXA < 0 || this.MYA < 0 || this.MZA < 0 || this.MXB < 0 || this.MYB < 0 || this.MZB < 0 || this.MXC < 0 || this.MYC < 0 || this.MZC < 0) { + (0, _util.info)('Invalid Matrix for ' + this.name + ' [' + this.MXA + ', ' + this.MYA + ', ' + this.MZA + this.MXB + ', ' + this.MYB + ', ' + this.MZB + this.MXC + ', ' + this.MYC + ', ' + this.MZC + '], falling back to default'); + this.MXA = this.MYB = this.MZC = 1; + this.MXB = this.MYA = this.MZA = this.MXC = this.MYC = this.MZB = 0; + } + } + function matrixProduct(a, b, result) { + result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; + result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2]; + result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2]; + } + function convertToFlat(sourceWhitePoint, LMS, result) { + result[0] = LMS[0] * 1 / sourceWhitePoint[0]; + result[1] = LMS[1] * 1 / sourceWhitePoint[1]; + result[2] = LMS[2] * 1 / sourceWhitePoint[2]; + } + function convertToD65(sourceWhitePoint, LMS, result) { + var D65X = 0.95047; + var D65Y = 1; + var D65Z = 1.08883; + result[0] = LMS[0] * D65X / sourceWhitePoint[0]; + result[1] = LMS[1] * D65Y / sourceWhitePoint[1]; + result[2] = LMS[2] * D65Z / sourceWhitePoint[2]; + } + function sRGBTransferFunction(color) { + if (color <= 0.0031308) { + return adjustToRange(0, 1, 12.92 * color); + } + return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055); + } + function adjustToRange(min, max, value) { + return Math.max(min, Math.min(max, value)); + } + function decodeL(L) { + if (L < 0) { + return -decodeL(-L); + } + if (L > 8.0) { + return Math.pow((L + 16) / 116, 3); + } + return L * DECODE_L_CONSTANT; + } + function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) { + if (sourceBlackPoint[0] === 0 && sourceBlackPoint[1] === 0 && sourceBlackPoint[2] === 0) { + result[0] = XYZ_Flat[0]; + result[1] = XYZ_Flat[1]; + result[2] = XYZ_Flat[2]; + return; + } + var zeroDecodeL = decodeL(0); + var X_DST = zeroDecodeL; + var X_SRC = decodeL(sourceBlackPoint[0]); + var Y_DST = zeroDecodeL; + var Y_SRC = decodeL(sourceBlackPoint[1]); + var Z_DST = zeroDecodeL; + var Z_SRC = decodeL(sourceBlackPoint[2]); + var X_Scale = (1 - X_DST) / (1 - X_SRC); + var X_Offset = 1 - X_Scale; + var Y_Scale = (1 - Y_DST) / (1 - Y_SRC); + var Y_Offset = 1 - Y_Scale; + var Z_Scale = (1 - Z_DST) / (1 - Z_SRC); + var Z_Offset = 1 - Z_Scale; + result[0] = XYZ_Flat[0] * X_Scale + X_Offset; + result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset; + result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset; + } + function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) { + if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) { + result[0] = XYZ_In[0]; + result[1] = XYZ_In[1]; + result[2] = XYZ_In[2]; + return; + } + var LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + var LMS_Flat = tempNormalizeMatrix; + convertToFlat(sourceWhitePoint, LMS, LMS_Flat); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result); + } + function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) { + var LMS = result; + matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS); + var LMS_D65 = tempNormalizeMatrix; + convertToD65(sourceWhitePoint, LMS, LMS_D65); + matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result); + } + function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { + var A = adjustToRange(0, 1, src[srcOffset] * scale); + var B = adjustToRange(0, 1, src[srcOffset + 1] * scale); + var C = adjustToRange(0, 1, src[srcOffset + 2] * scale); + var AGR = Math.pow(A, cs.GR); + var BGG = Math.pow(B, cs.GG); + var CGB = Math.pow(C, cs.GB); + var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB; + var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB; + var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB; + var XYZ = tempConvertMatrix1; + XYZ[0] = X; + XYZ[1] = Y; + XYZ[2] = Z; + var XYZ_Flat = tempConvertMatrix2; + normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat); + var XYZ_Black = tempConvertMatrix1; + compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black); + var XYZ_D65 = tempConvertMatrix2; + normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65); + var SRGB = tempConvertMatrix1; + matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB); + var sR = sRGBTransferFunction(SRGB[0]); + var sG = sRGBTransferFunction(SRGB[1]); + var sB = sRGBTransferFunction(SRGB[2]); + dest[destOffset] = Math.round(sR * 255); + dest[destOffset + 1] = Math.round(sG * 255); + dest[destOffset + 2] = Math.round(sB * 255); + } + CalRGBCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function CalRGBCS_getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, dest, destOffset, 1); + }, + getRgbBuffer: function CalRGBCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var scale = 1 / ((1 << bits) - 1); + for (var i = 0; i < count; ++i) { + convertToRgb(this, src, srcOffset, dest, destOffset, scale); + srcOffset += 3; + destOffset += 3 + alpha01; + } + }, + getOutputLength: function CalRGBCS_getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function CalRGBCS_isDefaultDecode(decodeMap) { + return ColorSpace.isDefaultDecode(decodeMap, this.numComps); + }, + usesZeroToOneRange: true + }; + return CalRGBCS; +}(); +var LabCS = function LabCSClosure() { + function LabCS(whitePoint, blackPoint, range) { + this.name = 'Lab'; + this.numComps = 3; + this.defaultColor = new Float32Array(this.numComps); + if (!whitePoint) { + throw new _util.FormatError('WhitePoint missing - required for color space Lab'); + } + blackPoint = blackPoint || [0, 0, 0]; + range = range || [-100, 100, -100, 100]; + this.XW = whitePoint[0]; + this.YW = whitePoint[1]; + this.ZW = whitePoint[2]; + this.amin = range[0]; + this.amax = range[1]; + this.bmin = range[2]; + this.bmax = range[3]; + this.XB = blackPoint[0]; + this.YB = blackPoint[1]; + this.ZB = blackPoint[2]; + if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) { + throw new _util.FormatError('Invalid WhitePoint components, no fallback available'); + } + if (this.XB < 0 || this.YB < 0 || this.ZB < 0) { + (0, _util.info)('Invalid BlackPoint, falling back to default'); + this.XB = this.YB = this.ZB = 0; + } + if (this.amin > this.amax || this.bmin > this.bmax) { + (0, _util.info)('Invalid Range, falling back to defaults'); + this.amin = -100; + this.amax = 100; + this.bmin = -100; + this.bmax = 100; + } + } + function fn_g(x) { + var result; + if (x >= 6 / 29) { + result = x * x * x; + } else { + result = 108 / 841 * (x - 4 / 29); + } + return result; + } + function decode(value, high1, low2, high2) { + return low2 + value * (high2 - low2) / high1; + } + function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) { + var Ls = src[srcOffset]; + var as = src[srcOffset + 1]; + var bs = src[srcOffset + 2]; + if (maxVal !== false) { + Ls = decode(Ls, maxVal, 0, 100); + as = decode(as, maxVal, cs.amin, cs.amax); + bs = decode(bs, maxVal, cs.bmin, cs.bmax); + } + as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as; + bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs; + var M = (Ls + 16) / 116; + var L = M + as / 500; + var N = M - bs / 200; + var X = cs.XW * fn_g(L); + var Y = cs.YW * fn_g(M); + var Z = cs.ZW * fn_g(N); + var r, g, b; + if (cs.ZW < 1) { + r = X * 3.1339 + Y * -1.6170 + Z * -0.4906; + g = X * -0.9785 + Y * 1.9160 + Z * 0.0333; + b = X * 0.0720 + Y * -0.2290 + Z * 1.4057; + } else { + r = X * 3.2406 + Y * -1.5372 + Z * -0.4986; + g = X * -0.9689 + Y * 1.8758 + Z * 0.0415; + b = X * 0.0557 + Y * -0.2040 + Z * 1.0570; + } + dest[destOffset] = r <= 0 ? 0 : r >= 1 ? 255 : Math.sqrt(r) * 255 | 0; + dest[destOffset + 1] = g <= 0 ? 0 : g >= 1 ? 255 : Math.sqrt(g) * 255 | 0; + dest[destOffset + 2] = b <= 0 ? 0 : b >= 1 ? 255 : Math.sqrt(b) * 255 | 0; + } + LabCS.prototype = { + getRgb: ColorSpace.prototype.getRgb, + getRgbItem: function LabCS_getRgbItem(src, srcOffset, dest, destOffset) { + convertToRgb(this, src, srcOffset, false, dest, destOffset); + }, + getRgbBuffer: function LabCS_getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) { + var maxVal = (1 << bits) - 1; + for (var i = 0; i < count; i++) { + convertToRgb(this, src, srcOffset, maxVal, dest, destOffset); + srcOffset += 3; + destOffset += 3 + alpha01; + } + }, + getOutputLength: function LabCS_getOutputLength(inputLength, alpha01) { + return inputLength * (3 + alpha01) / 3 | 0; + }, + isPassthrough: ColorSpace.prototype.isPassthrough, + fillRgb: ColorSpace.prototype.fillRgb, + isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) { + return true; + }, + usesZeroToOneRange: false + }; + return LabCS; +}(); +exports.ColorSpace = ColorSpace; + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var ExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '', 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall']; +var MacExpertEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '', 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior', 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '', 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall', 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall', 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall', 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '', 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior', 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior', 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior', 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '', 'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior', 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall', 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '', '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '', 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior', 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior', '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall', 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior', 'periodsuperior', 'Dotaccentsmall', 'Ringsmall']; +var MacRomanEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron']; +var StandardEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl', 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla', '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '', '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae', '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls']; +var WinAnsiEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase', 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron', 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft', 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash', 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet', 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling', 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright', 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered', 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute', 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior', 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters', 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis', 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis', 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve', 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash', 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn', 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis', 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis', 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve', 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash', 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn', 'ydieresis']; +var SymbolSetEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent', 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus', 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi', 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa', 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau', 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft', 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex', 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota', 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho', 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta', 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal', 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade', 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree', 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional', 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence', 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn', 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply', 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset', 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element', 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif', 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot', 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup', 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans', 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp', 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex', 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex', '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt', 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp', 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid', 'bracerightbt']; +var ZapfDingbatsEncoding = ['', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117', 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19', 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7', 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36', 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46', 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56', 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66', 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75', 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97', 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205', 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103', 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120', 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129', 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138', 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147', 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156', 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165', 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173', 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180', 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185', 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191']; +function getEncoding(encodingName) { + switch (encodingName) { + case 'WinAnsiEncoding': + return WinAnsiEncoding; + case 'StandardEncoding': + return StandardEncoding; + case 'MacRomanEncoding': + return MacRomanEncoding; + case 'SymbolSetEncoding': + return SymbolSetEncoding; + case 'ZapfDingbatsEncoding': + return ZapfDingbatsEncoding; + case 'ExpertEncoding': + return ExpertEncoding; + case 'MacExpertEncoding': + return MacExpertEncoding; + default: + return null; + } +} +exports.WinAnsiEncoding = WinAnsiEncoding; +exports.StandardEncoding = StandardEncoding; +exports.MacRomanEncoding = MacRomanEncoding; +exports.SymbolSetEncoding = SymbolSetEncoding; +exports.ZapfDingbatsEncoding = ZapfDingbatsEncoding; +exports.ExpertEncoding = ExpertEncoding; +exports.getEncoding = getEncoding; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Parser = exports.Linearization = exports.Lexer = undefined; + +var _stream = __w_pdfjs_require__(2); + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var MAX_LENGTH_TO_CACHE = 1000; +var Parser = function ParserClosure() { + function Parser(lexer, allowStreams, xref, recoveryMode) { + this.lexer = lexer; + this.allowStreams = allowStreams; + this.xref = xref; + this.recoveryMode = recoveryMode || false; + this.imageCache = Object.create(null); + this.refill(); + } + Parser.prototype = { + refill: function Parser_refill() { + this.buf1 = this.lexer.getObj(); + this.buf2 = this.lexer.getObj(); + }, + shift: function Parser_shift() { + if ((0, _primitives.isCmd)(this.buf2, 'ID')) { + this.buf1 = this.buf2; + this.buf2 = null; + } else { + this.buf1 = this.buf2; + this.buf2 = this.lexer.getObj(); + } + }, + tryShift: function Parser_tryShift() { + try { + this.shift(); + return true; + } catch (e) { + if (e instanceof _util.MissingDataException) { + throw e; + } + return false; + } + }, + getObj: function Parser_getObj(cipherTransform) { + var buf1 = this.buf1; + this.shift(); + if (buf1 instanceof _primitives.Cmd) { + switch (buf1.cmd) { + case 'BI': + return this.makeInlineImage(cipherTransform); + case '[': + var array = []; + while (!(0, _primitives.isCmd)(this.buf1, ']') && !(0, _primitives.isEOF)(this.buf1)) { + array.push(this.getObj(cipherTransform)); + } + if ((0, _primitives.isEOF)(this.buf1)) { + if (!this.recoveryMode) { + throw new _util.FormatError('End of file inside array'); + } + return array; + } + this.shift(); + return array; + case '<<': + var dict = new _primitives.Dict(this.xref); + while (!(0, _primitives.isCmd)(this.buf1, '>>') && !(0, _primitives.isEOF)(this.buf1)) { + if (!(0, _primitives.isName)(this.buf1)) { + (0, _util.info)('Malformed dictionary: key must be a name object'); + this.shift(); + continue; + } + var key = this.buf1.name; + this.shift(); + if ((0, _primitives.isEOF)(this.buf1)) { + break; + } + dict.set(key, this.getObj(cipherTransform)); + } + if ((0, _primitives.isEOF)(this.buf1)) { + if (!this.recoveryMode) { + throw new _util.FormatError('End of file inside dictionary'); + } + return dict; + } + if ((0, _primitives.isCmd)(this.buf2, 'stream')) { + return this.allowStreams ? this.makeStream(dict, cipherTransform) : dict; + } + this.shift(); + return dict; + default: + return buf1; + } + } + if ((0, _util.isInt)(buf1)) { + var num = buf1; + if ((0, _util.isInt)(this.buf1) && (0, _primitives.isCmd)(this.buf2, 'R')) { + var ref = new _primitives.Ref(num, this.buf1); + this.shift(); + this.shift(); + return ref; + } + return num; + } + if ((0, _util.isString)(buf1)) { + var str = buf1; + if (cipherTransform) { + str = cipherTransform.decryptString(str); + } + return str; + } + return buf1; + }, + findDefaultInlineStreamEnd: function Parser_findDefaultInlineStreamEnd(stream) { + var E = 0x45, + I = 0x49, + SPACE = 0x20, + LF = 0xA, + CR = 0xD; + var startPos = stream.pos, + state = 0, + ch, + i, + n, + followingBytes; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else { + (0, _util.assert)(state === 2); + if (ch === SPACE || ch === LF || ch === CR) { + n = 5; + followingBytes = stream.peekBytes(n); + for (i = 0; i < n; i++) { + ch = followingBytes[i]; + if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) { + state = 0; + break; + } + } + if (state === 2) { + break; + } + } else { + state = 0; + } + } + } + return stream.pos - 4 - startPos; + }, + findDCTDecodeInlineStreamEnd: function Parser_findDCTDecodeInlineStreamEnd(stream) { + var startPos = stream.pos, + foundEOI = false, + b, + markerLength, + length; + while ((b = stream.getByte()) !== -1) { + if (b !== 0xFF) { + continue; + } + switch (stream.getByte()) { + case 0x00: + break; + case 0xFF: + stream.skip(-1); + break; + case 0xD9: + foundEOI = true; + break; + case 0xC0: + case 0xC1: + case 0xC2: + case 0xC3: + case 0xC5: + case 0xC6: + case 0xC7: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xC4: + case 0xCC: + case 0xDA: + case 0xDB: + case 0xDC: + case 0xDD: + case 0xDE: + case 0xDF: + case 0xE0: + case 0xE1: + case 0xE2: + case 0xE3: + case 0xE4: + case 0xE5: + case 0xE6: + case 0xE7: + case 0xE8: + case 0xE9: + case 0xEA: + case 0xEB: + case 0xEC: + case 0xED: + case 0xEE: + case 0xEF: + case 0xFE: + markerLength = stream.getUint16(); + if (markerLength > 2) { + stream.skip(markerLength - 2); + } else { + stream.skip(-2); + } + break; + } + if (foundEOI) { + break; + } + } + length = stream.pos - startPos; + if (b === -1) { + (0, _util.warn)('Inline DCTDecode image stream: ' + 'EOI marker not found, searching for /EI/ instead.'); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + }, + findASCII85DecodeInlineStreamEnd: function Parser_findASCII85DecodeInlineStreamEnd(stream) { + var TILDE = 0x7E, + GT = 0x3E; + var startPos = stream.pos, + ch, + length; + while ((ch = stream.getByte()) !== -1) { + if (ch === TILDE && stream.peekByte() === GT) { + stream.skip(); + break; + } + } + length = stream.pos - startPos; + if (ch === -1) { + (0, _util.warn)('Inline ASCII85Decode image stream: ' + 'EOD marker not found, searching for /EI/ instead.'); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + }, + findASCIIHexDecodeInlineStreamEnd: function Parser_findASCIIHexDecodeInlineStreamEnd(stream) { + var GT = 0x3E; + var startPos = stream.pos, + ch, + length; + while ((ch = stream.getByte()) !== -1) { + if (ch === GT) { + break; + } + } + length = stream.pos - startPos; + if (ch === -1) { + (0, _util.warn)('Inline ASCIIHexDecode image stream: ' + 'EOD marker not found, searching for /EI/ instead.'); + stream.skip(-length); + return this.findDefaultInlineStreamEnd(stream); + } + this.inlineStreamSkipEI(stream); + return length; + }, + inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) { + var E = 0x45, + I = 0x49; + var state = 0, + ch; + while ((ch = stream.getByte()) !== -1) { + if (state === 0) { + state = ch === E ? 1 : 0; + } else if (state === 1) { + state = ch === I ? 2 : 0; + } else if (state === 2) { + break; + } + } + }, + makeInlineImage: function Parser_makeInlineImage(cipherTransform) { + var lexer = this.lexer; + var stream = lexer.stream; + var dict = new _primitives.Dict(this.xref); + while (!(0, _primitives.isCmd)(this.buf1, 'ID') && !(0, _primitives.isEOF)(this.buf1)) { + if (!(0, _primitives.isName)(this.buf1)) { + throw new _util.FormatError('Dictionary key must be a name object'); + } + var key = this.buf1.name; + this.shift(); + if ((0, _primitives.isEOF)(this.buf1)) { + break; + } + dict.set(key, this.getObj(cipherTransform)); + } + var filter = dict.get('Filter', 'F'), + filterName; + if ((0, _primitives.isName)(filter)) { + filterName = filter.name; + } else if ((0, _util.isArray)(filter)) { + var filterZero = this.xref.fetchIfRef(filter[0]); + if ((0, _primitives.isName)(filterZero)) { + filterName = filterZero.name; + } + } + var startPos = stream.pos, + length, + i, + ii; + if (filterName === 'DCTDecode' || filterName === 'DCT') { + length = this.findDCTDecodeInlineStreamEnd(stream); + } else if (filterName === 'ASCII85Decode' || filterName === 'A85') { + length = this.findASCII85DecodeInlineStreamEnd(stream); + } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') { + length = this.findASCIIHexDecodeInlineStreamEnd(stream); + } else { + length = this.findDefaultInlineStreamEnd(stream); + } + var imageStream = stream.makeSubStream(startPos, length, dict); + var adler32; + if (length < MAX_LENGTH_TO_CACHE) { + var imageBytes = imageStream.getBytes(); + imageStream.reset(); + var a = 1; + var b = 0; + for (i = 0, ii = imageBytes.length; i < ii; ++i) { + a += imageBytes[i] & 0xff; + b += a; + } + adler32 = b % 65521 << 16 | a % 65521; + if (this.imageCache.adler32 === adler32) { + this.buf2 = _primitives.Cmd.get('EI'); + this.shift(); + this.imageCache[adler32].reset(); + return this.imageCache[adler32]; + } + } + if (cipherTransform) { + imageStream = cipherTransform.createStream(imageStream, length); + } + imageStream = this.filter(imageStream, dict, length); + imageStream.dict = dict; + if (adler32 !== undefined) { + imageStream.cacheKey = 'inline_' + length + '_' + adler32; + this.imageCache[adler32] = imageStream; + } + this.buf2 = _primitives.Cmd.get('EI'); + this.shift(); + return imageStream; + }, + makeStream: function Parser_makeStream(dict, cipherTransform) { + var lexer = this.lexer; + var stream = lexer.stream; + lexer.skipToNextLine(); + var pos = stream.pos - 1; + var length = dict.get('Length'); + if (!(0, _util.isInt)(length)) { + (0, _util.info)('Bad ' + length + ' attribute in stream'); + length = 0; + } + stream.pos = pos + length; + lexer.nextChar(); + if (this.tryShift() && (0, _primitives.isCmd)(this.buf2, 'endstream')) { + this.shift(); + } else { + stream.pos = pos; + var SCAN_BLOCK_SIZE = 2048; + var ENDSTREAM_SIGNATURE_LENGTH = 9; + var ENDSTREAM_SIGNATURE = [0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6D]; + var skipped = 0, + found = false, + i, + j; + while (stream.pos < stream.end) { + var scanBytes = stream.peekBytes(SCAN_BLOCK_SIZE); + var scanLength = scanBytes.length - ENDSTREAM_SIGNATURE_LENGTH; + if (scanLength <= 0) { + break; + } + found = false; + i = 0; + while (i < scanLength) { + j = 0; + while (j < ENDSTREAM_SIGNATURE_LENGTH && scanBytes[i + j] === ENDSTREAM_SIGNATURE[j]) { + j++; + } + if (j >= ENDSTREAM_SIGNATURE_LENGTH) { + found = true; + break; + } + i++; + } + if (found) { + skipped += i; + stream.pos += i; + break; + } + skipped += scanLength; + stream.pos += scanLength; + } + if (!found) { + throw new _util.FormatError('Missing endstream'); + } + length = skipped; + lexer.nextChar(); + this.shift(); + this.shift(); + } + this.shift(); + stream = stream.makeSubStream(pos, length, dict); + if (cipherTransform) { + stream = cipherTransform.createStream(stream, length); + } + stream = this.filter(stream, dict, length); + stream.dict = dict; + return stream; + }, + filter: function Parser_filter(stream, dict, length) { + var filter = dict.get('Filter', 'F'); + var params = dict.get('DecodeParms', 'DP'); + if ((0, _primitives.isName)(filter)) { + if ((0, _util.isArray)(params)) { + params = this.xref.fetchIfRef(params[0]); + } + return this.makeFilter(stream, filter.name, length, params); + } + var maybeLength = length; + if ((0, _util.isArray)(filter)) { + var filterArray = filter; + var paramsArray = params; + for (var i = 0, ii = filterArray.length; i < ii; ++i) { + filter = this.xref.fetchIfRef(filterArray[i]); + if (!(0, _primitives.isName)(filter)) { + throw new _util.FormatError('Bad filter name: ' + filter); + } + params = null; + if ((0, _util.isArray)(paramsArray) && i in paramsArray) { + params = this.xref.fetchIfRef(paramsArray[i]); + } + stream = this.makeFilter(stream, filter.name, maybeLength, params); + maybeLength = null; + } + } + return stream; + }, + makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) { + if (maybeLength === 0) { + (0, _util.warn)('Empty "' + name + '" stream.'); + return new _stream.NullStream(stream); + } + try { + var xrefStreamStats = this.xref.stats.streamTypes; + if (name === 'FlateDecode' || name === 'Fl') { + xrefStreamStats[_util.StreamType.FLATE] = true; + if (params) { + return new _stream.PredictorStream(new _stream.FlateStream(stream, maybeLength), maybeLength, params); + } + return new _stream.FlateStream(stream, maybeLength); + } + if (name === 'LZWDecode' || name === 'LZW') { + xrefStreamStats[_util.StreamType.LZW] = true; + var earlyChange = 1; + if (params) { + if (params.has('EarlyChange')) { + earlyChange = params.get('EarlyChange'); + } + return new _stream.PredictorStream(new _stream.LZWStream(stream, maybeLength, earlyChange), maybeLength, params); + } + return new _stream.LZWStream(stream, maybeLength, earlyChange); + } + if (name === 'DCTDecode' || name === 'DCT') { + xrefStreamStats[_util.StreamType.DCT] = true; + return new _stream.JpegStream(stream, maybeLength, stream.dict, params); + } + if (name === 'JPXDecode' || name === 'JPX') { + xrefStreamStats[_util.StreamType.JPX] = true; + return new _stream.JpxStream(stream, maybeLength, stream.dict, params); + } + if (name === 'ASCII85Decode' || name === 'A85') { + xrefStreamStats[_util.StreamType.A85] = true; + return new _stream.Ascii85Stream(stream, maybeLength); + } + if (name === 'ASCIIHexDecode' || name === 'AHx') { + xrefStreamStats[_util.StreamType.AHX] = true; + return new _stream.AsciiHexStream(stream, maybeLength); + } + if (name === 'CCITTFaxDecode' || name === 'CCF') { + xrefStreamStats[_util.StreamType.CCF] = true; + return new _stream.CCITTFaxStream(stream, maybeLength, params); + } + if (name === 'RunLengthDecode' || name === 'RL') { + xrefStreamStats[_util.StreamType.RL] = true; + return new _stream.RunLengthStream(stream, maybeLength); + } + if (name === 'JBIG2Decode') { + xrefStreamStats[_util.StreamType.JBIG] = true; + return new _stream.Jbig2Stream(stream, maybeLength, stream.dict, params); + } + (0, _util.warn)('filter "' + name + '" not supported yet'); + return stream; + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + (0, _util.warn)('Invalid stream: \"' + ex + '\"'); + return new _stream.NullStream(stream); + } + } + }; + return Parser; +}(); +var Lexer = function LexerClosure() { + function Lexer(stream, knownCommands) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + this.knownCommands = knownCommands; + } + var specialChars = [1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + function toHexDigit(ch) { + if (ch >= 0x30 && ch <= 0x39) { + return ch & 0x0F; + } + if (ch >= 0x41 && ch <= 0x46 || ch >= 0x61 && ch <= 0x66) { + return (ch & 0x0F) + 9; + } + return -1; + } + Lexer.prototype = { + nextChar: function Lexer_nextChar() { + return this.currentChar = this.stream.getByte(); + }, + peekChar: function Lexer_peekChar() { + return this.stream.peekByte(); + }, + getNumber: function Lexer_getNumber() { + var ch = this.currentChar; + var eNotation = false; + var divideBy = 0; + var sign = 1; + if (ch === 0x2D) { + sign = -1; + ch = this.nextChar(); + if (ch === 0x2D) { + ch = this.nextChar(); + } + } else if (ch === 0x2B) { + ch = this.nextChar(); + } + if (ch === 0x2E) { + divideBy = 10; + ch = this.nextChar(); + } + if (ch === 0x0A || ch === 0x0D) { + do { + ch = this.nextChar(); + } while (ch === 0x0A || ch === 0x0D); + } + if (ch < 0x30 || ch > 0x39) { + throw new _util.FormatError('Invalid number: ' + String.fromCharCode(ch) + ' (charCode ' + ch + ')'); + } + var baseValue = ch - 0x30; + var powerValue = 0; + var powerValueSign = 1; + while ((ch = this.nextChar()) >= 0) { + if (0x30 <= ch && ch <= 0x39) { + var currentDigit = ch - 0x30; + if (eNotation) { + powerValue = powerValue * 10 + currentDigit; + } else { + if (divideBy !== 0) { + divideBy *= 10; + } + baseValue = baseValue * 10 + currentDigit; + } + } else if (ch === 0x2E) { + if (divideBy === 0) { + divideBy = 1; + } else { + break; + } + } else if (ch === 0x2D) { + (0, _util.warn)('Badly formatted number'); + } else if (ch === 0x45 || ch === 0x65) { + ch = this.peekChar(); + if (ch === 0x2B || ch === 0x2D) { + powerValueSign = ch === 0x2D ? -1 : 1; + this.nextChar(); + } else if (ch < 0x30 || ch > 0x39) { + break; + } + eNotation = true; + } else { + break; + } + } + if (divideBy !== 0) { + baseValue /= divideBy; + } + if (eNotation) { + baseValue *= Math.pow(10, powerValueSign * powerValue); + } + return sign * baseValue; + }, + getString: function Lexer_getString() { + var numParen = 1; + var done = false; + var strBuf = this.strBuf; + strBuf.length = 0; + var ch = this.nextChar(); + while (true) { + var charBuffered = false; + switch (ch | 0) { + case -1: + (0, _util.warn)('Unterminated string'); + done = true; + break; + case 0x28: + ++numParen; + strBuf.push('('); + break; + case 0x29: + if (--numParen === 0) { + this.nextChar(); + done = true; + } else { + strBuf.push(')'); + } + break; + case 0x5C: + ch = this.nextChar(); + switch (ch) { + case -1: + (0, _util.warn)('Unterminated string'); + done = true; + break; + case 0x6E: + strBuf.push('\n'); + break; + case 0x72: + strBuf.push('\r'); + break; + case 0x74: + strBuf.push('\t'); + break; + case 0x62: + strBuf.push('\b'); + break; + case 0x66: + strBuf.push('\f'); + break; + case 0x5C: + case 0x28: + case 0x29: + strBuf.push(String.fromCharCode(ch)); + break; + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + var x = ch & 0x0F; + ch = this.nextChar(); + charBuffered = true; + if (ch >= 0x30 && ch <= 0x37) { + x = (x << 3) + (ch & 0x0F); + ch = this.nextChar(); + if (ch >= 0x30 && ch <= 0x37) { + charBuffered = false; + x = (x << 3) + (ch & 0x0F); + } + } + strBuf.push(String.fromCharCode(x)); + break; + case 0x0D: + if (this.peekChar() === 0x0A) { + this.nextChar(); + } + break; + case 0x0A: + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + break; + default: + strBuf.push(String.fromCharCode(ch)); + break; + } + if (done) { + break; + } + if (!charBuffered) { + ch = this.nextChar(); + } + } + return strBuf.join(''); + }, + getName: function Lexer_getName() { + var ch, previousCh; + var strBuf = this.strBuf; + strBuf.length = 0; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + if (ch === 0x23) { + ch = this.nextChar(); + if (specialChars[ch]) { + (0, _util.warn)('Lexer_getName: ' + 'NUMBER SIGN (#) should be followed by a hexadecimal number.'); + strBuf.push('#'); + break; + } + var x = toHexDigit(ch); + if (x !== -1) { + previousCh = ch; + ch = this.nextChar(); + var x2 = toHexDigit(ch); + if (x2 === -1) { + (0, _util.warn)('Lexer_getName: Illegal digit (' + String.fromCharCode(ch) + ') in hexadecimal number.'); + strBuf.push('#', String.fromCharCode(previousCh)); + if (specialChars[ch]) { + break; + } + strBuf.push(String.fromCharCode(ch)); + continue; + } + strBuf.push(String.fromCharCode(x << 4 | x2)); + } else { + strBuf.push('#', String.fromCharCode(ch)); + } + } else { + strBuf.push(String.fromCharCode(ch)); + } + } + if (strBuf.length > 127) { + (0, _util.warn)('name token is longer than allowed by the spec: ' + strBuf.length); + } + return _primitives.Name.get(strBuf.join('')); + }, + getHexString: function Lexer_getHexString() { + var strBuf = this.strBuf; + strBuf.length = 0; + var ch = this.currentChar; + var isFirstHex = true; + var firstDigit; + var secondDigit; + while (true) { + if (ch < 0) { + (0, _util.warn)('Unterminated hex string'); + break; + } else if (ch === 0x3E) { + this.nextChar(); + break; + } else if (specialChars[ch] === 1) { + ch = this.nextChar(); + continue; + } else { + if (isFirstHex) { + firstDigit = toHexDigit(ch); + if (firstDigit === -1) { + (0, _util.warn)('Ignoring invalid character "' + ch + '" in hex string'); + ch = this.nextChar(); + continue; + } + } else { + secondDigit = toHexDigit(ch); + if (secondDigit === -1) { + (0, _util.warn)('Ignoring invalid character "' + ch + '" in hex string'); + ch = this.nextChar(); + continue; + } + strBuf.push(String.fromCharCode(firstDigit << 4 | secondDigit)); + } + isFirstHex = !isFirstHex; + ch = this.nextChar(); + } + } + return strBuf.join(''); + }, + getObj: function Lexer_getObj() { + var comment = false; + var ch = this.currentChar; + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + if (comment) { + if (ch === 0x0A || ch === 0x0D) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (specialChars[ch] !== 1) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2B: + case 0x2D: + case 0x2E: + return this.getNumber(); + case 0x28: + return this.getString(); + case 0x2F: + return this.getName(); + case 0x5B: + this.nextChar(); + return _primitives.Cmd.get('['); + case 0x5D: + this.nextChar(); + return _primitives.Cmd.get(']'); + case 0x3C: + ch = this.nextChar(); + if (ch === 0x3C) { + this.nextChar(); + return _primitives.Cmd.get('<<'); + } + return this.getHexString(); + case 0x3E: + ch = this.nextChar(); + if (ch === 0x3E) { + this.nextChar(); + return _primitives.Cmd.get('>>'); + } + return _primitives.Cmd.get('>'); + case 0x7B: + this.nextChar(); + return _primitives.Cmd.get('{'); + case 0x7D: + this.nextChar(); + return _primitives.Cmd.get('}'); + case 0x29: + this.nextChar(); + throw new _util.FormatError('Illegal character: ' + ch); + } + var str = String.fromCharCode(ch); + var knownCommands = this.knownCommands; + var knownCommandFound = knownCommands && knownCommands[str] !== undefined; + while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) { + var possibleCommand = str + String.fromCharCode(ch); + if (knownCommandFound && knownCommands[possibleCommand] === undefined) { + break; + } + if (str.length === 128) { + throw new _util.FormatError('Command token too long: ' + str.length); + } + str = possibleCommand; + knownCommandFound = knownCommands && knownCommands[str] !== undefined; + } + if (str === 'true') { + return true; + } + if (str === 'false') { + return false; + } + if (str === 'null') { + return null; + } + return _primitives.Cmd.get(str); + }, + skipToNextLine: function Lexer_skipToNextLine() { + var ch = this.currentChar; + while (ch >= 0) { + if (ch === 0x0D) { + ch = this.nextChar(); + if (ch === 0x0A) { + this.nextChar(); + } + break; + } else if (ch === 0x0A) { + this.nextChar(); + break; + } + ch = this.nextChar(); + } + } + }; + return Lexer; +}(); +var Linearization = { + create: function LinearizationCreate(stream) { + function getInt(name, allowZeroValue) { + var obj = linDict.get(name); + if ((0, _util.isInt)(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) { + return obj; + } + throw new Error('The "' + name + '" parameter in the linearization ' + 'dictionary is invalid.'); + } + function getHints() { + var hints = linDict.get('H'), + hintsLength, + item; + if ((0, _util.isArray)(hints) && ((hintsLength = hints.length) === 2 || hintsLength === 4)) { + for (var index = 0; index < hintsLength; index++) { + if (!((0, _util.isInt)(item = hints[index]) && item > 0)) { + throw new Error('Hint (' + index + ') in the linearization dictionary is invalid.'); + } + } + return hints; + } + throw new Error('Hint array in the linearization dictionary is invalid.'); + } + var parser = new Parser(new Lexer(stream), false, null); + var obj1 = parser.getObj(); + var obj2 = parser.getObj(); + var obj3 = parser.getObj(); + var linDict = parser.getObj(); + var obj, length; + if (!((0, _util.isInt)(obj1) && (0, _util.isInt)(obj2) && (0, _primitives.isCmd)(obj3, 'obj') && (0, _primitives.isDict)(linDict) && (0, _util.isNum)(obj = linDict.get('Linearized')) && obj > 0)) { + return null; + } else if ((length = getInt('L')) !== stream.length) { + throw new Error('The "L" parameter in the linearization dictionary ' + 'does not equal the stream length.'); + } + return { + length: length, + hints: getHints(), + objectNumberFirst: getInt('O'), + endFirst: getInt('E'), + numPages: getInt('N'), + mainXRefEntriesOffset: getInt('T'), + pageFirst: linDict.has('P') ? getInt('P', true) : 0 + }; + } +}; +exports.Lexer = Lexer; +exports.Linearization = Linearization; +exports.Parser = Parser; + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +var getLookupTableFactory = __w_pdfjs_require__(0).getLookupTableFactory; +var getGlyphsUnicode = getLookupTableFactory(function (t) { + t['A'] = 0x0041; + t['AE'] = 0x00C6; + t['AEacute'] = 0x01FC; + t['AEmacron'] = 0x01E2; + t['AEsmall'] = 0xF7E6; + t['Aacute'] = 0x00C1; + t['Aacutesmall'] = 0xF7E1; + t['Abreve'] = 0x0102; + t['Abreveacute'] = 0x1EAE; + t['Abrevecyrillic'] = 0x04D0; + t['Abrevedotbelow'] = 0x1EB6; + t['Abrevegrave'] = 0x1EB0; + t['Abrevehookabove'] = 0x1EB2; + t['Abrevetilde'] = 0x1EB4; + t['Acaron'] = 0x01CD; + t['Acircle'] = 0x24B6; + t['Acircumflex'] = 0x00C2; + t['Acircumflexacute'] = 0x1EA4; + t['Acircumflexdotbelow'] = 0x1EAC; + t['Acircumflexgrave'] = 0x1EA6; + t['Acircumflexhookabove'] = 0x1EA8; + t['Acircumflexsmall'] = 0xF7E2; + t['Acircumflextilde'] = 0x1EAA; + t['Acute'] = 0xF6C9; + t['Acutesmall'] = 0xF7B4; + t['Acyrillic'] = 0x0410; + t['Adblgrave'] = 0x0200; + t['Adieresis'] = 0x00C4; + t['Adieresiscyrillic'] = 0x04D2; + t['Adieresismacron'] = 0x01DE; + t['Adieresissmall'] = 0xF7E4; + t['Adotbelow'] = 0x1EA0; + t['Adotmacron'] = 0x01E0; + t['Agrave'] = 0x00C0; + t['Agravesmall'] = 0xF7E0; + t['Ahookabove'] = 0x1EA2; + t['Aiecyrillic'] = 0x04D4; + t['Ainvertedbreve'] = 0x0202; + t['Alpha'] = 0x0391; + t['Alphatonos'] = 0x0386; + t['Amacron'] = 0x0100; + t['Amonospace'] = 0xFF21; + t['Aogonek'] = 0x0104; + t['Aring'] = 0x00C5; + t['Aringacute'] = 0x01FA; + t['Aringbelow'] = 0x1E00; + t['Aringsmall'] = 0xF7E5; + t['Asmall'] = 0xF761; + t['Atilde'] = 0x00C3; + t['Atildesmall'] = 0xF7E3; + t['Aybarmenian'] = 0x0531; + t['B'] = 0x0042; + t['Bcircle'] = 0x24B7; + t['Bdotaccent'] = 0x1E02; + t['Bdotbelow'] = 0x1E04; + t['Becyrillic'] = 0x0411; + t['Benarmenian'] = 0x0532; + t['Beta'] = 0x0392; + t['Bhook'] = 0x0181; + t['Blinebelow'] = 0x1E06; + t['Bmonospace'] = 0xFF22; + t['Brevesmall'] = 0xF6F4; + t['Bsmall'] = 0xF762; + t['Btopbar'] = 0x0182; + t['C'] = 0x0043; + t['Caarmenian'] = 0x053E; + t['Cacute'] = 0x0106; + t['Caron'] = 0xF6CA; + t['Caronsmall'] = 0xF6F5; + t['Ccaron'] = 0x010C; + t['Ccedilla'] = 0x00C7; + t['Ccedillaacute'] = 0x1E08; + t['Ccedillasmall'] = 0xF7E7; + t['Ccircle'] = 0x24B8; + t['Ccircumflex'] = 0x0108; + t['Cdot'] = 0x010A; + t['Cdotaccent'] = 0x010A; + t['Cedillasmall'] = 0xF7B8; + t['Chaarmenian'] = 0x0549; + t['Cheabkhasiancyrillic'] = 0x04BC; + t['Checyrillic'] = 0x0427; + t['Chedescenderabkhasiancyrillic'] = 0x04BE; + t['Chedescendercyrillic'] = 0x04B6; + t['Chedieresiscyrillic'] = 0x04F4; + t['Cheharmenian'] = 0x0543; + t['Chekhakassiancyrillic'] = 0x04CB; + t['Cheverticalstrokecyrillic'] = 0x04B8; + t['Chi'] = 0x03A7; + t['Chook'] = 0x0187; + t['Circumflexsmall'] = 0xF6F6; + t['Cmonospace'] = 0xFF23; + t['Coarmenian'] = 0x0551; + t['Csmall'] = 0xF763; + t['D'] = 0x0044; + t['DZ'] = 0x01F1; + t['DZcaron'] = 0x01C4; + t['Daarmenian'] = 0x0534; + t['Dafrican'] = 0x0189; + t['Dcaron'] = 0x010E; + t['Dcedilla'] = 0x1E10; + t['Dcircle'] = 0x24B9; + t['Dcircumflexbelow'] = 0x1E12; + t['Dcroat'] = 0x0110; + t['Ddotaccent'] = 0x1E0A; + t['Ddotbelow'] = 0x1E0C; + t['Decyrillic'] = 0x0414; + t['Deicoptic'] = 0x03EE; + t['Delta'] = 0x2206; + t['Deltagreek'] = 0x0394; + t['Dhook'] = 0x018A; + t['Dieresis'] = 0xF6CB; + t['DieresisAcute'] = 0xF6CC; + t['DieresisGrave'] = 0xF6CD; + t['Dieresissmall'] = 0xF7A8; + t['Digammagreek'] = 0x03DC; + t['Djecyrillic'] = 0x0402; + t['Dlinebelow'] = 0x1E0E; + t['Dmonospace'] = 0xFF24; + t['Dotaccentsmall'] = 0xF6F7; + t['Dslash'] = 0x0110; + t['Dsmall'] = 0xF764; + t['Dtopbar'] = 0x018B; + t['Dz'] = 0x01F2; + t['Dzcaron'] = 0x01C5; + t['Dzeabkhasiancyrillic'] = 0x04E0; + t['Dzecyrillic'] = 0x0405; + t['Dzhecyrillic'] = 0x040F; + t['E'] = 0x0045; + t['Eacute'] = 0x00C9; + t['Eacutesmall'] = 0xF7E9; + t['Ebreve'] = 0x0114; + t['Ecaron'] = 0x011A; + t['Ecedillabreve'] = 0x1E1C; + t['Echarmenian'] = 0x0535; + t['Ecircle'] = 0x24BA; + t['Ecircumflex'] = 0x00CA; + t['Ecircumflexacute'] = 0x1EBE; + t['Ecircumflexbelow'] = 0x1E18; + t['Ecircumflexdotbelow'] = 0x1EC6; + t['Ecircumflexgrave'] = 0x1EC0; + t['Ecircumflexhookabove'] = 0x1EC2; + t['Ecircumflexsmall'] = 0xF7EA; + t['Ecircumflextilde'] = 0x1EC4; + t['Ecyrillic'] = 0x0404; + t['Edblgrave'] = 0x0204; + t['Edieresis'] = 0x00CB; + t['Edieresissmall'] = 0xF7EB; + t['Edot'] = 0x0116; + t['Edotaccent'] = 0x0116; + t['Edotbelow'] = 0x1EB8; + t['Efcyrillic'] = 0x0424; + t['Egrave'] = 0x00C8; + t['Egravesmall'] = 0xF7E8; + t['Eharmenian'] = 0x0537; + t['Ehookabove'] = 0x1EBA; + t['Eightroman'] = 0x2167; + t['Einvertedbreve'] = 0x0206; + t['Eiotifiedcyrillic'] = 0x0464; + t['Elcyrillic'] = 0x041B; + t['Elevenroman'] = 0x216A; + t['Emacron'] = 0x0112; + t['Emacronacute'] = 0x1E16; + t['Emacrongrave'] = 0x1E14; + t['Emcyrillic'] = 0x041C; + t['Emonospace'] = 0xFF25; + t['Encyrillic'] = 0x041D; + t['Endescendercyrillic'] = 0x04A2; + t['Eng'] = 0x014A; + t['Enghecyrillic'] = 0x04A4; + t['Enhookcyrillic'] = 0x04C7; + t['Eogonek'] = 0x0118; + t['Eopen'] = 0x0190; + t['Epsilon'] = 0x0395; + t['Epsilontonos'] = 0x0388; + t['Ercyrillic'] = 0x0420; + t['Ereversed'] = 0x018E; + t['Ereversedcyrillic'] = 0x042D; + t['Escyrillic'] = 0x0421; + t['Esdescendercyrillic'] = 0x04AA; + t['Esh'] = 0x01A9; + t['Esmall'] = 0xF765; + t['Eta'] = 0x0397; + t['Etarmenian'] = 0x0538; + t['Etatonos'] = 0x0389; + t['Eth'] = 0x00D0; + t['Ethsmall'] = 0xF7F0; + t['Etilde'] = 0x1EBC; + t['Etildebelow'] = 0x1E1A; + t['Euro'] = 0x20AC; + t['Ezh'] = 0x01B7; + t['Ezhcaron'] = 0x01EE; + t['Ezhreversed'] = 0x01B8; + t['F'] = 0x0046; + t['Fcircle'] = 0x24BB; + t['Fdotaccent'] = 0x1E1E; + t['Feharmenian'] = 0x0556; + t['Feicoptic'] = 0x03E4; + t['Fhook'] = 0x0191; + t['Fitacyrillic'] = 0x0472; + t['Fiveroman'] = 0x2164; + t['Fmonospace'] = 0xFF26; + t['Fourroman'] = 0x2163; + t['Fsmall'] = 0xF766; + t['G'] = 0x0047; + t['GBsquare'] = 0x3387; + t['Gacute'] = 0x01F4; + t['Gamma'] = 0x0393; + t['Gammaafrican'] = 0x0194; + t['Gangiacoptic'] = 0x03EA; + t['Gbreve'] = 0x011E; + t['Gcaron'] = 0x01E6; + t['Gcedilla'] = 0x0122; + t['Gcircle'] = 0x24BC; + t['Gcircumflex'] = 0x011C; + t['Gcommaaccent'] = 0x0122; + t['Gdot'] = 0x0120; + t['Gdotaccent'] = 0x0120; + t['Gecyrillic'] = 0x0413; + t['Ghadarmenian'] = 0x0542; + t['Ghemiddlehookcyrillic'] = 0x0494; + t['Ghestrokecyrillic'] = 0x0492; + t['Gheupturncyrillic'] = 0x0490; + t['Ghook'] = 0x0193; + t['Gimarmenian'] = 0x0533; + t['Gjecyrillic'] = 0x0403; + t['Gmacron'] = 0x1E20; + t['Gmonospace'] = 0xFF27; + t['Grave'] = 0xF6CE; + t['Gravesmall'] = 0xF760; + t['Gsmall'] = 0xF767; + t['Gsmallhook'] = 0x029B; + t['Gstroke'] = 0x01E4; + t['H'] = 0x0048; + t['H18533'] = 0x25CF; + t['H18543'] = 0x25AA; + t['H18551'] = 0x25AB; + t['H22073'] = 0x25A1; + t['HPsquare'] = 0x33CB; + t['Haabkhasiancyrillic'] = 0x04A8; + t['Hadescendercyrillic'] = 0x04B2; + t['Hardsigncyrillic'] = 0x042A; + t['Hbar'] = 0x0126; + t['Hbrevebelow'] = 0x1E2A; + t['Hcedilla'] = 0x1E28; + t['Hcircle'] = 0x24BD; + t['Hcircumflex'] = 0x0124; + t['Hdieresis'] = 0x1E26; + t['Hdotaccent'] = 0x1E22; + t['Hdotbelow'] = 0x1E24; + t['Hmonospace'] = 0xFF28; + t['Hoarmenian'] = 0x0540; + t['Horicoptic'] = 0x03E8; + t['Hsmall'] = 0xF768; + t['Hungarumlaut'] = 0xF6CF; + t['Hungarumlautsmall'] = 0xF6F8; + t['Hzsquare'] = 0x3390; + t['I'] = 0x0049; + t['IAcyrillic'] = 0x042F; + t['IJ'] = 0x0132; + t['IUcyrillic'] = 0x042E; + t['Iacute'] = 0x00CD; + t['Iacutesmall'] = 0xF7ED; + t['Ibreve'] = 0x012C; + t['Icaron'] = 0x01CF; + t['Icircle'] = 0x24BE; + t['Icircumflex'] = 0x00CE; + t['Icircumflexsmall'] = 0xF7EE; + t['Icyrillic'] = 0x0406; + t['Idblgrave'] = 0x0208; + t['Idieresis'] = 0x00CF; + t['Idieresisacute'] = 0x1E2E; + t['Idieresiscyrillic'] = 0x04E4; + t['Idieresissmall'] = 0xF7EF; + t['Idot'] = 0x0130; + t['Idotaccent'] = 0x0130; + t['Idotbelow'] = 0x1ECA; + t['Iebrevecyrillic'] = 0x04D6; + t['Iecyrillic'] = 0x0415; + t['Ifraktur'] = 0x2111; + t['Igrave'] = 0x00CC; + t['Igravesmall'] = 0xF7EC; + t['Ihookabove'] = 0x1EC8; + t['Iicyrillic'] = 0x0418; + t['Iinvertedbreve'] = 0x020A; + t['Iishortcyrillic'] = 0x0419; + t['Imacron'] = 0x012A; + t['Imacroncyrillic'] = 0x04E2; + t['Imonospace'] = 0xFF29; + t['Iniarmenian'] = 0x053B; + t['Iocyrillic'] = 0x0401; + t['Iogonek'] = 0x012E; + t['Iota'] = 0x0399; + t['Iotaafrican'] = 0x0196; + t['Iotadieresis'] = 0x03AA; + t['Iotatonos'] = 0x038A; + t['Ismall'] = 0xF769; + t['Istroke'] = 0x0197; + t['Itilde'] = 0x0128; + t['Itildebelow'] = 0x1E2C; + t['Izhitsacyrillic'] = 0x0474; + t['Izhitsadblgravecyrillic'] = 0x0476; + t['J'] = 0x004A; + t['Jaarmenian'] = 0x0541; + t['Jcircle'] = 0x24BF; + t['Jcircumflex'] = 0x0134; + t['Jecyrillic'] = 0x0408; + t['Jheharmenian'] = 0x054B; + t['Jmonospace'] = 0xFF2A; + t['Jsmall'] = 0xF76A; + t['K'] = 0x004B; + t['KBsquare'] = 0x3385; + t['KKsquare'] = 0x33CD; + t['Kabashkircyrillic'] = 0x04A0; + t['Kacute'] = 0x1E30; + t['Kacyrillic'] = 0x041A; + t['Kadescendercyrillic'] = 0x049A; + t['Kahookcyrillic'] = 0x04C3; + t['Kappa'] = 0x039A; + t['Kastrokecyrillic'] = 0x049E; + t['Kaverticalstrokecyrillic'] = 0x049C; + t['Kcaron'] = 0x01E8; + t['Kcedilla'] = 0x0136; + t['Kcircle'] = 0x24C0; + t['Kcommaaccent'] = 0x0136; + t['Kdotbelow'] = 0x1E32; + t['Keharmenian'] = 0x0554; + t['Kenarmenian'] = 0x053F; + t['Khacyrillic'] = 0x0425; + t['Kheicoptic'] = 0x03E6; + t['Khook'] = 0x0198; + t['Kjecyrillic'] = 0x040C; + t['Klinebelow'] = 0x1E34; + t['Kmonospace'] = 0xFF2B; + t['Koppacyrillic'] = 0x0480; + t['Koppagreek'] = 0x03DE; + t['Ksicyrillic'] = 0x046E; + t['Ksmall'] = 0xF76B; + t['L'] = 0x004C; + t['LJ'] = 0x01C7; + t['LL'] = 0xF6BF; + t['Lacute'] = 0x0139; + t['Lambda'] = 0x039B; + t['Lcaron'] = 0x013D; + t['Lcedilla'] = 0x013B; + t['Lcircle'] = 0x24C1; + t['Lcircumflexbelow'] = 0x1E3C; + t['Lcommaaccent'] = 0x013B; + t['Ldot'] = 0x013F; + t['Ldotaccent'] = 0x013F; + t['Ldotbelow'] = 0x1E36; + t['Ldotbelowmacron'] = 0x1E38; + t['Liwnarmenian'] = 0x053C; + t['Lj'] = 0x01C8; + t['Ljecyrillic'] = 0x0409; + t['Llinebelow'] = 0x1E3A; + t['Lmonospace'] = 0xFF2C; + t['Lslash'] = 0x0141; + t['Lslashsmall'] = 0xF6F9; + t['Lsmall'] = 0xF76C; + t['M'] = 0x004D; + t['MBsquare'] = 0x3386; + t['Macron'] = 0xF6D0; + t['Macronsmall'] = 0xF7AF; + t['Macute'] = 0x1E3E; + t['Mcircle'] = 0x24C2; + t['Mdotaccent'] = 0x1E40; + t['Mdotbelow'] = 0x1E42; + t['Menarmenian'] = 0x0544; + t['Mmonospace'] = 0xFF2D; + t['Msmall'] = 0xF76D; + t['Mturned'] = 0x019C; + t['Mu'] = 0x039C; + t['N'] = 0x004E; + t['NJ'] = 0x01CA; + t['Nacute'] = 0x0143; + t['Ncaron'] = 0x0147; + t['Ncedilla'] = 0x0145; + t['Ncircle'] = 0x24C3; + t['Ncircumflexbelow'] = 0x1E4A; + t['Ncommaaccent'] = 0x0145; + t['Ndotaccent'] = 0x1E44; + t['Ndotbelow'] = 0x1E46; + t['Nhookleft'] = 0x019D; + t['Nineroman'] = 0x2168; + t['Nj'] = 0x01CB; + t['Njecyrillic'] = 0x040A; + t['Nlinebelow'] = 0x1E48; + t['Nmonospace'] = 0xFF2E; + t['Nowarmenian'] = 0x0546; + t['Nsmall'] = 0xF76E; + t['Ntilde'] = 0x00D1; + t['Ntildesmall'] = 0xF7F1; + t['Nu'] = 0x039D; + t['O'] = 0x004F; + t['OE'] = 0x0152; + t['OEsmall'] = 0xF6FA; + t['Oacute'] = 0x00D3; + t['Oacutesmall'] = 0xF7F3; + t['Obarredcyrillic'] = 0x04E8; + t['Obarreddieresiscyrillic'] = 0x04EA; + t['Obreve'] = 0x014E; + t['Ocaron'] = 0x01D1; + t['Ocenteredtilde'] = 0x019F; + t['Ocircle'] = 0x24C4; + t['Ocircumflex'] = 0x00D4; + t['Ocircumflexacute'] = 0x1ED0; + t['Ocircumflexdotbelow'] = 0x1ED8; + t['Ocircumflexgrave'] = 0x1ED2; + t['Ocircumflexhookabove'] = 0x1ED4; + t['Ocircumflexsmall'] = 0xF7F4; + t['Ocircumflextilde'] = 0x1ED6; + t['Ocyrillic'] = 0x041E; + t['Odblacute'] = 0x0150; + t['Odblgrave'] = 0x020C; + t['Odieresis'] = 0x00D6; + t['Odieresiscyrillic'] = 0x04E6; + t['Odieresissmall'] = 0xF7F6; + t['Odotbelow'] = 0x1ECC; + t['Ogoneksmall'] = 0xF6FB; + t['Ograve'] = 0x00D2; + t['Ogravesmall'] = 0xF7F2; + t['Oharmenian'] = 0x0555; + t['Ohm'] = 0x2126; + t['Ohookabove'] = 0x1ECE; + t['Ohorn'] = 0x01A0; + t['Ohornacute'] = 0x1EDA; + t['Ohorndotbelow'] = 0x1EE2; + t['Ohorngrave'] = 0x1EDC; + t['Ohornhookabove'] = 0x1EDE; + t['Ohorntilde'] = 0x1EE0; + t['Ohungarumlaut'] = 0x0150; + t['Oi'] = 0x01A2; + t['Oinvertedbreve'] = 0x020E; + t['Omacron'] = 0x014C; + t['Omacronacute'] = 0x1E52; + t['Omacrongrave'] = 0x1E50; + t['Omega'] = 0x2126; + t['Omegacyrillic'] = 0x0460; + t['Omegagreek'] = 0x03A9; + t['Omegaroundcyrillic'] = 0x047A; + t['Omegatitlocyrillic'] = 0x047C; + t['Omegatonos'] = 0x038F; + t['Omicron'] = 0x039F; + t['Omicrontonos'] = 0x038C; + t['Omonospace'] = 0xFF2F; + t['Oneroman'] = 0x2160; + t['Oogonek'] = 0x01EA; + t['Oogonekmacron'] = 0x01EC; + t['Oopen'] = 0x0186; + t['Oslash'] = 0x00D8; + t['Oslashacute'] = 0x01FE; + t['Oslashsmall'] = 0xF7F8; + t['Osmall'] = 0xF76F; + t['Ostrokeacute'] = 0x01FE; + t['Otcyrillic'] = 0x047E; + t['Otilde'] = 0x00D5; + t['Otildeacute'] = 0x1E4C; + t['Otildedieresis'] = 0x1E4E; + t['Otildesmall'] = 0xF7F5; + t['P'] = 0x0050; + t['Pacute'] = 0x1E54; + t['Pcircle'] = 0x24C5; + t['Pdotaccent'] = 0x1E56; + t['Pecyrillic'] = 0x041F; + t['Peharmenian'] = 0x054A; + t['Pemiddlehookcyrillic'] = 0x04A6; + t['Phi'] = 0x03A6; + t['Phook'] = 0x01A4; + t['Pi'] = 0x03A0; + t['Piwrarmenian'] = 0x0553; + t['Pmonospace'] = 0xFF30; + t['Psi'] = 0x03A8; + t['Psicyrillic'] = 0x0470; + t['Psmall'] = 0xF770; + t['Q'] = 0x0051; + t['Qcircle'] = 0x24C6; + t['Qmonospace'] = 0xFF31; + t['Qsmall'] = 0xF771; + t['R'] = 0x0052; + t['Raarmenian'] = 0x054C; + t['Racute'] = 0x0154; + t['Rcaron'] = 0x0158; + t['Rcedilla'] = 0x0156; + t['Rcircle'] = 0x24C7; + t['Rcommaaccent'] = 0x0156; + t['Rdblgrave'] = 0x0210; + t['Rdotaccent'] = 0x1E58; + t['Rdotbelow'] = 0x1E5A; + t['Rdotbelowmacron'] = 0x1E5C; + t['Reharmenian'] = 0x0550; + t['Rfraktur'] = 0x211C; + t['Rho'] = 0x03A1; + t['Ringsmall'] = 0xF6FC; + t['Rinvertedbreve'] = 0x0212; + t['Rlinebelow'] = 0x1E5E; + t['Rmonospace'] = 0xFF32; + t['Rsmall'] = 0xF772; + t['Rsmallinverted'] = 0x0281; + t['Rsmallinvertedsuperior'] = 0x02B6; + t['S'] = 0x0053; + t['SF010000'] = 0x250C; + t['SF020000'] = 0x2514; + t['SF030000'] = 0x2510; + t['SF040000'] = 0x2518; + t['SF050000'] = 0x253C; + t['SF060000'] = 0x252C; + t['SF070000'] = 0x2534; + t['SF080000'] = 0x251C; + t['SF090000'] = 0x2524; + t['SF100000'] = 0x2500; + t['SF110000'] = 0x2502; + t['SF190000'] = 0x2561; + t['SF200000'] = 0x2562; + t['SF210000'] = 0x2556; + t['SF220000'] = 0x2555; + t['SF230000'] = 0x2563; + t['SF240000'] = 0x2551; + t['SF250000'] = 0x2557; + t['SF260000'] = 0x255D; + t['SF270000'] = 0x255C; + t['SF280000'] = 0x255B; + t['SF360000'] = 0x255E; + t['SF370000'] = 0x255F; + t['SF380000'] = 0x255A; + t['SF390000'] = 0x2554; + t['SF400000'] = 0x2569; + t['SF410000'] = 0x2566; + t['SF420000'] = 0x2560; + t['SF430000'] = 0x2550; + t['SF440000'] = 0x256C; + t['SF450000'] = 0x2567; + t['SF460000'] = 0x2568; + t['SF470000'] = 0x2564; + t['SF480000'] = 0x2565; + t['SF490000'] = 0x2559; + t['SF500000'] = 0x2558; + t['SF510000'] = 0x2552; + t['SF520000'] = 0x2553; + t['SF530000'] = 0x256B; + t['SF540000'] = 0x256A; + t['Sacute'] = 0x015A; + t['Sacutedotaccent'] = 0x1E64; + t['Sampigreek'] = 0x03E0; + t['Scaron'] = 0x0160; + t['Scarondotaccent'] = 0x1E66; + t['Scaronsmall'] = 0xF6FD; + t['Scedilla'] = 0x015E; + t['Schwa'] = 0x018F; + t['Schwacyrillic'] = 0x04D8; + t['Schwadieresiscyrillic'] = 0x04DA; + t['Scircle'] = 0x24C8; + t['Scircumflex'] = 0x015C; + t['Scommaaccent'] = 0x0218; + t['Sdotaccent'] = 0x1E60; + t['Sdotbelow'] = 0x1E62; + t['Sdotbelowdotaccent'] = 0x1E68; + t['Seharmenian'] = 0x054D; + t['Sevenroman'] = 0x2166; + t['Shaarmenian'] = 0x0547; + t['Shacyrillic'] = 0x0428; + t['Shchacyrillic'] = 0x0429; + t['Sheicoptic'] = 0x03E2; + t['Shhacyrillic'] = 0x04BA; + t['Shimacoptic'] = 0x03EC; + t['Sigma'] = 0x03A3; + t['Sixroman'] = 0x2165; + t['Smonospace'] = 0xFF33; + t['Softsigncyrillic'] = 0x042C; + t['Ssmall'] = 0xF773; + t['Stigmagreek'] = 0x03DA; + t['T'] = 0x0054; + t['Tau'] = 0x03A4; + t['Tbar'] = 0x0166; + t['Tcaron'] = 0x0164; + t['Tcedilla'] = 0x0162; + t['Tcircle'] = 0x24C9; + t['Tcircumflexbelow'] = 0x1E70; + t['Tcommaaccent'] = 0x0162; + t['Tdotaccent'] = 0x1E6A; + t['Tdotbelow'] = 0x1E6C; + t['Tecyrillic'] = 0x0422; + t['Tedescendercyrillic'] = 0x04AC; + t['Tenroman'] = 0x2169; + t['Tetsecyrillic'] = 0x04B4; + t['Theta'] = 0x0398; + t['Thook'] = 0x01AC; + t['Thorn'] = 0x00DE; + t['Thornsmall'] = 0xF7FE; + t['Threeroman'] = 0x2162; + t['Tildesmall'] = 0xF6FE; + t['Tiwnarmenian'] = 0x054F; + t['Tlinebelow'] = 0x1E6E; + t['Tmonospace'] = 0xFF34; + t['Toarmenian'] = 0x0539; + t['Tonefive'] = 0x01BC; + t['Tonesix'] = 0x0184; + t['Tonetwo'] = 0x01A7; + t['Tretroflexhook'] = 0x01AE; + t['Tsecyrillic'] = 0x0426; + t['Tshecyrillic'] = 0x040B; + t['Tsmall'] = 0xF774; + t['Twelveroman'] = 0x216B; + t['Tworoman'] = 0x2161; + t['U'] = 0x0055; + t['Uacute'] = 0x00DA; + t['Uacutesmall'] = 0xF7FA; + t['Ubreve'] = 0x016C; + t['Ucaron'] = 0x01D3; + t['Ucircle'] = 0x24CA; + t['Ucircumflex'] = 0x00DB; + t['Ucircumflexbelow'] = 0x1E76; + t['Ucircumflexsmall'] = 0xF7FB; + t['Ucyrillic'] = 0x0423; + t['Udblacute'] = 0x0170; + t['Udblgrave'] = 0x0214; + t['Udieresis'] = 0x00DC; + t['Udieresisacute'] = 0x01D7; + t['Udieresisbelow'] = 0x1E72; + t['Udieresiscaron'] = 0x01D9; + t['Udieresiscyrillic'] = 0x04F0; + t['Udieresisgrave'] = 0x01DB; + t['Udieresismacron'] = 0x01D5; + t['Udieresissmall'] = 0xF7FC; + t['Udotbelow'] = 0x1EE4; + t['Ugrave'] = 0x00D9; + t['Ugravesmall'] = 0xF7F9; + t['Uhookabove'] = 0x1EE6; + t['Uhorn'] = 0x01AF; + t['Uhornacute'] = 0x1EE8; + t['Uhorndotbelow'] = 0x1EF0; + t['Uhorngrave'] = 0x1EEA; + t['Uhornhookabove'] = 0x1EEC; + t['Uhorntilde'] = 0x1EEE; + t['Uhungarumlaut'] = 0x0170; + t['Uhungarumlautcyrillic'] = 0x04F2; + t['Uinvertedbreve'] = 0x0216; + t['Ukcyrillic'] = 0x0478; + t['Umacron'] = 0x016A; + t['Umacroncyrillic'] = 0x04EE; + t['Umacrondieresis'] = 0x1E7A; + t['Umonospace'] = 0xFF35; + t['Uogonek'] = 0x0172; + t['Upsilon'] = 0x03A5; + t['Upsilon1'] = 0x03D2; + t['Upsilonacutehooksymbolgreek'] = 0x03D3; + t['Upsilonafrican'] = 0x01B1; + t['Upsilondieresis'] = 0x03AB; + t['Upsilondieresishooksymbolgreek'] = 0x03D4; + t['Upsilonhooksymbol'] = 0x03D2; + t['Upsilontonos'] = 0x038E; + t['Uring'] = 0x016E; + t['Ushortcyrillic'] = 0x040E; + t['Usmall'] = 0xF775; + t['Ustraightcyrillic'] = 0x04AE; + t['Ustraightstrokecyrillic'] = 0x04B0; + t['Utilde'] = 0x0168; + t['Utildeacute'] = 0x1E78; + t['Utildebelow'] = 0x1E74; + t['V'] = 0x0056; + t['Vcircle'] = 0x24CB; + t['Vdotbelow'] = 0x1E7E; + t['Vecyrillic'] = 0x0412; + t['Vewarmenian'] = 0x054E; + t['Vhook'] = 0x01B2; + t['Vmonospace'] = 0xFF36; + t['Voarmenian'] = 0x0548; + t['Vsmall'] = 0xF776; + t['Vtilde'] = 0x1E7C; + t['W'] = 0x0057; + t['Wacute'] = 0x1E82; + t['Wcircle'] = 0x24CC; + t['Wcircumflex'] = 0x0174; + t['Wdieresis'] = 0x1E84; + t['Wdotaccent'] = 0x1E86; + t['Wdotbelow'] = 0x1E88; + t['Wgrave'] = 0x1E80; + t['Wmonospace'] = 0xFF37; + t['Wsmall'] = 0xF777; + t['X'] = 0x0058; + t['Xcircle'] = 0x24CD; + t['Xdieresis'] = 0x1E8C; + t['Xdotaccent'] = 0x1E8A; + t['Xeharmenian'] = 0x053D; + t['Xi'] = 0x039E; + t['Xmonospace'] = 0xFF38; + t['Xsmall'] = 0xF778; + t['Y'] = 0x0059; + t['Yacute'] = 0x00DD; + t['Yacutesmall'] = 0xF7FD; + t['Yatcyrillic'] = 0x0462; + t['Ycircle'] = 0x24CE; + t['Ycircumflex'] = 0x0176; + t['Ydieresis'] = 0x0178; + t['Ydieresissmall'] = 0xF7FF; + t['Ydotaccent'] = 0x1E8E; + t['Ydotbelow'] = 0x1EF4; + t['Yericyrillic'] = 0x042B; + t['Yerudieresiscyrillic'] = 0x04F8; + t['Ygrave'] = 0x1EF2; + t['Yhook'] = 0x01B3; + t['Yhookabove'] = 0x1EF6; + t['Yiarmenian'] = 0x0545; + t['Yicyrillic'] = 0x0407; + t['Yiwnarmenian'] = 0x0552; + t['Ymonospace'] = 0xFF39; + t['Ysmall'] = 0xF779; + t['Ytilde'] = 0x1EF8; + t['Yusbigcyrillic'] = 0x046A; + t['Yusbigiotifiedcyrillic'] = 0x046C; + t['Yuslittlecyrillic'] = 0x0466; + t['Yuslittleiotifiedcyrillic'] = 0x0468; + t['Z'] = 0x005A; + t['Zaarmenian'] = 0x0536; + t['Zacute'] = 0x0179; + t['Zcaron'] = 0x017D; + t['Zcaronsmall'] = 0xF6FF; + t['Zcircle'] = 0x24CF; + t['Zcircumflex'] = 0x1E90; + t['Zdot'] = 0x017B; + t['Zdotaccent'] = 0x017B; + t['Zdotbelow'] = 0x1E92; + t['Zecyrillic'] = 0x0417; + t['Zedescendercyrillic'] = 0x0498; + t['Zedieresiscyrillic'] = 0x04DE; + t['Zeta'] = 0x0396; + t['Zhearmenian'] = 0x053A; + t['Zhebrevecyrillic'] = 0x04C1; + t['Zhecyrillic'] = 0x0416; + t['Zhedescendercyrillic'] = 0x0496; + t['Zhedieresiscyrillic'] = 0x04DC; + t['Zlinebelow'] = 0x1E94; + t['Zmonospace'] = 0xFF3A; + t['Zsmall'] = 0xF77A; + t['Zstroke'] = 0x01B5; + t['a'] = 0x0061; + t['aabengali'] = 0x0986; + t['aacute'] = 0x00E1; + t['aadeva'] = 0x0906; + t['aagujarati'] = 0x0A86; + t['aagurmukhi'] = 0x0A06; + t['aamatragurmukhi'] = 0x0A3E; + t['aarusquare'] = 0x3303; + t['aavowelsignbengali'] = 0x09BE; + t['aavowelsigndeva'] = 0x093E; + t['aavowelsigngujarati'] = 0x0ABE; + t['abbreviationmarkarmenian'] = 0x055F; + t['abbreviationsigndeva'] = 0x0970; + t['abengali'] = 0x0985; + t['abopomofo'] = 0x311A; + t['abreve'] = 0x0103; + t['abreveacute'] = 0x1EAF; + t['abrevecyrillic'] = 0x04D1; + t['abrevedotbelow'] = 0x1EB7; + t['abrevegrave'] = 0x1EB1; + t['abrevehookabove'] = 0x1EB3; + t['abrevetilde'] = 0x1EB5; + t['acaron'] = 0x01CE; + t['acircle'] = 0x24D0; + t['acircumflex'] = 0x00E2; + t['acircumflexacute'] = 0x1EA5; + t['acircumflexdotbelow'] = 0x1EAD; + t['acircumflexgrave'] = 0x1EA7; + t['acircumflexhookabove'] = 0x1EA9; + t['acircumflextilde'] = 0x1EAB; + t['acute'] = 0x00B4; + t['acutebelowcmb'] = 0x0317; + t['acutecmb'] = 0x0301; + t['acutecomb'] = 0x0301; + t['acutedeva'] = 0x0954; + t['acutelowmod'] = 0x02CF; + t['acutetonecmb'] = 0x0341; + t['acyrillic'] = 0x0430; + t['adblgrave'] = 0x0201; + t['addakgurmukhi'] = 0x0A71; + t['adeva'] = 0x0905; + t['adieresis'] = 0x00E4; + t['adieresiscyrillic'] = 0x04D3; + t['adieresismacron'] = 0x01DF; + t['adotbelow'] = 0x1EA1; + t['adotmacron'] = 0x01E1; + t['ae'] = 0x00E6; + t['aeacute'] = 0x01FD; + t['aekorean'] = 0x3150; + t['aemacron'] = 0x01E3; + t['afii00208'] = 0x2015; + t['afii08941'] = 0x20A4; + t['afii10017'] = 0x0410; + t['afii10018'] = 0x0411; + t['afii10019'] = 0x0412; + t['afii10020'] = 0x0413; + t['afii10021'] = 0x0414; + t['afii10022'] = 0x0415; + t['afii10023'] = 0x0401; + t['afii10024'] = 0x0416; + t['afii10025'] = 0x0417; + t['afii10026'] = 0x0418; + t['afii10027'] = 0x0419; + t['afii10028'] = 0x041A; + t['afii10029'] = 0x041B; + t['afii10030'] = 0x041C; + t['afii10031'] = 0x041D; + t['afii10032'] = 0x041E; + t['afii10033'] = 0x041F; + t['afii10034'] = 0x0420; + t['afii10035'] = 0x0421; + t['afii10036'] = 0x0422; + t['afii10037'] = 0x0423; + t['afii10038'] = 0x0424; + t['afii10039'] = 0x0425; + t['afii10040'] = 0x0426; + t['afii10041'] = 0x0427; + t['afii10042'] = 0x0428; + t['afii10043'] = 0x0429; + t['afii10044'] = 0x042A; + t['afii10045'] = 0x042B; + t['afii10046'] = 0x042C; + t['afii10047'] = 0x042D; + t['afii10048'] = 0x042E; + t['afii10049'] = 0x042F; + t['afii10050'] = 0x0490; + t['afii10051'] = 0x0402; + t['afii10052'] = 0x0403; + t['afii10053'] = 0x0404; + t['afii10054'] = 0x0405; + t['afii10055'] = 0x0406; + t['afii10056'] = 0x0407; + t['afii10057'] = 0x0408; + t['afii10058'] = 0x0409; + t['afii10059'] = 0x040A; + t['afii10060'] = 0x040B; + t['afii10061'] = 0x040C; + t['afii10062'] = 0x040E; + t['afii10063'] = 0xF6C4; + t['afii10064'] = 0xF6C5; + t['afii10065'] = 0x0430; + t['afii10066'] = 0x0431; + t['afii10067'] = 0x0432; + t['afii10068'] = 0x0433; + t['afii10069'] = 0x0434; + t['afii10070'] = 0x0435; + t['afii10071'] = 0x0451; + t['afii10072'] = 0x0436; + t['afii10073'] = 0x0437; + t['afii10074'] = 0x0438; + t['afii10075'] = 0x0439; + t['afii10076'] = 0x043A; + t['afii10077'] = 0x043B; + t['afii10078'] = 0x043C; + t['afii10079'] = 0x043D; + t['afii10080'] = 0x043E; + t['afii10081'] = 0x043F; + t['afii10082'] = 0x0440; + t['afii10083'] = 0x0441; + t['afii10084'] = 0x0442; + t['afii10085'] = 0x0443; + t['afii10086'] = 0x0444; + t['afii10087'] = 0x0445; + t['afii10088'] = 0x0446; + t['afii10089'] = 0x0447; + t['afii10090'] = 0x0448; + t['afii10091'] = 0x0449; + t['afii10092'] = 0x044A; + t['afii10093'] = 0x044B; + t['afii10094'] = 0x044C; + t['afii10095'] = 0x044D; + t['afii10096'] = 0x044E; + t['afii10097'] = 0x044F; + t['afii10098'] = 0x0491; + t['afii10099'] = 0x0452; + t['afii10100'] = 0x0453; + t['afii10101'] = 0x0454; + t['afii10102'] = 0x0455; + t['afii10103'] = 0x0456; + t['afii10104'] = 0x0457; + t['afii10105'] = 0x0458; + t['afii10106'] = 0x0459; + t['afii10107'] = 0x045A; + t['afii10108'] = 0x045B; + t['afii10109'] = 0x045C; + t['afii10110'] = 0x045E; + t['afii10145'] = 0x040F; + t['afii10146'] = 0x0462; + t['afii10147'] = 0x0472; + t['afii10148'] = 0x0474; + t['afii10192'] = 0xF6C6; + t['afii10193'] = 0x045F; + t['afii10194'] = 0x0463; + t['afii10195'] = 0x0473; + t['afii10196'] = 0x0475; + t['afii10831'] = 0xF6C7; + t['afii10832'] = 0xF6C8; + t['afii10846'] = 0x04D9; + t['afii299'] = 0x200E; + t['afii300'] = 0x200F; + t['afii301'] = 0x200D; + t['afii57381'] = 0x066A; + t['afii57388'] = 0x060C; + t['afii57392'] = 0x0660; + t['afii57393'] = 0x0661; + t['afii57394'] = 0x0662; + t['afii57395'] = 0x0663; + t['afii57396'] = 0x0664; + t['afii57397'] = 0x0665; + t['afii57398'] = 0x0666; + t['afii57399'] = 0x0667; + t['afii57400'] = 0x0668; + t['afii57401'] = 0x0669; + t['afii57403'] = 0x061B; + t['afii57407'] = 0x061F; + t['afii57409'] = 0x0621; + t['afii57410'] = 0x0622; + t['afii57411'] = 0x0623; + t['afii57412'] = 0x0624; + t['afii57413'] = 0x0625; + t['afii57414'] = 0x0626; + t['afii57415'] = 0x0627; + t['afii57416'] = 0x0628; + t['afii57417'] = 0x0629; + t['afii57418'] = 0x062A; + t['afii57419'] = 0x062B; + t['afii57420'] = 0x062C; + t['afii57421'] = 0x062D; + t['afii57422'] = 0x062E; + t['afii57423'] = 0x062F; + t['afii57424'] = 0x0630; + t['afii57425'] = 0x0631; + t['afii57426'] = 0x0632; + t['afii57427'] = 0x0633; + t['afii57428'] = 0x0634; + t['afii57429'] = 0x0635; + t['afii57430'] = 0x0636; + t['afii57431'] = 0x0637; + t['afii57432'] = 0x0638; + t['afii57433'] = 0x0639; + t['afii57434'] = 0x063A; + t['afii57440'] = 0x0640; + t['afii57441'] = 0x0641; + t['afii57442'] = 0x0642; + t['afii57443'] = 0x0643; + t['afii57444'] = 0x0644; + t['afii57445'] = 0x0645; + t['afii57446'] = 0x0646; + t['afii57448'] = 0x0648; + t['afii57449'] = 0x0649; + t['afii57450'] = 0x064A; + t['afii57451'] = 0x064B; + t['afii57452'] = 0x064C; + t['afii57453'] = 0x064D; + t['afii57454'] = 0x064E; + t['afii57455'] = 0x064F; + t['afii57456'] = 0x0650; + t['afii57457'] = 0x0651; + t['afii57458'] = 0x0652; + t['afii57470'] = 0x0647; + t['afii57505'] = 0x06A4; + t['afii57506'] = 0x067E; + t['afii57507'] = 0x0686; + t['afii57508'] = 0x0698; + t['afii57509'] = 0x06AF; + t['afii57511'] = 0x0679; + t['afii57512'] = 0x0688; + t['afii57513'] = 0x0691; + t['afii57514'] = 0x06BA; + t['afii57519'] = 0x06D2; + t['afii57534'] = 0x06D5; + t['afii57636'] = 0x20AA; + t['afii57645'] = 0x05BE; + t['afii57658'] = 0x05C3; + t['afii57664'] = 0x05D0; + t['afii57665'] = 0x05D1; + t['afii57666'] = 0x05D2; + t['afii57667'] = 0x05D3; + t['afii57668'] = 0x05D4; + t['afii57669'] = 0x05D5; + t['afii57670'] = 0x05D6; + t['afii57671'] = 0x05D7; + t['afii57672'] = 0x05D8; + t['afii57673'] = 0x05D9; + t['afii57674'] = 0x05DA; + t['afii57675'] = 0x05DB; + t['afii57676'] = 0x05DC; + t['afii57677'] = 0x05DD; + t['afii57678'] = 0x05DE; + t['afii57679'] = 0x05DF; + t['afii57680'] = 0x05E0; + t['afii57681'] = 0x05E1; + t['afii57682'] = 0x05E2; + t['afii57683'] = 0x05E3; + t['afii57684'] = 0x05E4; + t['afii57685'] = 0x05E5; + t['afii57686'] = 0x05E6; + t['afii57687'] = 0x05E7; + t['afii57688'] = 0x05E8; + t['afii57689'] = 0x05E9; + t['afii57690'] = 0x05EA; + t['afii57694'] = 0xFB2A; + t['afii57695'] = 0xFB2B; + t['afii57700'] = 0xFB4B; + t['afii57705'] = 0xFB1F; + t['afii57716'] = 0x05F0; + t['afii57717'] = 0x05F1; + t['afii57718'] = 0x05F2; + t['afii57723'] = 0xFB35; + t['afii57793'] = 0x05B4; + t['afii57794'] = 0x05B5; + t['afii57795'] = 0x05B6; + t['afii57796'] = 0x05BB; + t['afii57797'] = 0x05B8; + t['afii57798'] = 0x05B7; + t['afii57799'] = 0x05B0; + t['afii57800'] = 0x05B2; + t['afii57801'] = 0x05B1; + t['afii57802'] = 0x05B3; + t['afii57803'] = 0x05C2; + t['afii57804'] = 0x05C1; + t['afii57806'] = 0x05B9; + t['afii57807'] = 0x05BC; + t['afii57839'] = 0x05BD; + t['afii57841'] = 0x05BF; + t['afii57842'] = 0x05C0; + t['afii57929'] = 0x02BC; + t['afii61248'] = 0x2105; + t['afii61289'] = 0x2113; + t['afii61352'] = 0x2116; + t['afii61573'] = 0x202C; + t['afii61574'] = 0x202D; + t['afii61575'] = 0x202E; + t['afii61664'] = 0x200C; + t['afii63167'] = 0x066D; + t['afii64937'] = 0x02BD; + t['agrave'] = 0x00E0; + t['agujarati'] = 0x0A85; + t['agurmukhi'] = 0x0A05; + t['ahiragana'] = 0x3042; + t['ahookabove'] = 0x1EA3; + t['aibengali'] = 0x0990; + t['aibopomofo'] = 0x311E; + t['aideva'] = 0x0910; + t['aiecyrillic'] = 0x04D5; + t['aigujarati'] = 0x0A90; + t['aigurmukhi'] = 0x0A10; + t['aimatragurmukhi'] = 0x0A48; + t['ainarabic'] = 0x0639; + t['ainfinalarabic'] = 0xFECA; + t['aininitialarabic'] = 0xFECB; + t['ainmedialarabic'] = 0xFECC; + t['ainvertedbreve'] = 0x0203; + t['aivowelsignbengali'] = 0x09C8; + t['aivowelsigndeva'] = 0x0948; + t['aivowelsigngujarati'] = 0x0AC8; + t['akatakana'] = 0x30A2; + t['akatakanahalfwidth'] = 0xFF71; + t['akorean'] = 0x314F; + t['alef'] = 0x05D0; + t['alefarabic'] = 0x0627; + t['alefdageshhebrew'] = 0xFB30; + t['aleffinalarabic'] = 0xFE8E; + t['alefhamzaabovearabic'] = 0x0623; + t['alefhamzaabovefinalarabic'] = 0xFE84; + t['alefhamzabelowarabic'] = 0x0625; + t['alefhamzabelowfinalarabic'] = 0xFE88; + t['alefhebrew'] = 0x05D0; + t['aleflamedhebrew'] = 0xFB4F; + t['alefmaddaabovearabic'] = 0x0622; + t['alefmaddaabovefinalarabic'] = 0xFE82; + t['alefmaksuraarabic'] = 0x0649; + t['alefmaksurafinalarabic'] = 0xFEF0; + t['alefmaksurainitialarabic'] = 0xFEF3; + t['alefmaksuramedialarabic'] = 0xFEF4; + t['alefpatahhebrew'] = 0xFB2E; + t['alefqamatshebrew'] = 0xFB2F; + t['aleph'] = 0x2135; + t['allequal'] = 0x224C; + t['alpha'] = 0x03B1; + t['alphatonos'] = 0x03AC; + t['amacron'] = 0x0101; + t['amonospace'] = 0xFF41; + t['ampersand'] = 0x0026; + t['ampersandmonospace'] = 0xFF06; + t['ampersandsmall'] = 0xF726; + t['amsquare'] = 0x33C2; + t['anbopomofo'] = 0x3122; + t['angbopomofo'] = 0x3124; + t['angbracketleft'] = 0x3008; + t['angbracketright'] = 0x3009; + t['angkhankhuthai'] = 0x0E5A; + t['angle'] = 0x2220; + t['anglebracketleft'] = 0x3008; + t['anglebracketleftvertical'] = 0xFE3F; + t['anglebracketright'] = 0x3009; + t['anglebracketrightvertical'] = 0xFE40; + t['angleleft'] = 0x2329; + t['angleright'] = 0x232A; + t['angstrom'] = 0x212B; + t['anoteleia'] = 0x0387; + t['anudattadeva'] = 0x0952; + t['anusvarabengali'] = 0x0982; + t['anusvaradeva'] = 0x0902; + t['anusvaragujarati'] = 0x0A82; + t['aogonek'] = 0x0105; + t['apaatosquare'] = 0x3300; + t['aparen'] = 0x249C; + t['apostrophearmenian'] = 0x055A; + t['apostrophemod'] = 0x02BC; + t['apple'] = 0xF8FF; + t['approaches'] = 0x2250; + t['approxequal'] = 0x2248; + t['approxequalorimage'] = 0x2252; + t['approximatelyequal'] = 0x2245; + t['araeaekorean'] = 0x318E; + t['araeakorean'] = 0x318D; + t['arc'] = 0x2312; + t['arighthalfring'] = 0x1E9A; + t['aring'] = 0x00E5; + t['aringacute'] = 0x01FB; + t['aringbelow'] = 0x1E01; + t['arrowboth'] = 0x2194; + t['arrowdashdown'] = 0x21E3; + t['arrowdashleft'] = 0x21E0; + t['arrowdashright'] = 0x21E2; + t['arrowdashup'] = 0x21E1; + t['arrowdblboth'] = 0x21D4; + t['arrowdbldown'] = 0x21D3; + t['arrowdblleft'] = 0x21D0; + t['arrowdblright'] = 0x21D2; + t['arrowdblup'] = 0x21D1; + t['arrowdown'] = 0x2193; + t['arrowdownleft'] = 0x2199; + t['arrowdownright'] = 0x2198; + t['arrowdownwhite'] = 0x21E9; + t['arrowheaddownmod'] = 0x02C5; + t['arrowheadleftmod'] = 0x02C2; + t['arrowheadrightmod'] = 0x02C3; + t['arrowheadupmod'] = 0x02C4; + t['arrowhorizex'] = 0xF8E7; + t['arrowleft'] = 0x2190; + t['arrowleftdbl'] = 0x21D0; + t['arrowleftdblstroke'] = 0x21CD; + t['arrowleftoverright'] = 0x21C6; + t['arrowleftwhite'] = 0x21E6; + t['arrowright'] = 0x2192; + t['arrowrightdblstroke'] = 0x21CF; + t['arrowrightheavy'] = 0x279E; + t['arrowrightoverleft'] = 0x21C4; + t['arrowrightwhite'] = 0x21E8; + t['arrowtableft'] = 0x21E4; + t['arrowtabright'] = 0x21E5; + t['arrowup'] = 0x2191; + t['arrowupdn'] = 0x2195; + t['arrowupdnbse'] = 0x21A8; + t['arrowupdownbase'] = 0x21A8; + t['arrowupleft'] = 0x2196; + t['arrowupleftofdown'] = 0x21C5; + t['arrowupright'] = 0x2197; + t['arrowupwhite'] = 0x21E7; + t['arrowvertex'] = 0xF8E6; + t['asciicircum'] = 0x005E; + t['asciicircummonospace'] = 0xFF3E; + t['asciitilde'] = 0x007E; + t['asciitildemonospace'] = 0xFF5E; + t['ascript'] = 0x0251; + t['ascriptturned'] = 0x0252; + t['asmallhiragana'] = 0x3041; + t['asmallkatakana'] = 0x30A1; + t['asmallkatakanahalfwidth'] = 0xFF67; + t['asterisk'] = 0x002A; + t['asteriskaltonearabic'] = 0x066D; + t['asteriskarabic'] = 0x066D; + t['asteriskmath'] = 0x2217; + t['asteriskmonospace'] = 0xFF0A; + t['asterisksmall'] = 0xFE61; + t['asterism'] = 0x2042; + t['asuperior'] = 0xF6E9; + t['asymptoticallyequal'] = 0x2243; + t['at'] = 0x0040; + t['atilde'] = 0x00E3; + t['atmonospace'] = 0xFF20; + t['atsmall'] = 0xFE6B; + t['aturned'] = 0x0250; + t['aubengali'] = 0x0994; + t['aubopomofo'] = 0x3120; + t['audeva'] = 0x0914; + t['augujarati'] = 0x0A94; + t['augurmukhi'] = 0x0A14; + t['aulengthmarkbengali'] = 0x09D7; + t['aumatragurmukhi'] = 0x0A4C; + t['auvowelsignbengali'] = 0x09CC; + t['auvowelsigndeva'] = 0x094C; + t['auvowelsigngujarati'] = 0x0ACC; + t['avagrahadeva'] = 0x093D; + t['aybarmenian'] = 0x0561; + t['ayin'] = 0x05E2; + t['ayinaltonehebrew'] = 0xFB20; + t['ayinhebrew'] = 0x05E2; + t['b'] = 0x0062; + t['babengali'] = 0x09AC; + t['backslash'] = 0x005C; + t['backslashmonospace'] = 0xFF3C; + t['badeva'] = 0x092C; + t['bagujarati'] = 0x0AAC; + t['bagurmukhi'] = 0x0A2C; + t['bahiragana'] = 0x3070; + t['bahtthai'] = 0x0E3F; + t['bakatakana'] = 0x30D0; + t['bar'] = 0x007C; + t['barmonospace'] = 0xFF5C; + t['bbopomofo'] = 0x3105; + t['bcircle'] = 0x24D1; + t['bdotaccent'] = 0x1E03; + t['bdotbelow'] = 0x1E05; + t['beamedsixteenthnotes'] = 0x266C; + t['because'] = 0x2235; + t['becyrillic'] = 0x0431; + t['beharabic'] = 0x0628; + t['behfinalarabic'] = 0xFE90; + t['behinitialarabic'] = 0xFE91; + t['behiragana'] = 0x3079; + t['behmedialarabic'] = 0xFE92; + t['behmeeminitialarabic'] = 0xFC9F; + t['behmeemisolatedarabic'] = 0xFC08; + t['behnoonfinalarabic'] = 0xFC6D; + t['bekatakana'] = 0x30D9; + t['benarmenian'] = 0x0562; + t['bet'] = 0x05D1; + t['beta'] = 0x03B2; + t['betasymbolgreek'] = 0x03D0; + t['betdagesh'] = 0xFB31; + t['betdageshhebrew'] = 0xFB31; + t['bethebrew'] = 0x05D1; + t['betrafehebrew'] = 0xFB4C; + t['bhabengali'] = 0x09AD; + t['bhadeva'] = 0x092D; + t['bhagujarati'] = 0x0AAD; + t['bhagurmukhi'] = 0x0A2D; + t['bhook'] = 0x0253; + t['bihiragana'] = 0x3073; + t['bikatakana'] = 0x30D3; + t['bilabialclick'] = 0x0298; + t['bindigurmukhi'] = 0x0A02; + t['birusquare'] = 0x3331; + t['blackcircle'] = 0x25CF; + t['blackdiamond'] = 0x25C6; + t['blackdownpointingtriangle'] = 0x25BC; + t['blackleftpointingpointer'] = 0x25C4; + t['blackleftpointingtriangle'] = 0x25C0; + t['blacklenticularbracketleft'] = 0x3010; + t['blacklenticularbracketleftvertical'] = 0xFE3B; + t['blacklenticularbracketright'] = 0x3011; + t['blacklenticularbracketrightvertical'] = 0xFE3C; + t['blacklowerlefttriangle'] = 0x25E3; + t['blacklowerrighttriangle'] = 0x25E2; + t['blackrectangle'] = 0x25AC; + t['blackrightpointingpointer'] = 0x25BA; + t['blackrightpointingtriangle'] = 0x25B6; + t['blacksmallsquare'] = 0x25AA; + t['blacksmilingface'] = 0x263B; + t['blacksquare'] = 0x25A0; + t['blackstar'] = 0x2605; + t['blackupperlefttriangle'] = 0x25E4; + t['blackupperrighttriangle'] = 0x25E5; + t['blackuppointingsmalltriangle'] = 0x25B4; + t['blackuppointingtriangle'] = 0x25B2; + t['blank'] = 0x2423; + t['blinebelow'] = 0x1E07; + t['block'] = 0x2588; + t['bmonospace'] = 0xFF42; + t['bobaimaithai'] = 0x0E1A; + t['bohiragana'] = 0x307C; + t['bokatakana'] = 0x30DC; + t['bparen'] = 0x249D; + t['bqsquare'] = 0x33C3; + t['braceex'] = 0xF8F4; + t['braceleft'] = 0x007B; + t['braceleftbt'] = 0xF8F3; + t['braceleftmid'] = 0xF8F2; + t['braceleftmonospace'] = 0xFF5B; + t['braceleftsmall'] = 0xFE5B; + t['bracelefttp'] = 0xF8F1; + t['braceleftvertical'] = 0xFE37; + t['braceright'] = 0x007D; + t['bracerightbt'] = 0xF8FE; + t['bracerightmid'] = 0xF8FD; + t['bracerightmonospace'] = 0xFF5D; + t['bracerightsmall'] = 0xFE5C; + t['bracerighttp'] = 0xF8FC; + t['bracerightvertical'] = 0xFE38; + t['bracketleft'] = 0x005B; + t['bracketleftbt'] = 0xF8F0; + t['bracketleftex'] = 0xF8EF; + t['bracketleftmonospace'] = 0xFF3B; + t['bracketlefttp'] = 0xF8EE; + t['bracketright'] = 0x005D; + t['bracketrightbt'] = 0xF8FB; + t['bracketrightex'] = 0xF8FA; + t['bracketrightmonospace'] = 0xFF3D; + t['bracketrighttp'] = 0xF8F9; + t['breve'] = 0x02D8; + t['brevebelowcmb'] = 0x032E; + t['brevecmb'] = 0x0306; + t['breveinvertedbelowcmb'] = 0x032F; + t['breveinvertedcmb'] = 0x0311; + t['breveinverteddoublecmb'] = 0x0361; + t['bridgebelowcmb'] = 0x032A; + t['bridgeinvertedbelowcmb'] = 0x033A; + t['brokenbar'] = 0x00A6; + t['bstroke'] = 0x0180; + t['bsuperior'] = 0xF6EA; + t['btopbar'] = 0x0183; + t['buhiragana'] = 0x3076; + t['bukatakana'] = 0x30D6; + t['bullet'] = 0x2022; + t['bulletinverse'] = 0x25D8; + t['bulletoperator'] = 0x2219; + t['bullseye'] = 0x25CE; + t['c'] = 0x0063; + t['caarmenian'] = 0x056E; + t['cabengali'] = 0x099A; + t['cacute'] = 0x0107; + t['cadeva'] = 0x091A; + t['cagujarati'] = 0x0A9A; + t['cagurmukhi'] = 0x0A1A; + t['calsquare'] = 0x3388; + t['candrabindubengali'] = 0x0981; + t['candrabinducmb'] = 0x0310; + t['candrabindudeva'] = 0x0901; + t['candrabindugujarati'] = 0x0A81; + t['capslock'] = 0x21EA; + t['careof'] = 0x2105; + t['caron'] = 0x02C7; + t['caronbelowcmb'] = 0x032C; + t['caroncmb'] = 0x030C; + t['carriagereturn'] = 0x21B5; + t['cbopomofo'] = 0x3118; + t['ccaron'] = 0x010D; + t['ccedilla'] = 0x00E7; + t['ccedillaacute'] = 0x1E09; + t['ccircle'] = 0x24D2; + t['ccircumflex'] = 0x0109; + t['ccurl'] = 0x0255; + t['cdot'] = 0x010B; + t['cdotaccent'] = 0x010B; + t['cdsquare'] = 0x33C5; + t['cedilla'] = 0x00B8; + t['cedillacmb'] = 0x0327; + t['cent'] = 0x00A2; + t['centigrade'] = 0x2103; + t['centinferior'] = 0xF6DF; + t['centmonospace'] = 0xFFE0; + t['centoldstyle'] = 0xF7A2; + t['centsuperior'] = 0xF6E0; + t['chaarmenian'] = 0x0579; + t['chabengali'] = 0x099B; + t['chadeva'] = 0x091B; + t['chagujarati'] = 0x0A9B; + t['chagurmukhi'] = 0x0A1B; + t['chbopomofo'] = 0x3114; + t['cheabkhasiancyrillic'] = 0x04BD; + t['checkmark'] = 0x2713; + t['checyrillic'] = 0x0447; + t['chedescenderabkhasiancyrillic'] = 0x04BF; + t['chedescendercyrillic'] = 0x04B7; + t['chedieresiscyrillic'] = 0x04F5; + t['cheharmenian'] = 0x0573; + t['chekhakassiancyrillic'] = 0x04CC; + t['cheverticalstrokecyrillic'] = 0x04B9; + t['chi'] = 0x03C7; + t['chieuchacirclekorean'] = 0x3277; + t['chieuchaparenkorean'] = 0x3217; + t['chieuchcirclekorean'] = 0x3269; + t['chieuchkorean'] = 0x314A; + t['chieuchparenkorean'] = 0x3209; + t['chochangthai'] = 0x0E0A; + t['chochanthai'] = 0x0E08; + t['chochingthai'] = 0x0E09; + t['chochoethai'] = 0x0E0C; + t['chook'] = 0x0188; + t['cieucacirclekorean'] = 0x3276; + t['cieucaparenkorean'] = 0x3216; + t['cieuccirclekorean'] = 0x3268; + t['cieuckorean'] = 0x3148; + t['cieucparenkorean'] = 0x3208; + t['cieucuparenkorean'] = 0x321C; + t['circle'] = 0x25CB; + t['circlecopyrt'] = 0x00A9; + t['circlemultiply'] = 0x2297; + t['circleot'] = 0x2299; + t['circleplus'] = 0x2295; + t['circlepostalmark'] = 0x3036; + t['circlewithlefthalfblack'] = 0x25D0; + t['circlewithrighthalfblack'] = 0x25D1; + t['circumflex'] = 0x02C6; + t['circumflexbelowcmb'] = 0x032D; + t['circumflexcmb'] = 0x0302; + t['clear'] = 0x2327; + t['clickalveolar'] = 0x01C2; + t['clickdental'] = 0x01C0; + t['clicklateral'] = 0x01C1; + t['clickretroflex'] = 0x01C3; + t['club'] = 0x2663; + t['clubsuitblack'] = 0x2663; + t['clubsuitwhite'] = 0x2667; + t['cmcubedsquare'] = 0x33A4; + t['cmonospace'] = 0xFF43; + t['cmsquaredsquare'] = 0x33A0; + t['coarmenian'] = 0x0581; + t['colon'] = 0x003A; + t['colonmonetary'] = 0x20A1; + t['colonmonospace'] = 0xFF1A; + t['colonsign'] = 0x20A1; + t['colonsmall'] = 0xFE55; + t['colontriangularhalfmod'] = 0x02D1; + t['colontriangularmod'] = 0x02D0; + t['comma'] = 0x002C; + t['commaabovecmb'] = 0x0313; + t['commaaboverightcmb'] = 0x0315; + t['commaaccent'] = 0xF6C3; + t['commaarabic'] = 0x060C; + t['commaarmenian'] = 0x055D; + t['commainferior'] = 0xF6E1; + t['commamonospace'] = 0xFF0C; + t['commareversedabovecmb'] = 0x0314; + t['commareversedmod'] = 0x02BD; + t['commasmall'] = 0xFE50; + t['commasuperior'] = 0xF6E2; + t['commaturnedabovecmb'] = 0x0312; + t['commaturnedmod'] = 0x02BB; + t['compass'] = 0x263C; + t['congruent'] = 0x2245; + t['contourintegral'] = 0x222E; + t['control'] = 0x2303; + t['controlACK'] = 0x0006; + t['controlBEL'] = 0x0007; + t['controlBS'] = 0x0008; + t['controlCAN'] = 0x0018; + t['controlCR'] = 0x000D; + t['controlDC1'] = 0x0011; + t['controlDC2'] = 0x0012; + t['controlDC3'] = 0x0013; + t['controlDC4'] = 0x0014; + t['controlDEL'] = 0x007F; + t['controlDLE'] = 0x0010; + t['controlEM'] = 0x0019; + t['controlENQ'] = 0x0005; + t['controlEOT'] = 0x0004; + t['controlESC'] = 0x001B; + t['controlETB'] = 0x0017; + t['controlETX'] = 0x0003; + t['controlFF'] = 0x000C; + t['controlFS'] = 0x001C; + t['controlGS'] = 0x001D; + t['controlHT'] = 0x0009; + t['controlLF'] = 0x000A; + t['controlNAK'] = 0x0015; + t['controlNULL'] = 0x0000; + t['controlRS'] = 0x001E; + t['controlSI'] = 0x000F; + t['controlSO'] = 0x000E; + t['controlSOT'] = 0x0002; + t['controlSTX'] = 0x0001; + t['controlSUB'] = 0x001A; + t['controlSYN'] = 0x0016; + t['controlUS'] = 0x001F; + t['controlVT'] = 0x000B; + t['copyright'] = 0x00A9; + t['copyrightsans'] = 0xF8E9; + t['copyrightserif'] = 0xF6D9; + t['cornerbracketleft'] = 0x300C; + t['cornerbracketlefthalfwidth'] = 0xFF62; + t['cornerbracketleftvertical'] = 0xFE41; + t['cornerbracketright'] = 0x300D; + t['cornerbracketrighthalfwidth'] = 0xFF63; + t['cornerbracketrightvertical'] = 0xFE42; + t['corporationsquare'] = 0x337F; + t['cosquare'] = 0x33C7; + t['coverkgsquare'] = 0x33C6; + t['cparen'] = 0x249E; + t['cruzeiro'] = 0x20A2; + t['cstretched'] = 0x0297; + t['curlyand'] = 0x22CF; + t['curlyor'] = 0x22CE; + t['currency'] = 0x00A4; + t['cyrBreve'] = 0xF6D1; + t['cyrFlex'] = 0xF6D2; + t['cyrbreve'] = 0xF6D4; + t['cyrflex'] = 0xF6D5; + t['d'] = 0x0064; + t['daarmenian'] = 0x0564; + t['dabengali'] = 0x09A6; + t['dadarabic'] = 0x0636; + t['dadeva'] = 0x0926; + t['dadfinalarabic'] = 0xFEBE; + t['dadinitialarabic'] = 0xFEBF; + t['dadmedialarabic'] = 0xFEC0; + t['dagesh'] = 0x05BC; + t['dageshhebrew'] = 0x05BC; + t['dagger'] = 0x2020; + t['daggerdbl'] = 0x2021; + t['dagujarati'] = 0x0AA6; + t['dagurmukhi'] = 0x0A26; + t['dahiragana'] = 0x3060; + t['dakatakana'] = 0x30C0; + t['dalarabic'] = 0x062F; + t['dalet'] = 0x05D3; + t['daletdagesh'] = 0xFB33; + t['daletdageshhebrew'] = 0xFB33; + t['dalethebrew'] = 0x05D3; + t['dalfinalarabic'] = 0xFEAA; + t['dammaarabic'] = 0x064F; + t['dammalowarabic'] = 0x064F; + t['dammatanaltonearabic'] = 0x064C; + t['dammatanarabic'] = 0x064C; + t['danda'] = 0x0964; + t['dargahebrew'] = 0x05A7; + t['dargalefthebrew'] = 0x05A7; + t['dasiapneumatacyrilliccmb'] = 0x0485; + t['dblGrave'] = 0xF6D3; + t['dblanglebracketleft'] = 0x300A; + t['dblanglebracketleftvertical'] = 0xFE3D; + t['dblanglebracketright'] = 0x300B; + t['dblanglebracketrightvertical'] = 0xFE3E; + t['dblarchinvertedbelowcmb'] = 0x032B; + t['dblarrowleft'] = 0x21D4; + t['dblarrowright'] = 0x21D2; + t['dbldanda'] = 0x0965; + t['dblgrave'] = 0xF6D6; + t['dblgravecmb'] = 0x030F; + t['dblintegral'] = 0x222C; + t['dbllowline'] = 0x2017; + t['dbllowlinecmb'] = 0x0333; + t['dbloverlinecmb'] = 0x033F; + t['dblprimemod'] = 0x02BA; + t['dblverticalbar'] = 0x2016; + t['dblverticallineabovecmb'] = 0x030E; + t['dbopomofo'] = 0x3109; + t['dbsquare'] = 0x33C8; + t['dcaron'] = 0x010F; + t['dcedilla'] = 0x1E11; + t['dcircle'] = 0x24D3; + t['dcircumflexbelow'] = 0x1E13; + t['dcroat'] = 0x0111; + t['ddabengali'] = 0x09A1; + t['ddadeva'] = 0x0921; + t['ddagujarati'] = 0x0AA1; + t['ddagurmukhi'] = 0x0A21; + t['ddalarabic'] = 0x0688; + t['ddalfinalarabic'] = 0xFB89; + t['dddhadeva'] = 0x095C; + t['ddhabengali'] = 0x09A2; + t['ddhadeva'] = 0x0922; + t['ddhagujarati'] = 0x0AA2; + t['ddhagurmukhi'] = 0x0A22; + t['ddotaccent'] = 0x1E0B; + t['ddotbelow'] = 0x1E0D; + t['decimalseparatorarabic'] = 0x066B; + t['decimalseparatorpersian'] = 0x066B; + t['decyrillic'] = 0x0434; + t['degree'] = 0x00B0; + t['dehihebrew'] = 0x05AD; + t['dehiragana'] = 0x3067; + t['deicoptic'] = 0x03EF; + t['dekatakana'] = 0x30C7; + t['deleteleft'] = 0x232B; + t['deleteright'] = 0x2326; + t['delta'] = 0x03B4; + t['deltaturned'] = 0x018D; + t['denominatorminusonenumeratorbengali'] = 0x09F8; + t['dezh'] = 0x02A4; + t['dhabengali'] = 0x09A7; + t['dhadeva'] = 0x0927; + t['dhagujarati'] = 0x0AA7; + t['dhagurmukhi'] = 0x0A27; + t['dhook'] = 0x0257; + t['dialytikatonos'] = 0x0385; + t['dialytikatonoscmb'] = 0x0344; + t['diamond'] = 0x2666; + t['diamondsuitwhite'] = 0x2662; + t['dieresis'] = 0x00A8; + t['dieresisacute'] = 0xF6D7; + t['dieresisbelowcmb'] = 0x0324; + t['dieresiscmb'] = 0x0308; + t['dieresisgrave'] = 0xF6D8; + t['dieresistonos'] = 0x0385; + t['dihiragana'] = 0x3062; + t['dikatakana'] = 0x30C2; + t['dittomark'] = 0x3003; + t['divide'] = 0x00F7; + t['divides'] = 0x2223; + t['divisionslash'] = 0x2215; + t['djecyrillic'] = 0x0452; + t['dkshade'] = 0x2593; + t['dlinebelow'] = 0x1E0F; + t['dlsquare'] = 0x3397; + t['dmacron'] = 0x0111; + t['dmonospace'] = 0xFF44; + t['dnblock'] = 0x2584; + t['dochadathai'] = 0x0E0E; + t['dodekthai'] = 0x0E14; + t['dohiragana'] = 0x3069; + t['dokatakana'] = 0x30C9; + t['dollar'] = 0x0024; + t['dollarinferior'] = 0xF6E3; + t['dollarmonospace'] = 0xFF04; + t['dollaroldstyle'] = 0xF724; + t['dollarsmall'] = 0xFE69; + t['dollarsuperior'] = 0xF6E4; + t['dong'] = 0x20AB; + t['dorusquare'] = 0x3326; + t['dotaccent'] = 0x02D9; + t['dotaccentcmb'] = 0x0307; + t['dotbelowcmb'] = 0x0323; + t['dotbelowcomb'] = 0x0323; + t['dotkatakana'] = 0x30FB; + t['dotlessi'] = 0x0131; + t['dotlessj'] = 0xF6BE; + t['dotlessjstrokehook'] = 0x0284; + t['dotmath'] = 0x22C5; + t['dottedcircle'] = 0x25CC; + t['doubleyodpatah'] = 0xFB1F; + t['doubleyodpatahhebrew'] = 0xFB1F; + t['downtackbelowcmb'] = 0x031E; + t['downtackmod'] = 0x02D5; + t['dparen'] = 0x249F; + t['dsuperior'] = 0xF6EB; + t['dtail'] = 0x0256; + t['dtopbar'] = 0x018C; + t['duhiragana'] = 0x3065; + t['dukatakana'] = 0x30C5; + t['dz'] = 0x01F3; + t['dzaltone'] = 0x02A3; + t['dzcaron'] = 0x01C6; + t['dzcurl'] = 0x02A5; + t['dzeabkhasiancyrillic'] = 0x04E1; + t['dzecyrillic'] = 0x0455; + t['dzhecyrillic'] = 0x045F; + t['e'] = 0x0065; + t['eacute'] = 0x00E9; + t['earth'] = 0x2641; + t['ebengali'] = 0x098F; + t['ebopomofo'] = 0x311C; + t['ebreve'] = 0x0115; + t['ecandradeva'] = 0x090D; + t['ecandragujarati'] = 0x0A8D; + t['ecandravowelsigndeva'] = 0x0945; + t['ecandravowelsigngujarati'] = 0x0AC5; + t['ecaron'] = 0x011B; + t['ecedillabreve'] = 0x1E1D; + t['echarmenian'] = 0x0565; + t['echyiwnarmenian'] = 0x0587; + t['ecircle'] = 0x24D4; + t['ecircumflex'] = 0x00EA; + t['ecircumflexacute'] = 0x1EBF; + t['ecircumflexbelow'] = 0x1E19; + t['ecircumflexdotbelow'] = 0x1EC7; + t['ecircumflexgrave'] = 0x1EC1; + t['ecircumflexhookabove'] = 0x1EC3; + t['ecircumflextilde'] = 0x1EC5; + t['ecyrillic'] = 0x0454; + t['edblgrave'] = 0x0205; + t['edeva'] = 0x090F; + t['edieresis'] = 0x00EB; + t['edot'] = 0x0117; + t['edotaccent'] = 0x0117; + t['edotbelow'] = 0x1EB9; + t['eegurmukhi'] = 0x0A0F; + t['eematragurmukhi'] = 0x0A47; + t['efcyrillic'] = 0x0444; + t['egrave'] = 0x00E8; + t['egujarati'] = 0x0A8F; + t['eharmenian'] = 0x0567; + t['ehbopomofo'] = 0x311D; + t['ehiragana'] = 0x3048; + t['ehookabove'] = 0x1EBB; + t['eibopomofo'] = 0x311F; + t['eight'] = 0x0038; + t['eightarabic'] = 0x0668; + t['eightbengali'] = 0x09EE; + t['eightcircle'] = 0x2467; + t['eightcircleinversesansserif'] = 0x2791; + t['eightdeva'] = 0x096E; + t['eighteencircle'] = 0x2471; + t['eighteenparen'] = 0x2485; + t['eighteenperiod'] = 0x2499; + t['eightgujarati'] = 0x0AEE; + t['eightgurmukhi'] = 0x0A6E; + t['eighthackarabic'] = 0x0668; + t['eighthangzhou'] = 0x3028; + t['eighthnotebeamed'] = 0x266B; + t['eightideographicparen'] = 0x3227; + t['eightinferior'] = 0x2088; + t['eightmonospace'] = 0xFF18; + t['eightoldstyle'] = 0xF738; + t['eightparen'] = 0x247B; + t['eightperiod'] = 0x248F; + t['eightpersian'] = 0x06F8; + t['eightroman'] = 0x2177; + t['eightsuperior'] = 0x2078; + t['eightthai'] = 0x0E58; + t['einvertedbreve'] = 0x0207; + t['eiotifiedcyrillic'] = 0x0465; + t['ekatakana'] = 0x30A8; + t['ekatakanahalfwidth'] = 0xFF74; + t['ekonkargurmukhi'] = 0x0A74; + t['ekorean'] = 0x3154; + t['elcyrillic'] = 0x043B; + t['element'] = 0x2208; + t['elevencircle'] = 0x246A; + t['elevenparen'] = 0x247E; + t['elevenperiod'] = 0x2492; + t['elevenroman'] = 0x217A; + t['ellipsis'] = 0x2026; + t['ellipsisvertical'] = 0x22EE; + t['emacron'] = 0x0113; + t['emacronacute'] = 0x1E17; + t['emacrongrave'] = 0x1E15; + t['emcyrillic'] = 0x043C; + t['emdash'] = 0x2014; + t['emdashvertical'] = 0xFE31; + t['emonospace'] = 0xFF45; + t['emphasismarkarmenian'] = 0x055B; + t['emptyset'] = 0x2205; + t['enbopomofo'] = 0x3123; + t['encyrillic'] = 0x043D; + t['endash'] = 0x2013; + t['endashvertical'] = 0xFE32; + t['endescendercyrillic'] = 0x04A3; + t['eng'] = 0x014B; + t['engbopomofo'] = 0x3125; + t['enghecyrillic'] = 0x04A5; + t['enhookcyrillic'] = 0x04C8; + t['enspace'] = 0x2002; + t['eogonek'] = 0x0119; + t['eokorean'] = 0x3153; + t['eopen'] = 0x025B; + t['eopenclosed'] = 0x029A; + t['eopenreversed'] = 0x025C; + t['eopenreversedclosed'] = 0x025E; + t['eopenreversedhook'] = 0x025D; + t['eparen'] = 0x24A0; + t['epsilon'] = 0x03B5; + t['epsilontonos'] = 0x03AD; + t['equal'] = 0x003D; + t['equalmonospace'] = 0xFF1D; + t['equalsmall'] = 0xFE66; + t['equalsuperior'] = 0x207C; + t['equivalence'] = 0x2261; + t['erbopomofo'] = 0x3126; + t['ercyrillic'] = 0x0440; + t['ereversed'] = 0x0258; + t['ereversedcyrillic'] = 0x044D; + t['escyrillic'] = 0x0441; + t['esdescendercyrillic'] = 0x04AB; + t['esh'] = 0x0283; + t['eshcurl'] = 0x0286; + t['eshortdeva'] = 0x090E; + t['eshortvowelsigndeva'] = 0x0946; + t['eshreversedloop'] = 0x01AA; + t['eshsquatreversed'] = 0x0285; + t['esmallhiragana'] = 0x3047; + t['esmallkatakana'] = 0x30A7; + t['esmallkatakanahalfwidth'] = 0xFF6A; + t['estimated'] = 0x212E; + t['esuperior'] = 0xF6EC; + t['eta'] = 0x03B7; + t['etarmenian'] = 0x0568; + t['etatonos'] = 0x03AE; + t['eth'] = 0x00F0; + t['etilde'] = 0x1EBD; + t['etildebelow'] = 0x1E1B; + t['etnahtafoukhhebrew'] = 0x0591; + t['etnahtafoukhlefthebrew'] = 0x0591; + t['etnahtahebrew'] = 0x0591; + t['etnahtalefthebrew'] = 0x0591; + t['eturned'] = 0x01DD; + t['eukorean'] = 0x3161; + t['euro'] = 0x20AC; + t['evowelsignbengali'] = 0x09C7; + t['evowelsigndeva'] = 0x0947; + t['evowelsigngujarati'] = 0x0AC7; + t['exclam'] = 0x0021; + t['exclamarmenian'] = 0x055C; + t['exclamdbl'] = 0x203C; + t['exclamdown'] = 0x00A1; + t['exclamdownsmall'] = 0xF7A1; + t['exclammonospace'] = 0xFF01; + t['exclamsmall'] = 0xF721; + t['existential'] = 0x2203; + t['ezh'] = 0x0292; + t['ezhcaron'] = 0x01EF; + t['ezhcurl'] = 0x0293; + t['ezhreversed'] = 0x01B9; + t['ezhtail'] = 0x01BA; + t['f'] = 0x0066; + t['fadeva'] = 0x095E; + t['fagurmukhi'] = 0x0A5E; + t['fahrenheit'] = 0x2109; + t['fathaarabic'] = 0x064E; + t['fathalowarabic'] = 0x064E; + t['fathatanarabic'] = 0x064B; + t['fbopomofo'] = 0x3108; + t['fcircle'] = 0x24D5; + t['fdotaccent'] = 0x1E1F; + t['feharabic'] = 0x0641; + t['feharmenian'] = 0x0586; + t['fehfinalarabic'] = 0xFED2; + t['fehinitialarabic'] = 0xFED3; + t['fehmedialarabic'] = 0xFED4; + t['feicoptic'] = 0x03E5; + t['female'] = 0x2640; + t['ff'] = 0xFB00; + t['ffi'] = 0xFB03; + t['ffl'] = 0xFB04; + t['fi'] = 0xFB01; + t['fifteencircle'] = 0x246E; + t['fifteenparen'] = 0x2482; + t['fifteenperiod'] = 0x2496; + t['figuredash'] = 0x2012; + t['filledbox'] = 0x25A0; + t['filledrect'] = 0x25AC; + t['finalkaf'] = 0x05DA; + t['finalkafdagesh'] = 0xFB3A; + t['finalkafdageshhebrew'] = 0xFB3A; + t['finalkafhebrew'] = 0x05DA; + t['finalmem'] = 0x05DD; + t['finalmemhebrew'] = 0x05DD; + t['finalnun'] = 0x05DF; + t['finalnunhebrew'] = 0x05DF; + t['finalpe'] = 0x05E3; + t['finalpehebrew'] = 0x05E3; + t['finaltsadi'] = 0x05E5; + t['finaltsadihebrew'] = 0x05E5; + t['firsttonechinese'] = 0x02C9; + t['fisheye'] = 0x25C9; + t['fitacyrillic'] = 0x0473; + t['five'] = 0x0035; + t['fivearabic'] = 0x0665; + t['fivebengali'] = 0x09EB; + t['fivecircle'] = 0x2464; + t['fivecircleinversesansserif'] = 0x278E; + t['fivedeva'] = 0x096B; + t['fiveeighths'] = 0x215D; + t['fivegujarati'] = 0x0AEB; + t['fivegurmukhi'] = 0x0A6B; + t['fivehackarabic'] = 0x0665; + t['fivehangzhou'] = 0x3025; + t['fiveideographicparen'] = 0x3224; + t['fiveinferior'] = 0x2085; + t['fivemonospace'] = 0xFF15; + t['fiveoldstyle'] = 0xF735; + t['fiveparen'] = 0x2478; + t['fiveperiod'] = 0x248C; + t['fivepersian'] = 0x06F5; + t['fiveroman'] = 0x2174; + t['fivesuperior'] = 0x2075; + t['fivethai'] = 0x0E55; + t['fl'] = 0xFB02; + t['florin'] = 0x0192; + t['fmonospace'] = 0xFF46; + t['fmsquare'] = 0x3399; + t['fofanthai'] = 0x0E1F; + t['fofathai'] = 0x0E1D; + t['fongmanthai'] = 0x0E4F; + t['forall'] = 0x2200; + t['four'] = 0x0034; + t['fourarabic'] = 0x0664; + t['fourbengali'] = 0x09EA; + t['fourcircle'] = 0x2463; + t['fourcircleinversesansserif'] = 0x278D; + t['fourdeva'] = 0x096A; + t['fourgujarati'] = 0x0AEA; + t['fourgurmukhi'] = 0x0A6A; + t['fourhackarabic'] = 0x0664; + t['fourhangzhou'] = 0x3024; + t['fourideographicparen'] = 0x3223; + t['fourinferior'] = 0x2084; + t['fourmonospace'] = 0xFF14; + t['fournumeratorbengali'] = 0x09F7; + t['fouroldstyle'] = 0xF734; + t['fourparen'] = 0x2477; + t['fourperiod'] = 0x248B; + t['fourpersian'] = 0x06F4; + t['fourroman'] = 0x2173; + t['foursuperior'] = 0x2074; + t['fourteencircle'] = 0x246D; + t['fourteenparen'] = 0x2481; + t['fourteenperiod'] = 0x2495; + t['fourthai'] = 0x0E54; + t['fourthtonechinese'] = 0x02CB; + t['fparen'] = 0x24A1; + t['fraction'] = 0x2044; + t['franc'] = 0x20A3; + t['g'] = 0x0067; + t['gabengali'] = 0x0997; + t['gacute'] = 0x01F5; + t['gadeva'] = 0x0917; + t['gafarabic'] = 0x06AF; + t['gaffinalarabic'] = 0xFB93; + t['gafinitialarabic'] = 0xFB94; + t['gafmedialarabic'] = 0xFB95; + t['gagujarati'] = 0x0A97; + t['gagurmukhi'] = 0x0A17; + t['gahiragana'] = 0x304C; + t['gakatakana'] = 0x30AC; + t['gamma'] = 0x03B3; + t['gammalatinsmall'] = 0x0263; + t['gammasuperior'] = 0x02E0; + t['gangiacoptic'] = 0x03EB; + t['gbopomofo'] = 0x310D; + t['gbreve'] = 0x011F; + t['gcaron'] = 0x01E7; + t['gcedilla'] = 0x0123; + t['gcircle'] = 0x24D6; + t['gcircumflex'] = 0x011D; + t['gcommaaccent'] = 0x0123; + t['gdot'] = 0x0121; + t['gdotaccent'] = 0x0121; + t['gecyrillic'] = 0x0433; + t['gehiragana'] = 0x3052; + t['gekatakana'] = 0x30B2; + t['geometricallyequal'] = 0x2251; + t['gereshaccenthebrew'] = 0x059C; + t['gereshhebrew'] = 0x05F3; + t['gereshmuqdamhebrew'] = 0x059D; + t['germandbls'] = 0x00DF; + t['gershayimaccenthebrew'] = 0x059E; + t['gershayimhebrew'] = 0x05F4; + t['getamark'] = 0x3013; + t['ghabengali'] = 0x0998; + t['ghadarmenian'] = 0x0572; + t['ghadeva'] = 0x0918; + t['ghagujarati'] = 0x0A98; + t['ghagurmukhi'] = 0x0A18; + t['ghainarabic'] = 0x063A; + t['ghainfinalarabic'] = 0xFECE; + t['ghaininitialarabic'] = 0xFECF; + t['ghainmedialarabic'] = 0xFED0; + t['ghemiddlehookcyrillic'] = 0x0495; + t['ghestrokecyrillic'] = 0x0493; + t['gheupturncyrillic'] = 0x0491; + t['ghhadeva'] = 0x095A; + t['ghhagurmukhi'] = 0x0A5A; + t['ghook'] = 0x0260; + t['ghzsquare'] = 0x3393; + t['gihiragana'] = 0x304E; + t['gikatakana'] = 0x30AE; + t['gimarmenian'] = 0x0563; + t['gimel'] = 0x05D2; + t['gimeldagesh'] = 0xFB32; + t['gimeldageshhebrew'] = 0xFB32; + t['gimelhebrew'] = 0x05D2; + t['gjecyrillic'] = 0x0453; + t['glottalinvertedstroke'] = 0x01BE; + t['glottalstop'] = 0x0294; + t['glottalstopinverted'] = 0x0296; + t['glottalstopmod'] = 0x02C0; + t['glottalstopreversed'] = 0x0295; + t['glottalstopreversedmod'] = 0x02C1; + t['glottalstopreversedsuperior'] = 0x02E4; + t['glottalstopstroke'] = 0x02A1; + t['glottalstopstrokereversed'] = 0x02A2; + t['gmacron'] = 0x1E21; + t['gmonospace'] = 0xFF47; + t['gohiragana'] = 0x3054; + t['gokatakana'] = 0x30B4; + t['gparen'] = 0x24A2; + t['gpasquare'] = 0x33AC; + t['gradient'] = 0x2207; + t['grave'] = 0x0060; + t['gravebelowcmb'] = 0x0316; + t['gravecmb'] = 0x0300; + t['gravecomb'] = 0x0300; + t['gravedeva'] = 0x0953; + t['gravelowmod'] = 0x02CE; + t['gravemonospace'] = 0xFF40; + t['gravetonecmb'] = 0x0340; + t['greater'] = 0x003E; + t['greaterequal'] = 0x2265; + t['greaterequalorless'] = 0x22DB; + t['greatermonospace'] = 0xFF1E; + t['greaterorequivalent'] = 0x2273; + t['greaterorless'] = 0x2277; + t['greateroverequal'] = 0x2267; + t['greatersmall'] = 0xFE65; + t['gscript'] = 0x0261; + t['gstroke'] = 0x01E5; + t['guhiragana'] = 0x3050; + t['guillemotleft'] = 0x00AB; + t['guillemotright'] = 0x00BB; + t['guilsinglleft'] = 0x2039; + t['guilsinglright'] = 0x203A; + t['gukatakana'] = 0x30B0; + t['guramusquare'] = 0x3318; + t['gysquare'] = 0x33C9; + t['h'] = 0x0068; + t['haabkhasiancyrillic'] = 0x04A9; + t['haaltonearabic'] = 0x06C1; + t['habengali'] = 0x09B9; + t['hadescendercyrillic'] = 0x04B3; + t['hadeva'] = 0x0939; + t['hagujarati'] = 0x0AB9; + t['hagurmukhi'] = 0x0A39; + t['haharabic'] = 0x062D; + t['hahfinalarabic'] = 0xFEA2; + t['hahinitialarabic'] = 0xFEA3; + t['hahiragana'] = 0x306F; + t['hahmedialarabic'] = 0xFEA4; + t['haitusquare'] = 0x332A; + t['hakatakana'] = 0x30CF; + t['hakatakanahalfwidth'] = 0xFF8A; + t['halantgurmukhi'] = 0x0A4D; + t['hamzaarabic'] = 0x0621; + t['hamzalowarabic'] = 0x0621; + t['hangulfiller'] = 0x3164; + t['hardsigncyrillic'] = 0x044A; + t['harpoonleftbarbup'] = 0x21BC; + t['harpoonrightbarbup'] = 0x21C0; + t['hasquare'] = 0x33CA; + t['hatafpatah'] = 0x05B2; + t['hatafpatah16'] = 0x05B2; + t['hatafpatah23'] = 0x05B2; + t['hatafpatah2f'] = 0x05B2; + t['hatafpatahhebrew'] = 0x05B2; + t['hatafpatahnarrowhebrew'] = 0x05B2; + t['hatafpatahquarterhebrew'] = 0x05B2; + t['hatafpatahwidehebrew'] = 0x05B2; + t['hatafqamats'] = 0x05B3; + t['hatafqamats1b'] = 0x05B3; + t['hatafqamats28'] = 0x05B3; + t['hatafqamats34'] = 0x05B3; + t['hatafqamatshebrew'] = 0x05B3; + t['hatafqamatsnarrowhebrew'] = 0x05B3; + t['hatafqamatsquarterhebrew'] = 0x05B3; + t['hatafqamatswidehebrew'] = 0x05B3; + t['hatafsegol'] = 0x05B1; + t['hatafsegol17'] = 0x05B1; + t['hatafsegol24'] = 0x05B1; + t['hatafsegol30'] = 0x05B1; + t['hatafsegolhebrew'] = 0x05B1; + t['hatafsegolnarrowhebrew'] = 0x05B1; + t['hatafsegolquarterhebrew'] = 0x05B1; + t['hatafsegolwidehebrew'] = 0x05B1; + t['hbar'] = 0x0127; + t['hbopomofo'] = 0x310F; + t['hbrevebelow'] = 0x1E2B; + t['hcedilla'] = 0x1E29; + t['hcircle'] = 0x24D7; + t['hcircumflex'] = 0x0125; + t['hdieresis'] = 0x1E27; + t['hdotaccent'] = 0x1E23; + t['hdotbelow'] = 0x1E25; + t['he'] = 0x05D4; + t['heart'] = 0x2665; + t['heartsuitblack'] = 0x2665; + t['heartsuitwhite'] = 0x2661; + t['hedagesh'] = 0xFB34; + t['hedageshhebrew'] = 0xFB34; + t['hehaltonearabic'] = 0x06C1; + t['heharabic'] = 0x0647; + t['hehebrew'] = 0x05D4; + t['hehfinalaltonearabic'] = 0xFBA7; + t['hehfinalalttwoarabic'] = 0xFEEA; + t['hehfinalarabic'] = 0xFEEA; + t['hehhamzaabovefinalarabic'] = 0xFBA5; + t['hehhamzaaboveisolatedarabic'] = 0xFBA4; + t['hehinitialaltonearabic'] = 0xFBA8; + t['hehinitialarabic'] = 0xFEEB; + t['hehiragana'] = 0x3078; + t['hehmedialaltonearabic'] = 0xFBA9; + t['hehmedialarabic'] = 0xFEEC; + t['heiseierasquare'] = 0x337B; + t['hekatakana'] = 0x30D8; + t['hekatakanahalfwidth'] = 0xFF8D; + t['hekutaarusquare'] = 0x3336; + t['henghook'] = 0x0267; + t['herutusquare'] = 0x3339; + t['het'] = 0x05D7; + t['hethebrew'] = 0x05D7; + t['hhook'] = 0x0266; + t['hhooksuperior'] = 0x02B1; + t['hieuhacirclekorean'] = 0x327B; + t['hieuhaparenkorean'] = 0x321B; + t['hieuhcirclekorean'] = 0x326D; + t['hieuhkorean'] = 0x314E; + t['hieuhparenkorean'] = 0x320D; + t['hihiragana'] = 0x3072; + t['hikatakana'] = 0x30D2; + t['hikatakanahalfwidth'] = 0xFF8B; + t['hiriq'] = 0x05B4; + t['hiriq14'] = 0x05B4; + t['hiriq21'] = 0x05B4; + t['hiriq2d'] = 0x05B4; + t['hiriqhebrew'] = 0x05B4; + t['hiriqnarrowhebrew'] = 0x05B4; + t['hiriqquarterhebrew'] = 0x05B4; + t['hiriqwidehebrew'] = 0x05B4; + t['hlinebelow'] = 0x1E96; + t['hmonospace'] = 0xFF48; + t['hoarmenian'] = 0x0570; + t['hohipthai'] = 0x0E2B; + t['hohiragana'] = 0x307B; + t['hokatakana'] = 0x30DB; + t['hokatakanahalfwidth'] = 0xFF8E; + t['holam'] = 0x05B9; + t['holam19'] = 0x05B9; + t['holam26'] = 0x05B9; + t['holam32'] = 0x05B9; + t['holamhebrew'] = 0x05B9; + t['holamnarrowhebrew'] = 0x05B9; + t['holamquarterhebrew'] = 0x05B9; + t['holamwidehebrew'] = 0x05B9; + t['honokhukthai'] = 0x0E2E; + t['hookabovecomb'] = 0x0309; + t['hookcmb'] = 0x0309; + t['hookpalatalizedbelowcmb'] = 0x0321; + t['hookretroflexbelowcmb'] = 0x0322; + t['hoonsquare'] = 0x3342; + t['horicoptic'] = 0x03E9; + t['horizontalbar'] = 0x2015; + t['horncmb'] = 0x031B; + t['hotsprings'] = 0x2668; + t['house'] = 0x2302; + t['hparen'] = 0x24A3; + t['hsuperior'] = 0x02B0; + t['hturned'] = 0x0265; + t['huhiragana'] = 0x3075; + t['huiitosquare'] = 0x3333; + t['hukatakana'] = 0x30D5; + t['hukatakanahalfwidth'] = 0xFF8C; + t['hungarumlaut'] = 0x02DD; + t['hungarumlautcmb'] = 0x030B; + t['hv'] = 0x0195; + t['hyphen'] = 0x002D; + t['hypheninferior'] = 0xF6E5; + t['hyphenmonospace'] = 0xFF0D; + t['hyphensmall'] = 0xFE63; + t['hyphensuperior'] = 0xF6E6; + t['hyphentwo'] = 0x2010; + t['i'] = 0x0069; + t['iacute'] = 0x00ED; + t['iacyrillic'] = 0x044F; + t['ibengali'] = 0x0987; + t['ibopomofo'] = 0x3127; + t['ibreve'] = 0x012D; + t['icaron'] = 0x01D0; + t['icircle'] = 0x24D8; + t['icircumflex'] = 0x00EE; + t['icyrillic'] = 0x0456; + t['idblgrave'] = 0x0209; + t['ideographearthcircle'] = 0x328F; + t['ideographfirecircle'] = 0x328B; + t['ideographicallianceparen'] = 0x323F; + t['ideographiccallparen'] = 0x323A; + t['ideographiccentrecircle'] = 0x32A5; + t['ideographicclose'] = 0x3006; + t['ideographiccomma'] = 0x3001; + t['ideographiccommaleft'] = 0xFF64; + t['ideographiccongratulationparen'] = 0x3237; + t['ideographiccorrectcircle'] = 0x32A3; + t['ideographicearthparen'] = 0x322F; + t['ideographicenterpriseparen'] = 0x323D; + t['ideographicexcellentcircle'] = 0x329D; + t['ideographicfestivalparen'] = 0x3240; + t['ideographicfinancialcircle'] = 0x3296; + t['ideographicfinancialparen'] = 0x3236; + t['ideographicfireparen'] = 0x322B; + t['ideographichaveparen'] = 0x3232; + t['ideographichighcircle'] = 0x32A4; + t['ideographiciterationmark'] = 0x3005; + t['ideographiclaborcircle'] = 0x3298; + t['ideographiclaborparen'] = 0x3238; + t['ideographicleftcircle'] = 0x32A7; + t['ideographiclowcircle'] = 0x32A6; + t['ideographicmedicinecircle'] = 0x32A9; + t['ideographicmetalparen'] = 0x322E; + t['ideographicmoonparen'] = 0x322A; + t['ideographicnameparen'] = 0x3234; + t['ideographicperiod'] = 0x3002; + t['ideographicprintcircle'] = 0x329E; + t['ideographicreachparen'] = 0x3243; + t['ideographicrepresentparen'] = 0x3239; + t['ideographicresourceparen'] = 0x323E; + t['ideographicrightcircle'] = 0x32A8; + t['ideographicsecretcircle'] = 0x3299; + t['ideographicselfparen'] = 0x3242; + t['ideographicsocietyparen'] = 0x3233; + t['ideographicspace'] = 0x3000; + t['ideographicspecialparen'] = 0x3235; + t['ideographicstockparen'] = 0x3231; + t['ideographicstudyparen'] = 0x323B; + t['ideographicsunparen'] = 0x3230; + t['ideographicsuperviseparen'] = 0x323C; + t['ideographicwaterparen'] = 0x322C; + t['ideographicwoodparen'] = 0x322D; + t['ideographiczero'] = 0x3007; + t['ideographmetalcircle'] = 0x328E; + t['ideographmooncircle'] = 0x328A; + t['ideographnamecircle'] = 0x3294; + t['ideographsuncircle'] = 0x3290; + t['ideographwatercircle'] = 0x328C; + t['ideographwoodcircle'] = 0x328D; + t['ideva'] = 0x0907; + t['idieresis'] = 0x00EF; + t['idieresisacute'] = 0x1E2F; + t['idieresiscyrillic'] = 0x04E5; + t['idotbelow'] = 0x1ECB; + t['iebrevecyrillic'] = 0x04D7; + t['iecyrillic'] = 0x0435; + t['ieungacirclekorean'] = 0x3275; + t['ieungaparenkorean'] = 0x3215; + t['ieungcirclekorean'] = 0x3267; + t['ieungkorean'] = 0x3147; + t['ieungparenkorean'] = 0x3207; + t['igrave'] = 0x00EC; + t['igujarati'] = 0x0A87; + t['igurmukhi'] = 0x0A07; + t['ihiragana'] = 0x3044; + t['ihookabove'] = 0x1EC9; + t['iibengali'] = 0x0988; + t['iicyrillic'] = 0x0438; + t['iideva'] = 0x0908; + t['iigujarati'] = 0x0A88; + t['iigurmukhi'] = 0x0A08; + t['iimatragurmukhi'] = 0x0A40; + t['iinvertedbreve'] = 0x020B; + t['iishortcyrillic'] = 0x0439; + t['iivowelsignbengali'] = 0x09C0; + t['iivowelsigndeva'] = 0x0940; + t['iivowelsigngujarati'] = 0x0AC0; + t['ij'] = 0x0133; + t['ikatakana'] = 0x30A4; + t['ikatakanahalfwidth'] = 0xFF72; + t['ikorean'] = 0x3163; + t['ilde'] = 0x02DC; + t['iluyhebrew'] = 0x05AC; + t['imacron'] = 0x012B; + t['imacroncyrillic'] = 0x04E3; + t['imageorapproximatelyequal'] = 0x2253; + t['imatragurmukhi'] = 0x0A3F; + t['imonospace'] = 0xFF49; + t['increment'] = 0x2206; + t['infinity'] = 0x221E; + t['iniarmenian'] = 0x056B; + t['integral'] = 0x222B; + t['integralbottom'] = 0x2321; + t['integralbt'] = 0x2321; + t['integralex'] = 0xF8F5; + t['integraltop'] = 0x2320; + t['integraltp'] = 0x2320; + t['intersection'] = 0x2229; + t['intisquare'] = 0x3305; + t['invbullet'] = 0x25D8; + t['invcircle'] = 0x25D9; + t['invsmileface'] = 0x263B; + t['iocyrillic'] = 0x0451; + t['iogonek'] = 0x012F; + t['iota'] = 0x03B9; + t['iotadieresis'] = 0x03CA; + t['iotadieresistonos'] = 0x0390; + t['iotalatin'] = 0x0269; + t['iotatonos'] = 0x03AF; + t['iparen'] = 0x24A4; + t['irigurmukhi'] = 0x0A72; + t['ismallhiragana'] = 0x3043; + t['ismallkatakana'] = 0x30A3; + t['ismallkatakanahalfwidth'] = 0xFF68; + t['issharbengali'] = 0x09FA; + t['istroke'] = 0x0268; + t['isuperior'] = 0xF6ED; + t['iterationhiragana'] = 0x309D; + t['iterationkatakana'] = 0x30FD; + t['itilde'] = 0x0129; + t['itildebelow'] = 0x1E2D; + t['iubopomofo'] = 0x3129; + t['iucyrillic'] = 0x044E; + t['ivowelsignbengali'] = 0x09BF; + t['ivowelsigndeva'] = 0x093F; + t['ivowelsigngujarati'] = 0x0ABF; + t['izhitsacyrillic'] = 0x0475; + t['izhitsadblgravecyrillic'] = 0x0477; + t['j'] = 0x006A; + t['jaarmenian'] = 0x0571; + t['jabengali'] = 0x099C; + t['jadeva'] = 0x091C; + t['jagujarati'] = 0x0A9C; + t['jagurmukhi'] = 0x0A1C; + t['jbopomofo'] = 0x3110; + t['jcaron'] = 0x01F0; + t['jcircle'] = 0x24D9; + t['jcircumflex'] = 0x0135; + t['jcrossedtail'] = 0x029D; + t['jdotlessstroke'] = 0x025F; + t['jecyrillic'] = 0x0458; + t['jeemarabic'] = 0x062C; + t['jeemfinalarabic'] = 0xFE9E; + t['jeeminitialarabic'] = 0xFE9F; + t['jeemmedialarabic'] = 0xFEA0; + t['jeharabic'] = 0x0698; + t['jehfinalarabic'] = 0xFB8B; + t['jhabengali'] = 0x099D; + t['jhadeva'] = 0x091D; + t['jhagujarati'] = 0x0A9D; + t['jhagurmukhi'] = 0x0A1D; + t['jheharmenian'] = 0x057B; + t['jis'] = 0x3004; + t['jmonospace'] = 0xFF4A; + t['jparen'] = 0x24A5; + t['jsuperior'] = 0x02B2; + t['k'] = 0x006B; + t['kabashkircyrillic'] = 0x04A1; + t['kabengali'] = 0x0995; + t['kacute'] = 0x1E31; + t['kacyrillic'] = 0x043A; + t['kadescendercyrillic'] = 0x049B; + t['kadeva'] = 0x0915; + t['kaf'] = 0x05DB; + t['kafarabic'] = 0x0643; + t['kafdagesh'] = 0xFB3B; + t['kafdageshhebrew'] = 0xFB3B; + t['kaffinalarabic'] = 0xFEDA; + t['kafhebrew'] = 0x05DB; + t['kafinitialarabic'] = 0xFEDB; + t['kafmedialarabic'] = 0xFEDC; + t['kafrafehebrew'] = 0xFB4D; + t['kagujarati'] = 0x0A95; + t['kagurmukhi'] = 0x0A15; + t['kahiragana'] = 0x304B; + t['kahookcyrillic'] = 0x04C4; + t['kakatakana'] = 0x30AB; + t['kakatakanahalfwidth'] = 0xFF76; + t['kappa'] = 0x03BA; + t['kappasymbolgreek'] = 0x03F0; + t['kapyeounmieumkorean'] = 0x3171; + t['kapyeounphieuphkorean'] = 0x3184; + t['kapyeounpieupkorean'] = 0x3178; + t['kapyeounssangpieupkorean'] = 0x3179; + t['karoriisquare'] = 0x330D; + t['kashidaautoarabic'] = 0x0640; + t['kashidaautonosidebearingarabic'] = 0x0640; + t['kasmallkatakana'] = 0x30F5; + t['kasquare'] = 0x3384; + t['kasraarabic'] = 0x0650; + t['kasratanarabic'] = 0x064D; + t['kastrokecyrillic'] = 0x049F; + t['katahiraprolongmarkhalfwidth'] = 0xFF70; + t['kaverticalstrokecyrillic'] = 0x049D; + t['kbopomofo'] = 0x310E; + t['kcalsquare'] = 0x3389; + t['kcaron'] = 0x01E9; + t['kcedilla'] = 0x0137; + t['kcircle'] = 0x24DA; + t['kcommaaccent'] = 0x0137; + t['kdotbelow'] = 0x1E33; + t['keharmenian'] = 0x0584; + t['kehiragana'] = 0x3051; + t['kekatakana'] = 0x30B1; + t['kekatakanahalfwidth'] = 0xFF79; + t['kenarmenian'] = 0x056F; + t['kesmallkatakana'] = 0x30F6; + t['kgreenlandic'] = 0x0138; + t['khabengali'] = 0x0996; + t['khacyrillic'] = 0x0445; + t['khadeva'] = 0x0916; + t['khagujarati'] = 0x0A96; + t['khagurmukhi'] = 0x0A16; + t['khaharabic'] = 0x062E; + t['khahfinalarabic'] = 0xFEA6; + t['khahinitialarabic'] = 0xFEA7; + t['khahmedialarabic'] = 0xFEA8; + t['kheicoptic'] = 0x03E7; + t['khhadeva'] = 0x0959; + t['khhagurmukhi'] = 0x0A59; + t['khieukhacirclekorean'] = 0x3278; + t['khieukhaparenkorean'] = 0x3218; + t['khieukhcirclekorean'] = 0x326A; + t['khieukhkorean'] = 0x314B; + t['khieukhparenkorean'] = 0x320A; + t['khokhaithai'] = 0x0E02; + t['khokhonthai'] = 0x0E05; + t['khokhuatthai'] = 0x0E03; + t['khokhwaithai'] = 0x0E04; + t['khomutthai'] = 0x0E5B; + t['khook'] = 0x0199; + t['khorakhangthai'] = 0x0E06; + t['khzsquare'] = 0x3391; + t['kihiragana'] = 0x304D; + t['kikatakana'] = 0x30AD; + t['kikatakanahalfwidth'] = 0xFF77; + t['kiroguramusquare'] = 0x3315; + t['kiromeetorusquare'] = 0x3316; + t['kirosquare'] = 0x3314; + t['kiyeokacirclekorean'] = 0x326E; + t['kiyeokaparenkorean'] = 0x320E; + t['kiyeokcirclekorean'] = 0x3260; + t['kiyeokkorean'] = 0x3131; + t['kiyeokparenkorean'] = 0x3200; + t['kiyeoksioskorean'] = 0x3133; + t['kjecyrillic'] = 0x045C; + t['klinebelow'] = 0x1E35; + t['klsquare'] = 0x3398; + t['kmcubedsquare'] = 0x33A6; + t['kmonospace'] = 0xFF4B; + t['kmsquaredsquare'] = 0x33A2; + t['kohiragana'] = 0x3053; + t['kohmsquare'] = 0x33C0; + t['kokaithai'] = 0x0E01; + t['kokatakana'] = 0x30B3; + t['kokatakanahalfwidth'] = 0xFF7A; + t['kooposquare'] = 0x331E; + t['koppacyrillic'] = 0x0481; + t['koreanstandardsymbol'] = 0x327F; + t['koroniscmb'] = 0x0343; + t['kparen'] = 0x24A6; + t['kpasquare'] = 0x33AA; + t['ksicyrillic'] = 0x046F; + t['ktsquare'] = 0x33CF; + t['kturned'] = 0x029E; + t['kuhiragana'] = 0x304F; + t['kukatakana'] = 0x30AF; + t['kukatakanahalfwidth'] = 0xFF78; + t['kvsquare'] = 0x33B8; + t['kwsquare'] = 0x33BE; + t['l'] = 0x006C; + t['labengali'] = 0x09B2; + t['lacute'] = 0x013A; + t['ladeva'] = 0x0932; + t['lagujarati'] = 0x0AB2; + t['lagurmukhi'] = 0x0A32; + t['lakkhangyaothai'] = 0x0E45; + t['lamaleffinalarabic'] = 0xFEFC; + t['lamalefhamzaabovefinalarabic'] = 0xFEF8; + t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7; + t['lamalefhamzabelowfinalarabic'] = 0xFEFA; + t['lamalefhamzabelowisolatedarabic'] = 0xFEF9; + t['lamalefisolatedarabic'] = 0xFEFB; + t['lamalefmaddaabovefinalarabic'] = 0xFEF6; + t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5; + t['lamarabic'] = 0x0644; + t['lambda'] = 0x03BB; + t['lambdastroke'] = 0x019B; + t['lamed'] = 0x05DC; + t['lameddagesh'] = 0xFB3C; + t['lameddageshhebrew'] = 0xFB3C; + t['lamedhebrew'] = 0x05DC; + t['lamfinalarabic'] = 0xFEDE; + t['lamhahinitialarabic'] = 0xFCCA; + t['laminitialarabic'] = 0xFEDF; + t['lamjeeminitialarabic'] = 0xFCC9; + t['lamkhahinitialarabic'] = 0xFCCB; + t['lamlamhehisolatedarabic'] = 0xFDF2; + t['lammedialarabic'] = 0xFEE0; + t['lammeemhahinitialarabic'] = 0xFD88; + t['lammeeminitialarabic'] = 0xFCCC; + t['largecircle'] = 0x25EF; + t['lbar'] = 0x019A; + t['lbelt'] = 0x026C; + t['lbopomofo'] = 0x310C; + t['lcaron'] = 0x013E; + t['lcedilla'] = 0x013C; + t['lcircle'] = 0x24DB; + t['lcircumflexbelow'] = 0x1E3D; + t['lcommaaccent'] = 0x013C; + t['ldot'] = 0x0140; + t['ldotaccent'] = 0x0140; + t['ldotbelow'] = 0x1E37; + t['ldotbelowmacron'] = 0x1E39; + t['leftangleabovecmb'] = 0x031A; + t['lefttackbelowcmb'] = 0x0318; + t['less'] = 0x003C; + t['lessequal'] = 0x2264; + t['lessequalorgreater'] = 0x22DA; + t['lessmonospace'] = 0xFF1C; + t['lessorequivalent'] = 0x2272; + t['lessorgreater'] = 0x2276; + t['lessoverequal'] = 0x2266; + t['lesssmall'] = 0xFE64; + t['lezh'] = 0x026E; + t['lfblock'] = 0x258C; + t['lhookretroflex'] = 0x026D; + t['lira'] = 0x20A4; + t['liwnarmenian'] = 0x056C; + t['lj'] = 0x01C9; + t['ljecyrillic'] = 0x0459; + t['ll'] = 0xF6C0; + t['lladeva'] = 0x0933; + t['llagujarati'] = 0x0AB3; + t['llinebelow'] = 0x1E3B; + t['llladeva'] = 0x0934; + t['llvocalicbengali'] = 0x09E1; + t['llvocalicdeva'] = 0x0961; + t['llvocalicvowelsignbengali'] = 0x09E3; + t['llvocalicvowelsigndeva'] = 0x0963; + t['lmiddletilde'] = 0x026B; + t['lmonospace'] = 0xFF4C; + t['lmsquare'] = 0x33D0; + t['lochulathai'] = 0x0E2C; + t['logicaland'] = 0x2227; + t['logicalnot'] = 0x00AC; + t['logicalnotreversed'] = 0x2310; + t['logicalor'] = 0x2228; + t['lolingthai'] = 0x0E25; + t['longs'] = 0x017F; + t['lowlinecenterline'] = 0xFE4E; + t['lowlinecmb'] = 0x0332; + t['lowlinedashed'] = 0xFE4D; + t['lozenge'] = 0x25CA; + t['lparen'] = 0x24A7; + t['lslash'] = 0x0142; + t['lsquare'] = 0x2113; + t['lsuperior'] = 0xF6EE; + t['ltshade'] = 0x2591; + t['luthai'] = 0x0E26; + t['lvocalicbengali'] = 0x098C; + t['lvocalicdeva'] = 0x090C; + t['lvocalicvowelsignbengali'] = 0x09E2; + t['lvocalicvowelsigndeva'] = 0x0962; + t['lxsquare'] = 0x33D3; + t['m'] = 0x006D; + t['mabengali'] = 0x09AE; + t['macron'] = 0x00AF; + t['macronbelowcmb'] = 0x0331; + t['macroncmb'] = 0x0304; + t['macronlowmod'] = 0x02CD; + t['macronmonospace'] = 0xFFE3; + t['macute'] = 0x1E3F; + t['madeva'] = 0x092E; + t['magujarati'] = 0x0AAE; + t['magurmukhi'] = 0x0A2E; + t['mahapakhhebrew'] = 0x05A4; + t['mahapakhlefthebrew'] = 0x05A4; + t['mahiragana'] = 0x307E; + t['maichattawalowleftthai'] = 0xF895; + t['maichattawalowrightthai'] = 0xF894; + t['maichattawathai'] = 0x0E4B; + t['maichattawaupperleftthai'] = 0xF893; + t['maieklowleftthai'] = 0xF88C; + t['maieklowrightthai'] = 0xF88B; + t['maiekthai'] = 0x0E48; + t['maiekupperleftthai'] = 0xF88A; + t['maihanakatleftthai'] = 0xF884; + t['maihanakatthai'] = 0x0E31; + t['maitaikhuleftthai'] = 0xF889; + t['maitaikhuthai'] = 0x0E47; + t['maitholowleftthai'] = 0xF88F; + t['maitholowrightthai'] = 0xF88E; + t['maithothai'] = 0x0E49; + t['maithoupperleftthai'] = 0xF88D; + t['maitrilowleftthai'] = 0xF892; + t['maitrilowrightthai'] = 0xF891; + t['maitrithai'] = 0x0E4A; + t['maitriupperleftthai'] = 0xF890; + t['maiyamokthai'] = 0x0E46; + t['makatakana'] = 0x30DE; + t['makatakanahalfwidth'] = 0xFF8F; + t['male'] = 0x2642; + t['mansyonsquare'] = 0x3347; + t['maqafhebrew'] = 0x05BE; + t['mars'] = 0x2642; + t['masoracirclehebrew'] = 0x05AF; + t['masquare'] = 0x3383; + t['mbopomofo'] = 0x3107; + t['mbsquare'] = 0x33D4; + t['mcircle'] = 0x24DC; + t['mcubedsquare'] = 0x33A5; + t['mdotaccent'] = 0x1E41; + t['mdotbelow'] = 0x1E43; + t['meemarabic'] = 0x0645; + t['meemfinalarabic'] = 0xFEE2; + t['meeminitialarabic'] = 0xFEE3; + t['meemmedialarabic'] = 0xFEE4; + t['meemmeeminitialarabic'] = 0xFCD1; + t['meemmeemisolatedarabic'] = 0xFC48; + t['meetorusquare'] = 0x334D; + t['mehiragana'] = 0x3081; + t['meizierasquare'] = 0x337E; + t['mekatakana'] = 0x30E1; + t['mekatakanahalfwidth'] = 0xFF92; + t['mem'] = 0x05DE; + t['memdagesh'] = 0xFB3E; + t['memdageshhebrew'] = 0xFB3E; + t['memhebrew'] = 0x05DE; + t['menarmenian'] = 0x0574; + t['merkhahebrew'] = 0x05A5; + t['merkhakefulahebrew'] = 0x05A6; + t['merkhakefulalefthebrew'] = 0x05A6; + t['merkhalefthebrew'] = 0x05A5; + t['mhook'] = 0x0271; + t['mhzsquare'] = 0x3392; + t['middledotkatakanahalfwidth'] = 0xFF65; + t['middot'] = 0x00B7; + t['mieumacirclekorean'] = 0x3272; + t['mieumaparenkorean'] = 0x3212; + t['mieumcirclekorean'] = 0x3264; + t['mieumkorean'] = 0x3141; + t['mieumpansioskorean'] = 0x3170; + t['mieumparenkorean'] = 0x3204; + t['mieumpieupkorean'] = 0x316E; + t['mieumsioskorean'] = 0x316F; + t['mihiragana'] = 0x307F; + t['mikatakana'] = 0x30DF; + t['mikatakanahalfwidth'] = 0xFF90; + t['minus'] = 0x2212; + t['minusbelowcmb'] = 0x0320; + t['minuscircle'] = 0x2296; + t['minusmod'] = 0x02D7; + t['minusplus'] = 0x2213; + t['minute'] = 0x2032; + t['miribaarusquare'] = 0x334A; + t['mirisquare'] = 0x3349; + t['mlonglegturned'] = 0x0270; + t['mlsquare'] = 0x3396; + t['mmcubedsquare'] = 0x33A3; + t['mmonospace'] = 0xFF4D; + t['mmsquaredsquare'] = 0x339F; + t['mohiragana'] = 0x3082; + t['mohmsquare'] = 0x33C1; + t['mokatakana'] = 0x30E2; + t['mokatakanahalfwidth'] = 0xFF93; + t['molsquare'] = 0x33D6; + t['momathai'] = 0x0E21; + t['moverssquare'] = 0x33A7; + t['moverssquaredsquare'] = 0x33A8; + t['mparen'] = 0x24A8; + t['mpasquare'] = 0x33AB; + t['mssquare'] = 0x33B3; + t['msuperior'] = 0xF6EF; + t['mturned'] = 0x026F; + t['mu'] = 0x00B5; + t['mu1'] = 0x00B5; + t['muasquare'] = 0x3382; + t['muchgreater'] = 0x226B; + t['muchless'] = 0x226A; + t['mufsquare'] = 0x338C; + t['mugreek'] = 0x03BC; + t['mugsquare'] = 0x338D; + t['muhiragana'] = 0x3080; + t['mukatakana'] = 0x30E0; + t['mukatakanahalfwidth'] = 0xFF91; + t['mulsquare'] = 0x3395; + t['multiply'] = 0x00D7; + t['mumsquare'] = 0x339B; + t['munahhebrew'] = 0x05A3; + t['munahlefthebrew'] = 0x05A3; + t['musicalnote'] = 0x266A; + t['musicalnotedbl'] = 0x266B; + t['musicflatsign'] = 0x266D; + t['musicsharpsign'] = 0x266F; + t['mussquare'] = 0x33B2; + t['muvsquare'] = 0x33B6; + t['muwsquare'] = 0x33BC; + t['mvmegasquare'] = 0x33B9; + t['mvsquare'] = 0x33B7; + t['mwmegasquare'] = 0x33BF; + t['mwsquare'] = 0x33BD; + t['n'] = 0x006E; + t['nabengali'] = 0x09A8; + t['nabla'] = 0x2207; + t['nacute'] = 0x0144; + t['nadeva'] = 0x0928; + t['nagujarati'] = 0x0AA8; + t['nagurmukhi'] = 0x0A28; + t['nahiragana'] = 0x306A; + t['nakatakana'] = 0x30CA; + t['nakatakanahalfwidth'] = 0xFF85; + t['napostrophe'] = 0x0149; + t['nasquare'] = 0x3381; + t['nbopomofo'] = 0x310B; + t['nbspace'] = 0x00A0; + t['ncaron'] = 0x0148; + t['ncedilla'] = 0x0146; + t['ncircle'] = 0x24DD; + t['ncircumflexbelow'] = 0x1E4B; + t['ncommaaccent'] = 0x0146; + t['ndotaccent'] = 0x1E45; + t['ndotbelow'] = 0x1E47; + t['nehiragana'] = 0x306D; + t['nekatakana'] = 0x30CD; + t['nekatakanahalfwidth'] = 0xFF88; + t['newsheqelsign'] = 0x20AA; + t['nfsquare'] = 0x338B; + t['ngabengali'] = 0x0999; + t['ngadeva'] = 0x0919; + t['ngagujarati'] = 0x0A99; + t['ngagurmukhi'] = 0x0A19; + t['ngonguthai'] = 0x0E07; + t['nhiragana'] = 0x3093; + t['nhookleft'] = 0x0272; + t['nhookretroflex'] = 0x0273; + t['nieunacirclekorean'] = 0x326F; + t['nieunaparenkorean'] = 0x320F; + t['nieuncieuckorean'] = 0x3135; + t['nieuncirclekorean'] = 0x3261; + t['nieunhieuhkorean'] = 0x3136; + t['nieunkorean'] = 0x3134; + t['nieunpansioskorean'] = 0x3168; + t['nieunparenkorean'] = 0x3201; + t['nieunsioskorean'] = 0x3167; + t['nieuntikeutkorean'] = 0x3166; + t['nihiragana'] = 0x306B; + t['nikatakana'] = 0x30CB; + t['nikatakanahalfwidth'] = 0xFF86; + t['nikhahitleftthai'] = 0xF899; + t['nikhahitthai'] = 0x0E4D; + t['nine'] = 0x0039; + t['ninearabic'] = 0x0669; + t['ninebengali'] = 0x09EF; + t['ninecircle'] = 0x2468; + t['ninecircleinversesansserif'] = 0x2792; + t['ninedeva'] = 0x096F; + t['ninegujarati'] = 0x0AEF; + t['ninegurmukhi'] = 0x0A6F; + t['ninehackarabic'] = 0x0669; + t['ninehangzhou'] = 0x3029; + t['nineideographicparen'] = 0x3228; + t['nineinferior'] = 0x2089; + t['ninemonospace'] = 0xFF19; + t['nineoldstyle'] = 0xF739; + t['nineparen'] = 0x247C; + t['nineperiod'] = 0x2490; + t['ninepersian'] = 0x06F9; + t['nineroman'] = 0x2178; + t['ninesuperior'] = 0x2079; + t['nineteencircle'] = 0x2472; + t['nineteenparen'] = 0x2486; + t['nineteenperiod'] = 0x249A; + t['ninethai'] = 0x0E59; + t['nj'] = 0x01CC; + t['njecyrillic'] = 0x045A; + t['nkatakana'] = 0x30F3; + t['nkatakanahalfwidth'] = 0xFF9D; + t['nlegrightlong'] = 0x019E; + t['nlinebelow'] = 0x1E49; + t['nmonospace'] = 0xFF4E; + t['nmsquare'] = 0x339A; + t['nnabengali'] = 0x09A3; + t['nnadeva'] = 0x0923; + t['nnagujarati'] = 0x0AA3; + t['nnagurmukhi'] = 0x0A23; + t['nnnadeva'] = 0x0929; + t['nohiragana'] = 0x306E; + t['nokatakana'] = 0x30CE; + t['nokatakanahalfwidth'] = 0xFF89; + t['nonbreakingspace'] = 0x00A0; + t['nonenthai'] = 0x0E13; + t['nonuthai'] = 0x0E19; + t['noonarabic'] = 0x0646; + t['noonfinalarabic'] = 0xFEE6; + t['noonghunnaarabic'] = 0x06BA; + t['noonghunnafinalarabic'] = 0xFB9F; + t['nooninitialarabic'] = 0xFEE7; + t['noonjeeminitialarabic'] = 0xFCD2; + t['noonjeemisolatedarabic'] = 0xFC4B; + t['noonmedialarabic'] = 0xFEE8; + t['noonmeeminitialarabic'] = 0xFCD5; + t['noonmeemisolatedarabic'] = 0xFC4E; + t['noonnoonfinalarabic'] = 0xFC8D; + t['notcontains'] = 0x220C; + t['notelement'] = 0x2209; + t['notelementof'] = 0x2209; + t['notequal'] = 0x2260; + t['notgreater'] = 0x226F; + t['notgreaternorequal'] = 0x2271; + t['notgreaternorless'] = 0x2279; + t['notidentical'] = 0x2262; + t['notless'] = 0x226E; + t['notlessnorequal'] = 0x2270; + t['notparallel'] = 0x2226; + t['notprecedes'] = 0x2280; + t['notsubset'] = 0x2284; + t['notsucceeds'] = 0x2281; + t['notsuperset'] = 0x2285; + t['nowarmenian'] = 0x0576; + t['nparen'] = 0x24A9; + t['nssquare'] = 0x33B1; + t['nsuperior'] = 0x207F; + t['ntilde'] = 0x00F1; + t['nu'] = 0x03BD; + t['nuhiragana'] = 0x306C; + t['nukatakana'] = 0x30CC; + t['nukatakanahalfwidth'] = 0xFF87; + t['nuktabengali'] = 0x09BC; + t['nuktadeva'] = 0x093C; + t['nuktagujarati'] = 0x0ABC; + t['nuktagurmukhi'] = 0x0A3C; + t['numbersign'] = 0x0023; + t['numbersignmonospace'] = 0xFF03; + t['numbersignsmall'] = 0xFE5F; + t['numeralsigngreek'] = 0x0374; + t['numeralsignlowergreek'] = 0x0375; + t['numero'] = 0x2116; + t['nun'] = 0x05E0; + t['nundagesh'] = 0xFB40; + t['nundageshhebrew'] = 0xFB40; + t['nunhebrew'] = 0x05E0; + t['nvsquare'] = 0x33B5; + t['nwsquare'] = 0x33BB; + t['nyabengali'] = 0x099E; + t['nyadeva'] = 0x091E; + t['nyagujarati'] = 0x0A9E; + t['nyagurmukhi'] = 0x0A1E; + t['o'] = 0x006F; + t['oacute'] = 0x00F3; + t['oangthai'] = 0x0E2D; + t['obarred'] = 0x0275; + t['obarredcyrillic'] = 0x04E9; + t['obarreddieresiscyrillic'] = 0x04EB; + t['obengali'] = 0x0993; + t['obopomofo'] = 0x311B; + t['obreve'] = 0x014F; + t['ocandradeva'] = 0x0911; + t['ocandragujarati'] = 0x0A91; + t['ocandravowelsigndeva'] = 0x0949; + t['ocandravowelsigngujarati'] = 0x0AC9; + t['ocaron'] = 0x01D2; + t['ocircle'] = 0x24DE; + t['ocircumflex'] = 0x00F4; + t['ocircumflexacute'] = 0x1ED1; + t['ocircumflexdotbelow'] = 0x1ED9; + t['ocircumflexgrave'] = 0x1ED3; + t['ocircumflexhookabove'] = 0x1ED5; + t['ocircumflextilde'] = 0x1ED7; + t['ocyrillic'] = 0x043E; + t['odblacute'] = 0x0151; + t['odblgrave'] = 0x020D; + t['odeva'] = 0x0913; + t['odieresis'] = 0x00F6; + t['odieresiscyrillic'] = 0x04E7; + t['odotbelow'] = 0x1ECD; + t['oe'] = 0x0153; + t['oekorean'] = 0x315A; + t['ogonek'] = 0x02DB; + t['ogonekcmb'] = 0x0328; + t['ograve'] = 0x00F2; + t['ogujarati'] = 0x0A93; + t['oharmenian'] = 0x0585; + t['ohiragana'] = 0x304A; + t['ohookabove'] = 0x1ECF; + t['ohorn'] = 0x01A1; + t['ohornacute'] = 0x1EDB; + t['ohorndotbelow'] = 0x1EE3; + t['ohorngrave'] = 0x1EDD; + t['ohornhookabove'] = 0x1EDF; + t['ohorntilde'] = 0x1EE1; + t['ohungarumlaut'] = 0x0151; + t['oi'] = 0x01A3; + t['oinvertedbreve'] = 0x020F; + t['okatakana'] = 0x30AA; + t['okatakanahalfwidth'] = 0xFF75; + t['okorean'] = 0x3157; + t['olehebrew'] = 0x05AB; + t['omacron'] = 0x014D; + t['omacronacute'] = 0x1E53; + t['omacrongrave'] = 0x1E51; + t['omdeva'] = 0x0950; + t['omega'] = 0x03C9; + t['omega1'] = 0x03D6; + t['omegacyrillic'] = 0x0461; + t['omegalatinclosed'] = 0x0277; + t['omegaroundcyrillic'] = 0x047B; + t['omegatitlocyrillic'] = 0x047D; + t['omegatonos'] = 0x03CE; + t['omgujarati'] = 0x0AD0; + t['omicron'] = 0x03BF; + t['omicrontonos'] = 0x03CC; + t['omonospace'] = 0xFF4F; + t['one'] = 0x0031; + t['onearabic'] = 0x0661; + t['onebengali'] = 0x09E7; + t['onecircle'] = 0x2460; + t['onecircleinversesansserif'] = 0x278A; + t['onedeva'] = 0x0967; + t['onedotenleader'] = 0x2024; + t['oneeighth'] = 0x215B; + t['onefitted'] = 0xF6DC; + t['onegujarati'] = 0x0AE7; + t['onegurmukhi'] = 0x0A67; + t['onehackarabic'] = 0x0661; + t['onehalf'] = 0x00BD; + t['onehangzhou'] = 0x3021; + t['oneideographicparen'] = 0x3220; + t['oneinferior'] = 0x2081; + t['onemonospace'] = 0xFF11; + t['onenumeratorbengali'] = 0x09F4; + t['oneoldstyle'] = 0xF731; + t['oneparen'] = 0x2474; + t['oneperiod'] = 0x2488; + t['onepersian'] = 0x06F1; + t['onequarter'] = 0x00BC; + t['oneroman'] = 0x2170; + t['onesuperior'] = 0x00B9; + t['onethai'] = 0x0E51; + t['onethird'] = 0x2153; + t['oogonek'] = 0x01EB; + t['oogonekmacron'] = 0x01ED; + t['oogurmukhi'] = 0x0A13; + t['oomatragurmukhi'] = 0x0A4B; + t['oopen'] = 0x0254; + t['oparen'] = 0x24AA; + t['openbullet'] = 0x25E6; + t['option'] = 0x2325; + t['ordfeminine'] = 0x00AA; + t['ordmasculine'] = 0x00BA; + t['orthogonal'] = 0x221F; + t['oshortdeva'] = 0x0912; + t['oshortvowelsigndeva'] = 0x094A; + t['oslash'] = 0x00F8; + t['oslashacute'] = 0x01FF; + t['osmallhiragana'] = 0x3049; + t['osmallkatakana'] = 0x30A9; + t['osmallkatakanahalfwidth'] = 0xFF6B; + t['ostrokeacute'] = 0x01FF; + t['osuperior'] = 0xF6F0; + t['otcyrillic'] = 0x047F; + t['otilde'] = 0x00F5; + t['otildeacute'] = 0x1E4D; + t['otildedieresis'] = 0x1E4F; + t['oubopomofo'] = 0x3121; + t['overline'] = 0x203E; + t['overlinecenterline'] = 0xFE4A; + t['overlinecmb'] = 0x0305; + t['overlinedashed'] = 0xFE49; + t['overlinedblwavy'] = 0xFE4C; + t['overlinewavy'] = 0xFE4B; + t['overscore'] = 0x00AF; + t['ovowelsignbengali'] = 0x09CB; + t['ovowelsigndeva'] = 0x094B; + t['ovowelsigngujarati'] = 0x0ACB; + t['p'] = 0x0070; + t['paampssquare'] = 0x3380; + t['paasentosquare'] = 0x332B; + t['pabengali'] = 0x09AA; + t['pacute'] = 0x1E55; + t['padeva'] = 0x092A; + t['pagedown'] = 0x21DF; + t['pageup'] = 0x21DE; + t['pagujarati'] = 0x0AAA; + t['pagurmukhi'] = 0x0A2A; + t['pahiragana'] = 0x3071; + t['paiyannoithai'] = 0x0E2F; + t['pakatakana'] = 0x30D1; + t['palatalizationcyrilliccmb'] = 0x0484; + t['palochkacyrillic'] = 0x04C0; + t['pansioskorean'] = 0x317F; + t['paragraph'] = 0x00B6; + t['parallel'] = 0x2225; + t['parenleft'] = 0x0028; + t['parenleftaltonearabic'] = 0xFD3E; + t['parenleftbt'] = 0xF8ED; + t['parenleftex'] = 0xF8EC; + t['parenleftinferior'] = 0x208D; + t['parenleftmonospace'] = 0xFF08; + t['parenleftsmall'] = 0xFE59; + t['parenleftsuperior'] = 0x207D; + t['parenlefttp'] = 0xF8EB; + t['parenleftvertical'] = 0xFE35; + t['parenright'] = 0x0029; + t['parenrightaltonearabic'] = 0xFD3F; + t['parenrightbt'] = 0xF8F8; + t['parenrightex'] = 0xF8F7; + t['parenrightinferior'] = 0x208E; + t['parenrightmonospace'] = 0xFF09; + t['parenrightsmall'] = 0xFE5A; + t['parenrightsuperior'] = 0x207E; + t['parenrighttp'] = 0xF8F6; + t['parenrightvertical'] = 0xFE36; + t['partialdiff'] = 0x2202; + t['paseqhebrew'] = 0x05C0; + t['pashtahebrew'] = 0x0599; + t['pasquare'] = 0x33A9; + t['patah'] = 0x05B7; + t['patah11'] = 0x05B7; + t['patah1d'] = 0x05B7; + t['patah2a'] = 0x05B7; + t['patahhebrew'] = 0x05B7; + t['patahnarrowhebrew'] = 0x05B7; + t['patahquarterhebrew'] = 0x05B7; + t['patahwidehebrew'] = 0x05B7; + t['pazerhebrew'] = 0x05A1; + t['pbopomofo'] = 0x3106; + t['pcircle'] = 0x24DF; + t['pdotaccent'] = 0x1E57; + t['pe'] = 0x05E4; + t['pecyrillic'] = 0x043F; + t['pedagesh'] = 0xFB44; + t['pedageshhebrew'] = 0xFB44; + t['peezisquare'] = 0x333B; + t['pefinaldageshhebrew'] = 0xFB43; + t['peharabic'] = 0x067E; + t['peharmenian'] = 0x057A; + t['pehebrew'] = 0x05E4; + t['pehfinalarabic'] = 0xFB57; + t['pehinitialarabic'] = 0xFB58; + t['pehiragana'] = 0x307A; + t['pehmedialarabic'] = 0xFB59; + t['pekatakana'] = 0x30DA; + t['pemiddlehookcyrillic'] = 0x04A7; + t['perafehebrew'] = 0xFB4E; + t['percent'] = 0x0025; + t['percentarabic'] = 0x066A; + t['percentmonospace'] = 0xFF05; + t['percentsmall'] = 0xFE6A; + t['period'] = 0x002E; + t['periodarmenian'] = 0x0589; + t['periodcentered'] = 0x00B7; + t['periodhalfwidth'] = 0xFF61; + t['periodinferior'] = 0xF6E7; + t['periodmonospace'] = 0xFF0E; + t['periodsmall'] = 0xFE52; + t['periodsuperior'] = 0xF6E8; + t['perispomenigreekcmb'] = 0x0342; + t['perpendicular'] = 0x22A5; + t['perthousand'] = 0x2030; + t['peseta'] = 0x20A7; + t['pfsquare'] = 0x338A; + t['phabengali'] = 0x09AB; + t['phadeva'] = 0x092B; + t['phagujarati'] = 0x0AAB; + t['phagurmukhi'] = 0x0A2B; + t['phi'] = 0x03C6; + t['phi1'] = 0x03D5; + t['phieuphacirclekorean'] = 0x327A; + t['phieuphaparenkorean'] = 0x321A; + t['phieuphcirclekorean'] = 0x326C; + t['phieuphkorean'] = 0x314D; + t['phieuphparenkorean'] = 0x320C; + t['philatin'] = 0x0278; + t['phinthuthai'] = 0x0E3A; + t['phisymbolgreek'] = 0x03D5; + t['phook'] = 0x01A5; + t['phophanthai'] = 0x0E1E; + t['phophungthai'] = 0x0E1C; + t['phosamphaothai'] = 0x0E20; + t['pi'] = 0x03C0; + t['pieupacirclekorean'] = 0x3273; + t['pieupaparenkorean'] = 0x3213; + t['pieupcieuckorean'] = 0x3176; + t['pieupcirclekorean'] = 0x3265; + t['pieupkiyeokkorean'] = 0x3172; + t['pieupkorean'] = 0x3142; + t['pieupparenkorean'] = 0x3205; + t['pieupsioskiyeokkorean'] = 0x3174; + t['pieupsioskorean'] = 0x3144; + t['pieupsiostikeutkorean'] = 0x3175; + t['pieupthieuthkorean'] = 0x3177; + t['pieuptikeutkorean'] = 0x3173; + t['pihiragana'] = 0x3074; + t['pikatakana'] = 0x30D4; + t['pisymbolgreek'] = 0x03D6; + t['piwrarmenian'] = 0x0583; + t['plus'] = 0x002B; + t['plusbelowcmb'] = 0x031F; + t['pluscircle'] = 0x2295; + t['plusminus'] = 0x00B1; + t['plusmod'] = 0x02D6; + t['plusmonospace'] = 0xFF0B; + t['plussmall'] = 0xFE62; + t['plussuperior'] = 0x207A; + t['pmonospace'] = 0xFF50; + t['pmsquare'] = 0x33D8; + t['pohiragana'] = 0x307D; + t['pointingindexdownwhite'] = 0x261F; + t['pointingindexleftwhite'] = 0x261C; + t['pointingindexrightwhite'] = 0x261E; + t['pointingindexupwhite'] = 0x261D; + t['pokatakana'] = 0x30DD; + t['poplathai'] = 0x0E1B; + t['postalmark'] = 0x3012; + t['postalmarkface'] = 0x3020; + t['pparen'] = 0x24AB; + t['precedes'] = 0x227A; + t['prescription'] = 0x211E; + t['primemod'] = 0x02B9; + t['primereversed'] = 0x2035; + t['product'] = 0x220F; + t['projective'] = 0x2305; + t['prolongedkana'] = 0x30FC; + t['propellor'] = 0x2318; + t['propersubset'] = 0x2282; + t['propersuperset'] = 0x2283; + t['proportion'] = 0x2237; + t['proportional'] = 0x221D; + t['psi'] = 0x03C8; + t['psicyrillic'] = 0x0471; + t['psilipneumatacyrilliccmb'] = 0x0486; + t['pssquare'] = 0x33B0; + t['puhiragana'] = 0x3077; + t['pukatakana'] = 0x30D7; + t['pvsquare'] = 0x33B4; + t['pwsquare'] = 0x33BA; + t['q'] = 0x0071; + t['qadeva'] = 0x0958; + t['qadmahebrew'] = 0x05A8; + t['qafarabic'] = 0x0642; + t['qaffinalarabic'] = 0xFED6; + t['qafinitialarabic'] = 0xFED7; + t['qafmedialarabic'] = 0xFED8; + t['qamats'] = 0x05B8; + t['qamats10'] = 0x05B8; + t['qamats1a'] = 0x05B8; + t['qamats1c'] = 0x05B8; + t['qamats27'] = 0x05B8; + t['qamats29'] = 0x05B8; + t['qamats33'] = 0x05B8; + t['qamatsde'] = 0x05B8; + t['qamatshebrew'] = 0x05B8; + t['qamatsnarrowhebrew'] = 0x05B8; + t['qamatsqatanhebrew'] = 0x05B8; + t['qamatsqatannarrowhebrew'] = 0x05B8; + t['qamatsqatanquarterhebrew'] = 0x05B8; + t['qamatsqatanwidehebrew'] = 0x05B8; + t['qamatsquarterhebrew'] = 0x05B8; + t['qamatswidehebrew'] = 0x05B8; + t['qarneyparahebrew'] = 0x059F; + t['qbopomofo'] = 0x3111; + t['qcircle'] = 0x24E0; + t['qhook'] = 0x02A0; + t['qmonospace'] = 0xFF51; + t['qof'] = 0x05E7; + t['qofdagesh'] = 0xFB47; + t['qofdageshhebrew'] = 0xFB47; + t['qofhebrew'] = 0x05E7; + t['qparen'] = 0x24AC; + t['quarternote'] = 0x2669; + t['qubuts'] = 0x05BB; + t['qubuts18'] = 0x05BB; + t['qubuts25'] = 0x05BB; + t['qubuts31'] = 0x05BB; + t['qubutshebrew'] = 0x05BB; + t['qubutsnarrowhebrew'] = 0x05BB; + t['qubutsquarterhebrew'] = 0x05BB; + t['qubutswidehebrew'] = 0x05BB; + t['question'] = 0x003F; + t['questionarabic'] = 0x061F; + t['questionarmenian'] = 0x055E; + t['questiondown'] = 0x00BF; + t['questiondownsmall'] = 0xF7BF; + t['questiongreek'] = 0x037E; + t['questionmonospace'] = 0xFF1F; + t['questionsmall'] = 0xF73F; + t['quotedbl'] = 0x0022; + t['quotedblbase'] = 0x201E; + t['quotedblleft'] = 0x201C; + t['quotedblmonospace'] = 0xFF02; + t['quotedblprime'] = 0x301E; + t['quotedblprimereversed'] = 0x301D; + t['quotedblright'] = 0x201D; + t['quoteleft'] = 0x2018; + t['quoteleftreversed'] = 0x201B; + t['quotereversed'] = 0x201B; + t['quoteright'] = 0x2019; + t['quoterightn'] = 0x0149; + t['quotesinglbase'] = 0x201A; + t['quotesingle'] = 0x0027; + t['quotesinglemonospace'] = 0xFF07; + t['r'] = 0x0072; + t['raarmenian'] = 0x057C; + t['rabengali'] = 0x09B0; + t['racute'] = 0x0155; + t['radeva'] = 0x0930; + t['radical'] = 0x221A; + t['radicalex'] = 0xF8E5; + t['radoverssquare'] = 0x33AE; + t['radoverssquaredsquare'] = 0x33AF; + t['radsquare'] = 0x33AD; + t['rafe'] = 0x05BF; + t['rafehebrew'] = 0x05BF; + t['ragujarati'] = 0x0AB0; + t['ragurmukhi'] = 0x0A30; + t['rahiragana'] = 0x3089; + t['rakatakana'] = 0x30E9; + t['rakatakanahalfwidth'] = 0xFF97; + t['ralowerdiagonalbengali'] = 0x09F1; + t['ramiddlediagonalbengali'] = 0x09F0; + t['ramshorn'] = 0x0264; + t['ratio'] = 0x2236; + t['rbopomofo'] = 0x3116; + t['rcaron'] = 0x0159; + t['rcedilla'] = 0x0157; + t['rcircle'] = 0x24E1; + t['rcommaaccent'] = 0x0157; + t['rdblgrave'] = 0x0211; + t['rdotaccent'] = 0x1E59; + t['rdotbelow'] = 0x1E5B; + t['rdotbelowmacron'] = 0x1E5D; + t['referencemark'] = 0x203B; + t['reflexsubset'] = 0x2286; + t['reflexsuperset'] = 0x2287; + t['registered'] = 0x00AE; + t['registersans'] = 0xF8E8; + t['registerserif'] = 0xF6DA; + t['reharabic'] = 0x0631; + t['reharmenian'] = 0x0580; + t['rehfinalarabic'] = 0xFEAE; + t['rehiragana'] = 0x308C; + t['rekatakana'] = 0x30EC; + t['rekatakanahalfwidth'] = 0xFF9A; + t['resh'] = 0x05E8; + t['reshdageshhebrew'] = 0xFB48; + t['reshhebrew'] = 0x05E8; + t['reversedtilde'] = 0x223D; + t['reviahebrew'] = 0x0597; + t['reviamugrashhebrew'] = 0x0597; + t['revlogicalnot'] = 0x2310; + t['rfishhook'] = 0x027E; + t['rfishhookreversed'] = 0x027F; + t['rhabengali'] = 0x09DD; + t['rhadeva'] = 0x095D; + t['rho'] = 0x03C1; + t['rhook'] = 0x027D; + t['rhookturned'] = 0x027B; + t['rhookturnedsuperior'] = 0x02B5; + t['rhosymbolgreek'] = 0x03F1; + t['rhotichookmod'] = 0x02DE; + t['rieulacirclekorean'] = 0x3271; + t['rieulaparenkorean'] = 0x3211; + t['rieulcirclekorean'] = 0x3263; + t['rieulhieuhkorean'] = 0x3140; + t['rieulkiyeokkorean'] = 0x313A; + t['rieulkiyeoksioskorean'] = 0x3169; + t['rieulkorean'] = 0x3139; + t['rieulmieumkorean'] = 0x313B; + t['rieulpansioskorean'] = 0x316C; + t['rieulparenkorean'] = 0x3203; + t['rieulphieuphkorean'] = 0x313F; + t['rieulpieupkorean'] = 0x313C; + t['rieulpieupsioskorean'] = 0x316B; + t['rieulsioskorean'] = 0x313D; + t['rieulthieuthkorean'] = 0x313E; + t['rieultikeutkorean'] = 0x316A; + t['rieulyeorinhieuhkorean'] = 0x316D; + t['rightangle'] = 0x221F; + t['righttackbelowcmb'] = 0x0319; + t['righttriangle'] = 0x22BF; + t['rihiragana'] = 0x308A; + t['rikatakana'] = 0x30EA; + t['rikatakanahalfwidth'] = 0xFF98; + t['ring'] = 0x02DA; + t['ringbelowcmb'] = 0x0325; + t['ringcmb'] = 0x030A; + t['ringhalfleft'] = 0x02BF; + t['ringhalfleftarmenian'] = 0x0559; + t['ringhalfleftbelowcmb'] = 0x031C; + t['ringhalfleftcentered'] = 0x02D3; + t['ringhalfright'] = 0x02BE; + t['ringhalfrightbelowcmb'] = 0x0339; + t['ringhalfrightcentered'] = 0x02D2; + t['rinvertedbreve'] = 0x0213; + t['rittorusquare'] = 0x3351; + t['rlinebelow'] = 0x1E5F; + t['rlongleg'] = 0x027C; + t['rlonglegturned'] = 0x027A; + t['rmonospace'] = 0xFF52; + t['rohiragana'] = 0x308D; + t['rokatakana'] = 0x30ED; + t['rokatakanahalfwidth'] = 0xFF9B; + t['roruathai'] = 0x0E23; + t['rparen'] = 0x24AD; + t['rrabengali'] = 0x09DC; + t['rradeva'] = 0x0931; + t['rragurmukhi'] = 0x0A5C; + t['rreharabic'] = 0x0691; + t['rrehfinalarabic'] = 0xFB8D; + t['rrvocalicbengali'] = 0x09E0; + t['rrvocalicdeva'] = 0x0960; + t['rrvocalicgujarati'] = 0x0AE0; + t['rrvocalicvowelsignbengali'] = 0x09C4; + t['rrvocalicvowelsigndeva'] = 0x0944; + t['rrvocalicvowelsigngujarati'] = 0x0AC4; + t['rsuperior'] = 0xF6F1; + t['rtblock'] = 0x2590; + t['rturned'] = 0x0279; + t['rturnedsuperior'] = 0x02B4; + t['ruhiragana'] = 0x308B; + t['rukatakana'] = 0x30EB; + t['rukatakanahalfwidth'] = 0xFF99; + t['rupeemarkbengali'] = 0x09F2; + t['rupeesignbengali'] = 0x09F3; + t['rupiah'] = 0xF6DD; + t['ruthai'] = 0x0E24; + t['rvocalicbengali'] = 0x098B; + t['rvocalicdeva'] = 0x090B; + t['rvocalicgujarati'] = 0x0A8B; + t['rvocalicvowelsignbengali'] = 0x09C3; + t['rvocalicvowelsigndeva'] = 0x0943; + t['rvocalicvowelsigngujarati'] = 0x0AC3; + t['s'] = 0x0073; + t['sabengali'] = 0x09B8; + t['sacute'] = 0x015B; + t['sacutedotaccent'] = 0x1E65; + t['sadarabic'] = 0x0635; + t['sadeva'] = 0x0938; + t['sadfinalarabic'] = 0xFEBA; + t['sadinitialarabic'] = 0xFEBB; + t['sadmedialarabic'] = 0xFEBC; + t['sagujarati'] = 0x0AB8; + t['sagurmukhi'] = 0x0A38; + t['sahiragana'] = 0x3055; + t['sakatakana'] = 0x30B5; + t['sakatakanahalfwidth'] = 0xFF7B; + t['sallallahoualayhewasallamarabic'] = 0xFDFA; + t['samekh'] = 0x05E1; + t['samekhdagesh'] = 0xFB41; + t['samekhdageshhebrew'] = 0xFB41; + t['samekhhebrew'] = 0x05E1; + t['saraaathai'] = 0x0E32; + t['saraaethai'] = 0x0E41; + t['saraaimaimalaithai'] = 0x0E44; + t['saraaimaimuanthai'] = 0x0E43; + t['saraamthai'] = 0x0E33; + t['saraathai'] = 0x0E30; + t['saraethai'] = 0x0E40; + t['saraiileftthai'] = 0xF886; + t['saraiithai'] = 0x0E35; + t['saraileftthai'] = 0xF885; + t['saraithai'] = 0x0E34; + t['saraothai'] = 0x0E42; + t['saraueeleftthai'] = 0xF888; + t['saraueethai'] = 0x0E37; + t['saraueleftthai'] = 0xF887; + t['sarauethai'] = 0x0E36; + t['sarauthai'] = 0x0E38; + t['sarauuthai'] = 0x0E39; + t['sbopomofo'] = 0x3119; + t['scaron'] = 0x0161; + t['scarondotaccent'] = 0x1E67; + t['scedilla'] = 0x015F; + t['schwa'] = 0x0259; + t['schwacyrillic'] = 0x04D9; + t['schwadieresiscyrillic'] = 0x04DB; + t['schwahook'] = 0x025A; + t['scircle'] = 0x24E2; + t['scircumflex'] = 0x015D; + t['scommaaccent'] = 0x0219; + t['sdotaccent'] = 0x1E61; + t['sdotbelow'] = 0x1E63; + t['sdotbelowdotaccent'] = 0x1E69; + t['seagullbelowcmb'] = 0x033C; + t['second'] = 0x2033; + t['secondtonechinese'] = 0x02CA; + t['section'] = 0x00A7; + t['seenarabic'] = 0x0633; + t['seenfinalarabic'] = 0xFEB2; + t['seeninitialarabic'] = 0xFEB3; + t['seenmedialarabic'] = 0xFEB4; + t['segol'] = 0x05B6; + t['segol13'] = 0x05B6; + t['segol1f'] = 0x05B6; + t['segol2c'] = 0x05B6; + t['segolhebrew'] = 0x05B6; + t['segolnarrowhebrew'] = 0x05B6; + t['segolquarterhebrew'] = 0x05B6; + t['segoltahebrew'] = 0x0592; + t['segolwidehebrew'] = 0x05B6; + t['seharmenian'] = 0x057D; + t['sehiragana'] = 0x305B; + t['sekatakana'] = 0x30BB; + t['sekatakanahalfwidth'] = 0xFF7E; + t['semicolon'] = 0x003B; + t['semicolonarabic'] = 0x061B; + t['semicolonmonospace'] = 0xFF1B; + t['semicolonsmall'] = 0xFE54; + t['semivoicedmarkkana'] = 0x309C; + t['semivoicedmarkkanahalfwidth'] = 0xFF9F; + t['sentisquare'] = 0x3322; + t['sentosquare'] = 0x3323; + t['seven'] = 0x0037; + t['sevenarabic'] = 0x0667; + t['sevenbengali'] = 0x09ED; + t['sevencircle'] = 0x2466; + t['sevencircleinversesansserif'] = 0x2790; + t['sevendeva'] = 0x096D; + t['seveneighths'] = 0x215E; + t['sevengujarati'] = 0x0AED; + t['sevengurmukhi'] = 0x0A6D; + t['sevenhackarabic'] = 0x0667; + t['sevenhangzhou'] = 0x3027; + t['sevenideographicparen'] = 0x3226; + t['seveninferior'] = 0x2087; + t['sevenmonospace'] = 0xFF17; + t['sevenoldstyle'] = 0xF737; + t['sevenparen'] = 0x247A; + t['sevenperiod'] = 0x248E; + t['sevenpersian'] = 0x06F7; + t['sevenroman'] = 0x2176; + t['sevensuperior'] = 0x2077; + t['seventeencircle'] = 0x2470; + t['seventeenparen'] = 0x2484; + t['seventeenperiod'] = 0x2498; + t['seventhai'] = 0x0E57; + t['sfthyphen'] = 0x00AD; + t['shaarmenian'] = 0x0577; + t['shabengali'] = 0x09B6; + t['shacyrillic'] = 0x0448; + t['shaddaarabic'] = 0x0651; + t['shaddadammaarabic'] = 0xFC61; + t['shaddadammatanarabic'] = 0xFC5E; + t['shaddafathaarabic'] = 0xFC60; + t['shaddakasraarabic'] = 0xFC62; + t['shaddakasratanarabic'] = 0xFC5F; + t['shade'] = 0x2592; + t['shadedark'] = 0x2593; + t['shadelight'] = 0x2591; + t['shademedium'] = 0x2592; + t['shadeva'] = 0x0936; + t['shagujarati'] = 0x0AB6; + t['shagurmukhi'] = 0x0A36; + t['shalshelethebrew'] = 0x0593; + t['shbopomofo'] = 0x3115; + t['shchacyrillic'] = 0x0449; + t['sheenarabic'] = 0x0634; + t['sheenfinalarabic'] = 0xFEB6; + t['sheeninitialarabic'] = 0xFEB7; + t['sheenmedialarabic'] = 0xFEB8; + t['sheicoptic'] = 0x03E3; + t['sheqel'] = 0x20AA; + t['sheqelhebrew'] = 0x20AA; + t['sheva'] = 0x05B0; + t['sheva115'] = 0x05B0; + t['sheva15'] = 0x05B0; + t['sheva22'] = 0x05B0; + t['sheva2e'] = 0x05B0; + t['shevahebrew'] = 0x05B0; + t['shevanarrowhebrew'] = 0x05B0; + t['shevaquarterhebrew'] = 0x05B0; + t['shevawidehebrew'] = 0x05B0; + t['shhacyrillic'] = 0x04BB; + t['shimacoptic'] = 0x03ED; + t['shin'] = 0x05E9; + t['shindagesh'] = 0xFB49; + t['shindageshhebrew'] = 0xFB49; + t['shindageshshindot'] = 0xFB2C; + t['shindageshshindothebrew'] = 0xFB2C; + t['shindageshsindot'] = 0xFB2D; + t['shindageshsindothebrew'] = 0xFB2D; + t['shindothebrew'] = 0x05C1; + t['shinhebrew'] = 0x05E9; + t['shinshindot'] = 0xFB2A; + t['shinshindothebrew'] = 0xFB2A; + t['shinsindot'] = 0xFB2B; + t['shinsindothebrew'] = 0xFB2B; + t['shook'] = 0x0282; + t['sigma'] = 0x03C3; + t['sigma1'] = 0x03C2; + t['sigmafinal'] = 0x03C2; + t['sigmalunatesymbolgreek'] = 0x03F2; + t['sihiragana'] = 0x3057; + t['sikatakana'] = 0x30B7; + t['sikatakanahalfwidth'] = 0xFF7C; + t['siluqhebrew'] = 0x05BD; + t['siluqlefthebrew'] = 0x05BD; + t['similar'] = 0x223C; + t['sindothebrew'] = 0x05C2; + t['siosacirclekorean'] = 0x3274; + t['siosaparenkorean'] = 0x3214; + t['sioscieuckorean'] = 0x317E; + t['sioscirclekorean'] = 0x3266; + t['sioskiyeokkorean'] = 0x317A; + t['sioskorean'] = 0x3145; + t['siosnieunkorean'] = 0x317B; + t['siosparenkorean'] = 0x3206; + t['siospieupkorean'] = 0x317D; + t['siostikeutkorean'] = 0x317C; + t['six'] = 0x0036; + t['sixarabic'] = 0x0666; + t['sixbengali'] = 0x09EC; + t['sixcircle'] = 0x2465; + t['sixcircleinversesansserif'] = 0x278F; + t['sixdeva'] = 0x096C; + t['sixgujarati'] = 0x0AEC; + t['sixgurmukhi'] = 0x0A6C; + t['sixhackarabic'] = 0x0666; + t['sixhangzhou'] = 0x3026; + t['sixideographicparen'] = 0x3225; + t['sixinferior'] = 0x2086; + t['sixmonospace'] = 0xFF16; + t['sixoldstyle'] = 0xF736; + t['sixparen'] = 0x2479; + t['sixperiod'] = 0x248D; + t['sixpersian'] = 0x06F6; + t['sixroman'] = 0x2175; + t['sixsuperior'] = 0x2076; + t['sixteencircle'] = 0x246F; + t['sixteencurrencydenominatorbengali'] = 0x09F9; + t['sixteenparen'] = 0x2483; + t['sixteenperiod'] = 0x2497; + t['sixthai'] = 0x0E56; + t['slash'] = 0x002F; + t['slashmonospace'] = 0xFF0F; + t['slong'] = 0x017F; + t['slongdotaccent'] = 0x1E9B; + t['smileface'] = 0x263A; + t['smonospace'] = 0xFF53; + t['sofpasuqhebrew'] = 0x05C3; + t['softhyphen'] = 0x00AD; + t['softsigncyrillic'] = 0x044C; + t['sohiragana'] = 0x305D; + t['sokatakana'] = 0x30BD; + t['sokatakanahalfwidth'] = 0xFF7F; + t['soliduslongoverlaycmb'] = 0x0338; + t['solidusshortoverlaycmb'] = 0x0337; + t['sorusithai'] = 0x0E29; + t['sosalathai'] = 0x0E28; + t['sosothai'] = 0x0E0B; + t['sosuathai'] = 0x0E2A; + t['space'] = 0x0020; + t['spacehackarabic'] = 0x0020; + t['spade'] = 0x2660; + t['spadesuitblack'] = 0x2660; + t['spadesuitwhite'] = 0x2664; + t['sparen'] = 0x24AE; + t['squarebelowcmb'] = 0x033B; + t['squarecc'] = 0x33C4; + t['squarecm'] = 0x339D; + t['squarediagonalcrosshatchfill'] = 0x25A9; + t['squarehorizontalfill'] = 0x25A4; + t['squarekg'] = 0x338F; + t['squarekm'] = 0x339E; + t['squarekmcapital'] = 0x33CE; + t['squareln'] = 0x33D1; + t['squarelog'] = 0x33D2; + t['squaremg'] = 0x338E; + t['squaremil'] = 0x33D5; + t['squaremm'] = 0x339C; + t['squaremsquared'] = 0x33A1; + t['squareorthogonalcrosshatchfill'] = 0x25A6; + t['squareupperlefttolowerrightfill'] = 0x25A7; + t['squareupperrighttolowerleftfill'] = 0x25A8; + t['squareverticalfill'] = 0x25A5; + t['squarewhitewithsmallblack'] = 0x25A3; + t['srsquare'] = 0x33DB; + t['ssabengali'] = 0x09B7; + t['ssadeva'] = 0x0937; + t['ssagujarati'] = 0x0AB7; + t['ssangcieuckorean'] = 0x3149; + t['ssanghieuhkorean'] = 0x3185; + t['ssangieungkorean'] = 0x3180; + t['ssangkiyeokkorean'] = 0x3132; + t['ssangnieunkorean'] = 0x3165; + t['ssangpieupkorean'] = 0x3143; + t['ssangsioskorean'] = 0x3146; + t['ssangtikeutkorean'] = 0x3138; + t['ssuperior'] = 0xF6F2; + t['sterling'] = 0x00A3; + t['sterlingmonospace'] = 0xFFE1; + t['strokelongoverlaycmb'] = 0x0336; + t['strokeshortoverlaycmb'] = 0x0335; + t['subset'] = 0x2282; + t['subsetnotequal'] = 0x228A; + t['subsetorequal'] = 0x2286; + t['succeeds'] = 0x227B; + t['suchthat'] = 0x220B; + t['suhiragana'] = 0x3059; + t['sukatakana'] = 0x30B9; + t['sukatakanahalfwidth'] = 0xFF7D; + t['sukunarabic'] = 0x0652; + t['summation'] = 0x2211; + t['sun'] = 0x263C; + t['superset'] = 0x2283; + t['supersetnotequal'] = 0x228B; + t['supersetorequal'] = 0x2287; + t['svsquare'] = 0x33DC; + t['syouwaerasquare'] = 0x337C; + t['t'] = 0x0074; + t['tabengali'] = 0x09A4; + t['tackdown'] = 0x22A4; + t['tackleft'] = 0x22A3; + t['tadeva'] = 0x0924; + t['tagujarati'] = 0x0AA4; + t['tagurmukhi'] = 0x0A24; + t['taharabic'] = 0x0637; + t['tahfinalarabic'] = 0xFEC2; + t['tahinitialarabic'] = 0xFEC3; + t['tahiragana'] = 0x305F; + t['tahmedialarabic'] = 0xFEC4; + t['taisyouerasquare'] = 0x337D; + t['takatakana'] = 0x30BF; + t['takatakanahalfwidth'] = 0xFF80; + t['tatweelarabic'] = 0x0640; + t['tau'] = 0x03C4; + t['tav'] = 0x05EA; + t['tavdages'] = 0xFB4A; + t['tavdagesh'] = 0xFB4A; + t['tavdageshhebrew'] = 0xFB4A; + t['tavhebrew'] = 0x05EA; + t['tbar'] = 0x0167; + t['tbopomofo'] = 0x310A; + t['tcaron'] = 0x0165; + t['tccurl'] = 0x02A8; + t['tcedilla'] = 0x0163; + t['tcheharabic'] = 0x0686; + t['tchehfinalarabic'] = 0xFB7B; + t['tchehinitialarabic'] = 0xFB7C; + t['tchehmedialarabic'] = 0xFB7D; + t['tcircle'] = 0x24E3; + t['tcircumflexbelow'] = 0x1E71; + t['tcommaaccent'] = 0x0163; + t['tdieresis'] = 0x1E97; + t['tdotaccent'] = 0x1E6B; + t['tdotbelow'] = 0x1E6D; + t['tecyrillic'] = 0x0442; + t['tedescendercyrillic'] = 0x04AD; + t['teharabic'] = 0x062A; + t['tehfinalarabic'] = 0xFE96; + t['tehhahinitialarabic'] = 0xFCA2; + t['tehhahisolatedarabic'] = 0xFC0C; + t['tehinitialarabic'] = 0xFE97; + t['tehiragana'] = 0x3066; + t['tehjeeminitialarabic'] = 0xFCA1; + t['tehjeemisolatedarabic'] = 0xFC0B; + t['tehmarbutaarabic'] = 0x0629; + t['tehmarbutafinalarabic'] = 0xFE94; + t['tehmedialarabic'] = 0xFE98; + t['tehmeeminitialarabic'] = 0xFCA4; + t['tehmeemisolatedarabic'] = 0xFC0E; + t['tehnoonfinalarabic'] = 0xFC73; + t['tekatakana'] = 0x30C6; + t['tekatakanahalfwidth'] = 0xFF83; + t['telephone'] = 0x2121; + t['telephoneblack'] = 0x260E; + t['telishagedolahebrew'] = 0x05A0; + t['telishaqetanahebrew'] = 0x05A9; + t['tencircle'] = 0x2469; + t['tenideographicparen'] = 0x3229; + t['tenparen'] = 0x247D; + t['tenperiod'] = 0x2491; + t['tenroman'] = 0x2179; + t['tesh'] = 0x02A7; + t['tet'] = 0x05D8; + t['tetdagesh'] = 0xFB38; + t['tetdageshhebrew'] = 0xFB38; + t['tethebrew'] = 0x05D8; + t['tetsecyrillic'] = 0x04B5; + t['tevirhebrew'] = 0x059B; + t['tevirlefthebrew'] = 0x059B; + t['thabengali'] = 0x09A5; + t['thadeva'] = 0x0925; + t['thagujarati'] = 0x0AA5; + t['thagurmukhi'] = 0x0A25; + t['thalarabic'] = 0x0630; + t['thalfinalarabic'] = 0xFEAC; + t['thanthakhatlowleftthai'] = 0xF898; + t['thanthakhatlowrightthai'] = 0xF897; + t['thanthakhatthai'] = 0x0E4C; + t['thanthakhatupperleftthai'] = 0xF896; + t['theharabic'] = 0x062B; + t['thehfinalarabic'] = 0xFE9A; + t['thehinitialarabic'] = 0xFE9B; + t['thehmedialarabic'] = 0xFE9C; + t['thereexists'] = 0x2203; + t['therefore'] = 0x2234; + t['theta'] = 0x03B8; + t['theta1'] = 0x03D1; + t['thetasymbolgreek'] = 0x03D1; + t['thieuthacirclekorean'] = 0x3279; + t['thieuthaparenkorean'] = 0x3219; + t['thieuthcirclekorean'] = 0x326B; + t['thieuthkorean'] = 0x314C; + t['thieuthparenkorean'] = 0x320B; + t['thirteencircle'] = 0x246C; + t['thirteenparen'] = 0x2480; + t['thirteenperiod'] = 0x2494; + t['thonangmonthothai'] = 0x0E11; + t['thook'] = 0x01AD; + t['thophuthaothai'] = 0x0E12; + t['thorn'] = 0x00FE; + t['thothahanthai'] = 0x0E17; + t['thothanthai'] = 0x0E10; + t['thothongthai'] = 0x0E18; + t['thothungthai'] = 0x0E16; + t['thousandcyrillic'] = 0x0482; + t['thousandsseparatorarabic'] = 0x066C; + t['thousandsseparatorpersian'] = 0x066C; + t['three'] = 0x0033; + t['threearabic'] = 0x0663; + t['threebengali'] = 0x09E9; + t['threecircle'] = 0x2462; + t['threecircleinversesansserif'] = 0x278C; + t['threedeva'] = 0x0969; + t['threeeighths'] = 0x215C; + t['threegujarati'] = 0x0AE9; + t['threegurmukhi'] = 0x0A69; + t['threehackarabic'] = 0x0663; + t['threehangzhou'] = 0x3023; + t['threeideographicparen'] = 0x3222; + t['threeinferior'] = 0x2083; + t['threemonospace'] = 0xFF13; + t['threenumeratorbengali'] = 0x09F6; + t['threeoldstyle'] = 0xF733; + t['threeparen'] = 0x2476; + t['threeperiod'] = 0x248A; + t['threepersian'] = 0x06F3; + t['threequarters'] = 0x00BE; + t['threequartersemdash'] = 0xF6DE; + t['threeroman'] = 0x2172; + t['threesuperior'] = 0x00B3; + t['threethai'] = 0x0E53; + t['thzsquare'] = 0x3394; + t['tihiragana'] = 0x3061; + t['tikatakana'] = 0x30C1; + t['tikatakanahalfwidth'] = 0xFF81; + t['tikeutacirclekorean'] = 0x3270; + t['tikeutaparenkorean'] = 0x3210; + t['tikeutcirclekorean'] = 0x3262; + t['tikeutkorean'] = 0x3137; + t['tikeutparenkorean'] = 0x3202; + t['tilde'] = 0x02DC; + t['tildebelowcmb'] = 0x0330; + t['tildecmb'] = 0x0303; + t['tildecomb'] = 0x0303; + t['tildedoublecmb'] = 0x0360; + t['tildeoperator'] = 0x223C; + t['tildeoverlaycmb'] = 0x0334; + t['tildeverticalcmb'] = 0x033E; + t['timescircle'] = 0x2297; + t['tipehahebrew'] = 0x0596; + t['tipehalefthebrew'] = 0x0596; + t['tippigurmukhi'] = 0x0A70; + t['titlocyrilliccmb'] = 0x0483; + t['tiwnarmenian'] = 0x057F; + t['tlinebelow'] = 0x1E6F; + t['tmonospace'] = 0xFF54; + t['toarmenian'] = 0x0569; + t['tohiragana'] = 0x3068; + t['tokatakana'] = 0x30C8; + t['tokatakanahalfwidth'] = 0xFF84; + t['tonebarextrahighmod'] = 0x02E5; + t['tonebarextralowmod'] = 0x02E9; + t['tonebarhighmod'] = 0x02E6; + t['tonebarlowmod'] = 0x02E8; + t['tonebarmidmod'] = 0x02E7; + t['tonefive'] = 0x01BD; + t['tonesix'] = 0x0185; + t['tonetwo'] = 0x01A8; + t['tonos'] = 0x0384; + t['tonsquare'] = 0x3327; + t['topatakthai'] = 0x0E0F; + t['tortoiseshellbracketleft'] = 0x3014; + t['tortoiseshellbracketleftsmall'] = 0xFE5D; + t['tortoiseshellbracketleftvertical'] = 0xFE39; + t['tortoiseshellbracketright'] = 0x3015; + t['tortoiseshellbracketrightsmall'] = 0xFE5E; + t['tortoiseshellbracketrightvertical'] = 0xFE3A; + t['totaothai'] = 0x0E15; + t['tpalatalhook'] = 0x01AB; + t['tparen'] = 0x24AF; + t['trademark'] = 0x2122; + t['trademarksans'] = 0xF8EA; + t['trademarkserif'] = 0xF6DB; + t['tretroflexhook'] = 0x0288; + t['triagdn'] = 0x25BC; + t['triaglf'] = 0x25C4; + t['triagrt'] = 0x25BA; + t['triagup'] = 0x25B2; + t['ts'] = 0x02A6; + t['tsadi'] = 0x05E6; + t['tsadidagesh'] = 0xFB46; + t['tsadidageshhebrew'] = 0xFB46; + t['tsadihebrew'] = 0x05E6; + t['tsecyrillic'] = 0x0446; + t['tsere'] = 0x05B5; + t['tsere12'] = 0x05B5; + t['tsere1e'] = 0x05B5; + t['tsere2b'] = 0x05B5; + t['tserehebrew'] = 0x05B5; + t['tserenarrowhebrew'] = 0x05B5; + t['tserequarterhebrew'] = 0x05B5; + t['tserewidehebrew'] = 0x05B5; + t['tshecyrillic'] = 0x045B; + t['tsuperior'] = 0xF6F3; + t['ttabengali'] = 0x099F; + t['ttadeva'] = 0x091F; + t['ttagujarati'] = 0x0A9F; + t['ttagurmukhi'] = 0x0A1F; + t['tteharabic'] = 0x0679; + t['ttehfinalarabic'] = 0xFB67; + t['ttehinitialarabic'] = 0xFB68; + t['ttehmedialarabic'] = 0xFB69; + t['tthabengali'] = 0x09A0; + t['tthadeva'] = 0x0920; + t['tthagujarati'] = 0x0AA0; + t['tthagurmukhi'] = 0x0A20; + t['tturned'] = 0x0287; + t['tuhiragana'] = 0x3064; + t['tukatakana'] = 0x30C4; + t['tukatakanahalfwidth'] = 0xFF82; + t['tusmallhiragana'] = 0x3063; + t['tusmallkatakana'] = 0x30C3; + t['tusmallkatakanahalfwidth'] = 0xFF6F; + t['twelvecircle'] = 0x246B; + t['twelveparen'] = 0x247F; + t['twelveperiod'] = 0x2493; + t['twelveroman'] = 0x217B; + t['twentycircle'] = 0x2473; + t['twentyhangzhou'] = 0x5344; + t['twentyparen'] = 0x2487; + t['twentyperiod'] = 0x249B; + t['two'] = 0x0032; + t['twoarabic'] = 0x0662; + t['twobengali'] = 0x09E8; + t['twocircle'] = 0x2461; + t['twocircleinversesansserif'] = 0x278B; + t['twodeva'] = 0x0968; + t['twodotenleader'] = 0x2025; + t['twodotleader'] = 0x2025; + t['twodotleadervertical'] = 0xFE30; + t['twogujarati'] = 0x0AE8; + t['twogurmukhi'] = 0x0A68; + t['twohackarabic'] = 0x0662; + t['twohangzhou'] = 0x3022; + t['twoideographicparen'] = 0x3221; + t['twoinferior'] = 0x2082; + t['twomonospace'] = 0xFF12; + t['twonumeratorbengali'] = 0x09F5; + t['twooldstyle'] = 0xF732; + t['twoparen'] = 0x2475; + t['twoperiod'] = 0x2489; + t['twopersian'] = 0x06F2; + t['tworoman'] = 0x2171; + t['twostroke'] = 0x01BB; + t['twosuperior'] = 0x00B2; + t['twothai'] = 0x0E52; + t['twothirds'] = 0x2154; + t['u'] = 0x0075; + t['uacute'] = 0x00FA; + t['ubar'] = 0x0289; + t['ubengali'] = 0x0989; + t['ubopomofo'] = 0x3128; + t['ubreve'] = 0x016D; + t['ucaron'] = 0x01D4; + t['ucircle'] = 0x24E4; + t['ucircumflex'] = 0x00FB; + t['ucircumflexbelow'] = 0x1E77; + t['ucyrillic'] = 0x0443; + t['udattadeva'] = 0x0951; + t['udblacute'] = 0x0171; + t['udblgrave'] = 0x0215; + t['udeva'] = 0x0909; + t['udieresis'] = 0x00FC; + t['udieresisacute'] = 0x01D8; + t['udieresisbelow'] = 0x1E73; + t['udieresiscaron'] = 0x01DA; + t['udieresiscyrillic'] = 0x04F1; + t['udieresisgrave'] = 0x01DC; + t['udieresismacron'] = 0x01D6; + t['udotbelow'] = 0x1EE5; + t['ugrave'] = 0x00F9; + t['ugujarati'] = 0x0A89; + t['ugurmukhi'] = 0x0A09; + t['uhiragana'] = 0x3046; + t['uhookabove'] = 0x1EE7; + t['uhorn'] = 0x01B0; + t['uhornacute'] = 0x1EE9; + t['uhorndotbelow'] = 0x1EF1; + t['uhorngrave'] = 0x1EEB; + t['uhornhookabove'] = 0x1EED; + t['uhorntilde'] = 0x1EEF; + t['uhungarumlaut'] = 0x0171; + t['uhungarumlautcyrillic'] = 0x04F3; + t['uinvertedbreve'] = 0x0217; + t['ukatakana'] = 0x30A6; + t['ukatakanahalfwidth'] = 0xFF73; + t['ukcyrillic'] = 0x0479; + t['ukorean'] = 0x315C; + t['umacron'] = 0x016B; + t['umacroncyrillic'] = 0x04EF; + t['umacrondieresis'] = 0x1E7B; + t['umatragurmukhi'] = 0x0A41; + t['umonospace'] = 0xFF55; + t['underscore'] = 0x005F; + t['underscoredbl'] = 0x2017; + t['underscoremonospace'] = 0xFF3F; + t['underscorevertical'] = 0xFE33; + t['underscorewavy'] = 0xFE4F; + t['union'] = 0x222A; + t['universal'] = 0x2200; + t['uogonek'] = 0x0173; + t['uparen'] = 0x24B0; + t['upblock'] = 0x2580; + t['upperdothebrew'] = 0x05C4; + t['upsilon'] = 0x03C5; + t['upsilondieresis'] = 0x03CB; + t['upsilondieresistonos'] = 0x03B0; + t['upsilonlatin'] = 0x028A; + t['upsilontonos'] = 0x03CD; + t['uptackbelowcmb'] = 0x031D; + t['uptackmod'] = 0x02D4; + t['uragurmukhi'] = 0x0A73; + t['uring'] = 0x016F; + t['ushortcyrillic'] = 0x045E; + t['usmallhiragana'] = 0x3045; + t['usmallkatakana'] = 0x30A5; + t['usmallkatakanahalfwidth'] = 0xFF69; + t['ustraightcyrillic'] = 0x04AF; + t['ustraightstrokecyrillic'] = 0x04B1; + t['utilde'] = 0x0169; + t['utildeacute'] = 0x1E79; + t['utildebelow'] = 0x1E75; + t['uubengali'] = 0x098A; + t['uudeva'] = 0x090A; + t['uugujarati'] = 0x0A8A; + t['uugurmukhi'] = 0x0A0A; + t['uumatragurmukhi'] = 0x0A42; + t['uuvowelsignbengali'] = 0x09C2; + t['uuvowelsigndeva'] = 0x0942; + t['uuvowelsigngujarati'] = 0x0AC2; + t['uvowelsignbengali'] = 0x09C1; + t['uvowelsigndeva'] = 0x0941; + t['uvowelsigngujarati'] = 0x0AC1; + t['v'] = 0x0076; + t['vadeva'] = 0x0935; + t['vagujarati'] = 0x0AB5; + t['vagurmukhi'] = 0x0A35; + t['vakatakana'] = 0x30F7; + t['vav'] = 0x05D5; + t['vavdagesh'] = 0xFB35; + t['vavdagesh65'] = 0xFB35; + t['vavdageshhebrew'] = 0xFB35; + t['vavhebrew'] = 0x05D5; + t['vavholam'] = 0xFB4B; + t['vavholamhebrew'] = 0xFB4B; + t['vavvavhebrew'] = 0x05F0; + t['vavyodhebrew'] = 0x05F1; + t['vcircle'] = 0x24E5; + t['vdotbelow'] = 0x1E7F; + t['vecyrillic'] = 0x0432; + t['veharabic'] = 0x06A4; + t['vehfinalarabic'] = 0xFB6B; + t['vehinitialarabic'] = 0xFB6C; + t['vehmedialarabic'] = 0xFB6D; + t['vekatakana'] = 0x30F9; + t['venus'] = 0x2640; + t['verticalbar'] = 0x007C; + t['verticallineabovecmb'] = 0x030D; + t['verticallinebelowcmb'] = 0x0329; + t['verticallinelowmod'] = 0x02CC; + t['verticallinemod'] = 0x02C8; + t['vewarmenian'] = 0x057E; + t['vhook'] = 0x028B; + t['vikatakana'] = 0x30F8; + t['viramabengali'] = 0x09CD; + t['viramadeva'] = 0x094D; + t['viramagujarati'] = 0x0ACD; + t['visargabengali'] = 0x0983; + t['visargadeva'] = 0x0903; + t['visargagujarati'] = 0x0A83; + t['vmonospace'] = 0xFF56; + t['voarmenian'] = 0x0578; + t['voicediterationhiragana'] = 0x309E; + t['voicediterationkatakana'] = 0x30FE; + t['voicedmarkkana'] = 0x309B; + t['voicedmarkkanahalfwidth'] = 0xFF9E; + t['vokatakana'] = 0x30FA; + t['vparen'] = 0x24B1; + t['vtilde'] = 0x1E7D; + t['vturned'] = 0x028C; + t['vuhiragana'] = 0x3094; + t['vukatakana'] = 0x30F4; + t['w'] = 0x0077; + t['wacute'] = 0x1E83; + t['waekorean'] = 0x3159; + t['wahiragana'] = 0x308F; + t['wakatakana'] = 0x30EF; + t['wakatakanahalfwidth'] = 0xFF9C; + t['wakorean'] = 0x3158; + t['wasmallhiragana'] = 0x308E; + t['wasmallkatakana'] = 0x30EE; + t['wattosquare'] = 0x3357; + t['wavedash'] = 0x301C; + t['wavyunderscorevertical'] = 0xFE34; + t['wawarabic'] = 0x0648; + t['wawfinalarabic'] = 0xFEEE; + t['wawhamzaabovearabic'] = 0x0624; + t['wawhamzaabovefinalarabic'] = 0xFE86; + t['wbsquare'] = 0x33DD; + t['wcircle'] = 0x24E6; + t['wcircumflex'] = 0x0175; + t['wdieresis'] = 0x1E85; + t['wdotaccent'] = 0x1E87; + t['wdotbelow'] = 0x1E89; + t['wehiragana'] = 0x3091; + t['weierstrass'] = 0x2118; + t['wekatakana'] = 0x30F1; + t['wekorean'] = 0x315E; + t['weokorean'] = 0x315D; + t['wgrave'] = 0x1E81; + t['whitebullet'] = 0x25E6; + t['whitecircle'] = 0x25CB; + t['whitecircleinverse'] = 0x25D9; + t['whitecornerbracketleft'] = 0x300E; + t['whitecornerbracketleftvertical'] = 0xFE43; + t['whitecornerbracketright'] = 0x300F; + t['whitecornerbracketrightvertical'] = 0xFE44; + t['whitediamond'] = 0x25C7; + t['whitediamondcontainingblacksmalldiamond'] = 0x25C8; + t['whitedownpointingsmalltriangle'] = 0x25BF; + t['whitedownpointingtriangle'] = 0x25BD; + t['whiteleftpointingsmalltriangle'] = 0x25C3; + t['whiteleftpointingtriangle'] = 0x25C1; + t['whitelenticularbracketleft'] = 0x3016; + t['whitelenticularbracketright'] = 0x3017; + t['whiterightpointingsmalltriangle'] = 0x25B9; + t['whiterightpointingtriangle'] = 0x25B7; + t['whitesmallsquare'] = 0x25AB; + t['whitesmilingface'] = 0x263A; + t['whitesquare'] = 0x25A1; + t['whitestar'] = 0x2606; + t['whitetelephone'] = 0x260F; + t['whitetortoiseshellbracketleft'] = 0x3018; + t['whitetortoiseshellbracketright'] = 0x3019; + t['whiteuppointingsmalltriangle'] = 0x25B5; + t['whiteuppointingtriangle'] = 0x25B3; + t['wihiragana'] = 0x3090; + t['wikatakana'] = 0x30F0; + t['wikorean'] = 0x315F; + t['wmonospace'] = 0xFF57; + t['wohiragana'] = 0x3092; + t['wokatakana'] = 0x30F2; + t['wokatakanahalfwidth'] = 0xFF66; + t['won'] = 0x20A9; + t['wonmonospace'] = 0xFFE6; + t['wowaenthai'] = 0x0E27; + t['wparen'] = 0x24B2; + t['wring'] = 0x1E98; + t['wsuperior'] = 0x02B7; + t['wturned'] = 0x028D; + t['wynn'] = 0x01BF; + t['x'] = 0x0078; + t['xabovecmb'] = 0x033D; + t['xbopomofo'] = 0x3112; + t['xcircle'] = 0x24E7; + t['xdieresis'] = 0x1E8D; + t['xdotaccent'] = 0x1E8B; + t['xeharmenian'] = 0x056D; + t['xi'] = 0x03BE; + t['xmonospace'] = 0xFF58; + t['xparen'] = 0x24B3; + t['xsuperior'] = 0x02E3; + t['y'] = 0x0079; + t['yaadosquare'] = 0x334E; + t['yabengali'] = 0x09AF; + t['yacute'] = 0x00FD; + t['yadeva'] = 0x092F; + t['yaekorean'] = 0x3152; + t['yagujarati'] = 0x0AAF; + t['yagurmukhi'] = 0x0A2F; + t['yahiragana'] = 0x3084; + t['yakatakana'] = 0x30E4; + t['yakatakanahalfwidth'] = 0xFF94; + t['yakorean'] = 0x3151; + t['yamakkanthai'] = 0x0E4E; + t['yasmallhiragana'] = 0x3083; + t['yasmallkatakana'] = 0x30E3; + t['yasmallkatakanahalfwidth'] = 0xFF6C; + t['yatcyrillic'] = 0x0463; + t['ycircle'] = 0x24E8; + t['ycircumflex'] = 0x0177; + t['ydieresis'] = 0x00FF; + t['ydotaccent'] = 0x1E8F; + t['ydotbelow'] = 0x1EF5; + t['yeharabic'] = 0x064A; + t['yehbarreearabic'] = 0x06D2; + t['yehbarreefinalarabic'] = 0xFBAF; + t['yehfinalarabic'] = 0xFEF2; + t['yehhamzaabovearabic'] = 0x0626; + t['yehhamzaabovefinalarabic'] = 0xFE8A; + t['yehhamzaaboveinitialarabic'] = 0xFE8B; + t['yehhamzaabovemedialarabic'] = 0xFE8C; + t['yehinitialarabic'] = 0xFEF3; + t['yehmedialarabic'] = 0xFEF4; + t['yehmeeminitialarabic'] = 0xFCDD; + t['yehmeemisolatedarabic'] = 0xFC58; + t['yehnoonfinalarabic'] = 0xFC94; + t['yehthreedotsbelowarabic'] = 0x06D1; + t['yekorean'] = 0x3156; + t['yen'] = 0x00A5; + t['yenmonospace'] = 0xFFE5; + t['yeokorean'] = 0x3155; + t['yeorinhieuhkorean'] = 0x3186; + t['yerahbenyomohebrew'] = 0x05AA; + t['yerahbenyomolefthebrew'] = 0x05AA; + t['yericyrillic'] = 0x044B; + t['yerudieresiscyrillic'] = 0x04F9; + t['yesieungkorean'] = 0x3181; + t['yesieungpansioskorean'] = 0x3183; + t['yesieungsioskorean'] = 0x3182; + t['yetivhebrew'] = 0x059A; + t['ygrave'] = 0x1EF3; + t['yhook'] = 0x01B4; + t['yhookabove'] = 0x1EF7; + t['yiarmenian'] = 0x0575; + t['yicyrillic'] = 0x0457; + t['yikorean'] = 0x3162; + t['yinyang'] = 0x262F; + t['yiwnarmenian'] = 0x0582; + t['ymonospace'] = 0xFF59; + t['yod'] = 0x05D9; + t['yoddagesh'] = 0xFB39; + t['yoddageshhebrew'] = 0xFB39; + t['yodhebrew'] = 0x05D9; + t['yodyodhebrew'] = 0x05F2; + t['yodyodpatahhebrew'] = 0xFB1F; + t['yohiragana'] = 0x3088; + t['yoikorean'] = 0x3189; + t['yokatakana'] = 0x30E8; + t['yokatakanahalfwidth'] = 0xFF96; + t['yokorean'] = 0x315B; + t['yosmallhiragana'] = 0x3087; + t['yosmallkatakana'] = 0x30E7; + t['yosmallkatakanahalfwidth'] = 0xFF6E; + t['yotgreek'] = 0x03F3; + t['yoyaekorean'] = 0x3188; + t['yoyakorean'] = 0x3187; + t['yoyakthai'] = 0x0E22; + t['yoyingthai'] = 0x0E0D; + t['yparen'] = 0x24B4; + t['ypogegrammeni'] = 0x037A; + t['ypogegrammenigreekcmb'] = 0x0345; + t['yr'] = 0x01A6; + t['yring'] = 0x1E99; + t['ysuperior'] = 0x02B8; + t['ytilde'] = 0x1EF9; + t['yturned'] = 0x028E; + t['yuhiragana'] = 0x3086; + t['yuikorean'] = 0x318C; + t['yukatakana'] = 0x30E6; + t['yukatakanahalfwidth'] = 0xFF95; + t['yukorean'] = 0x3160; + t['yusbigcyrillic'] = 0x046B; + t['yusbigiotifiedcyrillic'] = 0x046D; + t['yuslittlecyrillic'] = 0x0467; + t['yuslittleiotifiedcyrillic'] = 0x0469; + t['yusmallhiragana'] = 0x3085; + t['yusmallkatakana'] = 0x30E5; + t['yusmallkatakanahalfwidth'] = 0xFF6D; + t['yuyekorean'] = 0x318B; + t['yuyeokorean'] = 0x318A; + t['yyabengali'] = 0x09DF; + t['yyadeva'] = 0x095F; + t['z'] = 0x007A; + t['zaarmenian'] = 0x0566; + t['zacute'] = 0x017A; + t['zadeva'] = 0x095B; + t['zagurmukhi'] = 0x0A5B; + t['zaharabic'] = 0x0638; + t['zahfinalarabic'] = 0xFEC6; + t['zahinitialarabic'] = 0xFEC7; + t['zahiragana'] = 0x3056; + t['zahmedialarabic'] = 0xFEC8; + t['zainarabic'] = 0x0632; + t['zainfinalarabic'] = 0xFEB0; + t['zakatakana'] = 0x30B6; + t['zaqefgadolhebrew'] = 0x0595; + t['zaqefqatanhebrew'] = 0x0594; + t['zarqahebrew'] = 0x0598; + t['zayin'] = 0x05D6; + t['zayindagesh'] = 0xFB36; + t['zayindageshhebrew'] = 0xFB36; + t['zayinhebrew'] = 0x05D6; + t['zbopomofo'] = 0x3117; + t['zcaron'] = 0x017E; + t['zcircle'] = 0x24E9; + t['zcircumflex'] = 0x1E91; + t['zcurl'] = 0x0291; + t['zdot'] = 0x017C; + t['zdotaccent'] = 0x017C; + t['zdotbelow'] = 0x1E93; + t['zecyrillic'] = 0x0437; + t['zedescendercyrillic'] = 0x0499; + t['zedieresiscyrillic'] = 0x04DF; + t['zehiragana'] = 0x305C; + t['zekatakana'] = 0x30BC; + t['zero'] = 0x0030; + t['zeroarabic'] = 0x0660; + t['zerobengali'] = 0x09E6; + t['zerodeva'] = 0x0966; + t['zerogujarati'] = 0x0AE6; + t['zerogurmukhi'] = 0x0A66; + t['zerohackarabic'] = 0x0660; + t['zeroinferior'] = 0x2080; + t['zeromonospace'] = 0xFF10; + t['zerooldstyle'] = 0xF730; + t['zeropersian'] = 0x06F0; + t['zerosuperior'] = 0x2070; + t['zerothai'] = 0x0E50; + t['zerowidthjoiner'] = 0xFEFF; + t['zerowidthnonjoiner'] = 0x200C; + t['zerowidthspace'] = 0x200B; + t['zeta'] = 0x03B6; + t['zhbopomofo'] = 0x3113; + t['zhearmenian'] = 0x056A; + t['zhebrevecyrillic'] = 0x04C2; + t['zhecyrillic'] = 0x0436; + t['zhedescendercyrillic'] = 0x0497; + t['zhedieresiscyrillic'] = 0x04DD; + t['zihiragana'] = 0x3058; + t['zikatakana'] = 0x30B8; + t['zinorhebrew'] = 0x05AE; + t['zlinebelow'] = 0x1E95; + t['zmonospace'] = 0xFF5A; + t['zohiragana'] = 0x305E; + t['zokatakana'] = 0x30BE; + t['zparen'] = 0x24B5; + t['zretroflexhook'] = 0x0290; + t['zstroke'] = 0x01B6; + t['zuhiragana'] = 0x305A; + t['zukatakana'] = 0x30BA; + t['.notdef'] = 0x0000; + t['angbracketleftbig'] = 0x2329; + t['angbracketleftBig'] = 0x2329; + t['angbracketleftbigg'] = 0x2329; + t['angbracketleftBigg'] = 0x2329; + t['angbracketrightBig'] = 0x232A; + t['angbracketrightbig'] = 0x232A; + t['angbracketrightBigg'] = 0x232A; + t['angbracketrightbigg'] = 0x232A; + t['arrowhookleft'] = 0x21AA; + t['arrowhookright'] = 0x21A9; + t['arrowlefttophalf'] = 0x21BC; + t['arrowleftbothalf'] = 0x21BD; + t['arrownortheast'] = 0x2197; + t['arrownorthwest'] = 0x2196; + t['arrowrighttophalf'] = 0x21C0; + t['arrowrightbothalf'] = 0x21C1; + t['arrowsoutheast'] = 0x2198; + t['arrowsouthwest'] = 0x2199; + t['backslashbig'] = 0x2216; + t['backslashBig'] = 0x2216; + t['backslashBigg'] = 0x2216; + t['backslashbigg'] = 0x2216; + t['bardbl'] = 0x2016; + t['bracehtipdownleft'] = 0xFE37; + t['bracehtipdownright'] = 0xFE37; + t['bracehtipupleft'] = 0xFE38; + t['bracehtipupright'] = 0xFE38; + t['braceleftBig'] = 0x007B; + t['braceleftbig'] = 0x007B; + t['braceleftbigg'] = 0x007B; + t['braceleftBigg'] = 0x007B; + t['bracerightBig'] = 0x007D; + t['bracerightbig'] = 0x007D; + t['bracerightbigg'] = 0x007D; + t['bracerightBigg'] = 0x007D; + t['bracketleftbig'] = 0x005B; + t['bracketleftBig'] = 0x005B; + t['bracketleftbigg'] = 0x005B; + t['bracketleftBigg'] = 0x005B; + t['bracketrightBig'] = 0x005D; + t['bracketrightbig'] = 0x005D; + t['bracketrightbigg'] = 0x005D; + t['bracketrightBigg'] = 0x005D; + t['ceilingleftbig'] = 0x2308; + t['ceilingleftBig'] = 0x2308; + t['ceilingleftBigg'] = 0x2308; + t['ceilingleftbigg'] = 0x2308; + t['ceilingrightbig'] = 0x2309; + t['ceilingrightBig'] = 0x2309; + t['ceilingrightbigg'] = 0x2309; + t['ceilingrightBigg'] = 0x2309; + t['circledotdisplay'] = 0x2299; + t['circledottext'] = 0x2299; + t['circlemultiplydisplay'] = 0x2297; + t['circlemultiplytext'] = 0x2297; + t['circleplusdisplay'] = 0x2295; + t['circleplustext'] = 0x2295; + t['contintegraldisplay'] = 0x222E; + t['contintegraltext'] = 0x222E; + t['coproductdisplay'] = 0x2210; + t['coproducttext'] = 0x2210; + t['floorleftBig'] = 0x230A; + t['floorleftbig'] = 0x230A; + t['floorleftbigg'] = 0x230A; + t['floorleftBigg'] = 0x230A; + t['floorrightbig'] = 0x230B; + t['floorrightBig'] = 0x230B; + t['floorrightBigg'] = 0x230B; + t['floorrightbigg'] = 0x230B; + t['hatwide'] = 0x0302; + t['hatwider'] = 0x0302; + t['hatwidest'] = 0x0302; + t['intercal'] = 0x1D40; + t['integraldisplay'] = 0x222B; + t['integraltext'] = 0x222B; + t['intersectiondisplay'] = 0x22C2; + t['intersectiontext'] = 0x22C2; + t['logicalanddisplay'] = 0x2227; + t['logicalandtext'] = 0x2227; + t['logicalordisplay'] = 0x2228; + t['logicalortext'] = 0x2228; + t['parenleftBig'] = 0x0028; + t['parenleftbig'] = 0x0028; + t['parenleftBigg'] = 0x0028; + t['parenleftbigg'] = 0x0028; + t['parenrightBig'] = 0x0029; + t['parenrightbig'] = 0x0029; + t['parenrightBigg'] = 0x0029; + t['parenrightbigg'] = 0x0029; + t['prime'] = 0x2032; + t['productdisplay'] = 0x220F; + t['producttext'] = 0x220F; + t['radicalbig'] = 0x221A; + t['radicalBig'] = 0x221A; + t['radicalBigg'] = 0x221A; + t['radicalbigg'] = 0x221A; + t['radicalbt'] = 0x221A; + t['radicaltp'] = 0x221A; + t['radicalvertex'] = 0x221A; + t['slashbig'] = 0x002F; + t['slashBig'] = 0x002F; + t['slashBigg'] = 0x002F; + t['slashbigg'] = 0x002F; + t['summationdisplay'] = 0x2211; + t['summationtext'] = 0x2211; + t['tildewide'] = 0x02DC; + t['tildewider'] = 0x02DC; + t['tildewidest'] = 0x02DC; + t['uniondisplay'] = 0x22C3; + t['unionmultidisplay'] = 0x228E; + t['unionmultitext'] = 0x228E; + t['unionsqdisplay'] = 0x2294; + t['unionsqtext'] = 0x2294; + t['uniontext'] = 0x22C3; + t['vextenddouble'] = 0x2225; + t['vextendsingle'] = 0x2223; +}); +var getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) { + t['space'] = 0x0020; + t['a1'] = 0x2701; + t['a2'] = 0x2702; + t['a202'] = 0x2703; + t['a3'] = 0x2704; + t['a4'] = 0x260E; + t['a5'] = 0x2706; + t['a119'] = 0x2707; + t['a118'] = 0x2708; + t['a117'] = 0x2709; + t['a11'] = 0x261B; + t['a12'] = 0x261E; + t['a13'] = 0x270C; + t['a14'] = 0x270D; + t['a15'] = 0x270E; + t['a16'] = 0x270F; + t['a105'] = 0x2710; + t['a17'] = 0x2711; + t['a18'] = 0x2712; + t['a19'] = 0x2713; + t['a20'] = 0x2714; + t['a21'] = 0x2715; + t['a22'] = 0x2716; + t['a23'] = 0x2717; + t['a24'] = 0x2718; + t['a25'] = 0x2719; + t['a26'] = 0x271A; + t['a27'] = 0x271B; + t['a28'] = 0x271C; + t['a6'] = 0x271D; + t['a7'] = 0x271E; + t['a8'] = 0x271F; + t['a9'] = 0x2720; + t['a10'] = 0x2721; + t['a29'] = 0x2722; + t['a30'] = 0x2723; + t['a31'] = 0x2724; + t['a32'] = 0x2725; + t['a33'] = 0x2726; + t['a34'] = 0x2727; + t['a35'] = 0x2605; + t['a36'] = 0x2729; + t['a37'] = 0x272A; + t['a38'] = 0x272B; + t['a39'] = 0x272C; + t['a40'] = 0x272D; + t['a41'] = 0x272E; + t['a42'] = 0x272F; + t['a43'] = 0x2730; + t['a44'] = 0x2731; + t['a45'] = 0x2732; + t['a46'] = 0x2733; + t['a47'] = 0x2734; + t['a48'] = 0x2735; + t['a49'] = 0x2736; + t['a50'] = 0x2737; + t['a51'] = 0x2738; + t['a52'] = 0x2739; + t['a53'] = 0x273A; + t['a54'] = 0x273B; + t['a55'] = 0x273C; + t['a56'] = 0x273D; + t['a57'] = 0x273E; + t['a58'] = 0x273F; + t['a59'] = 0x2740; + t['a60'] = 0x2741; + t['a61'] = 0x2742; + t['a62'] = 0x2743; + t['a63'] = 0x2744; + t['a64'] = 0x2745; + t['a65'] = 0x2746; + t['a66'] = 0x2747; + t['a67'] = 0x2748; + t['a68'] = 0x2749; + t['a69'] = 0x274A; + t['a70'] = 0x274B; + t['a71'] = 0x25CF; + t['a72'] = 0x274D; + t['a73'] = 0x25A0; + t['a74'] = 0x274F; + t['a203'] = 0x2750; + t['a75'] = 0x2751; + t['a204'] = 0x2752; + t['a76'] = 0x25B2; + t['a77'] = 0x25BC; + t['a78'] = 0x25C6; + t['a79'] = 0x2756; + t['a81'] = 0x25D7; + t['a82'] = 0x2758; + t['a83'] = 0x2759; + t['a84'] = 0x275A; + t['a97'] = 0x275B; + t['a98'] = 0x275C; + t['a99'] = 0x275D; + t['a100'] = 0x275E; + t['a101'] = 0x2761; + t['a102'] = 0x2762; + t['a103'] = 0x2763; + t['a104'] = 0x2764; + t['a106'] = 0x2765; + t['a107'] = 0x2766; + t['a108'] = 0x2767; + t['a112'] = 0x2663; + t['a111'] = 0x2666; + t['a110'] = 0x2665; + t['a109'] = 0x2660; + t['a120'] = 0x2460; + t['a121'] = 0x2461; + t['a122'] = 0x2462; + t['a123'] = 0x2463; + t['a124'] = 0x2464; + t['a125'] = 0x2465; + t['a126'] = 0x2466; + t['a127'] = 0x2467; + t['a128'] = 0x2468; + t['a129'] = 0x2469; + t['a130'] = 0x2776; + t['a131'] = 0x2777; + t['a132'] = 0x2778; + t['a133'] = 0x2779; + t['a134'] = 0x277A; + t['a135'] = 0x277B; + t['a136'] = 0x277C; + t['a137'] = 0x277D; + t['a138'] = 0x277E; + t['a139'] = 0x277F; + t['a140'] = 0x2780; + t['a141'] = 0x2781; + t['a142'] = 0x2782; + t['a143'] = 0x2783; + t['a144'] = 0x2784; + t['a145'] = 0x2785; + t['a146'] = 0x2786; + t['a147'] = 0x2787; + t['a148'] = 0x2788; + t['a149'] = 0x2789; + t['a150'] = 0x278A; + t['a151'] = 0x278B; + t['a152'] = 0x278C; + t['a153'] = 0x278D; + t['a154'] = 0x278E; + t['a155'] = 0x278F; + t['a156'] = 0x2790; + t['a157'] = 0x2791; + t['a158'] = 0x2792; + t['a159'] = 0x2793; + t['a160'] = 0x2794; + t['a161'] = 0x2192; + t['a163'] = 0x2194; + t['a164'] = 0x2195; + t['a196'] = 0x2798; + t['a165'] = 0x2799; + t['a192'] = 0x279A; + t['a166'] = 0x279B; + t['a167'] = 0x279C; + t['a168'] = 0x279D; + t['a169'] = 0x279E; + t['a170'] = 0x279F; + t['a171'] = 0x27A0; + t['a172'] = 0x27A1; + t['a173'] = 0x27A2; + t['a162'] = 0x27A3; + t['a174'] = 0x27A4; + t['a175'] = 0x27A5; + t['a176'] = 0x27A6; + t['a177'] = 0x27A7; + t['a178'] = 0x27A8; + t['a179'] = 0x27A9; + t['a193'] = 0x27AA; + t['a180'] = 0x27AB; + t['a199'] = 0x27AC; + t['a181'] = 0x27AD; + t['a200'] = 0x27AE; + t['a182'] = 0x27AF; + t['a201'] = 0x27B1; + t['a183'] = 0x27B2; + t['a184'] = 0x27B3; + t['a197'] = 0x27B4; + t['a185'] = 0x27B5; + t['a194'] = 0x27B6; + t['a198'] = 0x27B7; + t['a186'] = 0x27B8; + t['a195'] = 0x27B9; + t['a187'] = 0x27BA; + t['a188'] = 0x27BB; + t['a189'] = 0x27BC; + t['a190'] = 0x27BD; + t['a191'] = 0x27BE; + t['a89'] = 0x2768; + t['a90'] = 0x2769; + t['a93'] = 0x276A; + t['a94'] = 0x276B; + t['a91'] = 0x276C; + t['a92'] = 0x276D; + t['a205'] = 0x276E; + t['a85'] = 0x276F; + t['a206'] = 0x2770; + t['a86'] = 0x2771; + t['a87'] = 0x2772; + t['a88'] = 0x2773; + t['a95'] = 0x2774; + t['a96'] = 0x2775; + t['.notdef'] = 0x0000; +}); +exports.getGlyphsUnicode = getGlyphsUnicode; +exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunction = exports.isPDFFunction = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _ps_parser = __w_pdfjs_require__(33); + +var PDFFunction = function PDFFunctionClosure() { + var CONSTRUCT_SAMPLED = 0; + var CONSTRUCT_INTERPOLATED = 2; + var CONSTRUCT_STICHED = 3; + var CONSTRUCT_POSTSCRIPT = 4; + return { + getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps, str) { + var i, ii; + var length = 1; + for (i = 0, ii = size.length; i < ii; i++) { + length *= size[i]; + } + length *= outputSize; + var array = new Array(length); + var codeSize = 0; + var codeBuf = 0; + var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1); + var strBytes = str.getBytes((length * bps + 7) / 8); + var strIdx = 0; + for (i = 0; i < length; i++) { + while (codeSize < bps) { + codeBuf <<= 8; + codeBuf |= strBytes[strIdx++]; + codeSize += 8; + } + codeSize -= bps; + array[i] = (codeBuf >> codeSize) * sampleMul; + codeBuf &= (1 << codeSize) - 1; + } + return array; + }, + getIR: function PDFFunction_getIR(xref, fn) { + var dict = fn.dict; + if (!dict) { + dict = fn; + } + var types = [this.constructSampled, null, this.constructInterpolated, this.constructStiched, this.constructPostScript]; + var typeNum = dict.get('FunctionType'); + var typeFn = types[typeNum]; + if (!typeFn) { + throw new _util.FormatError('Unknown type of function'); + } + return typeFn.call(this, fn, dict, xref); + }, + fromIR: function PDFFunction_fromIR(IR) { + var type = IR[0]; + switch (type) { + case CONSTRUCT_SAMPLED: + return this.constructSampledFromIR(IR); + case CONSTRUCT_INTERPOLATED: + return this.constructInterpolatedFromIR(IR); + case CONSTRUCT_STICHED: + return this.constructStichedFromIR(IR); + default: + return this.constructPostScriptFromIR(IR); + } + }, + parse: function PDFFunction_parse(xref, fn) { + var IR = this.getIR(xref, fn); + return this.fromIR(IR); + }, + parseArray: function PDFFunction_parseArray(xref, fnObj) { + if (!(0, _util.isArray)(fnObj)) { + return this.parse(xref, fnObj); + } + var fnArray = []; + for (var j = 0, jj = fnObj.length; j < jj; j++) { + var obj = xref.fetchIfRef(fnObj[j]); + fnArray.push(PDFFunction.parse(xref, obj)); + } + return function (src, srcOffset, dest, destOffset) { + for (var i = 0, ii = fnArray.length; i < ii; i++) { + fnArray[i](src, srcOffset, dest, destOffset + i); + } + }; + }, + constructSampled: function PDFFunction_constructSampled(str, dict) { + function toMultiArray(arr) { + var inputLength = arr.length; + var out = []; + var index = 0; + for (var i = 0; i < inputLength; i += 2) { + out[index] = [arr[i], arr[i + 1]]; + ++index; + } + return out; + } + var domain = dict.getArray('Domain'); + var range = dict.getArray('Range'); + if (!domain || !range) { + throw new _util.FormatError('No domain or range'); + } + var inputSize = domain.length / 2; + var outputSize = range.length / 2; + domain = toMultiArray(domain); + range = toMultiArray(range); + var size = dict.get('Size'); + var bps = dict.get('BitsPerSample'); + var order = dict.get('Order') || 1; + if (order !== 1) { + (0, _util.info)('No support for cubic spline interpolation: ' + order); + } + var encode = dict.getArray('Encode'); + if (!encode) { + encode = []; + for (var i = 0; i < inputSize; ++i) { + encode.push(0); + encode.push(size[i] - 1); + } + } + encode = toMultiArray(encode); + var decode = dict.getArray('Decode'); + if (!decode) { + decode = range; + } else { + decode = toMultiArray(decode); + } + var samples = this.getSampleArray(size, outputSize, bps, str); + return [CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size, outputSize, Math.pow(2, bps) - 1, range]; + }, + constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) { + function interpolate(x, xmin, xmax, ymin, ymax) { + return ymin + (x - xmin) * ((ymax - ymin) / (xmax - xmin)); + } + return function constructSampledFromIRResult(src, srcOffset, dest, destOffset) { + var m = IR[1]; + var domain = IR[2]; + var encode = IR[3]; + var decode = IR[4]; + var samples = IR[5]; + var size = IR[6]; + var n = IR[7]; + var range = IR[9]; + var cubeVertices = 1 << m; + var cubeN = new Float64Array(cubeVertices); + var cubeVertex = new Uint32Array(cubeVertices); + var i, j; + for (j = 0; j < cubeVertices; j++) { + cubeN[j] = 1; + } + var k = n, + pos = 1; + for (i = 0; i < m; ++i) { + var domain_2i = domain[i][0]; + var domain_2i_1 = domain[i][1]; + var xi = Math.min(Math.max(src[srcOffset + i], domain_2i), domain_2i_1); + var e = interpolate(xi, domain_2i, domain_2i_1, encode[i][0], encode[i][1]); + var size_i = size[i]; + e = Math.min(Math.max(e, 0), size_i - 1); + var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; + var n0 = e0 + 1 - e; + var n1 = e - e0; + var offset0 = e0 * k; + var offset1 = offset0 + k; + for (j = 0; j < cubeVertices; j++) { + if (j & pos) { + cubeN[j] *= n1; + cubeVertex[j] += offset1; + } else { + cubeN[j] *= n0; + cubeVertex[j] += offset0; + } + } + k *= size_i; + pos <<= 1; + } + for (j = 0; j < n; ++j) { + var rj = 0; + for (i = 0; i < cubeVertices; i++) { + rj += samples[cubeVertex[i] + j] * cubeN[i]; + } + rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]); + dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]), range[j][1]); + } + }; + }, + constructInterpolated: function PDFFunction_constructInterpolated(str, dict) { + var c0 = dict.getArray('C0') || [0]; + var c1 = dict.getArray('C1') || [1]; + var n = dict.get('N'); + if (!(0, _util.isArray)(c0) || !(0, _util.isArray)(c1)) { + throw new _util.FormatError('Illegal dictionary for interpolated function'); + } + var length = c0.length; + var diff = []; + for (var i = 0; i < length; ++i) { + diff.push(c1[i] - c0[i]); + } + return [CONSTRUCT_INTERPOLATED, c0, diff, n]; + }, + constructInterpolatedFromIR: function PDFFunction_constructInterpolatedFromIR(IR) { + var c0 = IR[1]; + var diff = IR[2]; + var n = IR[3]; + var length = diff.length; + return function constructInterpolatedFromIRResult(src, srcOffset, dest, destOffset) { + var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); + for (var j = 0; j < length; ++j) { + dest[destOffset + j] = c0[j] + x * diff[j]; + } + }; + }, + constructStiched: function PDFFunction_constructStiched(fn, dict, xref) { + var domain = dict.getArray('Domain'); + if (!domain) { + throw new _util.FormatError('No domain'); + } + var inputSize = domain.length / 2; + if (inputSize !== 1) { + throw new _util.FormatError('Bad domain for stiched function'); + } + var fnRefs = dict.get('Functions'); + var fns = []; + for (var i = 0, ii = fnRefs.length; i < ii; ++i) { + fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i]))); + } + var bounds = dict.getArray('Bounds'); + var encode = dict.getArray('Encode'); + return [CONSTRUCT_STICHED, domain, bounds, encode, fns]; + }, + constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) { + var domain = IR[1]; + var bounds = IR[2]; + var encode = IR[3]; + var fnsIR = IR[4]; + var fns = []; + var tmpBuf = new Float32Array(1); + for (var i = 0, ii = fnsIR.length; i < ii; i++) { + fns.push(PDFFunction.fromIR(fnsIR[i])); + } + return function constructStichedFromIRResult(src, srcOffset, dest, destOffset) { + var clip = function constructStichedFromIRClip(v, min, max) { + if (v > max) { + v = max; + } else if (v < min) { + v = min; + } + return v; + }; + var v = clip(src[srcOffset], domain[0], domain[1]); + for (var i = 0, ii = bounds.length; i < ii; ++i) { + if (v < bounds[i]) { + break; + } + } + var dmin = domain[0]; + if (i > 0) { + dmin = bounds[i - 1]; + } + var dmax = domain[1]; + if (i < bounds.length) { + dmax = bounds[i]; + } + var rmin = encode[2 * i]; + var rmax = encode[2 * i + 1]; + tmpBuf[0] = dmin === dmax ? rmin : rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin); + fns[i](tmpBuf, 0, dest, destOffset); + }; + }, + constructPostScript: function PDFFunction_constructPostScript(fn, dict, xref) { + var domain = dict.getArray('Domain'); + var range = dict.getArray('Range'); + if (!domain) { + throw new _util.FormatError('No domain.'); + } + if (!range) { + throw new _util.FormatError('No range.'); + } + var lexer = new _ps_parser.PostScriptLexer(fn); + var parser = new _ps_parser.PostScriptParser(lexer); + var code = parser.parse(); + return [CONSTRUCT_POSTSCRIPT, domain, range, code]; + }, + constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(IR) { + var domain = IR[1]; + var range = IR[2]; + var code = IR[3]; + var compiled = new PostScriptCompiler().compile(code, domain, range); + if (compiled) { + return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled); + } + (0, _util.info)('Unable to compile PS function'); + var numOutputs = range.length >> 1; + var numInputs = domain.length >> 1; + var evaluator = new PostScriptEvaluator(code); + var cache = Object.create(null); + var MAX_CACHE_SIZE = 2048 * 4; + var cache_available = MAX_CACHE_SIZE; + var tmpBuf = new Float32Array(numInputs); + return function constructPostScriptFromIRResult(src, srcOffset, dest, destOffset) { + var i, value; + var key = ''; + var input = tmpBuf; + for (i = 0; i < numInputs; i++) { + value = src[srcOffset + i]; + input[i] = value; + key += value + '_'; + } + var cachedValue = cache[key]; + if (cachedValue !== undefined) { + dest.set(cachedValue, destOffset); + return; + } + var output = new Float32Array(numOutputs); + var stack = evaluator.execute(input); + var stackIndex = stack.length - numOutputs; + for (i = 0; i < numOutputs; i++) { + value = stack[stackIndex + i]; + var bound = range[i * 2]; + if (value < bound) { + value = bound; + } else { + bound = range[i * 2 + 1]; + if (value > bound) { + value = bound; + } + } + output[i] = value; + } + if (cache_available > 0) { + cache_available--; + cache[key] = output; + } + dest.set(output, destOffset); + }; + } + }; +}(); +function isPDFFunction(v) { + var fnDict; + if ((typeof v === 'undefined' ? 'undefined' : _typeof(v)) !== 'object') { + return false; + } else if ((0, _primitives.isDict)(v)) { + fnDict = v; + } else if ((0, _primitives.isStream)(v)) { + fnDict = v.dict; + } else { + return false; + } + return fnDict.has('FunctionType'); +} +var PostScriptStack = function PostScriptStackClosure() { + var MAX_STACK_SIZE = 100; + function PostScriptStack(initialStack) { + this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0); + } + PostScriptStack.prototype = { + push: function PostScriptStack_push(value) { + if (this.stack.length >= MAX_STACK_SIZE) { + throw new Error('PostScript function stack overflow.'); + } + this.stack.push(value); + }, + pop: function PostScriptStack_pop() { + if (this.stack.length <= 0) { + throw new Error('PostScript function stack underflow.'); + } + return this.stack.pop(); + }, + copy: function PostScriptStack_copy(n) { + if (this.stack.length + n >= MAX_STACK_SIZE) { + throw new Error('PostScript function stack overflow.'); + } + var stack = this.stack; + for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) { + stack.push(stack[i]); + } + }, + index: function PostScriptStack_index(n) { + this.push(this.stack[this.stack.length - n - 1]); + }, + roll: function PostScriptStack_roll(n, p) { + var stack = this.stack; + var l = stack.length - n; + var r = stack.length - 1, + c = l + (p - Math.floor(p / n) * n), + i, + j, + t; + for (i = l, j = r; i < j; i++, j--) { + t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (i = l, j = c - 1; i < j; i++, j--) { + t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + for (i = c, j = r; i < j; i++, j--) { + t = stack[i]; + stack[i] = stack[j]; + stack[j] = t; + } + } + }; + return PostScriptStack; +}(); +var PostScriptEvaluator = function PostScriptEvaluatorClosure() { + function PostScriptEvaluator(operators) { + this.operators = operators; + } + PostScriptEvaluator.prototype = { + execute: function PostScriptEvaluator_execute(initialStack) { + var stack = new PostScriptStack(initialStack); + var counter = 0; + var operators = this.operators; + var length = operators.length; + var operator, a, b; + while (counter < length) { + operator = operators[counter++]; + if (typeof operator === 'number') { + stack.push(operator); + continue; + } + switch (operator) { + case 'jz': + b = stack.pop(); + a = stack.pop(); + if (!a) { + counter = b; + } + break; + case 'j': + a = stack.pop(); + counter = a; + break; + case 'abs': + a = stack.pop(); + stack.push(Math.abs(a)); + break; + case 'add': + b = stack.pop(); + a = stack.pop(); + stack.push(a + b); + break; + case 'and': + b = stack.pop(); + a = stack.pop(); + if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { + stack.push(a && b); + } else { + stack.push(a & b); + } + break; + case 'atan': + a = stack.pop(); + stack.push(Math.atan(a)); + break; + case 'bitshift': + b = stack.pop(); + a = stack.pop(); + if (a > 0) { + stack.push(a << b); + } else { + stack.push(a >> b); + } + break; + case 'ceiling': + a = stack.pop(); + stack.push(Math.ceil(a)); + break; + case 'copy': + a = stack.pop(); + stack.copy(a); + break; + case 'cos': + a = stack.pop(); + stack.push(Math.cos(a)); + break; + case 'cvi': + a = stack.pop() | 0; + stack.push(a); + break; + case 'cvr': + break; + case 'div': + b = stack.pop(); + a = stack.pop(); + stack.push(a / b); + break; + case 'dup': + stack.copy(1); + break; + case 'eq': + b = stack.pop(); + a = stack.pop(); + stack.push(a === b); + break; + case 'exch': + stack.roll(2, 1); + break; + case 'exp': + b = stack.pop(); + a = stack.pop(); + stack.push(Math.pow(a, b)); + break; + case 'false': + stack.push(false); + break; + case 'floor': + a = stack.pop(); + stack.push(Math.floor(a)); + break; + case 'ge': + b = stack.pop(); + a = stack.pop(); + stack.push(a >= b); + break; + case 'gt': + b = stack.pop(); + a = stack.pop(); + stack.push(a > b); + break; + case 'idiv': + b = stack.pop(); + a = stack.pop(); + stack.push(a / b | 0); + break; + case 'index': + a = stack.pop(); + stack.index(a); + break; + case 'le': + b = stack.pop(); + a = stack.pop(); + stack.push(a <= b); + break; + case 'ln': + a = stack.pop(); + stack.push(Math.log(a)); + break; + case 'log': + a = stack.pop(); + stack.push(Math.log(a) / Math.LN10); + break; + case 'lt': + b = stack.pop(); + a = stack.pop(); + stack.push(a < b); + break; + case 'mod': + b = stack.pop(); + a = stack.pop(); + stack.push(a % b); + break; + case 'mul': + b = stack.pop(); + a = stack.pop(); + stack.push(a * b); + break; + case 'ne': + b = stack.pop(); + a = stack.pop(); + stack.push(a !== b); + break; + case 'neg': + a = stack.pop(); + stack.push(-a); + break; + case 'not': + a = stack.pop(); + if ((0, _util.isBool)(a)) { + stack.push(!a); + } else { + stack.push(~a); + } + break; + case 'or': + b = stack.pop(); + a = stack.pop(); + if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { + stack.push(a || b); + } else { + stack.push(a | b); + } + break; + case 'pop': + stack.pop(); + break; + case 'roll': + b = stack.pop(); + a = stack.pop(); + stack.roll(a, b); + break; + case 'round': + a = stack.pop(); + stack.push(Math.round(a)); + break; + case 'sin': + a = stack.pop(); + stack.push(Math.sin(a)); + break; + case 'sqrt': + a = stack.pop(); + stack.push(Math.sqrt(a)); + break; + case 'sub': + b = stack.pop(); + a = stack.pop(); + stack.push(a - b); + break; + case 'true': + stack.push(true); + break; + case 'truncate': + a = stack.pop(); + a = a < 0 ? Math.ceil(a) : Math.floor(a); + stack.push(a); + break; + case 'xor': + b = stack.pop(); + a = stack.pop(); + if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) { + stack.push(a !== b); + } else { + stack.push(a ^ b); + } + break; + default: + throw new _util.FormatError('Unknown operator ' + operator); + } + } + return stack.stack; + } + }; + return PostScriptEvaluator; +}(); +var PostScriptCompiler = function PostScriptCompilerClosure() { + function AstNode(type) { + this.type = type; + } + AstNode.prototype.visit = function (visitor) { + throw new Error('abstract method'); + }; + function AstArgument(index, min, max) { + AstNode.call(this, 'args'); + this.index = index; + this.min = min; + this.max = max; + } + AstArgument.prototype = Object.create(AstNode.prototype); + AstArgument.prototype.visit = function (visitor) { + visitor.visitArgument(this); + }; + function AstLiteral(number) { + AstNode.call(this, 'literal'); + this.number = number; + this.min = number; + this.max = number; + } + AstLiteral.prototype = Object.create(AstNode.prototype); + AstLiteral.prototype.visit = function (visitor) { + visitor.visitLiteral(this); + }; + function AstBinaryOperation(op, arg1, arg2, min, max) { + AstNode.call(this, 'binary'); + this.op = op; + this.arg1 = arg1; + this.arg2 = arg2; + this.min = min; + this.max = max; + } + AstBinaryOperation.prototype = Object.create(AstNode.prototype); + AstBinaryOperation.prototype.visit = function (visitor) { + visitor.visitBinaryOperation(this); + }; + function AstMin(arg, max) { + AstNode.call(this, 'max'); + this.arg = arg; + this.min = arg.min; + this.max = max; + } + AstMin.prototype = Object.create(AstNode.prototype); + AstMin.prototype.visit = function (visitor) { + visitor.visitMin(this); + }; + function AstVariable(index, min, max) { + AstNode.call(this, 'var'); + this.index = index; + this.min = min; + this.max = max; + } + AstVariable.prototype = Object.create(AstNode.prototype); + AstVariable.prototype.visit = function (visitor) { + visitor.visitVariable(this); + }; + function AstVariableDefinition(variable, arg) { + AstNode.call(this, 'definition'); + this.variable = variable; + this.arg = arg; + } + AstVariableDefinition.prototype = Object.create(AstNode.prototype); + AstVariableDefinition.prototype.visit = function (visitor) { + visitor.visitVariableDefinition(this); + }; + function ExpressionBuilderVisitor() { + this.parts = []; + } + ExpressionBuilderVisitor.prototype = { + visitArgument: function visitArgument(arg) { + this.parts.push('Math.max(', arg.min, ', Math.min(', arg.max, ', src[srcOffset + ', arg.index, ']))'); + }, + visitVariable: function visitVariable(variable) { + this.parts.push('v', variable.index); + }, + visitLiteral: function visitLiteral(literal) { + this.parts.push(literal.number); + }, + visitBinaryOperation: function visitBinaryOperation(operation) { + this.parts.push('('); + operation.arg1.visit(this); + this.parts.push(' ', operation.op, ' '); + operation.arg2.visit(this); + this.parts.push(')'); + }, + visitVariableDefinition: function visitVariableDefinition(definition) { + this.parts.push('var '); + definition.variable.visit(this); + this.parts.push(' = '); + definition.arg.visit(this); + this.parts.push(';'); + }, + visitMin: function visitMin(max) { + this.parts.push('Math.min('); + max.arg.visit(this); + this.parts.push(', ', max.max, ')'); + }, + toString: function toString() { + return this.parts.join(''); + } + }; + function buildAddOperation(num1, num2) { + if (num2.type === 'literal' && num2.number === 0) { + return num1; + } + if (num1.type === 'literal' && num1.number === 0) { + return num2; + } + if (num2.type === 'literal' && num1.type === 'literal') { + return new AstLiteral(num1.number + num2.number); + } + return new AstBinaryOperation('+', num1, num2, num1.min + num2.min, num1.max + num2.max); + } + function buildMulOperation(num1, num2) { + if (num2.type === 'literal') { + if (num2.number === 0) { + return new AstLiteral(0); + } else if (num2.number === 1) { + return num1; + } else if (num1.type === 'literal') { + return new AstLiteral(num1.number * num2.number); + } + } + if (num1.type === 'literal') { + if (num1.number === 0) { + return new AstLiteral(0); + } else if (num1.number === 1) { + return num2; + } + } + var min = Math.min(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + var max = Math.max(num1.min * num2.min, num1.min * num2.max, num1.max * num2.min, num1.max * num2.max); + return new AstBinaryOperation('*', num1, num2, min, max); + } + function buildSubOperation(num1, num2) { + if (num2.type === 'literal') { + if (num2.number === 0) { + return num1; + } else if (num1.type === 'literal') { + return new AstLiteral(num1.number - num2.number); + } + } + if (num2.type === 'binary' && num2.op === '-' && num1.type === 'literal' && num1.number === 1 && num2.arg1.type === 'literal' && num2.arg1.number === 1) { + return num2.arg2; + } + return new AstBinaryOperation('-', num1, num2, num1.min - num2.max, num1.max - num2.min); + } + function buildMinOperation(num1, max) { + if (num1.min >= max) { + return new AstLiteral(max); + } else if (num1.max <= max) { + return num1; + } + return new AstMin(num1, max); + } + function PostScriptCompiler() {} + PostScriptCompiler.prototype = { + compile: function PostScriptCompiler_compile(code, domain, range) { + var stack = []; + var i, ii; + var instructions = []; + var inputSize = domain.length >> 1, + outputSize = range.length >> 1; + var lastRegister = 0; + var n, j; + var num1, num2, ast1, ast2, tmpVar, item; + for (i = 0; i < inputSize; i++) { + stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1])); + } + for (i = 0, ii = code.length; i < ii; i++) { + item = code[i]; + if (typeof item === 'number') { + stack.push(new AstLiteral(item)); + continue; + } + switch (item) { + case 'add': + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildAddOperation(num1, num2)); + break; + case 'cvr': + if (stack.length < 1) { + return null; + } + break; + case 'mul': + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildMulOperation(num1, num2)); + break; + case 'sub': + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + stack.push(buildSubOperation(num1, num2)); + break; + case 'exch': + if (stack.length < 2) { + return null; + } + ast1 = stack.pop(); + ast2 = stack.pop(); + stack.push(ast1, ast2); + break; + case 'pop': + if (stack.length < 1) { + return null; + } + stack.pop(); + break; + case 'index': + if (stack.length < 1) { + return null; + } + num1 = stack.pop(); + if (num1.type !== 'literal') { + return null; + } + n = num1.number; + if (n < 0 || (n | 0) !== n || stack.length < n) { + return null; + } + ast1 = stack[stack.length - n - 1]; + if (ast1.type === 'literal' || ast1.type === 'var') { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - n - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case 'dup': + if (stack.length < 1) { + return null; + } + if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' && code[i + 3] === i + 7 && code[i + 4] === 'jz' && code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) { + num1 = stack.pop(); + stack.push(buildMinOperation(num1, code[i + 1])); + i += 6; + break; + } + ast1 = stack[stack.length - 1]; + if (ast1.type === 'literal' || ast1.type === 'var') { + stack.push(ast1); + break; + } + tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max); + stack[stack.length - 1] = tmpVar; + stack.push(tmpVar); + instructions.push(new AstVariableDefinition(tmpVar, ast1)); + break; + case 'roll': + if (stack.length < 2) { + return null; + } + num2 = stack.pop(); + num1 = stack.pop(); + if (num2.type !== 'literal' || num1.type !== 'literal') { + return null; + } + j = num2.number; + n = num1.number; + if (n <= 0 || (n | 0) !== n || (j | 0) !== j || stack.length < n) { + return null; + } + j = (j % n + n) % n; + if (j === 0) { + break; + } + Array.prototype.push.apply(stack, stack.splice(stack.length - n, n - j)); + break; + default: + return null; + } + } + if (stack.length !== outputSize) { + return null; + } + var result = []; + instructions.forEach(function (instruction) { + var statementBuilder = new ExpressionBuilderVisitor(); + instruction.visit(statementBuilder); + result.push(statementBuilder.toString()); + }); + stack.forEach(function (expr, i) { + var statementBuilder = new ExpressionBuilderVisitor(); + expr.visit(statementBuilder); + var min = range[i * 2], + max = range[i * 2 + 1]; + var out = [statementBuilder.toString()]; + if (min > expr.min) { + out.unshift('Math.max(', min, ', '); + out.push(')'); + } + if (max < expr.max) { + out.unshift('Math.min(', max, ', '); + out.push(')'); + } + out.unshift('dest[destOffset + ', i, '] = '); + out.push(';'); + result.push(out.join('')); + }); + return result.join('\n'); + } + }; + return PostScriptCompiler; +}(); +exports.isPDFFunction = isPDFFunction; +exports.PDFFunction = PDFFunction; +exports.PostScriptEvaluator = PostScriptEvaluator; +exports.PostScriptCompiler = PostScriptCompiler; + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +var getLookupTableFactory = __w_pdfjs_require__(0).getLookupTableFactory; +var getSpecialPUASymbols = getLookupTableFactory(function (t) { + t[63721] = 0x00A9; + t[63193] = 0x00A9; + t[63720] = 0x00AE; + t[63194] = 0x00AE; + t[63722] = 0x2122; + t[63195] = 0x2122; + t[63729] = 0x23A7; + t[63730] = 0x23A8; + t[63731] = 0x23A9; + t[63740] = 0x23AB; + t[63741] = 0x23AC; + t[63742] = 0x23AD; + t[63726] = 0x23A1; + t[63727] = 0x23A2; + t[63728] = 0x23A3; + t[63737] = 0x23A4; + t[63738] = 0x23A5; + t[63739] = 0x23A6; + t[63723] = 0x239B; + t[63724] = 0x239C; + t[63725] = 0x239D; + t[63734] = 0x239E; + t[63735] = 0x239F; + t[63736] = 0x23A0; +}); +function mapSpecialUnicodeValues(code) { + if (code >= 0xFFF0 && code <= 0xFFFF) { + return 0; + } else if (code >= 0xF600 && code <= 0xF8FF) { + return getSpecialPUASymbols()[code] || code; + } + return code; +} +function getUnicodeForGlyph(name, glyphsUnicodeMap) { + var unicode = glyphsUnicodeMap[name]; + if (unicode !== undefined) { + return unicode; + } + if (!name) { + return -1; + } + if (name[0] === 'u') { + var nameLen = name.length, hexStr; + if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') { + hexStr = name.substr(3); + } else if (nameLen >= 5 && nameLen <= 7) { + hexStr = name.substr(1); + } else { + return -1; + } + if (hexStr === hexStr.toUpperCase()) { + unicode = parseInt(hexStr, 16); + if (unicode >= 0) { + return unicode; + } + } + } + return -1; +} +var UnicodeRanges = [ + { + 'begin': 0x0000, + 'end': 0x007F + }, + { + 'begin': 0x0080, + 'end': 0x00FF + }, + { + 'begin': 0x0100, + 'end': 0x017F + }, + { + 'begin': 0x0180, + 'end': 0x024F + }, + { + 'begin': 0x0250, + 'end': 0x02AF + }, + { + 'begin': 0x02B0, + 'end': 0x02FF + }, + { + 'begin': 0x0300, + 'end': 0x036F + }, + { + 'begin': 0x0370, + 'end': 0x03FF + }, + { + 'begin': 0x2C80, + 'end': 0x2CFF + }, + { + 'begin': 0x0400, + 'end': 0x04FF + }, + { + 'begin': 0x0530, + 'end': 0x058F + }, + { + 'begin': 0x0590, + 'end': 0x05FF + }, + { + 'begin': 0xA500, + 'end': 0xA63F + }, + { + 'begin': 0x0600, + 'end': 0x06FF + }, + { + 'begin': 0x07C0, + 'end': 0x07FF + }, + { + 'begin': 0x0900, + 'end': 0x097F + }, + { + 'begin': 0x0980, + 'end': 0x09FF + }, + { + 'begin': 0x0A00, + 'end': 0x0A7F + }, + { + 'begin': 0x0A80, + 'end': 0x0AFF + }, + { + 'begin': 0x0B00, + 'end': 0x0B7F + }, + { + 'begin': 0x0B80, + 'end': 0x0BFF + }, + { + 'begin': 0x0C00, + 'end': 0x0C7F + }, + { + 'begin': 0x0C80, + 'end': 0x0CFF + }, + { + 'begin': 0x0D00, + 'end': 0x0D7F + }, + { + 'begin': 0x0E00, + 'end': 0x0E7F + }, + { + 'begin': 0x0E80, + 'end': 0x0EFF + }, + { + 'begin': 0x10A0, + 'end': 0x10FF + }, + { + 'begin': 0x1B00, + 'end': 0x1B7F + }, + { + 'begin': 0x1100, + 'end': 0x11FF + }, + { + 'begin': 0x1E00, + 'end': 0x1EFF + }, + { + 'begin': 0x1F00, + 'end': 0x1FFF + }, + { + 'begin': 0x2000, + 'end': 0x206F + }, + { + 'begin': 0x2070, + 'end': 0x209F + }, + { + 'begin': 0x20A0, + 'end': 0x20CF + }, + { + 'begin': 0x20D0, + 'end': 0x20FF + }, + { + 'begin': 0x2100, + 'end': 0x214F + }, + { + 'begin': 0x2150, + 'end': 0x218F + }, + { + 'begin': 0x2190, + 'end': 0x21FF + }, + { + 'begin': 0x2200, + 'end': 0x22FF + }, + { + 'begin': 0x2300, + 'end': 0x23FF + }, + { + 'begin': 0x2400, + 'end': 0x243F + }, + { + 'begin': 0x2440, + 'end': 0x245F + }, + { + 'begin': 0x2460, + 'end': 0x24FF + }, + { + 'begin': 0x2500, + 'end': 0x257F + }, + { + 'begin': 0x2580, + 'end': 0x259F + }, + { + 'begin': 0x25A0, + 'end': 0x25FF + }, + { + 'begin': 0x2600, + 'end': 0x26FF + }, + { + 'begin': 0x2700, + 'end': 0x27BF + }, + { + 'begin': 0x3000, + 'end': 0x303F + }, + { + 'begin': 0x3040, + 'end': 0x309F + }, + { + 'begin': 0x30A0, + 'end': 0x30FF + }, + { + 'begin': 0x3100, + 'end': 0x312F + }, + { + 'begin': 0x3130, + 'end': 0x318F + }, + { + 'begin': 0xA840, + 'end': 0xA87F + }, + { + 'begin': 0x3200, + 'end': 0x32FF + }, + { + 'begin': 0x3300, + 'end': 0x33FF + }, + { + 'begin': 0xAC00, + 'end': 0xD7AF + }, + { + 'begin': 0xD800, + 'end': 0xDFFF + }, + { + 'begin': 0x10900, + 'end': 0x1091F + }, + { + 'begin': 0x4E00, + 'end': 0x9FFF + }, + { + 'begin': 0xE000, + 'end': 0xF8FF + }, + { + 'begin': 0x31C0, + 'end': 0x31EF + }, + { + 'begin': 0xFB00, + 'end': 0xFB4F + }, + { + 'begin': 0xFB50, + 'end': 0xFDFF + }, + { + 'begin': 0xFE20, + 'end': 0xFE2F + }, + { + 'begin': 0xFE10, + 'end': 0xFE1F + }, + { + 'begin': 0xFE50, + 'end': 0xFE6F + }, + { + 'begin': 0xFE70, + 'end': 0xFEFF + }, + { + 'begin': 0xFF00, + 'end': 0xFFEF + }, + { + 'begin': 0xFFF0, + 'end': 0xFFFF + }, + { + 'begin': 0x0F00, + 'end': 0x0FFF + }, + { + 'begin': 0x0700, + 'end': 0x074F + }, + { + 'begin': 0x0780, + 'end': 0x07BF + }, + { + 'begin': 0x0D80, + 'end': 0x0DFF + }, + { + 'begin': 0x1000, + 'end': 0x109F + }, + { + 'begin': 0x1200, + 'end': 0x137F + }, + { + 'begin': 0x13A0, + 'end': 0x13FF + }, + { + 'begin': 0x1400, + 'end': 0x167F + }, + { + 'begin': 0x1680, + 'end': 0x169F + }, + { + 'begin': 0x16A0, + 'end': 0x16FF + }, + { + 'begin': 0x1780, + 'end': 0x17FF + }, + { + 'begin': 0x1800, + 'end': 0x18AF + }, + { + 'begin': 0x2800, + 'end': 0x28FF + }, + { + 'begin': 0xA000, + 'end': 0xA48F + }, + { + 'begin': 0x1700, + 'end': 0x171F + }, + { + 'begin': 0x10300, + 'end': 0x1032F + }, + { + 'begin': 0x10330, + 'end': 0x1034F + }, + { + 'begin': 0x10400, + 'end': 0x1044F + }, + { + 'begin': 0x1D000, + 'end': 0x1D0FF + }, + { + 'begin': 0x1D400, + 'end': 0x1D7FF + }, + { + 'begin': 0xFF000, + 'end': 0xFFFFD + }, + { + 'begin': 0xFE00, + 'end': 0xFE0F + }, + { + 'begin': 0xE0000, + 'end': 0xE007F + }, + { + 'begin': 0x1900, + 'end': 0x194F + }, + { + 'begin': 0x1950, + 'end': 0x197F + }, + { + 'begin': 0x1980, + 'end': 0x19DF + }, + { + 'begin': 0x1A00, + 'end': 0x1A1F + }, + { + 'begin': 0x2C00, + 'end': 0x2C5F + }, + { + 'begin': 0x2D30, + 'end': 0x2D7F + }, + { + 'begin': 0x4DC0, + 'end': 0x4DFF + }, + { + 'begin': 0xA800, + 'end': 0xA82F + }, + { + 'begin': 0x10000, + 'end': 0x1007F + }, + { + 'begin': 0x10140, + 'end': 0x1018F + }, + { + 'begin': 0x10380, + 'end': 0x1039F + }, + { + 'begin': 0x103A0, + 'end': 0x103DF + }, + { + 'begin': 0x10450, + 'end': 0x1047F + }, + { + 'begin': 0x10480, + 'end': 0x104AF + }, + { + 'begin': 0x10800, + 'end': 0x1083F + }, + { + 'begin': 0x10A00, + 'end': 0x10A5F + }, + { + 'begin': 0x1D300, + 'end': 0x1D35F + }, + { + 'begin': 0x12000, + 'end': 0x123FF + }, + { + 'begin': 0x1D360, + 'end': 0x1D37F + }, + { + 'begin': 0x1B80, + 'end': 0x1BBF + }, + { + 'begin': 0x1C00, + 'end': 0x1C4F + }, + { + 'begin': 0x1C50, + 'end': 0x1C7F + }, + { + 'begin': 0xA880, + 'end': 0xA8DF + }, + { + 'begin': 0xA900, + 'end': 0xA92F + }, + { + 'begin': 0xA930, + 'end': 0xA95F + }, + { + 'begin': 0xAA00, + 'end': 0xAA5F + }, + { + 'begin': 0x10190, + 'end': 0x101CF + }, + { + 'begin': 0x101D0, + 'end': 0x101FF + }, + { + 'begin': 0x102A0, + 'end': 0x102DF + }, + { + 'begin': 0x1F030, + 'end': 0x1F09F + } +]; +function getUnicodeRangeFor(value) { + for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) { + var range = UnicodeRanges[i]; + if (value >= range.begin && value < range.end) { + return i; + } + } + return -1; +} +function isRTLRangeFor(value) { + var range = UnicodeRanges[13]; + if (value >= range.begin && value < range.end) { + return true; + } + range = UnicodeRanges[11]; + if (value >= range.begin && value < range.end) { + return true; + } + return false; +} +var getNormalizedUnicodes = getLookupTableFactory(function (t) { + t['\u00A8'] = '\u0020\u0308'; + t['\u00AF'] = '\u0020\u0304'; + t['\u00B4'] = '\u0020\u0301'; + t['\u00B5'] = '\u03BC'; + t['\u00B8'] = '\u0020\u0327'; + t['\u0132'] = '\u0049\u004A'; + t['\u0133'] = '\u0069\u006A'; + t['\u013F'] = '\u004C\u00B7'; + t['\u0140'] = '\u006C\u00B7'; + t['\u0149'] = '\u02BC\u006E'; + t['\u017F'] = '\u0073'; + t['\u01C4'] = '\u0044\u017D'; + t['\u01C5'] = '\u0044\u017E'; + t['\u01C6'] = '\u0064\u017E'; + t['\u01C7'] = '\u004C\u004A'; + t['\u01C8'] = '\u004C\u006A'; + t['\u01C9'] = '\u006C\u006A'; + t['\u01CA'] = '\u004E\u004A'; + t['\u01CB'] = '\u004E\u006A'; + t['\u01CC'] = '\u006E\u006A'; + t['\u01F1'] = '\u0044\u005A'; + t['\u01F2'] = '\u0044\u007A'; + t['\u01F3'] = '\u0064\u007A'; + t['\u02D8'] = '\u0020\u0306'; + t['\u02D9'] = '\u0020\u0307'; + t['\u02DA'] = '\u0020\u030A'; + t['\u02DB'] = '\u0020\u0328'; + t['\u02DC'] = '\u0020\u0303'; + t['\u02DD'] = '\u0020\u030B'; + t['\u037A'] = '\u0020\u0345'; + t['\u0384'] = '\u0020\u0301'; + t['\u03D0'] = '\u03B2'; + t['\u03D1'] = '\u03B8'; + t['\u03D2'] = '\u03A5'; + t['\u03D5'] = '\u03C6'; + t['\u03D6'] = '\u03C0'; + t['\u03F0'] = '\u03BA'; + t['\u03F1'] = '\u03C1'; + t['\u03F2'] = '\u03C2'; + t['\u03F4'] = '\u0398'; + t['\u03F5'] = '\u03B5'; + t['\u03F9'] = '\u03A3'; + t['\u0587'] = '\u0565\u0582'; + t['\u0675'] = '\u0627\u0674'; + t['\u0676'] = '\u0648\u0674'; + t['\u0677'] = '\u06C7\u0674'; + t['\u0678'] = '\u064A\u0674'; + t['\u0E33'] = '\u0E4D\u0E32'; + t['\u0EB3'] = '\u0ECD\u0EB2'; + t['\u0EDC'] = '\u0EAB\u0E99'; + t['\u0EDD'] = '\u0EAB\u0EA1'; + t['\u0F77'] = '\u0FB2\u0F81'; + t['\u0F79'] = '\u0FB3\u0F81'; + t['\u1E9A'] = '\u0061\u02BE'; + t['\u1FBD'] = '\u0020\u0313'; + t['\u1FBF'] = '\u0020\u0313'; + t['\u1FC0'] = '\u0020\u0342'; + t['\u1FFE'] = '\u0020\u0314'; + t['\u2002'] = '\u0020'; + t['\u2003'] = '\u0020'; + t['\u2004'] = '\u0020'; + t['\u2005'] = '\u0020'; + t['\u2006'] = '\u0020'; + t['\u2008'] = '\u0020'; + t['\u2009'] = '\u0020'; + t['\u200A'] = '\u0020'; + t['\u2017'] = '\u0020\u0333'; + t['\u2024'] = '\u002E'; + t['\u2025'] = '\u002E\u002E'; + t['\u2026'] = '\u002E\u002E\u002E'; + t['\u2033'] = '\u2032\u2032'; + t['\u2034'] = '\u2032\u2032\u2032'; + t['\u2036'] = '\u2035\u2035'; + t['\u2037'] = '\u2035\u2035\u2035'; + t['\u203C'] = '\u0021\u0021'; + t['\u203E'] = '\u0020\u0305'; + t['\u2047'] = '\u003F\u003F'; + t['\u2048'] = '\u003F\u0021'; + t['\u2049'] = '\u0021\u003F'; + t['\u2057'] = '\u2032\u2032\u2032\u2032'; + t['\u205F'] = '\u0020'; + t['\u20A8'] = '\u0052\u0073'; + t['\u2100'] = '\u0061\u002F\u0063'; + t['\u2101'] = '\u0061\u002F\u0073'; + t['\u2103'] = '\u00B0\u0043'; + t['\u2105'] = '\u0063\u002F\u006F'; + t['\u2106'] = '\u0063\u002F\u0075'; + t['\u2107'] = '\u0190'; + t['\u2109'] = '\u00B0\u0046'; + t['\u2116'] = '\u004E\u006F'; + t['\u2121'] = '\u0054\u0045\u004C'; + t['\u2135'] = '\u05D0'; + t['\u2136'] = '\u05D1'; + t['\u2137'] = '\u05D2'; + t['\u2138'] = '\u05D3'; + t['\u213B'] = '\u0046\u0041\u0058'; + t['\u2160'] = '\u0049'; + t['\u2161'] = '\u0049\u0049'; + t['\u2162'] = '\u0049\u0049\u0049'; + t['\u2163'] = '\u0049\u0056'; + t['\u2164'] = '\u0056'; + t['\u2165'] = '\u0056\u0049'; + t['\u2166'] = '\u0056\u0049\u0049'; + t['\u2167'] = '\u0056\u0049\u0049\u0049'; + t['\u2168'] = '\u0049\u0058'; + t['\u2169'] = '\u0058'; + t['\u216A'] = '\u0058\u0049'; + t['\u216B'] = '\u0058\u0049\u0049'; + t['\u216C'] = '\u004C'; + t['\u216D'] = '\u0043'; + t['\u216E'] = '\u0044'; + t['\u216F'] = '\u004D'; + t['\u2170'] = '\u0069'; + t['\u2171'] = '\u0069\u0069'; + t['\u2172'] = '\u0069\u0069\u0069'; + t['\u2173'] = '\u0069\u0076'; + t['\u2174'] = '\u0076'; + t['\u2175'] = '\u0076\u0069'; + t['\u2176'] = '\u0076\u0069\u0069'; + t['\u2177'] = '\u0076\u0069\u0069\u0069'; + t['\u2178'] = '\u0069\u0078'; + t['\u2179'] = '\u0078'; + t['\u217A'] = '\u0078\u0069'; + t['\u217B'] = '\u0078\u0069\u0069'; + t['\u217C'] = '\u006C'; + t['\u217D'] = '\u0063'; + t['\u217E'] = '\u0064'; + t['\u217F'] = '\u006D'; + t['\u222C'] = '\u222B\u222B'; + t['\u222D'] = '\u222B\u222B\u222B'; + t['\u222F'] = '\u222E\u222E'; + t['\u2230'] = '\u222E\u222E\u222E'; + t['\u2474'] = '\u0028\u0031\u0029'; + t['\u2475'] = '\u0028\u0032\u0029'; + t['\u2476'] = '\u0028\u0033\u0029'; + t['\u2477'] = '\u0028\u0034\u0029'; + t['\u2478'] = '\u0028\u0035\u0029'; + t['\u2479'] = '\u0028\u0036\u0029'; + t['\u247A'] = '\u0028\u0037\u0029'; + t['\u247B'] = '\u0028\u0038\u0029'; + t['\u247C'] = '\u0028\u0039\u0029'; + t['\u247D'] = '\u0028\u0031\u0030\u0029'; + t['\u247E'] = '\u0028\u0031\u0031\u0029'; + t['\u247F'] = '\u0028\u0031\u0032\u0029'; + t['\u2480'] = '\u0028\u0031\u0033\u0029'; + t['\u2481'] = '\u0028\u0031\u0034\u0029'; + t['\u2482'] = '\u0028\u0031\u0035\u0029'; + t['\u2483'] = '\u0028\u0031\u0036\u0029'; + t['\u2484'] = '\u0028\u0031\u0037\u0029'; + t['\u2485'] = '\u0028\u0031\u0038\u0029'; + t['\u2486'] = '\u0028\u0031\u0039\u0029'; + t['\u2487'] = '\u0028\u0032\u0030\u0029'; + t['\u2488'] = '\u0031\u002E'; + t['\u2489'] = '\u0032\u002E'; + t['\u248A'] = '\u0033\u002E'; + t['\u248B'] = '\u0034\u002E'; + t['\u248C'] = '\u0035\u002E'; + t['\u248D'] = '\u0036\u002E'; + t['\u248E'] = '\u0037\u002E'; + t['\u248F'] = '\u0038\u002E'; + t['\u2490'] = '\u0039\u002E'; + t['\u2491'] = '\u0031\u0030\u002E'; + t['\u2492'] = '\u0031\u0031\u002E'; + t['\u2493'] = '\u0031\u0032\u002E'; + t['\u2494'] = '\u0031\u0033\u002E'; + t['\u2495'] = '\u0031\u0034\u002E'; + t['\u2496'] = '\u0031\u0035\u002E'; + t['\u2497'] = '\u0031\u0036\u002E'; + t['\u2498'] = '\u0031\u0037\u002E'; + t['\u2499'] = '\u0031\u0038\u002E'; + t['\u249A'] = '\u0031\u0039\u002E'; + t['\u249B'] = '\u0032\u0030\u002E'; + t['\u249C'] = '\u0028\u0061\u0029'; + t['\u249D'] = '\u0028\u0062\u0029'; + t['\u249E'] = '\u0028\u0063\u0029'; + t['\u249F'] = '\u0028\u0064\u0029'; + t['\u24A0'] = '\u0028\u0065\u0029'; + t['\u24A1'] = '\u0028\u0066\u0029'; + t['\u24A2'] = '\u0028\u0067\u0029'; + t['\u24A3'] = '\u0028\u0068\u0029'; + t['\u24A4'] = '\u0028\u0069\u0029'; + t['\u24A5'] = '\u0028\u006A\u0029'; + t['\u24A6'] = '\u0028\u006B\u0029'; + t['\u24A7'] = '\u0028\u006C\u0029'; + t['\u24A8'] = '\u0028\u006D\u0029'; + t['\u24A9'] = '\u0028\u006E\u0029'; + t['\u24AA'] = '\u0028\u006F\u0029'; + t['\u24AB'] = '\u0028\u0070\u0029'; + t['\u24AC'] = '\u0028\u0071\u0029'; + t['\u24AD'] = '\u0028\u0072\u0029'; + t['\u24AE'] = '\u0028\u0073\u0029'; + t['\u24AF'] = '\u0028\u0074\u0029'; + t['\u24B0'] = '\u0028\u0075\u0029'; + t['\u24B1'] = '\u0028\u0076\u0029'; + t['\u24B2'] = '\u0028\u0077\u0029'; + t['\u24B3'] = '\u0028\u0078\u0029'; + t['\u24B4'] = '\u0028\u0079\u0029'; + t['\u24B5'] = '\u0028\u007A\u0029'; + t['\u2A0C'] = '\u222B\u222B\u222B\u222B'; + t['\u2A74'] = '\u003A\u003A\u003D'; + t['\u2A75'] = '\u003D\u003D'; + t['\u2A76'] = '\u003D\u003D\u003D'; + t['\u2E9F'] = '\u6BCD'; + t['\u2EF3'] = '\u9F9F'; + t['\u2F00'] = '\u4E00'; + t['\u2F01'] = '\u4E28'; + t['\u2F02'] = '\u4E36'; + t['\u2F03'] = '\u4E3F'; + t['\u2F04'] = '\u4E59'; + t['\u2F05'] = '\u4E85'; + t['\u2F06'] = '\u4E8C'; + t['\u2F07'] = '\u4EA0'; + t['\u2F08'] = '\u4EBA'; + t['\u2F09'] = '\u513F'; + t['\u2F0A'] = '\u5165'; + t['\u2F0B'] = '\u516B'; + t['\u2F0C'] = '\u5182'; + t['\u2F0D'] = '\u5196'; + t['\u2F0E'] = '\u51AB'; + t['\u2F0F'] = '\u51E0'; + t['\u2F10'] = '\u51F5'; + t['\u2F11'] = '\u5200'; + t['\u2F12'] = '\u529B'; + t['\u2F13'] = '\u52F9'; + t['\u2F14'] = '\u5315'; + t['\u2F15'] = '\u531A'; + t['\u2F16'] = '\u5338'; + t['\u2F17'] = '\u5341'; + t['\u2F18'] = '\u535C'; + t['\u2F19'] = '\u5369'; + t['\u2F1A'] = '\u5382'; + t['\u2F1B'] = '\u53B6'; + t['\u2F1C'] = '\u53C8'; + t['\u2F1D'] = '\u53E3'; + t['\u2F1E'] = '\u56D7'; + t['\u2F1F'] = '\u571F'; + t['\u2F20'] = '\u58EB'; + t['\u2F21'] = '\u5902'; + t['\u2F22'] = '\u590A'; + t['\u2F23'] = '\u5915'; + t['\u2F24'] = '\u5927'; + t['\u2F25'] = '\u5973'; + t['\u2F26'] = '\u5B50'; + t['\u2F27'] = '\u5B80'; + t['\u2F28'] = '\u5BF8'; + t['\u2F29'] = '\u5C0F'; + t['\u2F2A'] = '\u5C22'; + t['\u2F2B'] = '\u5C38'; + t['\u2F2C'] = '\u5C6E'; + t['\u2F2D'] = '\u5C71'; + t['\u2F2E'] = '\u5DDB'; + t['\u2F2F'] = '\u5DE5'; + t['\u2F30'] = '\u5DF1'; + t['\u2F31'] = '\u5DFE'; + t['\u2F32'] = '\u5E72'; + t['\u2F33'] = '\u5E7A'; + t['\u2F34'] = '\u5E7F'; + t['\u2F35'] = '\u5EF4'; + t['\u2F36'] = '\u5EFE'; + t['\u2F37'] = '\u5F0B'; + t['\u2F38'] = '\u5F13'; + t['\u2F39'] = '\u5F50'; + t['\u2F3A'] = '\u5F61'; + t['\u2F3B'] = '\u5F73'; + t['\u2F3C'] = '\u5FC3'; + t['\u2F3D'] = '\u6208'; + t['\u2F3E'] = '\u6236'; + t['\u2F3F'] = '\u624B'; + t['\u2F40'] = '\u652F'; + t['\u2F41'] = '\u6534'; + t['\u2F42'] = '\u6587'; + t['\u2F43'] = '\u6597'; + t['\u2F44'] = '\u65A4'; + t['\u2F45'] = '\u65B9'; + t['\u2F46'] = '\u65E0'; + t['\u2F47'] = '\u65E5'; + t['\u2F48'] = '\u66F0'; + t['\u2F49'] = '\u6708'; + t['\u2F4A'] = '\u6728'; + t['\u2F4B'] = '\u6B20'; + t['\u2F4C'] = '\u6B62'; + t['\u2F4D'] = '\u6B79'; + t['\u2F4E'] = '\u6BB3'; + t['\u2F4F'] = '\u6BCB'; + t['\u2F50'] = '\u6BD4'; + t['\u2F51'] = '\u6BDB'; + t['\u2F52'] = '\u6C0F'; + t['\u2F53'] = '\u6C14'; + t['\u2F54'] = '\u6C34'; + t['\u2F55'] = '\u706B'; + t['\u2F56'] = '\u722A'; + t['\u2F57'] = '\u7236'; + t['\u2F58'] = '\u723B'; + t['\u2F59'] = '\u723F'; + t['\u2F5A'] = '\u7247'; + t['\u2F5B'] = '\u7259'; + t['\u2F5C'] = '\u725B'; + t['\u2F5D'] = '\u72AC'; + t['\u2F5E'] = '\u7384'; + t['\u2F5F'] = '\u7389'; + t['\u2F60'] = '\u74DC'; + t['\u2F61'] = '\u74E6'; + t['\u2F62'] = '\u7518'; + t['\u2F63'] = '\u751F'; + t['\u2F64'] = '\u7528'; + t['\u2F65'] = '\u7530'; + t['\u2F66'] = '\u758B'; + t['\u2F67'] = '\u7592'; + t['\u2F68'] = '\u7676'; + t['\u2F69'] = '\u767D'; + t['\u2F6A'] = '\u76AE'; + t['\u2F6B'] = '\u76BF'; + t['\u2F6C'] = '\u76EE'; + t['\u2F6D'] = '\u77DB'; + t['\u2F6E'] = '\u77E2'; + t['\u2F6F'] = '\u77F3'; + t['\u2F70'] = '\u793A'; + t['\u2F71'] = '\u79B8'; + t['\u2F72'] = '\u79BE'; + t['\u2F73'] = '\u7A74'; + t['\u2F74'] = '\u7ACB'; + t['\u2F75'] = '\u7AF9'; + t['\u2F76'] = '\u7C73'; + t['\u2F77'] = '\u7CF8'; + t['\u2F78'] = '\u7F36'; + t['\u2F79'] = '\u7F51'; + t['\u2F7A'] = '\u7F8A'; + t['\u2F7B'] = '\u7FBD'; + t['\u2F7C'] = '\u8001'; + t['\u2F7D'] = '\u800C'; + t['\u2F7E'] = '\u8012'; + t['\u2F7F'] = '\u8033'; + t['\u2F80'] = '\u807F'; + t['\u2F81'] = '\u8089'; + t['\u2F82'] = '\u81E3'; + t['\u2F83'] = '\u81EA'; + t['\u2F84'] = '\u81F3'; + t['\u2F85'] = '\u81FC'; + t['\u2F86'] = '\u820C'; + t['\u2F87'] = '\u821B'; + t['\u2F88'] = '\u821F'; + t['\u2F89'] = '\u826E'; + t['\u2F8A'] = '\u8272'; + t['\u2F8B'] = '\u8278'; + t['\u2F8C'] = '\u864D'; + t['\u2F8D'] = '\u866B'; + t['\u2F8E'] = '\u8840'; + t['\u2F8F'] = '\u884C'; + t['\u2F90'] = '\u8863'; + t['\u2F91'] = '\u897E'; + t['\u2F92'] = '\u898B'; + t['\u2F93'] = '\u89D2'; + t['\u2F94'] = '\u8A00'; + t['\u2F95'] = '\u8C37'; + t['\u2F96'] = '\u8C46'; + t['\u2F97'] = '\u8C55'; + t['\u2F98'] = '\u8C78'; + t['\u2F99'] = '\u8C9D'; + t['\u2F9A'] = '\u8D64'; + t['\u2F9B'] = '\u8D70'; + t['\u2F9C'] = '\u8DB3'; + t['\u2F9D'] = '\u8EAB'; + t['\u2F9E'] = '\u8ECA'; + t['\u2F9F'] = '\u8F9B'; + t['\u2FA0'] = '\u8FB0'; + t['\u2FA1'] = '\u8FB5'; + t['\u2FA2'] = '\u9091'; + t['\u2FA3'] = '\u9149'; + t['\u2FA4'] = '\u91C6'; + t['\u2FA5'] = '\u91CC'; + t['\u2FA6'] = '\u91D1'; + t['\u2FA7'] = '\u9577'; + t['\u2FA8'] = '\u9580'; + t['\u2FA9'] = '\u961C'; + t['\u2FAA'] = '\u96B6'; + t['\u2FAB'] = '\u96B9'; + t['\u2FAC'] = '\u96E8'; + t['\u2FAD'] = '\u9751'; + t['\u2FAE'] = '\u975E'; + t['\u2FAF'] = '\u9762'; + t['\u2FB0'] = '\u9769'; + t['\u2FB1'] = '\u97CB'; + t['\u2FB2'] = '\u97ED'; + t['\u2FB3'] = '\u97F3'; + t['\u2FB4'] = '\u9801'; + t['\u2FB5'] = '\u98A8'; + t['\u2FB6'] = '\u98DB'; + t['\u2FB7'] = '\u98DF'; + t['\u2FB8'] = '\u9996'; + t['\u2FB9'] = '\u9999'; + t['\u2FBA'] = '\u99AC'; + t['\u2FBB'] = '\u9AA8'; + t['\u2FBC'] = '\u9AD8'; + t['\u2FBD'] = '\u9ADF'; + t['\u2FBE'] = '\u9B25'; + t['\u2FBF'] = '\u9B2F'; + t['\u2FC0'] = '\u9B32'; + t['\u2FC1'] = '\u9B3C'; + t['\u2FC2'] = '\u9B5A'; + t['\u2FC3'] = '\u9CE5'; + t['\u2FC4'] = '\u9E75'; + t['\u2FC5'] = '\u9E7F'; + t['\u2FC6'] = '\u9EA5'; + t['\u2FC7'] = '\u9EBB'; + t['\u2FC8'] = '\u9EC3'; + t['\u2FC9'] = '\u9ECD'; + t['\u2FCA'] = '\u9ED1'; + t['\u2FCB'] = '\u9EF9'; + t['\u2FCC'] = '\u9EFD'; + t['\u2FCD'] = '\u9F0E'; + t['\u2FCE'] = '\u9F13'; + t['\u2FCF'] = '\u9F20'; + t['\u2FD0'] = '\u9F3B'; + t['\u2FD1'] = '\u9F4A'; + t['\u2FD2'] = '\u9F52'; + t['\u2FD3'] = '\u9F8D'; + t['\u2FD4'] = '\u9F9C'; + t['\u2FD5'] = '\u9FA0'; + t['\u3036'] = '\u3012'; + t['\u3038'] = '\u5341'; + t['\u3039'] = '\u5344'; + t['\u303A'] = '\u5345'; + t['\u309B'] = '\u0020\u3099'; + t['\u309C'] = '\u0020\u309A'; + t['\u3131'] = '\u1100'; + t['\u3132'] = '\u1101'; + t['\u3133'] = '\u11AA'; + t['\u3134'] = '\u1102'; + t['\u3135'] = '\u11AC'; + t['\u3136'] = '\u11AD'; + t['\u3137'] = '\u1103'; + t['\u3138'] = '\u1104'; + t['\u3139'] = '\u1105'; + t['\u313A'] = '\u11B0'; + t['\u313B'] = '\u11B1'; + t['\u313C'] = '\u11B2'; + t['\u313D'] = '\u11B3'; + t['\u313E'] = '\u11B4'; + t['\u313F'] = '\u11B5'; + t['\u3140'] = '\u111A'; + t['\u3141'] = '\u1106'; + t['\u3142'] = '\u1107'; + t['\u3143'] = '\u1108'; + t['\u3144'] = '\u1121'; + t['\u3145'] = '\u1109'; + t['\u3146'] = '\u110A'; + t['\u3147'] = '\u110B'; + t['\u3148'] = '\u110C'; + t['\u3149'] = '\u110D'; + t['\u314A'] = '\u110E'; + t['\u314B'] = '\u110F'; + t['\u314C'] = '\u1110'; + t['\u314D'] = '\u1111'; + t['\u314E'] = '\u1112'; + t['\u314F'] = '\u1161'; + t['\u3150'] = '\u1162'; + t['\u3151'] = '\u1163'; + t['\u3152'] = '\u1164'; + t['\u3153'] = '\u1165'; + t['\u3154'] = '\u1166'; + t['\u3155'] = '\u1167'; + t['\u3156'] = '\u1168'; + t['\u3157'] = '\u1169'; + t['\u3158'] = '\u116A'; + t['\u3159'] = '\u116B'; + t['\u315A'] = '\u116C'; + t['\u315B'] = '\u116D'; + t['\u315C'] = '\u116E'; + t['\u315D'] = '\u116F'; + t['\u315E'] = '\u1170'; + t['\u315F'] = '\u1171'; + t['\u3160'] = '\u1172'; + t['\u3161'] = '\u1173'; + t['\u3162'] = '\u1174'; + t['\u3163'] = '\u1175'; + t['\u3164'] = '\u1160'; + t['\u3165'] = '\u1114'; + t['\u3166'] = '\u1115'; + t['\u3167'] = '\u11C7'; + t['\u3168'] = '\u11C8'; + t['\u3169'] = '\u11CC'; + t['\u316A'] = '\u11CE'; + t['\u316B'] = '\u11D3'; + t['\u316C'] = '\u11D7'; + t['\u316D'] = '\u11D9'; + t['\u316E'] = '\u111C'; + t['\u316F'] = '\u11DD'; + t['\u3170'] = '\u11DF'; + t['\u3171'] = '\u111D'; + t['\u3172'] = '\u111E'; + t['\u3173'] = '\u1120'; + t['\u3174'] = '\u1122'; + t['\u3175'] = '\u1123'; + t['\u3176'] = '\u1127'; + t['\u3177'] = '\u1129'; + t['\u3178'] = '\u112B'; + t['\u3179'] = '\u112C'; + t['\u317A'] = '\u112D'; + t['\u317B'] = '\u112E'; + t['\u317C'] = '\u112F'; + t['\u317D'] = '\u1132'; + t['\u317E'] = '\u1136'; + t['\u317F'] = '\u1140'; + t['\u3180'] = '\u1147'; + t['\u3181'] = '\u114C'; + t['\u3182'] = '\u11F1'; + t['\u3183'] = '\u11F2'; + t['\u3184'] = '\u1157'; + t['\u3185'] = '\u1158'; + t['\u3186'] = '\u1159'; + t['\u3187'] = '\u1184'; + t['\u3188'] = '\u1185'; + t['\u3189'] = '\u1188'; + t['\u318A'] = '\u1191'; + t['\u318B'] = '\u1192'; + t['\u318C'] = '\u1194'; + t['\u318D'] = '\u119E'; + t['\u318E'] = '\u11A1'; + t['\u3200'] = '\u0028\u1100\u0029'; + t['\u3201'] = '\u0028\u1102\u0029'; + t['\u3202'] = '\u0028\u1103\u0029'; + t['\u3203'] = '\u0028\u1105\u0029'; + t['\u3204'] = '\u0028\u1106\u0029'; + t['\u3205'] = '\u0028\u1107\u0029'; + t['\u3206'] = '\u0028\u1109\u0029'; + t['\u3207'] = '\u0028\u110B\u0029'; + t['\u3208'] = '\u0028\u110C\u0029'; + t['\u3209'] = '\u0028\u110E\u0029'; + t['\u320A'] = '\u0028\u110F\u0029'; + t['\u320B'] = '\u0028\u1110\u0029'; + t['\u320C'] = '\u0028\u1111\u0029'; + t['\u320D'] = '\u0028\u1112\u0029'; + t['\u320E'] = '\u0028\u1100\u1161\u0029'; + t['\u320F'] = '\u0028\u1102\u1161\u0029'; + t['\u3210'] = '\u0028\u1103\u1161\u0029'; + t['\u3211'] = '\u0028\u1105\u1161\u0029'; + t['\u3212'] = '\u0028\u1106\u1161\u0029'; + t['\u3213'] = '\u0028\u1107\u1161\u0029'; + t['\u3214'] = '\u0028\u1109\u1161\u0029'; + t['\u3215'] = '\u0028\u110B\u1161\u0029'; + t['\u3216'] = '\u0028\u110C\u1161\u0029'; + t['\u3217'] = '\u0028\u110E\u1161\u0029'; + t['\u3218'] = '\u0028\u110F\u1161\u0029'; + t['\u3219'] = '\u0028\u1110\u1161\u0029'; + t['\u321A'] = '\u0028\u1111\u1161\u0029'; + t['\u321B'] = '\u0028\u1112\u1161\u0029'; + t['\u321C'] = '\u0028\u110C\u116E\u0029'; + t['\u321D'] = '\u0028\u110B\u1169\u110C\u1165\u11AB\u0029'; + t['\u321E'] = '\u0028\u110B\u1169\u1112\u116E\u0029'; + t['\u3220'] = '\u0028\u4E00\u0029'; + t['\u3221'] = '\u0028\u4E8C\u0029'; + t['\u3222'] = '\u0028\u4E09\u0029'; + t['\u3223'] = '\u0028\u56DB\u0029'; + t['\u3224'] = '\u0028\u4E94\u0029'; + t['\u3225'] = '\u0028\u516D\u0029'; + t['\u3226'] = '\u0028\u4E03\u0029'; + t['\u3227'] = '\u0028\u516B\u0029'; + t['\u3228'] = '\u0028\u4E5D\u0029'; + t['\u3229'] = '\u0028\u5341\u0029'; + t['\u322A'] = '\u0028\u6708\u0029'; + t['\u322B'] = '\u0028\u706B\u0029'; + t['\u322C'] = '\u0028\u6C34\u0029'; + t['\u322D'] = '\u0028\u6728\u0029'; + t['\u322E'] = '\u0028\u91D1\u0029'; + t['\u322F'] = '\u0028\u571F\u0029'; + t['\u3230'] = '\u0028\u65E5\u0029'; + t['\u3231'] = '\u0028\u682A\u0029'; + t['\u3232'] = '\u0028\u6709\u0029'; + t['\u3233'] = '\u0028\u793E\u0029'; + t['\u3234'] = '\u0028\u540D\u0029'; + t['\u3235'] = '\u0028\u7279\u0029'; + t['\u3236'] = '\u0028\u8CA1\u0029'; + t['\u3237'] = '\u0028\u795D\u0029'; + t['\u3238'] = '\u0028\u52B4\u0029'; + t['\u3239'] = '\u0028\u4EE3\u0029'; + t['\u323A'] = '\u0028\u547C\u0029'; + t['\u323B'] = '\u0028\u5B66\u0029'; + t['\u323C'] = '\u0028\u76E3\u0029'; + t['\u323D'] = '\u0028\u4F01\u0029'; + t['\u323E'] = '\u0028\u8CC7\u0029'; + t['\u323F'] = '\u0028\u5354\u0029'; + t['\u3240'] = '\u0028\u796D\u0029'; + t['\u3241'] = '\u0028\u4F11\u0029'; + t['\u3242'] = '\u0028\u81EA\u0029'; + t['\u3243'] = '\u0028\u81F3\u0029'; + t['\u32C0'] = '\u0031\u6708'; + t['\u32C1'] = '\u0032\u6708'; + t['\u32C2'] = '\u0033\u6708'; + t['\u32C3'] = '\u0034\u6708'; + t['\u32C4'] = '\u0035\u6708'; + t['\u32C5'] = '\u0036\u6708'; + t['\u32C6'] = '\u0037\u6708'; + t['\u32C7'] = '\u0038\u6708'; + t['\u32C8'] = '\u0039\u6708'; + t['\u32C9'] = '\u0031\u0030\u6708'; + t['\u32CA'] = '\u0031\u0031\u6708'; + t['\u32CB'] = '\u0031\u0032\u6708'; + t['\u3358'] = '\u0030\u70B9'; + t['\u3359'] = '\u0031\u70B9'; + t['\u335A'] = '\u0032\u70B9'; + t['\u335B'] = '\u0033\u70B9'; + t['\u335C'] = '\u0034\u70B9'; + t['\u335D'] = '\u0035\u70B9'; + t['\u335E'] = '\u0036\u70B9'; + t['\u335F'] = '\u0037\u70B9'; + t['\u3360'] = '\u0038\u70B9'; + t['\u3361'] = '\u0039\u70B9'; + t['\u3362'] = '\u0031\u0030\u70B9'; + t['\u3363'] = '\u0031\u0031\u70B9'; + t['\u3364'] = '\u0031\u0032\u70B9'; + t['\u3365'] = '\u0031\u0033\u70B9'; + t['\u3366'] = '\u0031\u0034\u70B9'; + t['\u3367'] = '\u0031\u0035\u70B9'; + t['\u3368'] = '\u0031\u0036\u70B9'; + t['\u3369'] = '\u0031\u0037\u70B9'; + t['\u336A'] = '\u0031\u0038\u70B9'; + t['\u336B'] = '\u0031\u0039\u70B9'; + t['\u336C'] = '\u0032\u0030\u70B9'; + t['\u336D'] = '\u0032\u0031\u70B9'; + t['\u336E'] = '\u0032\u0032\u70B9'; + t['\u336F'] = '\u0032\u0033\u70B9'; + t['\u3370'] = '\u0032\u0034\u70B9'; + t['\u33E0'] = '\u0031\u65E5'; + t['\u33E1'] = '\u0032\u65E5'; + t['\u33E2'] = '\u0033\u65E5'; + t['\u33E3'] = '\u0034\u65E5'; + t['\u33E4'] = '\u0035\u65E5'; + t['\u33E5'] = '\u0036\u65E5'; + t['\u33E6'] = '\u0037\u65E5'; + t['\u33E7'] = '\u0038\u65E5'; + t['\u33E8'] = '\u0039\u65E5'; + t['\u33E9'] = '\u0031\u0030\u65E5'; + t['\u33EA'] = '\u0031\u0031\u65E5'; + t['\u33EB'] = '\u0031\u0032\u65E5'; + t['\u33EC'] = '\u0031\u0033\u65E5'; + t['\u33ED'] = '\u0031\u0034\u65E5'; + t['\u33EE'] = '\u0031\u0035\u65E5'; + t['\u33EF'] = '\u0031\u0036\u65E5'; + t['\u33F0'] = '\u0031\u0037\u65E5'; + t['\u33F1'] = '\u0031\u0038\u65E5'; + t['\u33F2'] = '\u0031\u0039\u65E5'; + t['\u33F3'] = '\u0032\u0030\u65E5'; + t['\u33F4'] = '\u0032\u0031\u65E5'; + t['\u33F5'] = '\u0032\u0032\u65E5'; + t['\u33F6'] = '\u0032\u0033\u65E5'; + t['\u33F7'] = '\u0032\u0034\u65E5'; + t['\u33F8'] = '\u0032\u0035\u65E5'; + t['\u33F9'] = '\u0032\u0036\u65E5'; + t['\u33FA'] = '\u0032\u0037\u65E5'; + t['\u33FB'] = '\u0032\u0038\u65E5'; + t['\u33FC'] = '\u0032\u0039\u65E5'; + t['\u33FD'] = '\u0033\u0030\u65E5'; + t['\u33FE'] = '\u0033\u0031\u65E5'; + t['\uFB00'] = '\u0066\u0066'; + t['\uFB01'] = '\u0066\u0069'; + t['\uFB02'] = '\u0066\u006C'; + t['\uFB03'] = '\u0066\u0066\u0069'; + t['\uFB04'] = '\u0066\u0066\u006C'; + t['\uFB05'] = '\u017F\u0074'; + t['\uFB06'] = '\u0073\u0074'; + t['\uFB13'] = '\u0574\u0576'; + t['\uFB14'] = '\u0574\u0565'; + t['\uFB15'] = '\u0574\u056B'; + t['\uFB16'] = '\u057E\u0576'; + t['\uFB17'] = '\u0574\u056D'; + t['\uFB4F'] = '\u05D0\u05DC'; + t['\uFB50'] = '\u0671'; + t['\uFB51'] = '\u0671'; + t['\uFB52'] = '\u067B'; + t['\uFB53'] = '\u067B'; + t['\uFB54'] = '\u067B'; + t['\uFB55'] = '\u067B'; + t['\uFB56'] = '\u067E'; + t['\uFB57'] = '\u067E'; + t['\uFB58'] = '\u067E'; + t['\uFB59'] = '\u067E'; + t['\uFB5A'] = '\u0680'; + t['\uFB5B'] = '\u0680'; + t['\uFB5C'] = '\u0680'; + t['\uFB5D'] = '\u0680'; + t['\uFB5E'] = '\u067A'; + t['\uFB5F'] = '\u067A'; + t['\uFB60'] = '\u067A'; + t['\uFB61'] = '\u067A'; + t['\uFB62'] = '\u067F'; + t['\uFB63'] = '\u067F'; + t['\uFB64'] = '\u067F'; + t['\uFB65'] = '\u067F'; + t['\uFB66'] = '\u0679'; + t['\uFB67'] = '\u0679'; + t['\uFB68'] = '\u0679'; + t['\uFB69'] = '\u0679'; + t['\uFB6A'] = '\u06A4'; + t['\uFB6B'] = '\u06A4'; + t['\uFB6C'] = '\u06A4'; + t['\uFB6D'] = '\u06A4'; + t['\uFB6E'] = '\u06A6'; + t['\uFB6F'] = '\u06A6'; + t['\uFB70'] = '\u06A6'; + t['\uFB71'] = '\u06A6'; + t['\uFB72'] = '\u0684'; + t['\uFB73'] = '\u0684'; + t['\uFB74'] = '\u0684'; + t['\uFB75'] = '\u0684'; + t['\uFB76'] = '\u0683'; + t['\uFB77'] = '\u0683'; + t['\uFB78'] = '\u0683'; + t['\uFB79'] = '\u0683'; + t['\uFB7A'] = '\u0686'; + t['\uFB7B'] = '\u0686'; + t['\uFB7C'] = '\u0686'; + t['\uFB7D'] = '\u0686'; + t['\uFB7E'] = '\u0687'; + t['\uFB7F'] = '\u0687'; + t['\uFB80'] = '\u0687'; + t['\uFB81'] = '\u0687'; + t['\uFB82'] = '\u068D'; + t['\uFB83'] = '\u068D'; + t['\uFB84'] = '\u068C'; + t['\uFB85'] = '\u068C'; + t['\uFB86'] = '\u068E'; + t['\uFB87'] = '\u068E'; + t['\uFB88'] = '\u0688'; + t['\uFB89'] = '\u0688'; + t['\uFB8A'] = '\u0698'; + t['\uFB8B'] = '\u0698'; + t['\uFB8C'] = '\u0691'; + t['\uFB8D'] = '\u0691'; + t['\uFB8E'] = '\u06A9'; + t['\uFB8F'] = '\u06A9'; + t['\uFB90'] = '\u06A9'; + t['\uFB91'] = '\u06A9'; + t['\uFB92'] = '\u06AF'; + t['\uFB93'] = '\u06AF'; + t['\uFB94'] = '\u06AF'; + t['\uFB95'] = '\u06AF'; + t['\uFB96'] = '\u06B3'; + t['\uFB97'] = '\u06B3'; + t['\uFB98'] = '\u06B3'; + t['\uFB99'] = '\u06B3'; + t['\uFB9A'] = '\u06B1'; + t['\uFB9B'] = '\u06B1'; + t['\uFB9C'] = '\u06B1'; + t['\uFB9D'] = '\u06B1'; + t['\uFB9E'] = '\u06BA'; + t['\uFB9F'] = '\u06BA'; + t['\uFBA0'] = '\u06BB'; + t['\uFBA1'] = '\u06BB'; + t['\uFBA2'] = '\u06BB'; + t['\uFBA3'] = '\u06BB'; + t['\uFBA4'] = '\u06C0'; + t['\uFBA5'] = '\u06C0'; + t['\uFBA6'] = '\u06C1'; + t['\uFBA7'] = '\u06C1'; + t['\uFBA8'] = '\u06C1'; + t['\uFBA9'] = '\u06C1'; + t['\uFBAA'] = '\u06BE'; + t['\uFBAB'] = '\u06BE'; + t['\uFBAC'] = '\u06BE'; + t['\uFBAD'] = '\u06BE'; + t['\uFBAE'] = '\u06D2'; + t['\uFBAF'] = '\u06D2'; + t['\uFBB0'] = '\u06D3'; + t['\uFBB1'] = '\u06D3'; + t['\uFBD3'] = '\u06AD'; + t['\uFBD4'] = '\u06AD'; + t['\uFBD5'] = '\u06AD'; + t['\uFBD6'] = '\u06AD'; + t['\uFBD7'] = '\u06C7'; + t['\uFBD8'] = '\u06C7'; + t['\uFBD9'] = '\u06C6'; + t['\uFBDA'] = '\u06C6'; + t['\uFBDB'] = '\u06C8'; + t['\uFBDC'] = '\u06C8'; + t['\uFBDD'] = '\u0677'; + t['\uFBDE'] = '\u06CB'; + t['\uFBDF'] = '\u06CB'; + t['\uFBE0'] = '\u06C5'; + t['\uFBE1'] = '\u06C5'; + t['\uFBE2'] = '\u06C9'; + t['\uFBE3'] = '\u06C9'; + t['\uFBE4'] = '\u06D0'; + t['\uFBE5'] = '\u06D0'; + t['\uFBE6'] = '\u06D0'; + t['\uFBE7'] = '\u06D0'; + t['\uFBE8'] = '\u0649'; + t['\uFBE9'] = '\u0649'; + t['\uFBEA'] = '\u0626\u0627'; + t['\uFBEB'] = '\u0626\u0627'; + t['\uFBEC'] = '\u0626\u06D5'; + t['\uFBED'] = '\u0626\u06D5'; + t['\uFBEE'] = '\u0626\u0648'; + t['\uFBEF'] = '\u0626\u0648'; + t['\uFBF0'] = '\u0626\u06C7'; + t['\uFBF1'] = '\u0626\u06C7'; + t['\uFBF2'] = '\u0626\u06C6'; + t['\uFBF3'] = '\u0626\u06C6'; + t['\uFBF4'] = '\u0626\u06C8'; + t['\uFBF5'] = '\u0626\u06C8'; + t['\uFBF6'] = '\u0626\u06D0'; + t['\uFBF7'] = '\u0626\u06D0'; + t['\uFBF8'] = '\u0626\u06D0'; + t['\uFBF9'] = '\u0626\u0649'; + t['\uFBFA'] = '\u0626\u0649'; + t['\uFBFB'] = '\u0626\u0649'; + t['\uFBFC'] = '\u06CC'; + t['\uFBFD'] = '\u06CC'; + t['\uFBFE'] = '\u06CC'; + t['\uFBFF'] = '\u06CC'; + t['\uFC00'] = '\u0626\u062C'; + t['\uFC01'] = '\u0626\u062D'; + t['\uFC02'] = '\u0626\u0645'; + t['\uFC03'] = '\u0626\u0649'; + t['\uFC04'] = '\u0626\u064A'; + t['\uFC05'] = '\u0628\u062C'; + t['\uFC06'] = '\u0628\u062D'; + t['\uFC07'] = '\u0628\u062E'; + t['\uFC08'] = '\u0628\u0645'; + t['\uFC09'] = '\u0628\u0649'; + t['\uFC0A'] = '\u0628\u064A'; + t['\uFC0B'] = '\u062A\u062C'; + t['\uFC0C'] = '\u062A\u062D'; + t['\uFC0D'] = '\u062A\u062E'; + t['\uFC0E'] = '\u062A\u0645'; + t['\uFC0F'] = '\u062A\u0649'; + t['\uFC10'] = '\u062A\u064A'; + t['\uFC11'] = '\u062B\u062C'; + t['\uFC12'] = '\u062B\u0645'; + t['\uFC13'] = '\u062B\u0649'; + t['\uFC14'] = '\u062B\u064A'; + t['\uFC15'] = '\u062C\u062D'; + t['\uFC16'] = '\u062C\u0645'; + t['\uFC17'] = '\u062D\u062C'; + t['\uFC18'] = '\u062D\u0645'; + t['\uFC19'] = '\u062E\u062C'; + t['\uFC1A'] = '\u062E\u062D'; + t['\uFC1B'] = '\u062E\u0645'; + t['\uFC1C'] = '\u0633\u062C'; + t['\uFC1D'] = '\u0633\u062D'; + t['\uFC1E'] = '\u0633\u062E'; + t['\uFC1F'] = '\u0633\u0645'; + t['\uFC20'] = '\u0635\u062D'; + t['\uFC21'] = '\u0635\u0645'; + t['\uFC22'] = '\u0636\u062C'; + t['\uFC23'] = '\u0636\u062D'; + t['\uFC24'] = '\u0636\u062E'; + t['\uFC25'] = '\u0636\u0645'; + t['\uFC26'] = '\u0637\u062D'; + t['\uFC27'] = '\u0637\u0645'; + t['\uFC28'] = '\u0638\u0645'; + t['\uFC29'] = '\u0639\u062C'; + t['\uFC2A'] = '\u0639\u0645'; + t['\uFC2B'] = '\u063A\u062C'; + t['\uFC2C'] = '\u063A\u0645'; + t['\uFC2D'] = '\u0641\u062C'; + t['\uFC2E'] = '\u0641\u062D'; + t['\uFC2F'] = '\u0641\u062E'; + t['\uFC30'] = '\u0641\u0645'; + t['\uFC31'] = '\u0641\u0649'; + t['\uFC32'] = '\u0641\u064A'; + t['\uFC33'] = '\u0642\u062D'; + t['\uFC34'] = '\u0642\u0645'; + t['\uFC35'] = '\u0642\u0649'; + t['\uFC36'] = '\u0642\u064A'; + t['\uFC37'] = '\u0643\u0627'; + t['\uFC38'] = '\u0643\u062C'; + t['\uFC39'] = '\u0643\u062D'; + t['\uFC3A'] = '\u0643\u062E'; + t['\uFC3B'] = '\u0643\u0644'; + t['\uFC3C'] = '\u0643\u0645'; + t['\uFC3D'] = '\u0643\u0649'; + t['\uFC3E'] = '\u0643\u064A'; + t['\uFC3F'] = '\u0644\u062C'; + t['\uFC40'] = '\u0644\u062D'; + t['\uFC41'] = '\u0644\u062E'; + t['\uFC42'] = '\u0644\u0645'; + t['\uFC43'] = '\u0644\u0649'; + t['\uFC44'] = '\u0644\u064A'; + t['\uFC45'] = '\u0645\u062C'; + t['\uFC46'] = '\u0645\u062D'; + t['\uFC47'] = '\u0645\u062E'; + t['\uFC48'] = '\u0645\u0645'; + t['\uFC49'] = '\u0645\u0649'; + t['\uFC4A'] = '\u0645\u064A'; + t['\uFC4B'] = '\u0646\u062C'; + t['\uFC4C'] = '\u0646\u062D'; + t['\uFC4D'] = '\u0646\u062E'; + t['\uFC4E'] = '\u0646\u0645'; + t['\uFC4F'] = '\u0646\u0649'; + t['\uFC50'] = '\u0646\u064A'; + t['\uFC51'] = '\u0647\u062C'; + t['\uFC52'] = '\u0647\u0645'; + t['\uFC53'] = '\u0647\u0649'; + t['\uFC54'] = '\u0647\u064A'; + t['\uFC55'] = '\u064A\u062C'; + t['\uFC56'] = '\u064A\u062D'; + t['\uFC57'] = '\u064A\u062E'; + t['\uFC58'] = '\u064A\u0645'; + t['\uFC59'] = '\u064A\u0649'; + t['\uFC5A'] = '\u064A\u064A'; + t['\uFC5B'] = '\u0630\u0670'; + t['\uFC5C'] = '\u0631\u0670'; + t['\uFC5D'] = '\u0649\u0670'; + t['\uFC5E'] = '\u0020\u064C\u0651'; + t['\uFC5F'] = '\u0020\u064D\u0651'; + t['\uFC60'] = '\u0020\u064E\u0651'; + t['\uFC61'] = '\u0020\u064F\u0651'; + t['\uFC62'] = '\u0020\u0650\u0651'; + t['\uFC63'] = '\u0020\u0651\u0670'; + t['\uFC64'] = '\u0626\u0631'; + t['\uFC65'] = '\u0626\u0632'; + t['\uFC66'] = '\u0626\u0645'; + t['\uFC67'] = '\u0626\u0646'; + t['\uFC68'] = '\u0626\u0649'; + t['\uFC69'] = '\u0626\u064A'; + t['\uFC6A'] = '\u0628\u0631'; + t['\uFC6B'] = '\u0628\u0632'; + t['\uFC6C'] = '\u0628\u0645'; + t['\uFC6D'] = '\u0628\u0646'; + t['\uFC6E'] = '\u0628\u0649'; + t['\uFC6F'] = '\u0628\u064A'; + t['\uFC70'] = '\u062A\u0631'; + t['\uFC71'] = '\u062A\u0632'; + t['\uFC72'] = '\u062A\u0645'; + t['\uFC73'] = '\u062A\u0646'; + t['\uFC74'] = '\u062A\u0649'; + t['\uFC75'] = '\u062A\u064A'; + t['\uFC76'] = '\u062B\u0631'; + t['\uFC77'] = '\u062B\u0632'; + t['\uFC78'] = '\u062B\u0645'; + t['\uFC79'] = '\u062B\u0646'; + t['\uFC7A'] = '\u062B\u0649'; + t['\uFC7B'] = '\u062B\u064A'; + t['\uFC7C'] = '\u0641\u0649'; + t['\uFC7D'] = '\u0641\u064A'; + t['\uFC7E'] = '\u0642\u0649'; + t['\uFC7F'] = '\u0642\u064A'; + t['\uFC80'] = '\u0643\u0627'; + t['\uFC81'] = '\u0643\u0644'; + t['\uFC82'] = '\u0643\u0645'; + t['\uFC83'] = '\u0643\u0649'; + t['\uFC84'] = '\u0643\u064A'; + t['\uFC85'] = '\u0644\u0645'; + t['\uFC86'] = '\u0644\u0649'; + t['\uFC87'] = '\u0644\u064A'; + t['\uFC88'] = '\u0645\u0627'; + t['\uFC89'] = '\u0645\u0645'; + t['\uFC8A'] = '\u0646\u0631'; + t['\uFC8B'] = '\u0646\u0632'; + t['\uFC8C'] = '\u0646\u0645'; + t['\uFC8D'] = '\u0646\u0646'; + t['\uFC8E'] = '\u0646\u0649'; + t['\uFC8F'] = '\u0646\u064A'; + t['\uFC90'] = '\u0649\u0670'; + t['\uFC91'] = '\u064A\u0631'; + t['\uFC92'] = '\u064A\u0632'; + t['\uFC93'] = '\u064A\u0645'; + t['\uFC94'] = '\u064A\u0646'; + t['\uFC95'] = '\u064A\u0649'; + t['\uFC96'] = '\u064A\u064A'; + t['\uFC97'] = '\u0626\u062C'; + t['\uFC98'] = '\u0626\u062D'; + t['\uFC99'] = '\u0626\u062E'; + t['\uFC9A'] = '\u0626\u0645'; + t['\uFC9B'] = '\u0626\u0647'; + t['\uFC9C'] = '\u0628\u062C'; + t['\uFC9D'] = '\u0628\u062D'; + t['\uFC9E'] = '\u0628\u062E'; + t['\uFC9F'] = '\u0628\u0645'; + t['\uFCA0'] = '\u0628\u0647'; + t['\uFCA1'] = '\u062A\u062C'; + t['\uFCA2'] = '\u062A\u062D'; + t['\uFCA3'] = '\u062A\u062E'; + t['\uFCA4'] = '\u062A\u0645'; + t['\uFCA5'] = '\u062A\u0647'; + t['\uFCA6'] = '\u062B\u0645'; + t['\uFCA7'] = '\u062C\u062D'; + t['\uFCA8'] = '\u062C\u0645'; + t['\uFCA9'] = '\u062D\u062C'; + t['\uFCAA'] = '\u062D\u0645'; + t['\uFCAB'] = '\u062E\u062C'; + t['\uFCAC'] = '\u062E\u0645'; + t['\uFCAD'] = '\u0633\u062C'; + t['\uFCAE'] = '\u0633\u062D'; + t['\uFCAF'] = '\u0633\u062E'; + t['\uFCB0'] = '\u0633\u0645'; + t['\uFCB1'] = '\u0635\u062D'; + t['\uFCB2'] = '\u0635\u062E'; + t['\uFCB3'] = '\u0635\u0645'; + t['\uFCB4'] = '\u0636\u062C'; + t['\uFCB5'] = '\u0636\u062D'; + t['\uFCB6'] = '\u0636\u062E'; + t['\uFCB7'] = '\u0636\u0645'; + t['\uFCB8'] = '\u0637\u062D'; + t['\uFCB9'] = '\u0638\u0645'; + t['\uFCBA'] = '\u0639\u062C'; + t['\uFCBB'] = '\u0639\u0645'; + t['\uFCBC'] = '\u063A\u062C'; + t['\uFCBD'] = '\u063A\u0645'; + t['\uFCBE'] = '\u0641\u062C'; + t['\uFCBF'] = '\u0641\u062D'; + t['\uFCC0'] = '\u0641\u062E'; + t['\uFCC1'] = '\u0641\u0645'; + t['\uFCC2'] = '\u0642\u062D'; + t['\uFCC3'] = '\u0642\u0645'; + t['\uFCC4'] = '\u0643\u062C'; + t['\uFCC5'] = '\u0643\u062D'; + t['\uFCC6'] = '\u0643\u062E'; + t['\uFCC7'] = '\u0643\u0644'; + t['\uFCC8'] = '\u0643\u0645'; + t['\uFCC9'] = '\u0644\u062C'; + t['\uFCCA'] = '\u0644\u062D'; + t['\uFCCB'] = '\u0644\u062E'; + t['\uFCCC'] = '\u0644\u0645'; + t['\uFCCD'] = '\u0644\u0647'; + t['\uFCCE'] = '\u0645\u062C'; + t['\uFCCF'] = '\u0645\u062D'; + t['\uFCD0'] = '\u0645\u062E'; + t['\uFCD1'] = '\u0645\u0645'; + t['\uFCD2'] = '\u0646\u062C'; + t['\uFCD3'] = '\u0646\u062D'; + t['\uFCD4'] = '\u0646\u062E'; + t['\uFCD5'] = '\u0646\u0645'; + t['\uFCD6'] = '\u0646\u0647'; + t['\uFCD7'] = '\u0647\u062C'; + t['\uFCD8'] = '\u0647\u0645'; + t['\uFCD9'] = '\u0647\u0670'; + t['\uFCDA'] = '\u064A\u062C'; + t['\uFCDB'] = '\u064A\u062D'; + t['\uFCDC'] = '\u064A\u062E'; + t['\uFCDD'] = '\u064A\u0645'; + t['\uFCDE'] = '\u064A\u0647'; + t['\uFCDF'] = '\u0626\u0645'; + t['\uFCE0'] = '\u0626\u0647'; + t['\uFCE1'] = '\u0628\u0645'; + t['\uFCE2'] = '\u0628\u0647'; + t['\uFCE3'] = '\u062A\u0645'; + t['\uFCE4'] = '\u062A\u0647'; + t['\uFCE5'] = '\u062B\u0645'; + t['\uFCE6'] = '\u062B\u0647'; + t['\uFCE7'] = '\u0633\u0645'; + t['\uFCE8'] = '\u0633\u0647'; + t['\uFCE9'] = '\u0634\u0645'; + t['\uFCEA'] = '\u0634\u0647'; + t['\uFCEB'] = '\u0643\u0644'; + t['\uFCEC'] = '\u0643\u0645'; + t['\uFCED'] = '\u0644\u0645'; + t['\uFCEE'] = '\u0646\u0645'; + t['\uFCEF'] = '\u0646\u0647'; + t['\uFCF0'] = '\u064A\u0645'; + t['\uFCF1'] = '\u064A\u0647'; + t['\uFCF2'] = '\u0640\u064E\u0651'; + t['\uFCF3'] = '\u0640\u064F\u0651'; + t['\uFCF4'] = '\u0640\u0650\u0651'; + t['\uFCF5'] = '\u0637\u0649'; + t['\uFCF6'] = '\u0637\u064A'; + t['\uFCF7'] = '\u0639\u0649'; + t['\uFCF8'] = '\u0639\u064A'; + t['\uFCF9'] = '\u063A\u0649'; + t['\uFCFA'] = '\u063A\u064A'; + t['\uFCFB'] = '\u0633\u0649'; + t['\uFCFC'] = '\u0633\u064A'; + t['\uFCFD'] = '\u0634\u0649'; + t['\uFCFE'] = '\u0634\u064A'; + t['\uFCFF'] = '\u062D\u0649'; + t['\uFD00'] = '\u062D\u064A'; + t['\uFD01'] = '\u062C\u0649'; + t['\uFD02'] = '\u062C\u064A'; + t['\uFD03'] = '\u062E\u0649'; + t['\uFD04'] = '\u062E\u064A'; + t['\uFD05'] = '\u0635\u0649'; + t['\uFD06'] = '\u0635\u064A'; + t['\uFD07'] = '\u0636\u0649'; + t['\uFD08'] = '\u0636\u064A'; + t['\uFD09'] = '\u0634\u062C'; + t['\uFD0A'] = '\u0634\u062D'; + t['\uFD0B'] = '\u0634\u062E'; + t['\uFD0C'] = '\u0634\u0645'; + t['\uFD0D'] = '\u0634\u0631'; + t['\uFD0E'] = '\u0633\u0631'; + t['\uFD0F'] = '\u0635\u0631'; + t['\uFD10'] = '\u0636\u0631'; + t['\uFD11'] = '\u0637\u0649'; + t['\uFD12'] = '\u0637\u064A'; + t['\uFD13'] = '\u0639\u0649'; + t['\uFD14'] = '\u0639\u064A'; + t['\uFD15'] = '\u063A\u0649'; + t['\uFD16'] = '\u063A\u064A'; + t['\uFD17'] = '\u0633\u0649'; + t['\uFD18'] = '\u0633\u064A'; + t['\uFD19'] = '\u0634\u0649'; + t['\uFD1A'] = '\u0634\u064A'; + t['\uFD1B'] = '\u062D\u0649'; + t['\uFD1C'] = '\u062D\u064A'; + t['\uFD1D'] = '\u062C\u0649'; + t['\uFD1E'] = '\u062C\u064A'; + t['\uFD1F'] = '\u062E\u0649'; + t['\uFD20'] = '\u062E\u064A'; + t['\uFD21'] = '\u0635\u0649'; + t['\uFD22'] = '\u0635\u064A'; + t['\uFD23'] = '\u0636\u0649'; + t['\uFD24'] = '\u0636\u064A'; + t['\uFD25'] = '\u0634\u062C'; + t['\uFD26'] = '\u0634\u062D'; + t['\uFD27'] = '\u0634\u062E'; + t['\uFD28'] = '\u0634\u0645'; + t['\uFD29'] = '\u0634\u0631'; + t['\uFD2A'] = '\u0633\u0631'; + t['\uFD2B'] = '\u0635\u0631'; + t['\uFD2C'] = '\u0636\u0631'; + t['\uFD2D'] = '\u0634\u062C'; + t['\uFD2E'] = '\u0634\u062D'; + t['\uFD2F'] = '\u0634\u062E'; + t['\uFD30'] = '\u0634\u0645'; + t['\uFD31'] = '\u0633\u0647'; + t['\uFD32'] = '\u0634\u0647'; + t['\uFD33'] = '\u0637\u0645'; + t['\uFD34'] = '\u0633\u062C'; + t['\uFD35'] = '\u0633\u062D'; + t['\uFD36'] = '\u0633\u062E'; + t['\uFD37'] = '\u0634\u062C'; + t['\uFD38'] = '\u0634\u062D'; + t['\uFD39'] = '\u0634\u062E'; + t['\uFD3A'] = '\u0637\u0645'; + t['\uFD3B'] = '\u0638\u0645'; + t['\uFD3C'] = '\u0627\u064B'; + t['\uFD3D'] = '\u0627\u064B'; + t['\uFD50'] = '\u062A\u062C\u0645'; + t['\uFD51'] = '\u062A\u062D\u062C'; + t['\uFD52'] = '\u062A\u062D\u062C'; + t['\uFD53'] = '\u062A\u062D\u0645'; + t['\uFD54'] = '\u062A\u062E\u0645'; + t['\uFD55'] = '\u062A\u0645\u062C'; + t['\uFD56'] = '\u062A\u0645\u062D'; + t['\uFD57'] = '\u062A\u0645\u062E'; + t['\uFD58'] = '\u062C\u0645\u062D'; + t['\uFD59'] = '\u062C\u0645\u062D'; + t['\uFD5A'] = '\u062D\u0645\u064A'; + t['\uFD5B'] = '\u062D\u0645\u0649'; + t['\uFD5C'] = '\u0633\u062D\u062C'; + t['\uFD5D'] = '\u0633\u062C\u062D'; + t['\uFD5E'] = '\u0633\u062C\u0649'; + t['\uFD5F'] = '\u0633\u0645\u062D'; + t['\uFD60'] = '\u0633\u0645\u062D'; + t['\uFD61'] = '\u0633\u0645\u062C'; + t['\uFD62'] = '\u0633\u0645\u0645'; + t['\uFD63'] = '\u0633\u0645\u0645'; + t['\uFD64'] = '\u0635\u062D\u062D'; + t['\uFD65'] = '\u0635\u062D\u062D'; + t['\uFD66'] = '\u0635\u0645\u0645'; + t['\uFD67'] = '\u0634\u062D\u0645'; + t['\uFD68'] = '\u0634\u062D\u0645'; + t['\uFD69'] = '\u0634\u062C\u064A'; + t['\uFD6A'] = '\u0634\u0645\u062E'; + t['\uFD6B'] = '\u0634\u0645\u062E'; + t['\uFD6C'] = '\u0634\u0645\u0645'; + t['\uFD6D'] = '\u0634\u0645\u0645'; + t['\uFD6E'] = '\u0636\u062D\u0649'; + t['\uFD6F'] = '\u0636\u062E\u0645'; + t['\uFD70'] = '\u0636\u062E\u0645'; + t['\uFD71'] = '\u0637\u0645\u062D'; + t['\uFD72'] = '\u0637\u0645\u062D'; + t['\uFD73'] = '\u0637\u0645\u0645'; + t['\uFD74'] = '\u0637\u0645\u064A'; + t['\uFD75'] = '\u0639\u062C\u0645'; + t['\uFD76'] = '\u0639\u0645\u0645'; + t['\uFD77'] = '\u0639\u0645\u0645'; + t['\uFD78'] = '\u0639\u0645\u0649'; + t['\uFD79'] = '\u063A\u0645\u0645'; + t['\uFD7A'] = '\u063A\u0645\u064A'; + t['\uFD7B'] = '\u063A\u0645\u0649'; + t['\uFD7C'] = '\u0641\u062E\u0645'; + t['\uFD7D'] = '\u0641\u062E\u0645'; + t['\uFD7E'] = '\u0642\u0645\u062D'; + t['\uFD7F'] = '\u0642\u0645\u0645'; + t['\uFD80'] = '\u0644\u062D\u0645'; + t['\uFD81'] = '\u0644\u062D\u064A'; + t['\uFD82'] = '\u0644\u062D\u0649'; + t['\uFD83'] = '\u0644\u062C\u062C'; + t['\uFD84'] = '\u0644\u062C\u062C'; + t['\uFD85'] = '\u0644\u062E\u0645'; + t['\uFD86'] = '\u0644\u062E\u0645'; + t['\uFD87'] = '\u0644\u0645\u062D'; + t['\uFD88'] = '\u0644\u0645\u062D'; + t['\uFD89'] = '\u0645\u062D\u062C'; + t['\uFD8A'] = '\u0645\u062D\u0645'; + t['\uFD8B'] = '\u0645\u062D\u064A'; + t['\uFD8C'] = '\u0645\u062C\u062D'; + t['\uFD8D'] = '\u0645\u062C\u0645'; + t['\uFD8E'] = '\u0645\u062E\u062C'; + t['\uFD8F'] = '\u0645\u062E\u0645'; + t['\uFD92'] = '\u0645\u062C\u062E'; + t['\uFD93'] = '\u0647\u0645\u062C'; + t['\uFD94'] = '\u0647\u0645\u0645'; + t['\uFD95'] = '\u0646\u062D\u0645'; + t['\uFD96'] = '\u0646\u062D\u0649'; + t['\uFD97'] = '\u0646\u062C\u0645'; + t['\uFD98'] = '\u0646\u062C\u0645'; + t['\uFD99'] = '\u0646\u062C\u0649'; + t['\uFD9A'] = '\u0646\u0645\u064A'; + t['\uFD9B'] = '\u0646\u0645\u0649'; + t['\uFD9C'] = '\u064A\u0645\u0645'; + t['\uFD9D'] = '\u064A\u0645\u0645'; + t['\uFD9E'] = '\u0628\u062E\u064A'; + t['\uFD9F'] = '\u062A\u062C\u064A'; + t['\uFDA0'] = '\u062A\u062C\u0649'; + t['\uFDA1'] = '\u062A\u062E\u064A'; + t['\uFDA2'] = '\u062A\u062E\u0649'; + t['\uFDA3'] = '\u062A\u0645\u064A'; + t['\uFDA4'] = '\u062A\u0645\u0649'; + t['\uFDA5'] = '\u062C\u0645\u064A'; + t['\uFDA6'] = '\u062C\u062D\u0649'; + t['\uFDA7'] = '\u062C\u0645\u0649'; + t['\uFDA8'] = '\u0633\u062E\u0649'; + t['\uFDA9'] = '\u0635\u062D\u064A'; + t['\uFDAA'] = '\u0634\u062D\u064A'; + t['\uFDAB'] = '\u0636\u062D\u064A'; + t['\uFDAC'] = '\u0644\u062C\u064A'; + t['\uFDAD'] = '\u0644\u0645\u064A'; + t['\uFDAE'] = '\u064A\u062D\u064A'; + t['\uFDAF'] = '\u064A\u062C\u064A'; + t['\uFDB0'] = '\u064A\u0645\u064A'; + t['\uFDB1'] = '\u0645\u0645\u064A'; + t['\uFDB2'] = '\u0642\u0645\u064A'; + t['\uFDB3'] = '\u0646\u062D\u064A'; + t['\uFDB4'] = '\u0642\u0645\u062D'; + t['\uFDB5'] = '\u0644\u062D\u0645'; + t['\uFDB6'] = '\u0639\u0645\u064A'; + t['\uFDB7'] = '\u0643\u0645\u064A'; + t['\uFDB8'] = '\u0646\u062C\u062D'; + t['\uFDB9'] = '\u0645\u062E\u064A'; + t['\uFDBA'] = '\u0644\u062C\u0645'; + t['\uFDBB'] = '\u0643\u0645\u0645'; + t['\uFDBC'] = '\u0644\u062C\u0645'; + t['\uFDBD'] = '\u0646\u062C\u062D'; + t['\uFDBE'] = '\u062C\u062D\u064A'; + t['\uFDBF'] = '\u062D\u062C\u064A'; + t['\uFDC0'] = '\u0645\u062C\u064A'; + t['\uFDC1'] = '\u0641\u0645\u064A'; + t['\uFDC2'] = '\u0628\u062D\u064A'; + t['\uFDC3'] = '\u0643\u0645\u0645'; + t['\uFDC4'] = '\u0639\u062C\u0645'; + t['\uFDC5'] = '\u0635\u0645\u0645'; + t['\uFDC6'] = '\u0633\u062E\u064A'; + t['\uFDC7'] = '\u0646\u062C\u064A'; + t['\uFE49'] = '\u203E'; + t['\uFE4A'] = '\u203E'; + t['\uFE4B'] = '\u203E'; + t['\uFE4C'] = '\u203E'; + t['\uFE4D'] = '\u005F'; + t['\uFE4E'] = '\u005F'; + t['\uFE4F'] = '\u005F'; + t['\uFE80'] = '\u0621'; + t['\uFE81'] = '\u0622'; + t['\uFE82'] = '\u0622'; + t['\uFE83'] = '\u0623'; + t['\uFE84'] = '\u0623'; + t['\uFE85'] = '\u0624'; + t['\uFE86'] = '\u0624'; + t['\uFE87'] = '\u0625'; + t['\uFE88'] = '\u0625'; + t['\uFE89'] = '\u0626'; + t['\uFE8A'] = '\u0626'; + t['\uFE8B'] = '\u0626'; + t['\uFE8C'] = '\u0626'; + t['\uFE8D'] = '\u0627'; + t['\uFE8E'] = '\u0627'; + t['\uFE8F'] = '\u0628'; + t['\uFE90'] = '\u0628'; + t['\uFE91'] = '\u0628'; + t['\uFE92'] = '\u0628'; + t['\uFE93'] = '\u0629'; + t['\uFE94'] = '\u0629'; + t['\uFE95'] = '\u062A'; + t['\uFE96'] = '\u062A'; + t['\uFE97'] = '\u062A'; + t['\uFE98'] = '\u062A'; + t['\uFE99'] = '\u062B'; + t['\uFE9A'] = '\u062B'; + t['\uFE9B'] = '\u062B'; + t['\uFE9C'] = '\u062B'; + t['\uFE9D'] = '\u062C'; + t['\uFE9E'] = '\u062C'; + t['\uFE9F'] = '\u062C'; + t['\uFEA0'] = '\u062C'; + t['\uFEA1'] = '\u062D'; + t['\uFEA2'] = '\u062D'; + t['\uFEA3'] = '\u062D'; + t['\uFEA4'] = '\u062D'; + t['\uFEA5'] = '\u062E'; + t['\uFEA6'] = '\u062E'; + t['\uFEA7'] = '\u062E'; + t['\uFEA8'] = '\u062E'; + t['\uFEA9'] = '\u062F'; + t['\uFEAA'] = '\u062F'; + t['\uFEAB'] = '\u0630'; + t['\uFEAC'] = '\u0630'; + t['\uFEAD'] = '\u0631'; + t['\uFEAE'] = '\u0631'; + t['\uFEAF'] = '\u0632'; + t['\uFEB0'] = '\u0632'; + t['\uFEB1'] = '\u0633'; + t['\uFEB2'] = '\u0633'; + t['\uFEB3'] = '\u0633'; + t['\uFEB4'] = '\u0633'; + t['\uFEB5'] = '\u0634'; + t['\uFEB6'] = '\u0634'; + t['\uFEB7'] = '\u0634'; + t['\uFEB8'] = '\u0634'; + t['\uFEB9'] = '\u0635'; + t['\uFEBA'] = '\u0635'; + t['\uFEBB'] = '\u0635'; + t['\uFEBC'] = '\u0635'; + t['\uFEBD'] = '\u0636'; + t['\uFEBE'] = '\u0636'; + t['\uFEBF'] = '\u0636'; + t['\uFEC0'] = '\u0636'; + t['\uFEC1'] = '\u0637'; + t['\uFEC2'] = '\u0637'; + t['\uFEC3'] = '\u0637'; + t['\uFEC4'] = '\u0637'; + t['\uFEC5'] = '\u0638'; + t['\uFEC6'] = '\u0638'; + t['\uFEC7'] = '\u0638'; + t['\uFEC8'] = '\u0638'; + t['\uFEC9'] = '\u0639'; + t['\uFECA'] = '\u0639'; + t['\uFECB'] = '\u0639'; + t['\uFECC'] = '\u0639'; + t['\uFECD'] = '\u063A'; + t['\uFECE'] = '\u063A'; + t['\uFECF'] = '\u063A'; + t['\uFED0'] = '\u063A'; + t['\uFED1'] = '\u0641'; + t['\uFED2'] = '\u0641'; + t['\uFED3'] = '\u0641'; + t['\uFED4'] = '\u0641'; + t['\uFED5'] = '\u0642'; + t['\uFED6'] = '\u0642'; + t['\uFED7'] = '\u0642'; + t['\uFED8'] = '\u0642'; + t['\uFED9'] = '\u0643'; + t['\uFEDA'] = '\u0643'; + t['\uFEDB'] = '\u0643'; + t['\uFEDC'] = '\u0643'; + t['\uFEDD'] = '\u0644'; + t['\uFEDE'] = '\u0644'; + t['\uFEDF'] = '\u0644'; + t['\uFEE0'] = '\u0644'; + t['\uFEE1'] = '\u0645'; + t['\uFEE2'] = '\u0645'; + t['\uFEE3'] = '\u0645'; + t['\uFEE4'] = '\u0645'; + t['\uFEE5'] = '\u0646'; + t['\uFEE6'] = '\u0646'; + t['\uFEE7'] = '\u0646'; + t['\uFEE8'] = '\u0646'; + t['\uFEE9'] = '\u0647'; + t['\uFEEA'] = '\u0647'; + t['\uFEEB'] = '\u0647'; + t['\uFEEC'] = '\u0647'; + t['\uFEED'] = '\u0648'; + t['\uFEEE'] = '\u0648'; + t['\uFEEF'] = '\u0649'; + t['\uFEF0'] = '\u0649'; + t['\uFEF1'] = '\u064A'; + t['\uFEF2'] = '\u064A'; + t['\uFEF3'] = '\u064A'; + t['\uFEF4'] = '\u064A'; + t['\uFEF5'] = '\u0644\u0622'; + t['\uFEF6'] = '\u0644\u0622'; + t['\uFEF7'] = '\u0644\u0623'; + t['\uFEF8'] = '\u0644\u0623'; + t['\uFEF9'] = '\u0644\u0625'; + t['\uFEFA'] = '\u0644\u0625'; + t['\uFEFB'] = '\u0644\u0627'; + t['\uFEFC'] = '\u0644\u0627'; +}); +function reverseIfRtl(chars) { + var charsLength = chars.length; + if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) { + return chars; + } + var s = ''; + for (var ii = charsLength - 1; ii >= 0; ii--) { + s += chars[ii]; + } + return s; +} +exports.mapSpecialUnicodeValues = mapSpecialUnicodeValues; +exports.reverseIfRtl = reverseIfRtl; +exports.getUnicodeRangeFor = getUnicodeRangeFor; +exports.getNormalizedUnicodes = getNormalizedUnicodes; +exports.getUnicodeForGlyph = getUnicodeForGlyph; + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var ArithmeticDecoder = function ArithmeticDecoderClosure() { + var QeTable = [{ + qe: 0x5601, + nmps: 1, + nlps: 1, + switchFlag: 1 + }, { + qe: 0x3401, + nmps: 2, + nlps: 6, + switchFlag: 0 + }, { + qe: 0x1801, + nmps: 3, + nlps: 9, + switchFlag: 0 + }, { + qe: 0x0AC1, + nmps: 4, + nlps: 12, + switchFlag: 0 + }, { + qe: 0x0521, + nmps: 5, + nlps: 29, + switchFlag: 0 + }, { + qe: 0x0221, + nmps: 38, + nlps: 33, + switchFlag: 0 + }, { + qe: 0x5601, + nmps: 7, + nlps: 6, + switchFlag: 1 + }, { + qe: 0x5401, + nmps: 8, + nlps: 14, + switchFlag: 0 + }, { + qe: 0x4801, + nmps: 9, + nlps: 14, + switchFlag: 0 + }, { + qe: 0x3801, + nmps: 10, + nlps: 14, + switchFlag: 0 + }, { + qe: 0x3001, + nmps: 11, + nlps: 17, + switchFlag: 0 + }, { + qe: 0x2401, + nmps: 12, + nlps: 18, + switchFlag: 0 + }, { + qe: 0x1C01, + nmps: 13, + nlps: 20, + switchFlag: 0 + }, { + qe: 0x1601, + nmps: 29, + nlps: 21, + switchFlag: 0 + }, { + qe: 0x5601, + nmps: 15, + nlps: 14, + switchFlag: 1 + }, { + qe: 0x5401, + nmps: 16, + nlps: 14, + switchFlag: 0 + }, { + qe: 0x5101, + nmps: 17, + nlps: 15, + switchFlag: 0 + }, { + qe: 0x4801, + nmps: 18, + nlps: 16, + switchFlag: 0 + }, { + qe: 0x3801, + nmps: 19, + nlps: 17, + switchFlag: 0 + }, { + qe: 0x3401, + nmps: 20, + nlps: 18, + switchFlag: 0 + }, { + qe: 0x3001, + nmps: 21, + nlps: 19, + switchFlag: 0 + }, { + qe: 0x2801, + nmps: 22, + nlps: 19, + switchFlag: 0 + }, { + qe: 0x2401, + nmps: 23, + nlps: 20, + switchFlag: 0 + }, { + qe: 0x2201, + nmps: 24, + nlps: 21, + switchFlag: 0 + }, { + qe: 0x1C01, + nmps: 25, + nlps: 22, + switchFlag: 0 + }, { + qe: 0x1801, + nmps: 26, + nlps: 23, + switchFlag: 0 + }, { + qe: 0x1601, + nmps: 27, + nlps: 24, + switchFlag: 0 + }, { + qe: 0x1401, + nmps: 28, + nlps: 25, + switchFlag: 0 + }, { + qe: 0x1201, + nmps: 29, + nlps: 26, + switchFlag: 0 + }, { + qe: 0x1101, + nmps: 30, + nlps: 27, + switchFlag: 0 + }, { + qe: 0x0AC1, + nmps: 31, + nlps: 28, + switchFlag: 0 + }, { + qe: 0x09C1, + nmps: 32, + nlps: 29, + switchFlag: 0 + }, { + qe: 0x08A1, + nmps: 33, + nlps: 30, + switchFlag: 0 + }, { + qe: 0x0521, + nmps: 34, + nlps: 31, + switchFlag: 0 + }, { + qe: 0x0441, + nmps: 35, + nlps: 32, + switchFlag: 0 + }, { + qe: 0x02A1, + nmps: 36, + nlps: 33, + switchFlag: 0 + }, { + qe: 0x0221, + nmps: 37, + nlps: 34, + switchFlag: 0 + }, { + qe: 0x0141, + nmps: 38, + nlps: 35, + switchFlag: 0 + }, { + qe: 0x0111, + nmps: 39, + nlps: 36, + switchFlag: 0 + }, { + qe: 0x0085, + nmps: 40, + nlps: 37, + switchFlag: 0 + }, { + qe: 0x0049, + nmps: 41, + nlps: 38, + switchFlag: 0 + }, { + qe: 0x0025, + nmps: 42, + nlps: 39, + switchFlag: 0 + }, { + qe: 0x0015, + nmps: 43, + nlps: 40, + switchFlag: 0 + }, { + qe: 0x0009, + nmps: 44, + nlps: 41, + switchFlag: 0 + }, { + qe: 0x0005, + nmps: 45, + nlps: 42, + switchFlag: 0 + }, { + qe: 0x0001, + nmps: 45, + nlps: 43, + switchFlag: 0 + }, { + qe: 0x5601, + nmps: 46, + nlps: 46, + switchFlag: 0 + }]; + function ArithmeticDecoder(data, start, end) { + this.data = data; + this.bp = start; + this.dataEnd = end; + this.chigh = data[start]; + this.clow = 0; + this.byteIn(); + this.chigh = this.chigh << 7 & 0xFFFF | this.clow >> 9 & 0x7F; + this.clow = this.clow << 7 & 0xFFFF; + this.ct -= 7; + this.a = 0x8000; + } + ArithmeticDecoder.prototype = { + byteIn: function ArithmeticDecoder_byteIn() { + var data = this.data; + var bp = this.bp; + if (data[bp] === 0xFF) { + var b1 = data[bp + 1]; + if (b1 > 0x8F) { + this.clow += 0xFF00; + this.ct = 8; + } else { + bp++; + this.clow += data[bp] << 9; + this.ct = 7; + this.bp = bp; + } + } else { + bp++; + this.clow += bp < this.dataEnd ? data[bp] << 8 : 0xFF00; + this.ct = 8; + this.bp = bp; + } + if (this.clow > 0xFFFF) { + this.chigh += this.clow >> 16; + this.clow &= 0xFFFF; + } + }, + readBit: function ArithmeticDecoder_readBit(contexts, pos) { + var cx_index = contexts[pos] >> 1, + cx_mps = contexts[pos] & 1; + var qeTableIcx = QeTable[cx_index]; + var qeIcx = qeTableIcx.qe; + var d; + var a = this.a - qeIcx; + if (this.chigh < qeIcx) { + if (a < qeIcx) { + a = qeIcx; + d = cx_mps; + cx_index = qeTableIcx.nmps; + } else { + a = qeIcx; + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } + } else { + this.chigh -= qeIcx; + if ((a & 0x8000) !== 0) { + this.a = a; + return cx_mps; + } + if (a < qeIcx) { + d = 1 ^ cx_mps; + if (qeTableIcx.switchFlag === 1) { + cx_mps = d; + } + cx_index = qeTableIcx.nlps; + } else { + d = cx_mps; + cx_index = qeTableIcx.nmps; + } + } + do { + if (this.ct === 0) { + this.byteIn(); + } + a <<= 1; + this.chigh = this.chigh << 1 & 0xFFFF | this.clow >> 15 & 1; + this.clow = this.clow << 1 & 0xFFFF; + this.ct--; + } while ((a & 0x8000) === 0); + this.a = a; + contexts[pos] = cx_index << 1 | cx_mps; + return d; + } + }; + return ArithmeticDecoder; +}(); +exports.ArithmeticDecoder = ArithmeticDecoder; + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = undefined; + +var _util = __w_pdfjs_require__(0); + +var _charsets = __w_pdfjs_require__(21); + +var _encodings = __w_pdfjs_require__(4); + +var MAX_SUBR_NESTING = 10; +var CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold']; +var CFFParser = function CFFParserClosure() { + var CharstringValidationData = [null, { + id: 'hstem', + min: 2, + stackClearing: true, + stem: true + }, null, { + id: 'vstem', + min: 2, + stackClearing: true, + stem: true + }, { + id: 'vmoveto', + min: 1, + stackClearing: true + }, { + id: 'rlineto', + min: 2, + resetStack: true + }, { + id: 'hlineto', + min: 1, + resetStack: true + }, { + id: 'vlineto', + min: 1, + resetStack: true + }, { + id: 'rrcurveto', + min: 6, + resetStack: true + }, null, { + id: 'callsubr', + min: 1, + undefStack: true + }, { + id: 'return', + min: 0, + undefStack: true + }, null, null, { + id: 'endchar', + min: 0, + stackClearing: true + }, null, null, null, { + id: 'hstemhm', + min: 2, + stackClearing: true, + stem: true + }, { + id: 'hintmask', + min: 0, + stackClearing: true + }, { + id: 'cntrmask', + min: 0, + stackClearing: true + }, { + id: 'rmoveto', + min: 2, + stackClearing: true + }, { + id: 'hmoveto', + min: 1, + stackClearing: true + }, { + id: 'vstemhm', + min: 2, + stackClearing: true, + stem: true + }, { + id: 'rcurveline', + min: 8, + resetStack: true + }, { + id: 'rlinecurve', + min: 8, + resetStack: true + }, { + id: 'vvcurveto', + min: 4, + resetStack: true + }, { + id: 'hhcurveto', + min: 4, + resetStack: true + }, null, { + id: 'callgsubr', + min: 1, + undefStack: true + }, { + id: 'vhcurveto', + min: 4, + resetStack: true + }, { + id: 'hvcurveto', + min: 4, + resetStack: true + }]; + var CharstringValidationData12 = [null, null, null, { + id: 'and', + min: 2, + stackDelta: -1 + }, { + id: 'or', + min: 2, + stackDelta: -1 + }, { + id: 'not', + min: 1, + stackDelta: 0 + }, null, null, null, { + id: 'abs', + min: 1, + stackDelta: 0 + }, { + id: 'add', + min: 2, + stackDelta: -1, + stackFn: function stack_div(stack, index) { + stack[index - 2] = stack[index - 2] + stack[index - 1]; + } + }, { + id: 'sub', + min: 2, + stackDelta: -1, + stackFn: function stack_div(stack, index) { + stack[index - 2] = stack[index - 2] - stack[index - 1]; + } + }, { + id: 'div', + min: 2, + stackDelta: -1, + stackFn: function stack_div(stack, index) { + stack[index - 2] = stack[index - 2] / stack[index - 1]; + } + }, null, { + id: 'neg', + min: 1, + stackDelta: 0, + stackFn: function stack_div(stack, index) { + stack[index - 1] = -stack[index - 1]; + } + }, { + id: 'eq', + min: 2, + stackDelta: -1 + }, null, null, { + id: 'drop', + min: 1, + stackDelta: -1 + }, null, { + id: 'put', + min: 2, + stackDelta: -2 + }, { + id: 'get', + min: 1, + stackDelta: 0 + }, { + id: 'ifelse', + min: 4, + stackDelta: -3 + }, { + id: 'random', + min: 0, + stackDelta: 1 + }, { + id: 'mul', + min: 2, + stackDelta: -1, + stackFn: function stack_div(stack, index) { + stack[index - 2] = stack[index - 2] * stack[index - 1]; + } + }, null, { + id: 'sqrt', + min: 1, + stackDelta: 0 + }, { + id: 'dup', + min: 1, + stackDelta: 1 + }, { + id: 'exch', + min: 2, + stackDelta: 0 + }, { + id: 'index', + min: 2, + stackDelta: 0 + }, { + id: 'roll', + min: 3, + stackDelta: -2 + }, null, null, null, { + id: 'hflex', + min: 7, + resetStack: true + }, { + id: 'flex', + min: 13, + resetStack: true + }, { + id: 'hflex1', + min: 9, + resetStack: true + }, { + id: 'flex1', + min: 11, + resetStack: true + }]; + function CFFParser(file, properties, seacAnalysisEnabled) { + this.bytes = file.getBytes(); + this.properties = properties; + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + } + CFFParser.prototype = { + parse: function CFFParser_parse() { + var properties = this.properties; + var cff = new CFF(); + this.cff = cff; + var header = this.parseHeader(); + var nameIndex = this.parseIndex(header.endPos); + var topDictIndex = this.parseIndex(nameIndex.endPos); + var stringIndex = this.parseIndex(topDictIndex.endPos); + var globalSubrIndex = this.parseIndex(stringIndex.endPos); + var topDictParsed = this.parseDict(topDictIndex.obj.get(0)); + var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings); + cff.header = header.obj; + cff.names = this.parseNameIndex(nameIndex.obj); + cff.strings = this.parseStringIndex(stringIndex.obj); + cff.topDict = topDict; + cff.globalSubrIndex = globalSubrIndex.obj; + this.parsePrivateDict(cff.topDict); + cff.isCIDFont = topDict.hasName('ROS'); + var charStringOffset = topDict.getByName('CharStrings'); + var charStringIndex = this.parseIndex(charStringOffset).obj; + var fontMatrix = topDict.getByName('FontMatrix'); + if (fontMatrix) { + properties.fontMatrix = fontMatrix; + } + var fontBBox = topDict.getByName('FontBBox'); + if (fontBBox) { + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + } + var charset, encoding; + if (cff.isCIDFont) { + var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj; + for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) { + var dictRaw = fdArrayIndex.get(i); + var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings); + this.parsePrivateDict(fontDict); + cff.fdArray.push(fontDict); + } + encoding = null; + charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, true); + cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'), charStringIndex.count); + } else { + charset = this.parseCharsets(topDict.getByName('charset'), charStringIndex.count, cff.strings, false); + encoding = this.parseEncoding(topDict.getByName('Encoding'), properties, cff.strings, charset.charset); + } + cff.charset = charset; + cff.encoding = encoding; + var charStringsAndSeacs = this.parseCharStrings({ + charStrings: charStringIndex, + localSubrIndex: topDict.privateDict.subrsIndex, + globalSubrIndex: globalSubrIndex.obj, + fdSelect: cff.fdSelect, + fdArray: cff.fdArray, + privateDict: topDict.privateDict + }); + cff.charStrings = charStringsAndSeacs.charStrings; + cff.seacs = charStringsAndSeacs.seacs; + cff.widths = charStringsAndSeacs.widths; + return cff; + }, + parseHeader: function CFFParser_parseHeader() { + var bytes = this.bytes; + var bytesLength = bytes.length; + var offset = 0; + while (offset < bytesLength && bytes[offset] !== 1) { + ++offset; + } + if (offset >= bytesLength) { + throw new _util.FormatError('Invalid CFF header'); + } + if (offset !== 0) { + (0, _util.info)('cff data is shifted'); + bytes = bytes.subarray(offset); + this.bytes = bytes; + } + var major = bytes[0]; + var minor = bytes[1]; + var hdrSize = bytes[2]; + var offSize = bytes[3]; + var header = new CFFHeader(major, minor, hdrSize, offSize); + return { + obj: header, + endPos: hdrSize + }; + }, + parseDict: function CFFParser_parseDict(dict) { + var pos = 0; + function parseOperand() { + var value = dict[pos++]; + if (value === 30) { + return parseFloatOperand(); + } else if (value === 28) { + value = dict[pos++]; + value = (value << 24 | dict[pos++] << 16) >> 16; + return value; + } else if (value === 29) { + value = dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + value = value << 8 | dict[pos++]; + return value; + } else if (value >= 32 && value <= 246) { + return value - 139; + } else if (value >= 247 && value <= 250) { + return (value - 247) * 256 + dict[pos++] + 108; + } else if (value >= 251 && value <= 254) { + return -((value - 251) * 256) - dict[pos++] - 108; + } + (0, _util.warn)('CFFParser_parseDict: "' + value + '" is a reserved command.'); + return NaN; + } + function parseFloatOperand() { + var str = ''; + var eof = 15; + var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', 'E', 'E-', null, '-']; + var length = dict.length; + while (pos < length) { + var b = dict[pos++]; + var b1 = b >> 4; + var b2 = b & 15; + if (b1 === eof) { + break; + } + str += lookup[b1]; + if (b2 === eof) { + break; + } + str += lookup[b2]; + } + return parseFloat(str); + } + var operands = []; + var entries = []; + pos = 0; + var end = dict.length; + while (pos < end) { + var b = dict[pos]; + if (b <= 21) { + if (b === 12) { + b = b << 8 | dict[++pos]; + } + entries.push([b, operands]); + operands = []; + ++pos; + } else { + operands.push(parseOperand()); + } + } + return entries; + }, + parseIndex: function CFFParser_parseIndex(pos) { + var cffIndex = new CFFIndex(); + var bytes = this.bytes; + var count = bytes[pos++] << 8 | bytes[pos++]; + var offsets = []; + var end = pos; + var i, ii; + if (count !== 0) { + var offsetSize = bytes[pos++]; + var startPos = pos + (count + 1) * offsetSize - 1; + for (i = 0, ii = count + 1; i < ii; ++i) { + var offset = 0; + for (var j = 0; j < offsetSize; ++j) { + offset <<= 8; + offset += bytes[pos++]; + } + offsets.push(startPos + offset); + } + end = offsets[count]; + } + for (i = 0, ii = offsets.length - 1; i < ii; ++i) { + var offsetStart = offsets[i]; + var offsetEnd = offsets[i + 1]; + cffIndex.add(bytes.subarray(offsetStart, offsetEnd)); + } + return { + obj: cffIndex, + endPos: end + }; + }, + parseNameIndex: function CFFParser_parseNameIndex(index) { + var names = []; + for (var i = 0, ii = index.count; i < ii; ++i) { + var name = index.get(i); + var length = Math.min(name.length, 127); + var data = []; + for (var j = 0; j < length; ++j) { + var c = name[j]; + if (j === 0 && c === 0) { + data[j] = c; + continue; + } + if (c < 33 || c > 126 || c === 91 || c === 93 || c === 40 || c === 41 || c === 123 || c === 125 || c === 60 || c === 62 || c === 47 || c === 37 || c === 35) { + data[j] = 95; + continue; + } + data[j] = c; + } + names.push((0, _util.bytesToString)(data)); + } + return names; + }, + parseStringIndex: function CFFParser_parseStringIndex(index) { + var strings = new CFFStrings(); + for (var i = 0, ii = index.count; i < ii; ++i) { + var data = index.get(i); + strings.add((0, _util.bytesToString)(data)); + } + return strings; + }, + createDict: function CFFParser_createDict(Type, dict, strings) { + var cffDict = new Type(strings); + for (var i = 0, ii = dict.length; i < ii; ++i) { + var pair = dict[i]; + var key = pair[0]; + var value = pair[1]; + cffDict.setByKey(key, value); + } + return cffDict; + }, + parseCharString: function CFFParser_parseCharString(state, data, localSubrIndex, globalSubrIndex) { + if (!data || state.callDepth > MAX_SUBR_NESTING) { + return false; + } + var stackSize = state.stackSize; + var stack = state.stack; + var length = data.length; + for (var j = 0; j < length;) { + var value = data[j++]; + var validationCommand = null; + if (value === 12) { + var q = data[j++]; + if (q === 0) { + data[j - 2] = 139; + data[j - 1] = 22; + stackSize = 0; + } else { + validationCommand = CharstringValidationData12[q]; + } + } else if (value === 28) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16) >> 16; + j += 2; + stackSize++; + } else if (value === 14) { + if (stackSize >= 4) { + stackSize -= 4; + if (this.seacAnalysisEnabled) { + state.seac = stack.slice(stackSize, stackSize + 4); + return false; + } + } + validationCommand = CharstringValidationData[value]; + } else if (value >= 32 && value <= 246) { + stack[stackSize] = value - 139; + stackSize++; + } else if (value >= 247 && value <= 254) { + stack[stackSize] = value < 251 ? (value - 247 << 8) + data[j] + 108 : -(value - 251 << 8) - data[j] - 108; + j++; + stackSize++; + } else if (value === 255) { + stack[stackSize] = (data[j] << 24 | data[j + 1] << 16 | data[j + 2] << 8 | data[j + 3]) / 65536; + j += 4; + stackSize++; + } else if (value === 19 || value === 20) { + state.hints += stackSize >> 1; + j += state.hints + 7 >> 3; + stackSize %= 2; + validationCommand = CharstringValidationData[value]; + } else if (value === 10 || value === 29) { + var subrsIndex; + if (value === 10) { + subrsIndex = localSubrIndex; + } else { + subrsIndex = globalSubrIndex; + } + if (!subrsIndex) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)('Missing subrsIndex for ' + validationCommand.id); + return false; + } + var bias = 32768; + if (subrsIndex.count < 1240) { + bias = 107; + } else if (subrsIndex.count < 33900) { + bias = 1131; + } + var subrNumber = stack[--stackSize] + bias; + if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) { + validationCommand = CharstringValidationData[value]; + (0, _util.warn)('Out of bounds subrIndex for ' + validationCommand.id); + return false; + } + state.stackSize = stackSize; + state.callDepth++; + var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, globalSubrIndex); + if (!valid) { + return false; + } + state.callDepth--; + stackSize = state.stackSize; + continue; + } else if (value === 11) { + state.stackSize = stackSize; + return true; + } else { + validationCommand = CharstringValidationData[value]; + } + if (validationCommand) { + if (validationCommand.stem) { + state.hints += stackSize >> 1; + } + if ('min' in validationCommand) { + if (!state.undefStack && stackSize < validationCommand.min) { + (0, _util.warn)('Not enough parameters for ' + validationCommand.id + '; actual: ' + stackSize + ', expected: ' + validationCommand.min); + return false; + } + } + if (state.firstStackClearing && validationCommand.stackClearing) { + state.firstStackClearing = false; + stackSize -= validationCommand.min; + if (stackSize >= 2 && validationCommand.stem) { + stackSize %= 2; + } else if (stackSize > 1) { + (0, _util.warn)('Found too many parameters for stack-clearing command'); + } + if (stackSize > 0 && stack[stackSize - 1] >= 0) { + state.width = stack[stackSize - 1]; + } + } + if ('stackDelta' in validationCommand) { + if ('stackFn' in validationCommand) { + validationCommand.stackFn(stack, stackSize); + } + stackSize += validationCommand.stackDelta; + } else if (validationCommand.stackClearing) { + stackSize = 0; + } else if (validationCommand.resetStack) { + stackSize = 0; + state.undefStack = false; + } else if (validationCommand.undefStack) { + stackSize = 0; + state.undefStack = true; + state.firstStackClearing = false; + } + } + } + state.stackSize = stackSize; + return true; + }, + parseCharStrings: function parseCharStrings(_ref) { + var charStrings = _ref.charStrings, + localSubrIndex = _ref.localSubrIndex, + globalSubrIndex = _ref.globalSubrIndex, + fdSelect = _ref.fdSelect, + fdArray = _ref.fdArray, + privateDict = _ref.privateDict; + + var seacs = []; + var widths = []; + var count = charStrings.count; + for (var i = 0; i < count; i++) { + var charstring = charStrings.get(i); + var state = { + callDepth: 0, + stackSize: 0, + stack: [], + undefStack: true, + hints: 0, + firstStackClearing: true, + seac: null, + width: null + }; + var valid = true; + var localSubrToUse = null; + var privateDictToUse = privateDict; + if (fdSelect && fdArray.length) { + var fdIndex = fdSelect.getFDIndex(i); + if (fdIndex === -1) { + (0, _util.warn)('Glyph index is not in fd select.'); + valid = false; + } + if (fdIndex >= fdArray.length) { + (0, _util.warn)('Invalid fd index for glyph index.'); + valid = false; + } + if (valid) { + privateDictToUse = fdArray[fdIndex].privateDict; + localSubrToUse = privateDictToUse.subrsIndex; + } + } else if (localSubrIndex) { + localSubrToUse = localSubrIndex; + } + if (valid) { + valid = this.parseCharString(state, charstring, localSubrToUse, globalSubrIndex); + } + if (state.width !== null) { + var nominalWidth = privateDictToUse.getByName('nominalWidthX'); + widths[i] = nominalWidth + state.width; + } else { + var defaultWidth = privateDictToUse.getByName('defaultWidthX'); + widths[i] = defaultWidth; + } + if (state.seac !== null) { + seacs[i] = state.seac; + } + if (!valid) { + charStrings.set(i, new Uint8Array([14])); + } + } + return { + charStrings: charStrings, + seacs: seacs, + widths: widths + }; + }, + + emptyPrivateDictionary: function CFFParser_emptyPrivateDictionary(parentDict) { + var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings); + parentDict.setByKey(18, [0, 0]); + parentDict.privateDict = privateDict; + }, + parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) { + if (!parentDict.hasName('Private')) { + this.emptyPrivateDictionary(parentDict); + return; + } + var privateOffset = parentDict.getByName('Private'); + if (!(0, _util.isArray)(privateOffset) || privateOffset.length !== 2) { + parentDict.removeByName('Private'); + return; + } + var size = privateOffset[0]; + var offset = privateOffset[1]; + if (size === 0 || offset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + var privateDictEnd = offset + size; + var dictData = this.bytes.subarray(offset, privateDictEnd); + var dict = this.parseDict(dictData); + var privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings); + parentDict.privateDict = privateDict; + if (!privateDict.getByName('Subrs')) { + return; + } + var subrsOffset = privateDict.getByName('Subrs'); + var relativeOffset = offset + subrsOffset; + if (subrsOffset === 0 || relativeOffset >= this.bytes.length) { + this.emptyPrivateDictionary(parentDict); + return; + } + var subrsIndex = this.parseIndex(relativeOffset); + privateDict.subrsIndex = subrsIndex.obj; + }, + parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) { + if (pos === 0) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE, _charsets.ISOAdobeCharset); + } else if (pos === 1) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT, _charsets.ExpertCharset); + } else if (pos === 2) { + return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset); + } + var bytes = this.bytes; + var start = pos; + var format = bytes[pos++]; + var charset = ['.notdef']; + var id, count, i; + length -= 1; + switch (format) { + case 0: + for (i = 0; i < length; i++) { + id = bytes[pos++] << 8 | bytes[pos++]; + charset.push(cid ? id : strings.get(id)); + } + break; + case 1: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + case 2: + while (charset.length <= length) { + id = bytes[pos++] << 8 | bytes[pos++]; + count = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i <= count; i++) { + charset.push(cid ? id++ : strings.get(id++)); + } + } + break; + default: + throw new _util.FormatError('Unknown charset format'); + } + var end = pos; + var raw = bytes.subarray(start, end); + return new CFFCharset(false, format, charset, raw); + }, + parseEncoding: function CFFParser_parseEncoding(pos, properties, strings, charset) { + var encoding = Object.create(null); + var bytes = this.bytes; + var predefined = false; + var format, i, ii; + var raw = null; + function readSupplement() { + var supplementsCount = bytes[pos++]; + for (i = 0; i < supplementsCount; i++) { + var code = bytes[pos++]; + var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff); + encoding[code] = charset.indexOf(strings.get(sid)); + } + } + if (pos === 0 || pos === 1) { + predefined = true; + format = pos; + var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding; + for (i = 0, ii = charset.length; i < ii; i++) { + var index = baseEncoding.indexOf(charset[i]); + if (index !== -1) { + encoding[index] = i; + } + } + } else { + var dataStart = pos; + format = bytes[pos++]; + switch (format & 0x7f) { + case 0: + var glyphsCount = bytes[pos++]; + for (i = 1; i <= glyphsCount; i++) { + encoding[bytes[pos++]] = i; + } + break; + case 1: + var rangesCount = bytes[pos++]; + var gid = 1; + for (i = 0; i < rangesCount; i++) { + var start = bytes[pos++]; + var left = bytes[pos++]; + for (var j = start; j <= start + left; j++) { + encoding[j] = gid++; + } + } + break; + default: + throw new _util.FormatError('Unknown encoding format: ' + format + ' in CFF'); + } + var dataEnd = pos; + if (format & 0x80) { + bytes[dataStart] &= 0x7f; + readSupplement(); + } + raw = bytes.subarray(dataStart, dataEnd); + } + format = format & 0x7f; + return new CFFEncoding(predefined, format, encoding, raw); + }, + parseFDSelect: function CFFParser_parseFDSelect(pos, length) { + var start = pos; + var bytes = this.bytes; + var format = bytes[pos++]; + var fdSelect = [], + rawBytes; + var i, + invalidFirstGID = false; + switch (format) { + case 0: + for (i = 0; i < length; ++i) { + var id = bytes[pos++]; + fdSelect.push(id); + } + rawBytes = bytes.subarray(start, pos); + break; + case 3: + var rangesCount = bytes[pos++] << 8 | bytes[pos++]; + for (i = 0; i < rangesCount; ++i) { + var first = bytes[pos++] << 8 | bytes[pos++]; + if (i === 0 && first !== 0) { + (0, _util.warn)('parseFDSelect: The first range must have a first GID of 0' + ' -- trying to recover.'); + invalidFirstGID = true; + first = 0; + } + var fdIndex = bytes[pos++]; + var next = bytes[pos] << 8 | bytes[pos + 1]; + for (var j = first; j < next; ++j) { + fdSelect.push(fdIndex); + } + } + pos += 2; + rawBytes = bytes.subarray(start, pos); + if (invalidFirstGID) { + rawBytes[3] = rawBytes[4] = 0; + } + break; + default: + throw new _util.FormatError('parseFDSelect: Unknown format "' + format + '".'); + } + if (fdSelect.length !== length) { + throw new _util.FormatError('parseFDSelect: Invalid font data.'); + } + return new CFFFDSelect(fdSelect, rawBytes); + } + }; + return CFFParser; +}(); +var CFF = function CFFClosure() { + function CFF() { + this.header = null; + this.names = []; + this.topDict = null; + this.strings = new CFFStrings(); + this.globalSubrIndex = null; + this.encoding = null; + this.charset = null; + this.charStrings = null; + this.fdArray = []; + this.fdSelect = null; + this.isCIDFont = false; + } + return CFF; +}(); +var CFFHeader = function CFFHeaderClosure() { + function CFFHeader(major, minor, hdrSize, offSize) { + this.major = major; + this.minor = minor; + this.hdrSize = hdrSize; + this.offSize = offSize; + } + return CFFHeader; +}(); +var CFFStrings = function CFFStringsClosure() { + function CFFStrings() { + this.strings = []; + } + CFFStrings.prototype = { + get: function CFFStrings_get(index) { + if (index >= 0 && index <= 390) { + return CFFStandardStrings[index]; + } + if (index - 391 <= this.strings.length) { + return this.strings[index - 391]; + } + return CFFStandardStrings[0]; + }, + add: function CFFStrings_add(value) { + this.strings.push(value); + }, + get count() { + return this.strings.length; + } + }; + return CFFStrings; +}(); +var CFFIndex = function CFFIndexClosure() { + function CFFIndex() { + this.objects = []; + this.length = 0; + } + CFFIndex.prototype = { + add: function CFFIndex_add(data) { + this.length += data.length; + this.objects.push(data); + }, + set: function CFFIndex_set(index, data) { + this.length += data.length - this.objects[index].length; + this.objects[index] = data; + }, + get: function CFFIndex_get(index) { + return this.objects[index]; + }, + get count() { + return this.objects.length; + } + }; + return CFFIndex; +}(); +var CFFDict = function CFFDictClosure() { + function CFFDict(tables, strings) { + this.keyToNameMap = tables.keyToNameMap; + this.nameToKeyMap = tables.nameToKeyMap; + this.defaults = tables.defaults; + this.types = tables.types; + this.opcodes = tables.opcodes; + this.order = tables.order; + this.strings = strings; + this.values = Object.create(null); + } + CFFDict.prototype = { + setByKey: function CFFDict_setByKey(key, value) { + if (!(key in this.keyToNameMap)) { + return false; + } + var valueLength = value.length; + if (valueLength === 0) { + return true; + } + for (var i = 0; i < valueLength; i++) { + if (isNaN(value[i])) { + (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".'); + return true; + } + } + var type = this.types[key]; + if (type === 'num' || type === 'sid' || type === 'offset') { + value = value[0]; + } + this.values[key] = value; + return true; + }, + setByName: function CFFDict_setByName(name, value) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError('Invalid dictionary name "' + name + '"'); + } + this.values[this.nameToKeyMap[name]] = value; + }, + hasName: function CFFDict_hasName(name) { + return this.nameToKeyMap[name] in this.values; + }, + getByName: function CFFDict_getByName(name) { + if (!(name in this.nameToKeyMap)) { + throw new _util.FormatError('Invalid dictionary name ' + name + '"'); + } + var key = this.nameToKeyMap[name]; + if (!(key in this.values)) { + return this.defaults[key]; + } + return this.values[key]; + }, + removeByName: function CFFDict_removeByName(name) { + delete this.values[this.nameToKeyMap[name]]; + } + }; + CFFDict.createTables = function CFFDict_createTables(layout) { + var tables = { + keyToNameMap: {}, + nameToKeyMap: {}, + defaults: {}, + types: {}, + opcodes: {}, + order: [] + }; + for (var i = 0, ii = layout.length; i < ii; ++i) { + var entry = layout[i]; + var key = (0, _util.isArray)(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0]; + tables.keyToNameMap[key] = entry[1]; + tables.nameToKeyMap[entry[1]] = key; + tables.types[key] = entry[2]; + tables.defaults[key] = entry[3]; + tables.opcodes[key] = (0, _util.isArray)(entry[0]) ? entry[0] : [entry[0]]; + tables.order.push(key); + } + return tables; + }; + return CFFDict; +}(); +var CFFTopDict = function CFFTopDictClosure() { + var layout = [[[12, 30], 'ROS', ['sid', 'sid', 'num'], null], [[12, 20], 'SyntheticBase', 'num', null], [0, 'version', 'sid', null], [1, 'Notice', 'sid', null], [[12, 0], 'Copyright', 'sid', null], [2, 'FullName', 'sid', null], [3, 'FamilyName', 'sid', null], [4, 'Weight', 'sid', null], [[12, 1], 'isFixedPitch', 'num', 0], [[12, 2], 'ItalicAngle', 'num', 0], [[12, 3], 'UnderlinePosition', 'num', -100], [[12, 4], 'UnderlineThickness', 'num', 50], [[12, 5], 'PaintType', 'num', 0], [[12, 6], 'CharstringType', 'num', 2], [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'], [0.001, 0, 0, 0.001, 0, 0]], [13, 'UniqueID', 'num', null], [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]], [[12, 8], 'StrokeWidth', 'num', 0], [14, 'XUID', 'array', null], [15, 'charset', 'offset', 0], [16, 'Encoding', 'offset', 0], [17, 'CharStrings', 'offset', 0], [18, 'Private', ['offset', 'offset'], null], [[12, 21], 'PostScript', 'sid', null], [[12, 22], 'BaseFontName', 'sid', null], [[12, 23], 'BaseFontBlend', 'delta', null], [[12, 31], 'CIDFontVersion', 'num', 0], [[12, 32], 'CIDFontRevision', 'num', 0], [[12, 33], 'CIDFontType', 'num', 0], [[12, 34], 'CIDCount', 'num', 8720], [[12, 35], 'UIDBase', 'num', null], [[12, 37], 'FDSelect', 'offset', null], [[12, 36], 'FDArray', 'offset', null], [[12, 38], 'FontName', 'sid', null]]; + var tables = null; + function CFFTopDict(strings) { + if (tables === null) { + tables = CFFDict.createTables(layout); + } + CFFDict.call(this, tables, strings); + this.privateDict = null; + } + CFFTopDict.prototype = Object.create(CFFDict.prototype); + return CFFTopDict; +}(); +var CFFPrivateDict = function CFFPrivateDictClosure() { + var layout = [[6, 'BlueValues', 'delta', null], [7, 'OtherBlues', 'delta', null], [8, 'FamilyBlues', 'delta', null], [9, 'FamilyOtherBlues', 'delta', null], [[12, 9], 'BlueScale', 'num', 0.039625], [[12, 10], 'BlueShift', 'num', 7], [[12, 11], 'BlueFuzz', 'num', 1], [10, 'StdHW', 'num', null], [11, 'StdVW', 'num', null], [[12, 12], 'StemSnapH', 'delta', null], [[12, 13], 'StemSnapV', 'delta', null], [[12, 14], 'ForceBold', 'num', 0], [[12, 17], 'LanguageGroup', 'num', 0], [[12, 18], 'ExpansionFactor', 'num', 0.06], [[12, 19], 'initialRandomSeed', 'num', 0], [20, 'defaultWidthX', 'num', 0], [21, 'nominalWidthX', 'num', 0], [19, 'Subrs', 'offset', null]]; + var tables = null; + function CFFPrivateDict(strings) { + if (tables === null) { + tables = CFFDict.createTables(layout); + } + CFFDict.call(this, tables, strings); + this.subrsIndex = null; + } + CFFPrivateDict.prototype = Object.create(CFFDict.prototype); + return CFFPrivateDict; +}(); +var CFFCharsetPredefinedTypes = { + ISO_ADOBE: 0, + EXPERT: 1, + EXPERT_SUBSET: 2 +}; +var CFFCharset = function CFFCharsetClosure() { + function CFFCharset(predefined, format, charset, raw) { + this.predefined = predefined; + this.format = format; + this.charset = charset; + this.raw = raw; + } + return CFFCharset; +}(); +var CFFEncoding = function CFFEncodingClosure() { + function CFFEncoding(predefined, format, encoding, raw) { + this.predefined = predefined; + this.format = format; + this.encoding = encoding; + this.raw = raw; + } + return CFFEncoding; +}(); +var CFFFDSelect = function CFFFDSelectClosure() { + function CFFFDSelect(fdSelect, raw) { + this.fdSelect = fdSelect; + this.raw = raw; + } + CFFFDSelect.prototype = { + getFDIndex: function CFFFDSelect_get(glyphIndex) { + if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) { + return -1; + } + return this.fdSelect[glyphIndex]; + } + }; + return CFFFDSelect; +}(); +var CFFOffsetTracker = function CFFOffsetTrackerClosure() { + function CFFOffsetTracker() { + this.offsets = Object.create(null); + } + CFFOffsetTracker.prototype = { + isTracking: function CFFOffsetTracker_isTracking(key) { + return key in this.offsets; + }, + track: function CFFOffsetTracker_track(key, location) { + if (key in this.offsets) { + throw new _util.FormatError('Already tracking location of ' + key); + } + this.offsets[key] = location; + }, + offset: function CFFOffsetTracker_offset(value) { + for (var key in this.offsets) { + this.offsets[key] += value; + } + }, + setEntryLocation: function CFFOffsetTracker_setEntryLocation(key, values, output) { + if (!(key in this.offsets)) { + throw new _util.FormatError('Not tracking location of ' + key); + } + var data = output.data; + var dataOffset = this.offsets[key]; + var size = 5; + for (var i = 0, ii = values.length; i < ii; ++i) { + var offset0 = i * size + dataOffset; + var offset1 = offset0 + 1; + var offset2 = offset0 + 2; + var offset3 = offset0 + 3; + var offset4 = offset0 + 4; + if (data[offset0] !== 0x1d || data[offset1] !== 0 || data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) { + throw new _util.FormatError('writing to an offset that is not empty'); + } + var value = values[i]; + data[offset0] = 0x1d; + data[offset1] = value >> 24 & 0xFF; + data[offset2] = value >> 16 & 0xFF; + data[offset3] = value >> 8 & 0xFF; + data[offset4] = value & 0xFF; + } + } + }; + return CFFOffsetTracker; +}(); +var CFFCompiler = function CFFCompilerClosure() { + function CFFCompiler(cff) { + this.cff = cff; + } + CFFCompiler.prototype = { + compile: function CFFCompiler_compile() { + var cff = this.cff; + var output = { + data: [], + length: 0, + add: function CFFCompiler_add(data) { + this.data = this.data.concat(data); + this.length = this.data.length; + } + }; + var header = this.compileHeader(cff.header); + output.add(header); + var nameIndex = this.compileNameIndex(cff.names); + output.add(nameIndex); + if (cff.isCIDFont) { + if (cff.topDict.hasName('FontMatrix')) { + var base = cff.topDict.getByName('FontMatrix'); + cff.topDict.removeByName('FontMatrix'); + for (var i = 0, ii = cff.fdArray.length; i < ii; i++) { + var subDict = cff.fdArray[i]; + var matrix = base.slice(0); + if (subDict.hasName('FontMatrix')) { + matrix = _util.Util.transform(matrix, subDict.getByName('FontMatrix')); + } + subDict.setByName('FontMatrix', matrix); + } + } + } + var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont); + output.add(compiled.output); + var topDictTracker = compiled.trackers[0]; + var stringIndex = this.compileStringIndex(cff.strings.strings); + output.add(stringIndex); + var globalSubrIndex = this.compileIndex(cff.globalSubrIndex); + output.add(globalSubrIndex); + if (cff.encoding && cff.topDict.hasName('Encoding')) { + if (cff.encoding.predefined) { + topDictTracker.setEntryLocation('Encoding', [cff.encoding.format], output); + } else { + var encoding = this.compileEncoding(cff.encoding); + topDictTracker.setEntryLocation('Encoding', [output.length], output); + output.add(encoding); + } + } + if (cff.charset && cff.topDict.hasName('charset')) { + if (cff.charset.predefined) { + topDictTracker.setEntryLocation('charset', [cff.charset.format], output); + } else { + var charset = this.compileCharset(cff.charset); + topDictTracker.setEntryLocation('charset', [output.length], output); + output.add(charset); + } + } + var charStrings = this.compileCharStrings(cff.charStrings); + topDictTracker.setEntryLocation('CharStrings', [output.length], output); + output.add(charStrings); + if (cff.isCIDFont) { + topDictTracker.setEntryLocation('FDSelect', [output.length], output); + var fdSelect = this.compileFDSelect(cff.fdSelect.raw); + output.add(fdSelect); + compiled = this.compileTopDicts(cff.fdArray, output.length, true); + topDictTracker.setEntryLocation('FDArray', [output.length], output); + output.add(compiled.output); + var fontDictTrackers = compiled.trackers; + this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output); + } + this.compilePrivateDicts([cff.topDict], [topDictTracker], output); + output.add([0]); + return output.data; + }, + encodeNumber: function CFFCompiler_encodeNumber(value) { + if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { + return this.encodeInteger(value); + } + return this.encodeFloat(value); + }, + encodeFloat: function CFFCompiler_encodeFloat(num) { + var value = num.toString(); + var m = /\.(\d*?)(?:9{5,20}|0{5,20})\d{0,2}(?:e(.+)|$)/.exec(value); + if (m) { + var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length)); + value = (Math.round(num * epsilon) / epsilon).toString(); + } + var nibbles = ''; + var i, ii; + for (i = 0, ii = value.length; i < ii; ++i) { + var a = value[i]; + if (a === 'e') { + nibbles += value[++i] === '-' ? 'c' : 'b'; + } else if (a === '.') { + nibbles += 'a'; + } else if (a === '-') { + nibbles += 'e'; + } else { + nibbles += a; + } + } + nibbles += nibbles.length & 1 ? 'f' : 'ff'; + var out = [30]; + for (i = 0, ii = nibbles.length; i < ii; i += 2) { + out.push(parseInt(nibbles.substr(i, 2), 16)); + } + return out; + }, + encodeInteger: function CFFCompiler_encodeInteger(value) { + var code; + if (value >= -107 && value <= 107) { + code = [value + 139]; + } else if (value >= 108 && value <= 1131) { + value = value - 108; + code = [(value >> 8) + 247, value & 0xFF]; + } else if (value >= -1131 && value <= -108) { + value = -value - 108; + code = [(value >> 8) + 251, value & 0xFF]; + } else if (value >= -32768 && value <= 32767) { + code = [0x1c, value >> 8 & 0xFF, value & 0xFF]; + } else { + code = [0x1d, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF]; + } + return code; + }, + compileHeader: function CFFCompiler_compileHeader(header) { + return [header.major, header.minor, header.hdrSize, header.offSize]; + }, + compileNameIndex: function CFFCompiler_compileNameIndex(names) { + var nameIndex = new CFFIndex(); + for (var i = 0, ii = names.length; i < ii; ++i) { + nameIndex.add((0, _util.stringToBytes)(names[i])); + } + return this.compileIndex(nameIndex); + }, + compileTopDicts: function CFFCompiler_compileTopDicts(dicts, length, removeCidKeys) { + var fontDictTrackers = []; + var fdArrayIndex = new CFFIndex(); + for (var i = 0, ii = dicts.length; i < ii; ++i) { + var fontDict = dicts[i]; + if (removeCidKeys) { + fontDict.removeByName('CIDFontVersion'); + fontDict.removeByName('CIDFontRevision'); + fontDict.removeByName('CIDFontType'); + fontDict.removeByName('CIDCount'); + fontDict.removeByName('UIDBase'); + } + var fontDictTracker = new CFFOffsetTracker(); + var fontDictData = this.compileDict(fontDict, fontDictTracker); + fontDictTrackers.push(fontDictTracker); + fdArrayIndex.add(fontDictData); + fontDictTracker.offset(length); + } + fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers); + return { + trackers: fontDictTrackers, + output: fdArrayIndex + }; + }, + compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts, trackers, output) { + for (var i = 0, ii = dicts.length; i < ii; ++i) { + var fontDict = dicts[i]; + var privateDict = fontDict.privateDict; + if (!privateDict || !fontDict.hasName('Private')) { + throw new _util.FormatError('There must be a private dictionary.'); + } + var privateDictTracker = new CFFOffsetTracker(); + var privateDictData = this.compileDict(privateDict, privateDictTracker); + var outputLength = output.length; + privateDictTracker.offset(outputLength); + if (!privateDictData.length) { + outputLength = 0; + } + trackers[i].setEntryLocation('Private', [privateDictData.length, outputLength], output); + output.add(privateDictData); + if (privateDict.subrsIndex && privateDict.hasName('Subrs')) { + var subrs = this.compileIndex(privateDict.subrsIndex); + privateDictTracker.setEntryLocation('Subrs', [privateDictData.length], output); + output.add(subrs); + } + } + }, + compileDict: function CFFCompiler_compileDict(dict, offsetTracker) { + var out = []; + var order = dict.order; + for (var i = 0; i < order.length; ++i) { + var key = order[i]; + if (!(key in dict.values)) { + continue; + } + var values = dict.values[key]; + var types = dict.types[key]; + if (!(0, _util.isArray)(types)) { + types = [types]; + } + if (!(0, _util.isArray)(values)) { + values = [values]; + } + if (values.length === 0) { + continue; + } + for (var j = 0, jj = types.length; j < jj; ++j) { + var type = types[j]; + var value = values[j]; + switch (type) { + case 'num': + case 'sid': + out = out.concat(this.encodeNumber(value)); + break; + case 'offset': + var name = dict.keyToNameMap[key]; + if (!offsetTracker.isTracking(name)) { + offsetTracker.track(name, out.length); + } + out = out.concat([0x1d, 0, 0, 0, 0]); + break; + case 'array': + case 'delta': + out = out.concat(this.encodeNumber(value)); + for (var k = 1, kk = values.length; k < kk; ++k) { + out = out.concat(this.encodeNumber(values[k])); + } + break; + default: + throw new _util.FormatError('Unknown data type of ' + type); + } + } + out = out.concat(dict.opcodes[key]); + } + return out; + }, + compileStringIndex: function CFFCompiler_compileStringIndex(strings) { + var stringIndex = new CFFIndex(); + for (var i = 0, ii = strings.length; i < ii; ++i) { + stringIndex.add((0, _util.stringToBytes)(strings[i])); + } + return this.compileIndex(stringIndex); + }, + compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() { + var globalSubrIndex = this.cff.globalSubrIndex; + this.out.writeByteArray(this.compileIndex(globalSubrIndex)); + }, + compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) { + return this.compileIndex(charStrings); + }, + compileCharset: function CFFCompiler_compileCharset(charset) { + return this.compileTypedArray(charset.raw); + }, + compileEncoding: function CFFCompiler_compileEncoding(encoding) { + return this.compileTypedArray(encoding.raw); + }, + compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) { + return this.compileTypedArray(fdSelect); + }, + compileTypedArray: function CFFCompiler_compileTypedArray(data) { + var out = []; + for (var i = 0, ii = data.length; i < ii; ++i) { + out[i] = data[i]; + } + return out; + }, + compileIndex: function CFFCompiler_compileIndex(index, trackers) { + trackers = trackers || []; + var objects = index.objects; + var count = objects.length; + if (count === 0) { + return [0, 0, 0]; + } + var data = [count >> 8 & 0xFF, count & 0xff]; + var lastOffset = 1, + i; + for (i = 0; i < count; ++i) { + lastOffset += objects[i].length; + } + var offsetSize; + if (lastOffset < 0x100) { + offsetSize = 1; + } else if (lastOffset < 0x10000) { + offsetSize = 2; + } else if (lastOffset < 0x1000000) { + offsetSize = 3; + } else { + offsetSize = 4; + } + data.push(offsetSize); + var relativeOffset = 1; + for (i = 0; i < count + 1; i++) { + if (offsetSize === 1) { + data.push(relativeOffset & 0xFF); + } else if (offsetSize === 2) { + data.push(relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); + } else if (offsetSize === 3) { + data.push(relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); + } else { + data.push(relativeOffset >>> 24 & 0xFF, relativeOffset >> 16 & 0xFF, relativeOffset >> 8 & 0xFF, relativeOffset & 0xFF); + } + if (objects[i]) { + relativeOffset += objects[i].length; + } + } + for (i = 0; i < count; i++) { + if (trackers[i]) { + trackers[i].offset(data.length); + } + for (var j = 0, jj = objects[i].length; j < jj; j++) { + data.push(objects[i][j]); + } + } + return data; + } + }; + return CFFCompiler; +}(); +exports.CFFStandardStrings = CFFStandardStrings; +exports.CFFParser = CFFParser; +exports.CFF = CFF; +exports.CFFHeader = CFFHeader; +exports.CFFStrings = CFFStrings; +exports.CFFIndex = CFFIndex; +exports.CFFCharset = CFFCharset; +exports.CFFTopDict = CFFTopDict; +exports.CFFPrivateDict = CFFPrivateDict; +exports.CFFCompiler = CFFCompiler; + +/***/ }), +/* 11 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ChunkedStreamManager = exports.ChunkedStream = undefined; + +var _util = __w_pdfjs_require__(0); + +var ChunkedStream = function ChunkedStreamClosure() { + function ChunkedStream(length, chunkSize, manager) { + this.bytes = new Uint8Array(length); + this.start = 0; + this.pos = 0; + this.end = length; + this.chunkSize = chunkSize; + this.loadedChunks = []; + this.numChunksLoaded = 0; + this.numChunks = Math.ceil(length / chunkSize); + this.manager = manager; + this.progressiveDataLength = 0; + this.lastSuccessfulEnsureByteChunk = -1; + } + ChunkedStream.prototype = { + getMissingChunks: function ChunkedStream_getMissingChunks() { + var chunks = []; + for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) { + if (!this.loadedChunks[chunk]) { + chunks.push(chunk); + } + } + return chunks; + }, + getBaseStreams: function ChunkedStream_getBaseStreams() { + return [this]; + }, + allChunksLoaded: function ChunkedStream_allChunksLoaded() { + return this.numChunksLoaded === this.numChunks; + }, + onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) { + var end = begin + chunk.byteLength; + if (begin % this.chunkSize !== 0) { + throw new Error('Bad begin offset: ' + begin); + } + var length = this.bytes.length; + if (end % this.chunkSize !== 0 && end !== length) { + throw new Error('Bad end offset: ' + end); + } + this.bytes.set(new Uint8Array(chunk), begin); + var chunkSize = this.chunkSize; + var beginChunk = Math.floor(begin / chunkSize); + var endChunk = Math.floor((end - 1) / chunkSize) + 1; + var curChunk; + for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + if (!this.loadedChunks[curChunk]) { + this.loadedChunks[curChunk] = true; + ++this.numChunksLoaded; + } + } + }, + onReceiveProgressiveData: function ChunkedStream_onReceiveProgressiveData(data) { + var position = this.progressiveDataLength; + var beginChunk = Math.floor(position / this.chunkSize); + this.bytes.set(new Uint8Array(data), position); + position += data.byteLength; + this.progressiveDataLength = position; + var endChunk = position >= this.end ? this.numChunks : Math.floor(position / this.chunkSize); + var curChunk; + for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) { + if (!this.loadedChunks[curChunk]) { + this.loadedChunks[curChunk] = true; + ++this.numChunksLoaded; + } + } + }, + ensureByte: function ChunkedStream_ensureByte(pos) { + var chunk = Math.floor(pos / this.chunkSize); + if (chunk === this.lastSuccessfulEnsureByteChunk) { + return; + } + if (!this.loadedChunks[chunk]) { + throw new _util.MissingDataException(pos, pos + 1); + } + this.lastSuccessfulEnsureByteChunk = chunk; + }, + ensureRange: function ChunkedStream_ensureRange(begin, end) { + if (begin >= end) { + return; + } + if (end <= this.progressiveDataLength) { + return; + } + var chunkSize = this.chunkSize; + var beginChunk = Math.floor(begin / chunkSize); + var endChunk = Math.floor((end - 1) / chunkSize) + 1; + for (var chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this.loadedChunks[chunk]) { + throw new _util.MissingDataException(begin, end); + } + } + }, + nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) { + var chunk, + numChunks = this.numChunks; + for (var i = 0; i < numChunks; ++i) { + chunk = (beginChunk + i) % numChunks; + if (!this.loadedChunks[chunk]) { + return chunk; + } + } + return null; + }, + hasChunk: function ChunkedStream_hasChunk(chunk) { + return !!this.loadedChunks[chunk]; + }, + get length() { + return this.end - this.start; + }, + get isEmpty() { + return this.length === 0; + }, + getByte: function ChunkedStream_getByte() { + var pos = this.pos; + if (pos >= this.end) { + return -1; + } + this.ensureByte(pos); + return this.bytes[this.pos++]; + }, + getUint16: function ChunkedStream_getUint16() { + var b0 = this.getByte(); + var b1 = this.getByte(); + if (b0 === -1 || b1 === -1) { + return -1; + } + return (b0 << 8) + b1; + }, + getInt32: function ChunkedStream_getInt32() { + var b0 = this.getByte(); + var b1 = this.getByte(); + var b2 = this.getByte(); + var b3 = this.getByte(); + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + }, + getBytes: function ChunkedStream_getBytes(length) { + var bytes = this.bytes; + var pos = this.pos; + var strEnd = this.end; + if (!length) { + this.ensureRange(pos, strEnd); + return bytes.subarray(pos, strEnd); + } + var end = pos + length; + if (end > strEnd) { + end = strEnd; + } + this.ensureRange(pos, end); + this.pos = end; + return bytes.subarray(pos, end); + }, + peekByte: function ChunkedStream_peekByte() { + var peekedByte = this.getByte(); + this.pos--; + return peekedByte; + }, + peekBytes: function ChunkedStream_peekBytes(length) { + var bytes = this.getBytes(length); + this.pos -= bytes.length; + return bytes; + }, + getByteRange: function ChunkedStream_getBytes(begin, end) { + this.ensureRange(begin, end); + return this.bytes.subarray(begin, end); + }, + skip: function ChunkedStream_skip(n) { + if (!n) { + n = 1; + } + this.pos += n; + }, + reset: function ChunkedStream_reset() { + this.pos = this.start; + }, + moveStart: function ChunkedStream_moveStart() { + this.start = this.pos; + }, + makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) { + this.ensureRange(start, start + length); + function ChunkedStreamSubstream() {} + ChunkedStreamSubstream.prototype = Object.create(this); + ChunkedStreamSubstream.prototype.getMissingChunks = function () { + var chunkSize = this.chunkSize; + var beginChunk = Math.floor(this.start / chunkSize); + var endChunk = Math.floor((this.end - 1) / chunkSize) + 1; + var missingChunks = []; + for (var chunk = beginChunk; chunk < endChunk; ++chunk) { + if (!this.loadedChunks[chunk]) { + missingChunks.push(chunk); + } + } + return missingChunks; + }; + var subStream = new ChunkedStreamSubstream(); + subStream.pos = subStream.start = start; + subStream.end = start + length || this.end; + subStream.dict = dict; + return subStream; + } + }; + return ChunkedStream; +}(); +var ChunkedStreamManager = function ChunkedStreamManagerClosure() { + function ChunkedStreamManager(pdfNetworkStream, args) { + var chunkSize = args.rangeChunkSize; + var length = args.length; + this.stream = new ChunkedStream(length, chunkSize, this); + this.length = length; + this.chunkSize = chunkSize; + this.pdfNetworkStream = pdfNetworkStream; + this.url = args.url; + this.disableAutoFetch = args.disableAutoFetch; + this.msgHandler = args.msgHandler; + this.currRequestId = 0; + this.chunksNeededByRequest = Object.create(null); + this.requestsByChunk = Object.create(null); + this.promisesByRequest = Object.create(null); + this.progressiveDataLength = 0; + this.aborted = false; + this._loadedStreamCapability = (0, _util.createPromiseCapability)(); + } + ChunkedStreamManager.prototype = { + onLoadedStream: function ChunkedStreamManager_getLoadedStream() { + return this._loadedStreamCapability.promise; + }, + sendRequest: function ChunkedStreamManager_sendRequest(begin, end) { + var _this = this; + + var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end); + if (!rangeReader.isStreamingSupported) { + rangeReader.onProgress = this.onProgress.bind(this); + } + var chunks = [], + loaded = 0; + var manager = this; + var promise = new Promise(function (resolve, reject) { + var readChunk = function readChunk(chunk) { + try { + if (!chunk.done) { + var data = chunk.value; + chunks.push(data); + loaded += (0, _util.arrayByteLength)(data); + if (rangeReader.isStreamingSupported) { + manager.onProgress({ loaded: loaded }); + } + rangeReader.read().then(readChunk, reject); + return; + } + var chunkData = (0, _util.arraysToBytes)(chunks); + chunks = null; + resolve(chunkData); + } catch (e) { + reject(e); + } + }; + rangeReader.read().then(readChunk, reject); + }); + promise.then(function (data) { + if (_this.aborted) { + return; + } + _this.onReceiveData({ + chunk: data, + begin: begin + }); + }); + }, + requestAllChunks: function ChunkedStreamManager_requestAllChunks() { + var missingChunks = this.stream.getMissingChunks(); + this._requestChunks(missingChunks); + return this._loadedStreamCapability.promise; + }, + _requestChunks: function ChunkedStreamManager_requestChunks(chunks) { + var requestId = this.currRequestId++; + var i, ii; + var chunksNeeded = Object.create(null); + this.chunksNeededByRequest[requestId] = chunksNeeded; + for (i = 0, ii = chunks.length; i < ii; i++) { + if (!this.stream.hasChunk(chunks[i])) { + chunksNeeded[chunks[i]] = true; + } + } + if ((0, _util.isEmptyObj)(chunksNeeded)) { + return Promise.resolve(); + } + var capability = (0, _util.createPromiseCapability)(); + this.promisesByRequest[requestId] = capability; + var chunksToRequest = []; + for (var chunk in chunksNeeded) { + chunk = chunk | 0; + if (!(chunk in this.requestsByChunk)) { + this.requestsByChunk[chunk] = []; + chunksToRequest.push(chunk); + } + this.requestsByChunk[chunk].push(requestId); + } + if (!chunksToRequest.length) { + return capability.promise; + } + var groupedChunksToRequest = this.groupChunks(chunksToRequest); + for (i = 0; i < groupedChunksToRequest.length; ++i) { + var groupedChunk = groupedChunksToRequest[i]; + var begin = groupedChunk.beginChunk * this.chunkSize; + var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length); + this.sendRequest(begin, end); + } + return capability.promise; + }, + getStream: function ChunkedStreamManager_getStream() { + return this.stream; + }, + requestRange: function ChunkedStreamManager_requestRange(begin, end) { + end = Math.min(end, this.length); + var beginChunk = this.getBeginChunk(begin); + var endChunk = this.getEndChunk(end); + var chunks = []; + for (var chunk = beginChunk; chunk < endChunk; ++chunk) { + chunks.push(chunk); + } + return this._requestChunks(chunks); + }, + requestRanges: function ChunkedStreamManager_requestRanges(ranges) { + ranges = ranges || []; + var chunksToRequest = []; + for (var i = 0; i < ranges.length; i++) { + var beginChunk = this.getBeginChunk(ranges[i].begin); + var endChunk = this.getEndChunk(ranges[i].end); + for (var chunk = beginChunk; chunk < endChunk; ++chunk) { + if (chunksToRequest.indexOf(chunk) < 0) { + chunksToRequest.push(chunk); + } + } + } + chunksToRequest.sort(function (a, b) { + return a - b; + }); + return this._requestChunks(chunksToRequest); + }, + groupChunks: function ChunkedStreamManager_groupChunks(chunks) { + var groupedChunks = []; + var beginChunk = -1; + var prevChunk = -1; + for (var i = 0; i < chunks.length; ++i) { + var chunk = chunks[i]; + if (beginChunk < 0) { + beginChunk = chunk; + } + if (prevChunk >= 0 && prevChunk + 1 !== chunk) { + groupedChunks.push({ + beginChunk: beginChunk, + endChunk: prevChunk + 1 + }); + beginChunk = chunk; + } + if (i + 1 === chunks.length) { + groupedChunks.push({ + beginChunk: beginChunk, + endChunk: chunk + 1 + }); + } + prevChunk = chunk; + } + return groupedChunks; + }, + onProgress: function ChunkedStreamManager_onProgress(args) { + var bytesLoaded = this.stream.numChunksLoaded * this.chunkSize + args.loaded; + this.msgHandler.send('DocProgress', { + loaded: bytesLoaded, + total: this.length + }); + }, + onReceiveData: function ChunkedStreamManager_onReceiveData(args) { + var chunk = args.chunk; + var isProgressive = args.begin === undefined; + var begin = isProgressive ? this.progressiveDataLength : args.begin; + var end = begin + chunk.byteLength; + var beginChunk = Math.floor(begin / this.chunkSize); + var endChunk = end < this.length ? Math.floor(end / this.chunkSize) : Math.ceil(end / this.chunkSize); + if (isProgressive) { + this.stream.onReceiveProgressiveData(chunk); + this.progressiveDataLength = end; + } else { + this.stream.onReceiveData(begin, chunk); + } + if (this.stream.allChunksLoaded()) { + this._loadedStreamCapability.resolve(this.stream); + } + var loadedRequests = []; + var i, requestId; + for (chunk = beginChunk; chunk < endChunk; ++chunk) { + var requestIds = this.requestsByChunk[chunk] || []; + delete this.requestsByChunk[chunk]; + for (i = 0; i < requestIds.length; ++i) { + requestId = requestIds[i]; + var chunksNeeded = this.chunksNeededByRequest[requestId]; + if (chunk in chunksNeeded) { + delete chunksNeeded[chunk]; + } + if (!(0, _util.isEmptyObj)(chunksNeeded)) { + continue; + } + loadedRequests.push(requestId); + } + } + if (!this.disableAutoFetch && (0, _util.isEmptyObj)(this.requestsByChunk)) { + var nextEmptyChunk; + if (this.stream.numChunksLoaded === 1) { + var lastChunk = this.stream.numChunks - 1; + if (!this.stream.hasChunk(lastChunk)) { + nextEmptyChunk = lastChunk; + } + } else { + nextEmptyChunk = this.stream.nextEmptyChunk(endChunk); + } + if ((0, _util.isInt)(nextEmptyChunk)) { + this._requestChunks([nextEmptyChunk]); + } + } + for (i = 0; i < loadedRequests.length; ++i) { + requestId = loadedRequests[i]; + var capability = this.promisesByRequest[requestId]; + delete this.promisesByRequest[requestId]; + capability.resolve(); + } + this.msgHandler.send('DocProgress', { + loaded: this.stream.numChunksLoaded * this.chunkSize, + total: this.length + }); + }, + onError: function ChunkedStreamManager_onError(err) { + this._loadedStreamCapability.reject(err); + }, + getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) { + var chunk = Math.floor(begin / this.chunkSize); + return chunk; + }, + getEndChunk: function ChunkedStreamManager_getEndChunk(end) { + var chunk = Math.floor((end - 1) / this.chunkSize) + 1; + return chunk; + }, + abort: function ChunkedStreamManager_abort() { + this.aborted = true; + if (this.pdfNetworkStream) { + this.pdfNetworkStream.cancelAllRequests('abort'); + } + for (var requestId in this.promisesByRequest) { + var capability = this.promisesByRequest[requestId]; + capability.reject(new Error('Request was aborted')); + } + } + }; + return ChunkedStreamManager; +}(); +exports.ChunkedStream = ChunkedStream; +exports.ChunkedStreamManager = ChunkedStreamManager; + +/***/ }), +/* 12 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.calculateSHA512 = exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.ARCFourCipher = exports.AES256Cipher = exports.AES128Cipher = undefined; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _stream = __w_pdfjs_require__(2); + +var ARCFourCipher = function ARCFourCipherClosure() { + function ARCFourCipher(key) { + this.a = 0; + this.b = 0; + var s = new Uint8Array(256); + var i, + j = 0, + tmp, + keyLength = key.length; + for (i = 0; i < 256; ++i) { + s[i] = i; + } + for (i = 0; i < 256; ++i) { + tmp = s[i]; + j = j + tmp + key[i % keyLength] & 0xFF; + s[i] = s[j]; + s[j] = tmp; + } + this.s = s; + } + ARCFourCipher.prototype = { + encryptBlock: function ARCFourCipher_encryptBlock(data) { + var i, + n = data.length, + tmp, + tmp2; + var a = this.a, + b = this.b, + s = this.s; + var output = new Uint8Array(n); + for (i = 0; i < n; ++i) { + a = a + 1 & 0xFF; + tmp = s[a]; + b = b + tmp & 0xFF; + tmp2 = s[b]; + s[a] = tmp2; + s[b] = tmp; + output[i] = data[i] ^ s[tmp + tmp2 & 0xFF]; + } + this.a = a; + this.b = b; + return output; + } + }; + ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock; + return ARCFourCipher; +}(); +var calculateMD5 = function calculateMD5Closure() { + var r = new Uint8Array([7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]); + var k = new Int32Array([-680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426, -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162, 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632, 643717713, -373897302, -701558691, 38016083, -660478335, -405537848, 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784, 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556, -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222, -722521979, 76029189, -640364487, -421815835, 530742520, -995338651, -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606, -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649, -145523070, -1120210379, 718787259, -343485551]); + function hash(data, offset, length) { + var h0 = 1732584193, + h1 = -271733879, + h2 = -1732584194, + h3 = 271733878; + var paddedLength = length + 72 & ~63; + var padded = new Uint8Array(paddedLength); + var i, j, n; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + n = paddedLength - 8; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = length << 3 & 0xFF; + padded[i++] = length >> 5 & 0xFF; + padded[i++] = length >> 13 & 0xFF; + padded[i++] = length >> 21 & 0xFF; + padded[i++] = length >>> 29 & 0xFF; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + var w = new Int32Array(16); + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j, i += 4) { + w[j] = padded[i] | padded[i + 1] << 8 | padded[i + 2] << 16 | padded[i + 3] << 24; + } + var a = h0, + b = h1, + c = h2, + d = h3, + f, + g; + for (j = 0; j < 64; ++j) { + if (j < 16) { + f = b & c | ~b & d; + g = j; + } else if (j < 32) { + f = d & b | ~d & c; + g = 5 * j + 1 & 15; + } else if (j < 48) { + f = b ^ c ^ d; + g = 3 * j + 5 & 15; + } else { + f = c ^ (b | ~d); + g = 7 * j & 15; + } + var tmp = d, + rotateArg = a + f + k[j] + w[g] | 0, + rotate = r[j]; + d = c; + c = b; + b = b + (rotateArg << rotate | rotateArg >>> 32 - rotate) | 0; + a = tmp; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + } + return new Uint8Array([h0 & 0xFF, h0 >> 8 & 0xFF, h0 >> 16 & 0xFF, h0 >>> 24 & 0xFF, h1 & 0xFF, h1 >> 8 & 0xFF, h1 >> 16 & 0xFF, h1 >>> 24 & 0xFF, h2 & 0xFF, h2 >> 8 & 0xFF, h2 >> 16 & 0xFF, h2 >>> 24 & 0xFF, h3 & 0xFF, h3 >> 8 & 0xFF, h3 >> 16 & 0xFF, h3 >>> 24 & 0xFF]); + } + return hash; +}(); +var Word64 = function Word64Closure() { + function Word64(highInteger, lowInteger) { + this.high = highInteger | 0; + this.low = lowInteger | 0; + } + Word64.prototype = { + and: function Word64_and(word) { + this.high &= word.high; + this.low &= word.low; + }, + xor: function Word64_xor(word) { + this.high ^= word.high; + this.low ^= word.low; + }, + or: function Word64_or(word) { + this.high |= word.high; + this.low |= word.low; + }, + shiftRight: function Word64_shiftRight(places) { + if (places >= 32) { + this.low = this.high >>> places - 32 | 0; + this.high = 0; + } else { + this.low = this.low >>> places | this.high << 32 - places; + this.high = this.high >>> places | 0; + } + }, + shiftLeft: function Word64_shiftLeft(places) { + if (places >= 32) { + this.high = this.low << places - 32; + this.low = 0; + } else { + this.high = this.high << places | this.low >>> 32 - places; + this.low = this.low << places; + } + }, + rotateRight: function Word64_rotateRight(places) { + var low, high; + if (places & 32) { + high = this.low; + low = this.high; + } else { + low = this.low; + high = this.high; + } + places &= 31; + this.low = low >>> places | high << 32 - places; + this.high = high >>> places | low << 32 - places; + }, + not: function Word64_not() { + this.high = ~this.high; + this.low = ~this.low; + }, + add: function Word64_add(word) { + var lowAdd = (this.low >>> 0) + (word.low >>> 0); + var highAdd = (this.high >>> 0) + (word.high >>> 0); + if (lowAdd > 0xFFFFFFFF) { + highAdd += 1; + } + this.low = lowAdd | 0; + this.high = highAdd | 0; + }, + copyTo: function Word64_copyTo(bytes, offset) { + bytes[offset] = this.high >>> 24 & 0xFF; + bytes[offset + 1] = this.high >> 16 & 0xFF; + bytes[offset + 2] = this.high >> 8 & 0xFF; + bytes[offset + 3] = this.high & 0xFF; + bytes[offset + 4] = this.low >>> 24 & 0xFF; + bytes[offset + 5] = this.low >> 16 & 0xFF; + bytes[offset + 6] = this.low >> 8 & 0xFF; + bytes[offset + 7] = this.low & 0xFF; + }, + assign: function Word64_assign(word) { + this.high = word.high; + this.low = word.low; + } + }; + return Word64; +}(); +var calculateSHA256 = function calculateSHA256Closure() { + function rotr(x, n) { + return x >>> n | x << 32 - n; + } + function ch(x, y, z) { + return x & y ^ ~x & z; + } + function maj(x, y, z) { + return x & y ^ x & z ^ y & z; + } + function sigma(x) { + return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22); + } + function sigmaPrime(x) { + return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25); + } + function littleSigma(x) { + return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3; + } + function littleSigmaPrime(x) { + return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10; + } + var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2]; + function hash(data, offset, length) { + var h0 = 0x6a09e667, + h1 = 0xbb67ae85, + h2 = 0x3c6ef372, + h3 = 0xa54ff53a, + h4 = 0x510e527f, + h5 = 0x9b05688c, + h6 = 0x1f83d9ab, + h7 = 0x5be0cd19; + var paddedLength = Math.ceil((length + 9) / 64) * 64; + var padded = new Uint8Array(paddedLength); + var i, j, n; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + n = paddedLength - 8; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xFF; + padded[i++] = length >> 21 & 0xFF; + padded[i++] = length >> 13 & 0xFF; + padded[i++] = length >> 5 & 0xFF; + padded[i++] = length << 3 & 0xFF; + var w = new Uint32Array(64); + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j] = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + i += 4; + } + for (j = 16; j < 64; ++j) { + w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] + littleSigma(w[j - 15]) + w[j - 16] | 0; + } + var a = h0, + b = h1, + c = h2, + d = h3, + e = h4, + f = h5, + g = h6, + h = h7, + t1, + t2; + for (j = 0; j < 64; ++j) { + t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j]; + t2 = sigma(a) + maj(a, b, c); + h = g; + g = f; + f = e; + e = d + t1 | 0; + d = c; + c = b; + b = a; + a = t1 + t2 | 0; + } + h0 = h0 + a | 0; + h1 = h1 + b | 0; + h2 = h2 + c | 0; + h3 = h3 + d | 0; + h4 = h4 + e | 0; + h5 = h5 + f | 0; + h6 = h6 + g | 0; + h7 = h7 + h | 0; + } + return new Uint8Array([h0 >> 24 & 0xFF, h0 >> 16 & 0xFF, h0 >> 8 & 0xFF, h0 & 0xFF, h1 >> 24 & 0xFF, h1 >> 16 & 0xFF, h1 >> 8 & 0xFF, h1 & 0xFF, h2 >> 24 & 0xFF, h2 >> 16 & 0xFF, h2 >> 8 & 0xFF, h2 & 0xFF, h3 >> 24 & 0xFF, h3 >> 16 & 0xFF, h3 >> 8 & 0xFF, h3 & 0xFF, h4 >> 24 & 0xFF, h4 >> 16 & 0xFF, h4 >> 8 & 0xFF, h4 & 0xFF, h5 >> 24 & 0xFF, h5 >> 16 & 0xFF, h5 >> 8 & 0xFF, h5 & 0xFF, h6 >> 24 & 0xFF, h6 >> 16 & 0xFF, h6 >> 8 & 0xFF, h6 & 0xFF, h7 >> 24 & 0xFF, h7 >> 16 & 0xFF, h7 >> 8 & 0xFF, h7 & 0xFF]); + } + return hash; +}(); +var calculateSHA512 = function calculateSHA512Closure() { + function ch(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.not(); + tmp.and(z); + result.xor(tmp); + } + function maj(result, x, y, z, tmp) { + result.assign(x); + result.and(y); + tmp.assign(x); + tmp.and(z); + result.xor(tmp); + tmp.assign(y); + tmp.and(z); + result.xor(tmp); + } + function sigma(result, x, tmp) { + result.assign(x); + result.rotateRight(28); + tmp.assign(x); + tmp.rotateRight(34); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(39); + result.xor(tmp); + } + function sigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(14); + tmp.assign(x); + tmp.rotateRight(18); + result.xor(tmp); + tmp.assign(x); + tmp.rotateRight(41); + result.xor(tmp); + } + function littleSigma(result, x, tmp) { + result.assign(x); + result.rotateRight(1); + tmp.assign(x); + tmp.rotateRight(8); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(7); + result.xor(tmp); + } + function littleSigmaPrime(result, x, tmp) { + result.assign(x); + result.rotateRight(19); + tmp.assign(x); + tmp.rotateRight(61); + result.xor(tmp); + tmp.assign(x); + tmp.shiftRight(6); + result.xor(tmp); + } + var k = [new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd), new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc), new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019), new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118), new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe), new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2), new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1), new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694), new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3), new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65), new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483), new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5), new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210), new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4), new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725), new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70), new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926), new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df), new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8), new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b), new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001), new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30), new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910), new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8), new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53), new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8), new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb), new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3), new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60), new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec), new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9), new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b), new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207), new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178), new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6), new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b), new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493), new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c), new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a), new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)]; + function hash(data, offset, length, mode384) { + mode384 = !!mode384; + var h0, h1, h2, h3, h4, h5, h6, h7; + if (!mode384) { + h0 = new Word64(0x6a09e667, 0xf3bcc908); + h1 = new Word64(0xbb67ae85, 0x84caa73b); + h2 = new Word64(0x3c6ef372, 0xfe94f82b); + h3 = new Word64(0xa54ff53a, 0x5f1d36f1); + h4 = new Word64(0x510e527f, 0xade682d1); + h5 = new Word64(0x9b05688c, 0x2b3e6c1f); + h6 = new Word64(0x1f83d9ab, 0xfb41bd6b); + h7 = new Word64(0x5be0cd19, 0x137e2179); + } else { + h0 = new Word64(0xcbbb9d5d, 0xc1059ed8); + h1 = new Word64(0x629a292a, 0x367cd507); + h2 = new Word64(0x9159015a, 0x3070dd17); + h3 = new Word64(0x152fecd8, 0xf70e5939); + h4 = new Word64(0x67332667, 0xffc00b31); + h5 = new Word64(0x8eb44a87, 0x68581511); + h6 = new Word64(0xdb0c2e0d, 0x64f98fa7); + h7 = new Word64(0x47b5481d, 0xbefa4fa4); + } + var paddedLength = Math.ceil((length + 17) / 128) * 128; + var padded = new Uint8Array(paddedLength); + var i, j, n; + for (i = 0; i < length; ++i) { + padded[i] = data[offset++]; + } + padded[i++] = 0x80; + n = paddedLength - 16; + while (i < n) { + padded[i++] = 0; + } + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = 0; + padded[i++] = length >>> 29 & 0xFF; + padded[i++] = length >> 21 & 0xFF; + padded[i++] = length >> 13 & 0xFF; + padded[i++] = length >> 5 & 0xFF; + padded[i++] = length << 3 & 0xFF; + var w = new Array(80); + for (i = 0; i < 80; i++) { + w[i] = new Word64(0, 0); + } + var a = new Word64(0, 0), + b = new Word64(0, 0), + c = new Word64(0, 0); + var d = new Word64(0, 0), + e = new Word64(0, 0), + f = new Word64(0, 0); + var g = new Word64(0, 0), + h = new Word64(0, 0); + var t1 = new Word64(0, 0), + t2 = new Word64(0, 0); + var tmp1 = new Word64(0, 0), + tmp2 = new Word64(0, 0), + tmp3; + for (i = 0; i < paddedLength;) { + for (j = 0; j < 16; ++j) { + w[j].high = padded[i] << 24 | padded[i + 1] << 16 | padded[i + 2] << 8 | padded[i + 3]; + w[j].low = padded[i + 4] << 24 | padded[i + 5] << 16 | padded[i + 6] << 8 | padded[i + 7]; + i += 8; + } + for (j = 16; j < 80; ++j) { + tmp3 = w[j]; + littleSigmaPrime(tmp3, w[j - 2], tmp2); + tmp3.add(w[j - 7]); + littleSigma(tmp1, w[j - 15], tmp2); + tmp3.add(tmp1); + tmp3.add(w[j - 16]); + } + a.assign(h0); + b.assign(h1); + c.assign(h2); + d.assign(h3); + e.assign(h4); + f.assign(h5); + g.assign(h6); + h.assign(h7); + for (j = 0; j < 80; ++j) { + t1.assign(h); + sigmaPrime(tmp1, e, tmp2); + t1.add(tmp1); + ch(tmp1, e, f, g, tmp2); + t1.add(tmp1); + t1.add(k[j]); + t1.add(w[j]); + sigma(t2, a, tmp2); + maj(tmp1, a, b, c, tmp2); + t2.add(tmp1); + tmp3 = h; + h = g; + g = f; + f = e; + d.add(t1); + e = d; + d = c; + c = b; + b = a; + tmp3.assign(t1); + tmp3.add(t2); + a = tmp3; + } + h0.add(a); + h1.add(b); + h2.add(c); + h3.add(d); + h4.add(e); + h5.add(f); + h6.add(g); + h7.add(h); + } + var result; + if (!mode384) { + result = new Uint8Array(64); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + h6.copyTo(result, 48); + h7.copyTo(result, 56); + } else { + result = new Uint8Array(48); + h0.copyTo(result, 0); + h1.copyTo(result, 8); + h2.copyTo(result, 16); + h3.copyTo(result, 24); + h4.copyTo(result, 32); + h5.copyTo(result, 40); + } + return result; + } + return hash; +}(); +var calculateSHA384 = function calculateSHA384Closure() { + function hash(data, offset, length) { + return calculateSHA512(data, offset, length, true); + } + return hash; +}(); +var NullCipher = function NullCipherClosure() { + function NullCipher() {} + NullCipher.prototype = { + decryptBlock: function NullCipher_decryptBlock(data) { + return data; + } + }; + return NullCipher; +}(); +var AES128Cipher = function AES128CipherClosure() { + var rcon = new Uint8Array([0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d]); + var s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); + var inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); + var mixCol = new Uint8Array(256); + for (var i = 0; i < 256; i++) { + if (i < 128) { + mixCol[i] = i << 1; + } else { + mixCol[i] = i << 1 ^ 0x1b; + } + } + var mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); + function expandKey128(cipherKey) { + var b = 176, + result = new Uint8Array(b); + result.set(cipherKey); + for (var j = 16, i = 1; j < b; ++i) { + var t1 = result[j - 3], + t2 = result[j - 2], + t3 = result[j - 1], + t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 = t1 ^ rcon[i]; + for (var n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 16]; + j++; + result[j] = t2 ^= result[j - 16]; + j++; + result[j] = t3 ^= result[j - 16]; + j++; + result[j] = t4 ^= result[j - 16]; + j++; + } + } + return result; + } + function decrypt128(input, key) { + var state = new Uint8Array(16); + state.set(input); + var i, j, k; + var t, u, v; + for (j = 0, k = 160; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (i = 9; i >= 1; --i) { + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (j = 0; j < 16; ++j) { + state[j] = inv_s[state[j]]; + } + for (j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (j = 0; j < 16; j += 4) { + var s0 = mix[state[j]], + s1 = mix[state[j + 1]], + s2 = mix[state[j + 2]], + s3 = mix[state[j + 3]]; + t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; + state[j] = t >>> 24 & 0xFF; + state[j + 1] = t >> 16 & 0xFF; + state[j + 2] = t >> 8 & 0xFF; + state[j + 3] = t & 0xFF; + } + } + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (j = 0; j < 16; ++j) { + state[j] = inv_s[state[j]]; + state[j] ^= key[j]; + } + return state; + } + function encrypt128(input, key) { + var t, u, v, k; + var state = new Uint8Array(16); + state.set(input); + for (j = 0; j < 16; ++j) { + state[j] ^= key[j]; + } + for (i = 1; i < 10; i++) { + for (j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (var j = 0; j < 16; j += 4) { + var s0 = state[j + 0], + s1 = state[j + 1]; + var s2 = state[j + 2], + s3 = state[j + 3]; + t = s0 ^ s1 ^ s2 ^ s3; + state[j + 0] ^= t ^ mixCol[s0 ^ s1]; + state[j + 1] ^= t ^ mixCol[s1 ^ s2]; + state[j + 2] ^= t ^ mixCol[s2 ^ s3]; + state[j + 3] ^= t ^ mixCol[s3 ^ s0]; + } + for (j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + } + for (j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (j = 0, k = 160; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + return state; + } + function AES128Cipher(key) { + this.key = expandKey128(key); + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + function decryptBlock2(data, finalize) { + var i, + j, + ii, + sourceLength = data.length, + buffer = this.buffer, + bufferLength = this.bufferPosition, + result = [], + iv = this.iv; + for (i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + var plain = decrypt128(buffer, this.key); + for (j = 0; j < 16; ++j) { + plain[j] ^= iv[j]; + } + iv = buffer; + result.push(plain); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array([]); + } + var outputLength = 16 * result.length; + if (finalize) { + var lastBlock = result[result.length - 1]; + var psLen = lastBlock[15]; + if (psLen <= 16) { + for (i = 15, ii = 16 - psLen; i >= ii; --i) { + if (lastBlock[i] !== psLen) { + psLen = 0; + break; + } + } + outputLength -= psLen; + result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); + } + } + var output = new Uint8Array(outputLength); + for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + AES128Cipher.prototype = { + decryptBlock: function AES128Cipher_decryptBlock(data, finalize) { + var i, + sourceLength = data.length; + var buffer = this.buffer, + bufferLength = this.bufferPosition; + for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { + buffer[bufferLength] = data[i]; + } + if (bufferLength < 16) { + this.bufferLength = bufferLength; + return new Uint8Array([]); + } + this.iv = buffer; + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = decryptBlock2; + return this.decryptBlock(data.subarray(16), finalize); + }, + encrypt: function AES128Cipher_encrypt(data, iv) { + var i, + j, + ii, + sourceLength = data.length, + buffer = this.buffer, + bufferLength = this.bufferPosition, + result = []; + if (!iv) { + iv = new Uint8Array(16); + } + for (i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + for (j = 0; j < 16; ++j) { + buffer[j] ^= iv[j]; + } + var cipher = encrypt128(buffer, this.key); + iv = cipher; + result.push(cipher); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array([]); + } + var outputLength = 16 * result.length; + var output = new Uint8Array(outputLength); + for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + }; + return AES128Cipher; +}(); +var AES256Cipher = function AES256CipherClosure() { + var s = new Uint8Array([0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16]); + var inv_s = new Uint8Array([0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d]); + var mixCol = new Uint8Array(256); + for (var i = 0; i < 256; i++) { + if (i < 128) { + mixCol[i] = i << 1; + } else { + mixCol[i] = i << 1 ^ 0x1b; + } + } + var mix = new Uint32Array([0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927, 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45, 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb, 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381, 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf, 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66, 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28, 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012, 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec, 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e, 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd, 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7, 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89, 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b, 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815, 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f, 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa, 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8, 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36, 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c, 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742, 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea, 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4, 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e, 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360, 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502, 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87, 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd, 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3, 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621, 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f, 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55, 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26, 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844, 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba, 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480, 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce, 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67, 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929, 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713, 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed, 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f, 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]); + function expandKey256(cipherKey) { + var b = 240, + result = new Uint8Array(b); + var r = 1; + result.set(cipherKey); + for (var j = 32, i = 1; j < b; ++i) { + if (j % 32 === 16) { + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + } else if (j % 32 === 0) { + var t1 = result[j - 3], + t2 = result[j - 2], + t3 = result[j - 1], + t4 = result[j - 4]; + t1 = s[t1]; + t2 = s[t2]; + t3 = s[t3]; + t4 = s[t4]; + t1 = t1 ^ r; + if ((r <<= 1) >= 256) { + r = (r ^ 0x1b) & 0xFF; + } + } + for (var n = 0; n < 4; ++n) { + result[j] = t1 ^= result[j - 32]; + j++; + result[j] = t2 ^= result[j - 32]; + j++; + result[j] = t3 ^= result[j - 32]; + j++; + result[j] = t4 ^= result[j - 32]; + j++; + } + } + return result; + } + function decrypt256(input, key) { + var state = new Uint8Array(16); + state.set(input); + var i, j, k; + var t, u, v; + for (j = 0, k = 224; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (i = 13; i >= 1; --i) { + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (j = 0; j < 16; ++j) { + state[j] = inv_s[state[j]]; + } + for (j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + for (j = 0; j < 16; j += 4) { + var s0 = mix[state[j]], + s1 = mix[state[j + 1]], + s2 = mix[state[j + 2]], + s3 = mix[state[j + 3]]; + t = s0 ^ s1 >>> 8 ^ s1 << 24 ^ s2 >>> 16 ^ s2 << 16 ^ s3 >>> 24 ^ s3 << 8; + state[j] = t >>> 24 & 0xFF; + state[j + 1] = t >> 16 & 0xFF; + state[j + 2] = t >> 8 & 0xFF; + state[j + 3] = t & 0xFF; + } + } + t = state[13]; + state[13] = state[9]; + state[9] = state[5]; + state[5] = state[1]; + state[1] = t; + t = state[14]; + u = state[10]; + state[14] = state[6]; + state[10] = state[2]; + state[6] = t; + state[2] = u; + t = state[15]; + u = state[11]; + v = state[7]; + state[15] = state[3]; + state[11] = t; + state[7] = u; + state[3] = v; + for (j = 0; j < 16; ++j) { + state[j] = inv_s[state[j]]; + state[j] ^= key[j]; + } + return state; + } + function encrypt256(input, key) { + var t, u, v, k; + var state = new Uint8Array(16); + state.set(input); + for (j = 0; j < 16; ++j) { + state[j] ^= key[j]; + } + for (i = 1; i < 14; i++) { + for (j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (var j = 0; j < 16; j += 4) { + var s0 = state[j + 0], + s1 = state[j + 1]; + var s2 = state[j + 2], + s3 = state[j + 3]; + t = s0 ^ s1 ^ s2 ^ s3; + state[j + 0] ^= t ^ mixCol[s0 ^ s1]; + state[j + 1] ^= t ^ mixCol[s1 ^ s2]; + state[j + 2] ^= t ^ mixCol[s2 ^ s3]; + state[j + 3] ^= t ^ mixCol[s3 ^ s0]; + } + for (j = 0, k = i * 16; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + } + for (j = 0; j < 16; ++j) { + state[j] = s[state[j]]; + } + v = state[1]; + state[1] = state[5]; + state[5] = state[9]; + state[9] = state[13]; + state[13] = v; + v = state[2]; + u = state[6]; + state[2] = state[10]; + state[6] = state[14]; + state[10] = v; + state[14] = u; + v = state[3]; + u = state[7]; + t = state[11]; + state[3] = state[15]; + state[7] = v; + state[11] = u; + state[15] = t; + for (j = 0, k = 224; j < 16; ++j, ++k) { + state[j] ^= key[k]; + } + return state; + } + function AES256Cipher(key) { + this.key = expandKey256(key); + this.buffer = new Uint8Array(16); + this.bufferPosition = 0; + } + function decryptBlock2(data, finalize) { + var i, + j, + ii, + sourceLength = data.length, + buffer = this.buffer, + bufferLength = this.bufferPosition, + result = [], + iv = this.iv; + for (i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + var plain = decrypt256(buffer, this.key); + for (j = 0; j < 16; ++j) { + plain[j] ^= iv[j]; + } + iv = buffer; + result.push(plain); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array([]); + } + var outputLength = 16 * result.length; + if (finalize) { + var lastBlock = result[result.length - 1]; + var psLen = lastBlock[15]; + if (psLen <= 16) { + for (i = 15, ii = 16 - psLen; i >= ii; --i) { + if (lastBlock[i] !== psLen) { + psLen = 0; + break; + } + } + outputLength -= psLen; + result[result.length - 1] = lastBlock.subarray(0, 16 - psLen); + } + } + var output = new Uint8Array(outputLength); + for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + AES256Cipher.prototype = { + decryptBlock: function AES256Cipher_decryptBlock(data, finalize, iv) { + var i, + sourceLength = data.length; + var buffer = this.buffer, + bufferLength = this.bufferPosition; + if (iv) { + this.iv = iv; + } else { + for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) { + buffer[bufferLength] = data[i]; + } + if (bufferLength < 16) { + this.bufferLength = bufferLength; + return new Uint8Array([]); + } + this.iv = buffer; + data = data.subarray(16); + } + this.buffer = new Uint8Array(16); + this.bufferLength = 0; + this.decryptBlock = decryptBlock2; + return this.decryptBlock(data, finalize); + }, + encrypt: function AES256Cipher_encrypt(data, iv) { + var i, + j, + ii, + sourceLength = data.length, + buffer = this.buffer, + bufferLength = this.bufferPosition, + result = []; + if (!iv) { + iv = new Uint8Array(16); + } + for (i = 0; i < sourceLength; ++i) { + buffer[bufferLength] = data[i]; + ++bufferLength; + if (bufferLength < 16) { + continue; + } + for (j = 0; j < 16; ++j) { + buffer[j] ^= iv[j]; + } + var cipher = encrypt256(buffer, this.key); + this.iv = cipher; + result.push(cipher); + buffer = new Uint8Array(16); + bufferLength = 0; + } + this.buffer = buffer; + this.bufferLength = bufferLength; + this.iv = iv; + if (result.length === 0) { + return new Uint8Array([]); + } + var outputLength = 16 * result.length; + var output = new Uint8Array(outputLength); + for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) { + output.set(result[i], j); + } + return output; + } + }; + return AES256Cipher; +}(); +var PDF17 = function PDF17Closure() { + function compareByteArrays(array1, array2) { + if (array1.length !== array2.length) { + return false; + } + for (var i = 0; i < array1.length; i++) { + if (array1[i] !== array2[i]) { + return false; + } + } + return true; + } + function PDF17() {} + PDF17.prototype = { + checkOwnerPassword: function PDF17_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + var hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + var result = calculateSHA256(hashData, 0, hashData.length); + return compareByteArrays(result, ownerPassword); + }, + checkUserPassword: function PDF17_checkUserPassword(password, userValidationSalt, userPassword) { + var hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + var result = calculateSHA256(hashData, 0, hashData.length); + return compareByteArrays(result, userPassword); + }, + getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + var hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + var key = calculateSHA256(hashData, 0, hashData.length); + var cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + }, + getUserKey: function PDF17_getUserKey(password, userKeySalt, userEncryption) { + var hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + var key = calculateSHA256(hashData, 0, hashData.length); + var cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } + }; + return PDF17; +}(); +var PDF20 = function PDF20Closure() { + function concatArrays(array1, array2) { + var t = new Uint8Array(array1.length + array2.length); + t.set(array1, 0); + t.set(array2, array1.length); + return t; + } + function calculatePDF20Hash(password, input, userBytes) { + var k = calculateSHA256(input, 0, input.length).subarray(0, 32); + var e = [0]; + var i = 0; + while (i < 64 || e[e.length - 1] > i - 32) { + var arrayLength = password.length + k.length + userBytes.length; + var k1 = new Uint8Array(arrayLength * 64); + var array = concatArrays(password, k); + array = concatArrays(array, userBytes); + for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) { + k1.set(array, pos); + } + var cipher = new AES128Cipher(k.subarray(0, 16)); + e = cipher.encrypt(k1, k.subarray(16, 32)); + var remainder = 0; + for (var z = 0; z < 16; z++) { + remainder *= 256 % 3; + remainder %= 3; + remainder += (e[z] >>> 0) % 3; + remainder %= 3; + } + if (remainder === 0) { + k = calculateSHA256(e, 0, e.length); + } else if (remainder === 1) { + k = calculateSHA384(e, 0, e.length); + } else if (remainder === 2) { + k = calculateSHA512(e, 0, e.length); + } + i++; + } + return k.subarray(0, 32); + } + function PDF20() {} + function compareByteArrays(array1, array2) { + if (array1.length !== array2.length) { + return false; + } + for (var i = 0; i < array1.length; i++) { + if (array1[i] !== array2[i]) { + return false; + } + } + return true; + } + PDF20.prototype = { + hash: function PDF20_hash(password, concatBytes, userBytes) { + return calculatePDF20Hash(password, concatBytes, userBytes); + }, + checkOwnerPassword: function PDF20_checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) { + var hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerValidationSalt, password.length); + hashData.set(userBytes, password.length + ownerValidationSalt.length); + var result = calculatePDF20Hash(password, hashData, userBytes); + return compareByteArrays(result, ownerPassword); + }, + checkUserPassword: function PDF20_checkUserPassword(password, userValidationSalt, userPassword) { + var hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userValidationSalt, password.length); + var result = calculatePDF20Hash(password, hashData, []); + return compareByteArrays(result, userPassword); + }, + getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) { + var hashData = new Uint8Array(password.length + 56); + hashData.set(password, 0); + hashData.set(ownerKeySalt, password.length); + hashData.set(userBytes, password.length + ownerKeySalt.length); + var key = calculatePDF20Hash(password, hashData, userBytes); + var cipher = new AES256Cipher(key); + return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16)); + }, + getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) { + var hashData = new Uint8Array(password.length + 8); + hashData.set(password, 0); + hashData.set(userKeySalt, password.length); + var key = calculatePDF20Hash(password, hashData, []); + var cipher = new AES256Cipher(key); + return cipher.decryptBlock(userEncryption, false, new Uint8Array(16)); + } + }; + return PDF20; +}(); +var CipherTransform = function CipherTransformClosure() { + function CipherTransform(stringCipherConstructor, streamCipherConstructor) { + this.StringCipherConstructor = stringCipherConstructor; + this.StreamCipherConstructor = streamCipherConstructor; + } + CipherTransform.prototype = { + createStream: function CipherTransform_createStream(stream, length) { + var cipher = new this.StreamCipherConstructor(); + return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) { + return cipher.decryptBlock(data, finalize); + }); + }, + decryptString: function CipherTransform_decryptString(s) { + var cipher = new this.StringCipherConstructor(); + var data = (0, _util.stringToBytes)(s); + data = cipher.decryptBlock(data, true); + return (0, _util.bytesToString)(data); + } + }; + return CipherTransform; +}(); +var CipherTransformFactory = function CipherTransformFactoryClosure() { + var defaultPasswordBytes = new Uint8Array([0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41, 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08, 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80, 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]); + function createEncryptionKey20(revision, password, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms) { + if (password) { + var passwordLength = Math.min(127, password.length); + password = password.subarray(0, passwordLength); + } else { + password = []; + } + var pdfAlgorithm; + if (revision === 6) { + pdfAlgorithm = new PDF20(); + } else { + pdfAlgorithm = new PDF17(); + } + if (pdfAlgorithm.checkUserPassword(password, userValidationSalt, userPassword)) { + return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption); + } else if (password.length && pdfAlgorithm.checkOwnerPassword(password, ownerValidationSalt, uBytes, ownerPassword)) { + return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes, ownerEncryption); + } + return null; + } + function prepareKeyData(fileId, password, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata) { + var hashDataSize = 40 + ownerPassword.length + fileId.length; + var hashData = new Uint8Array(hashDataSize), + i = 0, + j, + n; + if (password) { + n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + } + j = 0; + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + for (j = 0, n = ownerPassword.length; j < n; ++j) { + hashData[i++] = ownerPassword[j]; + } + hashData[i++] = flags & 0xFF; + hashData[i++] = flags >> 8 & 0xFF; + hashData[i++] = flags >> 16 & 0xFF; + hashData[i++] = flags >>> 24 & 0xFF; + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + if (revision >= 4 && !encryptMetadata) { + hashData[i++] = 0xFF; + hashData[i++] = 0xFF; + hashData[i++] = 0xFF; + hashData[i++] = 0xFF; + } + var hash = calculateMD5(hashData, 0, i); + var keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, keyLengthInBytes); + } + } + var encryptionKey = hash.subarray(0, keyLengthInBytes); + var cipher, checkData; + if (revision >= 3) { + for (i = 0; i < 32; ++i) { + hashData[i] = defaultPasswordBytes[i]; + } + for (j = 0, n = fileId.length; j < n; ++j) { + hashData[i++] = fileId[j]; + } + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i)); + n = encryptionKey.length; + var derivedKey = new Uint8Array(n), + k; + for (j = 1; j <= 19; ++j) { + for (k = 0; k < n; ++k) { + derivedKey[k] = encryptionKey[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + checkData = cipher.encryptBlock(checkData); + } + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } else { + cipher = new ARCFourCipher(encryptionKey); + checkData = cipher.encryptBlock(defaultPasswordBytes); + for (j = 0, n = checkData.length; j < n; ++j) { + if (userPassword[j] !== checkData[j]) { + return null; + } + } + } + return encryptionKey; + } + function decodeUserPassword(password, ownerPassword, revision, keyLength) { + var hashData = new Uint8Array(32), + i = 0, + j, + n; + n = Math.min(32, password.length); + for (; i < n; ++i) { + hashData[i] = password[i]; + } + j = 0; + while (i < 32) { + hashData[i++] = defaultPasswordBytes[j++]; + } + var hash = calculateMD5(hashData, 0, i); + var keyLengthInBytes = keyLength >> 3; + if (revision >= 3) { + for (j = 0; j < 50; ++j) { + hash = calculateMD5(hash, 0, hash.length); + } + } + var cipher, userPassword; + if (revision >= 3) { + userPassword = ownerPassword; + var derivedKey = new Uint8Array(keyLengthInBytes), + k; + for (j = 19; j >= 0; j--) { + for (k = 0; k < keyLengthInBytes; ++k) { + derivedKey[k] = hash[k] ^ j; + } + cipher = new ARCFourCipher(derivedKey); + userPassword = cipher.encryptBlock(userPassword); + } + } else { + cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes)); + userPassword = cipher.encryptBlock(ownerPassword); + } + return userPassword; + } + var identityName = _primitives.Name.get('Identity'); + function CipherTransformFactory(dict, fileId, password) { + var filter = dict.get('Filter'); + if (!(0, _primitives.isName)(filter, 'Standard')) { + throw new _util.FormatError('unknown encryption method'); + } + this.dict = dict; + var algorithm = dict.get('V'); + if (!(0, _util.isInt)(algorithm) || algorithm !== 1 && algorithm !== 2 && algorithm !== 4 && algorithm !== 5) { + throw new _util.FormatError('unsupported encryption algorithm'); + } + this.algorithm = algorithm; + var keyLength = dict.get('Length'); + if (!keyLength) { + if (algorithm <= 3) { + keyLength = 40; + } else { + var cfDict = dict.get('CF'); + var streamCryptoName = dict.get('StmF'); + if ((0, _primitives.isDict)(cfDict) && (0, _primitives.isName)(streamCryptoName)) { + cfDict.suppressEncryption = true; + var handlerDict = cfDict.get(streamCryptoName.name); + keyLength = handlerDict && handlerDict.get('Length') || 128; + if (keyLength < 40) { + keyLength <<= 3; + } + } + } + } + if (!(0, _util.isInt)(keyLength) || keyLength < 40 || keyLength % 8 !== 0) { + throw new _util.FormatError('invalid key length'); + } + var ownerPassword = (0, _util.stringToBytes)(dict.get('O')).subarray(0, 32); + var userPassword = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 32); + var flags = dict.get('P'); + var revision = dict.get('R'); + var encryptMetadata = (algorithm === 4 || algorithm === 5) && dict.get('EncryptMetadata') !== false; + this.encryptMetadata = encryptMetadata; + var fileIdBytes = (0, _util.stringToBytes)(fileId); + var passwordBytes; + if (password) { + if (revision === 6) { + try { + password = (0, _util.utf8StringToString)(password); + } catch (ex) { + (0, _util.warn)('CipherTransformFactory: ' + 'Unable to convert UTF8 encoded password.'); + } + } + passwordBytes = (0, _util.stringToBytes)(password); + } + var encryptionKey; + if (algorithm !== 5) { + encryptionKey = prepareKeyData(fileIdBytes, passwordBytes, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } else { + var ownerValidationSalt = (0, _util.stringToBytes)(dict.get('O')).subarray(32, 40); + var ownerKeySalt = (0, _util.stringToBytes)(dict.get('O')).subarray(40, 48); + var uBytes = (0, _util.stringToBytes)(dict.get('U')).subarray(0, 48); + var userValidationSalt = (0, _util.stringToBytes)(dict.get('U')).subarray(32, 40); + var userKeySalt = (0, _util.stringToBytes)(dict.get('U')).subarray(40, 48); + var ownerEncryption = (0, _util.stringToBytes)(dict.get('OE')); + var userEncryption = (0, _util.stringToBytes)(dict.get('UE')); + var perms = (0, _util.stringToBytes)(dict.get('Perms')); + encryptionKey = createEncryptionKey20(revision, passwordBytes, ownerPassword, ownerValidationSalt, ownerKeySalt, uBytes, userPassword, userValidationSalt, userKeySalt, ownerEncryption, userEncryption, perms); + } + if (!encryptionKey && !password) { + throw new _util.PasswordException('No password given', _util.PasswordResponses.NEED_PASSWORD); + } else if (!encryptionKey && password) { + var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword, revision, keyLength); + encryptionKey = prepareKeyData(fileIdBytes, decodedPassword, ownerPassword, userPassword, flags, revision, keyLength, encryptMetadata); + } + if (!encryptionKey) { + throw new _util.PasswordException('Incorrect Password', _util.PasswordResponses.INCORRECT_PASSWORD); + } + this.encryptionKey = encryptionKey; + if (algorithm >= 4) { + var cf = dict.get('CF'); + if ((0, _primitives.isDict)(cf)) { + cf.suppressEncryption = true; + } + this.cf = cf; + this.stmf = dict.get('StmF') || identityName; + this.strf = dict.get('StrF') || identityName; + this.eff = dict.get('EFF') || this.stmf; + } + } + function buildObjectKey(num, gen, encryptionKey, isAes) { + var key = new Uint8Array(encryptionKey.length + 9), + i, + n; + for (i = 0, n = encryptionKey.length; i < n; ++i) { + key[i] = encryptionKey[i]; + } + key[i++] = num & 0xFF; + key[i++] = num >> 8 & 0xFF; + key[i++] = num >> 16 & 0xFF; + key[i++] = gen & 0xFF; + key[i++] = gen >> 8 & 0xFF; + if (isAes) { + key[i++] = 0x73; + key[i++] = 0x41; + key[i++] = 0x6C; + key[i++] = 0x54; + } + var hash = calculateMD5(key, 0, i); + return hash.subarray(0, Math.min(encryptionKey.length + 5, 16)); + } + function buildCipherConstructor(cf, name, num, gen, key) { + if (!(0, _primitives.isName)(name)) { + throw new _util.FormatError('Invalid crypt filter name.'); + } + var cryptFilter = cf.get(name.name); + var cfm; + if (cryptFilter !== null && cryptFilter !== undefined) { + cfm = cryptFilter.get('CFM'); + } + if (!cfm || cfm.name === 'None') { + return function cipherTransformFactoryBuildCipherConstructorNone() { + return new NullCipher(); + }; + } + if (cfm.name === 'V2') { + return function cipherTransformFactoryBuildCipherConstructorV2() { + return new ARCFourCipher(buildObjectKey(num, gen, key, false)); + }; + } + if (cfm.name === 'AESV2') { + return function cipherTransformFactoryBuildCipherConstructorAESV2() { + return new AES128Cipher(buildObjectKey(num, gen, key, true)); + }; + } + if (cfm.name === 'AESV3') { + return function cipherTransformFactoryBuildCipherConstructorAESV3() { + return new AES256Cipher(key); + }; + } + throw new _util.FormatError('Unknown crypto method'); + } + CipherTransformFactory.prototype = { + createCipherTransform: function CipherTransformFactory_createCipherTransform(num, gen) { + if (this.algorithm === 4 || this.algorithm === 5) { + return new CipherTransform(buildCipherConstructor(this.cf, this.stmf, num, gen, this.encryptionKey), buildCipherConstructor(this.cf, this.strf, num, gen, this.encryptionKey)); + } + var key = buildObjectKey(num, gen, this.encryptionKey, false); + var cipherConstructor = function buildCipherCipherConstructor() { + return new ARCFourCipher(key); + }; + return new CipherTransform(cipherConstructor, cipherConstructor); + } + }; + return CipherTransformFactory; +}(); +exports.AES128Cipher = AES128Cipher; +exports.AES256Cipher = AES256Cipher; +exports.ARCFourCipher = ARCFourCipher; +exports.CipherTransformFactory = CipherTransformFactory; +exports.PDF17 = PDF17; +exports.PDF20 = PDF20; +exports.calculateMD5 = calculateMD5; +exports.calculateSHA256 = calculateSHA256; +exports.calculateSHA384 = calculateSHA384; +exports.calculateSHA512 = calculateSHA512; + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PartialEvaluator = exports.OperatorList = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var _cmap = __w_pdfjs_require__(22); + +var _stream = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(1); + +var _fonts = __w_pdfjs_require__(25); + +var _encodings = __w_pdfjs_require__(4); + +var _unicode = __w_pdfjs_require__(8); + +var _standard_fonts = __w_pdfjs_require__(16); + +var _pattern = __w_pdfjs_require__(31); + +var _function = __w_pdfjs_require__(7); + +var _parser = __w_pdfjs_require__(5); + +var _bidi = __w_pdfjs_require__(20); + +var _colorspace = __w_pdfjs_require__(3); + +var _glyphlist = __w_pdfjs_require__(6); + +var _metrics = __w_pdfjs_require__(29); + +var _murmurhash = __w_pdfjs_require__(30); + +var _image = __w_pdfjs_require__(26); + +var PartialEvaluator = function PartialEvaluatorClosure() { + var DefaultPartialEvaluatorOptions = { + forceDataSchema: false, + maxImageSize: -1, + disableFontFace: false, + nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE, + ignoreErrors: false + }; + function NativeImageDecoder(xref, resources, handler, forceDataSchema) { + this.xref = xref; + this.resources = resources; + this.handler = handler; + this.forceDataSchema = forceDataSchema; + } + NativeImageDecoder.prototype = { + canDecode: function canDecode(image) { + return image instanceof _stream.JpegStream && NativeImageDecoder.isDecodable(image, this.xref, this.resources); + }, + decode: function decode(image) { + var dict = image.dict; + var colorSpace = dict.get('ColorSpace', 'CS'); + colorSpace = _colorspace.ColorSpace.parse(colorSpace, this.xref, this.resources); + var numComps = colorSpace.numComps; + var decodePromise = this.handler.sendWithPromise('JpegDecode', [image.getIR(this.forceDataSchema), numComps]); + return decodePromise.then(function (message) { + var data = message.data; + return new _stream.Stream(data, 0, data.length, image.dict); + }); + } + }; + NativeImageDecoder.isSupported = function NativeImageDecoder_isSupported(image, xref, res) { + var dict = image.dict; + if (dict.has('DecodeParms') || dict.has('DP')) { + return false; + } + var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res); + return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') && cs.isDefaultDecode(dict.getArray('Decode', 'D')); + }; + NativeImageDecoder.isDecodable = function NativeImageDecoder_isDecodable(image, xref, res) { + var dict = image.dict; + if (dict.has('DecodeParms') || dict.has('DP')) { + return false; + } + var cs = _colorspace.ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res); + return (cs.numComps === 1 || cs.numComps === 3) && cs.isDefaultDecode(dict.getArray('Decode', 'D')); + }; + function PartialEvaluator(_ref) { + var _this = this; + + var pdfManager = _ref.pdfManager, + xref = _ref.xref, + handler = _ref.handler, + pageIndex = _ref.pageIndex, + idFactory = _ref.idFactory, + fontCache = _ref.fontCache, + builtInCMapCache = _ref.builtInCMapCache, + _ref$options = _ref.options, + options = _ref$options === undefined ? null : _ref$options; + + this.pdfManager = pdfManager; + this.xref = xref; + this.handler = handler; + this.pageIndex = pageIndex; + this.idFactory = idFactory; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.options = options || DefaultPartialEvaluatorOptions; + this.fetchBuiltInCMap = function (name) { + var cachedCMap = _this.builtInCMapCache[name]; + if (cachedCMap) { + return Promise.resolve(cachedCMap); + } + return _this.handler.sendWithPromise('FetchBuiltInCMap', { name: name }).then(function (data) { + if (data.compressionType !== _util.CMapCompressionType.NONE) { + _this.builtInCMapCache[name] = data; + } + return data; + }); + }; + } + var TIME_SLOT_DURATION_MS = 20; + var CHECK_TIME_EVERY = 100; + function TimeSlotManager() { + this.reset(); + } + TimeSlotManager.prototype = { + check: function TimeSlotManager_check() { + if (++this.checked < CHECK_TIME_EVERY) { + return false; + } + this.checked = 0; + return this.endTime <= Date.now(); + }, + reset: function TimeSlotManager_reset() { + this.endTime = Date.now() + TIME_SLOT_DURATION_MS; + this.checked = 0; + } + }; + function normalizeBlendMode(value) { + if (!(0, _primitives.isName)(value)) { + return 'source-over'; + } + switch (value.name) { + case 'Normal': + case 'Compatible': + return 'source-over'; + case 'Multiply': + return 'multiply'; + case 'Screen': + return 'screen'; + case 'Overlay': + return 'overlay'; + case 'Darken': + return 'darken'; + case 'Lighten': + return 'lighten'; + case 'ColorDodge': + return 'color-dodge'; + case 'ColorBurn': + return 'color-burn'; + case 'HardLight': + return 'hard-light'; + case 'SoftLight': + return 'soft-light'; + case 'Difference': + return 'difference'; + case 'Exclusion': + return 'exclusion'; + case 'Hue': + return 'hue'; + case 'Saturation': + return 'saturation'; + case 'Color': + return 'color'; + case 'Luminosity': + return 'luminosity'; + } + (0, _util.warn)('Unsupported blend mode: ' + value.name); + return 'source-over'; + } + var deferred = Promise.resolve(); + var TILING_PATTERN = 1, + SHADING_PATTERN = 2; + PartialEvaluator.prototype = { + clone: function clone() { + var newOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : DefaultPartialEvaluatorOptions; + + var newEvaluator = Object.create(this); + newEvaluator.options = newOptions; + return newEvaluator; + }, + + hasBlendModes: function PartialEvaluator_hasBlendModes(resources) { + if (!(0, _primitives.isDict)(resources)) { + return false; + } + var processed = Object.create(null); + if (resources.objId) { + processed[resources.objId] = true; + } + var nodes = [resources], + xref = this.xref; + while (nodes.length) { + var key, i, ii; + var node = nodes.shift(); + var graphicStates = node.get('ExtGState'); + if ((0, _primitives.isDict)(graphicStates)) { + var graphicStatesKeys = graphicStates.getKeys(); + for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) { + key = graphicStatesKeys[i]; + var graphicState = graphicStates.get(key); + var bm = graphicState.get('BM'); + if ((0, _primitives.isName)(bm) && bm.name !== 'Normal') { + return true; + } + } + } + var xObjects = node.get('XObject'); + if (!(0, _primitives.isDict)(xObjects)) { + continue; + } + var xObjectsKeys = xObjects.getKeys(); + for (i = 0, ii = xObjectsKeys.length; i < ii; i++) { + key = xObjectsKeys[i]; + var xObject = xObjects.getRaw(key); + if ((0, _primitives.isRef)(xObject)) { + if (processed[xObject.toString()]) { + continue; + } + xObject = xref.fetch(xObject); + } + if (!(0, _primitives.isStream)(xObject)) { + continue; + } + if (xObject.dict.objId) { + if (processed[xObject.dict.objId]) { + continue; + } + processed[xObject.dict.objId] = true; + } + var xResources = xObject.dict.get('Resources'); + if ((0, _primitives.isDict)(xResources) && (!xResources.objId || !processed[xResources.objId])) { + nodes.push(xResources); + if (xResources.objId) { + processed[xResources.objId] = true; + } + } + } + } + return false; + }, + buildFormXObject: function PartialEvaluator_buildFormXObject(resources, xobj, smask, operatorList, task, initialState) { + var dict = xobj.dict; + var matrix = dict.getArray('Matrix'); + var bbox = dict.getArray('BBox'); + var group = dict.get('Group'); + if (group) { + var groupOptions = { + matrix: matrix, + bbox: bbox, + smask: smask, + isolated: false, + knockout: false + }; + var groupSubtype = group.get('S'); + var colorSpace; + if ((0, _primitives.isName)(groupSubtype, 'Transparency')) { + groupOptions.isolated = group.get('I') || false; + groupOptions.knockout = group.get('K') || false; + colorSpace = group.has('CS') ? _colorspace.ColorSpace.parse(group.get('CS'), this.xref, resources) : null; + } + if (smask && smask.backdrop) { + colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb; + smask.backdrop = colorSpace.getRgb(smask.backdrop, 0); + } + operatorList.addOp(_util.OPS.beginGroup, [groupOptions]); + } + operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]); + return this.getOperatorList({ + stream: xobj, + task: task, + resources: dict.get('Resources') || resources, + operatorList: operatorList, + initialState: initialState + }).then(function () { + operatorList.addOp(_util.OPS.paintFormXObjectEnd, []); + if (group) { + operatorList.addOp(_util.OPS.endGroup, [groupOptions]); + } + }); + }, + buildPaintImageXObject: function PartialEvaluator_buildPaintImageXObject(resources, image, inline, operatorList, cacheKey, imageCache) { + var _this2 = this; + + var dict = image.dict; + var w = dict.get('Width', 'W'); + var h = dict.get('Height', 'H'); + if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) { + (0, _util.warn)('Image dimensions are missing, or not numbers.'); + return; + } + var maxImageSize = this.options.maxImageSize; + if (maxImageSize !== -1 && w * h > maxImageSize) { + (0, _util.warn)('Image exceeded maximum allowed size and was removed.'); + return; + } + var imageMask = dict.get('ImageMask', 'IM') || false; + var imgData, args; + if (imageMask) { + var width = dict.get('Width', 'W'); + var height = dict.get('Height', 'H'); + var bitStrideLength = width + 7 >> 3; + var imgArray = image.getBytes(bitStrideLength * height); + var decode = dict.getArray('Decode', 'D'); + var inverseDecode = !!decode && decode[0] > 0; + imgData = _image.PDFImage.createMask(imgArray, width, height, image instanceof _stream.DecodeStream, inverseDecode); + imgData.cached = true; + args = [imgData]; + operatorList.addOp(_util.OPS.paintImageMaskXObject, args); + if (cacheKey) { + imageCache[cacheKey] = { + fn: _util.OPS.paintImageMaskXObject, + args: args + }; + } + return; + } + var softMask = dict.get('SMask', 'SM') || false; + var mask = dict.get('Mask') || false; + var SMALL_IMAGE_DIMENSIONS = 200; + if (inline && !softMask && !mask && !(image instanceof _stream.JpegStream) && w + h < SMALL_IMAGE_DIMENSIONS) { + var imageObj = new _image.PDFImage(this.xref, resources, image, inline, null, null); + imgData = imageObj.createImageData(true); + operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]); + return; + } + var nativeImageDecoderSupport = this.options.nativeImageDecoderSupport; + var objId = 'img_' + this.idFactory.createObjId(); + operatorList.addDependency(objId); + args = [objId, w, h]; + if (nativeImageDecoderSupport !== _util.NativeImageDecoding.NONE && !softMask && !mask && image instanceof _stream.JpegStream && NativeImageDecoder.isSupported(image, this.xref, resources)) { + operatorList.addOp(_util.OPS.paintJpegXObject, args); + this.handler.send('obj', [objId, this.pageIndex, 'JpegStream', image.getIR(this.options.forceDataSchema)]); + if (cacheKey) { + imageCache[cacheKey] = { + fn: _util.OPS.paintJpegXObject, + args: args + }; + } + return; + } + var nativeImageDecoder = null; + if (nativeImageDecoderSupport === _util.NativeImageDecoding.DECODE && (image instanceof _stream.JpegStream || mask instanceof _stream.JpegStream || softMask instanceof _stream.JpegStream)) { + nativeImageDecoder = new NativeImageDecoder(this.xref, resources, this.handler, this.options.forceDataSchema); + } + _image.PDFImage.buildImage(this.handler, this.xref, resources, image, inline, nativeImageDecoder).then(function (imageObj) { + var imgData = imageObj.createImageData(false); + _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', imgData], [imgData.data.buffer]); + }).catch(function (reason) { + (0, _util.warn)('Unable to decode image: ' + reason); + _this2.handler.send('obj', [objId, _this2.pageIndex, 'Image', null]); + }); + operatorList.addOp(_util.OPS.paintImageXObject, args); + if (cacheKey) { + imageCache[cacheKey] = { + fn: _util.OPS.paintImageXObject, + args: args + }; + } + }, + handleSMask: function PartialEvaluator_handleSmask(smask, resources, operatorList, task, stateManager) { + var smaskContent = smask.get('G'); + var smaskOptions = { + subtype: smask.get('S').name, + backdrop: smask.get('BC') + }; + var transferObj = smask.get('TR'); + if ((0, _function.isPDFFunction)(transferObj)) { + var transferFn = _function.PDFFunction.parse(this.xref, transferObj); + var transferMap = new Uint8Array(256); + var tmp = new Float32Array(1); + for (var i = 0; i < 256; i++) { + tmp[0] = i / 255; + transferFn(tmp, 0, tmp, 0); + transferMap[i] = tmp[0] * 255 | 0; + } + smaskOptions.transferMap = transferMap; + } + return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, stateManager.state.clone()); + }, + handleTilingType: function handleTilingType(fn, args, resources, pattern, patternDict, operatorList, task) { + var _this3 = this; + + var tilingOpList = new OperatorList(); + var resourcesArray = [patternDict.get('Resources'), resources]; + var patternResources = _primitives.Dict.merge(this.xref, resourcesArray); + return this.getOperatorList({ + stream: pattern, + task: task, + resources: patternResources, + operatorList: tilingOpList + }).then(function () { + return (0, _pattern.getTilingPatternIR)({ + fnArray: tilingOpList.fnArray, + argsArray: tilingOpList.argsArray + }, patternDict, args); + }).then(function (tilingPatternIR) { + operatorList.addDependencies(tilingOpList.dependencies); + operatorList.addOp(fn, tilingPatternIR); + }, function (reason) { + if (_this3.options.ignoreErrors) { + _this3.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown }); + (0, _util.warn)('handleTilingType - ignoring pattern: "' + reason + '".'); + return; + } + throw reason; + }); + }, + + handleSetFont: function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef, operatorList, task, state) { + var _this4 = this; + + var fontName; + if (fontArgs) { + fontArgs = fontArgs.slice(); + fontName = fontArgs[0].name; + } + return this.loadFont(fontName, fontRef, resources).then(function (translated) { + if (!translated.font.isType3Font) { + return translated; + } + return translated.loadType3Data(_this4, resources, operatorList, task).then(function () { + return translated; + }).catch(function (reason) { + _this4.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font }); + return new TranslatedFont('g_font_error', new _fonts.ErrorFont('Type3 font load error: ' + reason), translated.font); + }); + }).then(function (translated) { + state.font = translated.font; + translated.send(_this4.handler); + return translated.loadedName; + }); + }, + handleText: function PartialEvaluator_handleText(chars, state) { + var _this5 = this; + + var font = state.font; + var glyphs = font.charsToGlyphs(chars); + var isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); + if (font.data && (isAddToPathSet || this.options.disableFontFace)) { + var buildPath = function buildPath(fontChar) { + if (!font.renderer.hasBuiltPath(fontChar)) { + var path = font.renderer.getPathJs(fontChar); + _this5.handler.send('commonobj', [font.loadedName + '_path_' + fontChar, 'FontPath', path]); + } + }; + for (var i = 0, ii = glyphs.length; i < ii; i++) { + var glyph = glyphs[i]; + buildPath(glyph.fontChar); + var accent = glyph.accent; + if (accent && accent.fontChar) { + buildPath(accent.fontChar); + } + } + } + return glyphs; + }, + setGState: function PartialEvaluator_setGState(resources, gState, operatorList, task, stateManager) { + var _this6 = this; + + var gStateObj = []; + var gStateKeys = gState.getKeys(); + var promise = Promise.resolve(); + + var _loop = function _loop() { + var key = gStateKeys[i]; + var value = gState.get(key); + switch (key) { + case 'Type': + break; + case 'LW': + case 'LC': + case 'LJ': + case 'ML': + case 'D': + case 'RI': + case 'FL': + case 'CA': + case 'ca': + gStateObj.push([key, value]); + break; + case 'Font': + promise = promise.then(function () { + return _this6.handleSetFont(resources, null, value[0], operatorList, task, stateManager.state).then(function (loadedName) { + operatorList.addDependency(loadedName); + gStateObj.push([key, [loadedName, value[1]]]); + }); + }); + break; + case 'BM': + gStateObj.push([key, normalizeBlendMode(value)]); + break; + case 'SMask': + if ((0, _primitives.isName)(value, 'None')) { + gStateObj.push([key, false]); + break; + } + if ((0, _primitives.isDict)(value)) { + promise = promise.then(function () { + return _this6.handleSMask(value, resources, operatorList, task, stateManager); + }); + gStateObj.push([key, true]); + } else { + (0, _util.warn)('Unsupported SMask type'); + } + break; + case 'OP': + case 'op': + case 'OPM': + case 'BG': + case 'BG2': + case 'UCR': + case 'UCR2': + case 'TR': + case 'TR2': + case 'HT': + case 'SM': + case 'SA': + case 'AIS': + case 'TK': + (0, _util.info)('graphic state operator ' + key); + break; + default: + (0, _util.info)('Unknown graphic state operator ' + key); + break; + } + }; + + for (var i = 0, ii = gStateKeys.length; i < ii; i++) { + _loop(); + } + return promise.then(function () { + if (gStateObj.length > 0) { + operatorList.addOp(_util.OPS.setGState, [gStateObj]); + } + }); + }, + loadFont: function PartialEvaluator_loadFont(fontName, font, resources) { + var _this7 = this; + + function errorFont() { + return Promise.resolve(new TranslatedFont('g_font_error', new _fonts.ErrorFont('Font ' + fontName + ' is not available'), font)); + } + var fontRef, + xref = this.xref; + if (font) { + if (!(0, _primitives.isRef)(font)) { + throw new Error('The "font" object should be a reference.'); + } + fontRef = font; + } else { + var fontRes = resources.get('Font'); + if (fontRes) { + fontRef = fontRes.getRaw(fontName); + } else { + (0, _util.warn)('fontRes not available'); + return errorFont(); + } + } + if (!fontRef) { + (0, _util.warn)('fontRef not available'); + return errorFont(); + } + if (this.fontCache.has(fontRef)) { + return this.fontCache.get(fontRef); + } + font = xref.fetchIfRef(fontRef); + if (!(0, _primitives.isDict)(font)) { + return errorFont(); + } + if (font.translated) { + return font.translated; + } + var fontCapability = (0, _util.createPromiseCapability)(); + var preEvaluatedFont = this.preEvaluateFont(font); + var descriptor = preEvaluatedFont.descriptor; + var fontRefIsRef = (0, _primitives.isRef)(fontRef), + fontID; + if (fontRefIsRef) { + fontID = fontRef.toString(); + } + if ((0, _primitives.isDict)(descriptor)) { + if (!descriptor.fontAliases) { + descriptor.fontAliases = Object.create(null); + } + var fontAliases = descriptor.fontAliases; + var hash = preEvaluatedFont.hash; + if (fontAliases[hash]) { + var aliasFontRef = fontAliases[hash].aliasRef; + if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) { + this.fontCache.putAlias(fontRef, aliasFontRef); + return this.fontCache.get(fontRef); + } + } else { + fontAliases[hash] = { fontID: _fonts.Font.getFontID() }; + } + if (fontRefIsRef) { + fontAliases[hash].aliasRef = fontRef; + } + fontID = fontAliases[hash].fontID; + } + if (fontRefIsRef) { + this.fontCache.put(fontRef, fontCapability.promise); + } else { + if (!fontID) { + fontID = this.idFactory.createObjId(); + } + this.fontCache.put('id_' + fontID, fontCapability.promise); + } + (0, _util.assert)(fontID, 'The "fontID" must be defined.'); + font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID; + font.translated = fontCapability.promise; + var translatedPromise; + try { + translatedPromise = this.translateFont(preEvaluatedFont); + } catch (e) { + translatedPromise = Promise.reject(e); + } + translatedPromise.then(function (translatedFont) { + if (translatedFont.fontType !== undefined) { + var xrefFontStats = xref.stats.fontTypes; + xrefFontStats[translatedFont.fontType] = true; + } + fontCapability.resolve(new TranslatedFont(font.loadedName, translatedFont, font)); + }).catch(function (reason) { + _this7.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.font }); + try { + var descriptor = preEvaluatedFont.descriptor; + var fontFile3 = descriptor && descriptor.get('FontFile3'); + var subtype = fontFile3 && fontFile3.get('Subtype'); + var fontType = (0, _fonts.getFontType)(preEvaluatedFont.type, subtype && subtype.name); + var xrefFontStats = xref.stats.fontTypes; + xrefFontStats[fontType] = true; + } catch (ex) {} + fontCapability.resolve(new TranslatedFont(font.loadedName, new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason), font)); + }); + return fontCapability.promise; + }, + buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) { + var lastIndex = operatorList.length - 1; + if (!args) { + args = []; + } + if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) { + operatorList.addOp(_util.OPS.constructPath, [[fn], args]); + } else { + var opArgs = operatorList.argsArray[lastIndex]; + opArgs[0].push(fn); + Array.prototype.push.apply(opArgs[1], args); + } + }, + handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args, cs, patterns, resources, task) { + var patternName = args[args.length - 1]; + var pattern; + if ((0, _primitives.isName)(patternName) && (pattern = patterns.get(patternName.name))) { + var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern; + var typeNum = dict.get('PatternType'); + if (typeNum === TILING_PATTERN) { + var color = cs.base ? cs.base.getRgb(args, 0) : null; + return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task); + } else if (typeNum === SHADING_PATTERN) { + var shading = dict.get('Shading'); + var matrix = dict.getArray('Matrix'); + pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler); + operatorList.addOp(fn, pattern.getIR()); + return Promise.resolve(); + } + return Promise.reject(new Error('Unknown PatternType: ' + typeNum)); + } + operatorList.addOp(fn, args); + return Promise.resolve(); + }, + getOperatorList: function getOperatorList(_ref2) { + var _this8 = this; + + var stream = _ref2.stream, + task = _ref2.task, + resources = _ref2.resources, + operatorList = _ref2.operatorList, + _ref2$initialState = _ref2.initialState, + initialState = _ref2$initialState === undefined ? null : _ref2$initialState; + + resources = resources || _primitives.Dict.empty; + initialState = initialState || new EvalState(); + if (!operatorList) { + throw new Error('getOperatorList: missing "operatorList" parameter'); + } + var self = this; + var xref = this.xref; + var imageCache = Object.create(null); + var xobjs = resources.get('XObject') || _primitives.Dict.empty; + var patterns = resources.get('Pattern') || _primitives.Dict.empty; + var stateManager = new StateManager(initialState); + var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + var timeSlotManager = new TimeSlotManager(); + function closePendingRestoreOPS(argument) { + for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) { + operatorList.addOp(_util.OPS.restore, []); + } + } + return new Promise(function promiseBody(resolve, reject) { + var next = function next(promise) { + promise.then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + var stop, + operation = {}, + i, + ii, + cs; + while (!(stop = timeSlotManager.check())) { + operation.args = null; + if (!preprocessor.read(operation)) { + break; + } + var args = operation.args; + var fn = operation.fn; + switch (fn | 0) { + case _util.OPS.paintXObject: + var name = args[0].name; + if (!name) { + (0, _util.warn)('XObject must be referred to by name.'); + continue; + } + if (imageCache[name] !== undefined) { + operatorList.addOp(imageCache[name].fn, imageCache[name].args); + args = null; + continue; + } + var xobj = xobjs.get(name); + if (xobj) { + if (!(0, _primitives.isStream)(xobj)) { + throw new _util.FormatError('XObject should be a stream'); + } + var type = xobj.dict.get('Subtype'); + if (!(0, _primitives.isName)(type)) { + throw new _util.FormatError('XObject should have a Name subtype'); + } + if (type.name === 'Form') { + stateManager.save(); + next(self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone()).then(function () { + stateManager.restore(); + })); + return; + } else if (type.name === 'Image') { + self.buildPaintImageXObject(resources, xobj, false, operatorList, name, imageCache); + args = null; + continue; + } else if (type.name === 'PS') { + (0, _util.info)('Ignored XObject subtype PS'); + continue; + } else { + throw new _util.FormatError('Unhandled XObject subtype ' + type.name); + } + } + break; + case _util.OPS.setFont: + var fontSize = args[1]; + next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state).then(function (loadedName) { + operatorList.addDependency(loadedName); + operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]); + })); + return; + case _util.OPS.endInlineImage: + var cacheKey = args[0].cacheKey; + if (cacheKey) { + var cacheEntry = imageCache[cacheKey]; + if (cacheEntry !== undefined) { + operatorList.addOp(cacheEntry.fn, cacheEntry.args); + args = null; + continue; + } + } + self.buildPaintImageXObject(resources, args[0], true, operatorList, cacheKey, imageCache); + args = null; + continue; + case _util.OPS.showText: + args[0] = self.handleText(args[0], stateManager.state); + break; + case _util.OPS.showSpacedText: + var arr = args[0]; + var combinedGlyphs = []; + var arrLength = arr.length; + var state = stateManager.state; + for (i = 0; i < arrLength; ++i) { + var arrItem = arr[i]; + if ((0, _util.isString)(arrItem)) { + Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state)); + } else if ((0, _util.isNum)(arrItem)) { + combinedGlyphs.push(arrItem); + } + } + args[0] = combinedGlyphs; + fn = _util.OPS.showText; + break; + case _util.OPS.nextLineShowText: + operatorList.addOp(_util.OPS.nextLine); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + case _util.OPS.nextLineSetSpacingShowText: + operatorList.addOp(_util.OPS.nextLine); + operatorList.addOp(_util.OPS.setWordSpacing, [args.shift()]); + operatorList.addOp(_util.OPS.setCharSpacing, [args.shift()]); + args[0] = self.handleText(args[0], stateManager.state); + fn = _util.OPS.showText; + break; + case _util.OPS.setTextRenderingMode: + stateManager.state.textRenderingMode = args[0]; + break; + case _util.OPS.setFillColorSpace: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources); + continue; + case _util.OPS.setStrokeColorSpace: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.parse(args[0], xref, resources); + continue; + case _util.OPS.setFillColor: + cs = stateManager.state.fillColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeColor: + cs = stateManager.state.strokeColorSpace; + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillGray: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeGray: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillCMYKColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeCMYKColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk; + args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.setFillRGBColor: + stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + case _util.OPS.setStrokeRGBColor: + stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb; + args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0); + break; + case _util.OPS.setFillColorN: + cs = stateManager.state.fillColorSpace; + if (cs.name === 'Pattern') { + next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, task)); + return; + } + args = cs.getRgb(args, 0); + fn = _util.OPS.setFillRGBColor; + break; + case _util.OPS.setStrokeColorN: + cs = stateManager.state.strokeColorSpace; + if (cs.name === 'Pattern') { + next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, task)); + return; + } + args = cs.getRgb(args, 0); + fn = _util.OPS.setStrokeRGBColor; + break; + case _util.OPS.shadingFill: + var shadingRes = resources.get('Shading'); + if (!shadingRes) { + throw new _util.FormatError('No shading resource found'); + } + var shading = shadingRes.get(args[0].name); + if (!shading) { + throw new _util.FormatError('No shading object found'); + } + var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler); + var patternIR = shadingFill.getIR(); + args = [patternIR]; + fn = _util.OPS.shadingFill; + break; + case _util.OPS.setGState: + var dictName = args[0]; + var extGState = resources.get('ExtGState'); + if (!(0, _primitives.isDict)(extGState) || !extGState.has(dictName.name)) { + break; + } + var gState = extGState.get(dictName.name); + next(self.setGState(resources, gState, operatorList, task, stateManager)); + return; + case _util.OPS.moveTo: + case _util.OPS.lineTo: + case _util.OPS.curveTo: + case _util.OPS.curveTo2: + case _util.OPS.curveTo3: + case _util.OPS.closePath: + self.buildPath(operatorList, fn, args); + continue; + case _util.OPS.rectangle: + self.buildPath(operatorList, fn, args); + continue; + case _util.OPS.markPoint: + case _util.OPS.markPointProps: + case _util.OPS.beginMarkedContent: + case _util.OPS.beginMarkedContentProps: + case _util.OPS.endMarkedContent: + case _util.OPS.beginCompat: + case _util.OPS.endCompat: + continue; + default: + if (args !== null) { + for (i = 0, ii = args.length; i < ii; i++) { + if (args[i] instanceof _primitives.Dict) { + break; + } + } + if (i < ii) { + (0, _util.warn)('getOperatorList - ignoring operator: ' + fn); + continue; + } + } + } + operatorList.addOp(fn, args); + } + if (stop) { + next(deferred); + return; + } + closePendingRestoreOPS(); + resolve(); + }).catch(function (reason) { + if (_this8.options.ignoreErrors) { + _this8.handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown }); + (0, _util.warn)('getOperatorList - ignoring errors during task: ' + task.name); + closePendingRestoreOPS(); + return; + } + throw reason; + }); + }, + getTextContent: function getTextContent(_ref3) { + var _this9 = this; + + var stream = _ref3.stream, + task = _ref3.task, + resources = _ref3.resources, + _ref3$stateManager = _ref3.stateManager, + stateManager = _ref3$stateManager === undefined ? null : _ref3$stateManager, + _ref3$normalizeWhites = _ref3.normalizeWhitespace, + normalizeWhitespace = _ref3$normalizeWhites === undefined ? false : _ref3$normalizeWhites, + _ref3$combineTextItem = _ref3.combineTextItems, + combineTextItems = _ref3$combineTextItem === undefined ? false : _ref3$combineTextItem, + sink = _ref3.sink, + _ref3$seenStyles = _ref3.seenStyles, + seenStyles = _ref3$seenStyles === undefined ? Object.create(null) : _ref3$seenStyles; + + resources = resources || _primitives.Dict.empty; + stateManager = stateManager || new StateManager(new TextState()); + var WhitespaceRegexp = /\s/g; + var textContent = { + items: [], + styles: Object.create(null) + }; + var textContentItem = { + initialized: false, + str: [], + width: 0, + height: 0, + vertical: false, + lastAdvanceWidth: 0, + lastAdvanceHeight: 0, + textAdvanceScale: 0, + spaceWidth: 0, + fakeSpaceMin: Infinity, + fakeMultiSpaceMin: Infinity, + fakeMultiSpaceMax: -0, + textRunBreakAllowed: false, + transform: null, + fontName: null + }; + var SPACE_FACTOR = 0.3; + var MULTI_SPACE_FACTOR = 1.5; + var MULTI_SPACE_FACTOR_MAX = 4; + var self = this; + var xref = this.xref; + var xobjs = null; + var skipEmptyXObjs = Object.create(null); + var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager); + var textState; + function ensureTextContentItem() { + if (textContentItem.initialized) { + return textContentItem; + } + var font = textState.font; + if (!(font.loadedName in seenStyles)) { + seenStyles[font.loadedName] = true; + textContent.styles[font.loadedName] = { + fontFamily: font.fallbackName, + ascent: font.ascent, + descent: font.descent, + vertical: font.vertical + }; + } + textContentItem.fontName = font.loadedName; + var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise]; + if (font.isType3Font && textState.fontMatrix !== _util.FONT_IDENTITY_MATRIX && textState.fontSize === 1) { + var glyphHeight = font.bbox[3] - font.bbox[1]; + if (glyphHeight > 0) { + glyphHeight = glyphHeight * textState.fontMatrix[3]; + tsm[3] *= glyphHeight; + } + } + var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm)); + textContentItem.transform = trm; + if (!font.vertical) { + textContentItem.width = 0; + textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]); + textContentItem.vertical = false; + } else { + textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]); + textContentItem.height = 0; + textContentItem.vertical = true; + } + var a = textState.textLineMatrix[0]; + var b = textState.textLineMatrix[1]; + var scaleLineX = Math.sqrt(a * a + b * b); + a = textState.ctm[0]; + b = textState.ctm[1]; + var scaleCtmX = Math.sqrt(a * a + b * b); + textContentItem.textAdvanceScale = scaleCtmX * scaleLineX; + textContentItem.lastAdvanceWidth = 0; + textContentItem.lastAdvanceHeight = 0; + var spaceWidth = font.spaceWidth / 1000 * textState.fontSize; + if (spaceWidth) { + textContentItem.spaceWidth = spaceWidth; + textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR; + textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR; + textContentItem.fakeMultiSpaceMax = spaceWidth * MULTI_SPACE_FACTOR_MAX; + textContentItem.textRunBreakAllowed = !font.isMonospace; + } else { + textContentItem.spaceWidth = 0; + textContentItem.fakeSpaceMin = Infinity; + textContentItem.fakeMultiSpaceMin = Infinity; + textContentItem.fakeMultiSpaceMax = 0; + textContentItem.textRunBreakAllowed = false; + } + textContentItem.initialized = true; + return textContentItem; + } + function replaceWhitespace(str) { + var i = 0, + ii = str.length, + code; + while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) { + i++; + } + return i < ii ? str.replace(WhitespaceRegexp, ' ') : str; + } + function runBidiTransform(textChunk) { + var str = textChunk.str.join(''); + var bidiResult = (0, _bidi.bidi)(str, -1, textChunk.vertical); + return { + str: normalizeWhitespace ? replaceWhitespace(bidiResult.str) : bidiResult.str, + dir: bidiResult.dir, + width: textChunk.width, + height: textChunk.height, + transform: textChunk.transform, + fontName: textChunk.fontName + }; + } + function handleSetFont(fontName, fontRef) { + return self.loadFont(fontName, fontRef, resources).then(function (translated) { + textState.font = translated.font; + textState.fontMatrix = translated.font.fontMatrix || _util.FONT_IDENTITY_MATRIX; + }); + } + function buildTextContentItem(chars) { + var font = textState.font; + var textChunk = ensureTextContentItem(); + var width = 0; + var height = 0; + var glyphs = font.charsToGlyphs(chars); + for (var i = 0; i < glyphs.length; i++) { + var glyph = glyphs[i]; + var glyphWidth = null; + if (font.vertical && glyph.vmetric) { + glyphWidth = glyph.vmetric[0]; + } else { + glyphWidth = glyph.width; + } + var glyphUnicode = glyph.unicode; + var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)(); + if (NormalizedUnicodes[glyphUnicode] !== undefined) { + glyphUnicode = NormalizedUnicodes[glyphUnicode]; + } + glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode); + var charSpacing = textState.charSpacing; + if (glyph.isSpace) { + var wordSpacing = textState.wordSpacing; + charSpacing += wordSpacing; + if (wordSpacing > 0) { + addFakeSpaces(wordSpacing, textChunk.str); + } + } + var tx = 0; + var ty = 0; + if (!font.vertical) { + var w0 = glyphWidth * textState.fontMatrix[0]; + tx = (w0 * textState.fontSize + charSpacing) * textState.textHScale; + width += tx; + } else { + var w1 = glyphWidth * textState.fontMatrix[0]; + ty = w1 * textState.fontSize + charSpacing; + height += ty; + } + textState.translateTextMatrix(tx, ty); + textChunk.str.push(glyphUnicode); + } + if (!font.vertical) { + textChunk.lastAdvanceWidth = width; + textChunk.width += width; + } else { + textChunk.lastAdvanceHeight = height; + textChunk.height += Math.abs(height); + } + return textChunk; + } + function addFakeSpaces(width, strBuf) { + if (width < textContentItem.fakeSpaceMin) { + return; + } + if (width < textContentItem.fakeMultiSpaceMin) { + strBuf.push(' '); + return; + } + var fakeSpaces = Math.round(width / textContentItem.spaceWidth); + while (fakeSpaces-- > 0) { + strBuf.push(' '); + } + } + function flushTextContentItem() { + if (!textContentItem.initialized) { + return; + } + textContentItem.width *= textContentItem.textAdvanceScale; + textContentItem.height *= textContentItem.textAdvanceScale; + textContent.items.push(runBidiTransform(textContentItem)); + textContentItem.initialized = false; + textContentItem.str.length = 0; + } + function enqueueChunk() { + var length = textContent.items.length; + if (length > 0) { + sink.enqueue(textContent, length); + textContent.items = []; + textContent.styles = Object.create(null); + } + } + var timeSlotManager = new TimeSlotManager(); + return new Promise(function promiseBody(resolve, reject) { + var next = function next(promise) { + enqueueChunk(); + Promise.all([promise, sink.ready]).then(function () { + try { + promiseBody(resolve, reject); + } catch (ex) { + reject(ex); + } + }, reject); + }; + task.ensureNotTerminated(); + timeSlotManager.reset(); + var stop, + operation = {}, + args = []; + while (!(stop = timeSlotManager.check())) { + args.length = 0; + operation.args = args; + if (!preprocessor.read(operation)) { + break; + } + textState = stateManager.state; + var fn = operation.fn; + args = operation.args; + var advance, diff; + var fontNameArg, fontSizeArg; + var isSameTextLine; + var items; + var offset; + var j, jj; + var breakTextRun; + var name; + var xobj; + var type; + var currentState; + var xObjStateManager; + var matrix; + var dictName; + var extGState; + var gState; + var gStateFont; + + var _ret2 = function () { + switch (fn | 0) { + case _util.OPS.setFont: + fontNameArg = args[0].name; + fontSizeArg = args[1]; + + if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) { + break; + } + flushTextContentItem(); + textState.fontName = fontNameArg; + textState.fontSize = fontSizeArg; + next(handleSetFont(fontNameArg, null)); + return { + v: void 0 + }; + case _util.OPS.setTextRise: + flushTextContentItem(); + textState.textRise = args[0]; + break; + case _util.OPS.setHScale: + flushTextContentItem(); + textState.textHScale = args[0] / 100; + break; + case _util.OPS.setLeading: + flushTextContentItem(); + textState.leading = args[0]; + break; + case _util.OPS.moveText: + isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 0; + + advance = args[0] - args[1]; + if (combineTextItems && isSameTextLine && textContentItem.initialized && advance > 0 && advance <= textContentItem.fakeMultiSpaceMax) { + textState.translateTextLineMatrix(args[0], args[1]); + textContentItem.width += args[0] - textContentItem.lastAdvanceWidth; + textContentItem.height += args[1] - textContentItem.lastAdvanceHeight; + diff = args[0] - textContentItem.lastAdvanceWidth - (args[1] - textContentItem.lastAdvanceHeight); + addFakeSpaces(diff, textContentItem.str); + break; + } + flushTextContentItem(); + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case _util.OPS.setLeadingMoveText: + flushTextContentItem(); + textState.leading = -args[1]; + textState.translateTextLineMatrix(args[0], args[1]); + textState.textMatrix = textState.textLineMatrix.slice(); + break; + case _util.OPS.nextLine: + flushTextContentItem(); + textState.carriageReturn(); + break; + case _util.OPS.setTextMatrix: + advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], args[5]); + if (combineTextItems && advance !== null && textContentItem.initialized && advance.value > 0 && advance.value <= textContentItem.fakeMultiSpaceMax) { + textState.translateTextLineMatrix(advance.width, advance.height); + textContentItem.width += advance.width - textContentItem.lastAdvanceWidth; + textContentItem.height += advance.height - textContentItem.lastAdvanceHeight; + diff = advance.width - textContentItem.lastAdvanceWidth - (advance.height - textContentItem.lastAdvanceHeight); + addFakeSpaces(diff, textContentItem.str); + break; + } + flushTextContentItem(); + textState.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + textState.setTextLineMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setCharSpacing: + textState.charSpacing = args[0]; + break; + case _util.OPS.setWordSpacing: + textState.wordSpacing = args[0]; + break; + case _util.OPS.beginText: + flushTextContentItem(); + textState.textMatrix = _util.IDENTITY_MATRIX.slice(); + textState.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + break; + case _util.OPS.showSpacedText: + items = args[0]; + + for (j = 0, jj = items.length; j < jj; j++) { + if (typeof items[j] === 'string') { + buildTextContentItem(items[j]); + } else if ((0, _util.isNum)(items[j])) { + ensureTextContentItem(); + advance = items[j] * textState.fontSize / 1000; + breakTextRun = false; + + if (textState.font.vertical) { + offset = advance; + textState.translateTextMatrix(0, offset); + breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax; + if (!breakTextRun) { + textContentItem.height += offset; + } + } else { + advance = -advance; + offset = advance * textState.textHScale; + textState.translateTextMatrix(offset, 0); + breakTextRun = textContentItem.textRunBreakAllowed && advance > textContentItem.fakeMultiSpaceMax; + if (!breakTextRun) { + textContentItem.width += offset; + } + } + if (breakTextRun) { + flushTextContentItem(); + } else if (advance > 0) { + addFakeSpaces(advance, textContentItem.str); + } + } + } + break; + case _util.OPS.showText: + buildTextContentItem(args[0]); + break; + case _util.OPS.nextLineShowText: + flushTextContentItem(); + textState.carriageReturn(); + buildTextContentItem(args[0]); + break; + case _util.OPS.nextLineSetSpacingShowText: + flushTextContentItem(); + textState.wordSpacing = args[0]; + textState.charSpacing = args[1]; + textState.carriageReturn(); + buildTextContentItem(args[2]); + break; + case _util.OPS.paintXObject: + flushTextContentItem(); + if (!xobjs) { + xobjs = resources.get('XObject') || _primitives.Dict.empty; + } + name = args[0].name; + + if (name in skipEmptyXObjs) { + break; + } + xobj = xobjs.get(name); + + if (!xobj) { + break; + } + if (!(0, _primitives.isStream)(xobj)) { + throw new _util.FormatError('XObject should be a stream'); + } + type = xobj.dict.get('Subtype'); + + if (!(0, _primitives.isName)(type)) { + throw new _util.FormatError('XObject should have a Name subtype'); + } + if (type.name !== 'Form') { + skipEmptyXObjs[name] = true; + break; + } + currentState = stateManager.state.clone(); + xObjStateManager = new StateManager(currentState); + matrix = xobj.dict.getArray('Matrix'); + + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + xObjStateManager.transform(matrix); + } + enqueueChunk(); + var sinkWrapper = { + enqueueInvoked: false, + enqueue: function enqueue(chunk, size) { + this.enqueueInvoked = true; + sink.enqueue(chunk, size); + }, + + get desiredSize() { + return sink.desiredSize; + }, + get ready() { + return sink.ready; + } + }; + next(self.getTextContent({ + stream: xobj, + task: task, + resources: xobj.dict.get('Resources') || resources, + stateManager: xObjStateManager, + normalizeWhitespace: normalizeWhitespace, + combineTextItems: combineTextItems, + sink: sinkWrapper, + seenStyles: seenStyles + }).then(function () { + if (!sinkWrapper.enqueueInvoked) { + skipEmptyXObjs[name] = true; + } + })); + return { + v: void 0 + }; + case _util.OPS.setGState: + flushTextContentItem(); + dictName = args[0]; + extGState = resources.get('ExtGState'); + + if (!(0, _primitives.isDict)(extGState) || !(0, _primitives.isName)(dictName)) { + break; + } + gState = extGState.get(dictName.name); + + if (!(0, _primitives.isDict)(gState)) { + break; + } + gStateFont = gState.get('Font'); + + if (gStateFont) { + textState.fontName = null; + textState.fontSize = gStateFont[1]; + next(handleSetFont(null, gStateFont[0])); + return { + v: void 0 + }; + } + break; + } + }(); + + if ((typeof _ret2 === 'undefined' ? 'undefined' : _typeof(_ret2)) === "object") return _ret2.v; + if (textContent.items.length >= sink.desiredSize) { + stop = true; + break; + } + } + if (stop) { + next(deferred); + return; + } + flushTextContentItem(); + enqueueChunk(); + resolve(); + }).catch(function (reason) { + if (reason instanceof _util.AbortException) { + return; + } + if (_this9.options.ignoreErrors) { + (0, _util.warn)('getTextContent - ignoring errors during task: ' + task.name); + flushTextContentItem(); + enqueueChunk(); + return; + } + throw reason; + }); + }, + + extractDataStructures: function PartialEvaluator_extractDataStructures(dict, baseDict, properties) { + var _this10 = this; + + var xref = this.xref; + var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); + var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined); + if (properties.composite) { + var cidSystemInfo = dict.get('CIDSystemInfo'); + if ((0, _primitives.isDict)(cidSystemInfo)) { + properties.cidSystemInfo = { + registry: cidSystemInfo.get('Registry'), + ordering: cidSystemInfo.get('Ordering'), + supplement: cidSystemInfo.get('Supplement') + }; + } + var cidToGidMap = dict.get('CIDToGIDMap'); + if ((0, _primitives.isStream)(cidToGidMap)) { + properties.cidToGidMap = this.readCidToGidMap(cidToGidMap); + } + } + var differences = []; + var baseEncodingName = null; + var encoding; + if (dict.has('Encoding')) { + encoding = dict.get('Encoding'); + if ((0, _primitives.isDict)(encoding)) { + baseEncodingName = encoding.get('BaseEncoding'); + baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null; + if (encoding.has('Differences')) { + var diffEncoding = encoding.get('Differences'); + var index = 0; + for (var j = 0, jj = diffEncoding.length; j < jj; j++) { + var data = xref.fetchIfRef(diffEncoding[j]); + if ((0, _util.isNum)(data)) { + index = data; + } else if ((0, _primitives.isName)(data)) { + differences[index++] = data.name; + } else { + throw new _util.FormatError('Invalid entry in \'Differences\' array: ' + data); + } + } + } + } else if ((0, _primitives.isName)(encoding)) { + baseEncodingName = encoding.name; + } else { + throw new _util.FormatError('Encoding is not a Name nor a Dict'); + } + if (baseEncodingName !== 'MacRomanEncoding' && baseEncodingName !== 'MacExpertEncoding' && baseEncodingName !== 'WinAnsiEncoding') { + baseEncodingName = null; + } + } + if (baseEncodingName) { + properties.defaultEncoding = (0, _encodings.getEncoding)(baseEncodingName).slice(); + } else { + var isSymbolicFont = !!(properties.flags & _fonts.FontFlags.Symbolic); + var isNonsymbolicFont = !!(properties.flags & _fonts.FontFlags.Nonsymbolic); + encoding = _encodings.StandardEncoding; + if (properties.type === 'TrueType' && !isNonsymbolicFont) { + encoding = _encodings.WinAnsiEncoding; + } + if (isSymbolicFont) { + encoding = _encodings.MacRomanEncoding; + if (!properties.file) { + if (/Symbol/i.test(properties.name)) { + encoding = _encodings.SymbolSetEncoding; + } else if (/Dingbats/i.test(properties.name)) { + encoding = _encodings.ZapfDingbatsEncoding; + } + } + } + properties.defaultEncoding = encoding; + } + properties.differences = differences; + properties.baseEncodingName = baseEncodingName; + properties.hasEncoding = !!baseEncodingName || differences.length > 0; + properties.dict = dict; + return toUnicodePromise.then(function (toUnicode) { + properties.toUnicode = toUnicode; + return _this10.buildToUnicode(properties); + }).then(function (toUnicode) { + properties.toUnicode = toUnicode; + return properties; + }); + }, + buildToUnicode: function PartialEvaluator_buildToUnicode(properties) { + properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0; + if (properties.hasIncludedToUnicodeMap) { + return Promise.resolve(properties.toUnicode); + } + var toUnicode, charcode, glyphName; + if (!properties.composite) { + toUnicode = []; + var encoding = properties.defaultEncoding.slice(); + var baseEncodingName = properties.baseEncodingName; + var differences = properties.differences; + for (charcode in differences) { + glyphName = differences[charcode]; + if (glyphName === '.notdef') { + continue; + } + encoding[charcode] = glyphName; + } + var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (charcode in encoding) { + glyphName = encoding[charcode]; + if (glyphName === '') { + continue; + } else if (glyphsUnicodeMap[glyphName] === undefined) { + var code = 0; + switch (glyphName[0]) { + case 'G': + if (glyphName.length === 3) { + code = parseInt(glyphName.substr(1), 16); + } + break; + case 'g': + if (glyphName.length === 5) { + code = parseInt(glyphName.substr(1), 16); + } + break; + case 'C': + case 'c': + if (glyphName.length >= 3) { + code = +glyphName.substr(1); + } + break; + default: + var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + code = unicode; + } + } + if (code) { + if (baseEncodingName && code === +charcode) { + var baseEncoding = (0, _encodings.getEncoding)(baseEncodingName); + if (baseEncoding && (glyphName = baseEncoding[charcode])) { + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + continue; + } + } + toUnicode[charcode] = String.fromCharCode(code); + } + continue; + } + toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]); + } + return Promise.resolve(new _fonts.ToUnicodeMap(toUnicode)); + } + if (properties.composite && (properties.cMap.builtInCMap && !(properties.cMap instanceof _cmap.IdentityCMap) || properties.cidSystemInfo.registry === 'Adobe' && (properties.cidSystemInfo.ordering === 'GB1' || properties.cidSystemInfo.ordering === 'CNS1' || properties.cidSystemInfo.ordering === 'Japan1' || properties.cidSystemInfo.ordering === 'Korea1'))) { + var registry = properties.cidSystemInfo.registry; + var ordering = properties.cidSystemInfo.ordering; + var ucs2CMapName = _primitives.Name.get(registry + '-' + ordering + '-UCS2'); + return _cmap.CMapFactory.create({ + encoding: ucs2CMapName, + fetchBuiltInCMap: this.fetchBuiltInCMap, + useCMap: null + }).then(function (ucs2CMap) { + var cMap = properties.cMap; + toUnicode = []; + cMap.forEach(function (charcode, cid) { + if (cid > 0xffff) { + throw new _util.FormatError('Max size of CID is 65,535'); + } + var ucs2 = ucs2CMap.lookup(cid); + if (ucs2) { + toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1)); + } + }); + return new _fonts.ToUnicodeMap(toUnicode); + }); + } + return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar)); + }, + readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) { + var cmapObj = toUnicode; + if ((0, _primitives.isName)(cmapObj)) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this.fetchBuiltInCMap, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _fonts.IdentityToUnicodeMap(0, 0xFFFF); + } + return new _fonts.ToUnicodeMap(cmap.getMap()); + }); + } else if ((0, _primitives.isStream)(cmapObj)) { + return _cmap.CMapFactory.create({ + encoding: cmapObj, + fetchBuiltInCMap: this.fetchBuiltInCMap, + useCMap: null + }).then(function (cmap) { + if (cmap instanceof _cmap.IdentityCMap) { + return new _fonts.IdentityToUnicodeMap(0, 0xFFFF); + } + var map = new Array(cmap.length); + cmap.forEach(function (charCode, token) { + var str = []; + for (var k = 0; k < token.length; k += 2) { + var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + if ((w1 & 0xF800) !== 0xD800) { + str.push(w1); + continue; + } + k += 2; + var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1); + str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000); + } + map[charCode] = String.fromCharCode.apply(String, str); + }); + return new _fonts.ToUnicodeMap(map); + }); + } + return Promise.resolve(null); + }, + readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) { + var glyphsData = cidToGidStream.getBytes(); + var result = []; + for (var j = 0, jj = glyphsData.length; j < jj; j++) { + var glyphID = glyphsData[j++] << 8 | glyphsData[j]; + if (glyphID === 0) { + continue; + } + var code = j >> 1; + result[code] = glyphID; + } + return result; + }, + extractWidths: function PartialEvaluator_extractWidths(dict, descriptor, properties) { + var xref = this.xref; + var glyphsWidths = []; + var defaultWidth = 0; + var glyphsVMetrics = []; + var defaultVMetrics; + var i, ii, j, jj, start, code, widths; + if (properties.composite) { + defaultWidth = dict.get('DW') || 1000; + widths = dict.get('W'); + if (widths) { + for (i = 0, ii = widths.length; i < ii; i++) { + start = xref.fetchIfRef(widths[i++]); + code = xref.fetchIfRef(widths[i]); + if ((0, _util.isArray)(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsWidths[start++] = xref.fetchIfRef(code[j]); + } + } else { + var width = xref.fetchIfRef(widths[++i]); + for (j = start; j <= code; j++) { + glyphsWidths[j] = width; + } + } + } + } + if (properties.vertical) { + var vmetrics = dict.getArray('DW2') || [880, -1000]; + defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]]; + vmetrics = dict.get('W2'); + if (vmetrics) { + for (i = 0, ii = vmetrics.length; i < ii; i++) { + start = xref.fetchIfRef(vmetrics[i++]); + code = xref.fetchIfRef(vmetrics[i]); + if ((0, _util.isArray)(code)) { + for (j = 0, jj = code.length; j < jj; j++) { + glyphsVMetrics[start++] = [xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j++]), xref.fetchIfRef(code[j])]; + } + } else { + var vmetric = [xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i]), xref.fetchIfRef(vmetrics[++i])]; + for (j = start; j <= code; j++) { + glyphsVMetrics[j] = vmetric; + } + } + } + } + } + } else { + var firstChar = properties.firstChar; + widths = dict.get('Widths'); + if (widths) { + j = firstChar; + for (i = 0, ii = widths.length; i < ii; i++) { + glyphsWidths[j++] = xref.fetchIfRef(widths[i]); + } + defaultWidth = parseFloat(descriptor.get('MissingWidth')) || 0; + } else { + var baseFontName = dict.get('BaseFont'); + if ((0, _primitives.isName)(baseFontName)) { + var metrics = this.getBaseFontMetrics(baseFontName.name); + glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties); + defaultWidth = metrics.defaultWidth; + } + } + } + var isMonospace = true; + var firstWidth = defaultWidth; + for (var glyph in glyphsWidths) { + var glyphWidth = glyphsWidths[glyph]; + if (!glyphWidth) { + continue; + } + if (!firstWidth) { + firstWidth = glyphWidth; + continue; + } + if (firstWidth !== glyphWidth) { + isMonospace = false; + break; + } + } + if (isMonospace) { + properties.flags |= _fonts.FontFlags.FixedPitch; + } + properties.defaultWidth = defaultWidth; + properties.widths = glyphsWidths; + properties.defaultVMetrics = defaultVMetrics; + properties.vmetrics = glyphsVMetrics; + }, + isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) { + var fontNameWoStyle = baseFontName.split('-')[0]; + return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== -1; + }, + getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) { + var defaultWidth = 0; + var widths = []; + var monospace = false; + var stdFontMap = (0, _standard_fonts.getStdFontMap)(); + var lookupName = stdFontMap[name] || name; + var Metrics = (0, _metrics.getMetrics)(); + if (!(lookupName in Metrics)) { + if (this.isSerifFont(name)) { + lookupName = 'Times-Roman'; + } else { + lookupName = 'Helvetica'; + } + } + var glyphWidths = Metrics[lookupName]; + if ((0, _util.isNum)(glyphWidths)) { + defaultWidth = glyphWidths; + monospace = true; + } else { + widths = glyphWidths(); + } + return { + defaultWidth: defaultWidth, + monospace: monospace, + widths: widths + }; + }, + buildCharCodeToWidth: function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName, properties) { + var widths = Object.create(null); + var differences = properties.differences; + var encoding = properties.defaultEncoding; + for (var charCode = 0; charCode < 256; charCode++) { + if (charCode in differences && widthsByGlyphName[differences[charCode]]) { + widths[charCode] = widthsByGlyphName[differences[charCode]]; + continue; + } + if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) { + widths[charCode] = widthsByGlyphName[encoding[charCode]]; + continue; + } + } + return widths; + }, + preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) { + var baseDict = dict; + var type = dict.get('Subtype'); + if (!(0, _primitives.isName)(type)) { + throw new _util.FormatError('invalid font Subtype'); + } + var composite = false; + var uint8array; + if (type.name === 'Type0') { + var df = dict.get('DescendantFonts'); + if (!df) { + throw new _util.FormatError('Descendant fonts are not specified'); + } + dict = (0, _util.isArray)(df) ? this.xref.fetchIfRef(df[0]) : df; + type = dict.get('Subtype'); + if (!(0, _primitives.isName)(type)) { + throw new _util.FormatError('invalid font Subtype'); + } + composite = true; + } + var descriptor = dict.get('FontDescriptor'); + if (descriptor) { + var hash = new _murmurhash.MurmurHash3_64(); + var encoding = baseDict.getRaw('Encoding'); + if ((0, _primitives.isName)(encoding)) { + hash.update(encoding.name); + } else if ((0, _primitives.isRef)(encoding)) { + hash.update(encoding.toString()); + } else if ((0, _primitives.isDict)(encoding)) { + var keys = encoding.getKeys(); + for (var i = 0, ii = keys.length; i < ii; i++) { + var entry = encoding.getRaw(keys[i]); + if ((0, _primitives.isName)(entry)) { + hash.update(entry.name); + } else if ((0, _primitives.isRef)(entry)) { + hash.update(entry.toString()); + } else if ((0, _util.isArray)(entry)) { + var diffLength = entry.length, + diffBuf = new Array(diffLength); + for (var j = 0; j < diffLength; j++) { + var diffEntry = entry[j]; + if ((0, _primitives.isName)(diffEntry)) { + diffBuf[j] = diffEntry.name; + } else if ((0, _util.isNum)(diffEntry) || (0, _primitives.isRef)(diffEntry)) { + diffBuf[j] = diffEntry.toString(); + } + } + hash.update(diffBuf.join()); + } + } + } + var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode'); + if ((0, _primitives.isStream)(toUnicode)) { + var stream = toUnicode.str || toUnicode; + uint8array = stream.buffer ? new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) : new Uint8Array(stream.bytes.buffer, stream.start, stream.end - stream.start); + hash.update(uint8array); + } else if ((0, _primitives.isName)(toUnicode)) { + hash.update(toUnicode.name); + } + var widths = dict.get('Widths') || baseDict.get('Widths'); + if (widths) { + uint8array = new Uint8Array(new Uint32Array(widths).buffer); + hash.update(uint8array); + } + } + return { + descriptor: descriptor, + dict: dict, + baseDict: baseDict, + composite: composite, + type: type.name, + hash: hash ? hash.hexdigest() : '' + }; + }, + translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) { + var _this11 = this; + + var baseDict = preEvaluatedFont.baseDict; + var dict = preEvaluatedFont.dict; + var composite = preEvaluatedFont.composite; + var descriptor = preEvaluatedFont.descriptor; + var type = preEvaluatedFont.type; + var maxCharIndex = composite ? 0xFFFF : 0xFF; + var properties; + if (!descriptor) { + if (type === 'Type3') { + descriptor = new _primitives.Dict(null); + descriptor.set('FontName', _primitives.Name.get(type)); + descriptor.set('FontBBox', dict.getArray('FontBBox')); + } else { + var baseFontName = dict.get('BaseFont'); + if (!(0, _primitives.isName)(baseFontName)) { + throw new _util.FormatError('Base font is not specified'); + } + baseFontName = baseFontName.name.replace(/[,_]/g, '-'); + var metrics = this.getBaseFontMetrics(baseFontName); + var fontNameWoStyle = baseFontName.split('-')[0]; + var flags = (this.isSerifFont(fontNameWoStyle) ? _fonts.FontFlags.Serif : 0) | (metrics.monospace ? _fonts.FontFlags.FixedPitch : 0) | ((0, _standard_fonts.getSymbolsFonts)()[fontNameWoStyle] ? _fonts.FontFlags.Symbolic : _fonts.FontFlags.Nonsymbolic); + properties = { + type: type, + name: baseFontName, + widths: metrics.widths, + defaultWidth: metrics.defaultWidth, + flags: flags, + firstChar: 0, + lastChar: maxCharIndex + }; + return this.extractDataStructures(dict, dict, properties).then(function (properties) { + properties.widths = _this11.buildCharCodeToWidth(metrics.widths, properties); + return new _fonts.Font(baseFontName, null, properties); + }); + } + } + var firstChar = dict.get('FirstChar') || 0; + var lastChar = dict.get('LastChar') || maxCharIndex; + var fontName = descriptor.get('FontName'); + var baseFont = dict.get('BaseFont'); + if ((0, _util.isString)(fontName)) { + fontName = _primitives.Name.get(fontName); + } + if ((0, _util.isString)(baseFont)) { + baseFont = _primitives.Name.get(baseFont); + } + if (type !== 'Type3') { + var fontNameStr = fontName && fontName.name; + var baseFontStr = baseFont && baseFont.name; + if (fontNameStr !== baseFontStr) { + (0, _util.info)('The FontDescriptor\'s FontName is "' + fontNameStr + '" but should be the same as the Font\'s BaseFont "' + baseFontStr + '"'); + if (fontNameStr && baseFontStr && baseFontStr.indexOf(fontNameStr) === 0) { + fontName = baseFont; + } + } + } + fontName = fontName || baseFont; + if (!(0, _primitives.isName)(fontName)) { + throw new _util.FormatError('invalid font name'); + } + var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3'); + if (fontFile) { + if (fontFile.dict) { + var subtype = fontFile.dict.get('Subtype'); + if (subtype) { + subtype = subtype.name; + } + var length1 = fontFile.dict.get('Length1'); + var length2 = fontFile.dict.get('Length2'); + var length3 = fontFile.dict.get('Length3'); + } + } + properties = { + type: type, + name: fontName.name, + subtype: subtype, + file: fontFile, + length1: length1, + length2: length2, + length3: length3, + loadedName: baseDict.loadedName, + composite: composite, + wideChars: composite, + fixedPitch: false, + fontMatrix: dict.getArray('FontMatrix') || _util.FONT_IDENTITY_MATRIX, + firstChar: firstChar || 0, + lastChar: lastChar || maxCharIndex, + bbox: descriptor.getArray('FontBBox'), + ascent: descriptor.get('Ascent'), + descent: descriptor.get('Descent'), + xHeight: descriptor.get('XHeight'), + capHeight: descriptor.get('CapHeight'), + flags: descriptor.get('Flags'), + italicAngle: descriptor.get('ItalicAngle'), + isType3Font: false + }; + var cMapPromise; + if (composite) { + var cidEncoding = baseDict.get('Encoding'); + if ((0, _primitives.isName)(cidEncoding)) { + properties.cidEncoding = cidEncoding.name; + } + cMapPromise = _cmap.CMapFactory.create({ + encoding: cidEncoding, + fetchBuiltInCMap: this.fetchBuiltInCMap, + useCMap: null + }).then(function (cMap) { + properties.cMap = cMap; + properties.vertical = properties.cMap.vertical; + }); + } else { + cMapPromise = Promise.resolve(undefined); + } + return cMapPromise.then(function () { + return _this11.extractDataStructures(dict, baseDict, properties); + }).then(function (properties) { + _this11.extractWidths(dict, descriptor, properties); + if (type === 'Type3') { + properties.isType3Font = true; + } + return new _fonts.Font(fontName.name, fontFile, properties); + }); + } + }; + return PartialEvaluator; +}(); +var TranslatedFont = function TranslatedFontClosure() { + function TranslatedFont(loadedName, font, dict) { + this.loadedName = loadedName; + this.font = font; + this.dict = dict; + this.type3Loaded = null; + this.sent = false; + } + TranslatedFont.prototype = { + send: function send(handler) { + if (this.sent) { + return; + } + var fontData = this.font.exportData(); + handler.send('commonobj', [this.loadedName, 'Font', fontData]); + this.sent = true; + }, + loadType3Data: function loadType3Data(evaluator, resources, parentOperatorList, task) { + if (!this.font.isType3Font) { + throw new Error('Must be a Type3 font.'); + } + if (this.type3Loaded) { + return this.type3Loaded; + } + var type3Options = Object.create(evaluator.options); + type3Options.ignoreErrors = false; + var type3Evaluator = evaluator.clone(type3Options); + var translatedFont = this.font; + var loadCharProcsPromise = Promise.resolve(); + var charProcs = this.dict.get('CharProcs'); + var fontResources = this.dict.get('Resources') || resources; + var charProcKeys = charProcs.getKeys(); + var charProcOperatorList = Object.create(null); + + var _loop2 = function _loop2() { + var key = charProcKeys[i]; + loadCharProcsPromise = loadCharProcsPromise.then(function () { + var glyphStream = charProcs.get(key); + var operatorList = new OperatorList(); + return type3Evaluator.getOperatorList({ + stream: glyphStream, + task: task, + resources: fontResources, + operatorList: operatorList + }).then(function () { + charProcOperatorList[key] = operatorList.getIR(); + parentOperatorList.addDependencies(operatorList.dependencies); + }).catch(function (reason) { + (0, _util.warn)('Type3 font resource "' + key + '" is not available.'); + var operatorList = new OperatorList(); + charProcOperatorList[key] = operatorList.getIR(); + }); + }); + }; + + for (var i = 0, n = charProcKeys.length; i < n; ++i) { + _loop2(); + } + this.type3Loaded = loadCharProcsPromise.then(function () { + translatedFont.charProcOperatorList = charProcOperatorList; + }); + return this.type3Loaded; + } + }; + return TranslatedFont; +}(); +var OperatorList = function OperatorListClosure() { + var CHUNK_SIZE = 1000; + var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; + function getTransfers(queue) { + var transfers = []; + var fnArray = queue.fnArray, + argsArray = queue.argsArray; + for (var i = 0, ii = queue.length; i < ii; i++) { + switch (fnArray[i]) { + case _util.OPS.paintInlineImageXObject: + case _util.OPS.paintInlineImageXObjectGroup: + case _util.OPS.paintImageMaskXObject: + var arg = argsArray[i][0]; + if (!arg.cached) { + transfers.push(arg.data.buffer); + } + break; + } + } + return transfers; + } + function OperatorList(intent, messageHandler, pageIndex) { + this.messageHandler = messageHandler; + this.fnArray = []; + this.argsArray = []; + this.dependencies = Object.create(null); + this._totalLength = 0; + this.pageIndex = pageIndex; + this.intent = intent; + } + OperatorList.prototype = { + get length() { + return this.argsArray.length; + }, + get totalLength() { + return this._totalLength + this.length; + }, + addOp: function addOp(fn, args) { + this.fnArray.push(fn); + this.argsArray.push(args); + if (this.messageHandler) { + if (this.fnArray.length >= CHUNK_SIZE) { + this.flush(); + } else if (this.fnArray.length >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === _util.OPS.endText)) { + this.flush(); + } + } + }, + addDependency: function addDependency(dependency) { + if (dependency in this.dependencies) { + return; + } + this.dependencies[dependency] = true; + this.addOp(_util.OPS.dependency, [dependency]); + }, + addDependencies: function addDependencies(dependencies) { + for (var key in dependencies) { + this.addDependency(key); + } + }, + addOpList: function addOpList(opList) { + _util.Util.extendObj(this.dependencies, opList.dependencies); + for (var i = 0, ii = opList.length; i < ii; i++) { + this.addOp(opList.fnArray[i], opList.argsArray[i]); + } + }, + getIR: function getIR() { + return { + fnArray: this.fnArray, + argsArray: this.argsArray, + length: this.length + }; + }, + flush: function flush(lastChunk) { + if (this.intent !== 'oplist') { + new QueueOptimizer().optimize(this); + } + var transfers = getTransfers(this); + var length = this.length; + this._totalLength += length; + this.messageHandler.send('RenderPageChunk', { + operatorList: { + fnArray: this.fnArray, + argsArray: this.argsArray, + lastChunk: lastChunk, + length: length + }, + pageIndex: this.pageIndex, + intent: this.intent + }, transfers); + this.dependencies = Object.create(null); + this.fnArray.length = 0; + this.argsArray.length = 0; + } + }; + return OperatorList; +}(); +var StateManager = function StateManagerClosure() { + function StateManager(initialState) { + this.state = initialState; + this.stateStack = []; + } + StateManager.prototype = { + save: function save() { + var old = this.state; + this.stateStack.push(this.state); + this.state = old.clone(); + }, + restore: function restore() { + var prev = this.stateStack.pop(); + if (prev) { + this.state = prev; + } + }, + transform: function transform(args) { + this.state.ctm = _util.Util.transform(this.state.ctm, args); + } + }; + return StateManager; +}(); +var TextState = function TextStateClosure() { + function TextState() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.fontName = null; + this.fontSize = 0; + this.font = null; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX.slice(); + this.textLineMatrix = _util.IDENTITY_MATRIX.slice(); + this.charSpacing = 0; + this.wordSpacing = 0; + this.leading = 0; + this.textHScale = 1; + this.textRise = 0; + } + TextState.prototype = { + setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { + var m = this.textMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + }, + setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) { + var m = this.textLineMatrix; + m[0] = a; + m[1] = b; + m[2] = c; + m[3] = d; + m[4] = e; + m[5] = f; + }, + translateTextMatrix: function TextState_translateTextMatrix(x, y) { + var m = this.textMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + }, + translateTextLineMatrix: function TextState_translateTextMatrix(x, y) { + var m = this.textLineMatrix; + m[4] = m[0] * x + m[2] * y + m[4]; + m[5] = m[1] * x + m[3] * y + m[5]; + }, + calcTextLineMatrixAdvance: function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) { + var font = this.font; + if (!font) { + return null; + } + var m = this.textLineMatrix; + if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) { + return null; + } + var txDiff = e - m[4], + tyDiff = f - m[5]; + if (font.vertical && txDiff !== 0 || !font.vertical && tyDiff !== 0) { + return null; + } + var tx, + ty, + denominator = a * d - b * c; + if (font.vertical) { + tx = -tyDiff * c / denominator; + ty = tyDiff * a / denominator; + } else { + tx = txDiff * d / denominator; + ty = -txDiff * b / denominator; + } + return { + width: tx, + height: ty, + value: font.vertical ? ty : tx + }; + }, + calcRenderMatrix: function TextState_calcRendeMatrix(ctm) { + var tsm = [this.fontSize * this.textHScale, 0, 0, this.fontSize, 0, this.textRise]; + return _util.Util.transform(ctm, _util.Util.transform(this.textMatrix, tsm)); + }, + carriageReturn: function TextState_carriageReturn() { + this.translateTextLineMatrix(0, -this.leading); + this.textMatrix = this.textLineMatrix.slice(); + }, + clone: function TextState_clone() { + var clone = Object.create(this); + clone.textMatrix = this.textMatrix.slice(); + clone.textLineMatrix = this.textLineMatrix.slice(); + clone.fontMatrix = this.fontMatrix.slice(); + return clone; + } + }; + return TextState; +}(); +var EvalState = function EvalStateClosure() { + function EvalState() { + this.ctm = new Float32Array(_util.IDENTITY_MATRIX); + this.font = null; + this.textRenderingMode = _util.TextRenderingMode.FILL; + this.fillColorSpace = _colorspace.ColorSpace.singletons.gray; + this.strokeColorSpace = _colorspace.ColorSpace.singletons.gray; + } + EvalState.prototype = { + clone: function CanvasExtraState_clone() { + return Object.create(this); + } + }; + return EvalState; +}(); +var EvaluatorPreprocessor = function EvaluatorPreprocessorClosure() { + var getOPMap = (0, _util.getLookupTableFactory)(function (t) { + t['w'] = { + id: _util.OPS.setLineWidth, + numArgs: 1, + variableArgs: false + }; + t['J'] = { + id: _util.OPS.setLineCap, + numArgs: 1, + variableArgs: false + }; + t['j'] = { + id: _util.OPS.setLineJoin, + numArgs: 1, + variableArgs: false + }; + t['M'] = { + id: _util.OPS.setMiterLimit, + numArgs: 1, + variableArgs: false + }; + t['d'] = { + id: _util.OPS.setDash, + numArgs: 2, + variableArgs: false + }; + t['ri'] = { + id: _util.OPS.setRenderingIntent, + numArgs: 1, + variableArgs: false + }; + t['i'] = { + id: _util.OPS.setFlatness, + numArgs: 1, + variableArgs: false + }; + t['gs'] = { + id: _util.OPS.setGState, + numArgs: 1, + variableArgs: false + }; + t['q'] = { + id: _util.OPS.save, + numArgs: 0, + variableArgs: false + }; + t['Q'] = { + id: _util.OPS.restore, + numArgs: 0, + variableArgs: false + }; + t['cm'] = { + id: _util.OPS.transform, + numArgs: 6, + variableArgs: false + }; + t['m'] = { + id: _util.OPS.moveTo, + numArgs: 2, + variableArgs: false + }; + t['l'] = { + id: _util.OPS.lineTo, + numArgs: 2, + variableArgs: false + }; + t['c'] = { + id: _util.OPS.curveTo, + numArgs: 6, + variableArgs: false + }; + t['v'] = { + id: _util.OPS.curveTo2, + numArgs: 4, + variableArgs: false + }; + t['y'] = { + id: _util.OPS.curveTo3, + numArgs: 4, + variableArgs: false + }; + t['h'] = { + id: _util.OPS.closePath, + numArgs: 0, + variableArgs: false + }; + t['re'] = { + id: _util.OPS.rectangle, + numArgs: 4, + variableArgs: false + }; + t['S'] = { + id: _util.OPS.stroke, + numArgs: 0, + variableArgs: false + }; + t['s'] = { + id: _util.OPS.closeStroke, + numArgs: 0, + variableArgs: false + }; + t['f'] = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t['F'] = { + id: _util.OPS.fill, + numArgs: 0, + variableArgs: false + }; + t['f*'] = { + id: _util.OPS.eoFill, + numArgs: 0, + variableArgs: false + }; + t['B'] = { + id: _util.OPS.fillStroke, + numArgs: 0, + variableArgs: false + }; + t['B*'] = { + id: _util.OPS.eoFillStroke, + numArgs: 0, + variableArgs: false + }; + t['b'] = { + id: _util.OPS.closeFillStroke, + numArgs: 0, + variableArgs: false + }; + t['b*'] = { + id: _util.OPS.closeEOFillStroke, + numArgs: 0, + variableArgs: false + }; + t['n'] = { + id: _util.OPS.endPath, + numArgs: 0, + variableArgs: false + }; + t['W'] = { + id: _util.OPS.clip, + numArgs: 0, + variableArgs: false + }; + t['W*'] = { + id: _util.OPS.eoClip, + numArgs: 0, + variableArgs: false + }; + t['BT'] = { + id: _util.OPS.beginText, + numArgs: 0, + variableArgs: false + }; + t['ET'] = { + id: _util.OPS.endText, + numArgs: 0, + variableArgs: false + }; + t['Tc'] = { + id: _util.OPS.setCharSpacing, + numArgs: 1, + variableArgs: false + }; + t['Tw'] = { + id: _util.OPS.setWordSpacing, + numArgs: 1, + variableArgs: false + }; + t['Tz'] = { + id: _util.OPS.setHScale, + numArgs: 1, + variableArgs: false + }; + t['TL'] = { + id: _util.OPS.setLeading, + numArgs: 1, + variableArgs: false + }; + t['Tf'] = { + id: _util.OPS.setFont, + numArgs: 2, + variableArgs: false + }; + t['Tr'] = { + id: _util.OPS.setTextRenderingMode, + numArgs: 1, + variableArgs: false + }; + t['Ts'] = { + id: _util.OPS.setTextRise, + numArgs: 1, + variableArgs: false + }; + t['Td'] = { + id: _util.OPS.moveText, + numArgs: 2, + variableArgs: false + }; + t['TD'] = { + id: _util.OPS.setLeadingMoveText, + numArgs: 2, + variableArgs: false + }; + t['Tm'] = { + id: _util.OPS.setTextMatrix, + numArgs: 6, + variableArgs: false + }; + t['T*'] = { + id: _util.OPS.nextLine, + numArgs: 0, + variableArgs: false + }; + t['Tj'] = { + id: _util.OPS.showText, + numArgs: 1, + variableArgs: false + }; + t['TJ'] = { + id: _util.OPS.showSpacedText, + numArgs: 1, + variableArgs: false + }; + t['\''] = { + id: _util.OPS.nextLineShowText, + numArgs: 1, + variableArgs: false + }; + t['"'] = { + id: _util.OPS.nextLineSetSpacingShowText, + numArgs: 3, + variableArgs: false + }; + t['d0'] = { + id: _util.OPS.setCharWidth, + numArgs: 2, + variableArgs: false + }; + t['d1'] = { + id: _util.OPS.setCharWidthAndBounds, + numArgs: 6, + variableArgs: false + }; + t['CS'] = { + id: _util.OPS.setStrokeColorSpace, + numArgs: 1, + variableArgs: false + }; + t['cs'] = { + id: _util.OPS.setFillColorSpace, + numArgs: 1, + variableArgs: false + }; + t['SC'] = { + id: _util.OPS.setStrokeColor, + numArgs: 4, + variableArgs: true + }; + t['SCN'] = { + id: _util.OPS.setStrokeColorN, + numArgs: 33, + variableArgs: true + }; + t['sc'] = { + id: _util.OPS.setFillColor, + numArgs: 4, + variableArgs: true + }; + t['scn'] = { + id: _util.OPS.setFillColorN, + numArgs: 33, + variableArgs: true + }; + t['G'] = { + id: _util.OPS.setStrokeGray, + numArgs: 1, + variableArgs: false + }; + t['g'] = { + id: _util.OPS.setFillGray, + numArgs: 1, + variableArgs: false + }; + t['RG'] = { + id: _util.OPS.setStrokeRGBColor, + numArgs: 3, + variableArgs: false + }; + t['rg'] = { + id: _util.OPS.setFillRGBColor, + numArgs: 3, + variableArgs: false + }; + t['K'] = { + id: _util.OPS.setStrokeCMYKColor, + numArgs: 4, + variableArgs: false + }; + t['k'] = { + id: _util.OPS.setFillCMYKColor, + numArgs: 4, + variableArgs: false + }; + t['sh'] = { + id: _util.OPS.shadingFill, + numArgs: 1, + variableArgs: false + }; + t['BI'] = { + id: _util.OPS.beginInlineImage, + numArgs: 0, + variableArgs: false + }; + t['ID'] = { + id: _util.OPS.beginImageData, + numArgs: 0, + variableArgs: false + }; + t['EI'] = { + id: _util.OPS.endInlineImage, + numArgs: 1, + variableArgs: false + }; + t['Do'] = { + id: _util.OPS.paintXObject, + numArgs: 1, + variableArgs: false + }; + t['MP'] = { + id: _util.OPS.markPoint, + numArgs: 1, + variableArgs: false + }; + t['DP'] = { + id: _util.OPS.markPointProps, + numArgs: 2, + variableArgs: false + }; + t['BMC'] = { + id: _util.OPS.beginMarkedContent, + numArgs: 1, + variableArgs: false + }; + t['BDC'] = { + id: _util.OPS.beginMarkedContentProps, + numArgs: 2, + variableArgs: false + }; + t['EMC'] = { + id: _util.OPS.endMarkedContent, + numArgs: 0, + variableArgs: false + }; + t['BX'] = { + id: _util.OPS.beginCompat, + numArgs: 0, + variableArgs: false + }; + t['EX'] = { + id: _util.OPS.endCompat, + numArgs: 0, + variableArgs: false + }; + t['BM'] = null; + t['BD'] = null; + t['true'] = null; + t['fa'] = null; + t['fal'] = null; + t['fals'] = null; + t['false'] = null; + t['nu'] = null; + t['nul'] = null; + t['null'] = null; + }); + function EvaluatorPreprocessor(stream, xref, stateManager) { + this.opMap = getOPMap(); + this.parser = new _parser.Parser(new _parser.Lexer(stream, this.opMap), false, xref); + this.stateManager = stateManager; + this.nonProcessedArgs = []; + } + EvaluatorPreprocessor.prototype = { + get savedStatesDepth() { + return this.stateManager.stateStack.length; + }, + read: function EvaluatorPreprocessor_read(operation) { + var args = operation.args; + while (true) { + var obj = this.parser.getObj(); + if ((0, _primitives.isCmd)(obj)) { + var cmd = obj.cmd; + var opSpec = this.opMap[cmd]; + if (!opSpec) { + (0, _util.warn)('Unknown command "' + cmd + '"'); + continue; + } + var fn = opSpec.id; + var numArgs = opSpec.numArgs; + var argsLength = args !== null ? args.length : 0; + if (!opSpec.variableArgs) { + if (argsLength !== numArgs) { + var nonProcessedArgs = this.nonProcessedArgs; + while (argsLength > numArgs) { + nonProcessedArgs.push(args.shift()); + argsLength--; + } + while (argsLength < numArgs && nonProcessedArgs.length !== 0) { + if (args === null) { + args = []; + } + args.unshift(nonProcessedArgs.pop()); + argsLength++; + } + } + if (argsLength < numArgs) { + (0, _util.warn)('Skipping command ' + fn + ': expected ' + numArgs + ' args, but received ' + argsLength + ' args.'); + if (args !== null) { + args.length = 0; + } + continue; + } + } else if (argsLength > numArgs) { + (0, _util.info)('Command ' + fn + ': expected [0,' + numArgs + '] args, but received ' + argsLength + ' args.'); + } + this.preprocessCommand(fn, args); + operation.fn = fn; + operation.args = args; + return true; + } + if ((0, _primitives.isEOF)(obj)) { + return false; + } + if (obj !== null) { + if (args === null) { + args = []; + } + args.push(obj); + if (args.length > 33) { + throw new _util.FormatError('Too many arguments'); + } + } + } + }, + preprocessCommand: function EvaluatorPreprocessor_preprocessCommand(fn, args) { + switch (fn | 0) { + case _util.OPS.save: + this.stateManager.save(); + break; + case _util.OPS.restore: + this.stateManager.restore(); + break; + case _util.OPS.transform: + this.stateManager.transform(args); + break; + } + } + }; + return EvaluatorPreprocessor; +}(); +var QueueOptimizer = function QueueOptimizerClosure() { + function addState(parentState, pattern, fn) { + var state = parentState; + for (var i = 0, ii = pattern.length - 1; i < ii; i++) { + var item = pattern[i]; + state = state[item] || (state[item] = []); + } + state[pattern[pattern.length - 1]] = fn; + } + function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) { + var iFirstPIMXO = iFirstSave + 2; + for (var i = 0; i < count; i++) { + var arg = argsArray[iFirstPIMXO + 4 * i]; + var imageMask = arg.length === 1 && arg[0]; + if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) { + fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask; + continue; + } + break; + } + return count - i; + } + var InitialState = []; + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], function foundInlineImageGroup(context) { + var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10; + var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200; + var MAX_WIDTH = 1000; + var IMAGE_PADDING = 1; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIIXO = curr - 1; + var i = iFirstSave + 4; + var ii = fnArray.length; + while (i + 3 < ii) { + if (fnArray[i] !== _util.OPS.save || fnArray[i + 1] !== _util.OPS.transform || fnArray[i + 2] !== _util.OPS.paintInlineImageXObject || fnArray[i + 3] !== _util.OPS.restore) { + break; + } + i += 4; + } + var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_INLINE_IMAGES_BLOCK); + if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) { + return i; + } + var maxX = 0; + var map = [], + maxLineHeight = 0; + var currentX = IMAGE_PADDING, + currentY = IMAGE_PADDING; + var q; + for (q = 0; q < count; q++) { + var transform = argsArray[iFirstTransform + (q << 2)]; + var img = argsArray[iFirstPIIXO + (q << 2)][0]; + if (currentX + img.width > MAX_WIDTH) { + maxX = Math.max(maxX, currentX); + currentY += maxLineHeight + 2 * IMAGE_PADDING; + currentX = 0; + maxLineHeight = 0; + } + map.push({ + transform: transform, + x: currentX, + y: currentY, + w: img.width, + h: img.height + }); + currentX += img.width + 2 * IMAGE_PADDING; + maxLineHeight = Math.max(maxLineHeight, img.height); + } + var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING; + var imgHeight = currentY + maxLineHeight + IMAGE_PADDING; + var imgData = new Uint8Array(imgWidth * imgHeight * 4); + var imgRowSize = imgWidth << 2; + for (q = 0; q < count; q++) { + var data = argsArray[iFirstPIIXO + (q << 2)][0].data; + var rowSize = map[q].w << 2; + var dataOffset = 0; + var offset = map[q].x + map[q].y * imgWidth << 2; + imgData.set(data.subarray(0, rowSize), offset - imgRowSize); + for (var k = 0, kk = map[q].h; k < kk; k++) { + imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset); + dataOffset += rowSize; + offset += imgRowSize; + } + imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset); + while (offset >= 0) { + data[offset - 4] = data[offset]; + data[offset - 3] = data[offset + 1]; + data[offset - 2] = data[offset + 2]; + data[offset - 1] = data[offset + 3]; + data[offset + rowSize] = data[offset + rowSize - 4]; + data[offset + rowSize + 1] = data[offset + rowSize - 3]; + data[offset + rowSize + 2] = data[offset + rowSize - 2]; + data[offset + rowSize + 3] = data[offset + rowSize - 1]; + offset -= imgRowSize; + } + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [{ + width: imgWidth, + height: imgHeight, + kind: _util.ImageKind.RGBA_32BPP, + data: imgData + }, map]); + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageMaskXObject, _util.OPS.restore], function foundImageMaskGroup(context) { + var MIN_IMAGES_IN_MASKS_BLOCK = 10; + var MAX_IMAGES_IN_MASKS_BLOCK = 100; + var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIMXO = curr - 1; + var i = iFirstSave + 4; + var ii = fnArray.length; + while (i + 3 < ii) { + if (fnArray[i] !== _util.OPS.save || fnArray[i + 1] !== _util.OPS.transform || fnArray[i + 2] !== _util.OPS.paintImageMaskXObject || fnArray[i + 3] !== _util.OPS.restore) { + break; + } + i += 4; + } + var count = (i - iFirstSave) / 4; + count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray); + if (count < MIN_IMAGES_IN_MASKS_BLOCK) { + return i; + } + var q; + var isSameImage = false; + var iTransform, transformArgs; + var firstPIMXOArg0 = argsArray[iFirstPIMXO][0]; + if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) { + isSameImage = true; + var firstTransformArg0 = argsArray[iFirstTransform][0]; + var firstTransformArg3 = argsArray[iFirstTransform][3]; + iTransform = iFirstTransform + 4; + var iPIMXO = iFirstPIMXO + 4; + for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) { + transformArgs = argsArray[iTransform]; + if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) { + if (q < MIN_IMAGES_IN_MASKS_BLOCK) { + isSameImage = false; + } else { + count = q; + } + break; + } + } + } + if (isSameImage) { + count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK); + var positions = new Float32Array(count * 2); + iTransform = iFirstTransform; + for (q = 0; q < count; q++, iTransform += 4) { + transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]); + } else { + count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK); + var images = []; + for (q = 0; q < count; q++) { + transformArgs = argsArray[iFirstTransform + (q << 2)]; + var maskParams = argsArray[iFirstPIMXO + (q << 2)][0]; + images.push({ + data: maskParams.data, + width: maskParams.width, + height: maskParams.height, + transform: transformArgs + }); + } + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup); + argsArray.splice(iFirstSave, count * 4, [images]); + } + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) { + var MIN_IMAGES_IN_BLOCK = 3; + var MAX_IMAGES_IN_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstSave = curr - 3; + var iFirstTransform = curr - 2; + var iFirstPIXO = curr - 1; + var iFirstRestore = curr; + if (argsArray[iFirstTransform][1] !== 0 || argsArray[iFirstTransform][2] !== 0) { + return iFirstRestore + 1; + } + var firstPIXOArg0 = argsArray[iFirstPIXO][0]; + var firstTransformArg0 = argsArray[iFirstTransform][0]; + var firstTransformArg3 = argsArray[iFirstTransform][3]; + var i = iFirstSave + 4; + var ii = fnArray.length; + while (i + 3 < ii) { + if (fnArray[i] !== _util.OPS.save || fnArray[i + 1] !== _util.OPS.transform || fnArray[i + 2] !== _util.OPS.paintImageXObject || fnArray[i + 3] !== _util.OPS.restore) { + break; + } + if (argsArray[i + 1][0] !== firstTransformArg0 || argsArray[i + 1][1] !== 0 || argsArray[i + 1][2] !== 0 || argsArray[i + 1][3] !== firstTransformArg3) { + break; + } + if (argsArray[i + 2][0] !== firstPIXOArg0) { + break; + } + i += 4; + } + var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_BLOCK); + if (count < MIN_IMAGES_IN_BLOCK) { + return i; + } + var positions = new Float32Array(count * 2); + var iTransform = iFirstTransform; + for (var q = 0; q < count; q++, iTransform += 4) { + var transformArgs = argsArray[iTransform]; + positions[q << 1] = transformArgs[4]; + positions[(q << 1) + 1] = transformArgs[5]; + } + var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions]; + fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat); + argsArray.splice(iFirstSave, count * 4, args); + return iFirstSave + 1; + }); + addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], function (context) { + var MIN_CHARS_IN_BLOCK = 3; + var MAX_CHARS_IN_BLOCK = 1000; + var fnArray = context.fnArray, + argsArray = context.argsArray; + var curr = context.iCurr; + var iFirstBeginText = curr - 4; + var iFirstSetFont = curr - 3; + var iFirstSetTextMatrix = curr - 2; + var iFirstShowText = curr - 1; + var iFirstEndText = curr; + var firstSetFontArg0 = argsArray[iFirstSetFont][0]; + var firstSetFontArg1 = argsArray[iFirstSetFont][1]; + var i = iFirstBeginText + 5; + var ii = fnArray.length; + while (i + 4 < ii) { + if (fnArray[i] !== _util.OPS.beginText || fnArray[i + 1] !== _util.OPS.setFont || fnArray[i + 2] !== _util.OPS.setTextMatrix || fnArray[i + 3] !== _util.OPS.showText || fnArray[i + 4] !== _util.OPS.endText) { + break; + } + if (argsArray[i + 1][0] !== firstSetFontArg0 || argsArray[i + 1][1] !== firstSetFontArg1) { + break; + } + i += 5; + } + var count = Math.min((i - iFirstBeginText) / 5, MAX_CHARS_IN_BLOCK); + if (count < MIN_CHARS_IN_BLOCK) { + return i; + } + var iFirst = iFirstBeginText; + if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) { + count++; + iFirst -= 5; + } + var iEndText = iFirst + 4; + for (var q = 1; q < count; q++) { + fnArray.splice(iEndText, 3); + argsArray.splice(iEndText, 3); + iEndText += 2; + } + return iEndText + 1; + }); + function QueueOptimizer() {} + QueueOptimizer.prototype = { + optimize: function QueueOptimizer_optimize(queue) { + var fnArray = queue.fnArray, + argsArray = queue.argsArray; + var context = { + iCurr: 0, + fnArray: fnArray, + argsArray: argsArray + }; + var state; + var i = 0, + ii = fnArray.length; + while (i < ii) { + state = (state || InitialState)[fnArray[i]]; + if (typeof state === 'function') { + context.iCurr = i; + i = state(context); + state = undefined; + ii = context.fnArray.length; + } else { + i++; + } + } + } + }; + return QueueOptimizer; +}(); +exports.OperatorList = OperatorList; +exports.PartialEvaluator = PartialEvaluator; + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.JpxImage = undefined; + +var _util = __w_pdfjs_require__(0); + +var _arithmetic_decoder = __w_pdfjs_require__(9); + +var JpxError = function JpxErrorClosure() { + function JpxError(msg) { + this.message = 'JPX error: ' + msg; + } + JpxError.prototype = new Error(); + JpxError.prototype.name = 'JpxError'; + JpxError.constructor = JpxError; + return JpxError; +}(); +var JpxImage = function JpxImageClosure() { + var SubbandsGainLog2 = { + 'LL': 0, + 'LH': 1, + 'HL': 1, + 'HH': 2 + }; + function JpxImage() { + this.failOnCorruptedImage = false; + } + JpxImage.prototype = { + parse: function JpxImage_parse(data) { + var head = (0, _util.readUint16)(data, 0); + if (head === 0xFF4F) { + this.parseCodestream(data, 0, data.length); + return; + } + var position = 0, + length = data.length; + while (position < length) { + var headerSize = 8; + var lbox = (0, _util.readUint32)(data, position); + var tbox = (0, _util.readUint32)(data, position + 4); + position += headerSize; + if (lbox === 1) { + lbox = (0, _util.readUint32)(data, position) * 4294967296 + (0, _util.readUint32)(data, position + 4); + position += 8; + headerSize += 8; + } + if (lbox === 0) { + lbox = length - position + headerSize; + } + if (lbox < headerSize) { + throw new JpxError('Invalid box field size'); + } + var dataLength = lbox - headerSize; + var jumpDataLength = true; + switch (tbox) { + case 0x6A703268: + jumpDataLength = false; + break; + case 0x636F6C72: + var method = data[position]; + if (method === 1) { + var colorspace = (0, _util.readUint32)(data, position + 3); + switch (colorspace) { + case 16: + case 17: + case 18: + break; + default: + (0, _util.warn)('Unknown colorspace ' + colorspace); + break; + } + } else if (method === 2) { + (0, _util.info)('ICC profile not supported'); + } + break; + case 0x6A703263: + this.parseCodestream(data, position, position + dataLength); + break; + case 0x6A502020: + if ((0, _util.readUint32)(data, position) !== 0x0d0a870a) { + (0, _util.warn)('Invalid JP2 signature'); + } + break; + case 0x6A501A1A: + case 0x66747970: + case 0x72726571: + case 0x72657320: + case 0x69686472: + break; + default: + var headerType = String.fromCharCode(tbox >> 24 & 0xFF, tbox >> 16 & 0xFF, tbox >> 8 & 0xFF, tbox & 0xFF); + (0, _util.warn)('Unsupported header type ' + tbox + ' (' + headerType + ')'); + break; + } + if (jumpDataLength) { + position += dataLength; + } + } + }, + parseImageProperties: function JpxImage_parseImageProperties(stream) { + var newByte = stream.getByte(); + while (newByte >= 0) { + var oldByte = newByte; + newByte = stream.getByte(); + var code = oldByte << 8 | newByte; + if (code === 0xFF51) { + stream.skip(4); + var Xsiz = stream.getInt32() >>> 0; + var Ysiz = stream.getInt32() >>> 0; + var XOsiz = stream.getInt32() >>> 0; + var YOsiz = stream.getInt32() >>> 0; + stream.skip(16); + var Csiz = stream.getUint16(); + this.width = Xsiz - XOsiz; + this.height = Ysiz - YOsiz; + this.componentsCount = Csiz; + this.bitsPerComponent = 8; + return; + } + } + throw new JpxError('No size marker found in JPX stream'); + }, + parseCodestream: function JpxImage_parseCodestream(data, start, end) { + var context = {}; + var doNotRecover = false; + try { + var position = start; + while (position + 1 < end) { + var code = (0, _util.readUint16)(data, position); + position += 2; + var length = 0, + j, + sqcd, + spqcds, + spqcdSize, + scalarExpounded, + tile; + switch (code) { + case 0xFF4F: + context.mainHeader = true; + break; + case 0xFFD9: + break; + case 0xFF51: + length = (0, _util.readUint16)(data, position); + var siz = {}; + siz.Xsiz = (0, _util.readUint32)(data, position + 4); + siz.Ysiz = (0, _util.readUint32)(data, position + 8); + siz.XOsiz = (0, _util.readUint32)(data, position + 12); + siz.YOsiz = (0, _util.readUint32)(data, position + 16); + siz.XTsiz = (0, _util.readUint32)(data, position + 20); + siz.YTsiz = (0, _util.readUint32)(data, position + 24); + siz.XTOsiz = (0, _util.readUint32)(data, position + 28); + siz.YTOsiz = (0, _util.readUint32)(data, position + 32); + var componentsCount = (0, _util.readUint16)(data, position + 36); + siz.Csiz = componentsCount; + var components = []; + j = position + 38; + for (var i = 0; i < componentsCount; i++) { + var component = { + precision: (data[j] & 0x7F) + 1, + isSigned: !!(data[j] & 0x80), + XRsiz: data[j + 1], + YRsiz: data[j + 1] + }; + calculateComponentDimensions(component, siz); + components.push(component); + } + context.SIZ = siz; + context.components = components; + calculateTileGrids(context, components); + context.QCC = []; + context.COC = []; + break; + case 0xFF5C: + length = (0, _util.readUint16)(data, position); + var qcd = {}; + j = position + 2; + sqcd = data[j++]; + switch (sqcd & 0x1F) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + default: + throw new Error('Invalid SQcd value ' + sqcd); + } + qcd.noQuantization = spqcdSize === 8; + qcd.scalarExpounded = scalarExpounded; + qcd.guardBits = sqcd >> 5; + spqcds = []; + while (j < length + position) { + var spqcd = {}; + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; + } else { + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; + j += 2; + } + spqcds.push(spqcd); + } + qcd.SPqcds = spqcds; + if (context.mainHeader) { + context.QCD = qcd; + } else { + context.currentTile.QCD = qcd; + context.currentTile.QCC = []; + } + break; + case 0xFF5D: + length = (0, _util.readUint16)(data, position); + var qcc = {}; + j = position + 2; + var cqcc; + if (context.SIZ.Csiz < 257) { + cqcc = data[j++]; + } else { + cqcc = (0, _util.readUint16)(data, j); + j += 2; + } + sqcd = data[j++]; + switch (sqcd & 0x1F) { + case 0: + spqcdSize = 8; + scalarExpounded = true; + break; + case 1: + spqcdSize = 16; + scalarExpounded = false; + break; + case 2: + spqcdSize = 16; + scalarExpounded = true; + break; + default: + throw new Error('Invalid SQcd value ' + sqcd); + } + qcc.noQuantization = spqcdSize === 8; + qcc.scalarExpounded = scalarExpounded; + qcc.guardBits = sqcd >> 5; + spqcds = []; + while (j < length + position) { + spqcd = {}; + if (spqcdSize === 8) { + spqcd.epsilon = data[j++] >> 3; + spqcd.mu = 0; + } else { + spqcd.epsilon = data[j] >> 3; + spqcd.mu = (data[j] & 0x7) << 8 | data[j + 1]; + j += 2; + } + spqcds.push(spqcd); + } + qcc.SPqcds = spqcds; + if (context.mainHeader) { + context.QCC[cqcc] = qcc; + } else { + context.currentTile.QCC[cqcc] = qcc; + } + break; + case 0xFF52: + length = (0, _util.readUint16)(data, position); + var cod = {}; + j = position + 2; + var scod = data[j++]; + cod.entropyCoderWithCustomPrecincts = !!(scod & 1); + cod.sopMarkerUsed = !!(scod & 2); + cod.ephMarkerUsed = !!(scod & 4); + cod.progressionOrder = data[j++]; + cod.layersCount = (0, _util.readUint16)(data, j); + j += 2; + cod.multipleComponentTransform = data[j++]; + cod.decompositionLevelsCount = data[j++]; + cod.xcb = (data[j++] & 0xF) + 2; + cod.ycb = (data[j++] & 0xF) + 2; + var blockStyle = data[j++]; + cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1); + cod.resetContextProbabilities = !!(blockStyle & 2); + cod.terminationOnEachCodingPass = !!(blockStyle & 4); + cod.verticalyStripe = !!(blockStyle & 8); + cod.predictableTermination = !!(blockStyle & 16); + cod.segmentationSymbolUsed = !!(blockStyle & 32); + cod.reversibleTransformation = data[j++]; + if (cod.entropyCoderWithCustomPrecincts) { + var precinctsSizes = []; + while (j < length + position) { + var precinctsSize = data[j++]; + precinctsSizes.push({ + PPx: precinctsSize & 0xF, + PPy: precinctsSize >> 4 + }); + } + cod.precinctsSizes = precinctsSizes; + } + var unsupported = []; + if (cod.selectiveArithmeticCodingBypass) { + unsupported.push('selectiveArithmeticCodingBypass'); + } + if (cod.resetContextProbabilities) { + unsupported.push('resetContextProbabilities'); + } + if (cod.terminationOnEachCodingPass) { + unsupported.push('terminationOnEachCodingPass'); + } + if (cod.verticalyStripe) { + unsupported.push('verticalyStripe'); + } + if (cod.predictableTermination) { + unsupported.push('predictableTermination'); + } + if (unsupported.length > 0) { + doNotRecover = true; + throw new Error('Unsupported COD options (' + unsupported.join(', ') + ')'); + } + if (context.mainHeader) { + context.COD = cod; + } else { + context.currentTile.COD = cod; + context.currentTile.COC = []; + } + break; + case 0xFF90: + length = (0, _util.readUint16)(data, position); + tile = {}; + tile.index = (0, _util.readUint16)(data, position + 2); + tile.length = (0, _util.readUint32)(data, position + 4); + tile.dataEnd = tile.length + position - 2; + tile.partIndex = data[position + 8]; + tile.partsCount = data[position + 9]; + context.mainHeader = false; + if (tile.partIndex === 0) { + tile.COD = context.COD; + tile.COC = context.COC.slice(0); + tile.QCD = context.QCD; + tile.QCC = context.QCC.slice(0); + } + context.currentTile = tile; + break; + case 0xFF93: + tile = context.currentTile; + if (tile.partIndex === 0) { + initializeTile(context, tile.index); + buildPackets(context); + } + length = tile.dataEnd - position; + parseTilePackets(context, data, position, length); + break; + case 0xFF55: + case 0xFF57: + case 0xFF58: + case 0xFF64: + length = (0, _util.readUint16)(data, position); + break; + case 0xFF53: + throw new Error('Codestream code 0xFF53 (COC) is ' + 'not implemented'); + default: + throw new Error('Unknown codestream code: ' + code.toString(16)); + } + position += length; + } + } catch (e) { + if (doNotRecover || this.failOnCorruptedImage) { + throw new JpxError(e.message); + } else { + (0, _util.warn)('JPX: Trying to recover from: ' + e.message); + } + } + this.tiles = transformComponents(context); + this.width = context.SIZ.Xsiz - context.SIZ.XOsiz; + this.height = context.SIZ.Ysiz - context.SIZ.YOsiz; + this.componentsCount = context.SIZ.Csiz; + } + }; + function calculateComponentDimensions(component, siz) { + component.x0 = Math.ceil(siz.XOsiz / component.XRsiz); + component.x1 = Math.ceil(siz.Xsiz / component.XRsiz); + component.y0 = Math.ceil(siz.YOsiz / component.YRsiz); + component.y1 = Math.ceil(siz.Ysiz / component.YRsiz); + component.width = component.x1 - component.x0; + component.height = component.y1 - component.y0; + } + function calculateTileGrids(context, components) { + var siz = context.SIZ; + var tile, + tiles = []; + var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz); + var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz); + for (var q = 0; q < numYtiles; q++) { + for (var p = 0; p < numXtiles; p++) { + tile = {}; + tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz); + tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz); + tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz); + tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz); + tile.width = tile.tx1 - tile.tx0; + tile.height = tile.ty1 - tile.ty0; + tile.components = []; + tiles.push(tile); + } + } + context.tiles = tiles; + var componentsCount = siz.Csiz; + for (var i = 0, ii = componentsCount; i < ii; i++) { + var component = components[i]; + for (var j = 0, jj = tiles.length; j < jj; j++) { + var tileComponent = {}; + tile = tiles[j]; + tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz); + tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz); + tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz); + tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz); + tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0; + tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0; + tile.components[i] = tileComponent; + } + } + } + function getBlocksDimensions(context, component, r) { + var codOrCoc = component.codingStyleParameters; + var result = {}; + if (!codOrCoc.entropyCoderWithCustomPrecincts) { + result.PPx = 15; + result.PPy = 15; + } else { + result.PPx = codOrCoc.precinctsSizes[r].PPx; + result.PPy = codOrCoc.precinctsSizes[r].PPy; + } + result.xcb_ = r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) : Math.min(codOrCoc.xcb, result.PPx); + result.ycb_ = r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) : Math.min(codOrCoc.ycb, result.PPy); + return result; + } + function buildPrecincts(context, resolution, dimensions) { + var precinctWidth = 1 << dimensions.PPx; + var precinctHeight = 1 << dimensions.PPy; + var isZeroRes = resolution.resLevel === 0; + var precinctWidthInSubband = 1 << dimensions.PPx + (isZeroRes ? 0 : -1); + var precinctHeightInSubband = 1 << dimensions.PPy + (isZeroRes ? 0 : -1); + var numprecinctswide = resolution.trx1 > resolution.trx0 ? Math.ceil(resolution.trx1 / precinctWidth) - Math.floor(resolution.trx0 / precinctWidth) : 0; + var numprecinctshigh = resolution.try1 > resolution.try0 ? Math.ceil(resolution.try1 / precinctHeight) - Math.floor(resolution.try0 / precinctHeight) : 0; + var numprecincts = numprecinctswide * numprecinctshigh; + resolution.precinctParameters = { + precinctWidth: precinctWidth, + precinctHeight: precinctHeight, + numprecinctswide: numprecinctswide, + numprecinctshigh: numprecinctshigh, + numprecincts: numprecincts, + precinctWidthInSubband: precinctWidthInSubband, + precinctHeightInSubband: precinctHeightInSubband + }; + } + function buildCodeblocks(context, subband, dimensions) { + var xcb_ = dimensions.xcb_; + var ycb_ = dimensions.ycb_; + var codeblockWidth = 1 << xcb_; + var codeblockHeight = 1 << ycb_; + var cbx0 = subband.tbx0 >> xcb_; + var cby0 = subband.tby0 >> ycb_; + var cbx1 = subband.tbx1 + codeblockWidth - 1 >> xcb_; + var cby1 = subband.tby1 + codeblockHeight - 1 >> ycb_; + var precinctParameters = subband.resolution.precinctParameters; + var codeblocks = []; + var precincts = []; + var i, j, codeblock, precinctNumber; + for (j = cby0; j < cby1; j++) { + for (i = cbx0; i < cbx1; i++) { + codeblock = { + cbx: i, + cby: j, + tbx0: codeblockWidth * i, + tby0: codeblockHeight * j, + tbx1: codeblockWidth * (i + 1), + tby1: codeblockHeight * (j + 1) + }; + codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0); + codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0); + codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1); + codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1); + var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) / precinctParameters.precinctWidthInSubband); + var pj = Math.floor((codeblock.tby0_ - subband.tby0) / precinctParameters.precinctHeightInSubband); + precinctNumber = pi + pj * precinctParameters.numprecinctswide; + codeblock.precinctNumber = precinctNumber; + codeblock.subbandType = subband.type; + codeblock.Lblock = 3; + if (codeblock.tbx1_ <= codeblock.tbx0_ || codeblock.tby1_ <= codeblock.tby0_) { + continue; + } + codeblocks.push(codeblock); + var precinct = precincts[precinctNumber]; + if (precinct !== undefined) { + if (i < precinct.cbxMin) { + precinct.cbxMin = i; + } else if (i > precinct.cbxMax) { + precinct.cbxMax = i; + } + if (j < precinct.cbyMin) { + precinct.cbxMin = j; + } else if (j > precinct.cbyMax) { + precinct.cbyMax = j; + } + } else { + precincts[precinctNumber] = precinct = { + cbxMin: i, + cbyMin: j, + cbxMax: i, + cbyMax: j + }; + } + codeblock.precinct = precinct; + } + } + subband.codeblockParameters = { + codeblockWidth: xcb_, + codeblockHeight: ycb_, + numcodeblockwide: cbx1 - cbx0 + 1, + numcodeblockhigh: cby1 - cby0 + 1 + }; + subband.codeblocks = codeblocks; + subband.precincts = precincts; + } + function createPacket(resolution, precinctNumber, layerNumber) { + var precinctCodeblocks = []; + var subbands = resolution.subbands; + for (var i = 0, ii = subbands.length; i < ii; i++) { + var subband = subbands[i]; + var codeblocks = subband.codeblocks; + for (var j = 0, jj = codeblocks.length; j < jj; j++) { + var codeblock = codeblocks[j]; + if (codeblock.precinctNumber !== precinctNumber) { + continue; + } + precinctCodeblocks.push(codeblock); + } + } + return { + layerNumber: layerNumber, + codeblocks: precinctCodeblocks + }; + } + function LayerResolutionComponentPositionIterator(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var layersCount = tile.codingStyleDefaultParameters.layersCount; + var componentsCount = siz.Csiz; + var maxDecompositionLevelsCount = 0; + for (var q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + var l = 0, + r = 0, + i = 0, + k = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; l < layersCount; l++) { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; i < componentsCount; i++) { + var component = tile.components[i]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + var resolution = component.resolutions[r]; + var numprecincts = resolution.precinctParameters.numprecincts; + for (; k < numprecincts;) { + var packet = createPacket(resolution, k, l); + k++; + return packet; + } + k = 0; + } + i = 0; + } + r = 0; + } + throw new JpxError('Out of packets'); + }; + } + function ResolutionLayerComponentPositionIterator(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var layersCount = tile.codingStyleDefaultParameters.layersCount; + var componentsCount = siz.Csiz; + var maxDecompositionLevelsCount = 0; + for (var q = 0; q < componentsCount; q++) { + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, tile.components[q].codingStyleParameters.decompositionLevelsCount); + } + var r = 0, + l = 0, + i = 0, + k = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; l < layersCount; l++) { + for (; i < componentsCount; i++) { + var component = tile.components[i]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + var resolution = component.resolutions[r]; + var numprecincts = resolution.precinctParameters.numprecincts; + for (; k < numprecincts;) { + var packet = createPacket(resolution, k, l); + k++; + return packet; + } + k = 0; + } + i = 0; + } + l = 0; + } + throw new JpxError('Out of packets'); + }; + } + function ResolutionPositionComponentLayerIterator(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var layersCount = tile.codingStyleDefaultParameters.layersCount; + var componentsCount = siz.Csiz; + var l, r, c, p; + var maxDecompositionLevelsCount = 0; + for (c = 0; c < componentsCount; c++) { + var component = tile.components[c]; + maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount, component.codingStyleParameters.decompositionLevelsCount); + } + var maxNumPrecinctsInLevel = new Int32Array(maxDecompositionLevelsCount + 1); + for (r = 0; r <= maxDecompositionLevelsCount; ++r) { + var maxNumPrecincts = 0; + for (c = 0; c < componentsCount; ++c) { + var resolutions = tile.components[c].resolutions; + if (r < resolutions.length) { + maxNumPrecincts = Math.max(maxNumPrecincts, resolutions[r].precinctParameters.numprecincts); + } + } + maxNumPrecinctsInLevel[r] = maxNumPrecincts; + } + l = 0; + r = 0; + c = 0; + p = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; r <= maxDecompositionLevelsCount; r++) { + for (; p < maxNumPrecinctsInLevel[r]; p++) { + for (; c < componentsCount; c++) { + var component = tile.components[c]; + if (r > component.codingStyleParameters.decompositionLevelsCount) { + continue; + } + var resolution = component.resolutions[r]; + var numprecincts = resolution.precinctParameters.numprecincts; + if (p >= numprecincts) { + continue; + } + for (; l < layersCount;) { + var packet = createPacket(resolution, p, l); + l++; + return packet; + } + l = 0; + } + c = 0; + } + p = 0; + } + throw new JpxError('Out of packets'); + }; + } + function PositionComponentResolutionLayerIterator(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var layersCount = tile.codingStyleDefaultParameters.layersCount; + var componentsCount = siz.Csiz; + var precinctsSizes = getPrecinctSizesInImageScale(tile); + var precinctsIterationSizes = precinctsSizes; + var l = 0, + r = 0, + c = 0, + px = 0, + py = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; py < precinctsIterationSizes.maxNumHigh; py++) { + for (; px < precinctsIterationSizes.maxNumWide; px++) { + for (; c < componentsCount; c++) { + var component = tile.components[c]; + var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + for (; r <= decompositionLevelsCount; r++) { + var resolution = component.resolutions[r]; + var sizeInImageScale = precinctsSizes.components[c].resolutions[r]; + var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); + if (k === null) { + continue; + } + for (; l < layersCount;) { + var packet = createPacket(resolution, k, l); + l++; + return packet; + } + l = 0; + } + r = 0; + } + c = 0; + } + px = 0; + } + throw new JpxError('Out of packets'); + }; + } + function ComponentPositionResolutionLayerIterator(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var layersCount = tile.codingStyleDefaultParameters.layersCount; + var componentsCount = siz.Csiz; + var precinctsSizes = getPrecinctSizesInImageScale(tile); + var l = 0, + r = 0, + c = 0, + px = 0, + py = 0; + this.nextPacket = function JpxImage_nextPacket() { + for (; c < componentsCount; ++c) { + var component = tile.components[c]; + var precinctsIterationSizes = precinctsSizes.components[c]; + var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + for (; py < precinctsIterationSizes.maxNumHigh; py++) { + for (; px < precinctsIterationSizes.maxNumWide; px++) { + for (; r <= decompositionLevelsCount; r++) { + var resolution = component.resolutions[r]; + var sizeInImageScale = precinctsIterationSizes.resolutions[r]; + var k = getPrecinctIndexIfExist(px, py, sizeInImageScale, precinctsIterationSizes, resolution); + if (k === null) { + continue; + } + for (; l < layersCount;) { + var packet = createPacket(resolution, k, l); + l++; + return packet; + } + l = 0; + } + r = 0; + } + px = 0; + } + py = 0; + } + throw new JpxError('Out of packets'); + }; + } + function getPrecinctIndexIfExist(pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) { + var posX = pxIndex * precinctIterationSizes.minWidth; + var posY = pyIndex * precinctIterationSizes.minHeight; + if (posX % sizeInImageScale.width !== 0 || posY % sizeInImageScale.height !== 0) { + return null; + } + var startPrecinctRowIndex = posY / sizeInImageScale.width * resolution.precinctParameters.numprecinctswide; + return posX / sizeInImageScale.height + startPrecinctRowIndex; + } + function getPrecinctSizesInImageScale(tile) { + var componentsCount = tile.components.length; + var minWidth = Number.MAX_VALUE; + var minHeight = Number.MAX_VALUE; + var maxNumWide = 0; + var maxNumHigh = 0; + var sizePerComponent = new Array(componentsCount); + for (var c = 0; c < componentsCount; c++) { + var component = tile.components[c]; + var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + var sizePerResolution = new Array(decompositionLevelsCount + 1); + var minWidthCurrentComponent = Number.MAX_VALUE; + var minHeightCurrentComponent = Number.MAX_VALUE; + var maxNumWideCurrentComponent = 0; + var maxNumHighCurrentComponent = 0; + var scale = 1; + for (var r = decompositionLevelsCount; r >= 0; --r) { + var resolution = component.resolutions[r]; + var widthCurrentResolution = scale * resolution.precinctParameters.precinctWidth; + var heightCurrentResolution = scale * resolution.precinctParameters.precinctHeight; + minWidthCurrentComponent = Math.min(minWidthCurrentComponent, widthCurrentResolution); + minHeightCurrentComponent = Math.min(minHeightCurrentComponent, heightCurrentResolution); + maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent, resolution.precinctParameters.numprecinctswide); + maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent, resolution.precinctParameters.numprecinctshigh); + sizePerResolution[r] = { + width: widthCurrentResolution, + height: heightCurrentResolution + }; + scale <<= 1; + } + minWidth = Math.min(minWidth, minWidthCurrentComponent); + minHeight = Math.min(minHeight, minHeightCurrentComponent); + maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent); + maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent); + sizePerComponent[c] = { + resolutions: sizePerResolution, + minWidth: minWidthCurrentComponent, + minHeight: minHeightCurrentComponent, + maxNumWide: maxNumWideCurrentComponent, + maxNumHigh: maxNumHighCurrentComponent + }; + } + return { + components: sizePerComponent, + minWidth: minWidth, + minHeight: minHeight, + maxNumWide: maxNumWide, + maxNumHigh: maxNumHigh + }; + } + function buildPackets(context) { + var siz = context.SIZ; + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var componentsCount = siz.Csiz; + for (var c = 0; c < componentsCount; c++) { + var component = tile.components[c]; + var decompositionLevelsCount = component.codingStyleParameters.decompositionLevelsCount; + var resolutions = []; + var subbands = []; + for (var r = 0; r <= decompositionLevelsCount; r++) { + var blocksDimensions = getBlocksDimensions(context, component, r); + var resolution = {}; + var scale = 1 << decompositionLevelsCount - r; + resolution.trx0 = Math.ceil(component.tcx0 / scale); + resolution.try0 = Math.ceil(component.tcy0 / scale); + resolution.trx1 = Math.ceil(component.tcx1 / scale); + resolution.try1 = Math.ceil(component.tcy1 / scale); + resolution.resLevel = r; + buildPrecincts(context, resolution, blocksDimensions); + resolutions.push(resolution); + var subband; + if (r === 0) { + subband = {}; + subband.type = 'LL'; + subband.tbx0 = Math.ceil(component.tcx0 / scale); + subband.tby0 = Math.ceil(component.tcy0 / scale); + subband.tbx1 = Math.ceil(component.tcx1 / scale); + subband.tby1 = Math.ceil(component.tcy1 / scale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolution.subbands = [subband]; + } else { + var bscale = 1 << decompositionLevelsCount - r + 1; + var resolutionSubbands = []; + subband = {}; + subband.type = 'HL'; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = 'LH'; + subband.tbx0 = Math.ceil(component.tcx0 / bscale); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + subband = {}; + subband.type = 'HH'; + subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5); + subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5); + subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5); + subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5); + subband.resolution = resolution; + buildCodeblocks(context, subband, blocksDimensions); + subbands.push(subband); + resolutionSubbands.push(subband); + resolution.subbands = resolutionSubbands; + } + } + component.resolutions = resolutions; + component.subbands = subbands; + } + var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder; + switch (progressionOrder) { + case 0: + tile.packetsIterator = new LayerResolutionComponentPositionIterator(context); + break; + case 1: + tile.packetsIterator = new ResolutionLayerComponentPositionIterator(context); + break; + case 2: + tile.packetsIterator = new ResolutionPositionComponentLayerIterator(context); + break; + case 3: + tile.packetsIterator = new PositionComponentResolutionLayerIterator(context); + break; + case 4: + tile.packetsIterator = new ComponentPositionResolutionLayerIterator(context); + break; + default: + throw new JpxError('Unsupported progression order ' + progressionOrder); + } + } + function parseTilePackets(context, data, offset, dataLength) { + var position = 0; + var buffer, + bufferSize = 0, + skipNextBit = false; + function readBits(count) { + while (bufferSize < count) { + var b = data[offset + position]; + position++; + if (skipNextBit) { + buffer = buffer << 7 | b; + bufferSize += 7; + skipNextBit = false; + } else { + buffer = buffer << 8 | b; + bufferSize += 8; + } + if (b === 0xFF) { + skipNextBit = true; + } + } + bufferSize -= count; + return buffer >>> bufferSize & (1 << count) - 1; + } + function skipMarkerIfEqual(value) { + if (data[offset + position - 1] === 0xFF && data[offset + position] === value) { + skipBytes(1); + return true; + } else if (data[offset + position] === 0xFF && data[offset + position + 1] === value) { + skipBytes(2); + return true; + } + return false; + } + function skipBytes(count) { + position += count; + } + function alignToByte() { + bufferSize = 0; + if (skipNextBit) { + position++; + skipNextBit = false; + } + } + function readCodingpasses() { + if (readBits(1) === 0) { + return 1; + } + if (readBits(1) === 0) { + return 2; + } + var value = readBits(2); + if (value < 3) { + return value + 3; + } + value = readBits(5); + if (value < 31) { + return value + 6; + } + value = readBits(7); + return value + 37; + } + var tileIndex = context.currentTile.index; + var tile = context.tiles[tileIndex]; + var sopMarkerUsed = context.COD.sopMarkerUsed; + var ephMarkerUsed = context.COD.ephMarkerUsed; + var packetsIterator = tile.packetsIterator; + while (position < dataLength) { + alignToByte(); + if (sopMarkerUsed && skipMarkerIfEqual(0x91)) { + skipBytes(4); + } + var packet = packetsIterator.nextPacket(); + if (!readBits(1)) { + continue; + } + var layerNumber = packet.layerNumber; + var queue = [], + codeblock; + for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) { + codeblock = packet.codeblocks[i]; + var precinct = codeblock.precinct; + var codeblockColumn = codeblock.cbx - precinct.cbxMin; + var codeblockRow = codeblock.cby - precinct.cbyMin; + var codeblockIncluded = false; + var firstTimeInclusion = false; + var valueReady; + if (codeblock['included'] !== undefined) { + codeblockIncluded = !!readBits(1); + } else { + precinct = codeblock.precinct; + var inclusionTree, zeroBitPlanesTree; + if (precinct['inclusionTree'] !== undefined) { + inclusionTree = precinct.inclusionTree; + } else { + var width = precinct.cbxMax - precinct.cbxMin + 1; + var height = precinct.cbyMax - precinct.cbyMin + 1; + inclusionTree = new InclusionTree(width, height, layerNumber); + zeroBitPlanesTree = new TagTree(width, height); + precinct.inclusionTree = inclusionTree; + precinct.zeroBitPlanesTree = zeroBitPlanesTree; + } + if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) { + while (true) { + if (readBits(1)) { + valueReady = !inclusionTree.nextLevel(); + if (valueReady) { + codeblock.included = true; + codeblockIncluded = firstTimeInclusion = true; + break; + } + } else { + inclusionTree.incrementValue(layerNumber); + break; + } + } + } + } + if (!codeblockIncluded) { + continue; + } + if (firstTimeInclusion) { + zeroBitPlanesTree = precinct.zeroBitPlanesTree; + zeroBitPlanesTree.reset(codeblockColumn, codeblockRow); + while (true) { + if (readBits(1)) { + valueReady = !zeroBitPlanesTree.nextLevel(); + if (valueReady) { + break; + } + } else { + zeroBitPlanesTree.incrementValue(); + } + } + codeblock.zeroBitPlanes = zeroBitPlanesTree.value; + } + var codingpasses = readCodingpasses(); + while (readBits(1)) { + codeblock.Lblock++; + } + var codingpassesLog2 = (0, _util.log2)(codingpasses); + var bits = (codingpasses < 1 << codingpassesLog2 ? codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock; + var codedDataLength = readBits(bits); + queue.push({ + codeblock: codeblock, + codingpasses: codingpasses, + dataLength: codedDataLength + }); + } + alignToByte(); + if (ephMarkerUsed) { + skipMarkerIfEqual(0x92); + } + while (queue.length > 0) { + var packetItem = queue.shift(); + codeblock = packetItem.codeblock; + if (codeblock['data'] === undefined) { + codeblock.data = []; + } + codeblock.data.push({ + data: data, + start: offset + position, + end: offset + position + packetItem.dataLength, + codingpasses: packetItem.codingpasses + }); + position += packetItem.dataLength; + } + } + return position; + } + function copyCoefficients(coefficients, levelWidth, levelHeight, subband, delta, mb, reversible, segmentationSymbolUsed) { + var x0 = subband.tbx0; + var y0 = subband.tby0; + var width = subband.tbx1 - subband.tbx0; + var codeblocks = subband.codeblocks; + var right = subband.type.charAt(0) === 'H' ? 1 : 0; + var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0; + for (var i = 0, ii = codeblocks.length; i < ii; ++i) { + var codeblock = codeblocks[i]; + var blockWidth = codeblock.tbx1_ - codeblock.tbx0_; + var blockHeight = codeblock.tby1_ - codeblock.tby0_; + if (blockWidth === 0 || blockHeight === 0) { + continue; + } + if (codeblock['data'] === undefined) { + continue; + } + var bitModel, currentCodingpassType; + bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType, codeblock.zeroBitPlanes, mb); + currentCodingpassType = 2; + var data = codeblock.data, + totalLength = 0, + codingpasses = 0; + var j, jj, dataItem; + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + totalLength += dataItem.end - dataItem.start; + codingpasses += dataItem.codingpasses; + } + var encodedData = new Uint8Array(totalLength); + var position = 0; + for (j = 0, jj = data.length; j < jj; j++) { + dataItem = data[j]; + var chunk = dataItem.data.subarray(dataItem.start, dataItem.end); + encodedData.set(chunk, position); + position += chunk.length; + } + var decoder = new _arithmetic_decoder.ArithmeticDecoder(encodedData, 0, totalLength); + bitModel.setDecoder(decoder); + for (j = 0; j < codingpasses; j++) { + switch (currentCodingpassType) { + case 0: + bitModel.runSignificancePropagationPass(); + break; + case 1: + bitModel.runMagnitudeRefinementPass(); + break; + case 2: + bitModel.runCleanupPass(); + if (segmentationSymbolUsed) { + bitModel.checkSegmentationSymbol(); + } + break; + } + currentCodingpassType = (currentCodingpassType + 1) % 3; + } + var offset = codeblock.tbx0_ - x0 + (codeblock.tby0_ - y0) * width; + var sign = bitModel.coefficentsSign; + var magnitude = bitModel.coefficentsMagnitude; + var bitsDecoded = bitModel.bitsDecoded; + var magnitudeCorrection = reversible ? 0 : 0.5; + var k, n, nb; + position = 0; + var interleave = subband.type !== 'LL'; + for (j = 0; j < blockHeight; j++) { + var row = offset / width | 0; + var levelOffset = 2 * row * (levelWidth - width) + right + bottom; + for (k = 0; k < blockWidth; k++) { + n = magnitude[position]; + if (n !== 0) { + n = (n + magnitudeCorrection) * delta; + if (sign[position] !== 0) { + n = -n; + } + nb = bitsDecoded[position]; + var pos = interleave ? levelOffset + (offset << 1) : offset; + if (reversible && nb >= mb) { + coefficients[pos] = n; + } else { + coefficients[pos] = n * (1 << mb - nb); + } + } + offset++; + position++; + } + offset += width - blockWidth; + } + } + } + function transformTile(context, tile, c) { + var component = tile.components[c]; + var codingStyleParameters = component.codingStyleParameters; + var quantizationParameters = component.quantizationParameters; + var decompositionLevelsCount = codingStyleParameters.decompositionLevelsCount; + var spqcds = quantizationParameters.SPqcds; + var scalarExpounded = quantizationParameters.scalarExpounded; + var guardBits = quantizationParameters.guardBits; + var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed; + var precision = context.components[c].precision; + var reversible = codingStyleParameters.reversibleTransformation; + var transform = reversible ? new ReversibleTransform() : new IrreversibleTransform(); + var subbandCoefficients = []; + var b = 0; + for (var i = 0; i <= decompositionLevelsCount; i++) { + var resolution = component.resolutions[i]; + var width = resolution.trx1 - resolution.trx0; + var height = resolution.try1 - resolution.try0; + var coefficients = new Float32Array(width * height); + for (var j = 0, jj = resolution.subbands.length; j < jj; j++) { + var mu, epsilon; + if (!scalarExpounded) { + mu = spqcds[0].mu; + epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0); + } else { + mu = spqcds[b].mu; + epsilon = spqcds[b].epsilon; + b++; + } + var subband = resolution.subbands[j]; + var gainLog2 = SubbandsGainLog2[subband.type]; + var delta = reversible ? 1 : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048); + var mb = guardBits + epsilon - 1; + copyCoefficients(coefficients, width, height, subband, delta, mb, reversible, segmentationSymbolUsed); + } + subbandCoefficients.push({ + width: width, + height: height, + items: coefficients + }); + } + var result = transform.calculate(subbandCoefficients, component.tcx0, component.tcy0); + return { + left: component.tcx0, + top: component.tcy0, + width: result.width, + height: result.height, + items: result.items + }; + } + function transformComponents(context) { + var siz = context.SIZ; + var components = context.components; + var componentsCount = siz.Csiz; + var resultImages = []; + for (var i = 0, ii = context.tiles.length; i < ii; i++) { + var tile = context.tiles[i]; + var transformedTiles = []; + var c; + for (c = 0; c < componentsCount; c++) { + transformedTiles[c] = transformTile(context, tile, c); + } + var tile0 = transformedTiles[0]; + var out = new Uint8Array(tile0.items.length * componentsCount); + var result = { + left: tile0.left, + top: tile0.top, + width: tile0.width, + height: tile0.height, + items: out + }; + var shift, offset, max, min, maxK; + var pos = 0, + j, + jj, + y0, + y1, + y2, + r, + g, + b, + k, + val; + if (tile.codingStyleDefaultParameters.multipleComponentTransform) { + var fourComponents = componentsCount === 4; + var y0items = transformedTiles[0].items; + var y1items = transformedTiles[1].items; + var y2items = transformedTiles[2].items; + var y3items = fourComponents ? transformedTiles[3].items : null; + shift = components[0].precision - 8; + offset = (128 << shift) + 0.5; + max = 255 * (1 << shift); + maxK = max * 0.5; + min = -maxK; + var component0 = tile.components[0]; + var alpha01 = componentsCount - 3; + jj = y0items.length; + if (!component0.codingStyleParameters.reversibleTransformation) { + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + r = y0 + 1.402 * y2; + g = y0 - 0.34413 * y1 - 0.71414 * y2; + b = y0 + 1.772 * y1; + out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; + out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; + out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; + } + } else { + for (j = 0; j < jj; j++, pos += alpha01) { + y0 = y0items[j] + offset; + y1 = y1items[j]; + y2 = y2items[j]; + g = y0 - (y2 + y1 >> 2); + r = g + y2; + b = g + y1; + out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift; + out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift; + out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift; + } + } + if (fourComponents) { + for (j = 0, pos = 3; j < jj; j++, pos += 4) { + k = y3items[j]; + out[pos] = k <= min ? 0 : k >= maxK ? 255 : k + offset >> shift; + } + } + } else { + for (c = 0; c < componentsCount; c++) { + var items = transformedTiles[c].items; + shift = components[c].precision - 8; + offset = (128 << shift) + 0.5; + max = 127.5 * (1 << shift); + min = -max; + for (pos = c, j = 0, jj = items.length; j < jj; j++) { + val = items[j]; + out[pos] = val <= min ? 0 : val >= max ? 255 : val + offset >> shift; + pos += componentsCount; + } + } + } + resultImages.push(result); + } + return resultImages; + } + function initializeTile(context, tileIndex) { + var siz = context.SIZ; + var componentsCount = siz.Csiz; + var tile = context.tiles[tileIndex]; + for (var c = 0; c < componentsCount; c++) { + var component = tile.components[c]; + var qcdOrQcc = context.currentTile.QCC[c] !== undefined ? context.currentTile.QCC[c] : context.currentTile.QCD; + component.quantizationParameters = qcdOrQcc; + var codOrCoc = context.currentTile.COC[c] !== undefined ? context.currentTile.COC[c] : context.currentTile.COD; + component.codingStyleParameters = codOrCoc; + } + tile.codingStyleDefaultParameters = context.currentTile.COD; + } + var TagTree = function TagTreeClosure() { + function TagTree(width, height) { + var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1; + this.levels = []; + for (var i = 0; i < levelsLength; i++) { + var level = { + width: width, + height: height, + items: [] + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + TagTree.prototype = { + reset: function TagTree_reset(i, j) { + var currentLevel = 0, + value = 0, + level; + while (currentLevel < this.levels.length) { + level = this.levels[currentLevel]; + var index = i + j * level.width; + if (level.items[index] !== undefined) { + value = level.items[index]; + break; + } + level.index = index; + i >>= 1; + j >>= 1; + currentLevel++; + } + currentLevel--; + level = this.levels[currentLevel]; + level.items[level.index] = value; + this.currentLevel = currentLevel; + delete this.value; + }, + incrementValue: function TagTree_incrementValue() { + var level = this.levels[this.currentLevel]; + level.items[level.index]++; + }, + nextLevel: function TagTree_nextLevel() { + var currentLevel = this.currentLevel; + var level = this.levels[currentLevel]; + var value = level.items[level.index]; + currentLevel--; + if (currentLevel < 0) { + this.value = value; + return false; + } + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } + }; + return TagTree; + }(); + var InclusionTree = function InclusionTreeClosure() { + function InclusionTree(width, height, defaultValue) { + var levelsLength = (0, _util.log2)(Math.max(width, height)) + 1; + this.levels = []; + for (var i = 0; i < levelsLength; i++) { + var items = new Uint8Array(width * height); + for (var j = 0, jj = items.length; j < jj; j++) { + items[j] = defaultValue; + } + var level = { + width: width, + height: height, + items: items + }; + this.levels.push(level); + width = Math.ceil(width / 2); + height = Math.ceil(height / 2); + } + } + InclusionTree.prototype = { + reset: function InclusionTree_reset(i, j, stopValue) { + var currentLevel = 0; + while (currentLevel < this.levels.length) { + var level = this.levels[currentLevel]; + var index = i + j * level.width; + level.index = index; + var value = level.items[index]; + if (value === 0xFF) { + break; + } + if (value > stopValue) { + this.currentLevel = currentLevel; + this.propagateValues(); + return false; + } + i >>= 1; + j >>= 1; + currentLevel++; + } + this.currentLevel = currentLevel - 1; + return true; + }, + incrementValue: function InclusionTree_incrementValue(stopValue) { + var level = this.levels[this.currentLevel]; + level.items[level.index] = stopValue + 1; + this.propagateValues(); + }, + propagateValues: function InclusionTree_propagateValues() { + var levelIndex = this.currentLevel; + var level = this.levels[levelIndex]; + var currentValue = level.items[level.index]; + while (--levelIndex >= 0) { + level = this.levels[levelIndex]; + level.items[level.index] = currentValue; + } + }, + nextLevel: function InclusionTree_nextLevel() { + var currentLevel = this.currentLevel; + var level = this.levels[currentLevel]; + var value = level.items[level.index]; + level.items[level.index] = 0xFF; + currentLevel--; + if (currentLevel < 0) { + return false; + } + this.currentLevel = currentLevel; + level = this.levels[currentLevel]; + level.items[level.index] = value; + return true; + } + }; + return InclusionTree; + }(); + var BitModel = function BitModelClosure() { + var UNIFORM_CONTEXT = 17; + var RUNLENGTH_CONTEXT = 18; + var LLAndLHContextsLabel = new Uint8Array([0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8]); + var HLContextLabel = new Uint8Array([0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8]); + var HHContextLabel = new Uint8Array([0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8]); + function BitModel(width, height, subband, zeroBitPlanes, mb) { + this.width = width; + this.height = height; + this.contextLabelTable = subband === 'HH' ? HHContextLabel : subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel; + var coefficientCount = width * height; + this.neighborsSignificance = new Uint8Array(coefficientCount); + this.coefficentsSign = new Uint8Array(coefficientCount); + this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) : mb > 6 ? new Uint16Array(coefficientCount) : new Uint8Array(coefficientCount); + this.processingFlags = new Uint8Array(coefficientCount); + var bitsDecoded = new Uint8Array(coefficientCount); + if (zeroBitPlanes !== 0) { + for (var i = 0; i < coefficientCount; i++) { + bitsDecoded[i] = zeroBitPlanes; + } + } + this.bitsDecoded = bitsDecoded; + this.reset(); + } + BitModel.prototype = { + setDecoder: function BitModel_setDecoder(decoder) { + this.decoder = decoder; + }, + reset: function BitModel_reset() { + this.contexts = new Int8Array(19); + this.contexts[0] = 4 << 1 | 0; + this.contexts[UNIFORM_CONTEXT] = 46 << 1 | 0; + this.contexts[RUNLENGTH_CONTEXT] = 3 << 1 | 0; + }, + setNeighborsSignificance: function BitModel_setNeighborsSignificance(row, column, index) { + var neighborsSignificance = this.neighborsSignificance; + var width = this.width, + height = this.height; + var left = column > 0; + var right = column + 1 < width; + var i; + if (row > 0) { + i = index - width; + if (left) { + neighborsSignificance[i - 1] += 0x10; + } + if (right) { + neighborsSignificance[i + 1] += 0x10; + } + neighborsSignificance[i] += 0x04; + } + if (row + 1 < height) { + i = index + width; + if (left) { + neighborsSignificance[i - 1] += 0x10; + } + if (right) { + neighborsSignificance[i + 1] += 0x10; + } + neighborsSignificance[i] += 0x04; + } + if (left) { + neighborsSignificance[index - 1] += 0x01; + } + if (right) { + neighborsSignificance[index + 1] += 0x01; + } + neighborsSignificance[index] |= 0x80; + }, + runSignificancePropagationPass: function BitModel_runSignificancePropagationPass() { + var decoder = this.decoder; + var width = this.width, + height = this.height; + var coefficentsMagnitude = this.coefficentsMagnitude; + var coefficentsSign = this.coefficentsSign; + var neighborsSignificance = this.neighborsSignificance; + var processingFlags = this.processingFlags; + var contexts = this.contexts; + var labels = this.contextLabelTable; + var bitsDecoded = this.bitsDecoded; + var processedInverseMask = ~1; + var processedMask = 1; + var firstMagnitudeBitMask = 2; + for (var i0 = 0; i0 < height; i0 += 4) { + for (var j = 0; j < width; j++) { + var index = i0 * width + j; + for (var i1 = 0; i1 < 4; i1++, index += width) { + var i = i0 + i1; + if (i >= height) { + break; + } + processingFlags[index] &= processedInverseMask; + if (coefficentsMagnitude[index] || !neighborsSignificance[index]) { + continue; + } + var contextLabel = labels[neighborsSignificance[index]]; + var decision = decoder.readBit(contexts, contextLabel); + if (decision) { + var sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + } + bitsDecoded[index]++; + processingFlags[index] |= processedMask; + } + } + } + }, + decodeSignBit: function BitModel_decodeSignBit(row, column, index) { + var width = this.width, + height = this.height; + var coefficentsMagnitude = this.coefficentsMagnitude; + var coefficentsSign = this.coefficentsSign; + var contribution, sign0, sign1, significance1; + var contextLabel, decoded; + significance1 = column > 0 && coefficentsMagnitude[index - 1] !== 0; + if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) { + sign1 = coefficentsSign[index + 1]; + if (significance1) { + sign0 = coefficentsSign[index - 1]; + contribution = 1 - sign1 - sign0; + } else { + contribution = 1 - sign1 - sign1; + } + } else if (significance1) { + sign0 = coefficentsSign[index - 1]; + contribution = 1 - sign0 - sign0; + } else { + contribution = 0; + } + var horizontalContribution = 3 * contribution; + significance1 = row > 0 && coefficentsMagnitude[index - width] !== 0; + if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) { + sign1 = coefficentsSign[index + width]; + if (significance1) { + sign0 = coefficentsSign[index - width]; + contribution = 1 - sign1 - sign0 + horizontalContribution; + } else { + contribution = 1 - sign1 - sign1 + horizontalContribution; + } + } else if (significance1) { + sign0 = coefficentsSign[index - width]; + contribution = 1 - sign0 - sign0 + horizontalContribution; + } else { + contribution = horizontalContribution; + } + if (contribution >= 0) { + contextLabel = 9 + contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel); + } else { + contextLabel = 9 - contribution; + decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1; + } + return decoded; + }, + runMagnitudeRefinementPass: function BitModel_runMagnitudeRefinementPass() { + var decoder = this.decoder; + var width = this.width, + height = this.height; + var coefficentsMagnitude = this.coefficentsMagnitude; + var neighborsSignificance = this.neighborsSignificance; + var contexts = this.contexts; + var bitsDecoded = this.bitsDecoded; + var processingFlags = this.processingFlags; + var processedMask = 1; + var firstMagnitudeBitMask = 2; + var length = width * height; + var width4 = width * 4; + for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) { + indexNext = Math.min(length, index0 + width4); + for (var j = 0; j < width; j++) { + for (var index = index0 + j; index < indexNext; index += width) { + if (!coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; + } + var contextLabel = 16; + if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) { + processingFlags[index] ^= firstMagnitudeBitMask; + var significance = neighborsSignificance[index] & 127; + contextLabel = significance === 0 ? 15 : 14; + } + var bit = decoder.readBit(contexts, contextLabel); + coefficentsMagnitude[index] = coefficentsMagnitude[index] << 1 | bit; + bitsDecoded[index]++; + processingFlags[index] |= processedMask; + } + } + } + }, + runCleanupPass: function BitModel_runCleanupPass() { + var decoder = this.decoder; + var width = this.width, + height = this.height; + var neighborsSignificance = this.neighborsSignificance; + var coefficentsMagnitude = this.coefficentsMagnitude; + var coefficentsSign = this.coefficentsSign; + var contexts = this.contexts; + var labels = this.contextLabelTable; + var bitsDecoded = this.bitsDecoded; + var processingFlags = this.processingFlags; + var processedMask = 1; + var firstMagnitudeBitMask = 2; + var oneRowDown = width; + var twoRowsDown = width * 2; + var threeRowsDown = width * 3; + var iNext; + for (var i0 = 0; i0 < height; i0 = iNext) { + iNext = Math.min(i0 + 4, height); + var indexBase = i0 * width; + var checkAllEmpty = i0 + 3 < height; + for (var j = 0; j < width; j++) { + var index0 = indexBase + j; + var allEmpty = checkAllEmpty && processingFlags[index0] === 0 && processingFlags[index0 + oneRowDown] === 0 && processingFlags[index0 + twoRowsDown] === 0 && processingFlags[index0 + threeRowsDown] === 0 && neighborsSignificance[index0] === 0 && neighborsSignificance[index0 + oneRowDown] === 0 && neighborsSignificance[index0 + twoRowsDown] === 0 && neighborsSignificance[index0 + threeRowsDown] === 0; + var i1 = 0, + index = index0; + var i = i0, + sign; + if (allEmpty) { + var hasSignificantCoefficent = decoder.readBit(contexts, RUNLENGTH_CONTEXT); + if (!hasSignificantCoefficent) { + bitsDecoded[index0]++; + bitsDecoded[index0 + oneRowDown]++; + bitsDecoded[index0 + twoRowsDown]++; + bitsDecoded[index0 + threeRowsDown]++; + continue; + } + i1 = decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); + if (i1 !== 0) { + i = i0 + i1; + index += i1 * width; + } + sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + index = index0; + for (var i2 = i0; i2 <= i; i2++, index += width) { + bitsDecoded[index]++; + } + i1++; + } + for (i = i0 + i1; i < iNext; i++, index += width) { + if (coefficentsMagnitude[index] || (processingFlags[index] & processedMask) !== 0) { + continue; + } + var contextLabel = labels[neighborsSignificance[index]]; + var decision = decoder.readBit(contexts, contextLabel); + if (decision === 1) { + sign = this.decodeSignBit(i, j, index); + coefficentsSign[index] = sign; + coefficentsMagnitude[index] = 1; + this.setNeighborsSignificance(i, j, index); + processingFlags[index] |= firstMagnitudeBitMask; + } + bitsDecoded[index]++; + } + } + } + }, + checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() { + var decoder = this.decoder; + var contexts = this.contexts; + var symbol = decoder.readBit(contexts, UNIFORM_CONTEXT) << 3 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 2 | decoder.readBit(contexts, UNIFORM_CONTEXT) << 1 | decoder.readBit(contexts, UNIFORM_CONTEXT); + if (symbol !== 0xA) { + throw new JpxError('Invalid segmentation symbol'); + } + } + }; + return BitModel; + }(); + var Transform = function TransformClosure() { + function Transform() {} + Transform.prototype.calculate = function transformCalculate(subbands, u0, v0) { + var ll = subbands[0]; + for (var i = 1, ii = subbands.length; i < ii; i++) { + ll = this.iterate(ll, subbands[i], u0, v0); + } + return ll; + }; + Transform.prototype.extend = function extend(buffer, offset, size) { + var i1 = offset - 1, + j1 = offset + 1; + var i2 = offset + size - 2, + j2 = offset + size; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1--] = buffer[j1++]; + buffer[j2++] = buffer[i2--]; + buffer[i1] = buffer[j1]; + buffer[j2] = buffer[i2]; + }; + Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh, u0, v0) { + var llWidth = ll.width, + llHeight = ll.height, + llItems = ll.items; + var width = hl_lh_hh.width; + var height = hl_lh_hh.height; + var items = hl_lh_hh.items; + var i, j, k, l, u, v; + for (k = 0, i = 0; i < llHeight; i++) { + l = i * 2 * width; + for (j = 0; j < llWidth; j++, k++, l += 2) { + items[l] = llItems[k]; + } + } + llItems = ll.items = null; + var bufferPadding = 4; + var rowBuffer = new Float32Array(width + 2 * bufferPadding); + if (width === 1) { + if ((u0 & 1) !== 0) { + for (v = 0, k = 0; v < height; v++, k += width) { + items[k] *= 0.5; + } + } + } else { + for (v = 0, k = 0; v < height; v++, k += width) { + rowBuffer.set(items.subarray(k, k + width), bufferPadding); + this.extend(rowBuffer, bufferPadding, width); + this.filter(rowBuffer, bufferPadding, width); + items.set(rowBuffer.subarray(bufferPadding, bufferPadding + width), k); + } + } + var numBuffers = 16; + var colBuffers = []; + for (i = 0; i < numBuffers; i++) { + colBuffers.push(new Float32Array(height + 2 * bufferPadding)); + } + var b, + currentBuffer = 0; + ll = bufferPadding + height; + if (height === 1) { + if ((v0 & 1) !== 0) { + for (u = 0; u < width; u++) { + items[u] *= 0.5; + } + } + } else { + for (u = 0; u < width; u++) { + if (currentBuffer === 0) { + numBuffers = Math.min(width - u, numBuffers); + for (k = u, l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + colBuffers[b][l] = items[k + b]; + } + } + currentBuffer = numBuffers; + } + currentBuffer--; + var buffer = colBuffers[currentBuffer]; + this.extend(buffer, bufferPadding, height); + this.filter(buffer, bufferPadding, height); + if (currentBuffer === 0) { + k = u - numBuffers + 1; + for (l = bufferPadding; l < ll; k += width, l++) { + for (b = 0; b < numBuffers; b++) { + items[k + b] = colBuffers[b][l]; + } + } + } + } + } + return { + width: width, + height: height, + items: items + }; + }; + return Transform; + }(); + var IrreversibleTransform = function IrreversibleTransformClosure() { + function IrreversibleTransform() { + Transform.call(this); + } + IrreversibleTransform.prototype = Object.create(Transform.prototype); + IrreversibleTransform.prototype.filter = function irreversibleTransformFilter(x, offset, length) { + var len = length >> 1; + offset = offset | 0; + var j, n, current, next; + var alpha = -1.586134342059924; + var beta = -0.052980118572961; + var gamma = 0.882911075530934; + var delta = 0.443506852043971; + var K = 1.230174104914001; + var K_ = 1 / K; + j = offset - 3; + for (n = len + 4; n--; j += 2) { + x[j] *= K_; + } + j = offset - 2; + current = delta * x[j - 1]; + for (n = len + 3; n--; j += 2) { + next = delta * x[j + 1]; + x[j] = K * x[j] - current - next; + if (n--) { + j += 2; + current = delta * x[j + 1]; + x[j] = K * x[j] - current - next; + } else { + break; + } + } + j = offset - 1; + current = gamma * x[j - 1]; + for (n = len + 2; n--; j += 2) { + next = gamma * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = gamma * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + j = offset; + current = beta * x[j - 1]; + for (n = len + 1; n--; j += 2) { + next = beta * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = beta * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + if (len !== 0) { + j = offset + 1; + current = alpha * x[j - 1]; + for (n = len; n--; j += 2) { + next = alpha * x[j + 1]; + x[j] -= current + next; + if (n--) { + j += 2; + current = alpha * x[j + 1]; + x[j] -= current + next; + } else { + break; + } + } + } + }; + return IrreversibleTransform; + }(); + var ReversibleTransform = function ReversibleTransformClosure() { + function ReversibleTransform() { + Transform.call(this); + } + ReversibleTransform.prototype = Object.create(Transform.prototype); + ReversibleTransform.prototype.filter = function reversibleTransformFilter(x, offset, length) { + var len = length >> 1; + offset = offset | 0; + var j, n; + for (j = offset, n = len + 1; n--; j += 2) { + x[j] -= x[j - 1] + x[j + 1] + 2 >> 2; + } + for (j = offset + 1, n = len; n--; j += 2) { + x[j] += x[j - 1] + x[j + 1] >> 1; + } + }; + return ReversibleTransform; + }(); + return JpxImage; +}(); +exports.JpxImage = JpxImage; + +/***/ }), +/* 15 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FileSpec = exports.XRef = exports.ObjectLoader = exports.Catalog = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _parser = __w_pdfjs_require__(5); + +var _chunked_stream = __w_pdfjs_require__(11); + +var _crypto = __w_pdfjs_require__(12); + +var _colorspace = __w_pdfjs_require__(3); + +var Catalog = function CatalogClosure() { + function Catalog(pdfManager, xref, pageFactory) { + this.pdfManager = pdfManager; + this.xref = xref; + this.catDict = xref.getCatalogObj(); + if (!(0, _primitives.isDict)(this.catDict)) { + throw new _util.FormatError('catalog object is not a dictionary'); + } + this.fontCache = new _primitives.RefSetCache(); + this.builtInCMapCache = Object.create(null); + this.pageKidsCountCache = new _primitives.RefSetCache(); + this.pageFactory = pageFactory; + this.pagePromises = []; + } + Catalog.prototype = { + get metadata() { + var streamRef = this.catDict.getRaw('Metadata'); + if (!(0, _primitives.isRef)(streamRef)) { + return (0, _util.shadow)(this, 'metadata', null); + } + var encryptMetadata = !this.xref.encrypt ? false : this.xref.encrypt.encryptMetadata; + var stream = this.xref.fetch(streamRef, !encryptMetadata); + var metadata; + if (stream && (0, _primitives.isDict)(stream.dict)) { + var type = stream.dict.get('Type'); + var subtype = stream.dict.get('Subtype'); + if ((0, _primitives.isName)(type, 'Metadata') && (0, _primitives.isName)(subtype, 'XML')) { + try { + metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes())); + } catch (e) { + if (e instanceof _util.MissingDataException) { + throw e; + } + (0, _util.info)('Skipping invalid metadata.'); + } + } + } + return (0, _util.shadow)(this, 'metadata', metadata); + }, + get toplevelPagesDict() { + var pagesObj = this.catDict.get('Pages'); + if (!(0, _primitives.isDict)(pagesObj)) { + throw new _util.FormatError('invalid top-level pages dictionary'); + } + return (0, _util.shadow)(this, 'toplevelPagesDict', pagesObj); + }, + get documentOutline() { + var obj = null; + try { + obj = this.readDocumentOutline(); + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + (0, _util.warn)('Unable to read document outline'); + } + return (0, _util.shadow)(this, 'documentOutline', obj); + }, + readDocumentOutline: function Catalog_readDocumentOutline() { + var obj = this.catDict.get('Outlines'); + if (!(0, _primitives.isDict)(obj)) { + return null; + } + obj = obj.getRaw('First'); + if (!(0, _primitives.isRef)(obj)) { + return null; + } + var root = { items: [] }; + var queue = [{ + obj: obj, + parent: root + }]; + var processed = new _primitives.RefSet(); + processed.put(obj); + var xref = this.xref, + blackColor = new Uint8Array(3); + while (queue.length > 0) { + var i = queue.shift(); + var outlineDict = xref.fetchIfRef(i.obj); + if (outlineDict === null) { + continue; + } + if (!outlineDict.has('Title')) { + throw new _util.FormatError('Invalid outline item'); + } + var data = { + url: null, + dest: null + }; + Catalog.parseDestDictionary({ + destDict: outlineDict, + resultObj: data, + docBaseUrl: this.pdfManager.docBaseUrl + }); + var title = outlineDict.get('Title'); + var flags = outlineDict.get('F') || 0; + var color = outlineDict.getArray('C'), + rgbColor = blackColor; + if ((0, _util.isArray)(color) && color.length === 3 && (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) { + rgbColor = _colorspace.ColorSpace.singletons.rgb.getRgb(color, 0); + } + var outlineItem = { + dest: data.dest, + url: data.url, + unsafeUrl: data.unsafeUrl, + newWindow: data.newWindow, + title: (0, _util.stringToPDFString)(title), + color: rgbColor, + count: outlineDict.get('Count'), + bold: !!(flags & 2), + italic: !!(flags & 1), + items: [] + }; + i.parent.items.push(outlineItem); + obj = outlineDict.getRaw('First'); + if ((0, _primitives.isRef)(obj) && !processed.has(obj)) { + queue.push({ + obj: obj, + parent: outlineItem + }); + processed.put(obj); + } + obj = outlineDict.getRaw('Next'); + if ((0, _primitives.isRef)(obj) && !processed.has(obj)) { + queue.push({ + obj: obj, + parent: i.parent + }); + processed.put(obj); + } + } + return root.items.length > 0 ? root.items : null; + }, + get numPages() { + var obj = this.toplevelPagesDict.get('Count'); + if (!(0, _util.isInt)(obj)) { + throw new _util.FormatError('page count in top level pages object is not an integer'); + } + return (0, _util.shadow)(this, 'numPages', obj); + }, + get destinations() { + function fetchDestination(dest) { + return (0, _primitives.isDict)(dest) ? dest.get('D') : dest; + } + var xref = this.xref; + var dests = {}, + nameTreeRef, + nameDictionaryRef; + var obj = this.catDict.get('Names'); + if (obj && obj.has('Dests')) { + nameTreeRef = obj.getRaw('Dests'); + } else if (this.catDict.has('Dests')) { + nameDictionaryRef = this.catDict.get('Dests'); + } + if (nameDictionaryRef) { + obj = nameDictionaryRef; + obj.forEach(function catalogForEach(key, value) { + if (!value) { + return; + } + dests[key] = fetchDestination(value); + }); + } + if (nameTreeRef) { + var nameTree = new NameTree(nameTreeRef, xref); + var names = nameTree.getAll(); + for (var name in names) { + dests[name] = fetchDestination(names[name]); + } + } + return (0, _util.shadow)(this, 'destinations', dests); + }, + getDestination: function Catalog_getDestination(destinationId) { + function fetchDestination(dest) { + return (0, _primitives.isDict)(dest) ? dest.get('D') : dest; + } + var xref = this.xref; + var dest = null, + nameTreeRef, + nameDictionaryRef; + var obj = this.catDict.get('Names'); + if (obj && obj.has('Dests')) { + nameTreeRef = obj.getRaw('Dests'); + } else if (this.catDict.has('Dests')) { + nameDictionaryRef = this.catDict.get('Dests'); + } + if (nameDictionaryRef) { + var value = nameDictionaryRef.get(destinationId); + if (value) { + dest = fetchDestination(value); + } + } + if (nameTreeRef) { + var nameTree = new NameTree(nameTreeRef, xref); + dest = fetchDestination(nameTree.get(destinationId)); + } + return dest; + }, + get pageLabels() { + var obj = null; + try { + obj = this.readPageLabels(); + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + (0, _util.warn)('Unable to read page labels.'); + } + return (0, _util.shadow)(this, 'pageLabels', obj); + }, + readPageLabels: function Catalog_readPageLabels() { + var obj = this.catDict.getRaw('PageLabels'); + if (!obj) { + return null; + } + var pageLabels = new Array(this.numPages); + var style = null; + var prefix = ''; + var numberTree = new NumberTree(obj, this.xref); + var nums = numberTree.getAll(); + var currentLabel = '', + currentIndex = 1; + for (var i = 0, ii = this.numPages; i < ii; i++) { + if (i in nums) { + var labelDict = nums[i]; + if (!(0, _primitives.isDict)(labelDict)) { + throw new _util.FormatError('The PageLabel is not a dictionary.'); + } + var type = labelDict.get('Type'); + if (type && !(0, _primitives.isName)(type, 'PageLabel')) { + throw new _util.FormatError('Invalid type in PageLabel dictionary.'); + } + var s = labelDict.get('S'); + if (s && !(0, _primitives.isName)(s)) { + throw new _util.FormatError('Invalid style in PageLabel dictionary.'); + } + style = s ? s.name : null; + var p = labelDict.get('P'); + if (p && !(0, _util.isString)(p)) { + throw new _util.FormatError('Invalid prefix in PageLabel dictionary.'); + } + prefix = p ? (0, _util.stringToPDFString)(p) : ''; + var st = labelDict.get('St'); + if (st && !((0, _util.isInt)(st) && st >= 1)) { + throw new _util.FormatError('Invalid start in PageLabel dictionary.'); + } + currentIndex = st || 1; + } + switch (style) { + case 'D': + currentLabel = currentIndex; + break; + case 'R': + case 'r': + currentLabel = _util.Util.toRoman(currentIndex, style === 'r'); + break; + case 'A': + case 'a': + var LIMIT = 26; + var A_UPPER_CASE = 0x41, + A_LOWER_CASE = 0x61; + var baseCharCode = style === 'a' ? A_LOWER_CASE : A_UPPER_CASE; + var letterIndex = currentIndex - 1; + var character = String.fromCharCode(baseCharCode + letterIndex % LIMIT); + var charBuf = []; + for (var j = 0, jj = letterIndex / LIMIT | 0; j <= jj; j++) { + charBuf.push(character); + } + currentLabel = charBuf.join(''); + break; + default: + if (style) { + throw new _util.FormatError('Invalid style "' + style + '" in PageLabel dictionary.'); + } + } + pageLabels[i] = prefix + currentLabel; + currentLabel = ''; + currentIndex++; + } + return pageLabels; + }, + get pageMode() { + var obj = this.catDict.get('PageMode'); + var pageMode = 'UseNone'; + if ((0, _primitives.isName)(obj)) { + switch (obj.name) { + case 'UseNone': + case 'UseOutlines': + case 'UseThumbs': + case 'FullScreen': + case 'UseOC': + case 'UseAttachments': + pageMode = obj.name; + } + } + return (0, _util.shadow)(this, 'pageMode', pageMode); + }, + get attachments() { + var xref = this.xref; + var attachments = null, + nameTreeRef; + var obj = this.catDict.get('Names'); + if (obj) { + nameTreeRef = obj.getRaw('EmbeddedFiles'); + } + if (nameTreeRef) { + var nameTree = new NameTree(nameTreeRef, xref); + var names = nameTree.getAll(); + for (var name in names) { + var fs = new FileSpec(names[name], xref); + if (!attachments) { + attachments = Object.create(null); + } + attachments[(0, _util.stringToPDFString)(name)] = fs.serializable; + } + } + return (0, _util.shadow)(this, 'attachments', attachments); + }, + get javaScript() { + var xref = this.xref; + var obj = this.catDict.get('Names'); + var javaScript = []; + function appendIfJavaScriptDict(jsDict) { + var type = jsDict.get('S'); + if (!(0, _primitives.isName)(type, 'JavaScript')) { + return; + } + var js = jsDict.get('JS'); + if ((0, _primitives.isStream)(js)) { + js = (0, _util.bytesToString)(js.getBytes()); + } else if (!(0, _util.isString)(js)) { + return; + } + javaScript.push((0, _util.stringToPDFString)(js)); + } + if (obj && obj.has('JavaScript')) { + var nameTree = new NameTree(obj.getRaw('JavaScript'), xref); + var names = nameTree.getAll(); + for (var name in names) { + var jsDict = names[name]; + if ((0, _primitives.isDict)(jsDict)) { + appendIfJavaScriptDict(jsDict); + } + } + } + var openactionDict = this.catDict.get('OpenAction'); + if ((0, _primitives.isDict)(openactionDict, 'Action')) { + var actionType = openactionDict.get('S'); + if ((0, _primitives.isName)(actionType, 'Named')) { + var action = openactionDict.get('N'); + if ((0, _primitives.isName)(action, 'Print')) { + javaScript.push('print({});'); + } + } else { + appendIfJavaScriptDict(openactionDict); + } + } + return (0, _util.shadow)(this, 'javaScript', javaScript); + }, + cleanup: function Catalog_cleanup() { + var _this = this; + + this.pageKidsCountCache.clear(); + var promises = []; + this.fontCache.forEach(function (promise) { + promises.push(promise); + }); + return Promise.all(promises).then(function (translatedFonts) { + for (var i = 0, ii = translatedFonts.length; i < ii; i++) { + var font = translatedFonts[i].dict; + delete font.translated; + } + _this.fontCache.clear(); + _this.builtInCMapCache = Object.create(null); + }); + }, + getPage: function Catalog_getPage(pageIndex) { + var _this2 = this; + + if (!(pageIndex in this.pagePromises)) { + this.pagePromises[pageIndex] = this.getPageDict(pageIndex).then(function (_ref) { + var _ref2 = _slicedToArray(_ref, 2), + dict = _ref2[0], + ref = _ref2[1]; + + return _this2.pageFactory.createPage(pageIndex, dict, ref, _this2.fontCache, _this2.builtInCMapCache); + }); + } + return this.pagePromises[pageIndex]; + }, + getPageDict: function Catalog_getPageDict(pageIndex) { + var capability = (0, _util.createPromiseCapability)(); + var nodesToVisit = [this.catDict.getRaw('Pages')]; + var count, + currentPageIndex = 0; + var xref = this.xref, + pageKidsCountCache = this.pageKidsCountCache; + function next() { + while (nodesToVisit.length) { + var currentNode = nodesToVisit.pop(); + if ((0, _primitives.isRef)(currentNode)) { + count = pageKidsCountCache.get(currentNode); + if (count > 0 && currentPageIndex + count < pageIndex) { + currentPageIndex += count; + continue; + } + xref.fetchAsync(currentNode).then(function (obj) { + if ((0, _primitives.isDict)(obj, 'Page') || (0, _primitives.isDict)(obj) && !obj.has('Kids')) { + if (pageIndex === currentPageIndex) { + if (currentNode && !pageKidsCountCache.has(currentNode)) { + pageKidsCountCache.put(currentNode, 1); + } + capability.resolve([obj, currentNode]); + } else { + currentPageIndex++; + next(); + } + return; + } + nodesToVisit.push(obj); + next(); + }, capability.reject); + return; + } + if (!(0, _primitives.isDict)(currentNode)) { + capability.reject(new _util.FormatError('page dictionary kid reference points to wrong type of object')); + return; + } + count = currentNode.get('Count'); + var objId = currentNode.objId; + if (objId && !pageKidsCountCache.has(objId)) { + pageKidsCountCache.put(objId, count); + } + if (currentPageIndex + count <= pageIndex) { + currentPageIndex += count; + continue; + } + var kids = currentNode.get('Kids'); + if (!(0, _util.isArray)(kids)) { + capability.reject(new _util.FormatError('page dictionary kids object is not an array')); + return; + } + for (var last = kids.length - 1; last >= 0; last--) { + nodesToVisit.push(kids[last]); + } + } + capability.reject(new Error('Page index ' + pageIndex + ' not found.')); + } + next(); + return capability.promise; + }, + getPageIndex: function Catalog_getPageIndex(pageRef) { + var xref = this.xref; + function pagesBeforeRef(kidRef) { + var total = 0; + var parentRef; + return xref.fetchAsync(kidRef).then(function (node) { + if ((0, _primitives.isRefsEqual)(kidRef, pageRef) && !(0, _primitives.isDict)(node, 'Page') && !((0, _primitives.isDict)(node) && !node.has('Type') && node.has('Contents'))) { + throw new _util.FormatError('The reference does not point to a /Page Dict.'); + } + if (!node) { + return null; + } + if (!(0, _primitives.isDict)(node)) { + throw new _util.FormatError('node must be a Dict.'); + } + parentRef = node.getRaw('Parent'); + return node.getAsync('Parent'); + }).then(function (parent) { + if (!parent) { + return null; + } + if (!(0, _primitives.isDict)(parent)) { + throw new _util.FormatError('parent must be a Dict.'); + } + return parent.getAsync('Kids'); + }).then(function (kids) { + if (!kids) { + return null; + } + var kidPromises = []; + var found = false; + for (var i = 0; i < kids.length; i++) { + var kid = kids[i]; + if (!(0, _primitives.isRef)(kid)) { + throw new _util.FormatError('kid must be a Ref.'); + } + if (kid.num === kidRef.num) { + found = true; + break; + } + kidPromises.push(xref.fetchAsync(kid).then(function (kid) { + if (kid.has('Count')) { + var count = kid.get('Count'); + total += count; + } else { + total++; + } + })); + } + if (!found) { + throw new _util.FormatError('kid ref not found in parents kids'); + } + return Promise.all(kidPromises).then(function () { + return [total, parentRef]; + }); + }); + } + var total = 0; + function next(ref) { + return pagesBeforeRef(ref).then(function (args) { + if (!args) { + return total; + } + var count = args[0]; + var parentRef = args[1]; + total += count; + return next(parentRef); + }); + } + return next(pageRef); + } + }; + Catalog.parseDestDictionary = function Catalog_parseDestDictionary(params) { + function addDefaultProtocolToUrl(url) { + if (url.indexOf('www.') === 0) { + return 'http://' + url; + } + return url; + } + function tryConvertUrlEncoding(url) { + try { + return (0, _util.stringToUTF8String)(url); + } catch (e) { + return url; + } + } + var destDict = params.destDict; + if (!(0, _primitives.isDict)(destDict)) { + (0, _util.warn)('Catalog_parseDestDictionary: "destDict" must be a dictionary.'); + return; + } + var resultObj = params.resultObj; + if ((typeof resultObj === 'undefined' ? 'undefined' : _typeof(resultObj)) !== 'object') { + (0, _util.warn)('Catalog_parseDestDictionary: "resultObj" must be an object.'); + return; + } + var docBaseUrl = params.docBaseUrl || null; + var action = destDict.get('A'), + url, + dest; + if ((0, _primitives.isDict)(action)) { + var linkType = action.get('S').name; + switch (linkType) { + case 'URI': + url = action.get('URI'); + if ((0, _primitives.isName)(url)) { + url = '/' + url.name; + } else if ((0, _util.isString)(url)) { + url = addDefaultProtocolToUrl(url); + } + break; + case 'GoTo': + dest = action.get('D'); + break; + case 'Launch': + case 'GoToR': + var urlDict = action.get('F'); + if ((0, _primitives.isDict)(urlDict)) { + url = urlDict.get('F') || null; + } else if ((0, _util.isString)(urlDict)) { + url = urlDict; + } + var remoteDest = action.get('D'); + if (remoteDest) { + if ((0, _primitives.isName)(remoteDest)) { + remoteDest = remoteDest.name; + } + if ((0, _util.isString)(url)) { + var baseUrl = url.split('#')[0]; + if ((0, _util.isString)(remoteDest)) { + url = baseUrl + '#' + remoteDest; + } else if ((0, _util.isArray)(remoteDest)) { + url = baseUrl + '#' + JSON.stringify(remoteDest); + } + } + } + var newWindow = action.get('NewWindow'); + if ((0, _util.isBool)(newWindow)) { + resultObj.newWindow = newWindow; + } + break; + case 'Named': + var namedAction = action.get('N'); + if ((0, _primitives.isName)(namedAction)) { + resultObj.action = namedAction.name; + } + break; + case 'JavaScript': + var jsAction = action.get('JS'), + js; + if ((0, _primitives.isStream)(jsAction)) { + js = (0, _util.bytesToString)(jsAction.getBytes()); + } else if ((0, _util.isString)(jsAction)) { + js = jsAction; + } + if (js) { + var URL_OPEN_METHODS = ['app.launchURL', 'window.open']; + var regex = new RegExp('^\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\.') + ')\\((?:\'|\")([^\'\"]*)(?:\'|\")(?:,\\s*(\\w+)\\)|\\))', 'i'); + var jsUrl = regex.exec((0, _util.stringToPDFString)(js)); + if (jsUrl && jsUrl[2]) { + url = jsUrl[2]; + if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') { + resultObj.newWindow = true; + } + break; + } + } + default: + (0, _util.warn)('Catalog_parseDestDictionary: Unrecognized link type "' + linkType + '".'); + break; + } + } else if (destDict.has('Dest')) { + dest = destDict.get('Dest'); + } + if ((0, _util.isString)(url)) { + url = tryConvertUrlEncoding(url); + var absoluteUrl = (0, _util.createValidAbsoluteUrl)(url, docBaseUrl); + if (absoluteUrl) { + resultObj.url = absoluteUrl.href; + } + resultObj.unsafeUrl = url; + } + if (dest) { + if ((0, _primitives.isName)(dest)) { + dest = dest.name; + } + if ((0, _util.isString)(dest) || (0, _util.isArray)(dest)) { + resultObj.dest = dest; + } + } + }; + return Catalog; +}(); +var XRef = function XRefClosure() { + function XRef(stream, pdfManager) { + this.stream = stream; + this.pdfManager = pdfManager; + this.entries = []; + this.xrefstms = Object.create(null); + this.cache = []; + this.stats = { + streamTypes: [], + fontTypes: [] + }; + } + XRef.prototype = { + setStartXRef: function XRef_setStartXRef(startXRef) { + this.startXRefQueue = [startXRef]; + }, + parse: function XRef_parse(recoveryMode) { + var trailerDict; + if (!recoveryMode) { + trailerDict = this.readXRef(); + } else { + (0, _util.warn)('Indexing all PDF objects'); + trailerDict = this.indexObjects(); + } + trailerDict.assignXref(this); + this.trailer = trailerDict; + var encrypt = trailerDict.get('Encrypt'); + if ((0, _primitives.isDict)(encrypt)) { + var ids = trailerDict.get('ID'); + var fileId = ids && ids.length ? ids[0] : ''; + encrypt.suppressEncryption = true; + this.encrypt = new _crypto.CipherTransformFactory(encrypt, fileId, this.pdfManager.password); + } + if (!(this.root = trailerDict.get('Root'))) { + throw new _util.FormatError('Invalid root reference'); + } + }, + processXRefTable: function XRef_processXRefTable(parser) { + if (!('tableState' in this)) { + this.tableState = { + entryNum: 0, + streamPos: parser.lexer.stream.pos, + parserBuf1: parser.buf1, + parserBuf2: parser.buf2 + }; + } + var obj = this.readXRefTable(parser); + if (!(0, _primitives.isCmd)(obj, 'trailer')) { + throw new _util.FormatError('Invalid XRef table: could not find trailer dictionary'); + } + var dict = parser.getObj(); + if (!(0, _primitives.isDict)(dict) && dict.dict) { + dict = dict.dict; + } + if (!(0, _primitives.isDict)(dict)) { + throw new _util.FormatError('Invalid XRef table: could not parse trailer dictionary'); + } + delete this.tableState; + return dict; + }, + readXRefTable: function XRef_readXRefTable(parser) { + var stream = parser.lexer.stream; + var tableState = this.tableState; + stream.pos = tableState.streamPos; + parser.buf1 = tableState.parserBuf1; + parser.buf2 = tableState.parserBuf2; + var obj; + while (true) { + if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) { + if ((0, _primitives.isCmd)(obj = parser.getObj(), 'trailer')) { + break; + } + tableState.firstEntryNum = obj; + tableState.entryCount = parser.getObj(); + } + var first = tableState.firstEntryNum; + var count = tableState.entryCount; + if (!(0, _util.isInt)(first) || !(0, _util.isInt)(count)) { + throw new _util.FormatError('Invalid XRef table: wrong types in subsection header'); + } + for (var i = tableState.entryNum; i < count; i++) { + tableState.streamPos = stream.pos; + tableState.entryNum = i; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + var entry = {}; + entry.offset = parser.getObj(); + entry.gen = parser.getObj(); + var type = parser.getObj(); + if ((0, _primitives.isCmd)(type, 'f')) { + entry.free = true; + } else if ((0, _primitives.isCmd)(type, 'n')) { + entry.uncompressed = true; + } + if (!(0, _util.isInt)(entry.offset) || !(0, _util.isInt)(entry.gen) || !(entry.free || entry.uncompressed)) { + throw new _util.FormatError('Invalid entry in XRef subsection: ' + first + ', ' + count); + } + if (i === 0 && entry.free && first === 1) { + first = 0; + } + if (!this.entries[i + first]) { + this.entries[i + first] = entry; + } + } + tableState.entryNum = 0; + tableState.streamPos = stream.pos; + tableState.parserBuf1 = parser.buf1; + tableState.parserBuf2 = parser.buf2; + delete tableState.firstEntryNum; + delete tableState.entryCount; + } + if (this.entries[0] && !this.entries[0].free) { + throw new _util.FormatError('Invalid XRef table: unexpected first object'); + } + return obj; + }, + processXRefStream: function XRef_processXRefStream(stream) { + if (!('streamState' in this)) { + var streamParameters = stream.dict; + var byteWidths = streamParameters.get('W'); + var range = streamParameters.get('Index'); + if (!range) { + range = [0, streamParameters.get('Size')]; + } + this.streamState = { + entryRanges: range, + byteWidths: byteWidths, + entryNum: 0, + streamPos: stream.pos + }; + } + this.readXRefStream(stream); + delete this.streamState; + return stream.dict; + }, + readXRefStream: function XRef_readXRefStream(stream) { + var i, j; + var streamState = this.streamState; + stream.pos = streamState.streamPos; + var byteWidths = streamState.byteWidths; + var typeFieldWidth = byteWidths[0]; + var offsetFieldWidth = byteWidths[1]; + var generationFieldWidth = byteWidths[2]; + var entryRanges = streamState.entryRanges; + while (entryRanges.length > 0) { + var first = entryRanges[0]; + var n = entryRanges[1]; + if (!(0, _util.isInt)(first) || !(0, _util.isInt)(n)) { + throw new _util.FormatError('Invalid XRef range fields: ' + first + ', ' + n); + } + if (!(0, _util.isInt)(typeFieldWidth) || !(0, _util.isInt)(offsetFieldWidth) || !(0, _util.isInt)(generationFieldWidth)) { + throw new _util.FormatError('Invalid XRef entry fields length: ' + first + ', ' + n); + } + for (i = streamState.entryNum; i < n; ++i) { + streamState.entryNum = i; + streamState.streamPos = stream.pos; + var type = 0, + offset = 0, + generation = 0; + for (j = 0; j < typeFieldWidth; ++j) { + type = type << 8 | stream.getByte(); + } + if (typeFieldWidth === 0) { + type = 1; + } + for (j = 0; j < offsetFieldWidth; ++j) { + offset = offset << 8 | stream.getByte(); + } + for (j = 0; j < generationFieldWidth; ++j) { + generation = generation << 8 | stream.getByte(); + } + var entry = {}; + entry.offset = offset; + entry.gen = generation; + switch (type) { + case 0: + entry.free = true; + break; + case 1: + entry.uncompressed = true; + break; + case 2: + break; + default: + throw new _util.FormatError('Invalid XRef entry type: ' + type); + } + if (!this.entries[first + i]) { + this.entries[first + i] = entry; + } + } + streamState.entryNum = 0; + streamState.streamPos = stream.pos; + entryRanges.splice(0, 2); + } + }, + indexObjects: function XRef_indexObjects() { + var TAB = 0x9, + LF = 0xA, + CR = 0xD, + SPACE = 0x20; + var PERCENT = 0x25, + LT = 0x3C; + function readToken(data, offset) { + var token = '', + ch = data[offset]; + while (ch !== LF && ch !== CR && ch !== LT) { + if (++offset >= data.length) { + break; + } + token += String.fromCharCode(ch); + ch = data[offset]; + } + return token; + } + function skipUntil(data, offset, what) { + var length = what.length, + dataLength = data.length; + var skipped = 0; + while (offset < dataLength) { + var i = 0; + while (i < length && data[offset + i] === what[i]) { + ++i; + } + if (i >= length) { + break; + } + offset++; + skipped++; + } + return skipped; + } + var objRegExp = /^(\d+)\s+(\d+)\s+obj\b/; + var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]); + var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114, 101, 102]); + var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]); + var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]); + this.entries.length = 0; + var stream = this.stream; + stream.pos = 0; + var buffer = stream.getBytes(); + var position = stream.start, + length = buffer.length; + var trailers = [], + xrefStms = []; + while (position < length) { + var ch = buffer[position]; + if (ch === TAB || ch === LF || ch === CR || ch === SPACE) { + ++position; + continue; + } + if (ch === PERCENT) { + do { + ++position; + if (position >= length) { + break; + } + ch = buffer[position]; + } while (ch !== LF && ch !== CR); + continue; + } + var token = readToken(buffer, position); + var m; + if (token.indexOf('xref') === 0 && (token.length === 4 || /\s/.test(token[4]))) { + position += skipUntil(buffer, position, trailerBytes); + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else if (m = objRegExp.exec(token)) { + if (typeof this.entries[m[1]] === 'undefined') { + this.entries[m[1]] = { + offset: position - stream.start, + gen: m[2] | 0, + uncompressed: true + }; + } + var contentLength = skipUntil(buffer, position, endobjBytes) + 7; + var content = buffer.subarray(position, position + contentLength); + var xrefTagOffset = skipUntil(content, 0, xrefBytes); + if (xrefTagOffset < contentLength && content[xrefTagOffset + 5] < 64) { + xrefStms.push(position - stream.start); + this.xrefstms[position - stream.start] = 1; + } + position += contentLength; + } else if (token.indexOf('trailer') === 0 && (token.length === 7 || /\s/.test(token[7]))) { + trailers.push(position); + position += skipUntil(buffer, position, startxrefBytes); + } else { + position += token.length + 1; + } + } + var i, ii; + for (i = 0, ii = xrefStms.length; i < ii; ++i) { + this.startXRefQueue.push(xrefStms[i]); + this.readXRef(true); + } + var dict; + for (i = 0, ii = trailers.length; i < ii; ++i) { + stream.pos = trailers[i]; + var parser = new _parser.Parser(new _parser.Lexer(stream), true, this, true); + var obj = parser.getObj(); + if (!(0, _primitives.isCmd)(obj, 'trailer')) { + continue; + } + dict = parser.getObj(); + if (!(0, _primitives.isDict)(dict)) { + continue; + } + if (dict.has('ID')) { + return dict; + } + } + if (dict) { + return dict; + } + throw new _util.InvalidPDFException('Invalid PDF structure'); + }, + readXRef: function XRef_readXRef(recoveryMode) { + var stream = this.stream; + try { + while (this.startXRefQueue.length) { + var startXRef = this.startXRefQueue[0]; + stream.pos = startXRef + stream.start; + var parser = new _parser.Parser(new _parser.Lexer(stream), true, this); + var obj = parser.getObj(); + var dict; + if ((0, _primitives.isCmd)(obj, 'xref')) { + dict = this.processXRefTable(parser); + if (!this.topDict) { + this.topDict = dict; + } + obj = dict.get('XRefStm'); + if ((0, _util.isInt)(obj)) { + var pos = obj; + if (!(pos in this.xrefstms)) { + this.xrefstms[pos] = 1; + this.startXRefQueue.push(pos); + } + } + } else if ((0, _util.isInt)(obj)) { + if (!(0, _util.isInt)(parser.getObj()) || !(0, _primitives.isCmd)(parser.getObj(), 'obj') || !(0, _primitives.isStream)(obj = parser.getObj())) { + throw new _util.FormatError('Invalid XRef stream'); + } + dict = this.processXRefStream(obj); + if (!this.topDict) { + this.topDict = dict; + } + if (!dict) { + throw new _util.FormatError('Failed to read XRef stream'); + } + } else { + throw new _util.FormatError('Invalid XRef stream header'); + } + obj = dict.get('Prev'); + if ((0, _util.isInt)(obj)) { + this.startXRefQueue.push(obj); + } else if ((0, _primitives.isRef)(obj)) { + this.startXRefQueue.push(obj.num); + } + this.startXRefQueue.shift(); + } + return this.topDict; + } catch (e) { + if (e instanceof _util.MissingDataException) { + throw e; + } + (0, _util.info)('(while reading XRef): ' + e); + } + if (recoveryMode) { + return; + } + throw new _util.XRefParseException(); + }, + getEntry: function XRef_getEntry(i) { + var xrefEntry = this.entries[i]; + if (xrefEntry && !xrefEntry.free && xrefEntry.offset) { + return xrefEntry; + } + return null; + }, + fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) { + if (!(0, _primitives.isRef)(obj)) { + return obj; + } + return this.fetch(obj, suppressEncryption); + }, + fetch: function XRef_fetch(ref, suppressEncryption) { + if (!(0, _primitives.isRef)(ref)) { + throw new Error('ref object is not a reference'); + } + var num = ref.num; + if (num in this.cache) { + var cacheEntry = this.cache[num]; + if (cacheEntry instanceof _primitives.Dict && !cacheEntry.objId) { + cacheEntry.objId = ref.toString(); + } + return cacheEntry; + } + var xrefEntry = this.getEntry(num); + if (xrefEntry === null) { + return this.cache[num] = null; + } + if (xrefEntry.uncompressed) { + xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption); + } else { + xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption); + } + if ((0, _primitives.isDict)(xrefEntry)) { + xrefEntry.objId = ref.toString(); + } else if ((0, _primitives.isStream)(xrefEntry)) { + xrefEntry.dict.objId = ref.toString(); + } + return xrefEntry; + }, + fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry, suppressEncryption) { + var gen = ref.gen; + var num = ref.num; + if (xrefEntry.gen !== gen) { + throw new _util.FormatError('inconsistent generation in XRef'); + } + var stream = this.stream.makeSubStream(xrefEntry.offset + this.stream.start); + var parser = new _parser.Parser(new _parser.Lexer(stream), true, this); + var obj1 = parser.getObj(); + var obj2 = parser.getObj(); + var obj3 = parser.getObj(); + if (!(0, _util.isInt)(obj1) || parseInt(obj1, 10) !== num || !(0, _util.isInt)(obj2) || parseInt(obj2, 10) !== gen || !(0, _primitives.isCmd)(obj3)) { + throw new _util.FormatError('bad XRef entry'); + } + if (!(0, _primitives.isCmd)(obj3, 'obj')) { + if (obj3.cmd.indexOf('obj') === 0) { + num = parseInt(obj3.cmd.substring(3), 10); + if (!isNaN(num)) { + return num; + } + } + throw new _util.FormatError('bad XRef entry'); + } + if (this.encrypt && !suppressEncryption) { + xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen)); + } else { + xrefEntry = parser.getObj(); + } + if (!(0, _primitives.isStream)(xrefEntry)) { + this.cache[num] = xrefEntry; + } + return xrefEntry; + }, + fetchCompressed: function XRef_fetchCompressed(xrefEntry, suppressEncryption) { + var tableOffset = xrefEntry.offset; + var stream = this.fetch(new _primitives.Ref(tableOffset, 0)); + if (!(0, _primitives.isStream)(stream)) { + throw new _util.FormatError('bad ObjStm stream'); + } + var first = stream.dict.get('First'); + var n = stream.dict.get('N'); + if (!(0, _util.isInt)(first) || !(0, _util.isInt)(n)) { + throw new _util.FormatError('invalid first and n parameters for ObjStm stream'); + } + var parser = new _parser.Parser(new _parser.Lexer(stream), false, this); + parser.allowStreams = true; + var i, + entries = [], + num, + nums = []; + for (i = 0; i < n; ++i) { + num = parser.getObj(); + if (!(0, _util.isInt)(num)) { + throw new _util.FormatError('invalid object number in the ObjStm stream: ' + num); + } + nums.push(num); + var offset = parser.getObj(); + if (!(0, _util.isInt)(offset)) { + throw new _util.FormatError('invalid object offset in the ObjStm stream: ' + offset); + } + } + for (i = 0; i < n; ++i) { + entries.push(parser.getObj()); + if ((0, _primitives.isCmd)(parser.buf1, 'endobj')) { + parser.shift(); + } + num = nums[i]; + var entry = this.entries[num]; + if (entry && entry.offset === tableOffset && entry.gen === i) { + this.cache[num] = entries[i]; + } + } + xrefEntry = entries[xrefEntry.gen]; + if (xrefEntry === undefined) { + throw new _util.FormatError('bad XRef entry for compressed object'); + } + return xrefEntry; + }, + fetchIfRefAsync: function XRef_fetchIfRefAsync(obj, suppressEncryption) { + if (!(0, _primitives.isRef)(obj)) { + return Promise.resolve(obj); + } + return this.fetchAsync(obj, suppressEncryption); + }, + fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) { + var streamManager = this.stream.manager; + var xref = this; + return new Promise(function tryFetch(resolve, reject) { + try { + resolve(xref.fetch(ref, suppressEncryption)); + } catch (e) { + if (e instanceof _util.MissingDataException) { + streamManager.requestRange(e.begin, e.end).then(function () { + tryFetch(resolve, reject); + }, reject); + return; + } + reject(e); + } + }); + }, + getCatalogObj: function XRef_getCatalogObj() { + return this.root; + } + }; + return XRef; +}(); +var NameOrNumberTree = function NameOrNumberTreeClosure() { + function NameOrNumberTree(root, xref) { + throw new Error('Cannot initialize NameOrNumberTree.'); + } + NameOrNumberTree.prototype = { + getAll: function NameOrNumberTree_getAll() { + var dict = Object.create(null); + if (!this.root) { + return dict; + } + var xref = this.xref; + var processed = new _primitives.RefSet(); + processed.put(this.root); + var queue = [this.root]; + while (queue.length > 0) { + var i, n; + var obj = xref.fetchIfRef(queue.shift()); + if (!(0, _primitives.isDict)(obj)) { + continue; + } + if (obj.has('Kids')) { + var kids = obj.get('Kids'); + for (i = 0, n = kids.length; i < n; i++) { + var kid = kids[i]; + if (processed.has(kid)) { + throw new _util.FormatError('Duplicate entry in "' + this._type + '" tree.'); + } + queue.push(kid); + processed.put(kid); + } + continue; + } + var entries = obj.get(this._type); + if ((0, _util.isArray)(entries)) { + for (i = 0, n = entries.length; i < n; i += 2) { + dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]); + } + } + } + return dict; + }, + get: function NameOrNumberTree_get(key) { + if (!this.root) { + return null; + } + var xref = this.xref; + var kidsOrEntries = xref.fetchIfRef(this.root); + var loopCount = 0; + var MAX_LEVELS = 10; + var l, r, m; + while (kidsOrEntries.has('Kids')) { + if (++loopCount > MAX_LEVELS) { + (0, _util.warn)('Search depth limit reached for "' + this._type + '" tree.'); + return null; + } + var kids = kidsOrEntries.get('Kids'); + if (!(0, _util.isArray)(kids)) { + return null; + } + l = 0; + r = kids.length - 1; + while (l <= r) { + m = l + r >> 1; + var kid = xref.fetchIfRef(kids[m]); + var limits = kid.get('Limits'); + if (key < xref.fetchIfRef(limits[0])) { + r = m - 1; + } else if (key > xref.fetchIfRef(limits[1])) { + l = m + 1; + } else { + kidsOrEntries = xref.fetchIfRef(kids[m]); + break; + } + } + if (l > r) { + return null; + } + } + var entries = kidsOrEntries.get(this._type); + if ((0, _util.isArray)(entries)) { + l = 0; + r = entries.length - 2; + while (l <= r) { + m = l + r & ~1; + var currentKey = xref.fetchIfRef(entries[m]); + if (key < currentKey) { + r = m - 2; + } else if (key > currentKey) { + l = m + 2; + } else { + return xref.fetchIfRef(entries[m + 1]); + } + } + } + return null; + } + }; + return NameOrNumberTree; +}(); +var NameTree = function NameTreeClosure() { + function NameTree(root, xref) { + this.root = root; + this.xref = xref; + this._type = 'Names'; + } + _util.Util.inherit(NameTree, NameOrNumberTree, {}); + return NameTree; +}(); +var NumberTree = function NumberTreeClosure() { + function NumberTree(root, xref) { + this.root = root; + this.xref = xref; + this._type = 'Nums'; + } + _util.Util.inherit(NumberTree, NameOrNumberTree, {}); + return NumberTree; +}(); +var FileSpec = function FileSpecClosure() { + function FileSpec(root, xref) { + if (!root || !(0, _primitives.isDict)(root)) { + return; + } + this.xref = xref; + this.root = root; + if (root.has('FS')) { + this.fs = root.get('FS'); + } + this.description = root.has('Desc') ? (0, _util.stringToPDFString)(root.get('Desc')) : ''; + if (root.has('RF')) { + (0, _util.warn)('Related file specifications are not supported'); + } + this.contentAvailable = true; + if (!root.has('EF')) { + this.contentAvailable = false; + (0, _util.warn)('Non-embedded file specifications are not supported'); + } + } + function pickPlatformItem(dict) { + if (dict.has('UF')) { + return dict.get('UF'); + } else if (dict.has('F')) { + return dict.get('F'); + } else if (dict.has('Unix')) { + return dict.get('Unix'); + } else if (dict.has('Mac')) { + return dict.get('Mac'); + } else if (dict.has('DOS')) { + return dict.get('DOS'); + } + return null; + } + FileSpec.prototype = { + get filename() { + if (!this._filename && this.root) { + var filename = pickPlatformItem(this.root) || 'unnamed'; + this._filename = (0, _util.stringToPDFString)(filename).replace(/\\\\/g, '\\').replace(/\\\//g, '/').replace(/\\/g, '/'); + } + return this._filename; + }, + get content() { + if (!this.contentAvailable) { + return null; + } + if (!this.contentRef && this.root) { + this.contentRef = pickPlatformItem(this.root.get('EF')); + } + var content = null; + if (this.contentRef) { + var xref = this.xref; + var fileObj = xref.fetchIfRef(this.contentRef); + if (fileObj && (0, _primitives.isStream)(fileObj)) { + content = fileObj.getBytes(); + } else { + (0, _util.warn)('Embedded file specification points to non-existing/invalid ' + 'content'); + } + } else { + (0, _util.warn)('Embedded file specification does not have a content'); + } + return content; + }, + get serializable() { + return { + filename: this.filename, + content: this.content + }; + } + }; + return FileSpec; +}(); +var ObjectLoader = function () { + function mayHaveChildren(value) { + return (0, _primitives.isRef)(value) || (0, _primitives.isDict)(value) || (0, _util.isArray)(value) || (0, _primitives.isStream)(value); + } + function addChildren(node, nodesToVisit) { + if ((0, _primitives.isDict)(node) || (0, _primitives.isStream)(node)) { + var dict = (0, _primitives.isDict)(node) ? node : node.dict; + var dictKeys = dict.getKeys(); + for (var i = 0, ii = dictKeys.length; i < ii; i++) { + var rawValue = dict.getRaw(dictKeys[i]); + if (mayHaveChildren(rawValue)) { + nodesToVisit.push(rawValue); + } + } + } else if ((0, _util.isArray)(node)) { + for (var _i = 0, _ii = node.length; _i < _ii; _i++) { + var value = node[_i]; + if (mayHaveChildren(value)) { + nodesToVisit.push(value); + } + } + } + } + function ObjectLoader(dict, keys, xref) { + this.dict = dict; + this.keys = keys; + this.xref = xref; + this.refSet = null; + this.capability = null; + } + ObjectLoader.prototype = { + load: function load() { + this.capability = (0, _util.createPromiseCapability)(); + if (!(this.xref.stream instanceof _chunked_stream.ChunkedStream) || this.xref.stream.getMissingChunks().length === 0) { + this.capability.resolve(); + return this.capability.promise; + } + var keys = this.keys, + dict = this.dict; + + this.refSet = new _primitives.RefSet(); + var nodesToVisit = []; + for (var i = 0, ii = keys.length; i < ii; i++) { + var rawValue = dict.getRaw(keys[i]); + if (rawValue !== undefined) { + nodesToVisit.push(rawValue); + } + } + this._walk(nodesToVisit); + return this.capability.promise; + }, + _walk: function _walk(nodesToVisit) { + var _this3 = this; + + var nodesToRevisit = []; + var pendingRequests = []; + while (nodesToVisit.length) { + var currentNode = nodesToVisit.pop(); + if ((0, _primitives.isRef)(currentNode)) { + if (this.refSet.has(currentNode)) { + continue; + } + try { + this.refSet.put(currentNode); + currentNode = this.xref.fetch(currentNode); + } catch (ex) { + if (!(ex instanceof _util.MissingDataException)) { + throw ex; + } + nodesToRevisit.push(currentNode); + pendingRequests.push({ + begin: ex.begin, + end: ex.end + }); + } + } + if (currentNode && currentNode.getBaseStreams) { + var baseStreams = currentNode.getBaseStreams(); + var foundMissingData = false; + for (var i = 0, ii = baseStreams.length; i < ii; i++) { + var stream = baseStreams[i]; + if (stream.getMissingChunks && stream.getMissingChunks().length) { + foundMissingData = true; + pendingRequests.push({ + begin: stream.start, + end: stream.end + }); + } + } + if (foundMissingData) { + nodesToRevisit.push(currentNode); + } + } + addChildren(currentNode, nodesToVisit); + } + if (pendingRequests.length) { + this.xref.stream.manager.requestRanges(pendingRequests).then(function () { + for (var _i2 = 0, _ii2 = nodesToRevisit.length; _i2 < _ii2; _i2++) { + var node = nodesToRevisit[_i2]; + if ((0, _primitives.isRef)(node)) { + _this3.refSet.remove(node); + } + } + _this3._walk(nodesToRevisit); + }, this.capability.reject); + return; + } + this.refSet = null; + this.capability.resolve(); + } + }; + return ObjectLoader; +}(); +exports.Catalog = Catalog; +exports.ObjectLoader = ObjectLoader; +exports.XRef = XRef; +exports.FileSpec = FileSpec; + +/***/ }), +/* 16 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getSupplementalGlyphMapForArialBlack = exports.getGlyphMapForStandardFonts = exports.getSymbolsFonts = exports.getSerifFonts = exports.getNonStdFontMap = exports.getStdFontMap = undefined; + +var _util = __w_pdfjs_require__(0); + +var getStdFontMap = (0, _util.getLookupTableFactory)(function (t) { + t['ArialNarrow'] = 'Helvetica'; + t['ArialNarrow-Bold'] = 'Helvetica-Bold'; + t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique'; + t['ArialNarrow-Italic'] = 'Helvetica-Oblique'; + t['ArialBlack'] = 'Helvetica'; + t['ArialBlack-Bold'] = 'Helvetica-Bold'; + t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique'; + t['ArialBlack-Italic'] = 'Helvetica-Oblique'; + t['Arial-Black'] = 'Helvetica'; + t['Arial-Black-Bold'] = 'Helvetica-Bold'; + t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique'; + t['Arial-Black-Italic'] = 'Helvetica-Oblique'; + t['Arial'] = 'Helvetica'; + t['Arial-Bold'] = 'Helvetica-Bold'; + t['Arial-BoldItalic'] = 'Helvetica-BoldOblique'; + t['Arial-Italic'] = 'Helvetica-Oblique'; + t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique'; + t['Arial-BoldMT'] = 'Helvetica-Bold'; + t['Arial-ItalicMT'] = 'Helvetica-Oblique'; + t['ArialMT'] = 'Helvetica'; + t['Courier-Bold'] = 'Courier-Bold'; + t['Courier-BoldItalic'] = 'Courier-BoldOblique'; + t['Courier-Italic'] = 'Courier-Oblique'; + t['CourierNew'] = 'Courier'; + t['CourierNew-Bold'] = 'Courier-Bold'; + t['CourierNew-BoldItalic'] = 'Courier-BoldOblique'; + t['CourierNew-Italic'] = 'Courier-Oblique'; + t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique'; + t['CourierNewPS-BoldMT'] = 'Courier-Bold'; + t['CourierNewPS-ItalicMT'] = 'Courier-Oblique'; + t['CourierNewPSMT'] = 'Courier'; + t['Helvetica'] = 'Helvetica'; + t['Helvetica-Bold'] = 'Helvetica-Bold'; + t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique'; + t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique'; + t['Helvetica-Italic'] = 'Helvetica-Oblique'; + t['Helvetica-Oblique'] = 'Helvetica-Oblique'; + t['SegoeUISymbol'] = 'Helvetica'; + t['Symbol-Bold'] = 'Symbol'; + t['Symbol-BoldItalic'] = 'Symbol'; + t['Symbol-Italic'] = 'Symbol'; + t['TimesNewRoman'] = 'Times-Roman'; + t['TimesNewRoman-Bold'] = 'Times-Bold'; + t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic'; + t['TimesNewRoman-Italic'] = 'Times-Italic'; + t['TimesNewRomanPS'] = 'Times-Roman'; + t['TimesNewRomanPS-Bold'] = 'Times-Bold'; + t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic'; + t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic'; + t['TimesNewRomanPS-BoldMT'] = 'Times-Bold'; + t['TimesNewRomanPS-Italic'] = 'Times-Italic'; + t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic'; + t['TimesNewRomanPSMT'] = 'Times-Roman'; + t['TimesNewRomanPSMT-Bold'] = 'Times-Bold'; + t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic'; + t['TimesNewRomanPSMT-Italic'] = 'Times-Italic'; +}); +var getNonStdFontMap = (0, _util.getLookupTableFactory)(function (t) { + t['CenturyGothic'] = 'Helvetica'; + t['CenturyGothic-Bold'] = 'Helvetica-Bold'; + t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique'; + t['CenturyGothic-Italic'] = 'Helvetica-Oblique'; + t['ComicSansMS'] = 'Comic Sans MS'; + t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold'; + t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic'; + t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic'; + t['LucidaConsole'] = 'Courier'; + t['LucidaConsole-Bold'] = 'Courier-Bold'; + t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique'; + t['LucidaConsole-Italic'] = 'Courier-Oblique'; + t['MS-Gothic'] = 'MS Gothic'; + t['MS-Gothic-Bold'] = 'MS Gothic-Bold'; + t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic'; + t['MS-Gothic-Italic'] = 'MS Gothic-Italic'; + t['MS-Mincho'] = 'MS Mincho'; + t['MS-Mincho-Bold'] = 'MS Mincho-Bold'; + t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic'; + t['MS-Mincho-Italic'] = 'MS Mincho-Italic'; + t['MS-PGothic'] = 'MS PGothic'; + t['MS-PGothic-Bold'] = 'MS PGothic-Bold'; + t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic'; + t['MS-PGothic-Italic'] = 'MS PGothic-Italic'; + t['MS-PMincho'] = 'MS PMincho'; + t['MS-PMincho-Bold'] = 'MS PMincho-Bold'; + t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic'; + t['MS-PMincho-Italic'] = 'MS PMincho-Italic'; + t['NuptialScript'] = 'Times-Italic'; + t['Wingdings'] = 'ZapfDingbats'; +}); +var getSerifFonts = (0, _util.getLookupTableFactory)(function (t) { + t['Adobe Jenson'] = true; + t['Adobe Text'] = true; + t['Albertus'] = true; + t['Aldus'] = true; + t['Alexandria'] = true; + t['Algerian'] = true; + t['American Typewriter'] = true; + t['Antiqua'] = true; + t['Apex'] = true; + t['Arno'] = true; + t['Aster'] = true; + t['Aurora'] = true; + t['Baskerville'] = true; + t['Bell'] = true; + t['Bembo'] = true; + t['Bembo Schoolbook'] = true; + t['Benguiat'] = true; + t['Berkeley Old Style'] = true; + t['Bernhard Modern'] = true; + t['Berthold City'] = true; + t['Bodoni'] = true; + t['Bauer Bodoni'] = true; + t['Book Antiqua'] = true; + t['Bookman'] = true; + t['Bordeaux Roman'] = true; + t['Californian FB'] = true; + t['Calisto'] = true; + t['Calvert'] = true; + t['Capitals'] = true; + t['Cambria'] = true; + t['Cartier'] = true; + t['Caslon'] = true; + t['Catull'] = true; + t['Centaur'] = true; + t['Century Old Style'] = true; + t['Century Schoolbook'] = true; + t['Chaparral'] = true; + t['Charis SIL'] = true; + t['Cheltenham'] = true; + t['Cholla Slab'] = true; + t['Clarendon'] = true; + t['Clearface'] = true; + t['Cochin'] = true; + t['Colonna'] = true; + t['Computer Modern'] = true; + t['Concrete Roman'] = true; + t['Constantia'] = true; + t['Cooper Black'] = true; + t['Corona'] = true; + t['Ecotype'] = true; + t['Egyptienne'] = true; + t['Elephant'] = true; + t['Excelsior'] = true; + t['Fairfield'] = true; + t['FF Scala'] = true; + t['Folkard'] = true; + t['Footlight'] = true; + t['FreeSerif'] = true; + t['Friz Quadrata'] = true; + t['Garamond'] = true; + t['Gentium'] = true; + t['Georgia'] = true; + t['Gloucester'] = true; + t['Goudy Old Style'] = true; + t['Goudy Schoolbook'] = true; + t['Goudy Pro Font'] = true; + t['Granjon'] = true; + t['Guardian Egyptian'] = true; + t['Heather'] = true; + t['Hercules'] = true; + t['High Tower Text'] = true; + t['Hiroshige'] = true; + t['Hoefler Text'] = true; + t['Humana Serif'] = true; + t['Imprint'] = true; + t['Ionic No. 5'] = true; + t['Janson'] = true; + t['Joanna'] = true; + t['Korinna'] = true; + t['Lexicon'] = true; + t['Liberation Serif'] = true; + t['Linux Libertine'] = true; + t['Literaturnaya'] = true; + t['Lucida'] = true; + t['Lucida Bright'] = true; + t['Melior'] = true; + t['Memphis'] = true; + t['Miller'] = true; + t['Minion'] = true; + t['Modern'] = true; + t['Mona Lisa'] = true; + t['Mrs Eaves'] = true; + t['MS Serif'] = true; + t['Museo Slab'] = true; + t['New York'] = true; + t['Nimbus Roman'] = true; + t['NPS Rawlinson Roadway'] = true; + t['NuptialScript'] = true; + t['Palatino'] = true; + t['Perpetua'] = true; + t['Plantin'] = true; + t['Plantin Schoolbook'] = true; + t['Playbill'] = true; + t['Poor Richard'] = true; + t['Rawlinson Roadway'] = true; + t['Renault'] = true; + t['Requiem'] = true; + t['Rockwell'] = true; + t['Roman'] = true; + t['Rotis Serif'] = true; + t['Sabon'] = true; + t['Scala'] = true; + t['Seagull'] = true; + t['Sistina'] = true; + t['Souvenir'] = true; + t['STIX'] = true; + t['Stone Informal'] = true; + t['Stone Serif'] = true; + t['Sylfaen'] = true; + t['Times'] = true; + t['Trajan'] = true; + t['Trinité'] = true; + t['Trump Mediaeval'] = true; + t['Utopia'] = true; + t['Vale Type'] = true; + t['Bitstream Vera'] = true; + t['Vera Serif'] = true; + t['Versailles'] = true; + t['Wanted'] = true; + t['Weiss'] = true; + t['Wide Latin'] = true; + t['Windsor'] = true; + t['XITS'] = true; +}); +var getSymbolsFonts = (0, _util.getLookupTableFactory)(function (t) { + t['Dingbats'] = true; + t['Symbol'] = true; + t['ZapfDingbats'] = true; +}); +var getGlyphMapForStandardFonts = (0, _util.getLookupTableFactory)(function (t) { + t[2] = 10; + t[3] = 32; + t[4] = 33; + t[5] = 34; + t[6] = 35; + t[7] = 36; + t[8] = 37; + t[9] = 38; + t[10] = 39; + t[11] = 40; + t[12] = 41; + t[13] = 42; + t[14] = 43; + t[15] = 44; + t[16] = 45; + t[17] = 46; + t[18] = 47; + t[19] = 48; + t[20] = 49; + t[21] = 50; + t[22] = 51; + t[23] = 52; + t[24] = 53; + t[25] = 54; + t[26] = 55; + t[27] = 56; + t[28] = 57; + t[29] = 58; + t[30] = 894; + t[31] = 60; + t[32] = 61; + t[33] = 62; + t[34] = 63; + t[35] = 64; + t[36] = 65; + t[37] = 66; + t[38] = 67; + t[39] = 68; + t[40] = 69; + t[41] = 70; + t[42] = 71; + t[43] = 72; + t[44] = 73; + t[45] = 74; + t[46] = 75; + t[47] = 76; + t[48] = 77; + t[49] = 78; + t[50] = 79; + t[51] = 80; + t[52] = 81; + t[53] = 82; + t[54] = 83; + t[55] = 84; + t[56] = 85; + t[57] = 86; + t[58] = 87; + t[59] = 88; + t[60] = 89; + t[61] = 90; + t[62] = 91; + t[63] = 92; + t[64] = 93; + t[65] = 94; + t[66] = 95; + t[67] = 96; + t[68] = 97; + t[69] = 98; + t[70] = 99; + t[71] = 100; + t[72] = 101; + t[73] = 102; + t[74] = 103; + t[75] = 104; + t[76] = 105; + t[77] = 106; + t[78] = 107; + t[79] = 108; + t[80] = 109; + t[81] = 110; + t[82] = 111; + t[83] = 112; + t[84] = 113; + t[85] = 114; + t[86] = 115; + t[87] = 116; + t[88] = 117; + t[89] = 118; + t[90] = 119; + t[91] = 120; + t[92] = 121; + t[93] = 122; + t[94] = 123; + t[95] = 124; + t[96] = 125; + t[97] = 126; + t[98] = 196; + t[99] = 197; + t[100] = 199; + t[101] = 201; + t[102] = 209; + t[103] = 214; + t[104] = 220; + t[105] = 225; + t[106] = 224; + t[107] = 226; + t[108] = 228; + t[109] = 227; + t[110] = 229; + t[111] = 231; + t[112] = 233; + t[113] = 232; + t[114] = 234; + t[115] = 235; + t[116] = 237; + t[117] = 236; + t[118] = 238; + t[119] = 239; + t[120] = 241; + t[121] = 243; + t[122] = 242; + t[123] = 244; + t[124] = 246; + t[125] = 245; + t[126] = 250; + t[127] = 249; + t[128] = 251; + t[129] = 252; + t[130] = 8224; + t[131] = 176; + t[132] = 162; + t[133] = 163; + t[134] = 167; + t[135] = 8226; + t[136] = 182; + t[137] = 223; + t[138] = 174; + t[139] = 169; + t[140] = 8482; + t[141] = 180; + t[142] = 168; + t[143] = 8800; + t[144] = 198; + t[145] = 216; + t[146] = 8734; + t[147] = 177; + t[148] = 8804; + t[149] = 8805; + t[150] = 165; + t[151] = 181; + t[152] = 8706; + t[153] = 8721; + t[154] = 8719; + t[156] = 8747; + t[157] = 170; + t[158] = 186; + t[159] = 8486; + t[160] = 230; + t[161] = 248; + t[162] = 191; + t[163] = 161; + t[164] = 172; + t[165] = 8730; + t[166] = 402; + t[167] = 8776; + t[168] = 8710; + t[169] = 171; + t[170] = 187; + t[171] = 8230; + t[210] = 218; + t[223] = 711; + t[224] = 321; + t[225] = 322; + t[227] = 353; + t[229] = 382; + t[234] = 253; + t[252] = 263; + t[253] = 268; + t[254] = 269; + t[258] = 258; + t[260] = 260; + t[261] = 261; + t[265] = 280; + t[266] = 281; + t[268] = 283; + t[269] = 313; + t[275] = 323; + t[276] = 324; + t[278] = 328; + t[284] = 345; + t[285] = 346; + t[286] = 347; + t[292] = 367; + t[295] = 377; + t[296] = 378; + t[298] = 380; + t[305] = 963; + t[306] = 964; + t[307] = 966; + t[308] = 8215; + t[309] = 8252; + t[310] = 8319; + t[311] = 8359; + t[312] = 8592; + t[313] = 8593; + t[337] = 9552; + t[493] = 1039; + t[494] = 1040; + t[705] = 1524; + t[706] = 8362; + t[710] = 64288; + t[711] = 64298; + t[759] = 1617; + t[761] = 1776; + t[763] = 1778; + t[775] = 1652; + t[777] = 1764; + t[778] = 1780; + t[779] = 1781; + t[780] = 1782; + t[782] = 771; + t[783] = 64726; + t[786] = 8363; + t[788] = 8532; + t[790] = 768; + t[791] = 769; + t[792] = 768; + t[795] = 803; + t[797] = 64336; + t[798] = 64337; + t[799] = 64342; + t[800] = 64343; + t[801] = 64344; + t[802] = 64345; + t[803] = 64362; + t[804] = 64363; + t[805] = 64364; + t[2424] = 7821; + t[2425] = 7822; + t[2426] = 7823; + t[2427] = 7824; + t[2428] = 7825; + t[2429] = 7826; + t[2430] = 7827; + t[2433] = 7682; + t[2678] = 8045; + t[2679] = 8046; + t[2830] = 1552; + t[2838] = 686; + t[2840] = 751; + t[2842] = 753; + t[2843] = 754; + t[2844] = 755; + t[2846] = 757; + t[2856] = 767; + t[2857] = 848; + t[2858] = 849; + t[2862] = 853; + t[2863] = 854; + t[2864] = 855; + t[2865] = 861; + t[2866] = 862; + t[2906] = 7460; + t[2908] = 7462; + t[2909] = 7463; + t[2910] = 7464; + t[2912] = 7466; + t[2913] = 7467; + t[2914] = 7468; + t[2916] = 7470; + t[2917] = 7471; + t[2918] = 7472; + t[2920] = 7474; + t[2921] = 7475; + t[2922] = 7476; + t[2924] = 7478; + t[2925] = 7479; + t[2926] = 7480; + t[2928] = 7482; + t[2929] = 7483; + t[2930] = 7484; + t[2932] = 7486; + t[2933] = 7487; + t[2934] = 7488; + t[2936] = 7490; + t[2937] = 7491; + t[2938] = 7492; + t[2940] = 7494; + t[2941] = 7495; + t[2942] = 7496; + t[2944] = 7498; + t[2946] = 7500; + t[2948] = 7502; + t[2950] = 7504; + t[2951] = 7505; + t[2952] = 7506; + t[2954] = 7508; + t[2955] = 7509; + t[2956] = 7510; + t[2958] = 7512; + t[2959] = 7513; + t[2960] = 7514; + t[2962] = 7516; + t[2963] = 7517; + t[2964] = 7518; + t[2966] = 7520; + t[2967] = 7521; + t[2968] = 7522; + t[2970] = 7524; + t[2971] = 7525; + t[2972] = 7526; + t[2974] = 7528; + t[2975] = 7529; + t[2976] = 7530; + t[2978] = 1537; + t[2979] = 1538; + t[2980] = 1539; + t[2982] = 1549; + t[2983] = 1551; + t[2984] = 1552; + t[2986] = 1554; + t[2987] = 1555; + t[2988] = 1556; + t[2990] = 1623; + t[2991] = 1624; + t[2995] = 1775; + t[2999] = 1791; + t[3002] = 64290; + t[3003] = 64291; + t[3004] = 64292; + t[3006] = 64294; + t[3007] = 64295; + t[3008] = 64296; + t[3011] = 1900; + t[3014] = 8223; + t[3015] = 8244; + t[3017] = 7532; + t[3018] = 7533; + t[3019] = 7534; + t[3075] = 7590; + t[3076] = 7591; + t[3079] = 7594; + t[3080] = 7595; + t[3083] = 7598; + t[3084] = 7599; + t[3087] = 7602; + t[3088] = 7603; + t[3091] = 7606; + t[3092] = 7607; + t[3095] = 7610; + t[3096] = 7611; + t[3099] = 7614; + t[3100] = 7615; + t[3103] = 7618; + t[3104] = 7619; + t[3107] = 8337; + t[3108] = 8338; + t[3116] = 1884; + t[3119] = 1885; + t[3120] = 1885; + t[3123] = 1886; + t[3124] = 1886; + t[3127] = 1887; + t[3128] = 1887; + t[3131] = 1888; + t[3132] = 1888; + t[3135] = 1889; + t[3136] = 1889; + t[3139] = 1890; + t[3140] = 1890; + t[3143] = 1891; + t[3144] = 1891; + t[3147] = 1892; + t[3148] = 1892; + t[3153] = 580; + t[3154] = 581; + t[3157] = 584; + t[3158] = 585; + t[3161] = 588; + t[3162] = 589; + t[3165] = 891; + t[3166] = 892; + t[3169] = 1274; + t[3170] = 1275; + t[3173] = 1278; + t[3174] = 1279; + t[3181] = 7622; + t[3182] = 7623; + t[3282] = 11799; + t[3316] = 578; + t[3379] = 42785; + t[3393] = 1159; + t[3416] = 8377; +}); +var getSupplementalGlyphMapForArialBlack = (0, _util.getLookupTableFactory)(function (t) { + t[227] = 322; + t[264] = 261; + t[291] = 346; +}); +exports.getStdFontMap = getStdFontMap; +exports.getNonStdFontMap = getNonStdFontMap; +exports.getSerifFonts = getSerifFonts; +exports.getSymbolsFonts = getSymbolsFonts; +exports.getGlyphMapForStandardFonts = getGlyphMapForStandardFonts; +exports.getSupplementalGlyphMapForArialBlack = getSupplementalGlyphMapForArialBlack; + +/***/ }), +/* 17 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WorkerMessageHandler = exports.WorkerTask = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var _pdf_manager = __w_pdfjs_require__(32); + +var _primitives = __w_pdfjs_require__(1); + +var WorkerTask = function WorkerTaskClosure() { + function WorkerTask(name) { + this.name = name; + this.terminated = false; + this._capability = (0, _util.createPromiseCapability)(); + } + WorkerTask.prototype = { + get finished() { + return this._capability.promise; + }, + finish: function finish() { + this._capability.resolve(); + }, + terminate: function terminate() { + this.terminated = true; + }, + ensureNotTerminated: function ensureNotTerminated() { + if (this.terminated) { + throw new Error('Worker task was terminated'); + } + } + }; + return WorkerTask; +}(); +; +var PDFWorkerStream = function PDFWorkerStreamClosure() { + function PDFWorkerStream(msgHandler) { + this._msgHandler = msgHandler; + this._contentLength = null; + this._fullRequestReader = null; + this._rangeRequestReaders = []; + } + PDFWorkerStream.prototype = { + getFullReader: function getFullReader() { + (0, _util.assert)(!this._fullRequestReader); + this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler); + return this._fullRequestReader; + }, + getRangeReader: function getRangeReader(begin, end) { + var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler); + this._rangeRequestReaders.push(reader); + return reader; + }, + cancelAllRequests: function cancelAllRequests(reason) { + if (this._fullRequestReader) { + this._fullRequestReader.cancel(reason); + } + var readers = this._rangeRequestReaders.slice(0); + readers.forEach(function (reader) { + reader.cancel(reason); + }); + } + }; + function PDFWorkerStreamReader(msgHandler) { + var _this = this; + + this._msgHandler = msgHandler; + this._contentLength = null; + this._isRangeSupported = false; + this._isStreamingSupported = false; + var readableStream = this._msgHandler.sendWithStream('GetReader'); + this._reader = readableStream.getReader(); + this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) { + _this._isStreamingSupported = data.isStreamingSupported; + _this._isRangeSupported = data.isRangeSupported; + _this._contentLength = data.contentLength; + }); + } + PDFWorkerStreamReader.prototype = { + get headersReady() { + return this._headersReady; + }, + get contentLength() { + return this._contentLength; + }, + get isStreamingSupported() { + return this._isStreamingSupported; + }, + get isRangeSupported() { + return this._isRangeSupported; + }, + read: function read() { + return this._reader.read().then(function (_ref) { + var value = _ref.value, + done = _ref.done; + + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + }); + }, + cancel: function cancel(reason) { + this._reader.cancel(reason); + } + }; + function PDFWorkerStreamRangeReader(begin, end, msgHandler) { + this._msgHandler = msgHandler; + this.onProgress = null; + var readableStream = this._msgHandler.sendWithStream('GetRangeReader', { + begin: begin, + end: end + }); + this._reader = readableStream.getReader(); + } + PDFWorkerStreamRangeReader.prototype = { + get isStreamingSupported() { + return false; + }, + read: function read() { + return this._reader.read().then(function (_ref2) { + var value = _ref2.value, + done = _ref2.done; + + if (done) { + return { + value: undefined, + done: true + }; + } + return { + value: value.buffer, + done: false + }; + }); + }, + cancel: function cancel(reason) { + this._reader.cancel(reason); + } + }; + return PDFWorkerStream; +}(); +var WorkerMessageHandler = { + setup: function setup(handler, port) { + var testMessageProcessed = false; + handler.on('test', function wphSetupTest(data) { + if (testMessageProcessed) { + return; + } + testMessageProcessed = true; + if (!(data instanceof Uint8Array)) { + handler.send('test', 'main', false); + return; + } + var supportTransfers = data[0] === 255; + handler.postMessageTransfers = supportTransfers; + var xhr = new XMLHttpRequest(); + var responseExists = 'response' in xhr; + try { + xhr.responseType; + } catch (e) { + responseExists = false; + } + if (!responseExists) { + handler.send('test', false); + return; + } + handler.send('test', { + supportTypedArray: true, + supportTransfers: supportTransfers + }); + }); + handler.on('configure', function wphConfigure(data) { + (0, _util.setVerbosityLevel)(data.verbosity); + }); + handler.on('GetDocRequest', function wphSetupDoc(data) { + return WorkerMessageHandler.createDocumentHandler(data, port); + }); + }, + createDocumentHandler: function createDocumentHandler(docParams, port) { + var pdfManager; + var terminated = false; + var cancelXHRs = null; + var WorkerTasks = []; + var docId = docParams.docId; + var docBaseUrl = docParams.docBaseUrl; + var workerHandlerName = docParams.docId + '_worker'; + var handler = new _util.MessageHandler(workerHandlerName, docId, port); + handler.postMessageTransfers = docParams.postMessageTransfers; + function ensureNotTerminated() { + if (terminated) { + throw new Error('Worker was terminated'); + } + } + function startWorkerTask(task) { + WorkerTasks.push(task); + } + function finishWorkerTask(task) { + task.finish(); + var i = WorkerTasks.indexOf(task); + WorkerTasks.splice(i, 1); + } + function loadDocument(recoveryMode) { + var loadDocumentCapability = (0, _util.createPromiseCapability)(); + var parseSuccess = function parseSuccess() { + var numPagesPromise = pdfManager.ensureDoc('numPages'); + var fingerprintPromise = pdfManager.ensureDoc('fingerprint'); + var encryptedPromise = pdfManager.ensureXRef('encrypt'); + Promise.all([numPagesPromise, fingerprintPromise, encryptedPromise]).then(function onDocReady(results) { + var doc = { + numPages: results[0], + fingerprint: results[1], + encrypted: !!results[2] + }; + loadDocumentCapability.resolve(doc); + }, parseFailure); + }; + var parseFailure = function parseFailure(e) { + loadDocumentCapability.reject(e); + }; + pdfManager.ensureDoc('checkHeader', []).then(function () { + pdfManager.ensureDoc('parseStartXRef', []).then(function () { + pdfManager.ensureDoc('parse', [recoveryMode]).then(parseSuccess, parseFailure); + }, parseFailure); + }, parseFailure); + return loadDocumentCapability.promise; + } + function getPdfManager(data, evaluatorOptions) { + var pdfManagerCapability = (0, _util.createPromiseCapability)(); + var pdfManager; + var source = data.source; + if (source.data) { + try { + pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl); + pdfManagerCapability.resolve(pdfManager); + } catch (ex) { + pdfManagerCapability.reject(ex); + } + return pdfManagerCapability.promise; + } + var pdfStream, + cachedChunks = []; + try { + pdfStream = new PDFWorkerStream(handler); + } catch (ex) { + pdfManagerCapability.reject(ex); + return pdfManagerCapability.promise; + } + var fullRequest = pdfStream.getFullReader(); + fullRequest.headersReady.then(function () { + if (!fullRequest.isRangeSupported) { + return; + } + var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported; + pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, { + msgHandler: handler, + url: source.url, + password: source.password, + length: fullRequest.contentLength, + disableAutoFetch: disableAutoFetch, + rangeChunkSize: source.rangeChunkSize + }, evaluatorOptions, docBaseUrl); + for (var i = 0; i < cachedChunks.length; i++) { + pdfManager.sendProgressiveData(cachedChunks[i]); + } + cachedChunks = []; + pdfManagerCapability.resolve(pdfManager); + cancelXHRs = null; + }).catch(function (reason) { + pdfManagerCapability.reject(reason); + cancelXHRs = null; + }); + var loaded = 0; + var flushChunks = function flushChunks() { + var pdfFile = (0, _util.arraysToBytes)(cachedChunks); + if (source.length && pdfFile.length !== source.length) { + (0, _util.warn)('reported HTTP length is different from actual'); + } + try { + pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl); + pdfManagerCapability.resolve(pdfManager); + } catch (ex) { + pdfManagerCapability.reject(ex); + } + cachedChunks = []; + }; + var readPromise = new Promise(function (resolve, reject) { + var readChunk = function readChunk(chunk) { + try { + ensureNotTerminated(); + if (chunk.done) { + if (!pdfManager) { + flushChunks(); + } + cancelXHRs = null; + return; + } + var data = chunk.value; + loaded += (0, _util.arrayByteLength)(data); + if (!fullRequest.isStreamingSupported) { + handler.send('DocProgress', { + loaded: loaded, + total: Math.max(loaded, fullRequest.contentLength || 0) + }); + } + if (pdfManager) { + pdfManager.sendProgressiveData(data); + } else { + cachedChunks.push(data); + } + fullRequest.read().then(readChunk, reject); + } catch (e) { + reject(e); + } + }; + fullRequest.read().then(readChunk, reject); + }); + readPromise.catch(function (e) { + pdfManagerCapability.reject(e); + cancelXHRs = null; + }); + cancelXHRs = function cancelXHRs() { + pdfStream.cancelAllRequests('abort'); + }; + return pdfManagerCapability.promise; + } + function setupDoc(data) { + function onSuccess(doc) { + ensureNotTerminated(); + handler.send('GetDoc', { pdfInfo: doc }); + } + function onFailure(e) { + ensureNotTerminated(); + if (e instanceof _util.PasswordException) { + var task = new WorkerTask('PasswordException: response ' + e.code); + startWorkerTask(task); + handler.sendWithPromise('PasswordRequest', e).then(function (data) { + finishWorkerTask(task); + pdfManager.updatePassword(data.password); + pdfManagerReady(); + }).catch(function (ex) { + finishWorkerTask(task); + handler.send('PasswordException', ex); + }.bind(null, e)); + } else if (e instanceof _util.InvalidPDFException) { + handler.send('InvalidPDF', e); + } else if (e instanceof _util.MissingPDFException) { + handler.send('MissingPDF', e); + } else if (e instanceof _util.UnexpectedResponseException) { + handler.send('UnexpectedResponse', e); + } else { + handler.send('UnknownError', new _util.UnknownErrorException(e.message, e.toString())); + } + } + function pdfManagerReady() { + ensureNotTerminated(); + loadDocument(false).then(onSuccess, function loadFailure(ex) { + ensureNotTerminated(); + if (!(ex instanceof _util.XRefParseException)) { + onFailure(ex); + return; + } + pdfManager.requestLoadedStream(); + pdfManager.onLoadedStream().then(function () { + ensureNotTerminated(); + loadDocument(true).then(onSuccess, onFailure); + }); + }, onFailure); + } + ensureNotTerminated(); + var evaluatorOptions = { + forceDataSchema: data.disableCreateObjectURL, + maxImageSize: data.maxImageSize === undefined ? -1 : data.maxImageSize, + disableFontFace: data.disableFontFace, + nativeImageDecoderSupport: data.nativeImageDecoderSupport, + ignoreErrors: data.ignoreErrors + }; + getPdfManager(data, evaluatorOptions).then(function (newPdfManager) { + if (terminated) { + newPdfManager.terminate(); + throw new Error('Worker was terminated'); + } + pdfManager = newPdfManager; + handler.send('PDFManagerReady', null); + pdfManager.onLoadedStream().then(function (stream) { + handler.send('DataLoaded', { length: stream.bytes.byteLength }); + }); + }).then(pdfManagerReady, onFailure); + } + handler.on('GetPage', function wphSetupGetPage(data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + var rotatePromise = pdfManager.ensure(page, 'rotate'); + var refPromise = pdfManager.ensure(page, 'ref'); + var userUnitPromise = pdfManager.ensure(page, 'userUnit'); + var viewPromise = pdfManager.ensure(page, 'view'); + return Promise.all([rotatePromise, refPromise, userUnitPromise, viewPromise]).then(function (results) { + return { + rotate: results[0], + ref: results[1], + userUnit: results[2], + view: results[3] + }; + }); + }); + }); + handler.on('GetPageIndex', function wphSetupGetPageIndex(data) { + var ref = new _primitives.Ref(data.ref.num, data.ref.gen); + var catalog = pdfManager.pdfDocument.catalog; + return catalog.getPageIndex(ref); + }); + handler.on('GetDestinations', function wphSetupGetDestinations(data) { + return pdfManager.ensureCatalog('destinations'); + }); + handler.on('GetDestination', function wphSetupGetDestination(data) { + return pdfManager.ensureCatalog('getDestination', [data.id]); + }); + handler.on('GetPageLabels', function wphSetupGetPageLabels(data) { + return pdfManager.ensureCatalog('pageLabels'); + }); + handler.on('GetPageMode', function wphSetupGetPageMode(data) { + return pdfManager.ensureCatalog('pageMode'); + }); + handler.on('GetAttachments', function wphSetupGetAttachments(data) { + return pdfManager.ensureCatalog('attachments'); + }); + handler.on('GetJavaScript', function wphSetupGetJavaScript(data) { + return pdfManager.ensureCatalog('javaScript'); + }); + handler.on('GetOutline', function wphSetupGetOutline(data) { + return pdfManager.ensureCatalog('documentOutline'); + }); + handler.on('GetMetadata', function wphSetupGetMetadata(data) { + return Promise.all([pdfManager.ensureDoc('documentInfo'), pdfManager.ensureCatalog('metadata')]); + }); + handler.on('GetData', function wphSetupGetData(data) { + pdfManager.requestLoadedStream(); + return pdfManager.onLoadedStream().then(function (stream) { + return stream.bytes; + }); + }); + handler.on('GetStats', function wphSetupGetStats(data) { + return pdfManager.pdfDocument.xref.stats; + }); + handler.on('GetAnnotations', function wphSetupGetAnnotations(data) { + return pdfManager.getPage(data.pageIndex).then(function (page) { + return pdfManager.ensure(page, 'getAnnotationsData', [data.intent]); + }); + }); + handler.on('RenderPageRequest', function wphSetupRenderPage(data) { + var pageIndex = data.pageIndex; + pdfManager.getPage(pageIndex).then(function (page) { + var task = new WorkerTask('RenderPageRequest: page ' + pageIndex); + startWorkerTask(task); + var pageNum = pageIndex + 1; + var start = Date.now(); + page.getOperatorList({ + handler: handler, + task: task, + intent: data.intent, + renderInteractiveForms: data.renderInteractiveForms + }).then(function (operatorList) { + finishWorkerTask(task); + (0, _util.info)('page=' + pageNum + ' - getOperatorList: time=' + (Date.now() - start) + 'ms, len=' + operatorList.totalLength); + }, function (e) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.unknown }); + var minimumStackMessage = 'worker.js: while trying to getPage() and getOperatorList()'; + var wrappedException; + if (typeof e === 'string') { + wrappedException = { + message: e, + stack: minimumStackMessage + }; + } else if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object') { + wrappedException = { + message: e.message || e.toString(), + stack: e.stack || minimumStackMessage + }; + } else { + wrappedException = { + message: 'Unknown exception type: ' + (typeof e === 'undefined' ? 'undefined' : _typeof(e)), + stack: minimumStackMessage + }; + } + handler.send('PageError', { + pageNum: pageNum, + error: wrappedException, + intent: data.intent + }); + }); + }); + }, this); + handler.on('GetTextContent', function wphExtractText(data, sink) { + var pageIndex = data.pageIndex; + sink.onPull = function (desiredSize) {}; + sink.onCancel = function (reason) {}; + pdfManager.getPage(pageIndex).then(function (page) { + var task = new WorkerTask('GetTextContent: page ' + pageIndex); + startWorkerTask(task); + var pageNum = pageIndex + 1; + var start = Date.now(); + page.extractTextContent({ + handler: handler, + task: task, + sink: sink, + normalizeWhitespace: data.normalizeWhitespace, + combineTextItems: data.combineTextItems + }).then(function () { + finishWorkerTask(task); + (0, _util.info)('text indexing: page=' + pageNum + ' - time=' + (Date.now() - start) + 'ms'); + sink.close(); + }, function (reason) { + finishWorkerTask(task); + if (task.terminated) { + return; + } + sink.error(reason); + throw reason; + }); + }); + }); + handler.on('Cleanup', function wphCleanup(data) { + return pdfManager.cleanup(); + }); + handler.on('Terminate', function wphTerminate(data) { + terminated = true; + if (pdfManager) { + pdfManager.terminate(); + pdfManager = null; + } + if (cancelXHRs) { + cancelXHRs(); + } + var waitOn = []; + WorkerTasks.forEach(function (task) { + waitOn.push(task.finished); + task.terminate(); + }); + return Promise.all(waitOn).then(function () { + handler.destroy(); + handler = null; + }); + }); + handler.on('Ready', function wphReady(data) { + setupDoc(docParams); + docParams = null; + }); + return workerHandlerName; + }, + initializeFromPort: function initializeFromPort(port) { + var handler = new _util.MessageHandler('worker', 'main', port); + WorkerMessageHandler.setup(handler, port); + handler.send('ready', null); + } +}; +function isMessagePort(maybePort) { + return typeof maybePort.postMessage === 'function' && 'onmessage' in maybePort; +} +if (typeof window === 'undefined' && !(0, _util.isNodeJS)() && typeof self !== 'undefined' && isMessagePort(self)) { + WorkerMessageHandler.initializeFromPort(self); +} +exports.WorkerTask = WorkerTask; +exports.WorkerMessageHandler = WorkerMessageHandler; + +/***/ }), +/* 18 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var _typeof2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +(function (e, a) { + for (var i in a) { + e[i] = a[i]; + } +})(exports, function (modules) { + var installedModules = {}; + function __w_pdfjs_require__(moduleId) { + if (installedModules[moduleId]) return installedModules[moduleId].exports; + var module = installedModules[moduleId] = { + i: moduleId, + l: false, + exports: {} + }; + modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__); + module.l = true; + return module.exports; + } + __w_pdfjs_require__.m = modules; + __w_pdfjs_require__.c = installedModules; + __w_pdfjs_require__.i = function (value) { + return value; + }; + __w_pdfjs_require__.d = function (exports, name, getter) { + if (!__w_pdfjs_require__.o(exports, name)) { + Object.defineProperty(exports, name, { + configurable: false, + enumerable: true, + get: getter + }); + } + }; + __w_pdfjs_require__.n = function (module) { + var getter = module && module.__esModule ? function getDefault() { + return module['default']; + } : function getModuleExports() { + return module; + }; + __w_pdfjs_require__.d(getter, 'a', getter); + return getter; + }; + __w_pdfjs_require__.o = function (object, property) { + return Object.prototype.hasOwnProperty.call(object, property); + }; + __w_pdfjs_require__.p = ""; + return __w_pdfjs_require__(__w_pdfjs_require__.s = 7); +}([function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _typeof = typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol" ? function (obj) { + return typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + } : function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj === 'undefined' ? 'undefined' : _typeof2(obj); + }; + var _require = __w_pdfjs_require__(1), + assert = _require.assert; + function IsPropertyKey(argument) { + return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol'; + } + exports.typeIsObject = function (x) { + return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function'; + }; + exports.createDataProperty = function (o, p, v) { + assert(exports.typeIsObject(o)); + Object.defineProperty(o, p, { + value: v, + writable: true, + enumerable: true, + configurable: true + }); + }; + exports.createArrayFromList = function (elements) { + return elements.slice(); + }; + exports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) { + new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset); + }; + exports.CreateIterResultObject = function (value, done) { + assert(typeof done === 'boolean'); + var obj = {}; + Object.defineProperty(obj, 'value', { + value: value, + enumerable: true, + writable: true, + configurable: true + }); + Object.defineProperty(obj, 'done', { + value: done, + enumerable: true, + writable: true, + configurable: true + }); + return obj; + }; + exports.IsFiniteNonNegativeNumber = function (v) { + if (Number.isNaN(v)) { + return false; + } + if (v === Infinity) { + return false; + } + if (v < 0) { + return false; + } + return true; + }; + function Call(F, V, args) { + if (typeof F !== 'function') { + throw new TypeError('Argument is not a function'); + } + return Function.prototype.apply.call(F, V, args); + } + exports.InvokeOrNoop = function (O, P, args) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + var method = O[P]; + if (method === undefined) { + return undefined; + } + return Call(method, O, args); + }; + exports.PromiseInvokeOrNoop = function (O, P, args) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + try { + return Promise.resolve(exports.InvokeOrNoop(O, P, args)); + } catch (returnValueE) { + return Promise.reject(returnValueE); + } + }; + exports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) { + assert(O !== undefined); + assert(IsPropertyKey(P)); + assert(Array.isArray(args)); + assert(Array.isArray(argsF)); + var method = void 0; + try { + method = O[P]; + } catch (methodE) { + return Promise.reject(methodE); + } + if (method === undefined) { + return F.apply(null, argsF); + } + try { + return Promise.resolve(Call(method, O, args)); + } catch (e) { + return Promise.reject(e); + } + }; + exports.TransferArrayBuffer = function (O) { + return O.slice(); + }; + exports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) { + highWaterMark = Number(highWaterMark); + if (Number.isNaN(highWaterMark) || highWaterMark < 0) { + throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN'); + } + return highWaterMark; + }; + exports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) { + if (size !== undefined && typeof size !== 'function') { + throw new TypeError('size property of a queuing strategy must be a function'); + } + highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark); + return { + size: size, + highWaterMark: highWaterMark + }; + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + function rethrowAssertionErrorRejection(e) { + if (e && e.constructor === AssertionError) { + setTimeout(function () { + throw e; + }, 0); + } + } + function AssertionError(message) { + this.name = 'AssertionError'; + this.message = message || ''; + this.stack = new Error().stack; + } + AssertionError.prototype = Object.create(Error.prototype); + AssertionError.prototype.constructor = AssertionError; + function assert(value, message) { + if (!value) { + throw new AssertionError(message); + } + } + module.exports = { + rethrowAssertionErrorRejection: rethrowAssertionErrorRejection, + AssertionError: AssertionError, + assert: assert + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(0), + InvokeOrNoop = _require.InvokeOrNoop, + PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, + ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, + typeIsObject = _require.typeIsObject; + var _require2 = __w_pdfjs_require__(1), + assert = _require2.assert, + rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection; + var _require3 = __w_pdfjs_require__(3), + DequeueValue = _require3.DequeueValue, + EnqueueValueWithSize = _require3.EnqueueValueWithSize, + PeekQueueValue = _require3.PeekQueueValue, + ResetQueue = _require3.ResetQueue; + var WritableStream = function () { + function WritableStream() { + var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + size = _ref.size, + _ref$highWaterMark = _ref.highWaterMark, + highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark; + _classCallCheck(this, WritableStream); + this._state = 'writable'; + this._storedError = undefined; + this._writer = undefined; + this._writableStreamController = undefined; + this._writeRequests = []; + this._inFlightWriteRequest = undefined; + this._closeRequest = undefined; + this._inFlightCloseRequest = undefined; + this._pendingAbortRequest = undefined; + this._backpressure = false; + var type = underlyingSink.type; + if (type !== undefined) { + throw new RangeError('Invalid type is specified'); + } + this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark); + this._writableStreamController.__startSteps(); + } + _createClass(WritableStream, [{ + key: 'abort', + value: function abort(reason) { + if (IsWritableStream(this) === false) { + return Promise.reject(streamBrandCheckException('abort')); + } + if (IsWritableStreamLocked(this) === true) { + return Promise.reject(new TypeError('Cannot abort a stream that already has a writer')); + } + return WritableStreamAbort(this, reason); + } + }, { + key: 'getWriter', + value: function getWriter() { + if (IsWritableStream(this) === false) { + throw streamBrandCheckException('getWriter'); + } + return AcquireWritableStreamDefaultWriter(this); + } + }, { + key: 'locked', + get: function get() { + if (IsWritableStream(this) === false) { + throw streamBrandCheckException('locked'); + } + return IsWritableStreamLocked(this); + } + }]); + return WritableStream; + }(); + module.exports = { + AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter, + IsWritableStream: IsWritableStream, + IsWritableStreamLocked: IsWritableStreamLocked, + WritableStream: WritableStream, + WritableStreamAbort: WritableStreamAbort, + WritableStreamDefaultControllerError: WritableStreamDefaultControllerError, + WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation, + WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease, + WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite, + WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight + }; + function AcquireWritableStreamDefaultWriter(stream) { + return new WritableStreamDefaultWriter(stream); + } + function IsWritableStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) { + return false; + } + return true; + } + function IsWritableStreamLocked(stream) { + assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams'); + if (stream._writer === undefined) { + return false; + } + return true; + } + function WritableStreamAbort(stream, reason) { + var state = stream._state; + if (state === 'closed') { + return Promise.resolve(undefined); + } + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + var error = new TypeError('Requested to abort'); + if (stream._pendingAbortRequest !== undefined) { + return Promise.reject(error); + } + assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring'); + var wasAlreadyErroring = false; + if (state === 'erroring') { + wasAlreadyErroring = true; + reason = undefined; + } + var promise = new Promise(function (resolve, reject) { + stream._pendingAbortRequest = { + _resolve: resolve, + _reject: reject, + _reason: reason, + _wasAlreadyErroring: wasAlreadyErroring + }; + }); + if (wasAlreadyErroring === false) { + WritableStreamStartErroring(stream, error); + } + return promise; + } + function WritableStreamAddWriteRequest(stream) { + assert(IsWritableStreamLocked(stream) === true); + assert(stream._state === 'writable'); + var promise = new Promise(function (resolve, reject) { + var writeRequest = { + _resolve: resolve, + _reject: reject + }; + stream._writeRequests.push(writeRequest); + }); + return promise; + } + function WritableStreamDealWithRejection(stream, error) { + var state = stream._state; + if (state === 'writable') { + WritableStreamStartErroring(stream, error); + return; + } + assert(state === 'erroring'); + WritableStreamFinishErroring(stream); + } + function WritableStreamStartErroring(stream, reason) { + assert(stream._storedError === undefined, 'stream._storedError === undefined'); + assert(stream._state === 'writable', 'state must be writable'); + var controller = stream._writableStreamController; + assert(controller !== undefined, 'controller must not be undefined'); + stream._state = 'erroring'; + stream._storedError = reason; + var writer = stream._writer; + if (writer !== undefined) { + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason); + } + if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) { + WritableStreamFinishErroring(stream); + } + } + function WritableStreamFinishErroring(stream) { + assert(stream._state === 'erroring', 'stream._state === erroring'); + assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false'); + stream._state = 'errored'; + stream._writableStreamController.__errorSteps(); + var storedError = stream._storedError; + for (var i = 0; i < stream._writeRequests.length; i++) { + var writeRequest = stream._writeRequests[i]; + writeRequest._reject(storedError); + } + stream._writeRequests = []; + if (stream._pendingAbortRequest === undefined) { + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + var abortRequest = stream._pendingAbortRequest; + stream._pendingAbortRequest = undefined; + if (abortRequest._wasAlreadyErroring === true) { + abortRequest._reject(storedError); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + return; + } + var promise = stream._writableStreamController.__abortSteps(abortRequest._reason); + promise.then(function () { + abortRequest._resolve(); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + }, function (reason) { + abortRequest._reject(reason); + WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream); + }); + } + function WritableStreamFinishInFlightWrite(stream) { + assert(stream._inFlightWriteRequest !== undefined); + stream._inFlightWriteRequest._resolve(undefined); + stream._inFlightWriteRequest = undefined; + } + function WritableStreamFinishInFlightWriteWithError(stream, error) { + assert(stream._inFlightWriteRequest !== undefined); + stream._inFlightWriteRequest._reject(error); + stream._inFlightWriteRequest = undefined; + assert(stream._state === 'writable' || stream._state === 'erroring'); + WritableStreamDealWithRejection(stream, error); + } + function WritableStreamFinishInFlightClose(stream) { + assert(stream._inFlightCloseRequest !== undefined); + stream._inFlightCloseRequest._resolve(undefined); + stream._inFlightCloseRequest = undefined; + var state = stream._state; + assert(state === 'writable' || state === 'erroring'); + if (state === 'erroring') { + stream._storedError = undefined; + if (stream._pendingAbortRequest !== undefined) { + stream._pendingAbortRequest._resolve(); + stream._pendingAbortRequest = undefined; + } + } + stream._state = 'closed'; + var writer = stream._writer; + if (writer !== undefined) { + defaultWriterClosedPromiseResolve(writer); + } + assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined'); + assert(stream._storedError === undefined, 'stream._storedError === undefined'); + } + function WritableStreamFinishInFlightCloseWithError(stream, error) { + assert(stream._inFlightCloseRequest !== undefined); + stream._inFlightCloseRequest._reject(error); + stream._inFlightCloseRequest = undefined; + assert(stream._state === 'writable' || stream._state === 'erroring'); + if (stream._pendingAbortRequest !== undefined) { + stream._pendingAbortRequest._reject(error); + stream._pendingAbortRequest = undefined; + } + WritableStreamDealWithRejection(stream, error); + } + function WritableStreamCloseQueuedOrInFlight(stream) { + if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) { + return false; + } + return true; + } + function WritableStreamHasOperationMarkedInFlight(stream) { + if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) { + return false; + } + return true; + } + function WritableStreamMarkCloseRequestInFlight(stream) { + assert(stream._inFlightCloseRequest === undefined); + assert(stream._closeRequest !== undefined); + stream._inFlightCloseRequest = stream._closeRequest; + stream._closeRequest = undefined; + } + function WritableStreamMarkFirstWriteRequestInFlight(stream) { + assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request'); + assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty'); + stream._inFlightWriteRequest = stream._writeRequests.shift(); + } + function WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) { + assert(stream._state === 'errored', '_stream_.[[state]] is `"errored"`'); + if (stream._closeRequest !== undefined) { + assert(stream._inFlightCloseRequest === undefined); + stream._closeRequest._reject(stream._storedError); + stream._closeRequest = undefined; + } + var writer = stream._writer; + if (writer !== undefined) { + defaultWriterClosedPromiseReject(writer, stream._storedError); + writer._closedPromise.catch(function () {}); + } + } + function WritableStreamUpdateBackpressure(stream, backpressure) { + assert(stream._state === 'writable'); + assert(WritableStreamCloseQueuedOrInFlight(stream) === false); + var writer = stream._writer; + if (writer !== undefined && backpressure !== stream._backpressure) { + if (backpressure === true) { + defaultWriterReadyPromiseReset(writer); + } else { + assert(backpressure === false); + defaultWriterReadyPromiseResolve(writer); + } + } + stream._backpressure = backpressure; + } + var WritableStreamDefaultWriter = function () { + function WritableStreamDefaultWriter(stream) { + _classCallCheck(this, WritableStreamDefaultWriter); + if (IsWritableStream(stream) === false) { + throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance'); + } + if (IsWritableStreamLocked(stream) === true) { + throw new TypeError('This stream has already been locked for exclusive writing by another writer'); + } + this._ownerWritableStream = stream; + stream._writer = this; + var state = stream._state; + if (state === 'writable') { + if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) { + defaultWriterReadyPromiseInitialize(this); + } else { + defaultWriterReadyPromiseInitializeAsResolved(this); + } + defaultWriterClosedPromiseInitialize(this); + } else if (state === 'erroring') { + defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError); + this._readyPromise.catch(function () {}); + defaultWriterClosedPromiseInitialize(this); + } else if (state === 'closed') { + defaultWriterReadyPromiseInitializeAsResolved(this); + defaultWriterClosedPromiseInitializeAsResolved(this); + } else { + assert(state === 'errored', 'state must be errored'); + var storedError = stream._storedError; + defaultWriterReadyPromiseInitializeAsRejected(this, storedError); + this._readyPromise.catch(function () {}); + defaultWriterClosedPromiseInitializeAsRejected(this, storedError); + this._closedPromise.catch(function () {}); + } + } + _createClass(WritableStreamDefaultWriter, [{ + key: 'abort', + value: function abort(reason) { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('abort')); + } + if (this._ownerWritableStream === undefined) { + return Promise.reject(defaultWriterLockException('abort')); + } + return WritableStreamDefaultWriterAbort(this, reason); + } + }, { + key: 'close', + value: function close() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('close')); + } + var stream = this._ownerWritableStream; + if (stream === undefined) { + return Promise.reject(defaultWriterLockException('close')); + } + if (WritableStreamCloseQueuedOrInFlight(stream) === true) { + return Promise.reject(new TypeError('cannot close an already-closing stream')); + } + return WritableStreamDefaultWriterClose(this); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (IsWritableStreamDefaultWriter(this) === false) { + throw defaultWriterBrandCheckException('releaseLock'); + } + var stream = this._ownerWritableStream; + if (stream === undefined) { + return; + } + assert(stream._writer !== undefined); + WritableStreamDefaultWriterRelease(this); + } + }, { + key: 'write', + value: function write(chunk) { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('write')); + } + if (this._ownerWritableStream === undefined) { + return Promise.reject(defaultWriterLockException('write to')); + } + return WritableStreamDefaultWriterWrite(this, chunk); + } + }, { + key: 'closed', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('closed')); + } + return this._closedPromise; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + throw defaultWriterBrandCheckException('desiredSize'); + } + if (this._ownerWritableStream === undefined) { + throw defaultWriterLockException('desiredSize'); + } + return WritableStreamDefaultWriterGetDesiredSize(this); + } + }, { + key: 'ready', + get: function get() { + if (IsWritableStreamDefaultWriter(this) === false) { + return Promise.reject(defaultWriterBrandCheckException('ready')); + } + return this._readyPromise; + } + }]); + return WritableStreamDefaultWriter; + }(); + function IsWritableStreamDefaultWriter(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) { + return false; + } + return true; + } + function WritableStreamDefaultWriterAbort(writer, reason) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + return WritableStreamAbort(stream, reason); + } + function WritableStreamDefaultWriterClose(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var state = stream._state; + if (state === 'closed' || state === 'errored') { + return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed')); + } + assert(state === 'writable' || state === 'erroring'); + assert(WritableStreamCloseQueuedOrInFlight(stream) === false); + var promise = new Promise(function (resolve, reject) { + var closeRequest = { + _resolve: resolve, + _reject: reject + }; + stream._closeRequest = closeRequest; + }); + if (stream._backpressure === true && state === 'writable') { + defaultWriterReadyPromiseResolve(writer); + } + WritableStreamDefaultControllerClose(stream._writableStreamController); + return promise; + } + function WritableStreamDefaultWriterCloseWithErrorPropagation(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var state = stream._state; + if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { + return Promise.resolve(); + } + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + assert(state === 'writable' || state === 'erroring'); + return WritableStreamDefaultWriterClose(writer); + } + function WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) { + if (writer._closedPromiseState === 'pending') { + defaultWriterClosedPromiseReject(writer, error); + } else { + defaultWriterClosedPromiseResetToRejected(writer, error); + } + writer._closedPromise.catch(function () {}); + } + function WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) { + if (writer._readyPromiseState === 'pending') { + defaultWriterReadyPromiseReject(writer, error); + } else { + defaultWriterReadyPromiseResetToRejected(writer, error); + } + writer._readyPromise.catch(function () {}); + } + function WritableStreamDefaultWriterGetDesiredSize(writer) { + var stream = writer._ownerWritableStream; + var state = stream._state; + if (state === 'errored' || state === 'erroring') { + return null; + } + if (state === 'closed') { + return 0; + } + return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController); + } + function WritableStreamDefaultWriterRelease(writer) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + assert(stream._writer === writer); + var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\'s closedness'); + WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError); + WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError); + stream._writer = undefined; + writer._ownerWritableStream = undefined; + } + function WritableStreamDefaultWriterWrite(writer, chunk) { + var stream = writer._ownerWritableStream; + assert(stream !== undefined); + var controller = stream._writableStreamController; + var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk); + if (stream !== writer._ownerWritableStream) { + return Promise.reject(defaultWriterLockException('write to')); + } + var state = stream._state; + if (state === 'errored') { + return Promise.reject(stream._storedError); + } + if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') { + return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to')); + } + if (state === 'erroring') { + return Promise.reject(stream._storedError); + } + assert(state === 'writable'); + var promise = WritableStreamAddWriteRequest(stream); + WritableStreamDefaultControllerWrite(controller, chunk, chunkSize); + return promise; + } + var WritableStreamDefaultController = function () { + function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) { + _classCallCheck(this, WritableStreamDefaultController); + if (IsWritableStream(stream) === false) { + throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance'); + } + if (stream._writableStreamController !== undefined) { + throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor'); + } + this._controlledWritableStream = stream; + this._underlyingSink = underlyingSink; + this._queue = undefined; + this._queueTotalSize = undefined; + ResetQueue(this); + this._started = false; + var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this._strategySize = normalizedStrategy.size; + this._strategyHWM = normalizedStrategy.highWaterMark; + var backpressure = WritableStreamDefaultControllerGetBackpressure(this); + WritableStreamUpdateBackpressure(stream, backpressure); + } + _createClass(WritableStreamDefaultController, [{ + key: 'error', + value: function error(e) { + if (IsWritableStreamDefaultController(this) === false) { + throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController'); + } + var state = this._controlledWritableStream._state; + if (state !== 'writable') { + return; + } + WritableStreamDefaultControllerError(this, e); + } + }, { + key: '__abortSteps', + value: function __abortSteps(reason) { + return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]); + } + }, { + key: '__errorSteps', + value: function __errorSteps() { + ResetQueue(this); + } + }, { + key: '__startSteps', + value: function __startSteps() { + var _this = this; + var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]); + var stream = this._controlledWritableStream; + Promise.resolve(startResult).then(function () { + assert(stream._state === 'writable' || stream._state === 'erroring'); + _this._started = true; + WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this); + }, function (r) { + assert(stream._state === 'writable' || stream._state === 'erroring'); + _this._started = true; + WritableStreamDealWithRejection(stream, r); + }).catch(rethrowAssertionErrorRejection); + } + }]); + return WritableStreamDefaultController; + }(); + function WritableStreamDefaultControllerClose(controller) { + EnqueueValueWithSize(controller, 'close', 0); + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerGetChunkSize(controller, chunk) { + var strategySize = controller._strategySize; + if (strategySize === undefined) { + return 1; + } + try { + return strategySize(chunk); + } catch (chunkSizeE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); + return 1; + } + } + function WritableStreamDefaultControllerGetDesiredSize(controller) { + return controller._strategyHWM - controller._queueTotalSize; + } + function WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) { + var writeRecord = { chunk: chunk }; + try { + EnqueueValueWithSize(controller, writeRecord, chunkSize); + } catch (enqueueE) { + WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); + return; + } + var stream = controller._controlledWritableStream; + if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') { + var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function IsWritableStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) { + return false; + } + return true; + } + function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { + var stream = controller._controlledWritableStream; + if (controller._started === false) { + return; + } + if (stream._inFlightWriteRequest !== undefined) { + return; + } + var state = stream._state; + if (state === 'closed' || state === 'errored') { + return; + } + if (state === 'erroring') { + WritableStreamFinishErroring(stream); + return; + } + if (controller._queue.length === 0) { + return; + } + var writeRecord = PeekQueueValue(controller); + if (writeRecord === 'close') { + WritableStreamDefaultControllerProcessClose(controller); + } else { + WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk); + } + } + function WritableStreamDefaultControllerErrorIfNeeded(controller, error) { + if (controller._controlledWritableStream._state === 'writable') { + WritableStreamDefaultControllerError(controller, error); + } + } + function WritableStreamDefaultControllerProcessClose(controller) { + var stream = controller._controlledWritableStream; + WritableStreamMarkCloseRequestInFlight(stream); + DequeueValue(controller); + assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued'); + var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []); + sinkClosePromise.then(function () { + WritableStreamFinishInFlightClose(stream); + }, function (reason) { + WritableStreamFinishInFlightCloseWithError(stream, reason); + }).catch(rethrowAssertionErrorRejection); + } + function WritableStreamDefaultControllerProcessWrite(controller, chunk) { + var stream = controller._controlledWritableStream; + WritableStreamMarkFirstWriteRequestInFlight(stream); + var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]); + sinkWritePromise.then(function () { + WritableStreamFinishInFlightWrite(stream); + var state = stream._state; + assert(state === 'writable' || state === 'erroring'); + DequeueValue(controller); + if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') { + var backpressure = WritableStreamDefaultControllerGetBackpressure(controller); + WritableStreamUpdateBackpressure(stream, backpressure); + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + }, function (reason) { + WritableStreamFinishInFlightWriteWithError(stream, reason); + }).catch(rethrowAssertionErrorRejection); + } + function WritableStreamDefaultControllerGetBackpressure(controller) { + var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller); + return desiredSize <= 0; + } + function WritableStreamDefaultControllerError(controller, error) { + var stream = controller._controlledWritableStream; + assert(stream._state === 'writable'); + WritableStreamStartErroring(stream, error); + } + function streamBrandCheckException(name) { + return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream'); + } + function defaultWriterBrandCheckException(name) { + return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter'); + } + function defaultWriterLockException(name) { + return new TypeError('Cannot ' + name + ' a stream using a released writer'); + } + function defaultWriterClosedPromiseInitialize(writer) { + writer._closedPromise = new Promise(function (resolve, reject) { + writer._closedPromise_resolve = resolve; + writer._closedPromise_reject = reject; + writer._closedPromiseState = 'pending'; + }); + } + function defaultWriterClosedPromiseInitializeAsRejected(writer, reason) { + writer._closedPromise = Promise.reject(reason); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseInitializeAsResolved(writer) { + writer._closedPromise = Promise.resolve(undefined); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'resolved'; + } + function defaultWriterClosedPromiseReject(writer, reason) { + assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); + assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); + assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); + writer._closedPromise_reject(reason); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseResetToRejected(writer, reason) { + assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined'); + assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined'); + assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending'); + writer._closedPromise = Promise.reject(reason); + writer._closedPromiseState = 'rejected'; + } + function defaultWriterClosedPromiseResolve(writer) { + assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined'); + assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined'); + assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending'); + writer._closedPromise_resolve(undefined); + writer._closedPromise_resolve = undefined; + writer._closedPromise_reject = undefined; + writer._closedPromiseState = 'resolved'; + } + function defaultWriterReadyPromiseInitialize(writer) { + writer._readyPromise = new Promise(function (resolve, reject) { + writer._readyPromise_resolve = resolve; + writer._readyPromise_reject = reject; + }); + writer._readyPromiseState = 'pending'; + } + function defaultWriterReadyPromiseInitializeAsRejected(writer, reason) { + writer._readyPromise = Promise.reject(reason); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseInitializeAsResolved(writer) { + writer._readyPromise = Promise.resolve(undefined); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'fulfilled'; + } + function defaultWriterReadyPromiseReject(writer, reason) { + assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); + assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); + writer._readyPromise_reject(reason); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseReset(writer) { + assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); + assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); + writer._readyPromise = new Promise(function (resolve, reject) { + writer._readyPromise_resolve = resolve; + writer._readyPromise_reject = reject; + }); + writer._readyPromiseState = 'pending'; + } + function defaultWriterReadyPromiseResetToRejected(writer, reason) { + assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined'); + assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined'); + writer._readyPromise = Promise.reject(reason); + writer._readyPromiseState = 'rejected'; + } + function defaultWriterReadyPromiseResolve(writer) { + assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined'); + assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined'); + writer._readyPromise_resolve(undefined); + writer._readyPromise_resolve = undefined; + writer._readyPromise_reject = undefined; + writer._readyPromiseState = 'fulfilled'; + } +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _require = __w_pdfjs_require__(0), + IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber; + var _require2 = __w_pdfjs_require__(1), + assert = _require2.assert; + exports.DequeueValue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.'); + var pair = container._queue.shift(); + container._queueTotalSize -= pair.size; + if (container._queueTotalSize < 0) { + container._queueTotalSize = 0; + } + return pair.value; + }; + exports.EnqueueValueWithSize = function (container, value, size) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].'); + size = Number(size); + if (!IsFiniteNonNegativeNumber(size)) { + throw new RangeError('Size must be a finite, non-NaN, non-negative number.'); + } + container._queue.push({ + value: value, + size: size + }); + container._queueTotalSize += size; + }; + exports.PeekQueueValue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.'); + var pair = container._queue[0]; + return pair.value; + }; + exports.ResetQueue = function (container) { + assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].'); + container._queue = []; + container._queueTotalSize = 0; + }; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(0), + ArrayBufferCopy = _require.ArrayBufferCopy, + CreateIterResultObject = _require.CreateIterResultObject, + IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber, + InvokeOrNoop = _require.InvokeOrNoop, + PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop, + TransferArrayBuffer = _require.TransferArrayBuffer, + ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy, + ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark; + var _require2 = __w_pdfjs_require__(0), + createArrayFromList = _require2.createArrayFromList, + createDataProperty = _require2.createDataProperty, + typeIsObject = _require2.typeIsObject; + var _require3 = __w_pdfjs_require__(1), + assert = _require3.assert, + rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection; + var _require4 = __w_pdfjs_require__(3), + DequeueValue = _require4.DequeueValue, + EnqueueValueWithSize = _require4.EnqueueValueWithSize, + ResetQueue = _require4.ResetQueue; + var _require5 = __w_pdfjs_require__(2), + AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter, + IsWritableStream = _require5.IsWritableStream, + IsWritableStreamLocked = _require5.IsWritableStreamLocked, + WritableStreamAbort = _require5.WritableStreamAbort, + WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation, + WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease, + WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite, + WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight; + var ReadableStream = function () { + function ReadableStream() { + var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + size = _ref.size, + highWaterMark = _ref.highWaterMark; + _classCallCheck(this, ReadableStream); + this._state = 'readable'; + this._reader = undefined; + this._storedError = undefined; + this._disturbed = false; + this._readableStreamController = undefined; + var type = underlyingSource.type; + var typeString = String(type); + if (typeString === 'bytes') { + if (highWaterMark === undefined) { + highWaterMark = 0; + } + this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark); + } else if (type === undefined) { + if (highWaterMark === undefined) { + highWaterMark = 1; + } + this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark); + } else { + throw new RangeError('Invalid type is specified'); + } + } + _createClass(ReadableStream, [{ + key: 'cancel', + value: function cancel(reason) { + if (IsReadableStream(this) === false) { + return Promise.reject(streamBrandCheckException('cancel')); + } + if (IsReadableStreamLocked(this) === true) { + return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader')); + } + return ReadableStreamCancel(this, reason); + } + }, { + key: 'getReader', + value: function getReader() { + var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + mode = _ref2.mode; + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('getReader'); + } + if (mode === undefined) { + return AcquireReadableStreamDefaultReader(this); + } + mode = String(mode); + if (mode === 'byob') { + return AcquireReadableStreamBYOBReader(this); + } + throw new RangeError('Invalid mode is specified'); + } + }, { + key: 'pipeThrough', + value: function pipeThrough(_ref3, options) { + var writable = _ref3.writable, + readable = _ref3.readable; + var promise = this.pipeTo(writable, options); + ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise); + return readable; + } + }, { + key: 'pipeTo', + value: function pipeTo(dest) { + var _this = this; + var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + preventClose = _ref4.preventClose, + preventAbort = _ref4.preventAbort, + preventCancel = _ref4.preventCancel; + if (IsReadableStream(this) === false) { + return Promise.reject(streamBrandCheckException('pipeTo')); + } + if (IsWritableStream(dest) === false) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\'s first argument must be a WritableStream')); + } + preventClose = Boolean(preventClose); + preventAbort = Boolean(preventAbort); + preventCancel = Boolean(preventCancel); + if (IsReadableStreamLocked(this) === true) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream')); + } + if (IsWritableStreamLocked(dest) === true) { + return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream')); + } + var reader = AcquireReadableStreamDefaultReader(this); + var writer = AcquireWritableStreamDefaultWriter(dest); + var shuttingDown = false; + var currentWrite = Promise.resolve(); + return new Promise(function (resolve, reject) { + function pipeLoop() { + currentWrite = Promise.resolve(); + if (shuttingDown === true) { + return Promise.resolve(); + } + return writer._readyPromise.then(function () { + return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) { + var value = _ref5.value, + done = _ref5.done; + if (done === true) { + return; + } + currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {}); + }); + }).then(pipeLoop); + } + isOrBecomesErrored(_this, reader._closedPromise, function (storedError) { + if (preventAbort === false) { + shutdownWithAction(function () { + return WritableStreamAbort(dest, storedError); + }, true, storedError); + } else { + shutdown(true, storedError); + } + }); + isOrBecomesErrored(dest, writer._closedPromise, function (storedError) { + if (preventCancel === false) { + shutdownWithAction(function () { + return ReadableStreamCancel(_this, storedError); + }, true, storedError); + } else { + shutdown(true, storedError); + } + }); + isOrBecomesClosed(_this, reader._closedPromise, function () { + if (preventClose === false) { + shutdownWithAction(function () { + return WritableStreamDefaultWriterCloseWithErrorPropagation(writer); + }); + } else { + shutdown(); + } + }); + if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') { + var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it'); + if (preventCancel === false) { + shutdownWithAction(function () { + return ReadableStreamCancel(_this, destClosed); + }, true, destClosed); + } else { + shutdown(true, destClosed); + } + } + pipeLoop().catch(function (err) { + currentWrite = Promise.resolve(); + rethrowAssertionErrorRejection(err); + }); + function waitForWritesToFinish() { + var oldCurrentWrite = currentWrite; + return currentWrite.then(function () { + return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined; + }); + } + function isOrBecomesErrored(stream, promise, action) { + if (stream._state === 'errored') { + action(stream._storedError); + } else { + promise.catch(action).catch(rethrowAssertionErrorRejection); + } + } + function isOrBecomesClosed(stream, promise, action) { + if (stream._state === 'closed') { + action(); + } else { + promise.then(action).catch(rethrowAssertionErrorRejection); + } + } + function shutdownWithAction(action, originalIsError, originalError) { + if (shuttingDown === true) { + return; + } + shuttingDown = true; + if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { + waitForWritesToFinish().then(doTheRest); + } else { + doTheRest(); + } + function doTheRest() { + action().then(function () { + return finalize(originalIsError, originalError); + }, function (newError) { + return finalize(true, newError); + }).catch(rethrowAssertionErrorRejection); + } + } + function shutdown(isError, error) { + if (shuttingDown === true) { + return; + } + shuttingDown = true; + if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) { + waitForWritesToFinish().then(function () { + return finalize(isError, error); + }).catch(rethrowAssertionErrorRejection); + } else { + finalize(isError, error); + } + } + function finalize(isError, error) { + WritableStreamDefaultWriterRelease(writer); + ReadableStreamReaderGenericRelease(reader); + if (isError) { + reject(error); + } else { + resolve(undefined); + } + } + }); + } + }, { + key: 'tee', + value: function tee() { + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('tee'); + } + var branches = ReadableStreamTee(this, false); + return createArrayFromList(branches); + } + }, { + key: 'locked', + get: function get() { + if (IsReadableStream(this) === false) { + throw streamBrandCheckException('locked'); + } + return IsReadableStreamLocked(this); + } + }]); + return ReadableStream; + }(); + module.exports = { + ReadableStream: ReadableStream, + IsReadableStreamDisturbed: IsReadableStreamDisturbed, + ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose, + ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue, + ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError, + ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize + }; + function AcquireReadableStreamBYOBReader(stream) { + return new ReadableStreamBYOBReader(stream); + } + function AcquireReadableStreamDefaultReader(stream) { + return new ReadableStreamDefaultReader(stream); + } + function IsReadableStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) { + return false; + } + return true; + } + function IsReadableStreamDisturbed(stream) { + assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams'); + return stream._disturbed; + } + function IsReadableStreamLocked(stream) { + assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams'); + if (stream._reader === undefined) { + return false; + } + return true; + } + function ReadableStreamTee(stream, cloneForBranch2) { + assert(IsReadableStream(stream) === true); + assert(typeof cloneForBranch2 === 'boolean'); + var reader = AcquireReadableStreamDefaultReader(stream); + var teeState = { + closedOrErrored: false, + canceled1: false, + canceled2: false, + reason1: undefined, + reason2: undefined + }; + teeState.promise = new Promise(function (resolve) { + teeState._resolve = resolve; + }); + var pull = create_ReadableStreamTeePullFunction(); + pull._reader = reader; + pull._teeState = teeState; + pull._cloneForBranch2 = cloneForBranch2; + var cancel1 = create_ReadableStreamTeeBranch1CancelFunction(); + cancel1._stream = stream; + cancel1._teeState = teeState; + var cancel2 = create_ReadableStreamTeeBranch2CancelFunction(); + cancel2._stream = stream; + cancel2._teeState = teeState; + var underlyingSource1 = Object.create(Object.prototype); + createDataProperty(underlyingSource1, 'pull', pull); + createDataProperty(underlyingSource1, 'cancel', cancel1); + var branch1Stream = new ReadableStream(underlyingSource1); + var underlyingSource2 = Object.create(Object.prototype); + createDataProperty(underlyingSource2, 'pull', pull); + createDataProperty(underlyingSource2, 'cancel', cancel2); + var branch2Stream = new ReadableStream(underlyingSource2); + pull._branch1 = branch1Stream._readableStreamController; + pull._branch2 = branch2Stream._readableStreamController; + reader._closedPromise.catch(function (r) { + if (teeState.closedOrErrored === true) { + return; + } + ReadableStreamDefaultControllerError(pull._branch1, r); + ReadableStreamDefaultControllerError(pull._branch2, r); + teeState.closedOrErrored = true; + }); + return [branch1Stream, branch2Stream]; + } + function create_ReadableStreamTeePullFunction() { + function f() { + var reader = f._reader, + branch1 = f._branch1, + branch2 = f._branch2, + teeState = f._teeState; + return ReadableStreamDefaultReaderRead(reader).then(function (result) { + assert(typeIsObject(result)); + var value = result.value; + var done = result.done; + assert(typeof done === 'boolean'); + if (done === true && teeState.closedOrErrored === false) { + if (teeState.canceled1 === false) { + ReadableStreamDefaultControllerClose(branch1); + } + if (teeState.canceled2 === false) { + ReadableStreamDefaultControllerClose(branch2); + } + teeState.closedOrErrored = true; + } + if (teeState.closedOrErrored === true) { + return; + } + var value1 = value; + var value2 = value; + if (teeState.canceled1 === false) { + ReadableStreamDefaultControllerEnqueue(branch1, value1); + } + if (teeState.canceled2 === false) { + ReadableStreamDefaultControllerEnqueue(branch2, value2); + } + }); + } + return f; + } + function create_ReadableStreamTeeBranch1CancelFunction() { + function f(reason) { + var stream = f._stream, + teeState = f._teeState; + teeState.canceled1 = true; + teeState.reason1 = reason; + if (teeState.canceled2 === true) { + var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); + var cancelResult = ReadableStreamCancel(stream, compositeReason); + teeState._resolve(cancelResult); + } + return teeState.promise; + } + return f; + } + function create_ReadableStreamTeeBranch2CancelFunction() { + function f(reason) { + var stream = f._stream, + teeState = f._teeState; + teeState.canceled2 = true; + teeState.reason2 = reason; + if (teeState.canceled1 === true) { + var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]); + var cancelResult = ReadableStreamCancel(stream, compositeReason); + teeState._resolve(cancelResult); + } + return teeState.promise; + } + return f; + } + function ReadableStreamAddReadIntoRequest(stream) { + assert(IsReadableStreamBYOBReader(stream._reader) === true); + assert(stream._state === 'readable' || stream._state === 'closed'); + var promise = new Promise(function (resolve, reject) { + var readIntoRequest = { + _resolve: resolve, + _reject: reject + }; + stream._reader._readIntoRequests.push(readIntoRequest); + }); + return promise; + } + function ReadableStreamAddReadRequest(stream) { + assert(IsReadableStreamDefaultReader(stream._reader) === true); + assert(stream._state === 'readable'); + var promise = new Promise(function (resolve, reject) { + var readRequest = { + _resolve: resolve, + _reject: reject + }; + stream._reader._readRequests.push(readRequest); + }); + return promise; + } + function ReadableStreamCancel(stream, reason) { + stream._disturbed = true; + if (stream._state === 'closed') { + return Promise.resolve(undefined); + } + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + ReadableStreamClose(stream); + var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason); + return sourceCancelPromise.then(function () { + return undefined; + }); + } + function ReadableStreamClose(stream) { + assert(stream._state === 'readable'); + stream._state = 'closed'; + var reader = stream._reader; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + for (var i = 0; i < reader._readRequests.length; i++) { + var _resolve = reader._readRequests[i]._resolve; + _resolve(CreateIterResultObject(undefined, true)); + } + reader._readRequests = []; + } + defaultReaderClosedPromiseResolve(reader); + return undefined; + } + function ReadableStreamError(stream, e) { + assert(IsReadableStream(stream) === true, 'stream must be ReadableStream'); + assert(stream._state === 'readable', 'state must be readable'); + stream._state = 'errored'; + stream._storedError = e; + var reader = stream._reader; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + for (var i = 0; i < reader._readRequests.length; i++) { + var readRequest = reader._readRequests[i]; + readRequest._reject(e); + } + reader._readRequests = []; + } else { + assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader'); + for (var _i = 0; _i < reader._readIntoRequests.length; _i++) { + var readIntoRequest = reader._readIntoRequests[_i]; + readIntoRequest._reject(e); + } + reader._readIntoRequests = []; + } + defaultReaderClosedPromiseReject(reader, e); + reader._closedPromise.catch(function () {}); + } + function ReadableStreamFulfillReadIntoRequest(stream, chunk, done) { + var reader = stream._reader; + assert(reader._readIntoRequests.length > 0); + var readIntoRequest = reader._readIntoRequests.shift(); + readIntoRequest._resolve(CreateIterResultObject(chunk, done)); + } + function ReadableStreamFulfillReadRequest(stream, chunk, done) { + var reader = stream._reader; + assert(reader._readRequests.length > 0); + var readRequest = reader._readRequests.shift(); + readRequest._resolve(CreateIterResultObject(chunk, done)); + } + function ReadableStreamGetNumReadIntoRequests(stream) { + return stream._reader._readIntoRequests.length; + } + function ReadableStreamGetNumReadRequests(stream) { + return stream._reader._readRequests.length; + } + function ReadableStreamHasBYOBReader(stream) { + var reader = stream._reader; + if (reader === undefined) { + return false; + } + if (IsReadableStreamBYOBReader(reader) === false) { + return false; + } + return true; + } + function ReadableStreamHasDefaultReader(stream) { + var reader = stream._reader; + if (reader === undefined) { + return false; + } + if (IsReadableStreamDefaultReader(reader) === false) { + return false; + } + return true; + } + var ReadableStreamDefaultReader = function () { + function ReadableStreamDefaultReader(stream) { + _classCallCheck(this, ReadableStreamDefaultReader); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance'); + } + if (IsReadableStreamLocked(stream) === true) { + throw new TypeError('This stream has already been locked for exclusive reading by another reader'); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readRequests = []; + } + _createClass(ReadableStreamDefaultReader, [{ + key: 'cancel', + value: function cancel(reason) { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('cancel')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('cancel')); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + }, { + key: 'read', + value: function read() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('read')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('read from')); + } + return ReadableStreamDefaultReaderRead(this); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (IsReadableStreamDefaultReader(this) === false) { + throw defaultReaderBrandCheckException('releaseLock'); + } + if (this._ownerReadableStream === undefined) { + return; + } + if (this._readRequests.length > 0) { + throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); + } + ReadableStreamReaderGenericRelease(this); + } + }, { + key: 'closed', + get: function get() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise.reject(defaultReaderBrandCheckException('closed')); + } + return this._closedPromise; + } + }]); + return ReadableStreamDefaultReader; + }(); + var ReadableStreamBYOBReader = function () { + function ReadableStreamBYOBReader(stream) { + _classCallCheck(this, ReadableStreamBYOBReader); + if (!IsReadableStream(stream)) { + throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source'); + } + if (IsReadableByteStreamController(stream._readableStreamController) === false) { + throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source'); + } + if (IsReadableStreamLocked(stream)) { + throw new TypeError('This stream has already been locked for exclusive reading by another reader'); + } + ReadableStreamReaderGenericInitialize(this, stream); + this._readIntoRequests = []; + } + _createClass(ReadableStreamBYOBReader, [{ + key: 'cancel', + value: function cancel(reason) { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('cancel')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('cancel')); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + }, { + key: 'read', + value: function read(view) { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('read')); + } + if (this._ownerReadableStream === undefined) { + return Promise.reject(readerLockException('read from')); + } + if (!ArrayBuffer.isView(view)) { + return Promise.reject(new TypeError('view must be an array buffer view')); + } + if (view.byteLength === 0) { + return Promise.reject(new TypeError('view must have non-zero byteLength')); + } + return ReadableStreamBYOBReaderRead(this, view); + } + }, { + key: 'releaseLock', + value: function releaseLock() { + if (!IsReadableStreamBYOBReader(this)) { + throw byobReaderBrandCheckException('releaseLock'); + } + if (this._ownerReadableStream === undefined) { + return; + } + if (this._readIntoRequests.length > 0) { + throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled'); + } + ReadableStreamReaderGenericRelease(this); + } + }, { + key: 'closed', + get: function get() { + if (!IsReadableStreamBYOBReader(this)) { + return Promise.reject(byobReaderBrandCheckException('closed')); + } + return this._closedPromise; + } + }]); + return ReadableStreamBYOBReader; + }(); + function IsReadableStreamBYOBReader(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) { + return false; + } + return true; + } + function IsReadableStreamDefaultReader(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) { + return false; + } + return true; + } + function ReadableStreamReaderGenericInitialize(reader, stream) { + reader._ownerReadableStream = stream; + stream._reader = reader; + if (stream._state === 'readable') { + defaultReaderClosedPromiseInitialize(reader); + } else if (stream._state === 'closed') { + defaultReaderClosedPromiseInitializeAsResolved(reader); + } else { + assert(stream._state === 'errored', 'state must be errored'); + defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError); + reader._closedPromise.catch(function () {}); + } + } + function ReadableStreamReaderGenericCancel(reader, reason) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + return ReadableStreamCancel(stream, reason); + } + function ReadableStreamReaderGenericRelease(reader) { + assert(reader._ownerReadableStream !== undefined); + assert(reader._ownerReadableStream._reader === reader); + if (reader._ownerReadableStream._state === 'readable') { + defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); + } else { + defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\'s closedness')); + } + reader._closedPromise.catch(function () {}); + reader._ownerReadableStream._reader = undefined; + reader._ownerReadableStream = undefined; + } + function ReadableStreamBYOBReaderRead(reader, view) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + stream._disturbed = true; + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + return ReadableByteStreamControllerPullInto(stream._readableStreamController, view); + } + function ReadableStreamDefaultReaderRead(reader) { + var stream = reader._ownerReadableStream; + assert(stream !== undefined); + stream._disturbed = true; + if (stream._state === 'closed') { + return Promise.resolve(CreateIterResultObject(undefined, true)); + } + if (stream._state === 'errored') { + return Promise.reject(stream._storedError); + } + assert(stream._state === 'readable'); + return stream._readableStreamController.__pullSteps(); + } + var ReadableStreamDefaultController = function () { + function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) { + _classCallCheck(this, ReadableStreamDefaultController); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance'); + } + if (stream._readableStreamController !== undefined) { + throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor'); + } + this._controlledReadableStream = stream; + this._underlyingSource = underlyingSource; + this._queue = undefined; + this._queueTotalSize = undefined; + ResetQueue(this); + this._started = false; + this._closeRequested = false; + this._pullAgain = false; + this._pulling = false; + var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this._strategySize = normalizedStrategy.size; + this._strategyHWM = normalizedStrategy.highWaterMark; + var controller = this; + var startResult = InvokeOrNoop(underlyingSource, 'start', [this]); + Promise.resolve(startResult).then(function () { + controller._started = true; + assert(controller._pulling === false); + assert(controller._pullAgain === false); + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + }, function (r) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, r); + }).catch(rethrowAssertionErrorRejection); + } + _createClass(ReadableStreamDefaultController, [{ + key: 'close', + value: function close() { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('close'); + } + if (this._closeRequested === true) { + throw new TypeError('The stream has already been closed; do not close it again!'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); + } + ReadableStreamDefaultControllerClose(this); + } + }, { + key: 'enqueue', + value: function enqueue(chunk) { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('enqueue'); + } + if (this._closeRequested === true) { + throw new TypeError('stream is closed or draining'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); + } + return ReadableStreamDefaultControllerEnqueue(this, chunk); + } + }, { + key: 'error', + value: function error(e) { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('error'); + } + var stream = this._controlledReadableStream; + if (stream._state !== 'readable') { + throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); + } + ReadableStreamDefaultControllerError(this, e); + } + }, { + key: '__cancelSteps', + value: function __cancelSteps(reason) { + ResetQueue(this); + return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]); + } + }, { + key: '__pullSteps', + value: function __pullSteps() { + var stream = this._controlledReadableStream; + if (this._queue.length > 0) { + var chunk = DequeueValue(this); + if (this._closeRequested === true && this._queue.length === 0) { + ReadableStreamClose(stream); + } else { + ReadableStreamDefaultControllerCallPullIfNeeded(this); + } + return Promise.resolve(CreateIterResultObject(chunk, false)); + } + var pendingPromise = ReadableStreamAddReadRequest(stream); + ReadableStreamDefaultControllerCallPullIfNeeded(this); + return pendingPromise; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsReadableStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('desiredSize'); + } + return ReadableStreamDefaultControllerGetDesiredSize(this); + } + }]); + return ReadableStreamDefaultController; + }(); + function IsReadableStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) { + return false; + } + return true; + } + function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { + var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); + if (shouldPull === false) { + return undefined; + } + if (controller._pulling === true) { + controller._pullAgain = true; + return undefined; + } + assert(controller._pullAgain === false); + controller._pulling = true; + var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]); + pullPromise.then(function () { + controller._pulling = false; + if (controller._pullAgain === true) { + controller._pullAgain = false; + return ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + return undefined; + }, function (e) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, e); + }).catch(rethrowAssertionErrorRejection); + return undefined; + } + function ReadableStreamDefaultControllerShouldCallPull(controller) { + var stream = controller._controlledReadableStream; + if (stream._state === 'closed' || stream._state === 'errored') { + return false; + } + if (controller._closeRequested === true) { + return false; + } + if (controller._started === false) { + return false; + } + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + if (desiredSize > 0) { + return true; + } + return false; + } + function ReadableStreamDefaultControllerClose(controller) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + controller._closeRequested = true; + if (controller._queue.length === 0) { + ReadableStreamClose(stream); + } + } + function ReadableStreamDefaultControllerEnqueue(controller, chunk) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + ReadableStreamFulfillReadRequest(stream, chunk, false); + } else { + var chunkSize = 1; + if (controller._strategySize !== undefined) { + var strategySize = controller._strategySize; + try { + chunkSize = strategySize(chunk); + } catch (chunkSizeE) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE); + throw chunkSizeE; + } + } + try { + EnqueueValueWithSize(controller, chunk, chunkSize); + } catch (enqueueE) { + ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE); + throw enqueueE; + } + } + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + return undefined; + } + function ReadableStreamDefaultControllerError(controller, e) { + var stream = controller._controlledReadableStream; + assert(stream._state === 'readable'); + ResetQueue(controller); + ReadableStreamError(stream, e); + } + function ReadableStreamDefaultControllerErrorIfNeeded(controller, e) { + if (controller._controlledReadableStream._state === 'readable') { + ReadableStreamDefaultControllerError(controller, e); + } + } + function ReadableStreamDefaultControllerGetDesiredSize(controller) { + var stream = controller._controlledReadableStream; + var state = stream._state; + if (state === 'errored') { + return null; + } + if (state === 'closed') { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; + } + var ReadableStreamBYOBRequest = function () { + function ReadableStreamBYOBRequest(controller, view) { + _classCallCheck(this, ReadableStreamBYOBRequest); + this._associatedReadableByteStreamController = controller; + this._view = view; + } + _createClass(ReadableStreamBYOBRequest, [{ + key: 'respond', + value: function respond(bytesWritten) { + if (IsReadableStreamBYOBRequest(this) === false) { + throw byobRequestBrandCheckException('respond'); + } + if (this._associatedReadableByteStreamController === undefined) { + throw new TypeError('This BYOB request has been invalidated'); + } + ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten); + } + }, { + key: 'respondWithNewView', + value: function respondWithNewView(view) { + if (IsReadableStreamBYOBRequest(this) === false) { + throw byobRequestBrandCheckException('respond'); + } + if (this._associatedReadableByteStreamController === undefined) { + throw new TypeError('This BYOB request has been invalidated'); + } + if (!ArrayBuffer.isView(view)) { + throw new TypeError('You can only respond with array buffer views'); + } + ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view); + } + }, { + key: 'view', + get: function get() { + return this._view; + } + }]); + return ReadableStreamBYOBRequest; + }(); + var ReadableByteStreamController = function () { + function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) { + _classCallCheck(this, ReadableByteStreamController); + if (IsReadableStream(stream) === false) { + throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source'); + } + if (stream._readableStreamController !== undefined) { + throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source'); + } + this._controlledReadableStream = stream; + this._underlyingByteSource = underlyingByteSource; + this._pullAgain = false; + this._pulling = false; + ReadableByteStreamControllerClearPendingPullIntos(this); + this._queue = this._queueTotalSize = undefined; + ResetQueue(this); + this._closeRequested = false; + this._started = false; + this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark); + var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize; + if (autoAllocateChunkSize !== undefined) { + if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) { + throw new RangeError('autoAllocateChunkSize must be a positive integer'); + } + } + this._autoAllocateChunkSize = autoAllocateChunkSize; + this._pendingPullIntos = []; + var controller = this; + var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]); + Promise.resolve(startResult).then(function () { + controller._started = true; + assert(controller._pulling === false); + assert(controller._pullAgain === false); + ReadableByteStreamControllerCallPullIfNeeded(controller); + }, function (r) { + if (stream._state === 'readable') { + ReadableByteStreamControllerError(controller, r); + } + }).catch(rethrowAssertionErrorRejection); + } + _createClass(ReadableByteStreamController, [{ + key: 'close', + value: function close() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('close'); + } + if (this._closeRequested === true) { + throw new TypeError('The stream has already been closed; do not close it again!'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed'); + } + ReadableByteStreamControllerClose(this); + } + }, { + key: 'enqueue', + value: function enqueue(chunk) { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('enqueue'); + } + if (this._closeRequested === true) { + throw new TypeError('stream is closed or draining'); + } + var state = this._controlledReadableStream._state; + if (state !== 'readable') { + throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to'); + } + if (!ArrayBuffer.isView(chunk)) { + throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController'); + } + ReadableByteStreamControllerEnqueue(this, chunk); + } + }, { + key: 'error', + value: function error(e) { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('error'); + } + var stream = this._controlledReadableStream; + if (stream._state !== 'readable') { + throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored'); + } + ReadableByteStreamControllerError(this, e); + } + }, { + key: '__cancelSteps', + value: function __cancelSteps(reason) { + if (this._pendingPullIntos.length > 0) { + var firstDescriptor = this._pendingPullIntos[0]; + firstDescriptor.bytesFilled = 0; + } + ResetQueue(this); + return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]); + } + }, { + key: '__pullSteps', + value: function __pullSteps() { + var stream = this._controlledReadableStream; + assert(ReadableStreamHasDefaultReader(stream) === true); + if (this._queueTotalSize > 0) { + assert(ReadableStreamGetNumReadRequests(stream) === 0); + var entry = this._queue.shift(); + this._queueTotalSize -= entry.byteLength; + ReadableByteStreamControllerHandleQueueDrain(this); + var view = void 0; + try { + view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength); + } catch (viewE) { + return Promise.reject(viewE); + } + return Promise.resolve(CreateIterResultObject(view, false)); + } + var autoAllocateChunkSize = this._autoAllocateChunkSize; + if (autoAllocateChunkSize !== undefined) { + var buffer = void 0; + try { + buffer = new ArrayBuffer(autoAllocateChunkSize); + } catch (bufferE) { + return Promise.reject(bufferE); + } + var pullIntoDescriptor = { + buffer: buffer, + byteOffset: 0, + byteLength: autoAllocateChunkSize, + bytesFilled: 0, + elementSize: 1, + ctor: Uint8Array, + readerType: 'default' + }; + this._pendingPullIntos.push(pullIntoDescriptor); + } + var promise = ReadableStreamAddReadRequest(stream); + ReadableByteStreamControllerCallPullIfNeeded(this); + return promise; + } + }, { + key: 'byobRequest', + get: function get() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('byobRequest'); + } + if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) { + var firstDescriptor = this._pendingPullIntos[0]; + var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled); + this._byobRequest = new ReadableStreamBYOBRequest(this, view); + } + return this._byobRequest; + } + }, { + key: 'desiredSize', + get: function get() { + if (IsReadableByteStreamController(this) === false) { + throw byteStreamControllerBrandCheckException('desiredSize'); + } + return ReadableByteStreamControllerGetDesiredSize(this); + } + }]); + return ReadableByteStreamController; + }(); + function IsReadableByteStreamController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) { + return false; + } + return true; + } + function IsReadableStreamBYOBRequest(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) { + return false; + } + return true; + } + function ReadableByteStreamControllerCallPullIfNeeded(controller) { + var shouldPull = ReadableByteStreamControllerShouldCallPull(controller); + if (shouldPull === false) { + return undefined; + } + if (controller._pulling === true) { + controller._pullAgain = true; + return undefined; + } + assert(controller._pullAgain === false); + controller._pulling = true; + var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]); + pullPromise.then(function () { + controller._pulling = false; + if (controller._pullAgain === true) { + controller._pullAgain = false; + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + }, function (e) { + if (controller._controlledReadableStream._state === 'readable') { + ReadableByteStreamControllerError(controller, e); + } + }).catch(rethrowAssertionErrorRejection); + return undefined; + } + function ReadableByteStreamControllerClearPendingPullIntos(controller) { + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + controller._pendingPullIntos = []; + } + function ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) { + assert(stream._state !== 'errored', 'state must not be errored'); + var done = false; + if (stream._state === 'closed') { + assert(pullIntoDescriptor.bytesFilled === 0); + done = true; + } + var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + if (pullIntoDescriptor.readerType === 'default') { + ReadableStreamFulfillReadRequest(stream, filledView, done); + } else { + assert(pullIntoDescriptor.readerType === 'byob'); + ReadableStreamFulfillReadIntoRequest(stream, filledView, done); + } + } + function ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) { + var bytesFilled = pullIntoDescriptor.bytesFilled; + var elementSize = pullIntoDescriptor.elementSize; + assert(bytesFilled <= pullIntoDescriptor.byteLength); + assert(bytesFilled % elementSize === 0); + return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize); + } + function ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) { + controller._queue.push({ + buffer: buffer, + byteOffset: byteOffset, + byteLength: byteLength + }); + controller._queueTotalSize += byteLength; + } + function ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) { + var elementSize = pullIntoDescriptor.elementSize; + var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize; + var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled); + var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy; + var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize; + var totalBytesToCopyRemaining = maxBytesToCopy; + var ready = false; + if (maxAlignedBytes > currentAlignedBytes) { + totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled; + ready = true; + } + var queue = controller._queue; + while (totalBytesToCopyRemaining > 0) { + var headOfQueue = queue[0]; + var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength); + var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy); + if (headOfQueue.byteLength === bytesToCopy) { + queue.shift(); + } else { + headOfQueue.byteOffset += bytesToCopy; + headOfQueue.byteLength -= bytesToCopy; + } + controller._queueTotalSize -= bytesToCopy; + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor); + totalBytesToCopyRemaining -= bytesToCopy; + } + if (ready === false) { + assert(controller._queueTotalSize === 0, 'queue must be empty'); + assert(pullIntoDescriptor.bytesFilled > 0); + assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize); + } + return ready; + } + function ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) { + assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor); + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + pullIntoDescriptor.bytesFilled += size; + } + function ReadableByteStreamControllerHandleQueueDrain(controller) { + assert(controller._controlledReadableStream._state === 'readable'); + if (controller._queueTotalSize === 0 && controller._closeRequested === true) { + ReadableStreamClose(controller._controlledReadableStream); + } else { + ReadableByteStreamControllerCallPullIfNeeded(controller); + } + } + function ReadableByteStreamControllerInvalidateBYOBRequest(controller) { + if (controller._byobRequest === undefined) { + return; + } + controller._byobRequest._associatedReadableByteStreamController = undefined; + controller._byobRequest._view = undefined; + controller._byobRequest = undefined; + } + function ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) { + assert(controller._closeRequested === false); + while (controller._pendingPullIntos.length > 0) { + if (controller._queueTotalSize === 0) { + return; + } + var pullIntoDescriptor = controller._pendingPullIntos[0]; + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { + ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); + } + } + } + function ReadableByteStreamControllerPullInto(controller, view) { + var stream = controller._controlledReadableStream; + var elementSize = 1; + if (view.constructor !== DataView) { + elementSize = view.constructor.BYTES_PER_ELEMENT; + } + var ctor = view.constructor; + var pullIntoDescriptor = { + buffer: view.buffer, + byteOffset: view.byteOffset, + byteLength: view.byteLength, + bytesFilled: 0, + elementSize: elementSize, + ctor: ctor, + readerType: 'byob' + }; + if (controller._pendingPullIntos.length > 0) { + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + controller._pendingPullIntos.push(pullIntoDescriptor); + return ReadableStreamAddReadIntoRequest(stream); + } + if (stream._state === 'closed') { + var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0); + return Promise.resolve(CreateIterResultObject(emptyView, true)); + } + if (controller._queueTotalSize > 0) { + if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) { + var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor); + ReadableByteStreamControllerHandleQueueDrain(controller); + return Promise.resolve(CreateIterResultObject(filledView, false)); + } + if (controller._closeRequested === true) { + var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); + ReadableByteStreamControllerError(controller, e); + return Promise.reject(e); + } + } + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + controller._pendingPullIntos.push(pullIntoDescriptor); + var promise = ReadableStreamAddReadIntoRequest(stream); + ReadableByteStreamControllerCallPullIfNeeded(controller); + return promise; + } + function ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) { + firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer); + assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0'); + var stream = controller._controlledReadableStream; + if (ReadableStreamHasBYOBReader(stream) === true) { + while (ReadableStreamGetNumReadIntoRequests(stream) > 0) { + var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller); + ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor); + } + } + } + function ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) { + if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) { + throw new RangeError('bytesWritten out of range'); + } + ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor); + if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) { + return; + } + ReadableByteStreamControllerShiftPendingPullInto(controller); + var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize; + if (remainderSize > 0) { + var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled; + var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end); + ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength); + } + pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer); + pullIntoDescriptor.bytesFilled -= remainderSize; + ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } + function ReadableByteStreamControllerRespondInternal(controller, bytesWritten) { + var firstDescriptor = controller._pendingPullIntos[0]; + var stream = controller._controlledReadableStream; + if (stream._state === 'closed') { + if (bytesWritten !== 0) { + throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream'); + } + ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor); + } else { + assert(stream._state === 'readable'); + ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor); + } + } + function ReadableByteStreamControllerShiftPendingPullInto(controller) { + var descriptor = controller._pendingPullIntos.shift(); + ReadableByteStreamControllerInvalidateBYOBRequest(controller); + return descriptor; + } + function ReadableByteStreamControllerShouldCallPull(controller) { + var stream = controller._controlledReadableStream; + if (stream._state !== 'readable') { + return false; + } + if (controller._closeRequested === true) { + return false; + } + if (controller._started === false) { + return false; + } + if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) { + return true; + } + if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) { + return true; + } + return false; + } + function ReadableByteStreamControllerClose(controller) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + if (controller._queueTotalSize > 0) { + controller._closeRequested = true; + return; + } + if (controller._pendingPullIntos.length > 0) { + var firstPendingPullInto = controller._pendingPullIntos[0]; + if (firstPendingPullInto.bytesFilled > 0) { + var e = new TypeError('Insufficient bytes to fill elements in the given buffer'); + ReadableByteStreamControllerError(controller, e); + throw e; + } + } + ReadableStreamClose(stream); + } + function ReadableByteStreamControllerEnqueue(controller, chunk) { + var stream = controller._controlledReadableStream; + assert(controller._closeRequested === false); + assert(stream._state === 'readable'); + var buffer = chunk.buffer; + var byteOffset = chunk.byteOffset; + var byteLength = chunk.byteLength; + var transferredBuffer = TransferArrayBuffer(buffer); + if (ReadableStreamHasDefaultReader(stream) === true) { + if (ReadableStreamGetNumReadRequests(stream) === 0) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } else { + assert(controller._queue.length === 0); + var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength); + ReadableStreamFulfillReadRequest(stream, transferredView, false); + } + } else if (ReadableStreamHasBYOBReader(stream) === true) { + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller); + } else { + assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked'); + ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength); + } + } + function ReadableByteStreamControllerError(controller, e) { + var stream = controller._controlledReadableStream; + assert(stream._state === 'readable'); + ReadableByteStreamControllerClearPendingPullIntos(controller); + ResetQueue(controller); + ReadableStreamError(stream, e); + } + function ReadableByteStreamControllerGetDesiredSize(controller) { + var stream = controller._controlledReadableStream; + var state = stream._state; + if (state === 'errored') { + return null; + } + if (state === 'closed') { + return 0; + } + return controller._strategyHWM - controller._queueTotalSize; + } + function ReadableByteStreamControllerRespond(controller, bytesWritten) { + bytesWritten = Number(bytesWritten); + if (IsFiniteNonNegativeNumber(bytesWritten) === false) { + throw new RangeError('bytesWritten must be a finite'); + } + assert(controller._pendingPullIntos.length > 0); + ReadableByteStreamControllerRespondInternal(controller, bytesWritten); + } + function ReadableByteStreamControllerRespondWithNewView(controller, view) { + assert(controller._pendingPullIntos.length > 0); + var firstDescriptor = controller._pendingPullIntos[0]; + if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) { + throw new RangeError('The region specified by view does not match byobRequest'); + } + if (firstDescriptor.byteLength !== view.byteLength) { + throw new RangeError('The buffer of view has different capacity than byobRequest'); + } + firstDescriptor.buffer = view.buffer; + ReadableByteStreamControllerRespondInternal(controller, view.byteLength); + } + function streamBrandCheckException(name) { + return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream'); + } + function readerLockException(name) { + return new TypeError('Cannot ' + name + ' a stream using a released reader'); + } + function defaultReaderBrandCheckException(name) { + return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader'); + } + function defaultReaderClosedPromiseInitialize(reader) { + reader._closedPromise = new Promise(function (resolve, reject) { + reader._closedPromise_resolve = resolve; + reader._closedPromise_reject = reject; + }); + } + function defaultReaderClosedPromiseInitializeAsRejected(reader, reason) { + reader._closedPromise = Promise.reject(reason); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseInitializeAsResolved(reader) { + reader._closedPromise = Promise.resolve(undefined); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseReject(reader, reason) { + assert(reader._closedPromise_resolve !== undefined); + assert(reader._closedPromise_reject !== undefined); + reader._closedPromise_reject(reason); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function defaultReaderClosedPromiseResetToRejected(reader, reason) { + assert(reader._closedPromise_resolve === undefined); + assert(reader._closedPromise_reject === undefined); + reader._closedPromise = Promise.reject(reason); + } + function defaultReaderClosedPromiseResolve(reader) { + assert(reader._closedPromise_resolve !== undefined); + assert(reader._closedPromise_reject !== undefined); + reader._closedPromise_resolve(undefined); + reader._closedPromise_resolve = undefined; + reader._closedPromise_reject = undefined; + } + function byobReaderBrandCheckException(name) { + return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader'); + } + function defaultControllerBrandCheckException(name) { + return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController'); + } + function byobRequestBrandCheckException(name) { + return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest'); + } + function byteStreamControllerBrandCheckException(name) { + return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController'); + } + function ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) { + try { + Promise.prototype.then.call(promise, undefined, function () {}); + } catch (e) {} + } +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var transformStream = __w_pdfjs_require__(6); + var readableStream = __w_pdfjs_require__(4); + var writableStream = __w_pdfjs_require__(2); + exports.TransformStream = transformStream.TransformStream; + exports.ReadableStream = readableStream.ReadableStream; + exports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed; + exports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose; + exports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue; + exports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError; + exports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize; + exports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter; + exports.IsWritableStream = writableStream.IsWritableStream; + exports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked; + exports.WritableStream = writableStream.WritableStream; + exports.WritableStreamAbort = writableStream.WritableStreamAbort; + exports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError; + exports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation; + exports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease; + exports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite; +}, function (module, exports, __w_pdfjs_require__) { + "use strict"; + + var _createClass = function () { + function defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + return function (Constructor, protoProps, staticProps) { + if (protoProps) defineProperties(Constructor.prototype, protoProps); + if (staticProps) defineProperties(Constructor, staticProps); + return Constructor; + }; + }(); + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + var _require = __w_pdfjs_require__(1), + assert = _require.assert; + var _require2 = __w_pdfjs_require__(0), + InvokeOrNoop = _require2.InvokeOrNoop, + PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback, + PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop, + typeIsObject = _require2.typeIsObject; + var _require3 = __w_pdfjs_require__(4), + ReadableStream = _require3.ReadableStream, + ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose, + ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue, + ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError, + ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize; + var _require4 = __w_pdfjs_require__(2), + WritableStream = _require4.WritableStream, + WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError; + function TransformStreamCloseReadable(transformStream) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + if (transformStream._readableClosed === true) { + throw new TypeError('Readable side is already closed'); + } + TransformStreamCloseReadableInternal(transformStream); + } + function TransformStreamEnqueueToReadable(transformStream, chunk) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + if (transformStream._readableClosed === true) { + throw new TypeError('Readable side is already closed'); + } + var controller = transformStream._readableController; + try { + ReadableStreamDefaultControllerEnqueue(controller, chunk); + } catch (e) { + transformStream._readableClosed = true; + TransformStreamErrorIfNeeded(transformStream, e); + throw transformStream._storedError; + } + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + var maybeBackpressure = desiredSize <= 0; + if (maybeBackpressure === true && transformStream._backpressure === false) { + TransformStreamSetBackpressure(transformStream, true); + } + } + function TransformStreamError(transformStream, e) { + if (transformStream._errored === true) { + throw new TypeError('TransformStream is already errored'); + } + TransformStreamErrorInternal(transformStream, e); + } + function TransformStreamCloseReadableInternal(transformStream) { + assert(transformStream._errored === false); + assert(transformStream._readableClosed === false); + try { + ReadableStreamDefaultControllerClose(transformStream._readableController); + } catch (e) { + assert(false); + } + transformStream._readableClosed = true; + } + function TransformStreamErrorIfNeeded(transformStream, e) { + if (transformStream._errored === false) { + TransformStreamErrorInternal(transformStream, e); + } + } + function TransformStreamErrorInternal(transformStream, e) { + assert(transformStream._errored === false); + transformStream._errored = true; + transformStream._storedError = e; + if (transformStream._writableDone === false) { + WritableStreamDefaultControllerError(transformStream._writableController, e); + } + if (transformStream._readableClosed === false) { + ReadableStreamDefaultControllerError(transformStream._readableController, e); + } + } + function TransformStreamReadableReadyPromise(transformStream) { + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + if (transformStream._backpressure === false) { + return Promise.resolve(); + } + assert(transformStream._backpressure === true, '_backpressure should have been initialized'); + return transformStream._backpressureChangePromise; + } + function TransformStreamSetBackpressure(transformStream, backpressure) { + assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed'); + if (transformStream._backpressureChangePromise !== undefined) { + transformStream._backpressureChangePromise_resolve(backpressure); + } + transformStream._backpressureChangePromise = new Promise(function (resolve) { + transformStream._backpressureChangePromise_resolve = resolve; + }); + transformStream._backpressureChangePromise.then(function (resolution) { + assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed'); + }); + transformStream._backpressure = backpressure; + } + function TransformStreamDefaultTransform(chunk, transformStreamController) { + var transformStream = transformStreamController._controlledTransformStream; + TransformStreamEnqueueToReadable(transformStream, chunk); + return Promise.resolve(); + } + function TransformStreamTransform(transformStream, chunk) { + assert(transformStream._errored === false); + assert(transformStream._transforming === false); + assert(transformStream._backpressure === false); + transformStream._transforming = true; + var transformer = transformStream._transformer; + var controller = transformStream._transformStreamController; + var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]); + return transformPromise.then(function () { + transformStream._transforming = false; + return TransformStreamReadableReadyPromise(transformStream); + }, function (e) { + TransformStreamErrorIfNeeded(transformStream, e); + return Promise.reject(e); + }); + } + function IsTransformStreamDefaultController(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) { + return false; + } + return true; + } + function IsTransformStream(x) { + if (!typeIsObject(x)) { + return false; + } + if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) { + return false; + } + return true; + } + var TransformStreamSink = function () { + function TransformStreamSink(transformStream, startPromise) { + _classCallCheck(this, TransformStreamSink); + this._transformStream = transformStream; + this._startPromise = startPromise; + } + _createClass(TransformStreamSink, [{ + key: 'start', + value: function start(c) { + var transformStream = this._transformStream; + transformStream._writableController = c; + return this._startPromise.then(function () { + return TransformStreamReadableReadyPromise(transformStream); + }); + } + }, { + key: 'write', + value: function write(chunk) { + var transformStream = this._transformStream; + return TransformStreamTransform(transformStream, chunk); + } + }, { + key: 'abort', + value: function abort() { + var transformStream = this._transformStream; + transformStream._writableDone = true; + TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted')); + } + }, { + key: 'close', + value: function close() { + var transformStream = this._transformStream; + assert(transformStream._transforming === false); + transformStream._writableDone = true; + var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]); + return flushPromise.then(function () { + if (transformStream._errored === true) { + return Promise.reject(transformStream._storedError); + } + if (transformStream._readableClosed === false) { + TransformStreamCloseReadableInternal(transformStream); + } + return Promise.resolve(); + }).catch(function (r) { + TransformStreamErrorIfNeeded(transformStream, r); + return Promise.reject(transformStream._storedError); + }); + } + }]); + return TransformStreamSink; + }(); + var TransformStreamSource = function () { + function TransformStreamSource(transformStream, startPromise) { + _classCallCheck(this, TransformStreamSource); + this._transformStream = transformStream; + this._startPromise = startPromise; + } + _createClass(TransformStreamSource, [{ + key: 'start', + value: function start(c) { + var transformStream = this._transformStream; + transformStream._readableController = c; + return this._startPromise.then(function () { + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + if (transformStream._backpressure === true) { + return Promise.resolve(); + } + assert(transformStream._backpressure === false, '_backpressure should have been initialized'); + return transformStream._backpressureChangePromise; + }); + } + }, { + key: 'pull', + value: function pull() { + var transformStream = this._transformStream; + assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false'); + assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized'); + TransformStreamSetBackpressure(transformStream, false); + return transformStream._backpressureChangePromise; + } + }, { + key: 'cancel', + value: function cancel() { + var transformStream = this._transformStream; + transformStream._readableClosed = true; + TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled')); + } + }]); + return TransformStreamSource; + }(); + var TransformStreamDefaultController = function () { + function TransformStreamDefaultController(transformStream) { + _classCallCheck(this, TransformStreamDefaultController); + if (IsTransformStream(transformStream) === false) { + throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance'); + } + if (transformStream._transformStreamController !== undefined) { + throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor'); + } + this._controlledTransformStream = transformStream; + } + _createClass(TransformStreamDefaultController, [{ + key: 'enqueue', + value: function enqueue(chunk) { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('enqueue'); + } + TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk); + } + }, { + key: 'close', + value: function close() { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('close'); + } + TransformStreamCloseReadable(this._controlledTransformStream); + } + }, { + key: 'error', + value: function error(reason) { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('error'); + } + TransformStreamError(this._controlledTransformStream, reason); + } + }, { + key: 'desiredSize', + get: function get() { + if (IsTransformStreamDefaultController(this) === false) { + throw defaultControllerBrandCheckException('desiredSize'); + } + var transformStream = this._controlledTransformStream; + var readableController = transformStream._readableController; + return ReadableStreamDefaultControllerGetDesiredSize(readableController); + } + }]); + return TransformStreamDefaultController; + }(); + var TransformStream = function () { + function TransformStream() { + var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + _classCallCheck(this, TransformStream); + this._transformer = transformer; + var readableStrategy = transformer.readableStrategy, + writableStrategy = transformer.writableStrategy; + this._transforming = false; + this._errored = false; + this._storedError = undefined; + this._writableController = undefined; + this._readableController = undefined; + this._transformStreamController = undefined; + this._writableDone = false; + this._readableClosed = false; + this._backpressure = undefined; + this._backpressureChangePromise = undefined; + this._backpressureChangePromise_resolve = undefined; + this._transformStreamController = new TransformStreamDefaultController(this); + var startPromise_resolve = void 0; + var startPromise = new Promise(function (resolve) { + startPromise_resolve = resolve; + }); + var source = new TransformStreamSource(this, startPromise); + this._readable = new ReadableStream(source, readableStrategy); + var sink = new TransformStreamSink(this, startPromise); + this._writable = new WritableStream(sink, writableStrategy); + assert(this._writableController !== undefined); + assert(this._readableController !== undefined); + var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController); + TransformStreamSetBackpressure(this, desiredSize <= 0); + var transformStream = this; + var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]); + startPromise_resolve(startResult); + startPromise.catch(function (e) { + if (transformStream._errored === false) { + transformStream._errored = true; + transformStream._storedError = e; + } + }); + } + _createClass(TransformStream, [{ + key: 'readable', + get: function get() { + if (IsTransformStream(this) === false) { + throw streamBrandCheckException('readable'); + } + return this._readable; + } + }, { + key: 'writable', + get: function get() { + if (IsTransformStream(this) === false) { + throw streamBrandCheckException('writable'); + } + return this._writable; + } + }]); + return TransformStream; + }(); + module.exports = { TransformStream: TransformStream }; + function defaultControllerBrandCheckException(name) { + return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController'); + } + function streamBrandCheckException(name) { + return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream'); + } +}, function (module, exports, __w_pdfjs_require__) { + module.exports = __w_pdfjs_require__(5); +}])); + +/***/ }), +/* 19 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = undefined; + +var _util = __w_pdfjs_require__(0); + +var _obj = __w_pdfjs_require__(15); + +var _primitives = __w_pdfjs_require__(1); + +var _colorspace = __w_pdfjs_require__(3); + +var _evaluator = __w_pdfjs_require__(13); + +var _stream = __w_pdfjs_require__(2); + +function AnnotationFactory() {} +AnnotationFactory.prototype = { + create: function AnnotationFactory_create(xref, ref, pdfManager, idFactory) { + var dict = xref.fetchIfRef(ref); + if (!(0, _primitives.isDict)(dict)) { + return; + } + var id = (0, _primitives.isRef)(ref) ? ref.toString() : 'annot_' + idFactory.createObjId(); + var subtype = dict.get('Subtype'); + subtype = (0, _primitives.isName)(subtype) ? subtype.name : null; + var parameters = { + xref: xref, + dict: dict, + ref: (0, _primitives.isRef)(ref) ? ref : null, + subtype: subtype, + id: id, + pdfManager: pdfManager + }; + switch (subtype) { + case 'Link': + return new LinkAnnotation(parameters); + case 'Text': + return new TextAnnotation(parameters); + case 'Widget': + var fieldType = _util.Util.getInheritableProperty(dict, 'FT'); + fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null; + switch (fieldType) { + case 'Tx': + return new TextWidgetAnnotation(parameters); + case 'Btn': + return new ButtonWidgetAnnotation(parameters); + case 'Ch': + return new ChoiceWidgetAnnotation(parameters); + } + (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + 'falling back to base field type.'); + return new WidgetAnnotation(parameters); + case 'Popup': + return new PopupAnnotation(parameters); + case 'Line': + return new LineAnnotation(parameters); + case 'Highlight': + return new HighlightAnnotation(parameters); + case 'Underline': + return new UnderlineAnnotation(parameters); + case 'Squiggly': + return new SquigglyAnnotation(parameters); + case 'StrikeOut': + return new StrikeOutAnnotation(parameters); + case 'FileAttachment': + return new FileAttachmentAnnotation(parameters); + default: + if (!subtype) { + (0, _util.warn)('Annotation is missing the required /Subtype.'); + } else { + (0, _util.warn)('Unimplemented annotation type "' + subtype + '", ' + 'falling back to base annotation.'); + } + return new Annotation(parameters); + } + } +}; +var Annotation = function AnnotationClosure() { + function getTransformMatrix(rect, bbox, matrix) { + var bounds = _util.Util.getAxialAlignedBoundingBox(bbox, matrix); + var minX = bounds[0]; + var minY = bounds[1]; + var maxX = bounds[2]; + var maxY = bounds[3]; + if (minX === maxX || minY === maxY) { + return [1, 0, 0, 1, rect[0], rect[1]]; + } + var xRatio = (rect[2] - rect[0]) / (maxX - minX); + var yRatio = (rect[3] - rect[1]) / (maxY - minY); + return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio]; + } + function Annotation(params) { + var dict = params.dict; + this.setFlags(dict.get('F')); + this.setRectangle(dict.getArray('Rect')); + this.setColor(dict.getArray('C')); + this.setBorderStyle(dict); + this.setAppearance(dict); + this.data = {}; + this.data.id = params.id; + this.data.subtype = params.subtype; + this.data.annotationFlags = this.flags; + this.data.rect = this.rectangle; + this.data.color = this.color; + this.data.borderStyle = this.borderStyle; + this.data.hasAppearance = !!this.appearance; + } + Annotation.prototype = { + _hasFlag: function Annotation_hasFlag(flags, flag) { + return !!(flags & flag); + }, + _isViewable: function Annotation_isViewable(flags) { + return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN) && !this._hasFlag(flags, _util.AnnotationFlag.NOVIEW); + }, + _isPrintable: function AnnotationFlag_isPrintable(flags) { + return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, _util.AnnotationFlag.HIDDEN); + }, + get viewable() { + if (this.flags === 0) { + return true; + } + return this._isViewable(this.flags); + }, + get printable() { + if (this.flags === 0) { + return false; + } + return this._isPrintable(this.flags); + }, + setFlags: function Annotation_setFlags(flags) { + this.flags = (0, _util.isInt)(flags) && flags > 0 ? flags : 0; + }, + hasFlag: function Annotation_hasFlag(flag) { + return this._hasFlag(this.flags, flag); + }, + setRectangle: function Annotation_setRectangle(rectangle) { + if ((0, _util.isArray)(rectangle) && rectangle.length === 4) { + this.rectangle = _util.Util.normalizeRect(rectangle); + } else { + this.rectangle = [0, 0, 0, 0]; + } + }, + setColor: function Annotation_setColor(color) { + var rgbColor = new Uint8Array(3); + if (!(0, _util.isArray)(color)) { + this.color = rgbColor; + return; + } + switch (color.length) { + case 0: + this.color = null; + break; + case 1: + _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0); + this.color = rgbColor; + break; + case 3: + _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0); + this.color = rgbColor; + break; + case 4: + _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0); + this.color = rgbColor; + break; + default: + this.color = rgbColor; + break; + } + }, + setBorderStyle: function Annotation_setBorderStyle(borderStyle) { + this.borderStyle = new AnnotationBorderStyle(); + if (!(0, _primitives.isDict)(borderStyle)) { + return; + } + if (borderStyle.has('BS')) { + var dict = borderStyle.get('BS'); + var dictType = dict.get('Type'); + if (!dictType || (0, _primitives.isName)(dictType, 'Border')) { + this.borderStyle.setWidth(dict.get('W')); + this.borderStyle.setStyle(dict.get('S')); + this.borderStyle.setDashArray(dict.getArray('D')); + } + } else if (borderStyle.has('Border')) { + var array = borderStyle.getArray('Border'); + if ((0, _util.isArray)(array) && array.length >= 3) { + this.borderStyle.setHorizontalCornerRadius(array[0]); + this.borderStyle.setVerticalCornerRadius(array[1]); + this.borderStyle.setWidth(array[2]); + if (array.length === 4) { + this.borderStyle.setDashArray(array[3]); + } + } + } else { + this.borderStyle.setWidth(0); + } + }, + setAppearance: function Annotation_setAppearance(dict) { + this.appearance = null; + var appearanceStates = dict.get('AP'); + if (!(0, _primitives.isDict)(appearanceStates)) { + return; + } + var normalAppearanceState = appearanceStates.get('N'); + if ((0, _primitives.isStream)(normalAppearanceState)) { + this.appearance = normalAppearanceState; + return; + } + if (!(0, _primitives.isDict)(normalAppearanceState)) { + return; + } + var as = dict.get('AS'); + if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) { + return; + } + this.appearance = normalAppearanceState.get(as.name); + }, + _preparePopup: function Annotation_preparePopup(dict) { + if (!dict.has('C')) { + this.data.color = null; + } + this.data.hasPopup = dict.has('Popup'); + this.data.title = (0, _util.stringToPDFString)(dict.get('T') || ''); + this.data.contents = (0, _util.stringToPDFString)(dict.get('Contents') || ''); + }, + loadResources: function Annotation_loadResources(keys) { + return this.appearance.dict.getAsync('Resources').then(function (resources) { + if (!resources) { + return; + } + var objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref); + return objectLoader.load().then(function () { + return resources; + }); + }); + }, + getOperatorList: function Annotation_getOperatorList(evaluator, task, renderForms) { + var _this = this; + + if (!this.appearance) { + return Promise.resolve(new _evaluator.OperatorList()); + } + var data = this.data; + var appearanceDict = this.appearance.dict; + var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']); + var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1]; + var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0]; + var transform = getTransformMatrix(data.rect, bbox, matrix); + return resourcesPromise.then(function (resources) { + var opList = new _evaluator.OperatorList(); + opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]); + return evaluator.getOperatorList({ + stream: _this.appearance, + task: task, + resources: resources, + operatorList: opList + }).then(function () { + opList.addOp(_util.OPS.endAnnotation, []); + _this.appearance.reset(); + return opList; + }); + }); + } + }; + return Annotation; +}(); +var AnnotationBorderStyle = function AnnotationBorderStyleClosure() { + function AnnotationBorderStyle() { + this.width = 1; + this.style = _util.AnnotationBorderStyleType.SOLID; + this.dashArray = [3]; + this.horizontalCornerRadius = 0; + this.verticalCornerRadius = 0; + } + AnnotationBorderStyle.prototype = { + setWidth: function AnnotationBorderStyle_setWidth(width) { + if (width === (width | 0)) { + this.width = width; + } + }, + setStyle: function AnnotationBorderStyle_setStyle(style) { + if (!style) { + return; + } + switch (style.name) { + case 'S': + this.style = _util.AnnotationBorderStyleType.SOLID; + break; + case 'D': + this.style = _util.AnnotationBorderStyleType.DASHED; + break; + case 'B': + this.style = _util.AnnotationBorderStyleType.BEVELED; + break; + case 'I': + this.style = _util.AnnotationBorderStyleType.INSET; + break; + case 'U': + this.style = _util.AnnotationBorderStyleType.UNDERLINE; + break; + default: + break; + } + }, + setDashArray: function AnnotationBorderStyle_setDashArray(dashArray) { + if ((0, _util.isArray)(dashArray) && dashArray.length > 0) { + var isValid = true; + var allZeros = true; + for (var i = 0, len = dashArray.length; i < len; i++) { + var element = dashArray[i]; + var validNumber = +element >= 0; + if (!validNumber) { + isValid = false; + break; + } else if (element > 0) { + allZeros = false; + } + } + if (isValid && !allZeros) { + this.dashArray = dashArray; + } else { + this.width = 0; + } + } else if (dashArray) { + this.width = 0; + } + }, + setHorizontalCornerRadius: function AnnotationBorderStyle_setHorizontalCornerRadius(radius) { + if (radius === (radius | 0)) { + this.horizontalCornerRadius = radius; + } + }, + setVerticalCornerRadius: function AnnotationBorderStyle_setVerticalCornerRadius(radius) { + if (radius === (radius | 0)) { + this.verticalCornerRadius = radius; + } + } + }; + return AnnotationBorderStyle; +}(); +var WidgetAnnotation = function WidgetAnnotationClosure() { + function WidgetAnnotation(params) { + Annotation.call(this, params); + var dict = params.dict; + var data = this.data; + data.annotationType = _util.AnnotationType.WIDGET; + data.fieldName = this._constructFieldName(dict); + data.fieldValue = _util.Util.getInheritableProperty(dict, 'V', true); + data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || ''); + data.defaultAppearance = _util.Util.getInheritableProperty(dict, 'DA') || ''; + var fieldType = _util.Util.getInheritableProperty(dict, 'FT'); + data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null; + this.fieldResources = _util.Util.getInheritableProperty(dict, 'DR') || _primitives.Dict.empty; + data.fieldFlags = _util.Util.getInheritableProperty(dict, 'Ff'); + if (!(0, _util.isInt)(data.fieldFlags) || data.fieldFlags < 0) { + data.fieldFlags = 0; + } + data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY); + if (data.fieldType === 'Sig') { + // 必须注释下面这行才能正常显示签章 + // this.setFlags(_util.AnnotationFlag.HIDDEN); + } + } + _util.Util.inherit(WidgetAnnotation, Annotation, { + _constructFieldName: function WidgetAnnotation_constructFieldName(dict) { + if (!dict.has('T') && !dict.has('Parent')) { + (0, _util.warn)('Unknown field name, falling back to empty field name.'); + return ''; + } + if (!dict.has('Parent')) { + return (0, _util.stringToPDFString)(dict.get('T')); + } + var fieldName = []; + if (dict.has('T')) { + fieldName.unshift((0, _util.stringToPDFString)(dict.get('T'))); + } + var loopDict = dict; + while (loopDict.has('Parent')) { + loopDict = loopDict.get('Parent'); + if (!(0, _primitives.isDict)(loopDict)) { + break; + } + if (loopDict.has('T')) { + fieldName.unshift((0, _util.stringToPDFString)(loopDict.get('T'))); + } + } + return fieldName.join('.'); + }, + hasFieldFlag: function WidgetAnnotation_hasFieldFlag(flag) { + return !!(this.data.fieldFlags & flag); + } + }); + return WidgetAnnotation; +}(); +var TextWidgetAnnotation = function TextWidgetAnnotationClosure() { + function TextWidgetAnnotation(params) { + WidgetAnnotation.call(this, params); + this.data.fieldValue = (0, _util.stringToPDFString)(this.data.fieldValue || ''); + var alignment = _util.Util.getInheritableProperty(params.dict, 'Q'); + if (!(0, _util.isInt)(alignment) || alignment < 0 || alignment > 2) { + alignment = null; + } + this.data.textAlignment = alignment; + var maximumLength = _util.Util.getInheritableProperty(params.dict, 'MaxLen'); + if (!(0, _util.isInt)(maximumLength) || maximumLength < 0) { + maximumLength = null; + } + this.data.maxLen = maximumLength; + this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE); + this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null; + } + _util.Util.inherit(TextWidgetAnnotation, WidgetAnnotation, { + getOperatorList: function TextWidgetAnnotation_getOperatorList(evaluator, task, renderForms) { + var operatorList = new _evaluator.OperatorList(); + if (renderForms) { + return Promise.resolve(operatorList); + } + if (this.appearance) { + return Annotation.prototype.getOperatorList.call(this, evaluator, task, renderForms); + } + if (!this.data.defaultAppearance) { + return Promise.resolve(operatorList); + } + var stream = new _stream.Stream((0, _util.stringToBytes)(this.data.defaultAppearance)); + return evaluator.getOperatorList({ + stream: stream, + task: task, + resources: this.fieldResources, + operatorList: operatorList + }).then(function () { + return operatorList; + }); + } + }); + return TextWidgetAnnotation; +}(); +var ButtonWidgetAnnotation = function ButtonWidgetAnnotationClosure() { + function ButtonWidgetAnnotation(params) { + WidgetAnnotation.call(this, params); + this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + if (this.data.checkBox) { + if (!(0, _primitives.isName)(this.data.fieldValue)) { + return; + } + this.data.fieldValue = this.data.fieldValue.name; + } + this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON); + if (this.data.radioButton) { + this.data.fieldValue = this.data.buttonValue = null; + var fieldParent = params.dict.get('Parent'); + if ((0, _primitives.isDict)(fieldParent) && fieldParent.has('V')) { + var fieldParentValue = fieldParent.get('V'); + if ((0, _primitives.isName)(fieldParentValue)) { + this.data.fieldValue = fieldParentValue.name; + } + } + var appearanceStates = params.dict.get('AP'); + if (!(0, _primitives.isDict)(appearanceStates)) { + return; + } + var normalAppearanceState = appearanceStates.get('N'); + if (!(0, _primitives.isDict)(normalAppearanceState)) { + return; + } + var keys = normalAppearanceState.getKeys(); + for (var i = 0, ii = keys.length; i < ii; i++) { + if (keys[i] !== 'Off') { + this.data.buttonValue = keys[i]; + break; + } + } + } + } + _util.Util.inherit(ButtonWidgetAnnotation, WidgetAnnotation, { + getOperatorList: function ButtonWidgetAnnotation_getOperatorList(evaluator, task, renderForms) { + var operatorList = new _evaluator.OperatorList(); + if (renderForms) { + return Promise.resolve(operatorList); + } + if (this.appearance) { + return Annotation.prototype.getOperatorList.call(this, evaluator, task, renderForms); + } + return Promise.resolve(operatorList); + } + }); + return ButtonWidgetAnnotation; +}(); +var ChoiceWidgetAnnotation = function ChoiceWidgetAnnotationClosure() { + function ChoiceWidgetAnnotation(params) { + WidgetAnnotation.call(this, params); + this.data.options = []; + var options = _util.Util.getInheritableProperty(params.dict, 'Opt'); + if ((0, _util.isArray)(options)) { + var xref = params.xref; + for (var i = 0, ii = options.length; i < ii; i++) { + var option = xref.fetchIfRef(options[i]); + var isOptionArray = (0, _util.isArray)(option); + this.data.options[i] = { + exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option, + displayValue: isOptionArray ? xref.fetchIfRef(option[1]) : option + }; + } + } + if (!(0, _util.isArray)(this.data.fieldValue)) { + this.data.fieldValue = [this.data.fieldValue]; + } + this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO); + this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT); + } + _util.Util.inherit(ChoiceWidgetAnnotation, WidgetAnnotation, { + getOperatorList: function ChoiceWidgetAnnotation_getOperatorList(evaluator, task, renderForms) { + var operatorList = new _evaluator.OperatorList(); + if (renderForms) { + return Promise.resolve(operatorList); + } + return Annotation.prototype.getOperatorList.call(this, evaluator, task, renderForms); + } + }); + return ChoiceWidgetAnnotation; +}(); +var TextAnnotation = function TextAnnotationClosure() { + var DEFAULT_ICON_SIZE = 22; + function TextAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.TEXT; + if (this.data.hasAppearance) { + this.data.name = 'NoIcon'; + } else { + this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE; + this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE; + this.data.name = parameters.dict.has('Name') ? parameters.dict.get('Name').name : 'Note'; + } + this._preparePopup(parameters.dict); + } + _util.Util.inherit(TextAnnotation, Annotation, {}); + return TextAnnotation; +}(); +var LinkAnnotation = function LinkAnnotationClosure() { + function LinkAnnotation(params) { + Annotation.call(this, params); + var data = this.data; + data.annotationType = _util.AnnotationType.LINK; + _obj.Catalog.parseDestDictionary({ + destDict: params.dict, + resultObj: data, + docBaseUrl: params.pdfManager.docBaseUrl + }); + } + _util.Util.inherit(LinkAnnotation, Annotation, {}); + return LinkAnnotation; +}(); +var PopupAnnotation = function PopupAnnotationClosure() { + function PopupAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.POPUP; + var dict = parameters.dict; + var parentItem = dict.get('Parent'); + if (!parentItem) { + (0, _util.warn)('Popup annotation has a missing or invalid parent annotation.'); + return; + } + var parentSubtype = parentItem.get('Subtype'); + this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null; + this.data.parentId = dict.getRaw('Parent').toString(); + this.data.title = (0, _util.stringToPDFString)(parentItem.get('T') || ''); + this.data.contents = (0, _util.stringToPDFString)(parentItem.get('Contents') || ''); + if (!parentItem.has('C')) { + this.data.color = null; + } else { + this.setColor(parentItem.getArray('C')); + this.data.color = this.color; + } + if (!this.viewable) { + var parentFlags = parentItem.get('F'); + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } + } + _util.Util.inherit(PopupAnnotation, Annotation, {}); + return PopupAnnotation; +}(); +var LineAnnotation = function LineAnnotationClosure() { + function LineAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.LINE; + var dict = parameters.dict; + this.data.lineCoordinates = _util.Util.normalizeRect(dict.getArray('L')); + this._preparePopup(dict); + } + _util.Util.inherit(LineAnnotation, Annotation, {}); + return LineAnnotation; +}(); +var HighlightAnnotation = function HighlightAnnotationClosure() { + function HighlightAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.HIGHLIGHT; + this._preparePopup(parameters.dict); + } + _util.Util.inherit(HighlightAnnotation, Annotation, {}); + return HighlightAnnotation; +}(); +var UnderlineAnnotation = function UnderlineAnnotationClosure() { + function UnderlineAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.UNDERLINE; + this._preparePopup(parameters.dict); + } + _util.Util.inherit(UnderlineAnnotation, Annotation, {}); + return UnderlineAnnotation; +}(); +var SquigglyAnnotation = function SquigglyAnnotationClosure() { + function SquigglyAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.SQUIGGLY; + this._preparePopup(parameters.dict); + } + _util.Util.inherit(SquigglyAnnotation, Annotation, {}); + return SquigglyAnnotation; +}(); +var StrikeOutAnnotation = function StrikeOutAnnotationClosure() { + function StrikeOutAnnotation(parameters) { + Annotation.call(this, parameters); + this.data.annotationType = _util.AnnotationType.STRIKEOUT; + this._preparePopup(parameters.dict); + } + _util.Util.inherit(StrikeOutAnnotation, Annotation, {}); + return StrikeOutAnnotation; +}(); +var FileAttachmentAnnotation = function FileAttachmentAnnotationClosure() { + function FileAttachmentAnnotation(parameters) { + Annotation.call(this, parameters); + var file = new _obj.FileSpec(parameters.dict.get('FS'), parameters.xref); + this.data.annotationType = _util.AnnotationType.FILEATTACHMENT; + this.data.file = file.serializable; + this._preparePopup(parameters.dict); + } + _util.Util.inherit(FileAttachmentAnnotation, Annotation, {}); + return FileAttachmentAnnotation; +}(); +exports.Annotation = Annotation; +exports.AnnotationBorderStyle = AnnotationBorderStyle; +exports.AnnotationFactory = AnnotationFactory; + +/***/ }), +/* 20 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.bidi = undefined; + +var _util = __w_pdfjs_require__(0); + +var baseTypes = ['BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S', 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET', 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON', 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L']; +var arabicTypes = ['AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL', 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL']; +function isOdd(i) { + return (i & 1) !== 0; +} +function isEven(i) { + return (i & 1) === 0; +} +function findUnequal(arr, start, value) { + for (var j = start, jj = arr.length; j < jj; ++j) { + if (arr[j] !== value) { + return j; + } + } + return j; +} +function setValues(arr, start, end, value) { + for (var j = start; j < end; ++j) { + arr[j] = value; + } +} +function reverseValues(arr, start, end) { + for (var i = start, j = end - 1; i < j; ++i, --j) { + var temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} +function createBidiText(str, isLTR, vertical) { + return { + str: str, + dir: vertical ? 'ttb' : isLTR ? 'ltr' : 'rtl' + }; +} +var chars = []; +var types = []; +function bidi(str, startLevel, vertical) { + var isLTR = true; + var strLength = str.length; + if (strLength === 0 || vertical) { + return createBidiText(str, isLTR, vertical); + } + chars.length = strLength; + types.length = strLength; + var numBidi = 0; + var i, ii; + for (i = 0; i < strLength; ++i) { + chars[i] = str.charAt(i); + var charCode = str.charCodeAt(i); + var charType = 'L'; + if (charCode <= 0x00ff) { + charType = baseTypes[charCode]; + } else if (0x0590 <= charCode && charCode <= 0x05f4) { + charType = 'R'; + } else if (0x0600 <= charCode && charCode <= 0x06ff) { + charType = arabicTypes[charCode & 0xff]; + if (!charType) { + (0, _util.warn)('Bidi: invalid Unicode character ' + charCode.toString(16)); + } + } else if (0x0700 <= charCode && charCode <= 0x08AC) { + charType = 'AL'; + } + if (charType === 'R' || charType === 'AL' || charType === 'AN') { + numBidi++; + } + types[i] = charType; + } + if (numBidi === 0) { + isLTR = true; + return createBidiText(str, isLTR); + } + if (startLevel === -1) { + if (numBidi / strLength < 0.3) { + isLTR = true; + startLevel = 0; + } else { + isLTR = false; + startLevel = 1; + } + } + var levels = []; + for (i = 0; i < strLength; ++i) { + levels[i] = startLevel; + } + var e = isOdd(startLevel) ? 'R' : 'L'; + var sor = e; + var eor = sor; + var lastType = sor; + for (i = 0; i < strLength; ++i) { + if (types[i] === 'NSM') { + types[i] = lastType; + } else { + lastType = types[i]; + } + } + lastType = sor; + var t; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === 'EN') { + types[i] = lastType === 'AL' ? 'AN' : 'EN'; + } else if (t === 'R' || t === 'L' || t === 'AL') { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === 'AL') { + types[i] = 'R'; + } + } + for (i = 1; i < strLength - 1; ++i) { + if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') { + types[i] = 'EN'; + } + if (types[i] === 'CS' && (types[i - 1] === 'EN' || types[i - 1] === 'AN') && types[i + 1] === types[i - 1]) { + types[i] = types[i - 1]; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === 'EN') { + var j; + for (j = i - 1; j >= 0; --j) { + if (types[j] !== 'ET') { + break; + } + types[j] = 'EN'; + } + for (j = i + 1; j < strLength; ++j) { + if (types[j] !== 'ET') { + break; + } + types[j] = 'EN'; + } + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') { + types[i] = 'ON'; + } + } + lastType = sor; + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (t === 'EN') { + types[i] = lastType === 'L' ? 'L' : 'EN'; + } else if (t === 'R' || t === 'L') { + lastType = t; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === 'ON') { + var end = findUnequal(types, i + 1, 'ON'); + var before = sor; + if (i > 0) { + before = types[i - 1]; + } + var after = eor; + if (end + 1 < strLength) { + after = types[end + 1]; + } + if (before !== 'L') { + before = 'R'; + } + if (after !== 'L') { + after = 'R'; + } + if (before === after) { + setValues(types, i, end, before); + } + i = end - 1; + } + } + for (i = 0; i < strLength; ++i) { + if (types[i] === 'ON') { + types[i] = e; + } + } + for (i = 0; i < strLength; ++i) { + t = types[i]; + if (isEven(levels[i])) { + if (t === 'R') { + levels[i] += 1; + } else if (t === 'AN' || t === 'EN') { + levels[i] += 2; + } + } else { + if (t === 'L' || t === 'AN' || t === 'EN') { + levels[i] += 1; + } + } + } + var highestLevel = -1; + var lowestOddLevel = 99; + var level; + for (i = 0, ii = levels.length; i < ii; ++i) { + level = levels[i]; + if (highestLevel < level) { + highestLevel = level; + } + if (lowestOddLevel > level && isOdd(level)) { + lowestOddLevel = level; + } + } + for (level = highestLevel; level >= lowestOddLevel; --level) { + var start = -1; + for (i = 0, ii = levels.length; i < ii; ++i) { + if (levels[i] < level) { + if (start >= 0) { + reverseValues(chars, start, i); + start = -1; + } + } else if (start < 0) { + start = i; + } + } + if (start >= 0) { + reverseValues(chars, start, levels.length); + } + } + for (i = 0, ii = chars.length; i < ii; ++i) { + var ch = chars[i]; + if (ch === '<' || ch === '>') { + chars[i] = ''; + } + } + return createBidiText(chars.join(''), isLTR); +} +exports.bidi = bidi; + +/***/ }), +/* 21 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron']; +var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall']; +var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior']; +exports.ISOAdobeCharset = ISOAdobeCharset; +exports.ExpertCharset = ExpertCharset; +exports.ExpertSubsetCharset = ExpertSubsetCharset; + +/***/ }), +/* 22 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CMapFactory = exports.IdentityCMap = exports.CMap = undefined; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var _parser = __w_pdfjs_require__(5); + +var _stream = __w_pdfjs_require__(2); + +var BUILT_IN_CMAPS = ['Adobe-GB1-UCS2', 'Adobe-CNS1-UCS2', 'Adobe-Japan1-UCS2', 'Adobe-Korea1-UCS2', '78-EUC-H', '78-EUC-V', '78-H', '78-RKSJ-H', '78-RKSJ-V', '78-V', '78ms-RKSJ-H', '78ms-RKSJ-V', '83pv-RKSJ-H', '90ms-RKSJ-H', '90ms-RKSJ-V', '90msp-RKSJ-H', '90msp-RKSJ-V', '90pv-RKSJ-H', '90pv-RKSJ-V', 'Add-H', 'Add-RKSJ-H', 'Add-RKSJ-V', 'Add-V', 'Adobe-CNS1-0', 'Adobe-CNS1-1', 'Adobe-CNS1-2', 'Adobe-CNS1-3', 'Adobe-CNS1-4', 'Adobe-CNS1-5', 'Adobe-CNS1-6', 'Adobe-GB1-0', 'Adobe-GB1-1', 'Adobe-GB1-2', 'Adobe-GB1-3', 'Adobe-GB1-4', 'Adobe-GB1-5', 'Adobe-Japan1-0', 'Adobe-Japan1-1', 'Adobe-Japan1-2', 'Adobe-Japan1-3', 'Adobe-Japan1-4', 'Adobe-Japan1-5', 'Adobe-Japan1-6', 'Adobe-Korea1-0', 'Adobe-Korea1-1', 'Adobe-Korea1-2', 'B5-H', 'B5-V', 'B5pc-H', 'B5pc-V', 'CNS-EUC-H', 'CNS-EUC-V', 'CNS1-H', 'CNS1-V', 'CNS2-H', 'CNS2-V', 'ETHK-B5-H', 'ETHK-B5-V', 'ETen-B5-H', 'ETen-B5-V', 'ETenms-B5-H', 'ETenms-B5-V', 'EUC-H', 'EUC-V', 'Ext-H', 'Ext-RKSJ-H', 'Ext-RKSJ-V', 'Ext-V', 'GB-EUC-H', 'GB-EUC-V', 'GB-H', 'GB-V', 'GBK-EUC-H', 'GBK-EUC-V', 'GBK2K-H', 'GBK2K-V', 'GBKp-EUC-H', 'GBKp-EUC-V', 'GBT-EUC-H', 'GBT-EUC-V', 'GBT-H', 'GBT-V', 'GBTpc-EUC-H', 'GBTpc-EUC-V', 'GBpc-EUC-H', 'GBpc-EUC-V', 'H', 'HKdla-B5-H', 'HKdla-B5-V', 'HKdlb-B5-H', 'HKdlb-B5-V', 'HKgccs-B5-H', 'HKgccs-B5-V', 'HKm314-B5-H', 'HKm314-B5-V', 'HKm471-B5-H', 'HKm471-B5-V', 'HKscs-B5-H', 'HKscs-B5-V', 'Hankaku', 'Hiragana', 'KSC-EUC-H', 'KSC-EUC-V', 'KSC-H', 'KSC-Johab-H', 'KSC-Johab-V', 'KSC-V', 'KSCms-UHC-H', 'KSCms-UHC-HW-H', 'KSCms-UHC-HW-V', 'KSCms-UHC-V', 'KSCpc-EUC-H', 'KSCpc-EUC-V', 'Katakana', 'NWP-H', 'NWP-V', 'RKSJ-H', 'RKSJ-V', 'Roman', 'UniCNS-UCS2-H', 'UniCNS-UCS2-V', 'UniCNS-UTF16-H', 'UniCNS-UTF16-V', 'UniCNS-UTF32-H', 'UniCNS-UTF32-V', 'UniCNS-UTF8-H', 'UniCNS-UTF8-V', 'UniGB-UCS2-H', 'UniGB-UCS2-V', 'UniGB-UTF16-H', 'UniGB-UTF16-V', 'UniGB-UTF32-H', 'UniGB-UTF32-V', 'UniGB-UTF8-H', 'UniGB-UTF8-V', 'UniJIS-UCS2-H', 'UniJIS-UCS2-HW-H', 'UniJIS-UCS2-HW-V', 'UniJIS-UCS2-V', 'UniJIS-UTF16-H', 'UniJIS-UTF16-V', 'UniJIS-UTF32-H', 'UniJIS-UTF32-V', 'UniJIS-UTF8-H', 'UniJIS-UTF8-V', 'UniJIS2004-UTF16-H', 'UniJIS2004-UTF16-V', 'UniJIS2004-UTF32-H', 'UniJIS2004-UTF32-V', 'UniJIS2004-UTF8-H', 'UniJIS2004-UTF8-V', 'UniJISPro-UCS2-HW-V', 'UniJISPro-UCS2-V', 'UniJISPro-UTF8-V', 'UniJISX0213-UTF32-H', 'UniJISX0213-UTF32-V', 'UniJISX02132004-UTF32-H', 'UniJISX02132004-UTF32-V', 'UniKS-UCS2-H', 'UniKS-UCS2-V', 'UniKS-UTF16-H', 'UniKS-UTF16-V', 'UniKS-UTF32-H', 'UniKS-UTF32-V', 'UniKS-UTF8-H', 'UniKS-UTF8-V', 'V', 'WP-Symbol']; +var CMap = function CMapClosure() { + function CMap(builtInCMap) { + this.codespaceRanges = [[], [], [], []]; + this.numCodespaceRanges = 0; + this._map = []; + this.name = ''; + this.vertical = false; + this.useCMap = null; + this.builtInCMap = builtInCMap; + } + CMap.prototype = { + addCodespaceRange: function addCodespaceRange(n, low, high) { + this.codespaceRanges[n - 1].push(low, high); + this.numCodespaceRanges++; + }, + mapCidRange: function mapCidRange(low, high, dstLow) { + while (low <= high) { + this._map[low++] = dstLow++; + } + }, + mapBfRange: function mapBfRange(low, high, dstLow) { + var lastByte = dstLow.length - 1; + while (low <= high) { + this._map[low++] = dstLow; + dstLow = dstLow.substr(0, lastByte) + String.fromCharCode(dstLow.charCodeAt(lastByte) + 1); + } + }, + mapBfRangeToArray: function mapBfRangeToArray(low, high, array) { + var i = 0, + ii = array.length; + while (low <= high && i < ii) { + this._map[low] = array[i++]; + ++low; + } + }, + mapOne: function mapOne(src, dst) { + this._map[src] = dst; + }, + lookup: function lookup(code) { + return this._map[code]; + }, + contains: function contains(code) { + return this._map[code] !== undefined; + }, + forEach: function forEach(callback) { + var map = this._map; + var length = map.length; + if (length <= 0x10000) { + for (var i = 0; i < length; i++) { + if (map[i] !== undefined) { + callback(i, map[i]); + } + } + } else { + for (var _i in map) { + callback(_i, map[_i]); + } + } + }, + charCodeOf: function charCodeOf(value) { + var map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (var charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + }, + getMap: function getMap() { + return this._map; + }, + readCharCode: function readCharCode(str, offset, out) { + var c = 0; + var codespaceRanges = this.codespaceRanges; + var codespaceRangesLen = this.codespaceRanges.length; + for (var n = 0; n < codespaceRangesLen; n++) { + c = (c << 8 | str.charCodeAt(offset + n)) >>> 0; + var codespaceRange = codespaceRanges[n]; + for (var k = 0, kk = codespaceRange.length; k < kk;) { + var low = codespaceRange[k++]; + var high = codespaceRange[k++]; + if (c >= low && c <= high) { + out.charcode = c; + out.length = n + 1; + return; + } + } + } + out.charcode = 0; + out.length = 1; + }, + + get length() { + return this._map.length; + }, + get isIdentityCMap() { + if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) { + return false; + } + if (this._map.length !== 0x10000) { + return false; + } + for (var i = 0; i < 0x10000; i++) { + if (this._map[i] !== i) { + return false; + } + } + return true; + } + }; + return CMap; +}(); +var IdentityCMap = function IdentityCMapClosure() { + function IdentityCMap(vertical, n) { + CMap.call(this); + this.vertical = vertical; + this.addCodespaceRange(n, 0, 0xffff); + } + _util.Util.inherit(IdentityCMap, CMap, {}); + IdentityCMap.prototype = { + addCodespaceRange: CMap.prototype.addCodespaceRange, + mapCidRange: function mapCidRange(low, high, dstLow) { + throw new Error('should not call mapCidRange'); + }, + mapBfRange: function mapBfRange(low, high, dstLow) { + throw new Error('should not call mapBfRange'); + }, + mapBfRangeToArray: function mapBfRangeToArray(low, high, array) { + throw new Error('should not call mapBfRangeToArray'); + }, + mapOne: function mapOne(src, dst) { + throw new Error('should not call mapCidOne'); + }, + lookup: function lookup(code) { + return (0, _util.isInt)(code) && code <= 0xffff ? code : undefined; + }, + contains: function contains(code) { + return (0, _util.isInt)(code) && code <= 0xffff; + }, + forEach: function forEach(callback) { + for (var i = 0; i <= 0xffff; i++) { + callback(i, i); + } + }, + charCodeOf: function charCodeOf(value) { + return (0, _util.isInt)(value) && value <= 0xffff ? value : -1; + }, + getMap: function getMap() { + var map = new Array(0x10000); + for (var i = 0; i <= 0xffff; i++) { + map[i] = i; + } + return map; + }, + + readCharCode: CMap.prototype.readCharCode, + get length() { + return 0x10000; + }, + get isIdentityCMap() { + throw new Error('should not access .isIdentityCMap'); + } + }; + return IdentityCMap; +}(); +var BinaryCMapReader = function BinaryCMapReaderClosure() { + function hexToInt(a, size) { + var n = 0; + for (var i = 0; i <= size; i++) { + n = n << 8 | a[i]; + } + return n >>> 0; + } + function hexToStr(a, size) { + if (size === 1) { + return String.fromCharCode(a[0], a[1]); + } + if (size === 3) { + return String.fromCharCode(a[0], a[1], a[2], a[3]); + } + return String.fromCharCode.apply(null, a.subarray(0, size + 1)); + } + function addHex(a, b, size) { + var c = 0; + for (var i = size; i >= 0; i--) { + c += a[i] + b[i]; + a[i] = c & 255; + c >>= 8; + } + } + function incHex(a, size) { + var c = 1; + for (var i = size; i >= 0 && c > 0; i--) { + c += a[i]; + a[i] = c & 255; + c >>= 8; + } + } + var MAX_NUM_SIZE = 16; + var MAX_ENCODED_NUM_SIZE = 19; + function BinaryCMapStream(data) { + this.buffer = data; + this.pos = 0; + this.end = data.length; + this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE); + } + BinaryCMapStream.prototype = { + readByte: function readByte() { + if (this.pos >= this.end) { + return -1; + } + return this.buffer[this.pos++]; + }, + readNumber: function readNumber() { + var n = 0; + var last; + do { + var b = this.readByte(); + if (b < 0) { + throw new _util.FormatError('unexpected EOF in bcmap'); + } + last = !(b & 0x80); + n = n << 7 | b & 0x7F; + } while (!last); + return n; + }, + readSigned: function readSigned() { + var n = this.readNumber(); + return n & 1 ? ~(n >>> 1) : n >>> 1; + }, + readHex: function readHex(num, size) { + num.set(this.buffer.subarray(this.pos, this.pos + size + 1)); + this.pos += size + 1; + }, + readHexNumber: function readHexNumber(num, size) { + var last; + var stack = this.tmpBuf, + sp = 0; + do { + var b = this.readByte(); + if (b < 0) { + throw new _util.FormatError('unexpected EOF in bcmap'); + } + last = !(b & 0x80); + stack[sp++] = b & 0x7F; + } while (!last); + var i = size, + buffer = 0, + bufferSize = 0; + while (i >= 0) { + while (bufferSize < 8 && stack.length > 0) { + buffer = stack[--sp] << bufferSize | buffer; + bufferSize += 7; + } + num[i] = buffer & 255; + i--; + buffer >>= 8; + bufferSize -= 8; + } + }, + readHexSigned: function readHexSigned(num, size) { + this.readHexNumber(num, size); + var sign = num[size] & 1 ? 255 : 0; + var c = 0; + for (var i = 0; i <= size; i++) { + c = (c & 1) << 8 | num[i]; + num[i] = c >> 1 ^ sign; + } + }, + readString: function readString() { + var len = this.readNumber(); + var s = ''; + for (var i = 0; i < len; i++) { + s += String.fromCharCode(this.readNumber()); + } + return s; + } + }; + function processBinaryCMap(data, cMap, extend) { + return new Promise(function (resolve, reject) { + var stream = new BinaryCMapStream(data); + var header = stream.readByte(); + cMap.vertical = !!(header & 1); + var useCMap = null; + var start = new Uint8Array(MAX_NUM_SIZE); + var end = new Uint8Array(MAX_NUM_SIZE); + var char = new Uint8Array(MAX_NUM_SIZE); + var charCode = new Uint8Array(MAX_NUM_SIZE); + var tmp = new Uint8Array(MAX_NUM_SIZE); + var code; + var b; + while ((b = stream.readByte()) >= 0) { + var type = b >> 5; + if (type === 7) { + switch (b & 0x1F) { + case 0: + stream.readString(); + break; + case 1: + useCMap = stream.readString(); + break; + } + continue; + } + var sequence = !!(b & 0x10); + var dataSize = b & 15; + if (dataSize + 1 > MAX_NUM_SIZE) { + throw new Error('processBinaryCMap: Invalid dataSize.'); + } + var ucs2DataSize = 1; + var subitemsCount = stream.readNumber(); + var i; + switch (type) { + case 0: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + for (i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize), hexToInt(end, dataSize)); + } + break; + case 1: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + for (i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + } + break; + case 2: + stream.readHex(char, dataSize); + code = stream.readNumber(); + cMap.mapOne(hexToInt(char, dataSize), code); + for (i = 1; i < subitemsCount; i++) { + incHex(char, dataSize); + if (!sequence) { + stream.readHexNumber(tmp, dataSize); + addHex(char, tmp, dataSize); + } + code = stream.readSigned() + (code + 1); + cMap.mapOne(hexToInt(char, dataSize), code); + } + break; + case 3: + stream.readHex(start, dataSize); + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + for (i = 1; i < subitemsCount; i++) { + incHex(end, dataSize); + if (!sequence) { + stream.readHexNumber(start, dataSize); + addHex(start, end, dataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, dataSize); + addHex(end, start, dataSize); + code = stream.readNumber(); + cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize), code); + } + break; + case 4: + stream.readHex(char, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + for (i = 1; i < subitemsCount; i++) { + incHex(char, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(tmp, ucs2DataSize); + addHex(char, tmp, ucs2DataSize); + } + incHex(charCode, dataSize); + stream.readHexSigned(tmp, dataSize); + addHex(charCode, tmp, dataSize); + cMap.mapOne(hexToInt(char, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + case 5: + stream.readHex(start, ucs2DataSize); + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + for (i = 1; i < subitemsCount; i++) { + incHex(end, ucs2DataSize); + if (!sequence) { + stream.readHexNumber(start, ucs2DataSize); + addHex(start, end, ucs2DataSize); + } else { + start.set(end); + } + stream.readHexNumber(end, ucs2DataSize); + addHex(end, start, ucs2DataSize); + stream.readHex(charCode, dataSize); + cMap.mapBfRange(hexToInt(start, ucs2DataSize), hexToInt(end, ucs2DataSize), hexToStr(charCode, dataSize)); + } + break; + default: + reject(new Error('processBinaryCMap: Unknown type: ' + type)); + return; + } + } + if (useCMap) { + resolve(extend(useCMap)); + return; + } + resolve(cMap); + }); + } + function BinaryCMapReader() {} + BinaryCMapReader.prototype = { process: processBinaryCMap }; + return BinaryCMapReader; +}(); +var CMapFactory = function CMapFactoryClosure() { + function strToInt(str) { + var a = 0; + for (var i = 0; i < str.length; i++) { + a = a << 8 | str.charCodeAt(i); + } + return a >>> 0; + } + function expectString(obj) { + if (!(0, _util.isString)(obj)) { + throw new _util.FormatError('Malformed CMap: expected string.'); + } + } + function expectInt(obj) { + if (!(0, _util.isInt)(obj)) { + throw new _util.FormatError('Malformed CMap: expected int.'); + } + } + function parseBfChar(cMap, lexer) { + while (true) { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } + if ((0, _primitives.isCmd)(obj, 'endbfchar')) { + return; + } + expectString(obj); + var src = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + var dst = obj; + cMap.mapOne(src, dst); + } + } + function parseBfRange(cMap, lexer) { + while (true) { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } + if ((0, _primitives.isCmd)(obj, 'endbfrange')) { + return; + } + expectString(obj); + var low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + var high = strToInt(obj); + obj = lexer.getObj(); + if ((0, _util.isInt)(obj) || (0, _util.isString)(obj)) { + var dstLow = (0, _util.isInt)(obj) ? String.fromCharCode(obj) : obj; + cMap.mapBfRange(low, high, dstLow); + } else if ((0, _primitives.isCmd)(obj, '[')) { + obj = lexer.getObj(); + var array = []; + while (!(0, _primitives.isCmd)(obj, ']') && !(0, _primitives.isEOF)(obj)) { + array.push(obj); + obj = lexer.getObj(); + } + cMap.mapBfRangeToArray(low, high, array); + } else { + break; + } + } + throw new _util.FormatError('Invalid bf range.'); + } + function parseCidChar(cMap, lexer) { + while (true) { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } + if ((0, _primitives.isCmd)(obj, 'endcidchar')) { + return; + } + expectString(obj); + var src = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + var dst = obj; + cMap.mapOne(src, dst); + } + } + function parseCidRange(cMap, lexer) { + while (true) { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } + if ((0, _primitives.isCmd)(obj, 'endcidrange')) { + return; + } + expectString(obj); + var low = strToInt(obj); + obj = lexer.getObj(); + expectString(obj); + var high = strToInt(obj); + obj = lexer.getObj(); + expectInt(obj); + var dstLow = obj; + cMap.mapCidRange(low, high, dstLow); + } + } + function parseCodespaceRange(cMap, lexer) { + while (true) { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } + if ((0, _primitives.isCmd)(obj, 'endcodespacerange')) { + return; + } + if (!(0, _util.isString)(obj)) { + break; + } + var low = strToInt(obj); + obj = lexer.getObj(); + if (!(0, _util.isString)(obj)) { + break; + } + var high = strToInt(obj); + cMap.addCodespaceRange(obj.length, low, high); + } + throw new _util.FormatError('Invalid codespace range.'); + } + function parseWMode(cMap, lexer) { + var obj = lexer.getObj(); + if ((0, _util.isInt)(obj)) { + cMap.vertical = !!obj; + } + } + function parseCMapName(cMap, lexer) { + var obj = lexer.getObj(); + if ((0, _primitives.isName)(obj) && (0, _util.isString)(obj.name)) { + cMap.name = obj.name; + } + } + function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) { + var previous; + var embededUseCMap; + objLoop: while (true) { + try { + var obj = lexer.getObj(); + if ((0, _primitives.isEOF)(obj)) { + break; + } else if ((0, _primitives.isName)(obj)) { + if (obj.name === 'WMode') { + parseWMode(cMap, lexer); + } else if (obj.name === 'CMapName') { + parseCMapName(cMap, lexer); + } + previous = obj; + } else if ((0, _primitives.isCmd)(obj)) { + switch (obj.cmd) { + case 'endcmap': + break objLoop; + case 'usecmap': + if ((0, _primitives.isName)(previous)) { + embededUseCMap = previous.name; + } + break; + case 'begincodespacerange': + parseCodespaceRange(cMap, lexer); + break; + case 'beginbfchar': + parseBfChar(cMap, lexer); + break; + case 'begincidchar': + parseCidChar(cMap, lexer); + break; + case 'beginbfrange': + parseBfRange(cMap, lexer); + break; + case 'begincidrange': + parseCidRange(cMap, lexer); + break; + } + } + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + (0, _util.warn)('Invalid cMap data: ' + ex); + continue; + } + } + if (!useCMap && embededUseCMap) { + useCMap = embededUseCMap; + } + if (useCMap) { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + } + return Promise.resolve(cMap); + } + function extendCMap(cMap, fetchBuiltInCMap, useCMap) { + return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) { + cMap.useCMap = newCMap; + if (cMap.numCodespaceRanges === 0) { + var useCodespaceRanges = cMap.useCMap.codespaceRanges; + for (var i = 0; i < useCodespaceRanges.length; i++) { + cMap.codespaceRanges[i] = useCodespaceRanges[i].slice(); + } + cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges; + } + cMap.useCMap.forEach(function (key, value) { + if (!cMap.contains(key)) { + cMap.mapOne(key, cMap.useCMap.lookup(key)); + } + }); + return cMap; + }); + } + function createBuiltInCMap(name, fetchBuiltInCMap) { + if (name === 'Identity-H') { + return Promise.resolve(new IdentityCMap(false, 2)); + } else if (name === 'Identity-V') { + return Promise.resolve(new IdentityCMap(true, 2)); + } + if (BUILT_IN_CMAPS.indexOf(name) === -1) { + return Promise.reject(new Error('Unknown CMap name: ' + name)); + } + if (!fetchBuiltInCMap) { + return Promise.reject(new Error('Built-in CMap parameters are not provided.')); + } + return fetchBuiltInCMap(name).then(function (data) { + var cMapData = data.cMapData, + compressionType = data.compressionType; + var cMap = new CMap(true); + if (compressionType === _util.CMapCompressionType.BINARY) { + return new BinaryCMapReader().process(cMapData, cMap, function (useCMap) { + return extendCMap(cMap, fetchBuiltInCMap, useCMap); + }); + } + if (compressionType === _util.CMapCompressionType.NONE) { + var lexer = new _parser.Lexer(new _stream.Stream(cMapData)); + return parseCMap(cMap, lexer, fetchBuiltInCMap, null); + } + return Promise.reject(new Error('TODO: Only BINARY/NONE CMap compression is currently supported.')); + }); + } + return { + create: function create(params) { + var encoding = params.encoding; + var fetchBuiltInCMap = params.fetchBuiltInCMap; + var useCMap = params.useCMap; + if ((0, _primitives.isName)(encoding)) { + return createBuiltInCMap(encoding.name, fetchBuiltInCMap); + } else if ((0, _primitives.isStream)(encoding)) { + var cMap = new CMap(); + var lexer = new _parser.Lexer(encoding); + return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(function (parsedCMap) { + if (parsedCMap.isIdentityCMap) { + return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap); + } + return parsedCMap; + }); + } + return Promise.reject(new Error('Encoding required.')); + } + }; +}(); +exports.CMap = CMap; +exports.IdentityCMap = IdentityCMap; +exports.CMapFactory = CMapFactory; + +/***/ }), +/* 23 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFDocument = exports.Page = undefined; + +var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); + +var _obj = __w_pdfjs_require__(15); + +var _primitives = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + +var _stream = __w_pdfjs_require__(2); + +var _evaluator = __w_pdfjs_require__(13); + +var _annotation = __w_pdfjs_require__(19); + +var _crypto = __w_pdfjs_require__(12); + +var _parser = __w_pdfjs_require__(5); + +var Page = function PageClosure() { + var DEFAULT_USER_UNIT = 1.0; + var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792]; + function isAnnotationRenderable(annotation, intent) { + return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable; + } + function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache, builtInCMapCache) { + this.pdfManager = pdfManager; + this.pageIndex = pageIndex; + this.pageDict = pageDict; + this.xref = xref; + this.ref = ref; + this.fontCache = fontCache; + this.builtInCMapCache = builtInCMapCache; + this.evaluatorOptions = pdfManager.evaluatorOptions; + this.resourcesPromise = null; + var uniquePrefix = 'p' + this.pageIndex + '_'; + var idCounters = { obj: 0 }; + this.idFactory = { + createObjId: function createObjId() { + return uniquePrefix + ++idCounters.obj; + } + }; + } + Page.prototype = { + getPageProp: function Page_getPageProp(key) { + return this.pageDict.get(key); + }, + getInheritedPageProp: function Page_getInheritedPageProp(key, getArray) { + var dict = this.pageDict, + valueArray = null, + loopCount = 0; + var MAX_LOOP_COUNT = 100; + getArray = getArray || false; + while (dict) { + var value = getArray ? dict.getArray(key) : dict.get(key); + if (value !== undefined) { + if (!valueArray) { + valueArray = []; + } + valueArray.push(value); + } + if (++loopCount > MAX_LOOP_COUNT) { + (0, _util.warn)('getInheritedPageProp: maximum loop count exceeded for ' + key); + return valueArray ? valueArray[0] : undefined; + } + dict = dict.get('Parent'); + } + if (!valueArray) { + return undefined; + } + if (valueArray.length === 1 || !(0, _primitives.isDict)(valueArray[0])) { + return valueArray[0]; + } + return _primitives.Dict.merge(this.xref, valueArray); + }, + get content() { + return this.getPageProp('Contents'); + }, + get resources() { + return (0, _util.shadow)(this, 'resources', this.getInheritedPageProp('Resources') || _primitives.Dict.empty); + }, + get mediaBox() { + var mediaBox = this.getInheritedPageProp('MediaBox', true); + if (!(0, _util.isArray)(mediaBox) || mediaBox.length !== 4) { + return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX); + } + return (0, _util.shadow)(this, 'mediaBox', mediaBox); + }, + get cropBox() { + var cropBox = this.getInheritedPageProp('CropBox', true); + if (!(0, _util.isArray)(cropBox) || cropBox.length !== 4) { + return (0, _util.shadow)(this, 'cropBox', this.mediaBox); + } + return (0, _util.shadow)(this, 'cropBox', cropBox); + }, + get userUnit() { + var obj = this.getPageProp('UserUnit'); + if (!(0, _util.isNum)(obj) || obj <= 0) { + obj = DEFAULT_USER_UNIT; + } + return (0, _util.shadow)(this, 'userUnit', obj); + }, + get view() { + var mediaBox = this.mediaBox, + cropBox = this.cropBox; + if (mediaBox === cropBox) { + return (0, _util.shadow)(this, 'view', mediaBox); + } + var intersection = _util.Util.intersect(cropBox, mediaBox); + return (0, _util.shadow)(this, 'view', intersection || mediaBox); + }, + get rotate() { + var rotate = this.getInheritedPageProp('Rotate') || 0; + if (rotate % 90 !== 0) { + rotate = 0; + } else if (rotate >= 360) { + rotate = rotate % 360; + } else if (rotate < 0) { + rotate = (rotate % 360 + 360) % 360; + } + return (0, _util.shadow)(this, 'rotate', rotate); + }, + getContentStream: function Page_getContentStream() { + var content = this.content; + var stream; + if ((0, _util.isArray)(content)) { + var xref = this.xref; + var i, + n = content.length; + var streams = []; + for (i = 0; i < n; ++i) { + streams.push(xref.fetchIfRef(content[i])); + } + stream = new _stream.StreamsSequenceStream(streams); + } else if ((0, _primitives.isStream)(content)) { + stream = content; + } else { + stream = new _stream.NullStream(); + } + return stream; + }, + loadResources: function Page_loadResources(keys) { + var _this = this; + + if (!this.resourcesPromise) { + this.resourcesPromise = this.pdfManager.ensure(this, 'resources'); + } + return this.resourcesPromise.then(function () { + var objectLoader = new _obj.ObjectLoader(_this.resources, keys, _this.xref); + return objectLoader.load(); + }); + }, + getOperatorList: function getOperatorList(_ref) { + var _this2 = this; + + var handler = _ref.handler, + task = _ref.task, + intent = _ref.intent, + renderInteractiveForms = _ref.renderInteractiveForms; + + var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream'); + var resourcesPromise = this.loadResources(['ExtGState', 'ColorSpace', 'Pattern', 'Shading', 'XObject', 'Font']); + var partialEvaluator = new _evaluator.PartialEvaluator({ + pdfManager: this.pdfManager, + xref: this.xref, + handler: handler, + pageIndex: this.pageIndex, + idFactory: this.idFactory, + fontCache: this.fontCache, + builtInCMapCache: this.builtInCMapCache, + options: this.evaluatorOptions + }); + var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + var pageListPromise = dataPromises.then(function (_ref2) { + var _ref3 = _slicedToArray(_ref2, 1), + contentStream = _ref3[0]; + + var opList = new _evaluator.OperatorList(intent, handler, _this2.pageIndex); + handler.send('StartRenderPage', { + transparency: partialEvaluator.hasBlendModes(_this2.resources), + pageIndex: _this2.pageIndex, + intent: intent + }); + return partialEvaluator.getOperatorList({ + stream: contentStream, + task: task, + resources: _this2.resources, + operatorList: opList + }).then(function () { + return opList; + }); + }); + var annotationsPromise = this.pdfManager.ensure(this, 'annotations'); + return Promise.all([pageListPromise, annotationsPromise]).then(function (_ref4) { + var _ref5 = _slicedToArray(_ref4, 2), + pageOpList = _ref5[0], + annotations = _ref5[1]; + + if (annotations.length === 0) { + pageOpList.flush(true); + return pageOpList; + } + var i, + ii, + opListPromises = []; + for (i = 0, ii = annotations.length; i < ii; i++) { + if (isAnnotationRenderable(annotations[i], intent)) { + opListPromises.push(annotations[i].getOperatorList(partialEvaluator, task, renderInteractiveForms)); + } + } + return Promise.all(opListPromises).then(function (opLists) { + pageOpList.addOp(_util.OPS.beginAnnotations, []); + for (i = 0, ii = opLists.length; i < ii; i++) { + pageOpList.addOpList(opLists[i]); + } + pageOpList.addOp(_util.OPS.endAnnotations, []); + pageOpList.flush(true); + return pageOpList; + }); + }); + }, + extractTextContent: function extractTextContent(_ref6) { + var _this3 = this; + + var handler = _ref6.handler, + task = _ref6.task, + normalizeWhitespace = _ref6.normalizeWhitespace, + sink = _ref6.sink, + combineTextItems = _ref6.combineTextItems; + + var contentStreamPromise = this.pdfManager.ensure(this, 'getContentStream'); + var resourcesPromise = this.loadResources(['ExtGState', 'XObject', 'Font']); + var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]); + return dataPromises.then(function (_ref7) { + var _ref8 = _slicedToArray(_ref7, 1), + contentStream = _ref8[0]; + + var partialEvaluator = new _evaluator.PartialEvaluator({ + pdfManager: _this3.pdfManager, + xref: _this3.xref, + handler: handler, + pageIndex: _this3.pageIndex, + idFactory: _this3.idFactory, + fontCache: _this3.fontCache, + builtInCMapCache: _this3.builtInCMapCache, + options: _this3.evaluatorOptions + }); + return partialEvaluator.getTextContent({ + stream: contentStream, + task: task, + resources: _this3.resources, + normalizeWhitespace: normalizeWhitespace, + combineTextItems: combineTextItems, + sink: sink + }); + }); + }, + + getAnnotationsData: function Page_getAnnotationsData(intent) { + var annotations = this.annotations; + var annotationsData = []; + for (var i = 0, n = annotations.length; i < n; ++i) { + if (!intent || isAnnotationRenderable(annotations[i], intent)) { + annotationsData.push(annotations[i].data); + } + } + return annotationsData; + }, + get annotations() { + var annotations = []; + var annotationRefs = this.getInheritedPageProp('Annots') || []; + var annotationFactory = new _annotation.AnnotationFactory(); + for (var i = 0, n = annotationRefs.length; i < n; ++i) { + var annotationRef = annotationRefs[i]; + var annotation = annotationFactory.create(this.xref, annotationRef, this.pdfManager, this.idFactory); + if (annotation) { + annotations.push(annotation); + } + } + return (0, _util.shadow)(this, 'annotations', annotations); + } + }; + return Page; +}(); +var PDFDocument = function PDFDocumentClosure() { + var FINGERPRINT_FIRST_BYTES = 1024; + var EMPTY_FINGERPRINT = '\x00\x00\x00\x00\x00\x00\x00' + '\x00\x00\x00\x00\x00\x00\x00\x00\x00'; + function PDFDocument(pdfManager, arg) { + var stream; + if ((0, _primitives.isStream)(arg)) { + stream = arg; + } else if ((0, _util.isArrayBuffer)(arg)) { + stream = new _stream.Stream(arg); + } else { + throw new Error('PDFDocument: Unknown argument type'); + } + if (stream.length <= 0) { + throw new Error('PDFDocument: stream must have data'); + } + this.pdfManager = pdfManager; + this.stream = stream; + this.xref = new _obj.XRef(stream, pdfManager); + } + function find(stream, needle, limit, backwards) { + var pos = stream.pos; + var end = stream.end; + var strBuf = []; + if (pos + limit > end) { + limit = end - pos; + } + for (var n = 0; n < limit; ++n) { + strBuf.push(String.fromCharCode(stream.getByte())); + } + var str = strBuf.join(''); + stream.pos = pos; + var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle); + if (index === -1) { + return false; + } + stream.pos += index; + return true; + } + var DocumentInfoValidators = { + get entries() { + return (0, _util.shadow)(this, 'entries', { + Title: _util.isString, + Author: _util.isString, + Subject: _util.isString, + Keywords: _util.isString, + Creator: _util.isString, + Producer: _util.isString, + CreationDate: _util.isString, + ModDate: _util.isString, + Trapped: _primitives.isName + }); + } + }; + PDFDocument.prototype = { + parse: function PDFDocument_parse(recoveryMode) { + this.setup(recoveryMode); + var version = this.catalog.catDict.get('Version'); + if ((0, _primitives.isName)(version)) { + this.pdfFormatVersion = version.name; + } + try { + this.acroForm = this.catalog.catDict.get('AcroForm'); + if (this.acroForm) { + this.xfa = this.acroForm.get('XFA'); + var fields = this.acroForm.get('Fields'); + if ((!fields || !(0, _util.isArray)(fields) || fields.length === 0) && !this.xfa) { + this.acroForm = null; + } + } + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + (0, _util.info)('Something wrong with AcroForm entry'); + this.acroForm = null; + } + }, + get linearization() { + var linearization = null; + if (this.stream.length) { + try { + linearization = _parser.Linearization.create(this.stream); + } catch (err) { + if (err instanceof _util.MissingDataException) { + throw err; + } + (0, _util.info)(err); + } + } + return (0, _util.shadow)(this, 'linearization', linearization); + }, + get startXRef() { + var stream = this.stream; + var startXRef = 0; + var linearization = this.linearization; + if (linearization) { + stream.reset(); + if (find(stream, 'endobj', 1024)) { + startXRef = stream.pos + 6; + } + } else { + var step = 1024; + var found = false, + pos = stream.end; + while (!found && pos > 0) { + pos -= step - 'startxref'.length; + if (pos < 0) { + pos = 0; + } + stream.pos = pos; + found = find(stream, 'startxref', step, true); + } + if (found) { + stream.skip(9); + var ch; + do { + ch = stream.getByte(); + } while ((0, _util.isSpace)(ch)); + var str = ''; + while (ch >= 0x20 && ch <= 0x39) { + str += String.fromCharCode(ch); + ch = stream.getByte(); + } + startXRef = parseInt(str, 10); + if (isNaN(startXRef)) { + startXRef = 0; + } + } + } + return (0, _util.shadow)(this, 'startXRef', startXRef); + }, + get mainXRefEntriesOffset() { + var mainXRefEntriesOffset = 0; + var linearization = this.linearization; + if (linearization) { + mainXRefEntriesOffset = linearization.mainXRefEntriesOffset; + } + return (0, _util.shadow)(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset); + }, + checkHeader: function PDFDocument_checkHeader() { + var stream = this.stream; + stream.reset(); + if (find(stream, '%PDF-', 1024)) { + stream.moveStart(); + var MAX_VERSION_LENGTH = 12; + var version = '', + ch; + while ((ch = stream.getByte()) > 0x20) { + if (version.length >= MAX_VERSION_LENGTH) { + break; + } + version += String.fromCharCode(ch); + } + if (!this.pdfFormatVersion) { + this.pdfFormatVersion = version.substring(5); + } + return; + } + }, + parseStartXRef: function PDFDocument_parseStartXRef() { + var startXRef = this.startXRef; + this.xref.setStartXRef(startXRef); + }, + setup: function PDFDocument_setup(recoveryMode) { + var _this4 = this; + + this.xref.parse(recoveryMode); + var pageFactory = { + createPage: function createPage(pageIndex, dict, ref, fontCache, builtInCMapCache) { + return new Page(_this4.pdfManager, _this4.xref, pageIndex, dict, ref, fontCache, builtInCMapCache); + } + }; + this.catalog = new _obj.Catalog(this.pdfManager, this.xref, pageFactory); + }, + get numPages() { + var linearization = this.linearization; + var num = linearization ? linearization.numPages : this.catalog.numPages; + return (0, _util.shadow)(this, 'numPages', num); + }, + get documentInfo() { + var docInfo = { + PDFFormatVersion: this.pdfFormatVersion, + IsAcroFormPresent: !!this.acroForm, + IsXFAPresent: !!this.xfa + }; + var infoDict; + try { + infoDict = this.xref.trailer.get('Info'); + } catch (err) { + if (err instanceof _util.MissingDataException) { + throw err; + } + (0, _util.info)('The document information dictionary is invalid.'); + } + if (infoDict) { + var validEntries = DocumentInfoValidators.entries; + for (var key in validEntries) { + if (infoDict.has(key)) { + var value = infoDict.get(key); + if (validEntries[key](value)) { + docInfo[key] = typeof value !== 'string' ? value : (0, _util.stringToPDFString)(value); + } else { + (0, _util.info)('Bad value in document info for "' + key + '"'); + } + } + } + } + return (0, _util.shadow)(this, 'documentInfo', docInfo); + }, + get fingerprint() { + var xref = this.xref, + hash, + fileID = ''; + var idArray = xref.trailer.get('ID'); + if (idArray && (0, _util.isArray)(idArray) && idArray[0] && (0, _util.isString)(idArray[0]) && idArray[0] !== EMPTY_FINGERPRINT) { + hash = (0, _util.stringToBytes)(idArray[0]); + } else { + if (this.stream.ensureRange) { + this.stream.ensureRange(0, Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end)); + } + hash = (0, _crypto.calculateMD5)(this.stream.bytes.subarray(0, FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES); + } + for (var i = 0, n = hash.length; i < n; i++) { + var hex = hash[i].toString(16); + fileID += hex.length === 1 ? '0' + hex : hex; + } + return (0, _util.shadow)(this, 'fingerprint', fileID); + }, + getPage: function PDFDocument_getPage(pageIndex) { + return this.catalog.getPage(pageIndex); + }, + cleanup: function PDFDocument_cleanup() { + return this.catalog.cleanup(); + } + }; + return PDFDocument; +}(); +exports.Page = Page; +exports.PDFDocument = PDFDocument; + +/***/ }), +/* 24 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FontRendererFactory = undefined; + +var _util = __w_pdfjs_require__(0); + +var _cff_parser = __w_pdfjs_require__(10); + +var _glyphlist = __w_pdfjs_require__(6); + +var _encodings = __w_pdfjs_require__(4); + +var _stream = __w_pdfjs_require__(2); + +var FontRendererFactory = function FontRendererFactoryClosure() { + function getLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + } + function getUshort(data, offset) { + return data[offset] << 8 | data[offset + 1]; + } + function parseCmap(data, start, end) { + var offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16); + var format = getUshort(data, start + offset); + var ranges, p, i; + if (format === 4) { + getUshort(data, start + offset + 2); + var segCount = getUshort(data, start + offset + 6) >> 1; + p = start + offset + 14; + ranges = []; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i] = { end: getUshort(data, p) }; + } + p += 2; + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].start = getUshort(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + ranges[i].idDelta = getUshort(data, p); + } + for (i = 0; i < segCount; i++, p += 2) { + var idOffset = getUshort(data, p); + if (idOffset === 0) { + continue; + } + ranges[i].ids = []; + for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) { + ranges[i].ids[j] = getUshort(data, p + idOffset); + idOffset += 2; + } + } + return ranges; + } else if (format === 12) { + getLong(data, start + offset + 4); + var groups = getLong(data, start + offset + 12); + p = start + offset + 16; + ranges = []; + for (i = 0; i < groups; i++) { + ranges.push({ + start: getLong(data, p), + end: getLong(data, p + 4), + idDelta: getLong(data, p + 8) - getLong(data, p) + }); + p += 12; + } + return ranges; + } + throw new _util.FormatError('unsupported cmap: ' + format); + } + function parseCff(data, start, end, seacAnalysisEnabled) { + var properties = {}; + var parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, seacAnalysisEnabled); + var cff = parser.parse(); + return { + glyphs: cff.charStrings.objects, + subrs: cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex && cff.topDict.privateDict.subrsIndex.objects, + gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects + }; + } + function parseGlyfTable(glyf, loca, isGlyphLocationsLong) { + var itemSize, itemDecode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = function fontItemDecodeLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + }; + } else { + itemSize = 2; + itemDecode = function fontItemDecode(data, offset) { + return data[offset] << 9 | data[offset + 1] << 1; + }; + } + var glyphs = []; + var startOffset = itemDecode(loca, 0); + for (var j = itemSize; j < loca.length; j += itemSize) { + var endOffset = itemDecode(loca, j); + glyphs.push(glyf.subarray(startOffset, endOffset)); + startOffset = endOffset; + } + return glyphs; + } + function lookupCmap(ranges, unicode) { + var code = unicode.charCodeAt(0), + gid = 0; + var l = 0, + r = ranges.length - 1; + while (l < r) { + var c = l + r + 1 >> 1; + if (code < ranges[c].start) { + r = c - 1; + } else { + l = c; + } + } + if (ranges[l].start <= code && code <= ranges[l].end) { + gid = ranges[l].idDelta + (ranges[l].ids ? ranges[l].ids[code - ranges[l].start] : code) & 0xFFFF; + } + return { + charCode: code, + glyphId: gid + }; + } + function compileGlyf(code, cmds, font) { + function moveTo(x, y) { + cmds.push({ + cmd: 'moveTo', + args: [x, y] + }); + } + function lineTo(x, y) { + cmds.push({ + cmd: 'lineTo', + args: [x, y] + }); + } + function quadraticCurveTo(xa, ya, x, y) { + cmds.push({ + cmd: 'quadraticCurveTo', + args: [xa, ya, x, y] + }); + } + var i = 0; + var numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16; + var flags; + var x = 0, + y = 0; + i += 10; + if (numberOfContours < 0) { + do { + flags = code[i] << 8 | code[i + 1]; + var glyphIndex = code[i + 2] << 8 | code[i + 3]; + i += 4; + var arg1, arg2; + if (flags & 0x01) { + arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16; + arg2 = (code[i + 2] << 24 | code[i + 3] << 16) >> 16; + i += 4; + } else { + arg1 = code[i++]; + arg2 = code[i++]; + } + if (flags & 0x02) { + x = arg1; + y = arg2; + } else { + x = 0; + y = 0; + } + var scaleX = 1, + scaleY = 1, + scale01 = 0, + scale10 = 0; + if (flags & 0x08) { + scaleX = scaleY = (code[i] << 24 | code[i + 1] << 16) / 1073741824; + i += 2; + } else if (flags & 0x40) { + scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824; + scaleY = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824; + i += 4; + } else if (flags & 0x80) { + scaleX = (code[i] << 24 | code[i + 1] << 16) / 1073741824; + scale01 = (code[i + 2] << 24 | code[i + 3] << 16) / 1073741824; + scale10 = (code[i + 4] << 24 | code[i + 5] << 16) / 1073741824; + scaleY = (code[i + 6] << 24 | code[i + 7] << 16) / 1073741824; + i += 8; + } + var subglyph = font.glyphs[glyphIndex]; + if (subglyph) { + cmds.push({ cmd: 'save' }); + cmds.push({ + cmd: 'transform', + args: [scaleX, scale01, scale10, scaleY, x, y] + }); + compileGlyf(subglyph, cmds, font); + cmds.push({ cmd: 'restore' }); + } + } while (flags & 0x20); + } else { + var endPtsOfContours = []; + var j, jj; + for (j = 0; j < numberOfContours; j++) { + endPtsOfContours.push(code[i] << 8 | code[i + 1]); + i += 2; + } + var instructionLength = code[i] << 8 | code[i + 1]; + i += 2 + instructionLength; + var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1; + var points = []; + while (points.length < numberOfPoints) { + flags = code[i++]; + var repeat = 1; + if (flags & 0x08) { + repeat += code[i++]; + } + while (repeat-- > 0) { + points.push({ flags: flags }); + } + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x12) { + case 0x00: + x += (code[i] << 24 | code[i + 1] << 16) >> 16; + i += 2; + break; + case 0x02: + x -= code[i++]; + break; + case 0x12: + x += code[i++]; + break; + } + points[j].x = x; + } + for (j = 0; j < numberOfPoints; j++) { + switch (points[j].flags & 0x24) { + case 0x00: + y += (code[i] << 24 | code[i + 1] << 16) >> 16; + i += 2; + break; + case 0x04: + y -= code[i++]; + break; + case 0x24: + y += code[i++]; + break; + } + points[j].y = y; + } + var startPoint = 0; + for (i = 0; i < numberOfContours; i++) { + var endPoint = endPtsOfContours[i]; + var contour = points.slice(startPoint, endPoint + 1); + if (contour[0].flags & 1) { + contour.push(contour[0]); + } else if (contour[contour.length - 1].flags & 1) { + contour.unshift(contour[contour.length - 1]); + } else { + var p = { + flags: 1, + x: (contour[0].x + contour[contour.length - 1].x) / 2, + y: (contour[0].y + contour[contour.length - 1].y) / 2 + }; + contour.unshift(p); + contour.push(p); + } + moveTo(contour[0].x, contour[0].y); + for (j = 1, jj = contour.length; j < jj; j++) { + if (contour[j].flags & 1) { + lineTo(contour[j].x, contour[j].y); + } else if (contour[j + 1].flags & 1) { + quadraticCurveTo(contour[j].x, contour[j].y, contour[j + 1].x, contour[j + 1].y); + j++; + } else { + quadraticCurveTo(contour[j].x, contour[j].y, (contour[j].x + contour[j + 1].x) / 2, (contour[j].y + contour[j + 1].y) / 2); + } + } + startPoint = endPoint + 1; + } + } + } + function compileCharString(code, cmds, font) { + var stack = []; + var x = 0, + y = 0; + var stems = 0; + function moveTo(x, y) { + cmds.push({ + cmd: 'moveTo', + args: [x, y] + }); + } + function lineTo(x, y) { + cmds.push({ + cmd: 'lineTo', + args: [x, y] + }); + } + function bezierCurveTo(x1, y1, x2, y2, x, y) { + cmds.push({ + cmd: 'bezierCurveTo', + args: [x1, y1, x2, y2, x, y] + }); + } + function parse(code) { + var i = 0; + while (i < code.length) { + var stackClean = false; + var v = code[i++]; + var xa, xb, ya, yb, y1, y2, y3, n, subrCode; + switch (v) { + case 1: + stems += stack.length >> 1; + stackClean = true; + break; + case 3: + stems += stack.length >> 1; + stackClean = true; + break; + case 4: + y += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 5: + while (stack.length > 0) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + break; + case 6: + while (stack.length > 0) { + x += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + y += stack.shift(); + lineTo(x, y); + } + break; + case 7: + while (stack.length > 0) { + y += stack.shift(); + lineTo(x, y); + if (stack.length === 0) { + break; + } + x += stack.shift(); + lineTo(x, y); + } + break; + case 8: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 10: + n = stack.pop() + font.subrsBias; + subrCode = font.subrs[n]; + if (subrCode) { + parse(subrCode); + } + break; + case 11: + return; + case 12: + v = code[i++]; + switch (v) { + case 34: + xa = x + stack.shift(); + xb = xa + stack.shift(); + y1 = y + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y, xb, y1, x, y1); + xa = x + stack.shift(); + xb = xa + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y, x, y); + break; + case 35: + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + stack.pop(); + break; + case 36: + xa = x + stack.shift(); + y1 = y + stack.shift(); + xb = xa + stack.shift(); + y2 = y1 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y1, xb, y2, x, y2); + xa = x + stack.shift(); + xb = xa + stack.shift(); + y3 = y2 + stack.shift(); + x = xb + stack.shift(); + bezierCurveTo(xa, y2, xb, y3, x, y); + break; + case 37: + var x0 = x, + y0 = y; + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb; + if (Math.abs(x - x0) > Math.abs(y - y0)) { + x += stack.shift(); + } else { + y += stack.shift(); + } + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + default: + throw new _util.FormatError('unknown operator: 12 ' + v); + } + break; + case 14: + if (stack.length >= 4) { + var achar = stack.pop(); + var bchar = stack.pop(); + y = stack.pop(); + x = stack.pop(); + cmds.push({ cmd: 'save' }); + cmds.push({ + cmd: 'translate', + args: [x, y] + }); + var cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font); + cmds.push({ cmd: 'restore' }); + cmap = lookupCmap(font.cmap, String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[bchar]])); + compileCharString(font.glyphs[cmap.glyphId], cmds, font); + } + return; + case 18: + stems += stack.length >> 1; + stackClean = true; + break; + case 19: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 20: + stems += stack.length >> 1; + i += stems + 7 >> 3; + stackClean = true; + break; + case 21: + y += stack.pop(); + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 22: + x += stack.pop(); + moveTo(x, y); + stackClean = true; + break; + case 23: + stems += stack.length >> 1; + stackClean = true; + break; + case 24: + while (stack.length > 2) { + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + break; + case 25: + while (stack.length > 6) { + x += stack.shift(); + y += stack.shift(); + lineTo(x, y); + } + xa = x + stack.shift(); + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + break; + case 26: + if (stack.length % 2) { + x += stack.shift(); + } + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb; + y = yb + stack.shift(); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 27: + if (stack.length % 2) { + y += stack.shift(); + } + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb; + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 28: + stack.push((code[i] << 24 | code[i + 1] << 16) >> 16); + i += 2; + break; + case 29: + n = stack.pop() + font.gsubrsBias; + subrCode = font.gsubrs[n]; + if (subrCode) { + parse(subrCode); + } + break; + case 30: + while (stack.length > 0) { + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + case 31: + while (stack.length > 0) { + xa = x + stack.shift(); + ya = y; + xb = xa + stack.shift(); + yb = ya + stack.shift(); + y = yb + stack.shift(); + x = xb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + if (stack.length === 0) { + break; + } + xa = x; + ya = y + stack.shift(); + xb = xa + stack.shift(); + yb = ya + stack.shift(); + x = xb + stack.shift(); + y = yb + (stack.length === 1 ? stack.shift() : 0); + bezierCurveTo(xa, ya, xb, yb, x, y); + } + break; + default: + if (v < 32) { + throw new _util.FormatError('unknown operator: ' + v); + } + if (v < 247) { + stack.push(v - 139); + } else if (v < 251) { + stack.push((v - 247) * 256 + code[i++] + 108); + } else if (v < 255) { + stack.push(-(v - 251) * 256 - code[i++] - 108); + } else { + stack.push((code[i] << 24 | code[i + 1] << 16 | code[i + 2] << 8 | code[i + 3]) / 65536); + i += 4; + } + break; + } + if (stackClean) { + stack.length = 0; + } + } + } + parse(code); + } + var noop = ''; + function CompiledFont(fontMatrix) { + this.compiledGlyphs = Object.create(null); + this.compiledCharCodeToGlyphId = Object.create(null); + this.fontMatrix = fontMatrix; + } + CompiledFont.prototype = { + getPathJs: function getPathJs(unicode) { + var cmap = lookupCmap(this.cmap, unicode); + var fn = this.compiledGlyphs[cmap.glyphId]; + if (!fn) { + fn = this.compileGlyph(this.glyphs[cmap.glyphId]); + this.compiledGlyphs[cmap.glyphId] = fn; + } + if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) { + this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId; + } + return fn; + }, + compileGlyph: function compileGlyph(code) { + if (!code || code.length === 0 || code[0] === 14) { + return noop; + } + var cmds = []; + cmds.push({ cmd: 'save' }); + cmds.push({ + cmd: 'transform', + args: this.fontMatrix.slice() + }); + cmds.push({ + cmd: 'scale', + args: ['size', '-size'] + }); + this.compileGlyphImpl(code, cmds); + cmds.push({ cmd: 'restore' }); + return cmds; + }, + compileGlyphImpl: function compileGlyphImpl() { + throw new Error('Children classes should implement this.'); + }, + hasBuiltPath: function hasBuiltPath(unicode) { + var cmap = lookupCmap(this.cmap, unicode); + return this.compiledGlyphs[cmap.glyphId] !== undefined && this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined; + } + }; + function TrueTypeCompiled(glyphs, cmap, fontMatrix) { + fontMatrix = fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0]; + CompiledFont.call(this, fontMatrix); + this.glyphs = glyphs; + this.cmap = cmap; + } + _util.Util.inherit(TrueTypeCompiled, CompiledFont, { + compileGlyphImpl: function compileGlyphImpl(code, cmds) { + compileGlyf(code, cmds, this); + } + }); + function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) { + fontMatrix = fontMatrix || [0.001, 0, 0, 0.001, 0, 0]; + CompiledFont.call(this, fontMatrix); + this.glyphs = cffInfo.glyphs; + this.gsubrs = cffInfo.gsubrs || []; + this.subrs = cffInfo.subrs || []; + this.cmap = cmap; + this.glyphNameMap = glyphNameMap || (0, _glyphlist.getGlyphsUnicode)(); + this.gsubrsBias = this.gsubrs.length < 1240 ? 107 : this.gsubrs.length < 33900 ? 1131 : 32768; + this.subrsBias = this.subrs.length < 1240 ? 107 : this.subrs.length < 33900 ? 1131 : 32768; + } + _util.Util.inherit(Type2Compiled, CompiledFont, { + compileGlyphImpl: function compileGlyphImpl(code, cmds) { + compileCharString(code, cmds, this); + } + }); + return { + create: function FontRendererFactory_create(font, seacAnalysisEnabled) { + var data = new Uint8Array(font.data); + var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm; + var numTables = getUshort(data, 4); + for (var i = 0, p = 12; i < numTables; i++, p += 16) { + var tag = (0, _util.bytesToString)(data.subarray(p, p + 4)); + var offset = getLong(data, p + 8); + var length = getLong(data, p + 12); + switch (tag) { + case 'cmap': + cmap = parseCmap(data, offset, offset + length); + break; + case 'glyf': + glyf = data.subarray(offset, offset + length); + break; + case 'loca': + loca = data.subarray(offset, offset + length); + break; + case 'head': + unitsPerEm = getUshort(data, offset + 18); + indexToLocFormat = getUshort(data, offset + 50); + break; + case 'CFF ': + cff = parseCff(data, offset, offset + length, seacAnalysisEnabled); + break; + } + } + if (glyf) { + var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]; + return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix); + } + return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap); + } + }; +}(); +exports.FontRendererFactory = FontRendererFactory; + +/***/ }), +/* 25 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getFontType = exports.ProblematicCharRanges = exports.IdentityToUnicodeMap = exports.ToUnicodeMap = exports.FontFlags = exports.Font = exports.ErrorFont = exports.PRIVATE_USE_OFFSET_END = exports.PRIVATE_USE_OFFSET_START = exports.SEAC_ANALYSIS_ENABLED = undefined; + +var _util = __w_pdfjs_require__(0); + +var _cff_parser = __w_pdfjs_require__(10); + +var _glyphlist = __w_pdfjs_require__(6); + +var _encodings = __w_pdfjs_require__(4); + +var _standard_fonts = __w_pdfjs_require__(16); + +var _unicode = __w_pdfjs_require__(8); + +var _font_renderer = __w_pdfjs_require__(24); + +var _stream = __w_pdfjs_require__(2); + +var _type1_parser = __w_pdfjs_require__(34); + +var PRIVATE_USE_OFFSET_START = 0xE000; +var PRIVATE_USE_OFFSET_END = 0xF8FF; +var SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false; +var PDF_GLYPH_SPACE_UNITS = 1000; +var SEAC_ANALYSIS_ENABLED = false; +var FontFlags = { + FixedPitch: 1, + Serif: 2, + Symbolic: 4, + Script: 8, + Nonsymbolic: 32, + Italic: 64, + AllCap: 65536, + SmallCap: 131072, + ForceBold: 262144 +}; +var MacStandardGlyphOrdering = ['.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis', 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis', 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar', 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply', 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter', 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla', 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat']; +function adjustWidths(properties) { + if (!properties.fontMatrix) { + return; + } + if (properties.fontMatrix[0] === _util.FONT_IDENTITY_MATRIX[0]) { + return; + } + var scale = 0.001 / properties.fontMatrix[0]; + var glyphsWidths = properties.widths; + for (var glyph in glyphsWidths) { + glyphsWidths[glyph] *= scale; + } + properties.defaultWidth *= scale; +} +function adjustToUnicode(properties, builtInEncoding) { + if (properties.hasIncludedToUnicodeMap) { + return; + } + if (properties.hasEncoding) { + return; + } + if (builtInEncoding === properties.defaultEncoding) { + return; + } + if (properties.toUnicode instanceof IdentityToUnicodeMap) { + return; + } + var toUnicode = [], + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (var charCode in builtInEncoding) { + var glyphName = builtInEncoding[charCode]; + var unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + toUnicode[charCode] = String.fromCharCode(unicode); + } + } + properties.toUnicode.amend(toUnicode); +} +function getFontType(type, subtype) { + switch (type) { + case 'Type1': + return subtype === 'Type1C' ? _util.FontType.TYPE1C : _util.FontType.TYPE1; + case 'CIDFontType0': + return subtype === 'CIDFontType0C' ? _util.FontType.CIDFONTTYPE0C : _util.FontType.CIDFONTTYPE0; + case 'OpenType': + return _util.FontType.OPENTYPE; + case 'TrueType': + return _util.FontType.TRUETYPE; + case 'CIDFontType2': + return _util.FontType.CIDFONTTYPE2; + case 'MMType1': + return _util.FontType.MMTYPE1; + case 'Type0': + return _util.FontType.TYPE0; + default: + return _util.FontType.UNKNOWN; + } +} +function recoverGlyphName(name, glyphsUnicodeMap) { + if (glyphsUnicodeMap[name] !== undefined) { + return name; + } + var unicode = (0, _unicode.getUnicodeForGlyph)(name, glyphsUnicodeMap); + if (unicode !== -1) { + for (var key in glyphsUnicodeMap) { + if (glyphsUnicodeMap[key] === unicode) { + return key; + } + } + } + (0, _util.info)('Unable to recover a standard glyph name for: ' + name); + return name; +} +var Glyph = function GlyphClosure() { + function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + this.fontChar = fontChar; + this.unicode = unicode; + this.accent = accent; + this.width = width; + this.vmetric = vmetric; + this.operatorListId = operatorListId; + this.isSpace = isSpace; + this.isInFont = isInFont; + } + Glyph.prototype.matchesForCache = function (fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont) { + return this.fontChar === fontChar && this.unicode === unicode && this.accent === accent && this.width === width && this.vmetric === vmetric && this.operatorListId === operatorListId && this.isSpace === isSpace && this.isInFont === isInFont; + }; + return Glyph; +}(); +var ToUnicodeMap = function ToUnicodeMapClosure() { + function ToUnicodeMap(cmap) { + this._map = cmap; + } + ToUnicodeMap.prototype = { + get length() { + return this._map.length; + }, + forEach: function forEach(callback) { + for (var charCode in this._map) { + callback(charCode, this._map[charCode].charCodeAt(0)); + } + }, + has: function has(i) { + return this._map[i] !== undefined; + }, + get: function get(i) { + return this._map[i]; + }, + charCodeOf: function charCodeOf(value) { + var map = this._map; + if (map.length <= 0x10000) { + return map.indexOf(value); + } + for (var charCode in map) { + if (map[charCode] === value) { + return charCode | 0; + } + } + return -1; + }, + amend: function amend(map) { + for (var charCode in map) { + this._map[charCode] = map[charCode]; + } + } + }; + return ToUnicodeMap; +}(); +var IdentityToUnicodeMap = function IdentityToUnicodeMapClosure() { + function IdentityToUnicodeMap(firstChar, lastChar) { + this.firstChar = firstChar; + this.lastChar = lastChar; + } + IdentityToUnicodeMap.prototype = { + get length() { + return this.lastChar + 1 - this.firstChar; + }, + forEach: function forEach(callback) { + for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) { + callback(i, i); + } + }, + has: function has(i) { + return this.firstChar <= i && i <= this.lastChar; + }, + get: function get(i) { + if (this.firstChar <= i && i <= this.lastChar) { + return String.fromCharCode(i); + } + return undefined; + }, + charCodeOf: function charCodeOf(v) { + return (0, _util.isInt)(v) && v >= this.firstChar && v <= this.lastChar ? v : -1; + }, + amend: function amend(map) { + throw new Error('Should not call amend()'); + } + }; + return IdentityToUnicodeMap; +}(); +var OpenTypeFileBuilder = function OpenTypeFileBuilderClosure() { + function writeInt16(dest, offset, num) { + dest[offset] = num >> 8 & 0xFF; + dest[offset + 1] = num & 0xFF; + } + function writeInt32(dest, offset, num) { + dest[offset] = num >> 24 & 0xFF; + dest[offset + 1] = num >> 16 & 0xFF; + dest[offset + 2] = num >> 8 & 0xFF; + dest[offset + 3] = num & 0xFF; + } + function writeData(dest, offset, data) { + var i, ii; + if (data instanceof Uint8Array) { + dest.set(data, offset); + } else if (typeof data === 'string') { + for (i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data.charCodeAt(i) & 0xFF; + } + } else { + for (i = 0, ii = data.length; i < ii; i++) { + dest[offset++] = data[i] & 0xFF; + } + } + } + function OpenTypeFileBuilder(sfnt) { + this.sfnt = sfnt; + this.tables = Object.create(null); + } + OpenTypeFileBuilder.getSearchParams = function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) { + var maxPower2 = 1, + log2 = 0; + while ((maxPower2 ^ entriesCount) > maxPower2) { + maxPower2 <<= 1; + log2++; + } + var searchRange = maxPower2 * entrySize; + return { + range: searchRange, + entry: log2, + rangeShift: entrySize * entriesCount - searchRange + }; + }; + var OTF_HEADER_SIZE = 12; + var OTF_TABLE_ENTRY_SIZE = 16; + OpenTypeFileBuilder.prototype = { + toArray: function OpenTypeFileBuilder_toArray() { + var sfnt = this.sfnt; + var tables = this.tables; + var tablesNames = Object.keys(tables); + tablesNames.sort(); + var numTables = tablesNames.length; + var i, j, jj, table, tableName; + var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE; + var tableOffsets = [offset]; + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + var paddedLength = (table.length + 3 & ~3) >>> 0; + offset += paddedLength; + tableOffsets.push(offset); + } + var file = new Uint8Array(offset); + for (i = 0; i < numTables; i++) { + table = tables[tablesNames[i]]; + writeData(file, tableOffsets[i], table); + } + if (sfnt === 'true') { + sfnt = (0, _util.string32)(0x00010000); + } + file[0] = sfnt.charCodeAt(0) & 0xFF; + file[1] = sfnt.charCodeAt(1) & 0xFF; + file[2] = sfnt.charCodeAt(2) & 0xFF; + file[3] = sfnt.charCodeAt(3) & 0xFF; + writeInt16(file, 4, numTables); + var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16); + writeInt16(file, 6, searchParams.range); + writeInt16(file, 8, searchParams.entry); + writeInt16(file, 10, searchParams.rangeShift); + offset = OTF_HEADER_SIZE; + for (i = 0; i < numTables; i++) { + tableName = tablesNames[i]; + file[offset] = tableName.charCodeAt(0) & 0xFF; + file[offset + 1] = tableName.charCodeAt(1) & 0xFF; + file[offset + 2] = tableName.charCodeAt(2) & 0xFF; + file[offset + 3] = tableName.charCodeAt(3) & 0xFF; + var checksum = 0; + for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) { + var quad = (0, _util.readUint32)(file, j); + checksum = checksum + quad >>> 0; + } + writeInt32(file, offset + 4, checksum); + writeInt32(file, offset + 8, tableOffsets[i]); + writeInt32(file, offset + 12, tables[tableName].length); + offset += OTF_TABLE_ENTRY_SIZE; + } + return file; + }, + addTable: function OpenTypeFileBuilder_addTable(tag, data) { + if (tag in this.tables) { + throw new Error('Table ' + tag + ' already exists'); + } + this.tables[tag] = data; + } + }; + return OpenTypeFileBuilder; +}(); +var ProblematicCharRanges = new Int32Array([0x0000, 0x0020, 0x007F, 0x00A1, 0x00AD, 0x00AE, 0x0600, 0x0780, 0x08A0, 0x10A0, 0x1780, 0x1800, 0x1C00, 0x1C50, 0x2000, 0x2010, 0x2011, 0x2012, 0x2028, 0x2030, 0x205F, 0x2070, 0x25CC, 0x25CD, 0x3000, 0x3001, 0x3164, 0x3165, 0xAA60, 0xAA80, 0xFFF0, 0x10000]); +var Font = function FontClosure() { + function Font(name, file, properties) { + var charCode; + this.name = name; + this.loadedName = properties.loadedName; + this.isType3Font = properties.isType3Font; + this.sizes = []; + this.missingFile = false; + this.glyphCache = Object.create(null); + this.isSerifFont = !!(properties.flags & FontFlags.Serif); + this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + this.isMonospace = !!(properties.flags & FontFlags.FixedPitch); + var type = properties.type; + var subtype = properties.subtype; + this.type = type; + this.subtype = subtype; + this.fallbackName = this.isMonospace ? 'monospace' : this.isSerifFont ? 'serif' : 'sans-serif'; + this.differences = properties.differences; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.composite = properties.composite; + this.wideChars = properties.wideChars; + this.cMap = properties.cMap; + this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS; + this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS; + this.fontMatrix = properties.fontMatrix; + this.bbox = properties.bbox; + this.defaultEncoding = properties.defaultEncoding; + this.toUnicode = properties.toUnicode; + this.toFontChar = []; + if (properties.type === 'Type3') { + for (charCode = 0; charCode < 256; charCode++) { + this.toFontChar[charCode] = this.differences[charCode] || properties.defaultEncoding[charCode]; + } + this.fontType = _util.FontType.TYPE3; + return; + } + this.cidEncoding = properties.cidEncoding; + this.vertical = properties.vertical; + if (this.vertical) { + this.vmetrics = properties.vmetrics; + this.defaultVMetrics = properties.defaultVMetrics; + } + if (!file || file.isEmpty) { + if (file) { + (0, _util.warn)('Font file is empty in "' + name + '" (' + this.loadedName + ')'); + } + this.fallbackToSystemFont(); + return; + } + if (subtype === 'Type1C') { + if (type !== 'Type1' && type !== 'MMType1') { + if (isTrueTypeFile(file)) { + subtype = 'TrueType'; + } else { + type = 'Type1'; + } + } else if (isOpenTypeFile(file)) { + subtype = 'OpenType'; + } + } + if (subtype === 'CIDFontType0C' && type !== 'CIDFontType0') { + type = 'CIDFontType0'; + } + if (type === 'CIDFontType0') { + if (isType1File(file)) { + subtype = 'CIDFontType0'; + } else if (isOpenTypeFile(file)) { + subtype = 'OpenType'; + } else { + subtype = 'CIDFontType0C'; + } + } + if (subtype === 'OpenType' && type !== 'OpenType') { + type = 'OpenType'; + } + try { + var data; + switch (type) { + case 'MMType1': + (0, _util.info)('MMType1 font (' + name + '), falling back to Type1.'); + case 'Type1': + case 'CIDFontType0': + this.mimetype = 'font/opentype'; + var cff = subtype === 'Type1C' || subtype === 'CIDFontType0C' ? new CFFFont(file, properties) : new Type1Font(name, file, properties); + adjustWidths(properties); + data = this.convert(name, cff, properties); + break; + case 'OpenType': + case 'TrueType': + case 'CIDFontType2': + this.mimetype = 'font/opentype'; + data = this.checkAndRepair(name, file, properties); + if (this.isOpenType) { + adjustWidths(properties); + type = 'OpenType'; + } + break; + default: + throw new _util.FormatError('Font ' + type + ' is not supported'); + } + } catch (e) { + if (!(e instanceof _util.FormatError)) { + throw e; + } + (0, _util.warn)(e); + this.fallbackToSystemFont(); + return; + } + this.data = data; + this.fontType = getFontType(type, subtype); + this.fontMatrix = properties.fontMatrix; + this.widths = properties.widths; + this.defaultWidth = properties.defaultWidth; + this.toUnicode = properties.toUnicode; + this.encoding = properties.baseEncoding; + this.seacMap = properties.seacMap; + this.loading = true; + } + Font.getFontID = function () { + var ID = 1; + return function Font_getFontID() { + return String(ID++); + }; + }(); + function int16(b0, b1) { + return (b0 << 8) + b1; + } + function signedInt16(b0, b1) { + var value = (b0 << 8) + b1; + return value & 1 << 15 ? value - 0x10000 : value; + } + function int32(b0, b1, b2, b3) { + return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; + } + function string16(value) { + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); + } + function safeString16(value) { + value = value > 0x7FFF ? 0x7FFF : value < -0x8000 ? -0x8000 : value; + return String.fromCharCode(value >> 8 & 0xff, value & 0xff); + } + function isTrueTypeFile(file) { + var header = file.peekBytes(4); + return (0, _util.readUint32)(header, 0) === 0x00010000; + } + function isOpenTypeFile(file) { + var header = file.peekBytes(4); + return (0, _util.bytesToString)(header) === 'OTTO'; + } + function isType1File(file) { + var header = file.peekBytes(2); + if (header[0] === 0x25 && header[1] === 0x21) { + return true; + } + if (header[0] === 0x80 && header[1] === 0x01) { + return true; + } + return false; + } + function buildToFontChar(encoding, glyphsUnicodeMap, differences) { + var toFontChar = [], + unicode; + for (var i = 0, ii = encoding.length; i < ii; i++) { + unicode = (0, _unicode.getUnicodeForGlyph)(encoding[i], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[i] = unicode; + } + } + for (var charCode in differences) { + unicode = (0, _unicode.getUnicodeForGlyph)(differences[charCode], glyphsUnicodeMap); + if (unicode !== -1) { + toFontChar[+charCode] = unicode; + } + } + return toFontChar; + } + function isProblematicUnicodeLocation(code) { + var i = 0, + j = ProblematicCharRanges.length - 1; + while (i < j) { + var c = i + j + 1 >> 1; + if (code < ProblematicCharRanges[c]) { + j = c - 1; + } else { + i = c; + } + } + return !(i & 1); + } + function adjustMapping(charCodeToGlyphId, properties, missingGlyphs) { + var toUnicode = properties.toUnicode; + var isSymbolic = !!(properties.flags & FontFlags.Symbolic); + var isIdentityUnicode = properties.toUnicode instanceof IdentityToUnicodeMap; + var newMap = Object.create(null); + var toFontChar = []; + var usedFontCharCodes = []; + var nextAvailableFontCharCode = PRIVATE_USE_OFFSET_START; + for (var originalCharCode in charCodeToGlyphId) { + originalCharCode |= 0; + var glyphId = charCodeToGlyphId[originalCharCode]; + if (missingGlyphs[glyphId]) { + continue; + } + var fontCharCode = originalCharCode; + var hasUnicodeValue = false; + if (!isIdentityUnicode && toUnicode.has(originalCharCode)) { + hasUnicodeValue = true; + var unicode = toUnicode.get(fontCharCode); + if (unicode.length === 1) { + fontCharCode = unicode.charCodeAt(0); + } + } + if (usedFontCharCodes[fontCharCode] !== undefined || isProblematicUnicodeLocation(fontCharCode) || isSymbolic && !hasUnicodeValue) { + do { + if (nextAvailableFontCharCode > PRIVATE_USE_OFFSET_END) { + (0, _util.warn)('Ran out of space in font private use area.'); + break; + } + fontCharCode = nextAvailableFontCharCode++; + if (SKIP_PRIVATE_USE_RANGE_F000_TO_F01F && fontCharCode === 0xF000) { + fontCharCode = 0xF020; + nextAvailableFontCharCode = fontCharCode + 1; + } + } while (usedFontCharCodes[fontCharCode] !== undefined); + } + newMap[fontCharCode] = glyphId; + toFontChar[originalCharCode] = fontCharCode; + usedFontCharCodes[fontCharCode] = true; + } + return { + toFontChar: toFontChar, + charCodeToGlyphId: newMap, + nextAvailableFontCharCode: nextAvailableFontCharCode + }; + } + function getRanges(glyphs, numGlyphs) { + var codes = []; + for (var charCode in glyphs) { + if (glyphs[charCode] >= numGlyphs) { + continue; + } + codes.push({ + fontCharCode: charCode | 0, + glyphId: glyphs[charCode] + }); + } + if (codes.length === 0) { + codes.push({ + fontCharCode: 0, + glyphId: 0 + }); + } + codes.sort(function fontGetRangesSort(a, b) { + return a.fontCharCode - b.fontCharCode; + }); + var ranges = []; + var length = codes.length; + for (var n = 0; n < length;) { + var start = codes[n].fontCharCode; + var codeIndices = [codes[n].glyphId]; + ++n; + var end = start; + while (n < length && end + 1 === codes[n].fontCharCode) { + codeIndices.push(codes[n].glyphId); + ++end; + ++n; + if (end === 0xFFFF) { + break; + } + } + ranges.push([start, end, codeIndices]); + } + return ranges; + } + function createCmapTable(glyphs, numGlyphs) { + var ranges = getRanges(glyphs, numGlyphs); + var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1; + var cmap = '\x00\x00' + string16(numTables) + '\x00\x03' + '\x00\x01' + (0, _util.string32)(4 + numTables * 8); + var i, ii, j, jj; + for (i = ranges.length - 1; i >= 0; --i) { + if (ranges[i][0] <= 0xFFFF) { + break; + } + } + var bmpLength = i + 1; + if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) { + ranges[i][1] = 0xFFFE; + } + var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0; + var segCount = bmpLength + trailingRangesCount; + var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2); + var startCount = ''; + var endCount = ''; + var idDeltas = ''; + var idRangeOffsets = ''; + var glyphsIds = ''; + var bias = 0; + var range, start, end, codes; + for (i = 0, ii = bmpLength; i < ii; i++) { + range = ranges[i]; + start = range[0]; + end = range[1]; + startCount += string16(start); + endCount += string16(end); + codes = range[2]; + var contiguous = true; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + contiguous = false; + break; + } + } + if (!contiguous) { + var offset = (segCount - i) * 2 + bias * 2; + bias += end - start + 1; + idDeltas += string16(0); + idRangeOffsets += string16(offset); + for (j = 0, jj = codes.length; j < jj; ++j) { + glyphsIds += string16(codes[j]); + } + } else { + var startCode = codes[0]; + idDeltas += string16(startCode - start & 0xFFFF); + idRangeOffsets += string16(0); + } + } + if (trailingRangesCount > 0) { + endCount += '\xFF\xFF'; + startCount += '\xFF\xFF'; + idDeltas += '\x00\x01'; + idRangeOffsets += '\x00\x00'; + } + var format314 = '\x00\x00' + string16(2 * segCount) + string16(searchParams.range) + string16(searchParams.entry) + string16(searchParams.rangeShift) + endCount + '\x00\x00' + startCount + idDeltas + idRangeOffsets + glyphsIds; + var format31012 = ''; + var header31012 = ''; + if (numTables > 1) { + cmap += '\x00\x03' + '\x00\x0A' + (0, _util.string32)(4 + numTables * 8 + 4 + format314.length); + format31012 = ''; + for (i = 0, ii = ranges.length; i < ii; i++) { + range = ranges[i]; + start = range[0]; + codes = range[2]; + var code = codes[0]; + for (j = 1, jj = codes.length; j < jj; ++j) { + if (codes[j] !== codes[j - 1] + 1) { + end = range[0] + j - 1; + format31012 += (0, _util.string32)(start) + (0, _util.string32)(end) + (0, _util.string32)(code); + start = end + 1; + code = codes[j]; + } + } + format31012 += (0, _util.string32)(start) + (0, _util.string32)(range[1]) + (0, _util.string32)(code); + } + header31012 = '\x00\x0C' + '\x00\x00' + (0, _util.string32)(format31012.length + 16) + '\x00\x00\x00\x00' + (0, _util.string32)(format31012.length / 12); + } + return cmap + '\x00\x04' + string16(format314.length + 4) + format314 + header31012 + format31012; + } + function validateOS2Table(os2) { + var stream = new _stream.Stream(os2.data); + var version = stream.getUint16(); + stream.getBytes(60); + var selection = stream.getUint16(); + if (version < 4 && selection & 0x0300) { + return false; + } + var firstChar = stream.getUint16(); + var lastChar = stream.getUint16(); + if (firstChar > lastChar) { + return false; + } + stream.getBytes(6); + var usWinAscent = stream.getUint16(); + if (usWinAscent === 0) { + return false; + } + os2.data[8] = os2.data[9] = 0; + return true; + } + function createOS2Table(properties, charstrings, override) { + override = override || { + unitsPerEm: 0, + yMax: 0, + yMin: 0, + ascent: 0, + descent: 0 + }; + var ulUnicodeRange1 = 0; + var ulUnicodeRange2 = 0; + var ulUnicodeRange3 = 0; + var ulUnicodeRange4 = 0; + var firstCharIndex = null; + var lastCharIndex = 0; + if (charstrings) { + for (var code in charstrings) { + code |= 0; + if (firstCharIndex > code || !firstCharIndex) { + firstCharIndex = code; + } + if (lastCharIndex < code) { + lastCharIndex = code; + } + var position = (0, _unicode.getUnicodeRangeFor)(code); + if (position < 32) { + ulUnicodeRange1 |= 1 << position; + } else if (position < 64) { + ulUnicodeRange2 |= 1 << position - 32; + } else if (position < 96) { + ulUnicodeRange3 |= 1 << position - 64; + } else if (position < 123) { + ulUnicodeRange4 |= 1 << position - 96; + } else { + throw new _util.FormatError('Unicode ranges Bits > 123 are reserved for internal usage'); + } + } + } else { + firstCharIndex = 0; + lastCharIndex = 255; + } + var bbox = properties.bbox || [0, 0, 0, 0]; + var unitsPerEm = override.unitsPerEm || 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + var scale = properties.ascentScaled ? 1.0 : unitsPerEm / PDF_GLYPH_SPACE_UNITS; + var typoAscent = override.ascent || Math.round(scale * (properties.ascent || bbox[3])); + var typoDescent = override.descent || Math.round(scale * (properties.descent || bbox[1])); + if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) { + typoDescent = -typoDescent; + } + var winAscent = override.yMax || typoAscent; + var winDescent = -override.yMin || -typoDescent; + return '\x00\x03' + '\x02\x24' + '\x01\xF4' + '\x00\x05' + '\x00\x00' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x00\x8C' + '\x02\x8A' + '\x02\xBB' + '\x00\x00' + '\x01\xDF' + '\x00\x31' + '\x01\x02' + '\x00\x00' + '\x00\x00\x06' + String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) + '\x00\x00\x00\x00\x00\x00' + (0, _util.string32)(ulUnicodeRange1) + (0, _util.string32)(ulUnicodeRange2) + (0, _util.string32)(ulUnicodeRange3) + (0, _util.string32)(ulUnicodeRange4) + '\x2A\x32\x31\x2A' + string16(properties.italicAngle ? 1 : 0) + string16(firstCharIndex || properties.firstChar) + string16(lastCharIndex || properties.lastChar) + string16(typoAscent) + string16(typoDescent) + '\x00\x64' + string16(winAscent) + string16(winDescent) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + string16(properties.xHeight) + string16(properties.capHeight) + string16(0) + string16(firstCharIndex || properties.firstChar) + '\x00\x03'; + } + function createPostTable(properties) { + var angle = Math.floor(properties.italicAngle * Math.pow(2, 16)); + return '\x00\x03\x00\x00' + (0, _util.string32)(angle) + '\x00\x00' + '\x00\x00' + (0, _util.string32)(properties.fixedPitch) + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00' + '\x00\x00\x00\x00'; + } + function createNameTable(name, proto) { + if (!proto) { + proto = [[], []]; + } + var strings = [proto[0][0] || 'Original licence', proto[0][1] || name, proto[0][2] || 'Unknown', proto[0][3] || 'uniqueID', proto[0][4] || name, proto[0][5] || 'Version 0.11', proto[0][6] || '', proto[0][7] || 'Unknown', proto[0][8] || 'Unknown', proto[0][9] || 'Unknown']; + var stringsUnicode = []; + var i, ii, j, jj, str; + for (i = 0, ii = strings.length; i < ii; i++) { + str = proto[1][i] || strings[i]; + var strBufUnicode = []; + for (j = 0, jj = str.length; j < jj; j++) { + strBufUnicode.push(string16(str.charCodeAt(j))); + } + stringsUnicode.push(strBufUnicode.join('')); + } + var names = [strings, stringsUnicode]; + var platforms = ['\x00\x01', '\x00\x03']; + var encodings = ['\x00\x00', '\x00\x01']; + var languages = ['\x00\x00', '\x04\x09']; + var namesRecordCount = strings.length * platforms.length; + var nameTable = '\x00\x00' + string16(namesRecordCount) + string16(namesRecordCount * 12 + 6); + var strOffset = 0; + for (i = 0, ii = platforms.length; i < ii; i++) { + var strs = names[i]; + for (j = 0, jj = strs.length; j < jj; j++) { + str = strs[j]; + var nameRecord = platforms[i] + encodings[i] + languages[i] + string16(j) + string16(str.length) + string16(strOffset); + nameTable += nameRecord; + strOffset += str.length; + } + } + nameTable += strings.join('') + stringsUnicode.join(''); + return nameTable; + } + Font.prototype = { + name: null, + font: null, + mimetype: null, + encoding: null, + get renderer() { + var renderer = _font_renderer.FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED); + return (0, _util.shadow)(this, 'renderer', renderer); + }, + exportData: function Font_exportData() { + var data = {}; + for (var i in this) { + if (this.hasOwnProperty(i)) { + data[i] = this[i]; + } + } + return data; + }, + fallbackToSystemFont: function Font_fallbackToSystemFont() { + var _this = this; + + this.missingFile = true; + var charCode, unicode; + var name = this.name; + var type = this.type; + var subtype = this.subtype; + var fontName = name.replace(/[,_]/g, '-'); + var stdFontMap = (0, _standard_fonts.getStdFontMap)(), + nonStdFontMap = (0, _standard_fonts.getNonStdFontMap)(); + var isStandardFont = !!stdFontMap[fontName] || !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]); + fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName; + this.bold = fontName.search(/bold/gi) !== -1; + this.italic = fontName.search(/oblique/gi) !== -1 || fontName.search(/italic/gi) !== -1; + this.black = name.search(/Black/g) !== -1; + this.remeasure = Object.keys(this.widths).length > 0; + if (isStandardFont && type === 'CIDFontType2' && this.cidEncoding.indexOf('Identity-') === 0) { + var GlyphMapForStandardFonts = (0, _standard_fonts.getGlyphMapForStandardFonts)(); + var map = []; + for (charCode in GlyphMapForStandardFonts) { + map[+charCode] = GlyphMapForStandardFonts[charCode]; + } + if (/Arial-?Black/i.test(name)) { + var SupplementalGlyphMapForArialBlack = (0, _standard_fonts.getSupplementalGlyphMapForArialBlack)(); + for (charCode in SupplementalGlyphMapForArialBlack) { + map[+charCode] = SupplementalGlyphMapForArialBlack[charCode]; + } + } + var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap; + if (!isIdentityUnicode) { + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + map[+charCode] = unicodeCharCode; + }); + } + this.toFontChar = map; + this.toUnicode = new ToUnicodeMap(map); + } else if (/Symbol/i.test(fontName)) { + this.toFontChar = buildToFontChar(_encodings.SymbolSetEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + } else if (/Dingbats/i.test(fontName)) { + if (/Wingdings/i.test(name)) { + (0, _util.warn)('Non-embedded Wingdings font, falling back to ZapfDingbats.'); + } + this.toFontChar = buildToFontChar(_encodings.ZapfDingbatsEncoding, (0, _glyphlist.getDingbatsGlyphsUnicode)(), this.differences); + } else if (isStandardFont) { + this.toFontChar = buildToFontChar(this.defaultEncoding, (0, _glyphlist.getGlyphsUnicode)(), this.differences); + } else { + var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + this.toUnicode.forEach(function (charCode, unicodeCharCode) { + if (!_this.composite) { + var glyphName = _this.differences[charCode] || _this.defaultEncoding[charCode]; + unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap); + if (unicode !== -1) { + unicodeCharCode = unicode; + } + } + _this.toFontChar[charCode] = unicodeCharCode; + }); + } + this.loadedName = fontName.split('-')[0]; + this.loading = false; + this.fontType = getFontType(type, subtype); + }, + checkAndRepair: function Font_checkAndRepair(name, font, properties) { + function readTableEntry(file) { + var tag = (0, _util.bytesToString)(file.getBytes(4)); + var checksum = file.getInt32() >>> 0; + var offset = file.getInt32() >>> 0; + var length = file.getInt32() >>> 0; + var previousPosition = file.pos; + file.pos = file.start ? file.start : 0; + file.skip(offset); + var data = file.getBytes(length); + file.pos = previousPosition; + if (tag === 'head') { + data[8] = data[9] = data[10] = data[11] = 0; + data[17] |= 0x20; + } + return { + tag: tag, + checksum: checksum, + length: length, + offset: offset, + data: data + }; + } + function readOpenTypeHeader(ttf) { + return { + version: (0, _util.bytesToString)(ttf.getBytes(4)), + numTables: ttf.getUint16(), + searchRange: ttf.getUint16(), + entrySelector: ttf.getUint16(), + rangeShift: ttf.getUint16() + }; + } + function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) { + if (!cmap) { + (0, _util.warn)('No cmap table available.'); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + var segment; + var start = (font.start ? font.start : 0) + cmap.offset; + font.pos = start; + font.getUint16(); + var numTables = font.getUint16(); + var potentialTable; + var canBreak = false; + for (var i = 0; i < numTables; i++) { + var platformId = font.getUint16(); + var encodingId = font.getUint16(); + var offset = font.getInt32() >>> 0; + var useTable = false; + if (potentialTable && potentialTable.platformId === platformId && potentialTable.encodingId === encodingId) { + continue; + } + if (platformId === 0 && encodingId === 0) { + useTable = true; + } else if (platformId === 1 && encodingId === 0) { + useTable = true; + } else if (platformId === 3 && encodingId === 1 && (hasEncoding || !potentialTable)) { + useTable = true; + if (!isSymbolicFont) { + canBreak = true; + } + } else if (isSymbolicFont && platformId === 3 && encodingId === 0) { + useTable = true; + canBreak = true; + } + if (useTable) { + potentialTable = { + platformId: platformId, + encodingId: encodingId, + offset: offset + }; + } + if (canBreak) { + break; + } + } + if (potentialTable) { + font.pos = start + potentialTable.offset; + } + if (!potentialTable || font.peekByte() === -1) { + (0, _util.warn)('Could not find a preferred cmap table.'); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + var format = font.getUint16(); + font.getUint16(); + font.getUint16(); + var hasShortCmap = false; + var mappings = []; + var j, glyphId; + if (format === 0) { + for (j = 0; j < 256; j++) { + var index = font.getByte(); + if (!index) { + continue; + } + mappings.push({ + charCode: j, + glyphId: index + }); + } + hasShortCmap = true; + } else if (format === 4) { + var segCount = font.getUint16() >> 1; + font.getBytes(6); + var segIndex, + segments = []; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments.push({ end: font.getUint16() }); + } + font.getUint16(); + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].start = font.getUint16(); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segments[segIndex].delta = font.getUint16(); + } + var offsetsCount = 0; + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + var rangeOffset = font.getUint16(); + if (!rangeOffset) { + segment.offsetIndex = -1; + continue; + } + var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex); + segment.offsetIndex = offsetIndex; + offsetsCount = Math.max(offsetsCount, offsetIndex + segment.end - segment.start + 1); + } + var offsets = []; + for (j = 0; j < offsetsCount; j++) { + offsets.push(font.getUint16()); + } + for (segIndex = 0; segIndex < segCount; segIndex++) { + segment = segments[segIndex]; + start = segment.start; + var end = segment.end; + var delta = segment.delta; + offsetIndex = segment.offsetIndex; + for (j = start; j <= end; j++) { + if (j === 0xFFFF) { + continue; + } + glyphId = offsetIndex < 0 ? j : offsets[offsetIndex + j - start]; + glyphId = glyphId + delta & 0xFFFF; + mappings.push({ + charCode: j, + glyphId: glyphId + }); + } + } + } else if (format === 6) { + var firstCode = font.getUint16(); + var entryCount = font.getUint16(); + for (j = 0; j < entryCount; j++) { + glyphId = font.getUint16(); + var charCode = firstCode + j; + mappings.push({ + charCode: charCode, + glyphId: glyphId + }); + } + } else { + (0, _util.warn)('cmap table has unsupported format: ' + format); + return { + platformId: -1, + encodingId: -1, + mappings: [], + hasShortCmap: false + }; + } + mappings.sort(function (a, b) { + return a.charCode - b.charCode; + }); + for (i = 1; i < mappings.length; i++) { + if (mappings[i - 1].charCode === mappings[i].charCode) { + mappings.splice(i, 1); + i--; + } + } + return { + platformId: potentialTable.platformId, + encodingId: potentialTable.encodingId, + mappings: mappings, + hasShortCmap: hasShortCmap + }; + } + function sanitizeMetrics(font, header, metrics, numGlyphs) { + if (!header) { + if (metrics) { + metrics.data = null; + } + return; + } + font.pos = (font.start ? font.start : 0) + header.offset; + font.pos += header.length - 2; + var numOfMetrics = font.getUint16(); + if (numOfMetrics > numGlyphs) { + (0, _util.info)('The numOfMetrics (' + numOfMetrics + ') should not be ' + 'greater than the numGlyphs (' + numGlyphs + ')'); + numOfMetrics = numGlyphs; + header.data[34] = (numOfMetrics & 0xff00) >> 8; + header.data[35] = numOfMetrics & 0x00ff; + } + var numOfSidebearings = numGlyphs - numOfMetrics; + var numMissing = numOfSidebearings - (metrics.length - numOfMetrics * 4 >> 1); + if (numMissing > 0) { + var entries = new Uint8Array(metrics.length + numMissing * 2); + entries.set(metrics.data); + metrics.data = entries; + } + } + function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart, hintsValid) { + if (sourceEnd - sourceStart <= 12) { + return 0; + } + var glyf = source.subarray(sourceStart, sourceEnd); + var contoursCount = glyf[0] << 8 | glyf[1]; + if (contoursCount & 0x8000) { + dest.set(glyf, destStart); + return glyf.length; + } + var i, + j = 10, + flagsCount = 0; + for (i = 0; i < contoursCount; i++) { + var endPoint = glyf[j] << 8 | glyf[j + 1]; + flagsCount = endPoint + 1; + j += 2; + } + var instructionsStart = j; + var instructionsLength = glyf[j] << 8 | glyf[j + 1]; + j += 2 + instructionsLength; + var instructionsEnd = j; + var coordinatesLength = 0; + for (i = 0; i < flagsCount; i++) { + var flag = glyf[j++]; + if (flag & 0xC0) { + glyf[j - 1] = flag & 0x3F; + } + var xyLength = (flag & 2 ? 1 : flag & 16 ? 0 : 2) + (flag & 4 ? 1 : flag & 32 ? 0 : 2); + coordinatesLength += xyLength; + if (flag & 8) { + var repeat = glyf[j++]; + i += repeat; + coordinatesLength += repeat * xyLength; + } + } + if (coordinatesLength === 0) { + return 0; + } + var glyphDataLength = j + coordinatesLength; + if (glyphDataLength > glyf.length) { + return 0; + } + if (!hintsValid && instructionsLength > 0) { + dest.set(glyf.subarray(0, instructionsStart), destStart); + dest.set([0, 0], destStart + instructionsStart); + dest.set(glyf.subarray(instructionsEnd, glyphDataLength), destStart + instructionsStart + 2); + glyphDataLength -= instructionsLength; + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + } + return glyphDataLength; + } + if (glyf.length - glyphDataLength > 3) { + glyphDataLength = glyphDataLength + 3 & ~3; + dest.set(glyf.subarray(0, glyphDataLength), destStart); + return glyphDataLength; + } + dest.set(glyf, destStart); + return glyf.length; + } + function sanitizeHead(head, numGlyphs, locaLength) { + var data = head.data; + var version = int32(data[0], data[1], data[2], data[3]); + if (version >> 16 !== 1) { + (0, _util.info)('Attempting to fix invalid version in head table: ' + version); + data[0] = 0; + data[1] = 1; + data[2] = 0; + data[3] = 0; + } + var indexToLocFormat = int16(data[50], data[51]); + if (indexToLocFormat < 0 || indexToLocFormat > 1) { + (0, _util.info)('Attempting to fix invalid indexToLocFormat in head table: ' + indexToLocFormat); + var numGlyphsPlusOne = numGlyphs + 1; + if (locaLength === numGlyphsPlusOne << 1) { + data[50] = 0; + data[51] = 0; + } else if (locaLength === numGlyphsPlusOne << 2) { + data[50] = 0; + data[51] = 1; + } else { + throw new _util.FormatError('Could not fix indexToLocFormat: ' + indexToLocFormat); + } + } + } + function sanitizeGlyphLocations(loca, glyf, numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry) { + var itemSize, itemDecode, itemEncode; + if (isGlyphLocationsLong) { + itemSize = 4; + itemDecode = function fontItemDecodeLong(data, offset) { + return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]; + }; + itemEncode = function fontItemEncodeLong(data, offset, value) { + data[offset] = value >>> 24 & 0xFF; + data[offset + 1] = value >> 16 & 0xFF; + data[offset + 2] = value >> 8 & 0xFF; + data[offset + 3] = value & 0xFF; + }; + } else { + itemSize = 2; + itemDecode = function fontItemDecode(data, offset) { + return data[offset] << 9 | data[offset + 1] << 1; + }; + itemEncode = function fontItemEncode(data, offset, value) { + data[offset] = value >> 9 & 0xFF; + data[offset + 1] = value >> 1 & 0xFF; + }; + } + var locaData = loca.data; + var locaDataSize = itemSize * (1 + numGlyphs); + if (locaData.length !== locaDataSize) { + locaData = new Uint8Array(locaDataSize); + locaData.set(loca.data.subarray(0, locaDataSize)); + loca.data = locaData; + } + var oldGlyfData = glyf.data; + var oldGlyfDataLength = oldGlyfData.length; + var newGlyfData = new Uint8Array(oldGlyfDataLength); + var startOffset = itemDecode(locaData, 0); + var writeOffset = 0; + var missingGlyphData = Object.create(null); + itemEncode(locaData, 0, writeOffset); + var i, j; + var locaCount = dupFirstEntry ? numGlyphs - 1 : numGlyphs; + for (i = 0, j = itemSize; i < locaCount; i++, j += itemSize) { + var endOffset = itemDecode(locaData, j); + if (endOffset > oldGlyfDataLength && (oldGlyfDataLength + 3 & ~3) === endOffset) { + endOffset = oldGlyfDataLength; + } + if (endOffset > oldGlyfDataLength) { + startOffset = endOffset; + } + var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset, newGlyfData, writeOffset, hintsValid); + if (newLength === 0) { + missingGlyphData[i] = true; + } + writeOffset += newLength; + itemEncode(locaData, j, writeOffset); + startOffset = endOffset; + } + if (writeOffset === 0) { + var simpleGlyph = new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]); + for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) { + itemEncode(locaData, j, simpleGlyph.length); + } + glyf.data = simpleGlyph; + return missingGlyphData; + } + if (dupFirstEntry) { + var firstEntryLength = itemDecode(locaData, itemSize); + if (newGlyfData.length > firstEntryLength + writeOffset) { + glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset); + } else { + glyf.data = new Uint8Array(firstEntryLength + writeOffset); + glyf.data.set(newGlyfData.subarray(0, writeOffset)); + } + glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset); + itemEncode(loca.data, locaData.length - itemSize, writeOffset + firstEntryLength); + } else { + glyf.data = newGlyfData.subarray(0, writeOffset); + } + return missingGlyphData; + } + function readPostScriptTable(post, properties, maxpNumGlyphs) { + var start = (font.start ? font.start : 0) + post.offset; + font.pos = start; + var length = post.length, + end = start + length; + var version = font.getInt32(); + font.getBytes(28); + var glyphNames; + var valid = true; + var i; + switch (version) { + case 0x00010000: + glyphNames = MacStandardGlyphOrdering; + break; + case 0x00020000: + var numGlyphs = font.getUint16(); + if (numGlyphs !== maxpNumGlyphs) { + valid = false; + break; + } + var glyphNameIndexes = []; + for (i = 0; i < numGlyphs; ++i) { + var index = font.getUint16(); + if (index >= 32768) { + valid = false; + break; + } + glyphNameIndexes.push(index); + } + if (!valid) { + break; + } + var customNames = []; + var strBuf = []; + while (font.pos < end) { + var stringLength = font.getByte(); + strBuf.length = stringLength; + for (i = 0; i < stringLength; ++i) { + strBuf[i] = String.fromCharCode(font.getByte()); + } + customNames.push(strBuf.join('')); + } + glyphNames = []; + for (i = 0; i < numGlyphs; ++i) { + var j = glyphNameIndexes[i]; + if (j < 258) { + glyphNames.push(MacStandardGlyphOrdering[j]); + continue; + } + glyphNames.push(customNames[j - 258]); + } + break; + case 0x00030000: + break; + default: + (0, _util.warn)('Unknown/unsupported post table version ' + version); + valid = false; + if (properties.defaultEncoding) { + glyphNames = properties.defaultEncoding; + } + break; + } + properties.glyphNames = glyphNames; + return valid; + } + function readNameTable(nameTable) { + var start = (font.start ? font.start : 0) + nameTable.offset; + font.pos = start; + var names = [[], []]; + var length = nameTable.length, + end = start + length; + var format = font.getUint16(); + var FORMAT_0_HEADER_LENGTH = 6; + if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) { + return names; + } + var numRecords = font.getUint16(); + var stringsStart = font.getUint16(); + var records = []; + var NAME_RECORD_LENGTH = 12; + var i, ii; + for (i = 0; i < numRecords && font.pos + NAME_RECORD_LENGTH <= end; i++) { + var r = { + platform: font.getUint16(), + encoding: font.getUint16(), + language: font.getUint16(), + name: font.getUint16(), + length: font.getUint16(), + offset: font.getUint16() + }; + if (r.platform === 1 && r.encoding === 0 && r.language === 0 || r.platform === 3 && r.encoding === 1 && r.language === 0x409) { + records.push(r); + } + } + for (i = 0, ii = records.length; i < ii; i++) { + var record = records[i]; + if (record.length <= 0) { + continue; + } + var pos = start + stringsStart + record.offset; + if (pos + record.length > end) { + continue; + } + font.pos = pos; + var nameIndex = record.name; + if (record.encoding) { + var str = ''; + for (var j = 0, jj = record.length; j < jj; j += 2) { + str += String.fromCharCode(font.getUint16()); + } + names[1][nameIndex] = str; + } else { + names[0][nameIndex] = (0, _util.bytesToString)(font.getBytes(record.length)); + } + } + return names; + } + var TTOpsStackDeltas = [0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1, 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1, 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2, 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1, -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2]; + function sanitizeTTProgram(table, ttContext) { + var data = table.data; + var i = 0, + j, + n, + b, + funcId, + pc, + lastEndf = 0, + lastDeff = 0; + var stack = []; + var callstack = []; + var functionsCalled = []; + var tooComplexToFollowFunctions = ttContext.tooComplexToFollowFunctions; + var inFDEF = false, + ifLevel = 0, + inELSE = 0; + for (var ii = data.length; i < ii;) { + var op = data[i++]; + if (op === 0x40) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if (op === 0x41) { + n = data[i++]; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if ((op & 0xF8) === 0xB0) { + n = op - 0xB0 + 1; + if (inFDEF || inELSE) { + i += n; + } else { + for (j = 0; j < n; j++) { + stack.push(data[i++]); + } + } + } else if ((op & 0xF8) === 0xB8) { + n = op - 0xB8 + 1; + if (inFDEF || inELSE) { + i += n * 2; + } else { + for (j = 0; j < n; j++) { + b = data[i++]; + stack.push(b << 8 | data[i++]); + } + } + } else if (op === 0x2B && !tooComplexToFollowFunctions) { + if (!inFDEF && !inELSE) { + funcId = stack[stack.length - 1]; + ttContext.functionsUsed[funcId] = true; + if (funcId in ttContext.functionsStackDeltas) { + stack.length += ttContext.functionsStackDeltas[funcId]; + } else if (funcId in ttContext.functionsDefined && functionsCalled.indexOf(funcId) < 0) { + callstack.push({ + data: data, + i: i, + stackTop: stack.length - 1 + }); + functionsCalled.push(funcId); + pc = ttContext.functionsDefined[funcId]; + if (!pc) { + (0, _util.warn)('TT: CALL non-existent function'); + ttContext.hintsValid = false; + return; + } + data = pc.data; + i = pc.i; + } + } + } else if (op === 0x2C && !tooComplexToFollowFunctions) { + if (inFDEF || inELSE) { + (0, _util.warn)('TT: nested FDEFs not allowed'); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + funcId = stack.pop(); + ttContext.functionsDefined[funcId] = { + data: data, + i: i + }; + } else if (op === 0x2D) { + if (inFDEF) { + inFDEF = false; + lastEndf = i; + } else { + pc = callstack.pop(); + if (!pc) { + (0, _util.warn)('TT: ENDF bad stack'); + ttContext.hintsValid = false; + return; + } + funcId = functionsCalled.pop(); + data = pc.data; + i = pc.i; + ttContext.functionsStackDeltas[funcId] = stack.length - pc.stackTop; + } + } else if (op === 0x89) { + if (inFDEF || inELSE) { + (0, _util.warn)('TT: nested IDEFs not allowed'); + tooComplexToFollowFunctions = true; + } + inFDEF = true; + lastDeff = i; + } else if (op === 0x58) { + ++ifLevel; + } else if (op === 0x1B) { + inELSE = ifLevel; + } else if (op === 0x59) { + if (inELSE === ifLevel) { + inELSE = 0; + } + --ifLevel; + } else if (op === 0x1C) { + if (!inFDEF && !inELSE) { + var offset = stack[stack.length - 1]; + if (offset > 0) { + i += offset - 1; + } + } + } + if (!inFDEF && !inELSE) { + var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] : op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0; + if (op >= 0x71 && op <= 0x75) { + n = stack.pop(); + if (!isNaN(n)) { + stackDelta = -n * 2; + } + } + while (stackDelta < 0 && stack.length > 0) { + stack.pop(); + stackDelta++; + } + while (stackDelta > 0) { + stack.push(NaN); + stackDelta--; + } + } + } + ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions; + var content = [data]; + if (i > data.length) { + content.push(new Uint8Array(i - data.length)); + } + if (lastDeff > lastEndf) { + (0, _util.warn)('TT: complementing a missing function tail'); + content.push(new Uint8Array([0x22, 0x2D])); + } + foldTTTable(table, content); + } + function checkInvalidFunctions(ttContext, maxFunctionDefs) { + if (ttContext.tooComplexToFollowFunctions) { + return; + } + if (ttContext.functionsDefined.length > maxFunctionDefs) { + (0, _util.warn)('TT: more functions defined than expected'); + ttContext.hintsValid = false; + return; + } + for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) { + if (j > maxFunctionDefs) { + (0, _util.warn)('TT: invalid function id: ' + j); + ttContext.hintsValid = false; + return; + } + if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) { + (0, _util.warn)('TT: undefined function: ' + j); + ttContext.hintsValid = false; + return; + } + } + } + function foldTTTable(table, content) { + if (content.length > 1) { + var newLength = 0; + var j, jj; + for (j = 0, jj = content.length; j < jj; j++) { + newLength += content[j].length; + } + newLength = newLength + 3 & ~3; + var result = new Uint8Array(newLength); + var pos = 0; + for (j = 0, jj = content.length; j < jj; j++) { + result.set(content[j], pos); + pos += content[j].length; + } + table.data = result; + table.length = newLength; + } + } + function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) { + var ttContext = { + functionsDefined: [], + functionsUsed: [], + functionsStackDeltas: [], + tooComplexToFollowFunctions: false, + hintsValid: true + }; + if (fpgm) { + sanitizeTTProgram(fpgm, ttContext); + } + if (prep) { + sanitizeTTProgram(prep, ttContext); + } + if (fpgm) { + checkInvalidFunctions(ttContext, maxFunctionDefs); + } + if (cvt && cvt.length & 1) { + var cvtData = new Uint8Array(cvt.length + 1); + cvtData.set(cvt.data); + cvt.data = cvtData; + } + return ttContext.hintsValid; + } + font = new _stream.Stream(new Uint8Array(font.getBytes())); + var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp', 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF ']; + var header = readOpenTypeHeader(font); + var numTables = header.numTables; + var cff, cffFile; + var tables = Object.create(null); + tables['OS/2'] = null; + tables['cmap'] = null; + tables['head'] = null; + tables['hhea'] = null; + tables['hmtx'] = null; + tables['maxp'] = null; + tables['name'] = null; + tables['post'] = null; + var table; + for (var i = 0; i < numTables; i++) { + table = readTableEntry(font); + if (VALID_TABLES.indexOf(table.tag) < 0) { + continue; + } + if (table.length === 0) { + continue; + } + tables[table.tag] = table; + } + var isTrueType = !tables['CFF ']; + if (!isTrueType) { + if (header.version === 'OTTO' && !(properties.composite && properties.cidToGidMap) || !tables['head'] || !tables['hhea'] || !tables['maxp'] || !tables['post']) { + cffFile = new _stream.Stream(tables['CFF '].data); + cff = new CFFFont(cffFile, properties); + adjustWidths(properties); + return this.convert(name, cff, properties); + } + delete tables['glyf']; + delete tables['loca']; + delete tables['fpgm']; + delete tables['prep']; + delete tables['cvt ']; + this.isOpenType = true; + } else { + if (!tables['loca']) { + throw new _util.FormatError('Required "loca" table is not found'); + } + if (!tables['glyf']) { + (0, _util.warn)('Required "glyf" table is not found -- trying to recover.'); + tables['glyf'] = { + tag: 'glyf', + data: new Uint8Array(0) + }; + } + this.isOpenType = false; + } + if (!tables['maxp']) { + throw new _util.FormatError('Required "maxp" table is not found'); + } + font.pos = (font.start || 0) + tables['maxp'].offset; + var version = font.getInt32(); + var numGlyphs = font.getUint16(); + var maxFunctionDefs = 0; + if (version >= 0x00010000 && tables['maxp'].length >= 22) { + font.pos += 8; + var maxZones = font.getUint16(); + if (maxZones > 2) { + tables['maxp'].data[14] = 0; + tables['maxp'].data[15] = 2; + } + font.pos += 4; + maxFunctionDefs = font.getUint16(); + } + var dupFirstEntry = false; + if (properties.type === 'CIDFontType2' && properties.toUnicode && properties.toUnicode.get(0) > '\0') { + dupFirstEntry = true; + numGlyphs++; + tables['maxp'].data[4] = numGlyphs >> 8; + tables['maxp'].data[5] = numGlyphs & 255; + } + var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'], tables['cvt '], maxFunctionDefs); + if (!hintsValid) { + delete tables['fpgm']; + delete tables['prep']; + delete tables['cvt ']; + } + sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphs); + if (!tables['head']) { + throw new _util.FormatError('Required "head" table is not found'); + } + sanitizeHead(tables['head'], numGlyphs, isTrueType ? tables['loca'].length : 0); + var missingGlyphs = Object.create(null); + if (isTrueType) { + var isGlyphLocationsLong = int16(tables['head'].data[50], tables['head'].data[51]); + missingGlyphs = sanitizeGlyphLocations(tables['loca'], tables['glyf'], numGlyphs, isGlyphLocationsLong, hintsValid, dupFirstEntry); + } + if (!tables['hhea']) { + throw new _util.FormatError('Required "hhea" table is not found'); + } + if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) { + tables['hhea'].data[10] = 0xFF; + tables['hhea'].data[11] = 0xFF; + } + var metricsOverride = { + unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]), + yMax: int16(tables['head'].data[42], tables['head'].data[43]), + yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]), + ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]), + descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7]) + }; + this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm; + this.descent = metricsOverride.descent / metricsOverride.unitsPerEm; + if (tables['post']) { + var valid = readPostScriptTable(tables['post'], properties, numGlyphs); + if (!valid) { + tables['post'] = null; + } + } + var charCodeToGlyphId = [], + charCode; + function hasGlyph(glyphId) { + return !missingGlyphs[glyphId]; + } + if (properties.composite) { + var cidToGidMap = properties.cidToGidMap || []; + var isCidToGidMapEmpty = cidToGidMap.length === 0; + properties.cMap.forEach(function (charCode, cid) { + if (cid > 0xffff) { + throw new _util.FormatError('Max size of CID is 65,535'); + } + var glyphId = -1; + if (isCidToGidMapEmpty) { + glyphId = cid; + } else if (cidToGidMap[cid] !== undefined) { + glyphId = cidToGidMap[cid]; + } + if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) { + charCodeToGlyphId[charCode] = glyphId; + } + }); + if (dupFirstEntry && (isCidToGidMapEmpty || !charCodeToGlyphId[0])) { + charCodeToGlyphId[0] = numGlyphs - 1; + } + } else { + var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont, properties.hasEncoding); + var cmapPlatformId = cmapTable.platformId; + var cmapEncodingId = cmapTable.encodingId; + var cmapMappings = cmapTable.mappings; + var cmapMappingsLength = cmapMappings.length; + if (properties.hasEncoding && (cmapPlatformId === 3 && cmapEncodingId === 1 || cmapPlatformId === 1 && cmapEncodingId === 0) || cmapPlatformId === -1 && cmapEncodingId === -1 && !!(0, _encodings.getEncoding)(properties.baseEncodingName)) { + var baseEncoding = []; + if (properties.baseEncodingName === 'MacRomanEncoding' || properties.baseEncodingName === 'WinAnsiEncoding') { + baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); + } + var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + for (charCode = 0; charCode < 256; charCode++) { + var glyphName, standardGlyphName; + if (this.differences && charCode in this.differences) { + glyphName = this.differences[charCode]; + } else if (charCode in baseEncoding && baseEncoding[charCode] !== '') { + glyphName = baseEncoding[charCode]; + } else { + glyphName = _encodings.StandardEncoding[charCode]; + } + if (!glyphName) { + continue; + } + standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + var unicodeOrCharCode; + if (cmapPlatformId === 3 && cmapEncodingId === 1) { + unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName]; + } else if (cmapPlatformId === 1 && cmapEncodingId === 0) { + unicodeOrCharCode = _encodings.MacRomanEncoding.indexOf(standardGlyphName); + } + var found = false; + for (i = 0; i < cmapMappingsLength; ++i) { + if (cmapMappings[i].charCode !== unicodeOrCharCode) { + continue; + } + charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; + found = true; + break; + } + if (!found && properties.glyphNames) { + var glyphId = properties.glyphNames.indexOf(glyphName); + if (glyphId === -1 && standardGlyphName !== glyphName) { + glyphId = properties.glyphNames.indexOf(standardGlyphName); + } + if (glyphId > 0 && hasGlyph(glyphId)) { + charCodeToGlyphId[charCode] = glyphId; + found = true; + } + } + } + } else if (cmapPlatformId === 0 && cmapEncodingId === 0) { + for (i = 0; i < cmapMappingsLength; ++i) { + charCodeToGlyphId[cmapMappings[i].charCode] = cmapMappings[i].glyphId; + } + } else { + for (i = 0; i < cmapMappingsLength; ++i) { + charCode = cmapMappings[i].charCode; + if (cmapPlatformId === 3 && charCode >= 0xF000 && charCode <= 0xF0FF) { + charCode &= 0xFF; + } + charCodeToGlyphId[charCode] = cmapMappings[i].glyphId; + } + } + } + if (charCodeToGlyphId.length === 0) { + charCodeToGlyphId[0] = 0; + } + var newMapping = adjustMapping(charCodeToGlyphId, properties, missingGlyphs); + this.toFontChar = newMapping.toFontChar; + tables['cmap'] = { + tag: 'cmap', + data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphs) + }; + if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) { + tables['OS/2'] = { + tag: 'OS/2', + data: createOS2Table(properties, newMapping.charCodeToGlyphId, metricsOverride) + }; + } + if (!tables['post']) { + tables['post'] = { + tag: 'post', + data: createPostTable(properties) + }; + } + if (!isTrueType) { + try { + cffFile = new _stream.Stream(tables['CFF '].data); + var parser = new _cff_parser.CFFParser(cffFile, properties, SEAC_ANALYSIS_ENABLED); + cff = parser.parse(); + var compiler = new _cff_parser.CFFCompiler(cff); + tables['CFF '].data = compiler.compile(); + } catch (e) { + (0, _util.warn)('Failed to compile font ' + properties.loadedName); + } + } + if (!tables['name']) { + tables['name'] = { + tag: 'name', + data: createNameTable(this.name) + }; + } else { + var namePrototype = readNameTable(tables['name']); + tables['name'].data = createNameTable(name, namePrototype); + } + var builder = new OpenTypeFileBuilder(header.version); + for (var tableTag in tables) { + builder.addTable(tableTag, tables[tableTag].data); + } + return builder.toArray(); + }, + convert: function Font_convert(fontName, font, properties) { + properties.fixedPitch = false; + if (properties.builtInEncoding) { + adjustToUnicode(properties, properties.builtInEncoding); + } + var mapping = font.getGlyphMapping(properties); + var newMapping = adjustMapping(mapping, properties, Object.create(null)); + this.toFontChar = newMapping.toFontChar; + var numGlyphs = font.numGlyphs; + function getCharCodes(charCodeToGlyphId, glyphId) { + var charCodes = null; + for (var charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + if (!charCodes) { + charCodes = []; + } + charCodes.push(charCode | 0); + } + } + return charCodes; + } + function createCharCode(charCodeToGlyphId, glyphId) { + for (var charCode in charCodeToGlyphId) { + if (glyphId === charCodeToGlyphId[charCode]) { + return charCode | 0; + } + } + newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] = glyphId; + return newMapping.nextAvailableFontCharCode++; + } + var seacs = font.seacs; + if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) { + var matrix = properties.fontMatrix || _util.FONT_IDENTITY_MATRIX; + var charset = font.getCharset(); + var seacMap = Object.create(null); + for (var glyphId in seacs) { + glyphId |= 0; + var seac = seacs[glyphId]; + var baseGlyphName = _encodings.StandardEncoding[seac[2]]; + var accentGlyphName = _encodings.StandardEncoding[seac[3]]; + var baseGlyphId = charset.indexOf(baseGlyphName); + var accentGlyphId = charset.indexOf(accentGlyphName); + if (baseGlyphId < 0 || accentGlyphId < 0) { + continue; + } + var accentOffset = { + x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4], + y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5] + }; + var charCodes = getCharCodes(mapping, glyphId); + if (!charCodes) { + continue; + } + for (var i = 0, ii = charCodes.length; i < ii; i++) { + var charCode = charCodes[i]; + var charCodeToGlyphId = newMapping.charCodeToGlyphId; + var baseFontCharCode = createCharCode(charCodeToGlyphId, baseGlyphId); + var accentFontCharCode = createCharCode(charCodeToGlyphId, accentGlyphId); + seacMap[charCode] = { + baseFontCharCode: baseFontCharCode, + accentFontCharCode: accentFontCharCode, + accentOffset: accentOffset + }; + } + } + properties.seacMap = seacMap; + } + var unitsPerEm = 1 / (properties.fontMatrix || _util.FONT_IDENTITY_MATRIX)[0]; + var builder = new OpenTypeFileBuilder('\x4F\x54\x54\x4F'); + builder.addTable('CFF ', font.data); + builder.addTable('OS/2', createOS2Table(properties, newMapping.charCodeToGlyphId)); + builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId, numGlyphs)); + builder.addTable('head', '\x00\x01\x00\x00' + '\x00\x00\x10\x00' + '\x00\x00\x00\x00' + '\x5F\x0F\x3C\xF5' + '\x00\x00' + safeString16(unitsPerEm) + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00\x00\x00\x9e\x0b\x7e\x27' + '\x00\x00' + safeString16(properties.descent) + '\x0F\xFF' + safeString16(properties.ascent) + string16(properties.italicAngle ? 2 : 0) + '\x00\x11' + '\x00\x00' + '\x00\x00' + '\x00\x00'); + builder.addTable('hhea', '\x00\x01\x00\x00' + safeString16(properties.ascent) + safeString16(properties.descent) + '\x00\x00' + '\xFF\xFF' + '\x00\x00' + '\x00\x00' + '\x00\x00' + safeString16(properties.capHeight) + safeString16(Math.tan(properties.italicAngle) * properties.xHeight) + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + '\x00\x00' + string16(numGlyphs)); + builder.addTable('hmtx', function fontFieldsHmtx() { + var charstrings = font.charstrings; + var cffWidths = font.cff ? font.cff.widths : null; + var hmtx = '\x00\x00\x00\x00'; + for (var i = 1, ii = numGlyphs; i < ii; i++) { + var width = 0; + if (charstrings) { + var charstring = charstrings[i - 1]; + width = 'width' in charstring ? charstring.width : 0; + } else if (cffWidths) { + width = Math.ceil(cffWidths[i] || 0); + } + hmtx += string16(width) + string16(0); + } + return hmtx; + }()); + builder.addTable('maxp', '\x00\x00\x50\x00' + string16(numGlyphs)); + builder.addTable('name', createNameTable(fontName)); + builder.addTable('post', createPostTable(properties)); + return builder.toArray(); + }, + get spaceWidth() { + if ('_shadowWidth' in this) { + return this._shadowWidth; + } + var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I']; + var width; + for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) { + var glyphName = possibleSpaceReplacements[i]; + if (glyphName in this.widths) { + width = this.widths[glyphName]; + break; + } + var glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + var glyphUnicode = glyphsUnicodeMap[glyphName]; + var charcode = 0; + if (this.composite) { + if (this.cMap.contains(glyphUnicode)) { + charcode = this.cMap.lookup(glyphUnicode); + } + } + if (!charcode && this.toUnicode) { + charcode = this.toUnicode.charCodeOf(glyphUnicode); + } + if (charcode <= 0) { + charcode = glyphUnicode; + } + width = this.widths[charcode]; + if (width) { + break; + } + } + width = width || this.defaultWidth; + this._shadowWidth = width; + return width; + }, + charToGlyph: function Font_charToGlyph(charcode, isSpace) { + var fontCharCode, width, operatorListId; + var widthCode = charcode; + if (this.cMap && this.cMap.contains(charcode)) { + widthCode = this.cMap.lookup(charcode); + } + width = this.widths[widthCode]; + width = (0, _util.isNum)(width) ? width : this.defaultWidth; + var vmetric = this.vmetrics && this.vmetrics[widthCode]; + var unicode = this.toUnicode.get(charcode) || charcode; + if (typeof unicode === 'number') { + unicode = String.fromCharCode(unicode); + } + var isInFont = charcode in this.toFontChar; + fontCharCode = this.toFontChar[charcode] || charcode; + if (this.missingFile) { + fontCharCode = (0, _unicode.mapSpecialUnicodeValues)(fontCharCode); + } + if (this.isType3Font) { + operatorListId = fontCharCode; + } + var accent = null; + if (this.seacMap && this.seacMap[charcode]) { + isInFont = true; + var seac = this.seacMap[charcode]; + fontCharCode = seac.baseFontCharCode; + accent = { + fontChar: String.fromCharCode(seac.accentFontCharCode), + offset: seac.accentOffset + }; + } + var fontChar = String.fromCharCode(fontCharCode); + var glyph = this.glyphCache[charcode]; + if (!glyph || !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont)) { + glyph = new Glyph(fontChar, unicode, accent, width, vmetric, operatorListId, isSpace, isInFont); + this.glyphCache[charcode] = glyph; + } + return glyph; + }, + charsToGlyphs: function Font_charsToGlyphs(chars) { + var charsCache = this.charsCache; + var glyphs, glyph, charcode; + if (charsCache) { + glyphs = charsCache[chars]; + if (glyphs) { + return glyphs; + } + } + if (!charsCache) { + charsCache = this.charsCache = Object.create(null); + } + glyphs = []; + var charsCacheKey = chars; + var i = 0, + ii; + if (this.cMap) { + var c = Object.create(null); + while (i < chars.length) { + this.cMap.readCharCode(chars, i, c); + charcode = c.charcode; + var length = c.length; + i += length; + var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20; + glyph = this.charToGlyph(charcode, isSpace); + glyphs.push(glyph); + } + } else { + for (i = 0, ii = chars.length; i < ii; ++i) { + charcode = chars.charCodeAt(i); + glyph = this.charToGlyph(charcode, charcode === 0x20); + glyphs.push(glyph); + } + } + return charsCache[charsCacheKey] = glyphs; + } + }; + return Font; +}(); +var ErrorFont = function ErrorFontClosure() { + function ErrorFont(error) { + this.error = error; + this.loadedName = 'g_font_error'; + this.loading = false; + } + ErrorFont.prototype = { + charsToGlyphs: function ErrorFont_charsToGlyphs() { + return []; + }, + exportData: function ErrorFont_exportData() { + return { error: this.error }; + } + }; + return ErrorFont; +}(); +function type1FontGlyphMapping(properties, builtInEncoding, glyphNames) { + var charCodeToGlyphId = Object.create(null); + var glyphId, charCode, baseEncoding; + var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic); + if (properties.baseEncodingName) { + baseEncoding = (0, _encodings.getEncoding)(properties.baseEncodingName); + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } else if (isSymbolicFont) { + for (charCode in builtInEncoding) { + charCodeToGlyphId[charCode] = builtInEncoding[charCode]; + } + } else { + baseEncoding = _encodings.StandardEncoding; + for (charCode = 0; charCode < baseEncoding.length; charCode++) { + glyphId = glyphNames.indexOf(baseEncoding[charCode]); + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } + var differences = properties.differences, + glyphsUnicodeMap; + if (differences) { + for (charCode in differences) { + var glyphName = differences[charCode]; + glyphId = glyphNames.indexOf(glyphName); + if (glyphId === -1) { + if (!glyphsUnicodeMap) { + glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)(); + } + var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap); + if (standardGlyphName !== glyphName) { + glyphId = glyphNames.indexOf(standardGlyphName); + } + } + if (glyphId >= 0) { + charCodeToGlyphId[charCode] = glyphId; + } else { + charCodeToGlyphId[charCode] = 0; + } + } + } + return charCodeToGlyphId; +} +var Type1Font = function Type1FontClosure() { + function findBlock(streamBytes, signature, startIndex) { + var streamBytesLength = streamBytes.length; + var signatureLength = signature.length; + var scanLength = streamBytesLength - signatureLength; + var i = startIndex, + j, + found = false; + while (i < scanLength) { + j = 0; + while (j < signatureLength && streamBytes[i + j] === signature[j]) { + j++; + } + if (j >= signatureLength) { + i += j; + while (i < streamBytesLength && (0, _util.isSpace)(streamBytes[i])) { + i++; + } + found = true; + break; + } + i++; + } + return { + found: found, + length: i + }; + } + function getHeaderBlock(stream, suggestedLength) { + var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63]; + var streamStartPos = stream.pos; + var headerBytes, headerBytesLength, block; + try { + headerBytes = stream.getBytes(suggestedLength); + headerBytesLength = headerBytes.length; + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + } + if (headerBytesLength === suggestedLength) { + block = findBlock(headerBytes, EEXEC_SIGNATURE, suggestedLength - 2 * EEXEC_SIGNATURE.length); + if (block.found && block.length === suggestedLength) { + return { + stream: new _stream.Stream(headerBytes), + length: suggestedLength + }; + } + } + (0, _util.warn)('Invalid "Length1" property in Type1 font -- trying to recover.'); + stream.pos = streamStartPos; + var SCAN_BLOCK_LENGTH = 2048; + var actualLength; + while (true) { + var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH); + block = findBlock(scanBytes, EEXEC_SIGNATURE, 0); + if (block.length === 0) { + break; + } + stream.pos += block.length; + if (block.found) { + actualLength = stream.pos - streamStartPos; + break; + } + } + stream.pos = streamStartPos; + if (actualLength) { + return { + stream: new _stream.Stream(stream.getBytes(actualLength)), + length: actualLength + }; + } + (0, _util.warn)('Unable to recover "Length1" property in Type1 font -- using as is.'); + return { + stream: new _stream.Stream(stream.getBytes(suggestedLength)), + length: suggestedLength + }; + } + function getEexecBlock(stream, suggestedLength) { + var eexecBytes = stream.getBytes(); + return { + stream: new _stream.Stream(eexecBytes), + length: eexecBytes.length + }; + } + function Type1Font(name, file, properties) { + var PFB_HEADER_SIZE = 6; + var headerBlockLength = properties.length1; + var eexecBlockLength = properties.length2; + var pfbHeader = file.peekBytes(PFB_HEADER_SIZE); + var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01; + if (pfbHeaderPresent) { + file.skip(PFB_HEADER_SIZE); + headerBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + var headerBlock = getHeaderBlock(file, headerBlockLength); + headerBlockLength = headerBlock.length; + var headerBlockParser = new _type1_parser.Type1Parser(headerBlock.stream, false, SEAC_ANALYSIS_ENABLED); + headerBlockParser.extractFontHeader(properties); + if (pfbHeaderPresent) { + pfbHeader = file.getBytes(PFB_HEADER_SIZE); + eexecBlockLength = pfbHeader[5] << 24 | pfbHeader[4] << 16 | pfbHeader[3] << 8 | pfbHeader[2]; + } + var eexecBlock = getEexecBlock(file, eexecBlockLength); + eexecBlockLength = eexecBlock.length; + var eexecBlockParser = new _type1_parser.Type1Parser(eexecBlock.stream, true, SEAC_ANALYSIS_ENABLED); + var data = eexecBlockParser.extractFontProgram(); + for (var info in data.properties) { + properties[info] = data.properties[info]; + } + var charstrings = data.charstrings; + var type2Charstrings = this.getType2Charstrings(charstrings); + var subrs = this.getType2Subrs(data.subrs); + this.charstrings = charstrings; + this.data = this.wrap(name, type2Charstrings, this.charstrings, subrs, properties); + this.seacs = this.getSeacs(data.charstrings); + } + Type1Font.prototype = { + get numGlyphs() { + return this.charstrings.length + 1; + }, + getCharset: function Type1Font_getCharset() { + var charset = ['.notdef']; + var charstrings = this.charstrings; + for (var glyphId = 0; glyphId < charstrings.length; glyphId++) { + charset.push(charstrings[glyphId].glyphName); + } + return charset; + }, + getGlyphMapping: function Type1Font_getGlyphMapping(properties) { + var charstrings = this.charstrings; + var glyphNames = ['.notdef'], + glyphId; + for (glyphId = 0; glyphId < charstrings.length; glyphId++) { + glyphNames.push(charstrings[glyphId].glyphName); + } + var encoding = properties.builtInEncoding; + if (encoding) { + var builtInEncoding = Object.create(null); + for (var charCode in encoding) { + glyphId = glyphNames.indexOf(encoding[charCode]); + if (glyphId >= 0) { + builtInEncoding[charCode] = glyphId; + } + } + } + return type1FontGlyphMapping(properties, builtInEncoding, glyphNames); + }, + getSeacs: function Type1Font_getSeacs(charstrings) { + var i, ii; + var seacMap = []; + for (i = 0, ii = charstrings.length; i < ii; i++) { + var charstring = charstrings[i]; + if (charstring.seac) { + seacMap[i + 1] = charstring.seac; + } + } + return seacMap; + }, + getType2Charstrings: function Type1Font_getType2Charstrings(type1Charstrings) { + var type2Charstrings = []; + for (var i = 0, ii = type1Charstrings.length; i < ii; i++) { + type2Charstrings.push(type1Charstrings[i].charstring); + } + return type2Charstrings; + }, + getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) { + var bias = 0; + var count = type1Subrs.length; + if (count < 1133) { + bias = 107; + } else if (count < 33769) { + bias = 1131; + } else { + bias = 32768; + } + var type2Subrs = []; + var i; + for (i = 0; i < bias; i++) { + type2Subrs.push([0x0B]); + } + for (i = 0; i < count; i++) { + type2Subrs.push(type1Subrs[i]); + } + return type2Subrs; + }, + wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs, properties) { + var cff = new _cff_parser.CFF(); + cff.header = new _cff_parser.CFFHeader(1, 0, 4, 4); + cff.names = [name]; + var topDict = new _cff_parser.CFFTopDict(); + topDict.setByName('version', 391); + topDict.setByName('Notice', 392); + topDict.setByName('FullName', 393); + topDict.setByName('FamilyName', 394); + topDict.setByName('Weight', 395); + topDict.setByName('Encoding', null); + topDict.setByName('FontMatrix', properties.fontMatrix); + topDict.setByName('FontBBox', properties.bbox); + topDict.setByName('charset', null); + topDict.setByName('CharStrings', null); + topDict.setByName('Private', null); + cff.topDict = topDict; + var strings = new _cff_parser.CFFStrings(); + strings.add('Version 0.11'); + strings.add('See original notice'); + strings.add(name); + strings.add(name); + strings.add('Medium'); + cff.strings = strings; + cff.globalSubrIndex = new _cff_parser.CFFIndex(); + var count = glyphs.length; + var charsetArray = [0]; + var i, ii; + for (i = 0; i < count; i++) { + var index = _cff_parser.CFFStandardStrings.indexOf(charstrings[i].glyphName); + if (index === -1) { + index = 0; + } + charsetArray.push(index >> 8 & 0xff, index & 0xff); + } + cff.charset = new _cff_parser.CFFCharset(false, 0, [], charsetArray); + var charStringsIndex = new _cff_parser.CFFIndex(); + charStringsIndex.add([0x8B, 0x0E]); + for (i = 0; i < count; i++) { + var glyph = glyphs[i]; + if (glyph.length === 0) { + charStringsIndex.add([0x8B, 0x0E]); + continue; + } + charStringsIndex.add(glyph); + } + cff.charStrings = charStringsIndex; + var privateDict = new _cff_parser.CFFPrivateDict(); + privateDict.setByName('Subrs', null); + var fields = ['BlueValues', 'OtherBlues', 'FamilyBlues', 'FamilyOtherBlues', 'StemSnapH', 'StemSnapV', 'BlueShift', 'BlueFuzz', 'BlueScale', 'LanguageGroup', 'ExpansionFactor', 'ForceBold', 'StdHW', 'StdVW']; + for (i = 0, ii = fields.length; i < ii; i++) { + var field = fields[i]; + if (!(field in properties.privateData)) { + continue; + } + var value = properties.privateData[field]; + if ((0, _util.isArray)(value)) { + for (var j = value.length - 1; j > 0; j--) { + value[j] -= value[j - 1]; + } + } + privateDict.setByName(field, value); + } + cff.topDict.privateDict = privateDict; + var subrIndex = new _cff_parser.CFFIndex(); + for (i = 0, ii = subrs.length; i < ii; i++) { + subrIndex.add(subrs[i]); + } + privateDict.subrsIndex = subrIndex; + var compiler = new _cff_parser.CFFCompiler(cff); + return compiler.compile(); + } + }; + return Type1Font; +}(); +var CFFFont = function CFFFontClosure() { + function CFFFont(file, properties) { + this.properties = properties; + var parser = new _cff_parser.CFFParser(file, properties, SEAC_ANALYSIS_ENABLED); + this.cff = parser.parse(); + var compiler = new _cff_parser.CFFCompiler(this.cff); + this.seacs = this.cff.seacs; + try { + this.data = compiler.compile(); + } catch (e) { + (0, _util.warn)('Failed to compile font ' + properties.loadedName); + this.data = file; + } + } + CFFFont.prototype = { + get numGlyphs() { + return this.cff.charStrings.count; + }, + getCharset: function CFFFont_getCharset() { + return this.cff.charset.charset; + }, + getGlyphMapping: function CFFFont_getGlyphMapping() { + var cff = this.cff; + var properties = this.properties; + var charsets = cff.charset.charset; + var charCodeToGlyphId; + var glyphId; + if (properties.composite) { + charCodeToGlyphId = Object.create(null); + if (cff.isCIDFont) { + for (glyphId = 0; glyphId < charsets.length; glyphId++) { + var cid = charsets[glyphId]; + var charCode = properties.cMap.charCodeOf(cid); + charCodeToGlyphId[charCode] = glyphId; + } + } else { + for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) { + charCodeToGlyphId[glyphId] = glyphId; + } + } + return charCodeToGlyphId; + } + var encoding = cff.encoding ? cff.encoding.encoding : null; + charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets); + return charCodeToGlyphId; + } + }; + return CFFFont; +}(); +(function checkSeacSupport() { + if (typeof navigator !== 'undefined' && /Windows/.test(navigator.userAgent)) { + exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED = true; + } +})(); +(function checkChromeWindows() { + if (typeof navigator !== 'undefined' && /Windows.*Chrome/.test(navigator.userAgent)) { + SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = true; + } +})(); +exports.SEAC_ANALYSIS_ENABLED = SEAC_ANALYSIS_ENABLED; +exports.PRIVATE_USE_OFFSET_START = PRIVATE_USE_OFFSET_START; +exports.PRIVATE_USE_OFFSET_END = PRIVATE_USE_OFFSET_END; +exports.ErrorFont = ErrorFont; +exports.Font = Font; +exports.FontFlags = FontFlags; +exports.ToUnicodeMap = ToUnicodeMap; +exports.IdentityToUnicodeMap = IdentityToUnicodeMap; +exports.ProblematicCharRanges = ProblematicCharRanges; +exports.getFontType = getFontType; + +/***/ }), +/* 26 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFImage = undefined; + +var _util = __w_pdfjs_require__(0); + +var _stream = __w_pdfjs_require__(2); + +var _primitives = __w_pdfjs_require__(1); + +var _colorspace = __w_pdfjs_require__(3); + +var _jpx = __w_pdfjs_require__(14); + +var PDFImage = function PDFImageClosure() { + function handleImageData(image, nativeDecoder) { + if (nativeDecoder && nativeDecoder.canDecode(image)) { + return nativeDecoder.decode(image); + } + return Promise.resolve(image); + } + function decodeAndClamp(value, addend, coefficient, max) { + value = addend + value * coefficient; + return value < 0 ? 0 : value > max ? max : value; + } + function resizeImageMask(src, bpc, w1, h1, w2, h2) { + var length = w2 * h2; + var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); + var xRatio = w1 / w2; + var yRatio = h1 / h2; + var i, + j, + py, + newIndex = 0, + oldIndex; + var xScaled = new Uint16Array(w2); + var w1Scanline = w1; + for (i = 0; i < w2; i++) { + xScaled[i] = Math.floor(i * xRatio); + } + for (i = 0; i < h2; i++) { + py = Math.floor(i * yRatio) * w1Scanline; + for (j = 0; j < w2; j++) { + oldIndex = py + xScaled[j]; + dest[newIndex++] = src[oldIndex]; + } + } + return dest; + } + function PDFImage(xref, res, image, inline, smask, mask, isMask) { + this.image = image; + var dict = image.dict; + if (dict.has('Filter')) { + var filter = dict.get('Filter').name; + if (filter === 'JPXDecode') { + var jpxImage = new _jpx.JpxImage(); + jpxImage.parseImageProperties(image.stream); + image.stream.reset(); + image.bitsPerComponent = jpxImage.bitsPerComponent; + image.numComps = jpxImage.componentsCount; + } else if (filter === 'JBIG2Decode') { + image.bitsPerComponent = 1; + image.numComps = 1; + } + } + this.width = dict.get('Width', 'W'); + this.height = dict.get('Height', 'H'); + if (this.width < 1 || this.height < 1) { + throw new _util.FormatError('Invalid image width: ' + this.width + ' or ' + ('height: ' + this.height)); + } + this.interpolate = dict.get('Interpolate', 'I') || false; + this.imageMask = dict.get('ImageMask', 'IM') || false; + this.matte = dict.get('Matte') || false; + var bitsPerComponent = image.bitsPerComponent; + if (!bitsPerComponent) { + bitsPerComponent = dict.get('BitsPerComponent', 'BPC'); + if (!bitsPerComponent) { + if (this.imageMask) { + bitsPerComponent = 1; + } else { + throw new _util.FormatError('Bits per component missing in image: ' + this.imageMask); + } + } + } + this.bpc = bitsPerComponent; + if (!this.imageMask) { + var colorSpace = dict.get('ColorSpace', 'CS'); + if (!colorSpace) { + (0, _util.info)('JPX images (which do not require color spaces)'); + switch (image.numComps) { + case 1: + colorSpace = _primitives.Name.get('DeviceGray'); + break; + case 3: + colorSpace = _primitives.Name.get('DeviceRGB'); + break; + case 4: + colorSpace = _primitives.Name.get('DeviceCMYK'); + break; + default: + throw new Error('JPX images with ' + this.numComps + ' ' + 'color components not supported.'); + } + } + this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, res); + this.numComps = this.colorSpace.numComps; + } + this.decode = dict.getArray('Decode', 'D'); + this.needsDecode = false; + if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) { + this.needsDecode = true; + var max = (1 << bitsPerComponent) - 1; + this.decodeCoefficients = []; + this.decodeAddends = []; + for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) { + var dmin = this.decode[i]; + var dmax = this.decode[i + 1]; + this.decodeCoefficients[j] = dmax - dmin; + this.decodeAddends[j] = max * dmin; + } + } + if (smask) { + this.smask = new PDFImage(xref, res, smask, false); + } else if (mask) { + if ((0, _primitives.isStream)(mask)) { + var maskDict = mask.dict, + imageMask = maskDict.get('ImageMask', 'IM'); + if (!imageMask) { + (0, _util.warn)('Ignoring /Mask in image without /ImageMask.'); + } else { + this.mask = new PDFImage(xref, res, mask, false, null, null, true); + } + } else { + this.mask = mask; + } + } + } + PDFImage.buildImage = function PDFImage_buildImage(handler, xref, res, image, inline, nativeDecoder) { + var imagePromise = handleImageData(image, nativeDecoder); + var smaskPromise; + var maskPromise; + var smask = image.dict.get('SMask'); + var mask = image.dict.get('Mask'); + if (smask) { + smaskPromise = handleImageData(smask, nativeDecoder); + maskPromise = Promise.resolve(null); + } else { + smaskPromise = Promise.resolve(null); + if (mask) { + if ((0, _primitives.isStream)(mask)) { + maskPromise = handleImageData(mask, nativeDecoder); + } else if ((0, _util.isArray)(mask)) { + maskPromise = Promise.resolve(mask); + } else { + (0, _util.warn)('Unsupported mask format.'); + maskPromise = Promise.resolve(null); + } + } else { + maskPromise = Promise.resolve(null); + } + } + return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (results) { + var imageData = results[0]; + var smaskData = results[1]; + var maskData = results[2]; + return new PDFImage(xref, res, imageData, inline, smaskData, maskData); + }); + }; + PDFImage.createMask = function PDFImage_createMask(imgArray, width, height, imageIsFromDecodeStream, inverseDecode) { + var computedLength = (width + 7 >> 3) * height; + var actualLength = imgArray.byteLength; + var haveFullData = computedLength === actualLength; + var data, i; + if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { + data = imgArray; + } else if (!inverseDecode) { + data = new Uint8Array(actualLength); + data.set(imgArray); + } else { + data = new Uint8Array(computedLength); + data.set(imgArray); + for (i = actualLength; i < computedLength; i++) { + data[i] = 0xff; + } + } + if (inverseDecode) { + for (i = 0; i < actualLength; i++) { + data[i] = ~data[i]; + } + } + return { + data: data, + width: width, + height: height + }; + }; + PDFImage.prototype = { + get drawWidth() { + return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0); + }, + get drawHeight() { + return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0); + }, + decodeBuffer: function PDFImage_decodeBuffer(buffer) { + var bpc = this.bpc; + var numComps = this.numComps; + var decodeAddends = this.decodeAddends; + var decodeCoefficients = this.decodeCoefficients; + var max = (1 << bpc) - 1; + var i, ii; + if (bpc === 1) { + for (i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] = +!buffer[i]; + } + return; + } + var index = 0; + for (i = 0, ii = this.width * this.height; i < ii; i++) { + for (var j = 0; j < numComps; j++) { + buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max); + index++; + } + } + }, + getComponents: function PDFImage_getComponents(buffer) { + var bpc = this.bpc; + if (bpc === 8) { + return buffer; + } + var width = this.width; + var height = this.height; + var numComps = this.numComps; + var length = width * height * numComps; + var bufferPos = 0; + var output = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length); + var rowComps = width * numComps; + var max = (1 << bpc) - 1; + var i = 0, + ii, + buf; + if (bpc === 1) { + var mask, loop1End, loop2End; + for (var j = 0; j < height; j++) { + loop1End = i + (rowComps & ~7); + loop2End = i + rowComps; + while (i < loop1End) { + buf = buffer[bufferPos++]; + output[i] = buf >> 7 & 1; + output[i + 1] = buf >> 6 & 1; + output[i + 2] = buf >> 5 & 1; + output[i + 3] = buf >> 4 & 1; + output[i + 4] = buf >> 3 & 1; + output[i + 5] = buf >> 2 & 1; + output[i + 6] = buf >> 1 & 1; + output[i + 7] = buf & 1; + i += 8; + } + if (i < loop2End) { + buf = buffer[bufferPos++]; + mask = 128; + while (i < loop2End) { + output[i++] = +!!(buf & mask); + mask >>= 1; + } + } + } + } else { + var bits = 0; + buf = 0; + for (i = 0, ii = length; i < ii; ++i) { + if (i % rowComps === 0) { + buf = 0; + bits = 0; + } + while (bits < bpc) { + buf = buf << 8 | buffer[bufferPos++]; + bits += 8; + } + var remainingBits = bits - bpc; + var value = buf >> remainingBits; + output[i] = value < 0 ? 0 : value > max ? max : value; + buf = buf & (1 << remainingBits) - 1; + bits = remainingBits; + } + } + return output; + }, + fillOpacity: function PDFImage_fillOpacity(rgbaBuf, width, height, actualHeight, image) { + var smask = this.smask; + var mask = this.mask; + var alphaBuf, sw, sh, i, ii, j; + if (smask) { + sw = smask.width; + sh = smask.height; + alphaBuf = new Uint8Array(sw * sh); + smask.fillGrayBuffer(alphaBuf); + if (sw !== width || sh !== height) { + alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height); + } + } else if (mask) { + if (mask instanceof PDFImage) { + sw = mask.width; + sh = mask.height; + alphaBuf = new Uint8Array(sw * sh); + mask.numComps = 1; + mask.fillGrayBuffer(alphaBuf); + for (i = 0, ii = sw * sh; i < ii; ++i) { + alphaBuf[i] = 255 - alphaBuf[i]; + } + if (sw !== width || sh !== height) { + alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height); + } + } else if ((0, _util.isArray)(mask)) { + alphaBuf = new Uint8Array(width * height); + var numComps = this.numComps; + for (i = 0, ii = width * height; i < ii; ++i) { + var opacity = 0; + var imageOffset = i * numComps; + for (j = 0; j < numComps; ++j) { + var color = image[imageOffset + j]; + var maskOffset = j * 2; + if (color < mask[maskOffset] || color > mask[maskOffset + 1]) { + opacity = 255; + break; + } + } + alphaBuf[i] = opacity; + } + } else { + throw new _util.FormatError('Unknown mask format.'); + } + } + if (alphaBuf) { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = alphaBuf[i]; + } + } else { + for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) { + rgbaBuf[j] = 255; + } + } + }, + undoPreblend: function PDFImage_undoPreblend(buffer, width, height) { + var matte = this.smask && this.smask.matte; + if (!matte) { + return; + } + var matteRgb = this.colorSpace.getRgb(matte, 0); + var matteR = matteRgb[0]; + var matteG = matteRgb[1]; + var matteB = matteRgb[2]; + var length = width * height * 4; + var r, g, b; + for (var i = 0; i < length; i += 4) { + var alpha = buffer[i + 3]; + if (alpha === 0) { + buffer[i] = 255; + buffer[i + 1] = 255; + buffer[i + 2] = 255; + continue; + } + var k = 255 / alpha; + r = (buffer[i] - matteR) * k + matteR; + g = (buffer[i + 1] - matteG) * k + matteG; + b = (buffer[i + 2] - matteB) * k + matteB; + buffer[i] = r <= 0 ? 0 : r >= 255 ? 255 : r | 0; + buffer[i + 1] = g <= 0 ? 0 : g >= 255 ? 255 : g | 0; + buffer[i + 2] = b <= 0 ? 0 : b >= 255 ? 255 : b | 0; + } + }, + createImageData: function PDFImage_createImageData(forceRGBA) { + var drawWidth = this.drawWidth; + var drawHeight = this.drawHeight; + var imgData = { + width: drawWidth, + height: drawHeight + }; + var numComps = this.numComps; + var originalWidth = this.width; + var originalHeight = this.height; + var bpc = this.bpc; + var rowBytes = originalWidth * numComps * bpc + 7 >> 3; + var imgArray; + if (!forceRGBA) { + var kind; + if (this.colorSpace.name === 'DeviceGray' && bpc === 1) { + kind = _util.ImageKind.GRAYSCALE_1BPP; + } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) { + kind = _util.ImageKind.RGB_24BPP; + } + if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) { + imgData.kind = kind; + imgArray = this.getImageBytes(originalHeight * rowBytes); + if (this.image instanceof _stream.DecodeStream) { + imgData.data = imgArray; + } else { + var newArray = new Uint8Array(imgArray.length); + newArray.set(imgArray); + imgData.data = newArray; + } + if (this.needsDecode) { + (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP); + var buffer = imgData.data; + for (var i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] ^= 0xff; + } + } + return imgData; + } + if (this.image instanceof _stream.JpegStream && !this.smask && !this.mask && (this.colorSpace.name === 'DeviceGray' || this.colorSpace.name === 'DeviceRGB' || this.colorSpace.name === 'DeviceCMYK')) { + imgData.kind = _util.ImageKind.RGB_24BPP; + imgData.data = this.getImageBytes(originalHeight * rowBytes, drawWidth, drawHeight, true); + return imgData; + } + } + imgArray = this.getImageBytes(originalHeight * rowBytes); + var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight; + var comps = this.getComponents(imgArray); + var alpha01, maybeUndoPreblend; + if (!forceRGBA && !this.smask && !this.mask) { + imgData.kind = _util.ImageKind.RGB_24BPP; + imgData.data = new Uint8Array(drawWidth * drawHeight * 3); + alpha01 = 0; + maybeUndoPreblend = false; + } else { + imgData.kind = _util.ImageKind.RGBA_32BPP; + imgData.data = new Uint8Array(drawWidth * drawHeight * 4); + alpha01 = 1; + maybeUndoPreblend = true; + this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps); + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01); + if (maybeUndoPreblend) { + this.undoPreblend(imgData.data, drawWidth, actualHeight); + } + return imgData; + }, + fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) { + var numComps = this.numComps; + if (numComps !== 1) { + throw new _util.FormatError('Reading gray scale from a color image: ' + numComps); + } + var width = this.width; + var height = this.height; + var bpc = this.bpc; + var rowBytes = width * numComps * bpc + 7 >> 3; + var imgArray = this.getImageBytes(height * rowBytes); + var comps = this.getComponents(imgArray); + var i, length; + if (bpc === 1) { + length = width * height; + if (this.needsDecode) { + for (i = 0; i < length; ++i) { + buffer[i] = comps[i] - 1 & 255; + } + } else { + for (i = 0; i < length; ++i) { + buffer[i] = -comps[i] & 255; + } + } + return; + } + if (this.needsDecode) { + this.decodeBuffer(comps); + } + length = width * height; + var scale = 255 / ((1 << bpc) - 1); + for (i = 0; i < length; ++i) { + buffer[i] = scale * comps[i] | 0; + } + }, + getImageBytes: function PDFImage_getImageBytes(length, drawWidth, drawHeight, forceRGB) { + this.image.reset(); + this.image.drawWidth = drawWidth || this.width; + this.image.drawHeight = drawHeight || this.height; + this.image.forceRGB = !!forceRGB; + return this.image.getBytes(length); + } + }; + return PDFImage; +}(); +exports.PDFImage = PDFImage; + +/***/ }), +/* 27 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Jbig2Image = undefined; + +var _util = __w_pdfjs_require__(0); + +var _arithmetic_decoder = __w_pdfjs_require__(9); + +var Jbig2Error = function Jbig2ErrorClosure() { + function Jbig2Error(msg) { + this.message = 'JBIG2 error: ' + msg; + } + Jbig2Error.prototype = new Error(); + Jbig2Error.prototype.name = 'Jbig2Error'; + Jbig2Error.constructor = Jbig2Error; + return Jbig2Error; +}(); +var Jbig2Image = function Jbig2ImageClosure() { + function ContextCache() {} + ContextCache.prototype = { + getContexts: function getContexts(id) { + if (id in this) { + return this[id]; + } + return this[id] = new Int8Array(1 << 16); + } + }; + function DecodingContext(data, start, end) { + this.data = data; + this.start = start; + this.end = end; + } + DecodingContext.prototype = { + get decoder() { + var decoder = new _arithmetic_decoder.ArithmeticDecoder(this.data, this.start, this.end); + return (0, _util.shadow)(this, 'decoder', decoder); + }, + get contextCache() { + var cache = new ContextCache(); + return (0, _util.shadow)(this, 'contextCache', cache); + } + }; + function decodeInteger(contextCache, procedure, decoder) { + var contexts = contextCache.getContexts(procedure); + var prev = 1; + function readBits(length) { + var v = 0; + for (var i = 0; i < length; i++) { + var bit = decoder.readBit(contexts, prev); + prev = prev < 256 ? prev << 1 | bit : (prev << 1 | bit) & 511 | 256; + v = v << 1 | bit; + } + return v >>> 0; + } + var sign = readBits(1); + var value = readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(1) ? readBits(32) + 4436 : readBits(12) + 340 : readBits(8) + 84 : readBits(6) + 20 : readBits(4) + 4 : readBits(2); + return sign === 0 ? value : value > 0 ? -value : null; + } + function decodeIAID(contextCache, decoder, codeLength) { + var contexts = contextCache.getContexts('IAID'); + var prev = 1; + for (var i = 0; i < codeLength; i++) { + var bit = decoder.readBit(contexts, prev); + prev = prev << 1 | bit; + } + if (codeLength < 31) { + return prev & (1 << codeLength) - 1; + } + return prev & 0x7FFFFFFF; + } + var SegmentTypes = ['SymbolDictionary', null, null, null, 'IntermediateTextRegion', null, 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null, null, null, null, null, null, 'patternDictionary', null, null, null, 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion', 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null, null, null, null, null, null, 'IntermediateGenericRegion', null, 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion', 'IntermediateGenericRefinementRegion', null, 'ImmediateGenericRefinementRegion', 'ImmediateLosslessGenericRefinementRegion', null, null, null, null, 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles', 'Tables', null, null, null, null, null, null, null, null, 'Extension']; + var CodingTemplates = [[{ + x: -1, + y: -2 + }, { + x: 0, + y: -2 + }, { + x: 1, + y: -2 + }, { + x: -2, + y: -1 + }, { + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: 2, + y: -1 + }, { + x: -4, + y: 0 + }, { + x: -3, + y: 0 + }, { + x: -2, + y: 0 + }, { + x: -1, + y: 0 + }], [{ + x: -1, + y: -2 + }, { + x: 0, + y: -2 + }, { + x: 1, + y: -2 + }, { + x: 2, + y: -2 + }, { + x: -2, + y: -1 + }, { + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: 2, + y: -1 + }, { + x: -3, + y: 0 + }, { + x: -2, + y: 0 + }, { + x: -1, + y: 0 + }], [{ + x: -1, + y: -2 + }, { + x: 0, + y: -2 + }, { + x: 1, + y: -2 + }, { + x: -2, + y: -1 + }, { + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -2, + y: 0 + }, { + x: -1, + y: 0 + }], [{ + x: -3, + y: -1 + }, { + x: -2, + y: -1 + }, { + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -4, + y: 0 + }, { + x: -3, + y: 0 + }, { + x: -2, + y: 0 + }, { + x: -1, + y: 0 + }]]; + var RefinementTemplates = [{ + coding: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: -1, + y: 1 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] + }, { + coding: [{ + x: -1, + y: -1 + }, { + x: 0, + y: -1 + }, { + x: 1, + y: -1 + }, { + x: -1, + y: 0 + }], + reference: [{ + x: 0, + y: -1 + }, { + x: -1, + y: 0 + }, { + x: 0, + y: 0 + }, { + x: 1, + y: 0 + }, { + x: 0, + y: 1 + }, { + x: 1, + y: 1 + }] + }]; + var ReusedContexts = [0x9B25, 0x0795, 0x00E5, 0x0195]; + var RefinementReusedContexts = [0x0020, 0x0008]; + function decodeBitmapTemplate0(width, height, decodingContext) { + var decoder = decodingContext.decoder; + var contexts = decodingContext.contextCache.getContexts('GB'); + var contextLabel, + i, + j, + pixel, + row, + row1, + row2, + bitmap = []; + var OLD_PIXEL_MASK = 0x7BF7; + for (i = 0; i < height; i++) { + row = bitmap[i] = new Uint8Array(width); + row1 = i < 1 ? row : bitmap[i - 1]; + row2 = i < 2 ? row : bitmap[i - 2]; + contextLabel = row2[0] << 13 | row2[1] << 12 | row2[2] << 11 | row1[0] << 7 | row1[1] << 6 | row1[2] << 5 | row1[3] << 4; + for (j = 0; j < width; j++) { + row[j] = pixel = decoder.readBit(contexts, contextLabel); + contextLabel = (contextLabel & OLD_PIXEL_MASK) << 1 | (j + 3 < width ? row2[j + 3] << 11 : 0) | (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel; + } + } + return bitmap; + } + function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at, decodingContext) { + if (mmr) { + throw new Jbig2Error('MMR encoding is not supported'); + } + if (templateIndex === 0 && !skip && !prediction && at.length === 4 && at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 && at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) { + return decodeBitmapTemplate0(width, height, decodingContext); + } + var useskip = !!skip; + var template = CodingTemplates[templateIndex].concat(at); + template.sort(function (a, b) { + return a.y - b.y || a.x - b.x; + }); + var templateLength = template.length; + var templateX = new Int8Array(templateLength); + var templateY = new Int8Array(templateLength); + var changingTemplateEntries = []; + var reuseMask = 0, + minX = 0, + maxX = 0, + minY = 0; + var c, k; + for (k = 0; k < templateLength; k++) { + templateX[k] = template[k].x; + templateY[k] = template[k].y; + minX = Math.min(minX, template[k].x); + maxX = Math.max(maxX, template[k].x); + minY = Math.min(minY, template[k].y); + if (k < templateLength - 1 && template[k].y === template[k + 1].y && template[k].x === template[k + 1].x - 1) { + reuseMask |= 1 << templateLength - 1 - k; + } else { + changingTemplateEntries.push(k); + } + } + var changingEntriesLength = changingTemplateEntries.length; + var changingTemplateX = new Int8Array(changingEntriesLength); + var changingTemplateY = new Int8Array(changingEntriesLength); + var changingTemplateBit = new Uint16Array(changingEntriesLength); + for (c = 0; c < changingEntriesLength; c++) { + k = changingTemplateEntries[c]; + changingTemplateX[c] = template[k].x; + changingTemplateY[c] = template[k].y; + changingTemplateBit[c] = 1 << templateLength - 1 - k; + } + var sbb_left = -minX; + var sbb_top = -minY; + var sbb_right = width - maxX; + var pseudoPixelContext = ReusedContexts[templateIndex]; + var row = new Uint8Array(width); + var bitmap = []; + var decoder = decodingContext.decoder; + var contexts = decodingContext.contextCache.getContexts('GB'); + var ltp = 0, + j, + i0, + j0, + contextLabel = 0, + bit, + shift; + for (var i = 0; i < height; i++) { + if (prediction) { + var sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + bitmap.push(row); + continue; + } + } + row = new Uint8Array(row); + bitmap.push(row); + for (j = 0; j < width; j++) { + if (useskip && skip[i][j]) { + row[j] = 0; + continue; + } + if (j >= sbb_left && j < sbb_right && i >= sbb_top) { + contextLabel = contextLabel << 1 & reuseMask; + for (k = 0; k < changingEntriesLength; k++) { + i0 = i + changingTemplateY[k]; + j0 = j + changingTemplateX[k]; + bit = bitmap[i0][j0]; + if (bit) { + bit = changingTemplateBit[k]; + contextLabel |= bit; + } + } + } else { + contextLabel = 0; + shift = templateLength - 1; + for (k = 0; k < templateLength; k++, shift--) { + j0 = j + templateX[k]; + if (j0 >= 0 && j0 < width) { + i0 = i + templateY[k]; + if (i0 >= 0) { + bit = bitmap[i0][j0]; + if (bit) { + contextLabel |= bit << shift; + } + } + } + } + } + var pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; + } + function decodeRefinement(width, height, templateIndex, referenceBitmap, offsetX, offsetY, prediction, at, decodingContext) { + var codingTemplate = RefinementTemplates[templateIndex].coding; + if (templateIndex === 0) { + codingTemplate = codingTemplate.concat([at[0]]); + } + var codingTemplateLength = codingTemplate.length; + var codingTemplateX = new Int32Array(codingTemplateLength); + var codingTemplateY = new Int32Array(codingTemplateLength); + var k; + for (k = 0; k < codingTemplateLength; k++) { + codingTemplateX[k] = codingTemplate[k].x; + codingTemplateY[k] = codingTemplate[k].y; + } + var referenceTemplate = RefinementTemplates[templateIndex].reference; + if (templateIndex === 0) { + referenceTemplate = referenceTemplate.concat([at[1]]); + } + var referenceTemplateLength = referenceTemplate.length; + var referenceTemplateX = new Int32Array(referenceTemplateLength); + var referenceTemplateY = new Int32Array(referenceTemplateLength); + for (k = 0; k < referenceTemplateLength; k++) { + referenceTemplateX[k] = referenceTemplate[k].x; + referenceTemplateY[k] = referenceTemplate[k].y; + } + var referenceWidth = referenceBitmap[0].length; + var referenceHeight = referenceBitmap.length; + var pseudoPixelContext = RefinementReusedContexts[templateIndex]; + var bitmap = []; + var decoder = decodingContext.decoder; + var contexts = decodingContext.contextCache.getContexts('GR'); + var ltp = 0; + for (var i = 0; i < height; i++) { + if (prediction) { + var sltp = decoder.readBit(contexts, pseudoPixelContext); + ltp ^= sltp; + if (ltp) { + throw new Jbig2Error('prediction is not supported'); + } + } + var row = new Uint8Array(width); + bitmap.push(row); + for (var j = 0; j < width; j++) { + var i0, j0; + var contextLabel = 0; + for (k = 0; k < codingTemplateLength; k++) { + i0 = i + codingTemplateY[k]; + j0 = j + codingTemplateX[k]; + if (i0 < 0 || j0 < 0 || j0 >= width) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | bitmap[i0][j0]; + } + } + for (k = 0; k < referenceTemplateLength; k++) { + i0 = i + referenceTemplateY[k] - offsetY; + j0 = j + referenceTemplateX[k] - offsetX; + if (i0 < 0 || i0 >= referenceHeight || j0 < 0 || j0 >= referenceWidth) { + contextLabel <<= 1; + } else { + contextLabel = contextLabel << 1 | referenceBitmap[i0][j0]; + } + } + var pixel = decoder.readBit(contexts, contextLabel); + row[j] = pixel; + } + } + return bitmap; + } + function decodeSymbolDictionary(huffman, refinement, symbols, numberOfNewSymbols, numberOfExportedSymbols, huffmanTables, templateIndex, at, refinementTemplateIndex, refinementAt, decodingContext) { + if (huffman) { + throw new Jbig2Error('huffman is not supported'); + } + var newSymbols = []; + var currentHeight = 0; + var symbolCodeLength = (0, _util.log2)(symbols.length + numberOfNewSymbols); + var decoder = decodingContext.decoder; + var contextCache = decodingContext.contextCache; + while (newSymbols.length < numberOfNewSymbols) { + var deltaHeight = decodeInteger(contextCache, 'IADH', decoder); + currentHeight += deltaHeight; + var currentWidth = 0; + while (true) { + var deltaWidth = decodeInteger(contextCache, 'IADW', decoder); + if (deltaWidth === null) { + break; + } + currentWidth += deltaWidth; + var bitmap; + if (refinement) { + var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder); + if (numberOfInstances > 1) { + bitmap = decodeTextRegion(huffman, refinement, currentWidth, currentHeight, 0, numberOfInstances, 1, symbols.concat(newSymbols), symbolCodeLength, 0, 0, 1, 0, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext); + } else { + var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); + var rdx = decodeInteger(contextCache, 'IARDX', decoder); + var rdy = decodeInteger(contextCache, 'IARDY', decoder); + var symbol = symbolId < symbols.length ? symbols[symbolId] : newSymbols[symbolId - symbols.length]; + bitmap = decodeRefinement(currentWidth, currentHeight, refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt, decodingContext); + } + } else { + bitmap = decodeBitmap(false, currentWidth, currentHeight, templateIndex, false, null, at, decodingContext); + } + newSymbols.push(bitmap); + } + } + var exportedSymbols = []; + var flags = [], + currentFlag = false; + var totalSymbolsLength = symbols.length + numberOfNewSymbols; + while (flags.length < totalSymbolsLength) { + var runLength = decodeInteger(contextCache, 'IAEX', decoder); + while (runLength--) { + flags.push(currentFlag); + } + currentFlag = !currentFlag; + } + for (var i = 0, ii = symbols.length; i < ii; i++) { + if (flags[i]) { + exportedSymbols.push(symbols[i]); + } + } + for (var j = 0; j < numberOfNewSymbols; i++, j++) { + if (flags[i]) { + exportedSymbols.push(newSymbols[j]); + } + } + return exportedSymbols; + } + function decodeTextRegion(huffman, refinement, width, height, defaultPixelValue, numberOfSymbolInstances, stripSize, inputSymbols, symbolCodeLength, transposed, dsOffset, referenceCorner, combinationOperator, huffmanTables, refinementTemplateIndex, refinementAt, decodingContext) { + if (huffman) { + throw new Jbig2Error('huffman is not supported'); + } + var bitmap = []; + var i, row; + for (i = 0; i < height; i++) { + row = new Uint8Array(width); + if (defaultPixelValue) { + for (var j = 0; j < width; j++) { + row[j] = defaultPixelValue; + } + } + bitmap.push(row); + } + var decoder = decodingContext.decoder; + var contextCache = decodingContext.contextCache; + var stripT = -decodeInteger(contextCache, 'IADT', decoder); + var firstS = 0; + i = 0; + while (i < numberOfSymbolInstances) { + var deltaT = decodeInteger(contextCache, 'IADT', decoder); + stripT += deltaT; + var deltaFirstS = decodeInteger(contextCache, 'IAFS', decoder); + firstS += deltaFirstS; + var currentS = firstS; + do { + var currentT = stripSize === 1 ? 0 : decodeInteger(contextCache, 'IAIT', decoder); + var t = stripSize * stripT + currentT; + var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength); + var applyRefinement = refinement && decodeInteger(contextCache, 'IARI', decoder); + var symbolBitmap = inputSymbols[symbolId]; + var symbolWidth = symbolBitmap[0].length; + var symbolHeight = symbolBitmap.length; + if (applyRefinement) { + var rdw = decodeInteger(contextCache, 'IARDW', decoder); + var rdh = decodeInteger(contextCache, 'IARDH', decoder); + var rdx = decodeInteger(contextCache, 'IARDX', decoder); + var rdy = decodeInteger(contextCache, 'IARDY', decoder); + symbolWidth += rdw; + symbolHeight += rdh; + symbolBitmap = decodeRefinement(symbolWidth, symbolHeight, refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx, (rdh >> 1) + rdy, false, refinementAt, decodingContext); + } + var offsetT = t - (referenceCorner & 1 ? 0 : symbolHeight); + var offsetS = currentS - (referenceCorner & 2 ? symbolWidth : 0); + var s2, t2, symbolRow; + if (transposed) { + for (s2 = 0; s2 < symbolHeight; s2++) { + row = bitmap[offsetS + s2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[s2]; + var maxWidth = Math.min(width - offsetT, symbolWidth); + switch (combinationOperator) { + case 0: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] |= symbolRow[t2]; + } + break; + case 2: + for (t2 = 0; t2 < maxWidth; t2++) { + row[offsetT + t2] ^= symbolRow[t2]; + } + break; + default: + throw new Jbig2Error('operator ' + combinationOperator + ' is not supported'); + } + } + currentS += symbolHeight - 1; + } else { + for (t2 = 0; t2 < symbolHeight; t2++) { + row = bitmap[offsetT + t2]; + if (!row) { + continue; + } + symbolRow = symbolBitmap[t2]; + switch (combinationOperator) { + case 0: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] |= symbolRow[s2]; + } + break; + case 2: + for (s2 = 0; s2 < symbolWidth; s2++) { + row[offsetS + s2] ^= symbolRow[s2]; + } + break; + default: + throw new Jbig2Error('operator ' + combinationOperator + ' is not supported'); + } + } + currentS += symbolWidth - 1; + } + i++; + var deltaS = decodeInteger(contextCache, 'IADS', decoder); + if (deltaS === null) { + break; + } + currentS += deltaS + dsOffset; + } while (true); + } + return bitmap; + } + function readSegmentHeader(data, start) { + var segmentHeader = {}; + segmentHeader.number = (0, _util.readUint32)(data, start); + var flags = data[start + 4]; + var segmentType = flags & 0x3F; + if (!SegmentTypes[segmentType]) { + throw new Jbig2Error('invalid segment type: ' + segmentType); + } + segmentHeader.type = segmentType; + segmentHeader.typeName = SegmentTypes[segmentType]; + segmentHeader.deferredNonRetain = !!(flags & 0x80); + var pageAssociationFieldSize = !!(flags & 0x40); + var referredFlags = data[start + 5]; + var referredToCount = referredFlags >> 5 & 7; + var retainBits = [referredFlags & 31]; + var position = start + 6; + if (referredFlags === 7) { + referredToCount = (0, _util.readUint32)(data, position - 1) & 0x1FFFFFFF; + position += 3; + var bytes = referredToCount + 7 >> 3; + retainBits[0] = data[position++]; + while (--bytes > 0) { + retainBits.push(data[position++]); + } + } else if (referredFlags === 5 || referredFlags === 6) { + throw new Jbig2Error('invalid referred-to flags'); + } + segmentHeader.retainBits = retainBits; + var referredToSegmentNumberSize = segmentHeader.number <= 256 ? 1 : segmentHeader.number <= 65536 ? 2 : 4; + var referredTo = []; + var i, ii; + for (i = 0; i < referredToCount; i++) { + var number = referredToSegmentNumberSize === 1 ? data[position] : referredToSegmentNumberSize === 2 ? (0, _util.readUint16)(data, position) : (0, _util.readUint32)(data, position); + referredTo.push(number); + position += referredToSegmentNumberSize; + } + segmentHeader.referredTo = referredTo; + if (!pageAssociationFieldSize) { + segmentHeader.pageAssociation = data[position++]; + } else { + segmentHeader.pageAssociation = (0, _util.readUint32)(data, position); + position += 4; + } + segmentHeader.length = (0, _util.readUint32)(data, position); + position += 4; + if (segmentHeader.length === 0xFFFFFFFF) { + if (segmentType === 38) { + var genericRegionInfo = readRegionSegmentInformation(data, position); + var genericRegionSegmentFlags = data[position + RegionSegmentInformationFieldLength]; + var genericRegionMmr = !!(genericRegionSegmentFlags & 1); + var searchPatternLength = 6; + var searchPattern = new Uint8Array(searchPatternLength); + if (!genericRegionMmr) { + searchPattern[0] = 0xFF; + searchPattern[1] = 0xAC; + } + searchPattern[2] = genericRegionInfo.height >>> 24 & 0xFF; + searchPattern[3] = genericRegionInfo.height >> 16 & 0xFF; + searchPattern[4] = genericRegionInfo.height >> 8 & 0xFF; + searchPattern[5] = genericRegionInfo.height & 0xFF; + for (i = position, ii = data.length; i < ii; i++) { + var j = 0; + while (j < searchPatternLength && searchPattern[j] === data[i + j]) { + j++; + } + if (j === searchPatternLength) { + segmentHeader.length = i + searchPatternLength; + break; + } + } + if (segmentHeader.length === 0xFFFFFFFF) { + throw new Jbig2Error('segment end was not found'); + } + } else { + throw new Jbig2Error('invalid unknown segment length'); + } + } + segmentHeader.headerEnd = position; + return segmentHeader; + } + function readSegments(header, data, start, end) { + var segments = []; + var position = start; + while (position < end) { + var segmentHeader = readSegmentHeader(data, position); + position = segmentHeader.headerEnd; + var segment = { + header: segmentHeader, + data: data + }; + if (!header.randomAccess) { + segment.start = position; + position += segmentHeader.length; + segment.end = position; + } + segments.push(segment); + if (segmentHeader.type === 51) { + break; + } + } + if (header.randomAccess) { + for (var i = 0, ii = segments.length; i < ii; i++) { + segments[i].start = position; + position += segments[i].header.length; + segments[i].end = position; + } + } + return segments; + } + function readRegionSegmentInformation(data, start) { + return { + width: (0, _util.readUint32)(data, start), + height: (0, _util.readUint32)(data, start + 4), + x: (0, _util.readUint32)(data, start + 8), + y: (0, _util.readUint32)(data, start + 12), + combinationOperator: data[start + 16] & 7 + }; + } + var RegionSegmentInformationFieldLength = 17; + function processSegment(segment, visitor) { + var header = segment.header; + var data = segment.data, + position = segment.start, + end = segment.end; + var args, at, i, atLength; + switch (header.type) { + case 0: + var dictionary = {}; + var dictionaryFlags = (0, _util.readUint16)(data, position); + dictionary.huffman = !!(dictionaryFlags & 1); + dictionary.refinement = !!(dictionaryFlags & 2); + dictionary.huffmanDHSelector = dictionaryFlags >> 2 & 3; + dictionary.huffmanDWSelector = dictionaryFlags >> 4 & 3; + dictionary.bitmapSizeSelector = dictionaryFlags >> 6 & 1; + dictionary.aggregationInstancesSelector = dictionaryFlags >> 7 & 1; + dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256); + dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512); + dictionary.template = dictionaryFlags >> 10 & 3; + dictionary.refinementTemplate = dictionaryFlags >> 12 & 1; + position += 2; + if (!dictionary.huffman) { + atLength = dictionary.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _util.readInt8)(data, position), + y: (0, _util.readInt8)(data, position + 1) + }); + position += 2; + } + dictionary.at = at; + } + if (dictionary.refinement && !dictionary.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _util.readInt8)(data, position), + y: (0, _util.readInt8)(data, position + 1) + }); + position += 2; + } + dictionary.refinementAt = at; + } + dictionary.numberOfExportedSymbols = (0, _util.readUint32)(data, position); + position += 4; + dictionary.numberOfNewSymbols = (0, _util.readUint32)(data, position); + position += 4; + args = [dictionary, header.number, header.referredTo, data, position, end]; + break; + case 6: + case 7: + var textRegion = {}; + textRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + var textRegionSegmentFlags = (0, _util.readUint16)(data, position); + position += 2; + textRegion.huffman = !!(textRegionSegmentFlags & 1); + textRegion.refinement = !!(textRegionSegmentFlags & 2); + textRegion.stripSize = 1 << (textRegionSegmentFlags >> 2 & 3); + textRegion.referenceCorner = textRegionSegmentFlags >> 4 & 3; + textRegion.transposed = !!(textRegionSegmentFlags & 64); + textRegion.combinationOperator = textRegionSegmentFlags >> 7 & 3; + textRegion.defaultPixelValue = textRegionSegmentFlags >> 9 & 1; + textRegion.dsOffset = textRegionSegmentFlags << 17 >> 27; + textRegion.refinementTemplate = textRegionSegmentFlags >> 15 & 1; + if (textRegion.huffman) { + var textRegionHuffmanFlags = (0, _util.readUint16)(data, position); + position += 2; + textRegion.huffmanFS = textRegionHuffmanFlags & 3; + textRegion.huffmanDS = textRegionHuffmanFlags >> 2 & 3; + textRegion.huffmanDT = textRegionHuffmanFlags >> 4 & 3; + textRegion.huffmanRefinementDW = textRegionHuffmanFlags >> 6 & 3; + textRegion.huffmanRefinementDH = textRegionHuffmanFlags >> 8 & 3; + textRegion.huffmanRefinementDX = textRegionHuffmanFlags >> 10 & 3; + textRegion.huffmanRefinementDY = textRegionHuffmanFlags >> 12 & 3; + textRegion.huffmanRefinementSizeSelector = !!(textRegionHuffmanFlags & 14); + } + if (textRegion.refinement && !textRegion.refinementTemplate) { + at = []; + for (i = 0; i < 2; i++) { + at.push({ + x: (0, _util.readInt8)(data, position), + y: (0, _util.readInt8)(data, position + 1) + }); + position += 2; + } + textRegion.refinementAt = at; + } + textRegion.numberOfSymbolInstances = (0, _util.readUint32)(data, position); + position += 4; + if (textRegion.huffman) { + throw new Jbig2Error('huffman is not supported'); + } + args = [textRegion, header.referredTo, data, position, end]; + break; + case 38: + case 39: + var genericRegion = {}; + genericRegion.info = readRegionSegmentInformation(data, position); + position += RegionSegmentInformationFieldLength; + var genericRegionSegmentFlags = data[position++]; + genericRegion.mmr = !!(genericRegionSegmentFlags & 1); + genericRegion.template = genericRegionSegmentFlags >> 1 & 3; + genericRegion.prediction = !!(genericRegionSegmentFlags & 8); + if (!genericRegion.mmr) { + atLength = genericRegion.template === 0 ? 4 : 1; + at = []; + for (i = 0; i < atLength; i++) { + at.push({ + x: (0, _util.readInt8)(data, position), + y: (0, _util.readInt8)(data, position + 1) + }); + position += 2; + } + genericRegion.at = at; + } + args = [genericRegion, data, position, end]; + break; + case 48: + var pageInfo = { + width: (0, _util.readUint32)(data, position), + height: (0, _util.readUint32)(data, position + 4), + resolutionX: (0, _util.readUint32)(data, position + 8), + resolutionY: (0, _util.readUint32)(data, position + 12) + }; + if (pageInfo.height === 0xFFFFFFFF) { + delete pageInfo.height; + } + var pageSegmentFlags = data[position + 16]; + (0, _util.readUint16)(data, position + 17); + pageInfo.lossless = !!(pageSegmentFlags & 1); + pageInfo.refinement = !!(pageSegmentFlags & 2); + pageInfo.defaultPixelValue = pageSegmentFlags >> 2 & 1; + pageInfo.combinationOperator = pageSegmentFlags >> 3 & 3; + pageInfo.requiresBuffer = !!(pageSegmentFlags & 32); + pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64); + args = [pageInfo]; + break; + case 49: + break; + case 50: + break; + case 51: + break; + case 62: + break; + default: + throw new Jbig2Error('segment type ' + header.typeName + '(' + header.type + ')' + ' is not implemented'); + } + var callbackName = 'on' + header.typeName; + if (callbackName in visitor) { + visitor[callbackName].apply(visitor, args); + } + } + function processSegments(segments, visitor) { + for (var i = 0, ii = segments.length; i < ii; i++) { + processSegment(segments[i], visitor); + } + } + function parseJbig2(data, start, end) { + var position = start; + if (data[position] !== 0x97 || data[position + 1] !== 0x4A || data[position + 2] !== 0x42 || data[position + 3] !== 0x32 || data[position + 4] !== 0x0D || data[position + 5] !== 0x0A || data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) { + throw new Jbig2Error('invalid header'); + } + var header = {}; + position += 8; + var flags = data[position++]; + header.randomAccess = !(flags & 1); + if (!(flags & 2)) { + header.numberOfPages = (0, _util.readUint32)(data, position); + position += 4; + } + readSegments(header, data, position, end); + throw new Error('Not implemented'); + } + function parseJbig2Chunks(chunks) { + var visitor = new SimpleSegmentVisitor(); + for (var i = 0, ii = chunks.length; i < ii; i++) { + var chunk = chunks[i]; + var segments = readSegments({}, chunk.data, chunk.start, chunk.end); + processSegments(segments, visitor); + } + return visitor.buffer; + } + function SimpleSegmentVisitor() {} + SimpleSegmentVisitor.prototype = { + onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) { + this.currentPageInfo = info; + var rowSize = info.width + 7 >> 3; + var buffer = new Uint8Array(rowSize * info.height); + if (info.defaultPixelValue) { + for (var i = 0, ii = buffer.length; i < ii; i++) { + buffer[i] = 0xFF; + } + } + this.buffer = buffer; + }, + drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) { + var pageInfo = this.currentPageInfo; + var width = regionInfo.width, + height = regionInfo.height; + var rowSize = pageInfo.width + 7 >> 3; + var combinationOperator = pageInfo.combinationOperatorOverride ? regionInfo.combinationOperator : pageInfo.combinationOperator; + var buffer = this.buffer; + var mask0 = 128 >> (regionInfo.x & 7); + var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3); + var i, j, mask, offset; + switch (combinationOperator) { + case 0: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] |= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + case 2: + for (i = 0; i < height; i++) { + mask = mask0; + offset = offset0; + for (j = 0; j < width; j++) { + if (bitmap[i][j]) { + buffer[offset] ^= mask; + } + mask >>= 1; + if (!mask) { + mask = 128; + offset++; + } + } + offset0 += rowSize; + } + break; + default: + throw new Jbig2Error('operator ' + combinationOperator + ' is not supported'); + } + }, + onImmediateGenericRegion: function SimpleSegmentVisitor_onImmediateGenericRegion(region, data, start, end) { + var regionInfo = region.info; + var decodingContext = new DecodingContext(data, start, end); + var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height, region.template, region.prediction, null, region.at, decodingContext); + this.drawBitmap(regionInfo, bitmap); + }, + onImmediateLosslessGenericRegion: function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() { + this.onImmediateGenericRegion.apply(this, arguments); + }, + onSymbolDictionary: function SimpleSegmentVisitor_onSymbolDictionary(dictionary, currentSegment, referredSegments, data, start, end) { + var huffmanTables; + if (dictionary.huffman) { + throw new Jbig2Error('huffman is not supported'); + } + var symbols = this.symbols; + if (!symbols) { + this.symbols = symbols = {}; + } + var inputSymbols = []; + for (var i = 0, ii = referredSegments.length; i < ii; i++) { + inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); + } + var decodingContext = new DecodingContext(data, start, end); + symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman, dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols, dictionary.numberOfExportedSymbols, huffmanTables, dictionary.template, dictionary.at, dictionary.refinementTemplate, dictionary.refinementAt, decodingContext); + }, + onImmediateTextRegion: function SimpleSegmentVisitor_onImmediateTextRegion(region, referredSegments, data, start, end) { + var regionInfo = region.info; + var huffmanTables; + var symbols = this.symbols; + var inputSymbols = []; + for (var i = 0, ii = referredSegments.length; i < ii; i++) { + inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]); + } + var symbolCodeLength = (0, _util.log2)(inputSymbols.length); + var decodingContext = new DecodingContext(data, start, end); + var bitmap = decodeTextRegion(region.huffman, region.refinement, regionInfo.width, regionInfo.height, region.defaultPixelValue, region.numberOfSymbolInstances, region.stripSize, inputSymbols, symbolCodeLength, region.transposed, region.dsOffset, region.referenceCorner, region.combinationOperator, huffmanTables, region.refinementTemplate, region.refinementAt, decodingContext); + this.drawBitmap(regionInfo, bitmap); + }, + onImmediateLosslessTextRegion: function SimpleSegmentVisitor_onImmediateLosslessTextRegion() { + this.onImmediateTextRegion.apply(this, arguments); + } + }; + function Jbig2Image() {} + Jbig2Image.prototype = { + parseChunks: function Jbig2Image_parseChunks(chunks) { + return parseJbig2Chunks(chunks); + } + }; + return Jbig2Image; +}(); +exports.Jbig2Image = Jbig2Image; + +/***/ }), +/* 28 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.JpegImage = undefined; + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var _util = __w_pdfjs_require__(0); + +var JpegError = function JpegErrorClosure() { + function JpegError(msg) { + this.message = 'JPEG error: ' + msg; + } + JpegError.prototype = new Error(); + JpegError.prototype.name = 'JpegError'; + JpegError.constructor = JpegError; + return JpegError; +}(); +var JpegImage = function JpegImageClosure() { + var dctZigZag = new Uint8Array([0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 60, 61, 54, 47, 55, 62, 63]); + var dctCos1 = 4017; + var dctSin1 = 799; + var dctCos3 = 3406; + var dctSin3 = 2276; + var dctCos6 = 1567; + var dctSin6 = 3784; + var dctSqrt2 = 5793; + var dctSqrt1d2 = 2896; + function JpegImage() { + this.decodeTransform = null; + this.colorTransform = -1; + } + function buildHuffmanTable(codeLengths, values) { + var k = 0, + code = [], + i, + j, + length = 16; + while (length > 0 && !codeLengths[length - 1]) { + length--; + } + code.push({ + children: [], + index: 0 + }); + var p = code[0], + q; + for (i = 0; i < length; i++) { + for (j = 0; j < codeLengths[i]; j++) { + p = code.pop(); + p.children[p.index] = values[k]; + while (p.index > 0) { + p = code.pop(); + } + p.index++; + code.push(p); + while (code.length <= i) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + k++; + } + if (i + 1 < length) { + code.push(q = { + children: [], + index: 0 + }); + p.children[p.index] = q.children; + p = q; + } + } + return code[0].children; + } + function getBlockBufferOffset(component, row, col) { + return 64 * ((component.blocksPerLine + 1) * row + col); + } + function decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successivePrev, successive) { + var mcusPerLine = frame.mcusPerLine; + var progressive = frame.progressive; + var startOffset = offset, + bitsData = 0, + bitsCount = 0; + function readBit() { + if (bitsCount > 0) { + bitsCount--; + return bitsData >> bitsCount & 1; + } + bitsData = data[offset++]; + if (bitsData === 0xFF) { + var nextByte = data[offset++]; + if (nextByte) { + throw new JpegError('unexpected marker ' + (bitsData << 8 | nextByte).toString(16)); + } + } + bitsCount = 7; + return bitsData >>> 7; + } + function decodeHuffman(tree) { + var node = tree; + while (true) { + node = node[readBit()]; + if (typeof node === 'number') { + return node; + } + if ((typeof node === 'undefined' ? 'undefined' : _typeof(node)) !== 'object') { + throw new JpegError('invalid huffman sequence'); + } + } + } + function receive(length) { + var n = 0; + while (length > 0) { + n = n << 1 | readBit(); + length--; + } + return n; + } + function receiveAndExtend(length) { + if (length === 1) { + return readBit() === 1 ? 1 : -1; + } + var n = receive(length); + if (n >= 1 << length - 1) { + return n; + } + return n + (-1 << length) + 1; + } + function decodeBaseline(component, offset) { + var t = decodeHuffman(component.huffmanTableDC); + var diff = t === 0 ? 0 : receiveAndExtend(t); + component.blockData[offset] = component.pred += diff; + var k = 1; + while (k < 64) { + var rs = decodeHuffman(component.huffmanTableAC); + var s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + break; + } + k += 16; + continue; + } + k += r; + var z = dctZigZag[k]; + component.blockData[offset + z] = receiveAndExtend(s); + k++; + } + } + function decodeDCFirst(component, offset) { + var t = decodeHuffman(component.huffmanTableDC); + var diff = t === 0 ? 0 : receiveAndExtend(t) << successive; + component.blockData[offset] = component.pred += diff; + } + function decodeDCSuccessive(component, offset) { + component.blockData[offset] |= readBit() << successive; + } + var eobrun = 0; + function decodeACFirst(component, offset) { + if (eobrun > 0) { + eobrun--; + return; + } + var k = spectralStart, + e = spectralEnd; + while (k <= e) { + var rs = decodeHuffman(component.huffmanTableAC); + var s = rs & 15, + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r) - 1; + break; + } + k += 16; + continue; + } + k += r; + var z = dctZigZag[k]; + component.blockData[offset + z] = receiveAndExtend(s) * (1 << successive); + k++; + } + } + var successiveACState = 0, + successiveACNextValue; + function decodeACSuccessive(component, offset) { + var k = spectralStart; + var e = spectralEnd; + var r = 0; + var s; + var rs; + while (k <= e) { + var z = dctZigZag[k]; + switch (successiveACState) { + case 0: + rs = decodeHuffman(component.huffmanTableAC); + s = rs & 15; + r = rs >> 4; + if (s === 0) { + if (r < 15) { + eobrun = receive(r) + (1 << r); + successiveACState = 4; + } else { + r = 16; + successiveACState = 1; + } + } else { + if (s !== 1) { + throw new JpegError('invalid ACn encoding'); + } + successiveACNextValue = receiveAndExtend(s); + successiveACState = r ? 2 : 3; + } + continue; + case 1: + case 2: + if (component.blockData[offset + z]) { + component.blockData[offset + z] += readBit() << successive; + } else { + r--; + if (r === 0) { + successiveACState = successiveACState === 2 ? 3 : 0; + } + } + break; + case 3: + if (component.blockData[offset + z]) { + component.blockData[offset + z] += readBit() << successive; + } else { + component.blockData[offset + z] = successiveACNextValue << successive; + successiveACState = 0; + } + break; + case 4: + if (component.blockData[offset + z]) { + component.blockData[offset + z] += readBit() << successive; + } + break; + } + k++; + } + if (successiveACState === 4) { + eobrun--; + if (eobrun === 0) { + successiveACState = 0; + } + } + } + function decodeMcu(component, decode, mcu, row, col) { + var mcuRow = mcu / mcusPerLine | 0; + var mcuCol = mcu % mcusPerLine; + var blockRow = mcuRow * component.v + row; + var blockCol = mcuCol * component.h + col; + var offset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, offset); + } + function decodeBlock(component, decode, mcu) { + var blockRow = mcu / component.blocksPerLine | 0; + var blockCol = mcu % component.blocksPerLine; + var offset = getBlockBufferOffset(component, blockRow, blockCol); + decode(component, offset); + } + var componentsLength = components.length; + var component, i, j, k, n; + var decodeFn; + if (progressive) { + if (spectralStart === 0) { + decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive; + } else { + decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive; + } + } else { + decodeFn = decodeBaseline; + } + var mcu = 0, + fileMarker; + var mcuExpected; + if (componentsLength === 1) { + mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn; + } else { + mcuExpected = mcusPerLine * frame.mcusPerColumn; + } + var h, v; + while (mcu < mcuExpected) { + var mcuToRead = resetInterval ? Math.min(mcuExpected - mcu, resetInterval) : mcuExpected; + for (i = 0; i < componentsLength; i++) { + components[i].pred = 0; + } + eobrun = 0; + if (componentsLength === 1) { + component = components[0]; + for (n = 0; n < mcuToRead; n++) { + decodeBlock(component, decodeFn, mcu); + mcu++; + } + } else { + for (n = 0; n < mcuToRead; n++) { + for (i = 0; i < componentsLength; i++) { + component = components[i]; + h = component.h; + v = component.v; + for (j = 0; j < v; j++) { + for (k = 0; k < h; k++) { + decodeMcu(component, decodeFn, mcu, j, k); + } + } + } + mcu++; + } + } + bitsCount = 0; + fileMarker = findNextFileMarker(data, offset); + if (fileMarker && fileMarker.invalid) { + (0, _util.warn)('decodeScan - unexpected MCU data, next marker is: ' + fileMarker.invalid); + offset = fileMarker.offset; + } + var marker = fileMarker && fileMarker.marker; + if (!marker || marker <= 0xFF00) { + throw new JpegError('marker was not found'); + } + if (marker >= 0xFFD0 && marker <= 0xFFD7) { + offset += 2; + } else { + break; + } + } + fileMarker = findNextFileMarker(data, offset); + if (fileMarker && fileMarker.invalid) { + (0, _util.warn)('decodeScan - unexpected Scan data, next marker is: ' + fileMarker.invalid); + offset = fileMarker.offset; + } + return offset - startOffset; + } + function quantizeAndInverse(component, blockBufferOffset, p) { + var qt = component.quantizationTable, + blockData = component.blockData; + var v0, v1, v2, v3, v4, v5, v6, v7; + var p0, p1, p2, p3, p4, p5, p6, p7; + var t; + if (!qt) { + throw new JpegError('missing required Quantization Table.'); + } + for (var row = 0; row < 64; row += 8) { + p0 = blockData[blockBufferOffset + row]; + p1 = blockData[blockBufferOffset + row + 1]; + p2 = blockData[blockBufferOffset + row + 2]; + p3 = blockData[blockBufferOffset + row + 3]; + p4 = blockData[blockBufferOffset + row + 4]; + p5 = blockData[blockBufferOffset + row + 5]; + p6 = blockData[blockBufferOffset + row + 6]; + p7 = blockData[blockBufferOffset + row + 7]; + p0 *= qt[row]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 512 >> 10; + p[row] = t; + p[row + 1] = t; + p[row + 2] = t; + p[row + 3] = t; + p[row + 4] = t; + p[row + 5] = t; + p[row + 6] = t; + p[row + 7] = t; + continue; + } + p1 *= qt[row + 1]; + p2 *= qt[row + 2]; + p3 *= qt[row + 3]; + p4 *= qt[row + 4]; + p5 *= qt[row + 5]; + p6 *= qt[row + 6]; + p7 *= qt[row + 7]; + v0 = dctSqrt2 * p0 + 128 >> 8; + v1 = dctSqrt2 * p4 + 128 >> 8; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 128 >> 8; + v7 = dctSqrt1d2 * (p1 + p7) + 128 >> 8; + v5 = p3 << 4; + v6 = p5 << 4; + v0 = v0 + v1 + 1 >> 1; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 128 >> 8; + v2 = v2 * dctCos6 - v3 * dctSin6 + 128 >> 8; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p[row] = v0 + v7; + p[row + 7] = v0 - v7; + p[row + 1] = v1 + v6; + p[row + 6] = v1 - v6; + p[row + 2] = v2 + v5; + p[row + 5] = v2 - v5; + p[row + 3] = v3 + v4; + p[row + 4] = v3 - v4; + } + for (var col = 0; col < 8; ++col) { + p0 = p[col]; + p1 = p[col + 8]; + p2 = p[col + 16]; + p3 = p[col + 24]; + p4 = p[col + 32]; + p5 = p[col + 40]; + p6 = p[col + 48]; + p7 = p[col + 56]; + if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) { + t = dctSqrt2 * p0 + 8192 >> 14; + t = t < -2040 ? 0 : t >= 2024 ? 255 : t + 2056 >> 4; + blockData[blockBufferOffset + col] = t; + blockData[blockBufferOffset + col + 8] = t; + blockData[blockBufferOffset + col + 16] = t; + blockData[blockBufferOffset + col + 24] = t; + blockData[blockBufferOffset + col + 32] = t; + blockData[blockBufferOffset + col + 40] = t; + blockData[blockBufferOffset + col + 48] = t; + blockData[blockBufferOffset + col + 56] = t; + continue; + } + v0 = dctSqrt2 * p0 + 2048 >> 12; + v1 = dctSqrt2 * p4 + 2048 >> 12; + v2 = p2; + v3 = p6; + v4 = dctSqrt1d2 * (p1 - p7) + 2048 >> 12; + v7 = dctSqrt1d2 * (p1 + p7) + 2048 >> 12; + v5 = p3; + v6 = p5; + v0 = (v0 + v1 + 1 >> 1) + 4112; + v1 = v0 - v1; + t = v2 * dctSin6 + v3 * dctCos6 + 2048 >> 12; + v2 = v2 * dctCos6 - v3 * dctSin6 + 2048 >> 12; + v3 = t; + v4 = v4 + v6 + 1 >> 1; + v6 = v4 - v6; + v7 = v7 + v5 + 1 >> 1; + v5 = v7 - v5; + v0 = v0 + v3 + 1 >> 1; + v3 = v0 - v3; + v1 = v1 + v2 + 1 >> 1; + v2 = v1 - v2; + t = v4 * dctSin3 + v7 * dctCos3 + 2048 >> 12; + v4 = v4 * dctCos3 - v7 * dctSin3 + 2048 >> 12; + v7 = t; + t = v5 * dctSin1 + v6 * dctCos1 + 2048 >> 12; + v5 = v5 * dctCos1 - v6 * dctSin1 + 2048 >> 12; + v6 = t; + p0 = v0 + v7; + p7 = v0 - v7; + p1 = v1 + v6; + p6 = v1 - v6; + p2 = v2 + v5; + p5 = v2 - v5; + p3 = v3 + v4; + p4 = v3 - v4; + p0 = p0 < 16 ? 0 : p0 >= 4080 ? 255 : p0 >> 4; + p1 = p1 < 16 ? 0 : p1 >= 4080 ? 255 : p1 >> 4; + p2 = p2 < 16 ? 0 : p2 >= 4080 ? 255 : p2 >> 4; + p3 = p3 < 16 ? 0 : p3 >= 4080 ? 255 : p3 >> 4; + p4 = p4 < 16 ? 0 : p4 >= 4080 ? 255 : p4 >> 4; + p5 = p5 < 16 ? 0 : p5 >= 4080 ? 255 : p5 >> 4; + p6 = p6 < 16 ? 0 : p6 >= 4080 ? 255 : p6 >> 4; + p7 = p7 < 16 ? 0 : p7 >= 4080 ? 255 : p7 >> 4; + blockData[blockBufferOffset + col] = p0; + blockData[blockBufferOffset + col + 8] = p1; + blockData[blockBufferOffset + col + 16] = p2; + blockData[blockBufferOffset + col + 24] = p3; + blockData[blockBufferOffset + col + 32] = p4; + blockData[blockBufferOffset + col + 40] = p5; + blockData[blockBufferOffset + col + 48] = p6; + blockData[blockBufferOffset + col + 56] = p7; + } + } + function buildComponentData(frame, component) { + var blocksPerLine = component.blocksPerLine; + var blocksPerColumn = component.blocksPerColumn; + var computationBuffer = new Int16Array(64); + for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) { + for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) { + var offset = getBlockBufferOffset(component, blockRow, blockCol); + quantizeAndInverse(component, offset, computationBuffer); + } + } + return component.blockData; + } + function clamp0to255(a) { + return a <= 0 ? 0 : a >= 255 ? 255 : a; + } + function findNextFileMarker(data, currentPos, startPos) { + function peekUint16(pos) { + return data[pos] << 8 | data[pos + 1]; + } + var maxPos = data.length - 1; + var newPos = startPos < currentPos ? startPos : currentPos; + if (currentPos >= maxPos) { + return null; + } + var currentMarker = peekUint16(currentPos); + if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) { + return { + invalid: null, + marker: currentMarker, + offset: currentPos + }; + } + var newMarker = peekUint16(newPos); + while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) { + if (++newPos >= maxPos) { + return null; + } + newMarker = peekUint16(newPos); + } + return { + invalid: currentMarker.toString(16), + marker: newMarker, + offset: newPos + }; + } + JpegImage.prototype = { + parse: function parse(data) { + function readUint16() { + var value = data[offset] << 8 | data[offset + 1]; + offset += 2; + return value; + } + function readDataBlock() { + var length = readUint16(); + var endOffset = offset + length - 2; + var fileMarker = findNextFileMarker(data, endOffset, offset); + if (fileMarker && fileMarker.invalid) { + (0, _util.warn)('readDataBlock - incorrect length, next marker is: ' + fileMarker.invalid); + endOffset = fileMarker.offset; + } + var array = data.subarray(offset, endOffset); + offset += array.length; + return array; + } + function prepareComponents(frame) { + var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH); + var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV); + for (var i = 0; i < frame.components.length; i++) { + component = frame.components[i]; + var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) * component.h / frame.maxH); + var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) * component.v / frame.maxV); + var blocksPerLineForMcu = mcusPerLine * component.h; + var blocksPerColumnForMcu = mcusPerColumn * component.v; + var blocksBufferSize = 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1); + component.blockData = new Int16Array(blocksBufferSize); + component.blocksPerLine = blocksPerLine; + component.blocksPerColumn = blocksPerColumn; + } + frame.mcusPerLine = mcusPerLine; + frame.mcusPerColumn = mcusPerColumn; + } + var offset = 0; + var jfif = null; + var adobe = null; + var frame, resetInterval; + var quantizationTables = []; + var huffmanTablesAC = [], + huffmanTablesDC = []; + var fileMarker = readUint16(); + if (fileMarker !== 0xFFD8) { + throw new JpegError('SOI not found'); + } + fileMarker = readUint16(); + while (fileMarker !== 0xFFD9) { + var i, j, l; + switch (fileMarker) { + case 0xFFE0: + case 0xFFE1: + case 0xFFE2: + case 0xFFE3: + case 0xFFE4: + case 0xFFE5: + case 0xFFE6: + case 0xFFE7: + case 0xFFE8: + case 0xFFE9: + case 0xFFEA: + case 0xFFEB: + case 0xFFEC: + case 0xFFED: + case 0xFFEE: + case 0xFFEF: + case 0xFFFE: + var appData = readDataBlock(); + if (fileMarker === 0xFFE0) { + if (appData[0] === 0x4A && appData[1] === 0x46 && appData[2] === 0x49 && appData[3] === 0x46 && appData[4] === 0) { + jfif = { + version: { + major: appData[5], + minor: appData[6] + }, + densityUnits: appData[7], + xDensity: appData[8] << 8 | appData[9], + yDensity: appData[10] << 8 | appData[11], + thumbWidth: appData[12], + thumbHeight: appData[13], + thumbData: appData.subarray(14, 14 + 3 * appData[12] * appData[13]) + }; + } + } + if (fileMarker === 0xFFEE) { + if (appData[0] === 0x41 && appData[1] === 0x64 && appData[2] === 0x6F && appData[3] === 0x62 && appData[4] === 0x65) { + adobe = { + version: appData[5] << 8 | appData[6], + flags0: appData[7] << 8 | appData[8], + flags1: appData[9] << 8 | appData[10], + transformCode: appData[11] + }; + } + } + break; + case 0xFFDB: + var quantizationTablesLength = readUint16(); + var quantizationTablesEnd = quantizationTablesLength + offset - 2; + var z; + while (offset < quantizationTablesEnd) { + var quantizationTableSpec = data[offset++]; + var tableData = new Uint16Array(64); + if (quantizationTableSpec >> 4 === 0) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = data[offset++]; + } + } else if (quantizationTableSpec >> 4 === 1) { + for (j = 0; j < 64; j++) { + z = dctZigZag[j]; + tableData[z] = readUint16(); + } + } else { + throw new JpegError('DQT - invalid table spec'); + } + quantizationTables[quantizationTableSpec & 15] = tableData; + } + break; + case 0xFFC0: + case 0xFFC1: + case 0xFFC2: + if (frame) { + throw new JpegError('Only single frame JPEGs supported'); + } + readUint16(); + frame = {}; + frame.extended = fileMarker === 0xFFC1; + frame.progressive = fileMarker === 0xFFC2; + frame.precision = data[offset++]; + frame.scanLines = readUint16(); + frame.samplesPerLine = readUint16(); + frame.components = []; + frame.componentIds = {}; + var componentsCount = data[offset++], + componentId; + var maxH = 0, + maxV = 0; + for (i = 0; i < componentsCount; i++) { + componentId = data[offset]; + var h = data[offset + 1] >> 4; + var v = data[offset + 1] & 15; + if (maxH < h) { + maxH = h; + } + if (maxV < v) { + maxV = v; + } + var qId = data[offset + 2]; + l = frame.components.push({ + h: h, + v: v, + quantizationId: qId, + quantizationTable: null + }); + frame.componentIds[componentId] = l - 1; + offset += 3; + } + frame.maxH = maxH; + frame.maxV = maxV; + prepareComponents(frame); + break; + case 0xFFC4: + var huffmanLength = readUint16(); + for (i = 2; i < huffmanLength;) { + var huffmanTableSpec = data[offset++]; + var codeLengths = new Uint8Array(16); + var codeLengthSum = 0; + for (j = 0; j < 16; j++, offset++) { + codeLengthSum += codeLengths[j] = data[offset]; + } + var huffmanValues = new Uint8Array(codeLengthSum); + for (j = 0; j < codeLengthSum; j++, offset++) { + huffmanValues[j] = data[offset]; + } + i += 17 + codeLengthSum; + (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] = buildHuffmanTable(codeLengths, huffmanValues); + } + break; + case 0xFFDD: + readUint16(); + resetInterval = readUint16(); + break; + case 0xFFDA: + readUint16(); + var selectorsCount = data[offset++]; + var components = [], + component; + for (i = 0; i < selectorsCount; i++) { + var componentIndex = frame.componentIds[data[offset++]]; + component = frame.components[componentIndex]; + var tableSpec = data[offset++]; + component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4]; + component.huffmanTableAC = huffmanTablesAC[tableSpec & 15]; + components.push(component); + } + var spectralStart = data[offset++]; + var spectralEnd = data[offset++]; + var successiveApproximation = data[offset++]; + var processed = decodeScan(data, offset, frame, components, resetInterval, spectralStart, spectralEnd, successiveApproximation >> 4, successiveApproximation & 15); + offset += processed; + break; + case 0xFFFF: + if (data[offset] !== 0xFF) { + offset--; + } + break; + default: + if (data[offset - 3] === 0xFF && data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) { + offset -= 3; + break; + } + throw new JpegError('unknown marker ' + fileMarker.toString(16)); + } + fileMarker = readUint16(); + } + this.width = frame.samplesPerLine; + this.height = frame.scanLines; + this.jfif = jfif; + this.adobe = adobe; + this.components = []; + for (i = 0; i < frame.components.length; i++) { + component = frame.components[i]; + var quantizationTable = quantizationTables[component.quantizationId]; + if (quantizationTable) { + component.quantizationTable = quantizationTable; + } + this.components.push({ + output: buildComponentData(frame, component), + scaleX: component.h / frame.maxH, + scaleY: component.v / frame.maxV, + blocksPerLine: component.blocksPerLine, + blocksPerColumn: component.blocksPerColumn + }); + } + this.numComponents = this.components.length; + }, + _getLinearizedBlockData: function getLinearizedBlockData(width, height) { + var scaleX = this.width / width, + scaleY = this.height / height; + var component, componentScaleX, componentScaleY, blocksPerScanline; + var x, y, i, j, k; + var index; + var offset = 0; + var output; + var numComponents = this.components.length; + var dataLength = width * height * numComponents; + var data = new Uint8Array(dataLength); + var xScaleBlockOffset = new Uint32Array(width); + var mask3LSB = 0xfffffff8; + for (i = 0; i < numComponents; i++) { + component = this.components[i]; + componentScaleX = component.scaleX * scaleX; + componentScaleY = component.scaleY * scaleY; + offset = i; + output = component.output; + blocksPerScanline = component.blocksPerLine + 1 << 3; + for (x = 0; x < width; x++) { + j = 0 | x * componentScaleX; + xScaleBlockOffset[x] = (j & mask3LSB) << 3 | j & 7; + } + for (y = 0; y < height; y++) { + j = 0 | y * componentScaleY; + index = blocksPerScanline * (j & mask3LSB) | (j & 7) << 3; + for (x = 0; x < width; x++) { + data[offset] = output[index + xScaleBlockOffset[x]]; + offset += numComponents; + } + } + } + var transform = this.decodeTransform; + if (transform) { + for (i = 0; i < dataLength;) { + for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) { + data[i] = (data[i] * transform[k] >> 8) + transform[k + 1]; + } + } + } + return data; + }, + _isColorConversionNeeded: function _isColorConversionNeeded() { + if (this.adobe) { + return !!this.adobe.transformCode; + } + if (this.numComponents === 3) { + if (this.colorTransform === 0) { + return false; + } + return true; + } + if (this.colorTransform === 1) { + return true; + } + return false; + }, + + _convertYccToRgb: function convertYccToRgb(data) { + var Y, Cb, Cr; + for (var i = 0, length = data.length; i < length; i += 3) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = clamp0to255(Y - 179.456 + 1.402 * Cr); + data[i + 1] = clamp0to255(Y + 135.459 - 0.344 * Cb - 0.714 * Cr); + data[i + 2] = clamp0to255(Y - 226.816 + 1.772 * Cb); + } + return data; + }, + _convertYcckToRgb: function convertYcckToRgb(data) { + var Y, Cb, Cr, k; + var offset = 0; + for (var i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + k = data[i + 3]; + var r = -122.67195406894 + Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr - 5.4080610064599e-5 * Y + 0.00048449797120281 * k - 0.154362151871126) + Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y - 0.00477271405408747 * k + 1.53380253221734) + Y * (0.000961250184130688 * Y - 0.00266257332283933 * k + 0.48357088451265) + k * (-0.000336197177618394 * k + 0.484791561490776); + var g = 107.268039397724 + Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr + 0.000659397001245577 * Y + 0.000426105652938837 * k - 0.176491792462875) + Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y + 0.000770482631801132 * k - 0.151051492775562) + Y * (0.00126935368114843 * Y - 0.00265090189010898 * k + 0.25802910206845) + k * (-0.000318913117588328 * k - 0.213742400323665); + var b = -20.810012546947 + Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr + 0.0020741088115012 * Y - 0.00288260236853442 * k + 0.814272968359295) + Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y + 0.000560833691242812 * k - 0.195152027534049) + Y * (0.00174418132927582 * Y - 0.00255243321439347 * k + 0.116935020465145) + k * (-0.000343531996510555 * k + 0.24165260232407); + data[offset++] = clamp0to255(r); + data[offset++] = clamp0to255(g); + data[offset++] = clamp0to255(b); + } + return data; + }, + _convertYcckToCmyk: function convertYcckToCmyk(data) { + var Y, Cb, Cr; + for (var i = 0, length = data.length; i < length; i += 4) { + Y = data[i]; + Cb = data[i + 1]; + Cr = data[i + 2]; + data[i] = clamp0to255(434.456 - Y - 1.402 * Cr); + data[i + 1] = clamp0to255(119.541 - Y + 0.344 * Cb + 0.714 * Cr); + data[i + 2] = clamp0to255(481.816 - Y - 1.772 * Cb); + } + return data; + }, + _convertCmykToRgb: function convertCmykToRgb(data) { + var c, m, y, k; + var offset = 0; + var min = -255 * 255 * 255; + var scale = 1 / 255 / 255; + for (var i = 0, length = data.length; i < length; i += 4) { + c = data[i]; + m = data[i + 1]; + y = data[i + 2]; + k = data[i + 3]; + var r = c * (-4.387332384609988 * c + 54.48615194189176 * m + 18.82290502165302 * y + 212.25662451639585 * k - 72734.4411664936) + m * (1.7149763477362134 * m - 5.6096736904047315 * y - 17.873870861415444 * k - 1401.7366389350734) + y * (-2.5217340131683033 * y - 21.248923337353073 * k + 4465.541406466231) - k * (21.86122147463605 * k + 48317.86113160301); + var g = c * (8.841041422036149 * c + 60.118027045597366 * m + 6.871425592049007 * y + 31.159100130055922 * k - 20220.756542821975) + m * (-15.310361306967817 * m + 17.575251261109482 * y + 131.35250912493976 * k - 48691.05921601825) + y * (4.444339102852739 * y + 9.8632861493405 * k - 6341.191035517494) - k * (20.737325471181034 * k + 47890.15695978492); + var b = c * (0.8842522430003296 * c + 8.078677503112928 * m + 30.89978309703729 * y - 0.23883238689178934 * k - 3616.812083916688) + m * (10.49593273432072 * m + 63.02378494754052 * y + 50.606957656360734 * k - 28620.90484698408) + y * (0.03296041114873217 * y + 115.60384449646641 * k - 49363.43385999684) - k * (22.33816807309886 * k + 45932.16563550634); + data[offset++] = r >= 0 ? 255 : r <= min ? 0 : 255 + r * scale | 0; + data[offset++] = g >= 0 ? 255 : g <= min ? 0 : 255 + g * scale | 0; + data[offset++] = b >= 0 ? 255 : b <= min ? 0 : 255 + b * scale | 0; + } + return data; + }, + getData: function getData(width, height, forceRGBoutput) { + if (this.numComponents > 4) { + throw new JpegError('Unsupported color mode'); + } + var data = this._getLinearizedBlockData(width, height); + if (this.numComponents === 1 && forceRGBoutput) { + var dataLength = data.length; + var rgbData = new Uint8Array(dataLength * 3); + var offset = 0; + for (var i = 0; i < dataLength; i++) { + var grayColor = data[i]; + rgbData[offset++] = grayColor; + rgbData[offset++] = grayColor; + rgbData[offset++] = grayColor; + } + return rgbData; + } else if (this.numComponents === 3 && this._isColorConversionNeeded()) { + return this._convertYccToRgb(data); + } else if (this.numComponents === 4) { + if (this._isColorConversionNeeded()) { + if (forceRGBoutput) { + return this._convertYcckToRgb(data); + } + return this._convertYcckToCmyk(data); + } else if (forceRGBoutput) { + return this._convertCmykToRgb(data); + } + } + return data; + } + }; + return JpegImage; +}(); +exports.JpegImage = JpegImage; + +/***/ }), +/* 29 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getMetrics = undefined; + +var _util = __w_pdfjs_require__(0); + +var getMetrics = (0, _util.getLookupTableFactory)(function (t) { + t['Courier'] = 600; + t['Courier-Bold'] = 600; + t['Courier-BoldOblique'] = 600; + t['Courier-Oblique'] = 600; + t['Helvetica'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 278; + t['exclam'] = 278; + t['quotedbl'] = 355; + t['numbersign'] = 556; + t['dollar'] = 556; + t['percent'] = 889; + t['ampersand'] = 667; + t['quoteright'] = 222; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 389; + t['plus'] = 584; + t['comma'] = 278; + t['hyphen'] = 333; + t['period'] = 278; + t['slash'] = 278; + t['zero'] = 556; + t['one'] = 556; + t['two'] = 556; + t['three'] = 556; + t['four'] = 556; + t['five'] = 556; + t['six'] = 556; + t['seven'] = 556; + t['eight'] = 556; + t['nine'] = 556; + t['colon'] = 278; + t['semicolon'] = 278; + t['less'] = 584; + t['equal'] = 584; + t['greater'] = 584; + t['question'] = 556; + t['at'] = 1015; + t['A'] = 667; + t['B'] = 667; + t['C'] = 722; + t['D'] = 722; + t['E'] = 667; + t['F'] = 611; + t['G'] = 778; + t['H'] = 722; + t['I'] = 278; + t['J'] = 500; + t['K'] = 667; + t['L'] = 556; + t['M'] = 833; + t['N'] = 722; + t['O'] = 778; + t['P'] = 667; + t['Q'] = 778; + t['R'] = 722; + t['S'] = 667; + t['T'] = 611; + t['U'] = 722; + t['V'] = 667; + t['W'] = 944; + t['X'] = 667; + t['Y'] = 667; + t['Z'] = 611; + t['bracketleft'] = 278; + t['backslash'] = 278; + t['bracketright'] = 278; + t['asciicircum'] = 469; + t['underscore'] = 556; + t['quoteleft'] = 222; + t['a'] = 556; + t['b'] = 556; + t['c'] = 500; + t['d'] = 556; + t['e'] = 556; + t['f'] = 278; + t['g'] = 556; + t['h'] = 556; + t['i'] = 222; + t['j'] = 222; + t['k'] = 500; + t['l'] = 222; + t['m'] = 833; + t['n'] = 556; + t['o'] = 556; + t['p'] = 556; + t['q'] = 556; + t['r'] = 333; + t['s'] = 500; + t['t'] = 278; + t['u'] = 556; + t['v'] = 500; + t['w'] = 722; + t['x'] = 500; + t['y'] = 500; + t['z'] = 500; + t['braceleft'] = 334; + t['bar'] = 260; + t['braceright'] = 334; + t['asciitilde'] = 584; + t['exclamdown'] = 333; + t['cent'] = 556; + t['sterling'] = 556; + t['fraction'] = 167; + t['yen'] = 556; + t['florin'] = 556; + t['section'] = 556; + t['currency'] = 556; + t['quotesingle'] = 191; + t['quotedblleft'] = 333; + t['guillemotleft'] = 556; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 500; + t['fl'] = 500; + t['endash'] = 556; + t['dagger'] = 556; + t['daggerdbl'] = 556; + t['periodcentered'] = 278; + t['paragraph'] = 537; + t['bullet'] = 350; + t['quotesinglbase'] = 222; + t['quotedblbase'] = 333; + t['quotedblright'] = 333; + t['guillemotright'] = 556; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 611; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 1000; + t['ordfeminine'] = 370; + t['Lslash'] = 556; + t['Oslash'] = 778; + t['OE'] = 1000; + t['ordmasculine'] = 365; + t['ae'] = 889; + t['dotlessi'] = 278; + t['lslash'] = 222; + t['oslash'] = 611; + t['oe'] = 944; + t['germandbls'] = 611; + t['Idieresis'] = 278; + t['eacute'] = 556; + t['abreve'] = 556; + t['uhungarumlaut'] = 556; + t['ecaron'] = 556; + t['Ydieresis'] = 667; + t['divide'] = 584; + t['Yacute'] = 667; + t['Acircumflex'] = 667; + t['aacute'] = 556; + t['Ucircumflex'] = 722; + t['yacute'] = 500; + t['scommaaccent'] = 500; + t['ecircumflex'] = 556; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 556; + t['Uacute'] = 722; + t['uogonek'] = 556; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 737; + t['Emacron'] = 667; + t['ccaron'] = 500; + t['aring'] = 556; + t['Ncommaaccent'] = 722; + t['lacute'] = 222; + t['agrave'] = 556; + t['Tcommaaccent'] = 611; + t['Cacute'] = 722; + t['atilde'] = 556; + t['Edotaccent'] = 667; + t['scaron'] = 500; + t['scedilla'] = 500; + t['iacute'] = 278; + t['lozenge'] = 471; + t['Rcaron'] = 722; + t['Gcommaaccent'] = 778; + t['ucircumflex'] = 556; + t['acircumflex'] = 556; + t['Amacron'] = 667; + t['rcaron'] = 333; + t['ccedilla'] = 500; + t['Zdotaccent'] = 611; + t['Thorn'] = 667; + t['Omacron'] = 778; + t['Racute'] = 722; + t['Sacute'] = 667; + t['dcaron'] = 643; + t['Umacron'] = 722; + t['uring'] = 556; + t['threesuperior'] = 333; + t['Ograve'] = 778; + t['Agrave'] = 667; + t['Abreve'] = 667; + t['multiply'] = 584; + t['uacute'] = 556; + t['Tcaron'] = 611; + t['partialdiff'] = 476; + t['ydieresis'] = 500; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 556; + t['edieresis'] = 556; + t['cacute'] = 500; + t['nacute'] = 556; + t['umacron'] = 556; + t['Ncaron'] = 722; + t['Iacute'] = 278; + t['plusminus'] = 584; + t['brokenbar'] = 260; + t['registered'] = 737; + t['Gbreve'] = 778; + t['Idotaccent'] = 278; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 333; + t['omacron'] = 556; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 722; + t['lcommaaccent'] = 222; + t['tcaron'] = 317; + t['eogonek'] = 556; + t['Uogonek'] = 722; + t['Aacute'] = 667; + t['Adieresis'] = 667; + t['egrave'] = 556; + t['zacute'] = 500; + t['iogonek'] = 222; + t['Oacute'] = 778; + t['oacute'] = 556; + t['amacron'] = 556; + t['sacute'] = 500; + t['idieresis'] = 278; + t['Ocircumflex'] = 778; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 556; + t['twosuperior'] = 333; + t['Odieresis'] = 778; + t['mu'] = 556; + t['igrave'] = 278; + t['ohungarumlaut'] = 556; + t['Eogonek'] = 667; + t['dcroat'] = 556; + t['threequarters'] = 834; + t['Scedilla'] = 667; + t['lcaron'] = 299; + t['Kcommaaccent'] = 667; + t['Lacute'] = 556; + t['trademark'] = 1000; + t['edotaccent'] = 556; + t['Igrave'] = 278; + t['Imacron'] = 278; + t['Lcaron'] = 556; + t['onehalf'] = 834; + t['lessequal'] = 549; + t['ocircumflex'] = 556; + t['ntilde'] = 556; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 556; + t['gbreve'] = 556; + t['onequarter'] = 834; + t['Scaron'] = 667; + t['Scommaaccent'] = 667; + t['Ohungarumlaut'] = 778; + t['degree'] = 400; + t['ograve'] = 556; + t['Ccaron'] = 722; + t['ugrave'] = 556; + t['radical'] = 453; + t['Dcaron'] = 722; + t['rcommaaccent'] = 333; + t['Ntilde'] = 722; + t['otilde'] = 556; + t['Rcommaaccent'] = 722; + t['Lcommaaccent'] = 556; + t['Atilde'] = 667; + t['Aogonek'] = 667; + t['Aring'] = 667; + t['Otilde'] = 778; + t['zdotaccent'] = 500; + t['Ecaron'] = 667; + t['Iogonek'] = 278; + t['kcommaaccent'] = 500; + t['minus'] = 584; + t['Icircumflex'] = 278; + t['ncaron'] = 556; + t['tcommaaccent'] = 278; + t['logicalnot'] = 584; + t['odieresis'] = 556; + t['udieresis'] = 556; + t['notequal'] = 549; + t['gcommaaccent'] = 556; + t['eth'] = 556; + t['zcaron'] = 500; + t['ncommaaccent'] = 556; + t['onesuperior'] = 333; + t['imacron'] = 278; + t['Euro'] = 556; + }); + t['Helvetica-Bold'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 278; + t['exclam'] = 333; + t['quotedbl'] = 474; + t['numbersign'] = 556; + t['dollar'] = 556; + t['percent'] = 889; + t['ampersand'] = 722; + t['quoteright'] = 278; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 389; + t['plus'] = 584; + t['comma'] = 278; + t['hyphen'] = 333; + t['period'] = 278; + t['slash'] = 278; + t['zero'] = 556; + t['one'] = 556; + t['two'] = 556; + t['three'] = 556; + t['four'] = 556; + t['five'] = 556; + t['six'] = 556; + t['seven'] = 556; + t['eight'] = 556; + t['nine'] = 556; + t['colon'] = 333; + t['semicolon'] = 333; + t['less'] = 584; + t['equal'] = 584; + t['greater'] = 584; + t['question'] = 611; + t['at'] = 975; + t['A'] = 722; + t['B'] = 722; + t['C'] = 722; + t['D'] = 722; + t['E'] = 667; + t['F'] = 611; + t['G'] = 778; + t['H'] = 722; + t['I'] = 278; + t['J'] = 556; + t['K'] = 722; + t['L'] = 611; + t['M'] = 833; + t['N'] = 722; + t['O'] = 778; + t['P'] = 667; + t['Q'] = 778; + t['R'] = 722; + t['S'] = 667; + t['T'] = 611; + t['U'] = 722; + t['V'] = 667; + t['W'] = 944; + t['X'] = 667; + t['Y'] = 667; + t['Z'] = 611; + t['bracketleft'] = 333; + t['backslash'] = 278; + t['bracketright'] = 333; + t['asciicircum'] = 584; + t['underscore'] = 556; + t['quoteleft'] = 278; + t['a'] = 556; + t['b'] = 611; + t['c'] = 556; + t['d'] = 611; + t['e'] = 556; + t['f'] = 333; + t['g'] = 611; + t['h'] = 611; + t['i'] = 278; + t['j'] = 278; + t['k'] = 556; + t['l'] = 278; + t['m'] = 889; + t['n'] = 611; + t['o'] = 611; + t['p'] = 611; + t['q'] = 611; + t['r'] = 389; + t['s'] = 556; + t['t'] = 333; + t['u'] = 611; + t['v'] = 556; + t['w'] = 778; + t['x'] = 556; + t['y'] = 556; + t['z'] = 500; + t['braceleft'] = 389; + t['bar'] = 280; + t['braceright'] = 389; + t['asciitilde'] = 584; + t['exclamdown'] = 333; + t['cent'] = 556; + t['sterling'] = 556; + t['fraction'] = 167; + t['yen'] = 556; + t['florin'] = 556; + t['section'] = 556; + t['currency'] = 556; + t['quotesingle'] = 238; + t['quotedblleft'] = 500; + t['guillemotleft'] = 556; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 611; + t['fl'] = 611; + t['endash'] = 556; + t['dagger'] = 556; + t['daggerdbl'] = 556; + t['periodcentered'] = 278; + t['paragraph'] = 556; + t['bullet'] = 350; + t['quotesinglbase'] = 278; + t['quotedblbase'] = 500; + t['quotedblright'] = 500; + t['guillemotright'] = 556; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 611; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 1000; + t['ordfeminine'] = 370; + t['Lslash'] = 611; + t['Oslash'] = 778; + t['OE'] = 1000; + t['ordmasculine'] = 365; + t['ae'] = 889; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 611; + t['oe'] = 944; + t['germandbls'] = 611; + t['Idieresis'] = 278; + t['eacute'] = 556; + t['abreve'] = 556; + t['uhungarumlaut'] = 611; + t['ecaron'] = 556; + t['Ydieresis'] = 667; + t['divide'] = 584; + t['Yacute'] = 667; + t['Acircumflex'] = 722; + t['aacute'] = 556; + t['Ucircumflex'] = 722; + t['yacute'] = 556; + t['scommaaccent'] = 556; + t['ecircumflex'] = 556; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 556; + t['Uacute'] = 722; + t['uogonek'] = 611; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 737; + t['Emacron'] = 667; + t['ccaron'] = 556; + t['aring'] = 556; + t['Ncommaaccent'] = 722; + t['lacute'] = 278; + t['agrave'] = 556; + t['Tcommaaccent'] = 611; + t['Cacute'] = 722; + t['atilde'] = 556; + t['Edotaccent'] = 667; + t['scaron'] = 556; + t['scedilla'] = 556; + t['iacute'] = 278; + t['lozenge'] = 494; + t['Rcaron'] = 722; + t['Gcommaaccent'] = 778; + t['ucircumflex'] = 611; + t['acircumflex'] = 556; + t['Amacron'] = 722; + t['rcaron'] = 389; + t['ccedilla'] = 556; + t['Zdotaccent'] = 611; + t['Thorn'] = 667; + t['Omacron'] = 778; + t['Racute'] = 722; + t['Sacute'] = 667; + t['dcaron'] = 743; + t['Umacron'] = 722; + t['uring'] = 611; + t['threesuperior'] = 333; + t['Ograve'] = 778; + t['Agrave'] = 722; + t['Abreve'] = 722; + t['multiply'] = 584; + t['uacute'] = 611; + t['Tcaron'] = 611; + t['partialdiff'] = 494; + t['ydieresis'] = 556; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 556; + t['edieresis'] = 556; + t['cacute'] = 556; + t['nacute'] = 611; + t['umacron'] = 611; + t['Ncaron'] = 722; + t['Iacute'] = 278; + t['plusminus'] = 584; + t['brokenbar'] = 280; + t['registered'] = 737; + t['Gbreve'] = 778; + t['Idotaccent'] = 278; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 389; + t['omacron'] = 611; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 722; + t['lcommaaccent'] = 278; + t['tcaron'] = 389; + t['eogonek'] = 556; + t['Uogonek'] = 722; + t['Aacute'] = 722; + t['Adieresis'] = 722; + t['egrave'] = 556; + t['zacute'] = 500; + t['iogonek'] = 278; + t['Oacute'] = 778; + t['oacute'] = 611; + t['amacron'] = 556; + t['sacute'] = 556; + t['idieresis'] = 278; + t['Ocircumflex'] = 778; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 611; + t['twosuperior'] = 333; + t['Odieresis'] = 778; + t['mu'] = 611; + t['igrave'] = 278; + t['ohungarumlaut'] = 611; + t['Eogonek'] = 667; + t['dcroat'] = 611; + t['threequarters'] = 834; + t['Scedilla'] = 667; + t['lcaron'] = 400; + t['Kcommaaccent'] = 722; + t['Lacute'] = 611; + t['trademark'] = 1000; + t['edotaccent'] = 556; + t['Igrave'] = 278; + t['Imacron'] = 278; + t['Lcaron'] = 611; + t['onehalf'] = 834; + t['lessequal'] = 549; + t['ocircumflex'] = 611; + t['ntilde'] = 611; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 556; + t['gbreve'] = 611; + t['onequarter'] = 834; + t['Scaron'] = 667; + t['Scommaaccent'] = 667; + t['Ohungarumlaut'] = 778; + t['degree'] = 400; + t['ograve'] = 611; + t['Ccaron'] = 722; + t['ugrave'] = 611; + t['radical'] = 549; + t['Dcaron'] = 722; + t['rcommaaccent'] = 389; + t['Ntilde'] = 722; + t['otilde'] = 611; + t['Rcommaaccent'] = 722; + t['Lcommaaccent'] = 611; + t['Atilde'] = 722; + t['Aogonek'] = 722; + t['Aring'] = 722; + t['Otilde'] = 778; + t['zdotaccent'] = 500; + t['Ecaron'] = 667; + t['Iogonek'] = 278; + t['kcommaaccent'] = 556; + t['minus'] = 584; + t['Icircumflex'] = 278; + t['ncaron'] = 611; + t['tcommaaccent'] = 333; + t['logicalnot'] = 584; + t['odieresis'] = 611; + t['udieresis'] = 611; + t['notequal'] = 549; + t['gcommaaccent'] = 611; + t['eth'] = 611; + t['zcaron'] = 500; + t['ncommaaccent'] = 611; + t['onesuperior'] = 333; + t['imacron'] = 278; + t['Euro'] = 556; + }); + t['Helvetica-BoldOblique'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 278; + t['exclam'] = 333; + t['quotedbl'] = 474; + t['numbersign'] = 556; + t['dollar'] = 556; + t['percent'] = 889; + t['ampersand'] = 722; + t['quoteright'] = 278; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 389; + t['plus'] = 584; + t['comma'] = 278; + t['hyphen'] = 333; + t['period'] = 278; + t['slash'] = 278; + t['zero'] = 556; + t['one'] = 556; + t['two'] = 556; + t['three'] = 556; + t['four'] = 556; + t['five'] = 556; + t['six'] = 556; + t['seven'] = 556; + t['eight'] = 556; + t['nine'] = 556; + t['colon'] = 333; + t['semicolon'] = 333; + t['less'] = 584; + t['equal'] = 584; + t['greater'] = 584; + t['question'] = 611; + t['at'] = 975; + t['A'] = 722; + t['B'] = 722; + t['C'] = 722; + t['D'] = 722; + t['E'] = 667; + t['F'] = 611; + t['G'] = 778; + t['H'] = 722; + t['I'] = 278; + t['J'] = 556; + t['K'] = 722; + t['L'] = 611; + t['M'] = 833; + t['N'] = 722; + t['O'] = 778; + t['P'] = 667; + t['Q'] = 778; + t['R'] = 722; + t['S'] = 667; + t['T'] = 611; + t['U'] = 722; + t['V'] = 667; + t['W'] = 944; + t['X'] = 667; + t['Y'] = 667; + t['Z'] = 611; + t['bracketleft'] = 333; + t['backslash'] = 278; + t['bracketright'] = 333; + t['asciicircum'] = 584; + t['underscore'] = 556; + t['quoteleft'] = 278; + t['a'] = 556; + t['b'] = 611; + t['c'] = 556; + t['d'] = 611; + t['e'] = 556; + t['f'] = 333; + t['g'] = 611; + t['h'] = 611; + t['i'] = 278; + t['j'] = 278; + t['k'] = 556; + t['l'] = 278; + t['m'] = 889; + t['n'] = 611; + t['o'] = 611; + t['p'] = 611; + t['q'] = 611; + t['r'] = 389; + t['s'] = 556; + t['t'] = 333; + t['u'] = 611; + t['v'] = 556; + t['w'] = 778; + t['x'] = 556; + t['y'] = 556; + t['z'] = 500; + t['braceleft'] = 389; + t['bar'] = 280; + t['braceright'] = 389; + t['asciitilde'] = 584; + t['exclamdown'] = 333; + t['cent'] = 556; + t['sterling'] = 556; + t['fraction'] = 167; + t['yen'] = 556; + t['florin'] = 556; + t['section'] = 556; + t['currency'] = 556; + t['quotesingle'] = 238; + t['quotedblleft'] = 500; + t['guillemotleft'] = 556; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 611; + t['fl'] = 611; + t['endash'] = 556; + t['dagger'] = 556; + t['daggerdbl'] = 556; + t['periodcentered'] = 278; + t['paragraph'] = 556; + t['bullet'] = 350; + t['quotesinglbase'] = 278; + t['quotedblbase'] = 500; + t['quotedblright'] = 500; + t['guillemotright'] = 556; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 611; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 1000; + t['ordfeminine'] = 370; + t['Lslash'] = 611; + t['Oslash'] = 778; + t['OE'] = 1000; + t['ordmasculine'] = 365; + t['ae'] = 889; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 611; + t['oe'] = 944; + t['germandbls'] = 611; + t['Idieresis'] = 278; + t['eacute'] = 556; + t['abreve'] = 556; + t['uhungarumlaut'] = 611; + t['ecaron'] = 556; + t['Ydieresis'] = 667; + t['divide'] = 584; + t['Yacute'] = 667; + t['Acircumflex'] = 722; + t['aacute'] = 556; + t['Ucircumflex'] = 722; + t['yacute'] = 556; + t['scommaaccent'] = 556; + t['ecircumflex'] = 556; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 556; + t['Uacute'] = 722; + t['uogonek'] = 611; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 737; + t['Emacron'] = 667; + t['ccaron'] = 556; + t['aring'] = 556; + t['Ncommaaccent'] = 722; + t['lacute'] = 278; + t['agrave'] = 556; + t['Tcommaaccent'] = 611; + t['Cacute'] = 722; + t['atilde'] = 556; + t['Edotaccent'] = 667; + t['scaron'] = 556; + t['scedilla'] = 556; + t['iacute'] = 278; + t['lozenge'] = 494; + t['Rcaron'] = 722; + t['Gcommaaccent'] = 778; + t['ucircumflex'] = 611; + t['acircumflex'] = 556; + t['Amacron'] = 722; + t['rcaron'] = 389; + t['ccedilla'] = 556; + t['Zdotaccent'] = 611; + t['Thorn'] = 667; + t['Omacron'] = 778; + t['Racute'] = 722; + t['Sacute'] = 667; + t['dcaron'] = 743; + t['Umacron'] = 722; + t['uring'] = 611; + t['threesuperior'] = 333; + t['Ograve'] = 778; + t['Agrave'] = 722; + t['Abreve'] = 722; + t['multiply'] = 584; + t['uacute'] = 611; + t['Tcaron'] = 611; + t['partialdiff'] = 494; + t['ydieresis'] = 556; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 556; + t['edieresis'] = 556; + t['cacute'] = 556; + t['nacute'] = 611; + t['umacron'] = 611; + t['Ncaron'] = 722; + t['Iacute'] = 278; + t['plusminus'] = 584; + t['brokenbar'] = 280; + t['registered'] = 737; + t['Gbreve'] = 778; + t['Idotaccent'] = 278; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 389; + t['omacron'] = 611; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 722; + t['lcommaaccent'] = 278; + t['tcaron'] = 389; + t['eogonek'] = 556; + t['Uogonek'] = 722; + t['Aacute'] = 722; + t['Adieresis'] = 722; + t['egrave'] = 556; + t['zacute'] = 500; + t['iogonek'] = 278; + t['Oacute'] = 778; + t['oacute'] = 611; + t['amacron'] = 556; + t['sacute'] = 556; + t['idieresis'] = 278; + t['Ocircumflex'] = 778; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 611; + t['twosuperior'] = 333; + t['Odieresis'] = 778; + t['mu'] = 611; + t['igrave'] = 278; + t['ohungarumlaut'] = 611; + t['Eogonek'] = 667; + t['dcroat'] = 611; + t['threequarters'] = 834; + t['Scedilla'] = 667; + t['lcaron'] = 400; + t['Kcommaaccent'] = 722; + t['Lacute'] = 611; + t['trademark'] = 1000; + t['edotaccent'] = 556; + t['Igrave'] = 278; + t['Imacron'] = 278; + t['Lcaron'] = 611; + t['onehalf'] = 834; + t['lessequal'] = 549; + t['ocircumflex'] = 611; + t['ntilde'] = 611; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 556; + t['gbreve'] = 611; + t['onequarter'] = 834; + t['Scaron'] = 667; + t['Scommaaccent'] = 667; + t['Ohungarumlaut'] = 778; + t['degree'] = 400; + t['ograve'] = 611; + t['Ccaron'] = 722; + t['ugrave'] = 611; + t['radical'] = 549; + t['Dcaron'] = 722; + t['rcommaaccent'] = 389; + t['Ntilde'] = 722; + t['otilde'] = 611; + t['Rcommaaccent'] = 722; + t['Lcommaaccent'] = 611; + t['Atilde'] = 722; + t['Aogonek'] = 722; + t['Aring'] = 722; + t['Otilde'] = 778; + t['zdotaccent'] = 500; + t['Ecaron'] = 667; + t['Iogonek'] = 278; + t['kcommaaccent'] = 556; + t['minus'] = 584; + t['Icircumflex'] = 278; + t['ncaron'] = 611; + t['tcommaaccent'] = 333; + t['logicalnot'] = 584; + t['odieresis'] = 611; + t['udieresis'] = 611; + t['notequal'] = 549; + t['gcommaaccent'] = 611; + t['eth'] = 611; + t['zcaron'] = 500; + t['ncommaaccent'] = 611; + t['onesuperior'] = 333; + t['imacron'] = 278; + t['Euro'] = 556; + }); + t['Helvetica-Oblique'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 278; + t['exclam'] = 278; + t['quotedbl'] = 355; + t['numbersign'] = 556; + t['dollar'] = 556; + t['percent'] = 889; + t['ampersand'] = 667; + t['quoteright'] = 222; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 389; + t['plus'] = 584; + t['comma'] = 278; + t['hyphen'] = 333; + t['period'] = 278; + t['slash'] = 278; + t['zero'] = 556; + t['one'] = 556; + t['two'] = 556; + t['three'] = 556; + t['four'] = 556; + t['five'] = 556; + t['six'] = 556; + t['seven'] = 556; + t['eight'] = 556; + t['nine'] = 556; + t['colon'] = 278; + t['semicolon'] = 278; + t['less'] = 584; + t['equal'] = 584; + t['greater'] = 584; + t['question'] = 556; + t['at'] = 1015; + t['A'] = 667; + t['B'] = 667; + t['C'] = 722; + t['D'] = 722; + t['E'] = 667; + t['F'] = 611; + t['G'] = 778; + t['H'] = 722; + t['I'] = 278; + t['J'] = 500; + t['K'] = 667; + t['L'] = 556; + t['M'] = 833; + t['N'] = 722; + t['O'] = 778; + t['P'] = 667; + t['Q'] = 778; + t['R'] = 722; + t['S'] = 667; + t['T'] = 611; + t['U'] = 722; + t['V'] = 667; + t['W'] = 944; + t['X'] = 667; + t['Y'] = 667; + t['Z'] = 611; + t['bracketleft'] = 278; + t['backslash'] = 278; + t['bracketright'] = 278; + t['asciicircum'] = 469; + t['underscore'] = 556; + t['quoteleft'] = 222; + t['a'] = 556; + t['b'] = 556; + t['c'] = 500; + t['d'] = 556; + t['e'] = 556; + t['f'] = 278; + t['g'] = 556; + t['h'] = 556; + t['i'] = 222; + t['j'] = 222; + t['k'] = 500; + t['l'] = 222; + t['m'] = 833; + t['n'] = 556; + t['o'] = 556; + t['p'] = 556; + t['q'] = 556; + t['r'] = 333; + t['s'] = 500; + t['t'] = 278; + t['u'] = 556; + t['v'] = 500; + t['w'] = 722; + t['x'] = 500; + t['y'] = 500; + t['z'] = 500; + t['braceleft'] = 334; + t['bar'] = 260; + t['braceright'] = 334; + t['asciitilde'] = 584; + t['exclamdown'] = 333; + t['cent'] = 556; + t['sterling'] = 556; + t['fraction'] = 167; + t['yen'] = 556; + t['florin'] = 556; + t['section'] = 556; + t['currency'] = 556; + t['quotesingle'] = 191; + t['quotedblleft'] = 333; + t['guillemotleft'] = 556; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 500; + t['fl'] = 500; + t['endash'] = 556; + t['dagger'] = 556; + t['daggerdbl'] = 556; + t['periodcentered'] = 278; + t['paragraph'] = 537; + t['bullet'] = 350; + t['quotesinglbase'] = 222; + t['quotedblbase'] = 333; + t['quotedblright'] = 333; + t['guillemotright'] = 556; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 611; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 1000; + t['ordfeminine'] = 370; + t['Lslash'] = 556; + t['Oslash'] = 778; + t['OE'] = 1000; + t['ordmasculine'] = 365; + t['ae'] = 889; + t['dotlessi'] = 278; + t['lslash'] = 222; + t['oslash'] = 611; + t['oe'] = 944; + t['germandbls'] = 611; + t['Idieresis'] = 278; + t['eacute'] = 556; + t['abreve'] = 556; + t['uhungarumlaut'] = 556; + t['ecaron'] = 556; + t['Ydieresis'] = 667; + t['divide'] = 584; + t['Yacute'] = 667; + t['Acircumflex'] = 667; + t['aacute'] = 556; + t['Ucircumflex'] = 722; + t['yacute'] = 500; + t['scommaaccent'] = 500; + t['ecircumflex'] = 556; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 556; + t['Uacute'] = 722; + t['uogonek'] = 556; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 737; + t['Emacron'] = 667; + t['ccaron'] = 500; + t['aring'] = 556; + t['Ncommaaccent'] = 722; + t['lacute'] = 222; + t['agrave'] = 556; + t['Tcommaaccent'] = 611; + t['Cacute'] = 722; + t['atilde'] = 556; + t['Edotaccent'] = 667; + t['scaron'] = 500; + t['scedilla'] = 500; + t['iacute'] = 278; + t['lozenge'] = 471; + t['Rcaron'] = 722; + t['Gcommaaccent'] = 778; + t['ucircumflex'] = 556; + t['acircumflex'] = 556; + t['Amacron'] = 667; + t['rcaron'] = 333; + t['ccedilla'] = 500; + t['Zdotaccent'] = 611; + t['Thorn'] = 667; + t['Omacron'] = 778; + t['Racute'] = 722; + t['Sacute'] = 667; + t['dcaron'] = 643; + t['Umacron'] = 722; + t['uring'] = 556; + t['threesuperior'] = 333; + t['Ograve'] = 778; + t['Agrave'] = 667; + t['Abreve'] = 667; + t['multiply'] = 584; + t['uacute'] = 556; + t['Tcaron'] = 611; + t['partialdiff'] = 476; + t['ydieresis'] = 500; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 556; + t['edieresis'] = 556; + t['cacute'] = 500; + t['nacute'] = 556; + t['umacron'] = 556; + t['Ncaron'] = 722; + t['Iacute'] = 278; + t['plusminus'] = 584; + t['brokenbar'] = 260; + t['registered'] = 737; + t['Gbreve'] = 778; + t['Idotaccent'] = 278; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 333; + t['omacron'] = 556; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 722; + t['lcommaaccent'] = 222; + t['tcaron'] = 317; + t['eogonek'] = 556; + t['Uogonek'] = 722; + t['Aacute'] = 667; + t['Adieresis'] = 667; + t['egrave'] = 556; + t['zacute'] = 500; + t['iogonek'] = 222; + t['Oacute'] = 778; + t['oacute'] = 556; + t['amacron'] = 556; + t['sacute'] = 500; + t['idieresis'] = 278; + t['Ocircumflex'] = 778; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 556; + t['twosuperior'] = 333; + t['Odieresis'] = 778; + t['mu'] = 556; + t['igrave'] = 278; + t['ohungarumlaut'] = 556; + t['Eogonek'] = 667; + t['dcroat'] = 556; + t['threequarters'] = 834; + t['Scedilla'] = 667; + t['lcaron'] = 299; + t['Kcommaaccent'] = 667; + t['Lacute'] = 556; + t['trademark'] = 1000; + t['edotaccent'] = 556; + t['Igrave'] = 278; + t['Imacron'] = 278; + t['Lcaron'] = 556; + t['onehalf'] = 834; + t['lessequal'] = 549; + t['ocircumflex'] = 556; + t['ntilde'] = 556; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 556; + t['gbreve'] = 556; + t['onequarter'] = 834; + t['Scaron'] = 667; + t['Scommaaccent'] = 667; + t['Ohungarumlaut'] = 778; + t['degree'] = 400; + t['ograve'] = 556; + t['Ccaron'] = 722; + t['ugrave'] = 556; + t['radical'] = 453; + t['Dcaron'] = 722; + t['rcommaaccent'] = 333; + t['Ntilde'] = 722; + t['otilde'] = 556; + t['Rcommaaccent'] = 722; + t['Lcommaaccent'] = 556; + t['Atilde'] = 667; + t['Aogonek'] = 667; + t['Aring'] = 667; + t['Otilde'] = 778; + t['zdotaccent'] = 500; + t['Ecaron'] = 667; + t['Iogonek'] = 278; + t['kcommaaccent'] = 500; + t['minus'] = 584; + t['Icircumflex'] = 278; + t['ncaron'] = 556; + t['tcommaaccent'] = 278; + t['logicalnot'] = 584; + t['odieresis'] = 556; + t['udieresis'] = 556; + t['notequal'] = 549; + t['gcommaaccent'] = 556; + t['eth'] = 556; + t['zcaron'] = 500; + t['ncommaaccent'] = 556; + t['onesuperior'] = 333; + t['imacron'] = 278; + t['Euro'] = 556; + }); + t['Symbol'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 250; + t['exclam'] = 333; + t['universal'] = 713; + t['numbersign'] = 500; + t['existential'] = 549; + t['percent'] = 833; + t['ampersand'] = 778; + t['suchthat'] = 439; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asteriskmath'] = 500; + t['plus'] = 549; + t['comma'] = 250; + t['minus'] = 549; + t['period'] = 250; + t['slash'] = 278; + t['zero'] = 500; + t['one'] = 500; + t['two'] = 500; + t['three'] = 500; + t['four'] = 500; + t['five'] = 500; + t['six'] = 500; + t['seven'] = 500; + t['eight'] = 500; + t['nine'] = 500; + t['colon'] = 278; + t['semicolon'] = 278; + t['less'] = 549; + t['equal'] = 549; + t['greater'] = 549; + t['question'] = 444; + t['congruent'] = 549; + t['Alpha'] = 722; + t['Beta'] = 667; + t['Chi'] = 722; + t['Delta'] = 612; + t['Epsilon'] = 611; + t['Phi'] = 763; + t['Gamma'] = 603; + t['Eta'] = 722; + t['Iota'] = 333; + t['theta1'] = 631; + t['Kappa'] = 722; + t['Lambda'] = 686; + t['Mu'] = 889; + t['Nu'] = 722; + t['Omicron'] = 722; + t['Pi'] = 768; + t['Theta'] = 741; + t['Rho'] = 556; + t['Sigma'] = 592; + t['Tau'] = 611; + t['Upsilon'] = 690; + t['sigma1'] = 439; + t['Omega'] = 768; + t['Xi'] = 645; + t['Psi'] = 795; + t['Zeta'] = 611; + t['bracketleft'] = 333; + t['therefore'] = 863; + t['bracketright'] = 333; + t['perpendicular'] = 658; + t['underscore'] = 500; + t['radicalex'] = 500; + t['alpha'] = 631; + t['beta'] = 549; + t['chi'] = 549; + t['delta'] = 494; + t['epsilon'] = 439; + t['phi'] = 521; + t['gamma'] = 411; + t['eta'] = 603; + t['iota'] = 329; + t['phi1'] = 603; + t['kappa'] = 549; + t['lambda'] = 549; + t['mu'] = 576; + t['nu'] = 521; + t['omicron'] = 549; + t['pi'] = 549; + t['theta'] = 521; + t['rho'] = 549; + t['sigma'] = 603; + t['tau'] = 439; + t['upsilon'] = 576; + t['omega1'] = 713; + t['omega'] = 686; + t['xi'] = 493; + t['psi'] = 686; + t['zeta'] = 494; + t['braceleft'] = 480; + t['bar'] = 200; + t['braceright'] = 480; + t['similar'] = 549; + t['Euro'] = 750; + t['Upsilon1'] = 620; + t['minute'] = 247; + t['lessequal'] = 549; + t['fraction'] = 167; + t['infinity'] = 713; + t['florin'] = 500; + t['club'] = 753; + t['diamond'] = 753; + t['heart'] = 753; + t['spade'] = 753; + t['arrowboth'] = 1042; + t['arrowleft'] = 987; + t['arrowup'] = 603; + t['arrowright'] = 987; + t['arrowdown'] = 603; + t['degree'] = 400; + t['plusminus'] = 549; + t['second'] = 411; + t['greaterequal'] = 549; + t['multiply'] = 549; + t['proportional'] = 713; + t['partialdiff'] = 494; + t['bullet'] = 460; + t['divide'] = 549; + t['notequal'] = 549; + t['equivalence'] = 549; + t['approxequal'] = 549; + t['ellipsis'] = 1000; + t['arrowvertex'] = 603; + t['arrowhorizex'] = 1000; + t['carriagereturn'] = 658; + t['aleph'] = 823; + t['Ifraktur'] = 686; + t['Rfraktur'] = 795; + t['weierstrass'] = 987; + t['circlemultiply'] = 768; + t['circleplus'] = 768; + t['emptyset'] = 823; + t['intersection'] = 768; + t['union'] = 768; + t['propersuperset'] = 713; + t['reflexsuperset'] = 713; + t['notsubset'] = 713; + t['propersubset'] = 713; + t['reflexsubset'] = 713; + t['element'] = 713; + t['notelement'] = 713; + t['angle'] = 768; + t['gradient'] = 713; + t['registerserif'] = 790; + t['copyrightserif'] = 790; + t['trademarkserif'] = 890; + t['product'] = 823; + t['radical'] = 549; + t['dotmath'] = 250; + t['logicalnot'] = 713; + t['logicaland'] = 603; + t['logicalor'] = 603; + t['arrowdblboth'] = 1042; + t['arrowdblleft'] = 987; + t['arrowdblup'] = 603; + t['arrowdblright'] = 987; + t['arrowdbldown'] = 603; + t['lozenge'] = 494; + t['angleleft'] = 329; + t['registersans'] = 790; + t['copyrightsans'] = 790; + t['trademarksans'] = 786; + t['summation'] = 713; + t['parenlefttp'] = 384; + t['parenleftex'] = 384; + t['parenleftbt'] = 384; + t['bracketlefttp'] = 384; + t['bracketleftex'] = 384; + t['bracketleftbt'] = 384; + t['bracelefttp'] = 494; + t['braceleftmid'] = 494; + t['braceleftbt'] = 494; + t['braceex'] = 494; + t['angleright'] = 329; + t['integral'] = 274; + t['integraltp'] = 686; + t['integralex'] = 686; + t['integralbt'] = 686; + t['parenrighttp'] = 384; + t['parenrightex'] = 384; + t['parenrightbt'] = 384; + t['bracketrighttp'] = 384; + t['bracketrightex'] = 384; + t['bracketrightbt'] = 384; + t['bracerighttp'] = 494; + t['bracerightmid'] = 494; + t['bracerightbt'] = 494; + t['apple'] = 790; + }); + t['Times-Roman'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 250; + t['exclam'] = 333; + t['quotedbl'] = 408; + t['numbersign'] = 500; + t['dollar'] = 500; + t['percent'] = 833; + t['ampersand'] = 778; + t['quoteright'] = 333; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 500; + t['plus'] = 564; + t['comma'] = 250; + t['hyphen'] = 333; + t['period'] = 250; + t['slash'] = 278; + t['zero'] = 500; + t['one'] = 500; + t['two'] = 500; + t['three'] = 500; + t['four'] = 500; + t['five'] = 500; + t['six'] = 500; + t['seven'] = 500; + t['eight'] = 500; + t['nine'] = 500; + t['colon'] = 278; + t['semicolon'] = 278; + t['less'] = 564; + t['equal'] = 564; + t['greater'] = 564; + t['question'] = 444; + t['at'] = 921; + t['A'] = 722; + t['B'] = 667; + t['C'] = 667; + t['D'] = 722; + t['E'] = 611; + t['F'] = 556; + t['G'] = 722; + t['H'] = 722; + t['I'] = 333; + t['J'] = 389; + t['K'] = 722; + t['L'] = 611; + t['M'] = 889; + t['N'] = 722; + t['O'] = 722; + t['P'] = 556; + t['Q'] = 722; + t['R'] = 667; + t['S'] = 556; + t['T'] = 611; + t['U'] = 722; + t['V'] = 722; + t['W'] = 944; + t['X'] = 722; + t['Y'] = 722; + t['Z'] = 611; + t['bracketleft'] = 333; + t['backslash'] = 278; + t['bracketright'] = 333; + t['asciicircum'] = 469; + t['underscore'] = 500; + t['quoteleft'] = 333; + t['a'] = 444; + t['b'] = 500; + t['c'] = 444; + t['d'] = 500; + t['e'] = 444; + t['f'] = 333; + t['g'] = 500; + t['h'] = 500; + t['i'] = 278; + t['j'] = 278; + t['k'] = 500; + t['l'] = 278; + t['m'] = 778; + t['n'] = 500; + t['o'] = 500; + t['p'] = 500; + t['q'] = 500; + t['r'] = 333; + t['s'] = 389; + t['t'] = 278; + t['u'] = 500; + t['v'] = 500; + t['w'] = 722; + t['x'] = 500; + t['y'] = 500; + t['z'] = 444; + t['braceleft'] = 480; + t['bar'] = 200; + t['braceright'] = 480; + t['asciitilde'] = 541; + t['exclamdown'] = 333; + t['cent'] = 500; + t['sterling'] = 500; + t['fraction'] = 167; + t['yen'] = 500; + t['florin'] = 500; + t['section'] = 500; + t['currency'] = 500; + t['quotesingle'] = 180; + t['quotedblleft'] = 444; + t['guillemotleft'] = 500; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 556; + t['fl'] = 556; + t['endash'] = 500; + t['dagger'] = 500; + t['daggerdbl'] = 500; + t['periodcentered'] = 250; + t['paragraph'] = 453; + t['bullet'] = 350; + t['quotesinglbase'] = 333; + t['quotedblbase'] = 444; + t['quotedblright'] = 444; + t['guillemotright'] = 500; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 444; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 889; + t['ordfeminine'] = 276; + t['Lslash'] = 611; + t['Oslash'] = 722; + t['OE'] = 889; + t['ordmasculine'] = 310; + t['ae'] = 667; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 500; + t['oe'] = 722; + t['germandbls'] = 500; + t['Idieresis'] = 333; + t['eacute'] = 444; + t['abreve'] = 444; + t['uhungarumlaut'] = 500; + t['ecaron'] = 444; + t['Ydieresis'] = 722; + t['divide'] = 564; + t['Yacute'] = 722; + t['Acircumflex'] = 722; + t['aacute'] = 444; + t['Ucircumflex'] = 722; + t['yacute'] = 500; + t['scommaaccent'] = 389; + t['ecircumflex'] = 444; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 444; + t['Uacute'] = 722; + t['uogonek'] = 500; + t['Edieresis'] = 611; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 760; + t['Emacron'] = 611; + t['ccaron'] = 444; + t['aring'] = 444; + t['Ncommaaccent'] = 722; + t['lacute'] = 278; + t['agrave'] = 444; + t['Tcommaaccent'] = 611; + t['Cacute'] = 667; + t['atilde'] = 444; + t['Edotaccent'] = 611; + t['scaron'] = 389; + t['scedilla'] = 389; + t['iacute'] = 278; + t['lozenge'] = 471; + t['Rcaron'] = 667; + t['Gcommaaccent'] = 722; + t['ucircumflex'] = 500; + t['acircumflex'] = 444; + t['Amacron'] = 722; + t['rcaron'] = 333; + t['ccedilla'] = 444; + t['Zdotaccent'] = 611; + t['Thorn'] = 556; + t['Omacron'] = 722; + t['Racute'] = 667; + t['Sacute'] = 556; + t['dcaron'] = 588; + t['Umacron'] = 722; + t['uring'] = 500; + t['threesuperior'] = 300; + t['Ograve'] = 722; + t['Agrave'] = 722; + t['Abreve'] = 722; + t['multiply'] = 564; + t['uacute'] = 500; + t['Tcaron'] = 611; + t['partialdiff'] = 476; + t['ydieresis'] = 500; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 611; + t['adieresis'] = 444; + t['edieresis'] = 444; + t['cacute'] = 444; + t['nacute'] = 500; + t['umacron'] = 500; + t['Ncaron'] = 722; + t['Iacute'] = 333; + t['plusminus'] = 564; + t['brokenbar'] = 200; + t['registered'] = 760; + t['Gbreve'] = 722; + t['Idotaccent'] = 333; + t['summation'] = 600; + t['Egrave'] = 611; + t['racute'] = 333; + t['omacron'] = 500; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 667; + t['lcommaaccent'] = 278; + t['tcaron'] = 326; + t['eogonek'] = 444; + t['Uogonek'] = 722; + t['Aacute'] = 722; + t['Adieresis'] = 722; + t['egrave'] = 444; + t['zacute'] = 444; + t['iogonek'] = 278; + t['Oacute'] = 722; + t['oacute'] = 500; + t['amacron'] = 444; + t['sacute'] = 389; + t['idieresis'] = 278; + t['Ocircumflex'] = 722; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 500; + t['twosuperior'] = 300; + t['Odieresis'] = 722; + t['mu'] = 500; + t['igrave'] = 278; + t['ohungarumlaut'] = 500; + t['Eogonek'] = 611; + t['dcroat'] = 500; + t['threequarters'] = 750; + t['Scedilla'] = 556; + t['lcaron'] = 344; + t['Kcommaaccent'] = 722; + t['Lacute'] = 611; + t['trademark'] = 980; + t['edotaccent'] = 444; + t['Igrave'] = 333; + t['Imacron'] = 333; + t['Lcaron'] = 611; + t['onehalf'] = 750; + t['lessequal'] = 549; + t['ocircumflex'] = 500; + t['ntilde'] = 500; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 611; + t['emacron'] = 444; + t['gbreve'] = 500; + t['onequarter'] = 750; + t['Scaron'] = 556; + t['Scommaaccent'] = 556; + t['Ohungarumlaut'] = 722; + t['degree'] = 400; + t['ograve'] = 500; + t['Ccaron'] = 667; + t['ugrave'] = 500; + t['radical'] = 453; + t['Dcaron'] = 722; + t['rcommaaccent'] = 333; + t['Ntilde'] = 722; + t['otilde'] = 500; + t['Rcommaaccent'] = 667; + t['Lcommaaccent'] = 611; + t['Atilde'] = 722; + t['Aogonek'] = 722; + t['Aring'] = 722; + t['Otilde'] = 722; + t['zdotaccent'] = 444; + t['Ecaron'] = 611; + t['Iogonek'] = 333; + t['kcommaaccent'] = 500; + t['minus'] = 564; + t['Icircumflex'] = 333; + t['ncaron'] = 500; + t['tcommaaccent'] = 278; + t['logicalnot'] = 564; + t['odieresis'] = 500; + t['udieresis'] = 500; + t['notequal'] = 549; + t['gcommaaccent'] = 500; + t['eth'] = 500; + t['zcaron'] = 444; + t['ncommaaccent'] = 500; + t['onesuperior'] = 300; + t['imacron'] = 278; + t['Euro'] = 500; + }); + t['Times-Bold'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 250; + t['exclam'] = 333; + t['quotedbl'] = 555; + t['numbersign'] = 500; + t['dollar'] = 500; + t['percent'] = 1000; + t['ampersand'] = 833; + t['quoteright'] = 333; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 500; + t['plus'] = 570; + t['comma'] = 250; + t['hyphen'] = 333; + t['period'] = 250; + t['slash'] = 278; + t['zero'] = 500; + t['one'] = 500; + t['two'] = 500; + t['three'] = 500; + t['four'] = 500; + t['five'] = 500; + t['six'] = 500; + t['seven'] = 500; + t['eight'] = 500; + t['nine'] = 500; + t['colon'] = 333; + t['semicolon'] = 333; + t['less'] = 570; + t['equal'] = 570; + t['greater'] = 570; + t['question'] = 500; + t['at'] = 930; + t['A'] = 722; + t['B'] = 667; + t['C'] = 722; + t['D'] = 722; + t['E'] = 667; + t['F'] = 611; + t['G'] = 778; + t['H'] = 778; + t['I'] = 389; + t['J'] = 500; + t['K'] = 778; + t['L'] = 667; + t['M'] = 944; + t['N'] = 722; + t['O'] = 778; + t['P'] = 611; + t['Q'] = 778; + t['R'] = 722; + t['S'] = 556; + t['T'] = 667; + t['U'] = 722; + t['V'] = 722; + t['W'] = 1000; + t['X'] = 722; + t['Y'] = 722; + t['Z'] = 667; + t['bracketleft'] = 333; + t['backslash'] = 278; + t['bracketright'] = 333; + t['asciicircum'] = 581; + t['underscore'] = 500; + t['quoteleft'] = 333; + t['a'] = 500; + t['b'] = 556; + t['c'] = 444; + t['d'] = 556; + t['e'] = 444; + t['f'] = 333; + t['g'] = 500; + t['h'] = 556; + t['i'] = 278; + t['j'] = 333; + t['k'] = 556; + t['l'] = 278; + t['m'] = 833; + t['n'] = 556; + t['o'] = 500; + t['p'] = 556; + t['q'] = 556; + t['r'] = 444; + t['s'] = 389; + t['t'] = 333; + t['u'] = 556; + t['v'] = 500; + t['w'] = 722; + t['x'] = 500; + t['y'] = 500; + t['z'] = 444; + t['braceleft'] = 394; + t['bar'] = 220; + t['braceright'] = 394; + t['asciitilde'] = 520; + t['exclamdown'] = 333; + t['cent'] = 500; + t['sterling'] = 500; + t['fraction'] = 167; + t['yen'] = 500; + t['florin'] = 500; + t['section'] = 500; + t['currency'] = 500; + t['quotesingle'] = 278; + t['quotedblleft'] = 500; + t['guillemotleft'] = 500; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 556; + t['fl'] = 556; + t['endash'] = 500; + t['dagger'] = 500; + t['daggerdbl'] = 500; + t['periodcentered'] = 250; + t['paragraph'] = 540; + t['bullet'] = 350; + t['quotesinglbase'] = 333; + t['quotedblbase'] = 500; + t['quotedblright'] = 500; + t['guillemotright'] = 500; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 500; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 1000; + t['ordfeminine'] = 300; + t['Lslash'] = 667; + t['Oslash'] = 778; + t['OE'] = 1000; + t['ordmasculine'] = 330; + t['ae'] = 722; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 500; + t['oe'] = 722; + t['germandbls'] = 556; + t['Idieresis'] = 389; + t['eacute'] = 444; + t['abreve'] = 500; + t['uhungarumlaut'] = 556; + t['ecaron'] = 444; + t['Ydieresis'] = 722; + t['divide'] = 570; + t['Yacute'] = 722; + t['Acircumflex'] = 722; + t['aacute'] = 500; + t['Ucircumflex'] = 722; + t['yacute'] = 500; + t['scommaaccent'] = 389; + t['ecircumflex'] = 444; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 500; + t['Uacute'] = 722; + t['uogonek'] = 556; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 747; + t['Emacron'] = 667; + t['ccaron'] = 444; + t['aring'] = 500; + t['Ncommaaccent'] = 722; + t['lacute'] = 278; + t['agrave'] = 500; + t['Tcommaaccent'] = 667; + t['Cacute'] = 722; + t['atilde'] = 500; + t['Edotaccent'] = 667; + t['scaron'] = 389; + t['scedilla'] = 389; + t['iacute'] = 278; + t['lozenge'] = 494; + t['Rcaron'] = 722; + t['Gcommaaccent'] = 778; + t['ucircumflex'] = 556; + t['acircumflex'] = 500; + t['Amacron'] = 722; + t['rcaron'] = 444; + t['ccedilla'] = 444; + t['Zdotaccent'] = 667; + t['Thorn'] = 611; + t['Omacron'] = 778; + t['Racute'] = 722; + t['Sacute'] = 556; + t['dcaron'] = 672; + t['Umacron'] = 722; + t['uring'] = 556; + t['threesuperior'] = 300; + t['Ograve'] = 778; + t['Agrave'] = 722; + t['Abreve'] = 722; + t['multiply'] = 570; + t['uacute'] = 556; + t['Tcaron'] = 667; + t['partialdiff'] = 494; + t['ydieresis'] = 500; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 500; + t['edieresis'] = 444; + t['cacute'] = 444; + t['nacute'] = 556; + t['umacron'] = 556; + t['Ncaron'] = 722; + t['Iacute'] = 389; + t['plusminus'] = 570; + t['brokenbar'] = 220; + t['registered'] = 747; + t['Gbreve'] = 778; + t['Idotaccent'] = 389; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 444; + t['omacron'] = 500; + t['Zacute'] = 667; + t['Zcaron'] = 667; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 722; + t['lcommaaccent'] = 278; + t['tcaron'] = 416; + t['eogonek'] = 444; + t['Uogonek'] = 722; + t['Aacute'] = 722; + t['Adieresis'] = 722; + t['egrave'] = 444; + t['zacute'] = 444; + t['iogonek'] = 278; + t['Oacute'] = 778; + t['oacute'] = 500; + t['amacron'] = 500; + t['sacute'] = 389; + t['idieresis'] = 278; + t['Ocircumflex'] = 778; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 556; + t['twosuperior'] = 300; + t['Odieresis'] = 778; + t['mu'] = 556; + t['igrave'] = 278; + t['ohungarumlaut'] = 500; + t['Eogonek'] = 667; + t['dcroat'] = 556; + t['threequarters'] = 750; + t['Scedilla'] = 556; + t['lcaron'] = 394; + t['Kcommaaccent'] = 778; + t['Lacute'] = 667; + t['trademark'] = 1000; + t['edotaccent'] = 444; + t['Igrave'] = 389; + t['Imacron'] = 389; + t['Lcaron'] = 667; + t['onehalf'] = 750; + t['lessequal'] = 549; + t['ocircumflex'] = 500; + t['ntilde'] = 556; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 444; + t['gbreve'] = 500; + t['onequarter'] = 750; + t['Scaron'] = 556; + t['Scommaaccent'] = 556; + t['Ohungarumlaut'] = 778; + t['degree'] = 400; + t['ograve'] = 500; + t['Ccaron'] = 722; + t['ugrave'] = 556; + t['radical'] = 549; + t['Dcaron'] = 722; + t['rcommaaccent'] = 444; + t['Ntilde'] = 722; + t['otilde'] = 500; + t['Rcommaaccent'] = 722; + t['Lcommaaccent'] = 667; + t['Atilde'] = 722; + t['Aogonek'] = 722; + t['Aring'] = 722; + t['Otilde'] = 778; + t['zdotaccent'] = 444; + t['Ecaron'] = 667; + t['Iogonek'] = 389; + t['kcommaaccent'] = 556; + t['minus'] = 570; + t['Icircumflex'] = 389; + t['ncaron'] = 556; + t['tcommaaccent'] = 333; + t['logicalnot'] = 570; + t['odieresis'] = 500; + t['udieresis'] = 556; + t['notequal'] = 549; + t['gcommaaccent'] = 500; + t['eth'] = 500; + t['zcaron'] = 444; + t['ncommaaccent'] = 556; + t['onesuperior'] = 300; + t['imacron'] = 278; + t['Euro'] = 500; + }); + t['Times-BoldItalic'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 250; + t['exclam'] = 389; + t['quotedbl'] = 555; + t['numbersign'] = 500; + t['dollar'] = 500; + t['percent'] = 833; + t['ampersand'] = 778; + t['quoteright'] = 333; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 500; + t['plus'] = 570; + t['comma'] = 250; + t['hyphen'] = 333; + t['period'] = 250; + t['slash'] = 278; + t['zero'] = 500; + t['one'] = 500; + t['two'] = 500; + t['three'] = 500; + t['four'] = 500; + t['five'] = 500; + t['six'] = 500; + t['seven'] = 500; + t['eight'] = 500; + t['nine'] = 500; + t['colon'] = 333; + t['semicolon'] = 333; + t['less'] = 570; + t['equal'] = 570; + t['greater'] = 570; + t['question'] = 500; + t['at'] = 832; + t['A'] = 667; + t['B'] = 667; + t['C'] = 667; + t['D'] = 722; + t['E'] = 667; + t['F'] = 667; + t['G'] = 722; + t['H'] = 778; + t['I'] = 389; + t['J'] = 500; + t['K'] = 667; + t['L'] = 611; + t['M'] = 889; + t['N'] = 722; + t['O'] = 722; + t['P'] = 611; + t['Q'] = 722; + t['R'] = 667; + t['S'] = 556; + t['T'] = 611; + t['U'] = 722; + t['V'] = 667; + t['W'] = 889; + t['X'] = 667; + t['Y'] = 611; + t['Z'] = 611; + t['bracketleft'] = 333; + t['backslash'] = 278; + t['bracketright'] = 333; + t['asciicircum'] = 570; + t['underscore'] = 500; + t['quoteleft'] = 333; + t['a'] = 500; + t['b'] = 500; + t['c'] = 444; + t['d'] = 500; + t['e'] = 444; + t['f'] = 333; + t['g'] = 500; + t['h'] = 556; + t['i'] = 278; + t['j'] = 278; + t['k'] = 500; + t['l'] = 278; + t['m'] = 778; + t['n'] = 556; + t['o'] = 500; + t['p'] = 500; + t['q'] = 500; + t['r'] = 389; + t['s'] = 389; + t['t'] = 278; + t['u'] = 556; + t['v'] = 444; + t['w'] = 667; + t['x'] = 500; + t['y'] = 444; + t['z'] = 389; + t['braceleft'] = 348; + t['bar'] = 220; + t['braceright'] = 348; + t['asciitilde'] = 570; + t['exclamdown'] = 389; + t['cent'] = 500; + t['sterling'] = 500; + t['fraction'] = 167; + t['yen'] = 500; + t['florin'] = 500; + t['section'] = 500; + t['currency'] = 500; + t['quotesingle'] = 278; + t['quotedblleft'] = 500; + t['guillemotleft'] = 500; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 556; + t['fl'] = 556; + t['endash'] = 500; + t['dagger'] = 500; + t['daggerdbl'] = 500; + t['periodcentered'] = 250; + t['paragraph'] = 500; + t['bullet'] = 350; + t['quotesinglbase'] = 333; + t['quotedblbase'] = 500; + t['quotedblright'] = 500; + t['guillemotright'] = 500; + t['ellipsis'] = 1000; + t['perthousand'] = 1000; + t['questiondown'] = 500; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 1000; + t['AE'] = 944; + t['ordfeminine'] = 266; + t['Lslash'] = 611; + t['Oslash'] = 722; + t['OE'] = 944; + t['ordmasculine'] = 300; + t['ae'] = 722; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 500; + t['oe'] = 722; + t['germandbls'] = 500; + t['Idieresis'] = 389; + t['eacute'] = 444; + t['abreve'] = 500; + t['uhungarumlaut'] = 556; + t['ecaron'] = 444; + t['Ydieresis'] = 611; + t['divide'] = 570; + t['Yacute'] = 611; + t['Acircumflex'] = 667; + t['aacute'] = 500; + t['Ucircumflex'] = 722; + t['yacute'] = 444; + t['scommaaccent'] = 389; + t['ecircumflex'] = 444; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 500; + t['Uacute'] = 722; + t['uogonek'] = 556; + t['Edieresis'] = 667; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 747; + t['Emacron'] = 667; + t['ccaron'] = 444; + t['aring'] = 500; + t['Ncommaaccent'] = 722; + t['lacute'] = 278; + t['agrave'] = 500; + t['Tcommaaccent'] = 611; + t['Cacute'] = 667; + t['atilde'] = 500; + t['Edotaccent'] = 667; + t['scaron'] = 389; + t['scedilla'] = 389; + t['iacute'] = 278; + t['lozenge'] = 494; + t['Rcaron'] = 667; + t['Gcommaaccent'] = 722; + t['ucircumflex'] = 556; + t['acircumflex'] = 500; + t['Amacron'] = 667; + t['rcaron'] = 389; + t['ccedilla'] = 444; + t['Zdotaccent'] = 611; + t['Thorn'] = 611; + t['Omacron'] = 722; + t['Racute'] = 667; + t['Sacute'] = 556; + t['dcaron'] = 608; + t['Umacron'] = 722; + t['uring'] = 556; + t['threesuperior'] = 300; + t['Ograve'] = 722; + t['Agrave'] = 667; + t['Abreve'] = 667; + t['multiply'] = 570; + t['uacute'] = 556; + t['Tcaron'] = 611; + t['partialdiff'] = 494; + t['ydieresis'] = 444; + t['Nacute'] = 722; + t['icircumflex'] = 278; + t['Ecircumflex'] = 667; + t['adieresis'] = 500; + t['edieresis'] = 444; + t['cacute'] = 444; + t['nacute'] = 556; + t['umacron'] = 556; + t['Ncaron'] = 722; + t['Iacute'] = 389; + t['plusminus'] = 570; + t['brokenbar'] = 220; + t['registered'] = 747; + t['Gbreve'] = 722; + t['Idotaccent'] = 389; + t['summation'] = 600; + t['Egrave'] = 667; + t['racute'] = 389; + t['omacron'] = 500; + t['Zacute'] = 611; + t['Zcaron'] = 611; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 667; + t['lcommaaccent'] = 278; + t['tcaron'] = 366; + t['eogonek'] = 444; + t['Uogonek'] = 722; + t['Aacute'] = 667; + t['Adieresis'] = 667; + t['egrave'] = 444; + t['zacute'] = 389; + t['iogonek'] = 278; + t['Oacute'] = 722; + t['oacute'] = 500; + t['amacron'] = 500; + t['sacute'] = 389; + t['idieresis'] = 278; + t['Ocircumflex'] = 722; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 500; + t['twosuperior'] = 300; + t['Odieresis'] = 722; + t['mu'] = 576; + t['igrave'] = 278; + t['ohungarumlaut'] = 500; + t['Eogonek'] = 667; + t['dcroat'] = 500; + t['threequarters'] = 750; + t['Scedilla'] = 556; + t['lcaron'] = 382; + t['Kcommaaccent'] = 667; + t['Lacute'] = 611; + t['trademark'] = 1000; + t['edotaccent'] = 444; + t['Igrave'] = 389; + t['Imacron'] = 389; + t['Lcaron'] = 611; + t['onehalf'] = 750; + t['lessequal'] = 549; + t['ocircumflex'] = 500; + t['ntilde'] = 556; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 667; + t['emacron'] = 444; + t['gbreve'] = 500; + t['onequarter'] = 750; + t['Scaron'] = 556; + t['Scommaaccent'] = 556; + t['Ohungarumlaut'] = 722; + t['degree'] = 400; + t['ograve'] = 500; + t['Ccaron'] = 667; + t['ugrave'] = 556; + t['radical'] = 549; + t['Dcaron'] = 722; + t['rcommaaccent'] = 389; + t['Ntilde'] = 722; + t['otilde'] = 500; + t['Rcommaaccent'] = 667; + t['Lcommaaccent'] = 611; + t['Atilde'] = 667; + t['Aogonek'] = 667; + t['Aring'] = 667; + t['Otilde'] = 722; + t['zdotaccent'] = 389; + t['Ecaron'] = 667; + t['Iogonek'] = 389; + t['kcommaaccent'] = 500; + t['minus'] = 606; + t['Icircumflex'] = 389; + t['ncaron'] = 556; + t['tcommaaccent'] = 278; + t['logicalnot'] = 606; + t['odieresis'] = 500; + t['udieresis'] = 556; + t['notequal'] = 549; + t['gcommaaccent'] = 500; + t['eth'] = 500; + t['zcaron'] = 389; + t['ncommaaccent'] = 556; + t['onesuperior'] = 300; + t['imacron'] = 278; + t['Euro'] = 500; + }); + t['Times-Italic'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 250; + t['exclam'] = 333; + t['quotedbl'] = 420; + t['numbersign'] = 500; + t['dollar'] = 500; + t['percent'] = 833; + t['ampersand'] = 778; + t['quoteright'] = 333; + t['parenleft'] = 333; + t['parenright'] = 333; + t['asterisk'] = 500; + t['plus'] = 675; + t['comma'] = 250; + t['hyphen'] = 333; + t['period'] = 250; + t['slash'] = 278; + t['zero'] = 500; + t['one'] = 500; + t['two'] = 500; + t['three'] = 500; + t['four'] = 500; + t['five'] = 500; + t['six'] = 500; + t['seven'] = 500; + t['eight'] = 500; + t['nine'] = 500; + t['colon'] = 333; + t['semicolon'] = 333; + t['less'] = 675; + t['equal'] = 675; + t['greater'] = 675; + t['question'] = 500; + t['at'] = 920; + t['A'] = 611; + t['B'] = 611; + t['C'] = 667; + t['D'] = 722; + t['E'] = 611; + t['F'] = 611; + t['G'] = 722; + t['H'] = 722; + t['I'] = 333; + t['J'] = 444; + t['K'] = 667; + t['L'] = 556; + t['M'] = 833; + t['N'] = 667; + t['O'] = 722; + t['P'] = 611; + t['Q'] = 722; + t['R'] = 611; + t['S'] = 500; + t['T'] = 556; + t['U'] = 722; + t['V'] = 611; + t['W'] = 833; + t['X'] = 611; + t['Y'] = 556; + t['Z'] = 556; + t['bracketleft'] = 389; + t['backslash'] = 278; + t['bracketright'] = 389; + t['asciicircum'] = 422; + t['underscore'] = 500; + t['quoteleft'] = 333; + t['a'] = 500; + t['b'] = 500; + t['c'] = 444; + t['d'] = 500; + t['e'] = 444; + t['f'] = 278; + t['g'] = 500; + t['h'] = 500; + t['i'] = 278; + t['j'] = 278; + t['k'] = 444; + t['l'] = 278; + t['m'] = 722; + t['n'] = 500; + t['o'] = 500; + t['p'] = 500; + t['q'] = 500; + t['r'] = 389; + t['s'] = 389; + t['t'] = 278; + t['u'] = 500; + t['v'] = 444; + t['w'] = 667; + t['x'] = 444; + t['y'] = 444; + t['z'] = 389; + t['braceleft'] = 400; + t['bar'] = 275; + t['braceright'] = 400; + t['asciitilde'] = 541; + t['exclamdown'] = 389; + t['cent'] = 500; + t['sterling'] = 500; + t['fraction'] = 167; + t['yen'] = 500; + t['florin'] = 500; + t['section'] = 500; + t['currency'] = 500; + t['quotesingle'] = 214; + t['quotedblleft'] = 556; + t['guillemotleft'] = 500; + t['guilsinglleft'] = 333; + t['guilsinglright'] = 333; + t['fi'] = 500; + t['fl'] = 500; + t['endash'] = 500; + t['dagger'] = 500; + t['daggerdbl'] = 500; + t['periodcentered'] = 250; + t['paragraph'] = 523; + t['bullet'] = 350; + t['quotesinglbase'] = 333; + t['quotedblbase'] = 556; + t['quotedblright'] = 556; + t['guillemotright'] = 500; + t['ellipsis'] = 889; + t['perthousand'] = 1000; + t['questiondown'] = 500; + t['grave'] = 333; + t['acute'] = 333; + t['circumflex'] = 333; + t['tilde'] = 333; + t['macron'] = 333; + t['breve'] = 333; + t['dotaccent'] = 333; + t['dieresis'] = 333; + t['ring'] = 333; + t['cedilla'] = 333; + t['hungarumlaut'] = 333; + t['ogonek'] = 333; + t['caron'] = 333; + t['emdash'] = 889; + t['AE'] = 889; + t['ordfeminine'] = 276; + t['Lslash'] = 556; + t['Oslash'] = 722; + t['OE'] = 944; + t['ordmasculine'] = 310; + t['ae'] = 667; + t['dotlessi'] = 278; + t['lslash'] = 278; + t['oslash'] = 500; + t['oe'] = 667; + t['germandbls'] = 500; + t['Idieresis'] = 333; + t['eacute'] = 444; + t['abreve'] = 500; + t['uhungarumlaut'] = 500; + t['ecaron'] = 444; + t['Ydieresis'] = 556; + t['divide'] = 675; + t['Yacute'] = 556; + t['Acircumflex'] = 611; + t['aacute'] = 500; + t['Ucircumflex'] = 722; + t['yacute'] = 444; + t['scommaaccent'] = 389; + t['ecircumflex'] = 444; + t['Uring'] = 722; + t['Udieresis'] = 722; + t['aogonek'] = 500; + t['Uacute'] = 722; + t['uogonek'] = 500; + t['Edieresis'] = 611; + t['Dcroat'] = 722; + t['commaaccent'] = 250; + t['copyright'] = 760; + t['Emacron'] = 611; + t['ccaron'] = 444; + t['aring'] = 500; + t['Ncommaaccent'] = 667; + t['lacute'] = 278; + t['agrave'] = 500; + t['Tcommaaccent'] = 556; + t['Cacute'] = 667; + t['atilde'] = 500; + t['Edotaccent'] = 611; + t['scaron'] = 389; + t['scedilla'] = 389; + t['iacute'] = 278; + t['lozenge'] = 471; + t['Rcaron'] = 611; + t['Gcommaaccent'] = 722; + t['ucircumflex'] = 500; + t['acircumflex'] = 500; + t['Amacron'] = 611; + t['rcaron'] = 389; + t['ccedilla'] = 444; + t['Zdotaccent'] = 556; + t['Thorn'] = 611; + t['Omacron'] = 722; + t['Racute'] = 611; + t['Sacute'] = 500; + t['dcaron'] = 544; + t['Umacron'] = 722; + t['uring'] = 500; + t['threesuperior'] = 300; + t['Ograve'] = 722; + t['Agrave'] = 611; + t['Abreve'] = 611; + t['multiply'] = 675; + t['uacute'] = 500; + t['Tcaron'] = 556; + t['partialdiff'] = 476; + t['ydieresis'] = 444; + t['Nacute'] = 667; + t['icircumflex'] = 278; + t['Ecircumflex'] = 611; + t['adieresis'] = 500; + t['edieresis'] = 444; + t['cacute'] = 444; + t['nacute'] = 500; + t['umacron'] = 500; + t['Ncaron'] = 667; + t['Iacute'] = 333; + t['plusminus'] = 675; + t['brokenbar'] = 275; + t['registered'] = 760; + t['Gbreve'] = 722; + t['Idotaccent'] = 333; + t['summation'] = 600; + t['Egrave'] = 611; + t['racute'] = 389; + t['omacron'] = 500; + t['Zacute'] = 556; + t['Zcaron'] = 556; + t['greaterequal'] = 549; + t['Eth'] = 722; + t['Ccedilla'] = 667; + t['lcommaaccent'] = 278; + t['tcaron'] = 300; + t['eogonek'] = 444; + t['Uogonek'] = 722; + t['Aacute'] = 611; + t['Adieresis'] = 611; + t['egrave'] = 444; + t['zacute'] = 389; + t['iogonek'] = 278; + t['Oacute'] = 722; + t['oacute'] = 500; + t['amacron'] = 500; + t['sacute'] = 389; + t['idieresis'] = 278; + t['Ocircumflex'] = 722; + t['Ugrave'] = 722; + t['Delta'] = 612; + t['thorn'] = 500; + t['twosuperior'] = 300; + t['Odieresis'] = 722; + t['mu'] = 500; + t['igrave'] = 278; + t['ohungarumlaut'] = 500; + t['Eogonek'] = 611; + t['dcroat'] = 500; + t['threequarters'] = 750; + t['Scedilla'] = 500; + t['lcaron'] = 300; + t['Kcommaaccent'] = 667; + t['Lacute'] = 556; + t['trademark'] = 980; + t['edotaccent'] = 444; + t['Igrave'] = 333; + t['Imacron'] = 333; + t['Lcaron'] = 611; + t['onehalf'] = 750; + t['lessequal'] = 549; + t['ocircumflex'] = 500; + t['ntilde'] = 500; + t['Uhungarumlaut'] = 722; + t['Eacute'] = 611; + t['emacron'] = 444; + t['gbreve'] = 500; + t['onequarter'] = 750; + t['Scaron'] = 500; + t['Scommaaccent'] = 500; + t['Ohungarumlaut'] = 722; + t['degree'] = 400; + t['ograve'] = 500; + t['Ccaron'] = 667; + t['ugrave'] = 500; + t['radical'] = 453; + t['Dcaron'] = 722; + t['rcommaaccent'] = 389; + t['Ntilde'] = 667; + t['otilde'] = 500; + t['Rcommaaccent'] = 611; + t['Lcommaaccent'] = 556; + t['Atilde'] = 611; + t['Aogonek'] = 611; + t['Aring'] = 611; + t['Otilde'] = 722; + t['zdotaccent'] = 389; + t['Ecaron'] = 611; + t['Iogonek'] = 333; + t['kcommaaccent'] = 444; + t['minus'] = 675; + t['Icircumflex'] = 333; + t['ncaron'] = 500; + t['tcommaaccent'] = 278; + t['logicalnot'] = 675; + t['odieresis'] = 500; + t['udieresis'] = 500; + t['notequal'] = 549; + t['gcommaaccent'] = 500; + t['eth'] = 500; + t['zcaron'] = 389; + t['ncommaaccent'] = 500; + t['onesuperior'] = 300; + t['imacron'] = 278; + t['Euro'] = 500; + }); + t['ZapfDingbats'] = (0, _util.getLookupTableFactory)(function (t) { + t['space'] = 278; + t['a1'] = 974; + t['a2'] = 961; + t['a202'] = 974; + t['a3'] = 980; + t['a4'] = 719; + t['a5'] = 789; + t['a119'] = 790; + t['a118'] = 791; + t['a117'] = 690; + t['a11'] = 960; + t['a12'] = 939; + t['a13'] = 549; + t['a14'] = 855; + t['a15'] = 911; + t['a16'] = 933; + t['a105'] = 911; + t['a17'] = 945; + t['a18'] = 974; + t['a19'] = 755; + t['a20'] = 846; + t['a21'] = 762; + t['a22'] = 761; + t['a23'] = 571; + t['a24'] = 677; + t['a25'] = 763; + t['a26'] = 760; + t['a27'] = 759; + t['a28'] = 754; + t['a6'] = 494; + t['a7'] = 552; + t['a8'] = 537; + t['a9'] = 577; + t['a10'] = 692; + t['a29'] = 786; + t['a30'] = 788; + t['a31'] = 788; + t['a32'] = 790; + t['a33'] = 793; + t['a34'] = 794; + t['a35'] = 816; + t['a36'] = 823; + t['a37'] = 789; + t['a38'] = 841; + t['a39'] = 823; + t['a40'] = 833; + t['a41'] = 816; + t['a42'] = 831; + t['a43'] = 923; + t['a44'] = 744; + t['a45'] = 723; + t['a46'] = 749; + t['a47'] = 790; + t['a48'] = 792; + t['a49'] = 695; + t['a50'] = 776; + t['a51'] = 768; + t['a52'] = 792; + t['a53'] = 759; + t['a54'] = 707; + t['a55'] = 708; + t['a56'] = 682; + t['a57'] = 701; + t['a58'] = 826; + t['a59'] = 815; + t['a60'] = 789; + t['a61'] = 789; + t['a62'] = 707; + t['a63'] = 687; + t['a64'] = 696; + t['a65'] = 689; + t['a66'] = 786; + t['a67'] = 787; + t['a68'] = 713; + t['a69'] = 791; + t['a70'] = 785; + t['a71'] = 791; + t['a72'] = 873; + t['a73'] = 761; + t['a74'] = 762; + t['a203'] = 762; + t['a75'] = 759; + t['a204'] = 759; + t['a76'] = 892; + t['a77'] = 892; + t['a78'] = 788; + t['a79'] = 784; + t['a81'] = 438; + t['a82'] = 138; + t['a83'] = 277; + t['a84'] = 415; + t['a97'] = 392; + t['a98'] = 392; + t['a99'] = 668; + t['a100'] = 668; + t['a89'] = 390; + t['a90'] = 390; + t['a93'] = 317; + t['a94'] = 317; + t['a91'] = 276; + t['a92'] = 276; + t['a205'] = 509; + t['a85'] = 509; + t['a206'] = 410; + t['a86'] = 410; + t['a87'] = 234; + t['a88'] = 234; + t['a95'] = 334; + t['a96'] = 334; + t['a101'] = 732; + t['a102'] = 544; + t['a103'] = 544; + t['a104'] = 910; + t['a106'] = 667; + t['a107'] = 760; + t['a108'] = 760; + t['a112'] = 776; + t['a111'] = 595; + t['a110'] = 694; + t['a109'] = 626; + t['a120'] = 788; + t['a121'] = 788; + t['a122'] = 788; + t['a123'] = 788; + t['a124'] = 788; + t['a125'] = 788; + t['a126'] = 788; + t['a127'] = 788; + t['a128'] = 788; + t['a129'] = 788; + t['a130'] = 788; + t['a131'] = 788; + t['a132'] = 788; + t['a133'] = 788; + t['a134'] = 788; + t['a135'] = 788; + t['a136'] = 788; + t['a137'] = 788; + t['a138'] = 788; + t['a139'] = 788; + t['a140'] = 788; + t['a141'] = 788; + t['a142'] = 788; + t['a143'] = 788; + t['a144'] = 788; + t['a145'] = 788; + t['a146'] = 788; + t['a147'] = 788; + t['a148'] = 788; + t['a149'] = 788; + t['a150'] = 788; + t['a151'] = 788; + t['a152'] = 788; + t['a153'] = 788; + t['a154'] = 788; + t['a155'] = 788; + t['a156'] = 788; + t['a157'] = 788; + t['a158'] = 788; + t['a159'] = 788; + t['a160'] = 894; + t['a161'] = 838; + t['a163'] = 1016; + t['a164'] = 458; + t['a196'] = 748; + t['a165'] = 924; + t['a192'] = 748; + t['a166'] = 918; + t['a167'] = 927; + t['a168'] = 928; + t['a169'] = 928; + t['a170'] = 834; + t['a171'] = 873; + t['a172'] = 828; + t['a173'] = 924; + t['a162'] = 924; + t['a174'] = 917; + t['a175'] = 930; + t['a176'] = 931; + t['a177'] = 463; + t['a178'] = 883; + t['a179'] = 836; + t['a193'] = 836; + t['a180'] = 867; + t['a199'] = 867; + t['a181'] = 696; + t['a200'] = 696; + t['a182'] = 874; + t['a201'] = 874; + t['a183'] = 760; + t['a184'] = 946; + t['a197'] = 771; + t['a185'] = 865; + t['a194'] = 771; + t['a198'] = 888; + t['a186'] = 967; + t['a195'] = 888; + t['a187'] = 831; + t['a188'] = 873; + t['a189'] = 927; + t['a190'] = 970; + t['a191'] = 918; + }); +}); +exports.getMetrics = getMetrics; + +/***/ }), +/* 30 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +var MurmurHash3_64 = function MurmurHash3_64Closure(seed) { + var MASK_HIGH = 0xffff0000; + var MASK_LOW = 0xffff; + function MurmurHash3_64(seed) { + var SEED = 0xc3d2e1f0; + this.h1 = seed ? seed & 0xffffffff : SEED; + this.h2 = seed ? seed & 0xffffffff : SEED; + } + MurmurHash3_64.prototype = { + update: function MurmurHash3_64_update(input) { + var i; + if (typeof input === 'string') { + var data = new Uint8Array(input.length * 2); + var length = 0; + for (i = 0; i < input.length; i++) { + var code = input.charCodeAt(i); + if (code <= 0xff) { + data[length++] = code; + } else { + data[length++] = code >>> 8; + data[length++] = code & 0xff; + } + } + } else if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && 'byteLength' in input) { + data = input; + length = data.byteLength; + } else { + throw new Error('Wrong data format in MurmurHash3_64_update. ' + 'Input must be a string or array.'); + } + var blockCounts = length >> 2; + var tailLength = length - blockCounts * 4; + var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts); + var k1 = 0; + var k2 = 0; + var h1 = this.h1; + var h2 = this.h2; + var C1 = 0xcc9e2d51; + var C2 = 0x1b873593; + var C1_LOW = C1 & MASK_LOW; + var C2_LOW = C2 & MASK_LOW; + for (i = 0; i < blockCounts; i++) { + if (i & 1) { + k1 = dataUint32[i]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + h1 ^= k1; + h1 = h1 << 13 | h1 >>> 19; + h1 = h1 * 5 + 0xe6546b64; + } else { + k2 = dataUint32[i]; + k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW; + k2 = k2 << 15 | k2 >>> 17; + k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW; + h2 ^= k2; + h2 = h2 << 13 | h2 >>> 19; + h2 = h2 * 5 + 0xe6546b64; + } + } + k1 = 0; + switch (tailLength) { + case 3: + k1 ^= data[blockCounts * 4 + 2] << 16; + case 2: + k1 ^= data[blockCounts * 4 + 1] << 8; + case 1: + k1 ^= data[blockCounts * 4]; + k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW; + k1 = k1 << 15 | k1 >>> 17; + k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW; + if (blockCounts & 1) { + h1 ^= k1; + } else { + h2 ^= k1; + } + } + this.h1 = h1; + this.h2 = h2; + return this; + }, + hexdigest: function MurmurHash3_64_hexdigest() { + var h1 = this.h1; + var h2 = this.h2; + h1 ^= h2 >>> 1; + h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW; + h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW; + h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16; + h1 ^= h2 >>> 1; + for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) { + var hex = (arr[i] >>> 0).toString(16); + while (hex.length < 8) { + hex = '0' + hex; + } + str += hex; + } + return str; + } + }; + return MurmurHash3_64; +}(); +exports.MurmurHash3_64 = MurmurHash3_64; + +/***/ }), +/* 31 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getTilingPatternIR = exports.Pattern = undefined; + +var _util = __w_pdfjs_require__(0); + +var _colorspace = __w_pdfjs_require__(3); + +var _primitives = __w_pdfjs_require__(1); + +var _function = __w_pdfjs_require__(7); + +var ShadingType = { + FUNCTION_BASED: 1, + AXIAL: 2, + RADIAL: 3, + FREE_FORM_MESH: 4, + LATTICE_FORM_MESH: 5, + COONS_PATCH_MESH: 6, + TENSOR_PATCH_MESH: 7 +}; +var Pattern = function PatternClosure() { + function Pattern() { + throw new Error('should not call Pattern constructor'); + } + Pattern.prototype = { + getPattern: function Pattern_getPattern(ctx) { + throw new Error('Should not call Pattern.getStyle: ' + ctx); + } + }; + Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref, res, handler) { + var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading; + var type = dict.get('ShadingType'); + try { + switch (type) { + case ShadingType.AXIAL: + case ShadingType.RADIAL: + return new Shadings.RadialAxial(dict, matrix, xref, res); + case ShadingType.FREE_FORM_MESH: + case ShadingType.LATTICE_FORM_MESH: + case ShadingType.COONS_PATCH_MESH: + case ShadingType.TENSOR_PATCH_MESH: + return new Shadings.Mesh(shading, matrix, xref, res); + default: + throw new _util.FormatError('Unsupported ShadingType: ' + type); + } + } catch (ex) { + if (ex instanceof _util.MissingDataException) { + throw ex; + } + handler.send('UnsupportedFeature', { featureId: _util.UNSUPPORTED_FEATURES.shadingPattern }); + (0, _util.warn)(ex); + return new Shadings.Dummy(); + } + }; + return Pattern; +}(); +var Shadings = {}; +Shadings.SMALL_NUMBER = 1e-6; +Shadings.RadialAxial = function RadialAxialClosure() { + function RadialAxial(dict, matrix, xref, res) { + this.matrix = matrix; + this.coordsArr = dict.getArray('Coords'); + this.shadingType = dict.get('ShadingType'); + this.type = 'Pattern'; + var cs = dict.get('ColorSpace', 'CS'); + cs = _colorspace.ColorSpace.parse(cs, xref, res); + this.cs = cs; + var t0 = 0.0, + t1 = 1.0; + if (dict.has('Domain')) { + var domainArr = dict.getArray('Domain'); + t0 = domainArr[0]; + t1 = domainArr[1]; + } + var extendStart = false, + extendEnd = false; + if (dict.has('Extend')) { + var extendArr = dict.getArray('Extend'); + extendStart = extendArr[0]; + extendEnd = extendArr[1]; + } + if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) { + var x1 = this.coordsArr[0]; + var y1 = this.coordsArr[1]; + var r1 = this.coordsArr[2]; + var x2 = this.coordsArr[3]; + var y2 = this.coordsArr[4]; + var r2 = this.coordsArr[5]; + var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); + if (r1 <= r2 + distance && r2 <= r1 + distance) { + (0, _util.warn)('Unsupported radial gradient.'); + } + } + this.extendStart = extendStart; + this.extendEnd = extendEnd; + var fnObj = dict.get('Function'); + var fn = _function.PDFFunction.parseArray(xref, fnObj); + var diff = t1 - t0; + var step = diff / 10; + var colorStops = this.colorStops = []; + if (t0 >= t1 || step <= 0) { + (0, _util.info)('Bad shading domain.'); + return; + } + var color = new Float32Array(cs.numComps), + ratio = new Float32Array(1); + var rgbColor; + for (var i = t0; i <= t1; i += step) { + ratio[0] = i; + fn(ratio, 0, color, 0); + rgbColor = cs.getRgb(color, 0); + var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + colorStops.push([(i - t0) / diff, cssColor]); + } + var background = 'transparent'; + if (dict.has('Background')) { + rgbColor = cs.getRgb(dict.get('Background'), 0); + background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]); + } + if (!extendStart) { + colorStops.unshift([0, background]); + colorStops[1][0] += Shadings.SMALL_NUMBER; + } + if (!extendEnd) { + colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER; + colorStops.push([1, background]); + } + this.colorStops = colorStops; + } + RadialAxial.prototype = { + getIR: function RadialAxial_getIR() { + var coordsArr = this.coordsArr; + var shadingType = this.shadingType; + var type, p0, p1, r0, r1; + if (shadingType === ShadingType.AXIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[2], coordsArr[3]]; + r0 = null; + r1 = null; + type = 'axial'; + } else if (shadingType === ShadingType.RADIAL) { + p0 = [coordsArr[0], coordsArr[1]]; + p1 = [coordsArr[3], coordsArr[4]]; + r0 = coordsArr[2]; + r1 = coordsArr[5]; + type = 'radial'; + } else { + (0, _util.unreachable)('getPattern type unknown: ' + shadingType); + } + var matrix = this.matrix; + if (matrix) { + p0 = _util.Util.applyTransform(p0, matrix); + p1 = _util.Util.applyTransform(p1, matrix); + if (shadingType === ShadingType.RADIAL) { + var scale = _util.Util.singularValueDecompose2dScale(matrix); + r0 *= scale[0]; + r1 *= scale[1]; + } + } + return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1]; + } + }; + return RadialAxial; +}(); +Shadings.Mesh = function MeshClosure() { + function MeshStreamReader(stream, context) { + this.stream = stream; + this.context = context; + this.buffer = 0; + this.bufferLength = 0; + var numComps = context.numComps; + this.tmpCompsBuf = new Float32Array(numComps); + var csNumComps = context.colorSpace.numComps; + this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf; + } + MeshStreamReader.prototype = { + get hasData() { + if (this.stream.end) { + return this.stream.pos < this.stream.end; + } + if (this.bufferLength > 0) { + return true; + } + var nextByte = this.stream.getByte(); + if (nextByte < 0) { + return false; + } + this.buffer = nextByte; + this.bufferLength = 8; + return true; + }, + readBits: function MeshStreamReader_readBits(n) { + var buffer = this.buffer; + var bufferLength = this.bufferLength; + if (n === 32) { + if (bufferLength === 0) { + return (this.stream.getByte() << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte()) >>> 0; + } + buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte(); + var nextByte = this.stream.getByte(); + this.buffer = nextByte & (1 << bufferLength) - 1; + return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0; + } + if (n === 8 && bufferLength === 0) { + return this.stream.getByte(); + } + while (bufferLength < n) { + buffer = buffer << 8 | this.stream.getByte(); + bufferLength += 8; + } + bufferLength -= n; + this.bufferLength = bufferLength; + this.buffer = buffer & (1 << bufferLength) - 1; + return buffer >> bufferLength; + }, + align: function MeshStreamReader_align() { + this.buffer = 0; + this.bufferLength = 0; + }, + readFlag: function MeshStreamReader_readFlag() { + return this.readBits(this.context.bitsPerFlag); + }, + readCoordinate: function MeshStreamReader_readCoordinate() { + var bitsPerCoordinate = this.context.bitsPerCoordinate; + var xi = this.readBits(bitsPerCoordinate); + var yi = this.readBits(bitsPerCoordinate); + var decode = this.context.decode; + var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10; + return [xi * scale * (decode[1] - decode[0]) + decode[0], yi * scale * (decode[3] - decode[2]) + decode[2]]; + }, + readComponents: function MeshStreamReader_readComponents() { + var numComps = this.context.numComps; + var bitsPerComponent = this.context.bitsPerComponent; + var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10; + var decode = this.context.decode; + var components = this.tmpCompsBuf; + for (var i = 0, j = 4; i < numComps; i++, j += 2) { + var ci = this.readBits(bitsPerComponent); + components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j]; + } + var color = this.tmpCsCompsBuf; + if (this.context.colorFn) { + this.context.colorFn(components, 0, color, 0); + } + return this.context.colorSpace.getRgb(color, 0); + } + }; + function decodeType4Shading(mesh, reader) { + var coords = mesh.coords; + var colors = mesh.colors; + var operators = []; + var ps = []; + var verticesLeft = 0; + while (reader.hasData) { + var f = reader.readFlag(); + var coord = reader.readCoordinate(); + var color = reader.readComponents(); + if (verticesLeft === 0) { + if (!(0 <= f && f <= 2)) { + throw new _util.FormatError('Unknown type4 flag'); + } + switch (f) { + case 0: + verticesLeft = 3; + break; + case 1: + ps.push(ps[ps.length - 2], ps[ps.length - 1]); + verticesLeft = 1; + break; + case 2: + ps.push(ps[ps.length - 3], ps[ps.length - 1]); + verticesLeft = 1; + break; + } + operators.push(f); + } + ps.push(coords.length); + coords.push(coord); + colors.push(color); + verticesLeft--; + reader.align(); + } + mesh.figures.push({ + type: 'triangles', + coords: new Int32Array(ps), + colors: new Int32Array(ps) + }); + } + function decodeType5Shading(mesh, reader, verticesPerRow) { + var coords = mesh.coords; + var colors = mesh.colors; + var ps = []; + while (reader.hasData) { + var coord = reader.readCoordinate(); + var color = reader.readComponents(); + ps.push(coords.length); + coords.push(coord); + colors.push(color); + } + mesh.figures.push({ + type: 'lattice', + coords: new Int32Array(ps), + colors: new Int32Array(ps), + verticesPerRow: verticesPerRow + }); + } + var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3; + var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20; + var TRIANGLE_DENSITY = 20; + var getB = function getBClosure() { + function buildB(count) { + var lut = []; + for (var i = 0; i <= count; i++) { + var t = i / count, + t_ = 1 - t; + lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_, 3 * t * t * t_, t * t * t])); + } + return lut; + } + var cache = []; + return function getB(count) { + if (!cache[count]) { + cache[count] = buildB(count); + } + return cache[count]; + }; + }(); + function buildFigureFromPatch(mesh, index) { + var figure = mesh.figures[index]; + (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure'); + var coords = mesh.coords, + colors = mesh.colors; + var pi = figure.coords; + var ci = figure.colors; + var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]); + var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]); + var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - mesh.bounds[0])); + splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy)); + var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - mesh.bounds[1])); + splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT, Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy)); + var verticesPerRow = splitXBy + 1; + var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow); + var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow); + var k = 0; + var cl = new Uint8Array(3), + cr = new Uint8Array(3); + var c0 = colors[ci[0]], + c1 = colors[ci[1]], + c2 = colors[ci[2]], + c3 = colors[ci[3]]; + var bRow = getB(splitYBy), + bCol = getB(splitXBy); + for (var row = 0; row <= splitYBy; row++) { + cl[0] = (c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy | 0; + cl[1] = (c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy | 0; + cl[2] = (c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy | 0; + cr[0] = (c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy | 0; + cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0; + cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0; + for (var col = 0; col <= splitXBy; col++, k++) { + if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) { + continue; + } + var x = 0, + y = 0; + var q = 0; + for (var i = 0; i <= 3; i++) { + for (var j = 0; j <= 3; j++, q++) { + var m = bRow[row][i] * bCol[col][j]; + x += coords[pi[q]][0] * m; + y += coords[pi[q]][1] * m; + } + } + figureCoords[k] = coords.length; + coords.push([x, y]); + figureColors[k] = colors.length; + var newColor = new Uint8Array(3); + newColor[0] = (cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy | 0; + newColor[1] = (cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy | 0; + newColor[2] = (cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy | 0; + colors.push(newColor); + } + } + figureCoords[0] = pi[0]; + figureColors[0] = ci[0]; + figureCoords[splitXBy] = pi[3]; + figureColors[splitXBy] = ci[1]; + figureCoords[verticesPerRow * splitYBy] = pi[12]; + figureColors[verticesPerRow * splitYBy] = ci[2]; + figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15]; + figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3]; + mesh.figures[index] = { + type: 'lattice', + coords: figureCoords, + colors: figureColors, + verticesPerRow: verticesPerRow + }; + } + function decodeType6Shading(mesh, reader) { + var coords = mesh.coords; + var colors = mesh.colors; + var ps = new Int32Array(16); + var cs = new Int32Array(4); + while (reader.hasData) { + var f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new _util.FormatError('Unknown type6 flag'); + } + var i, ii; + var pi = coords.length; + for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + var ci = colors.length; + for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + var tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + ps[5] = coords.length; + coords.push([(-4 * coords[ps[0]][0] - coords[ps[15]][0] + 6 * (coords[ps[4]][0] + coords[ps[1]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9, (-4 * coords[ps[0]][1] - coords[ps[15]][1] + 6 * (coords[ps[4]][1] + coords[ps[1]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9]); + ps[6] = coords.length; + coords.push([(-4 * coords[ps[3]][0] - coords[ps[12]][0] + 6 * (coords[ps[2]][0] + coords[ps[7]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9, (-4 * coords[ps[3]][1] - coords[ps[12]][1] + 6 * (coords[ps[2]][1] + coords[ps[7]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9]); + ps[9] = coords.length; + coords.push([(-4 * coords[ps[12]][0] - coords[ps[3]][0] + 6 * (coords[ps[8]][0] + coords[ps[13]][0]) - 2 * (coords[ps[0]][0] + coords[ps[15]][0]) + 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9, (-4 * coords[ps[12]][1] - coords[ps[3]][1] + 6 * (coords[ps[8]][1] + coords[ps[13]][1]) - 2 * (coords[ps[0]][1] + coords[ps[15]][1]) + 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9]); + ps[10] = coords.length; + coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]); + mesh.figures.push({ + type: 'patch', + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + function decodeType7Shading(mesh, reader) { + var coords = mesh.coords; + var colors = mesh.colors; + var ps = new Int32Array(16); + var cs = new Int32Array(4); + while (reader.hasData) { + var f = reader.readFlag(); + if (!(0 <= f && f <= 3)) { + throw new _util.FormatError('Unknown type7 flag'); + } + var i, ii; + var pi = coords.length; + for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) { + coords.push(reader.readCoordinate()); + } + var ci = colors.length; + for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) { + colors.push(reader.readComponents()); + } + var tmp1, tmp2, tmp3, tmp4; + switch (f) { + case 0: + ps[12] = pi + 3; + ps[13] = pi + 4; + ps[14] = pi + 5; + ps[15] = pi + 6; + ps[8] = pi + 2; + ps[9] = pi + 13; + ps[10] = pi + 14; + ps[11] = pi + 7; + ps[4] = pi + 1; + ps[5] = pi + 12; + ps[6] = pi + 15; + ps[7] = pi + 8; + ps[0] = pi; + ps[1] = pi + 11; + ps[2] = pi + 10; + ps[3] = pi + 9; + cs[2] = ci + 1; + cs[3] = ci + 2; + cs[0] = ci; + cs[1] = ci + 3; + break; + case 1: + tmp1 = ps[12]; + tmp2 = ps[13]; + tmp3 = ps[14]; + tmp4 = ps[15]; + ps[12] = tmp4; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = tmp3; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[2]; + tmp2 = cs[3]; + cs[2] = tmp2; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 2: + tmp1 = ps[15]; + tmp2 = ps[11]; + ps[12] = ps[3]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[7]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = tmp2; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = tmp1; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + tmp1 = cs[3]; + cs[2] = cs[1]; + cs[3] = ci; + cs[0] = tmp1; + cs[1] = ci + 1; + break; + case 3: + ps[12] = ps[0]; + ps[13] = pi + 0; + ps[14] = pi + 1; + ps[15] = pi + 2; + ps[8] = ps[1]; + ps[9] = pi + 9; + ps[10] = pi + 10; + ps[11] = pi + 3; + ps[4] = ps[2]; + ps[5] = pi + 8; + ps[6] = pi + 11; + ps[7] = pi + 4; + ps[0] = ps[3]; + ps[1] = pi + 7; + ps[2] = pi + 6; + ps[3] = pi + 5; + cs[2] = cs[0]; + cs[3] = ci; + cs[0] = cs[1]; + cs[1] = ci + 1; + break; + } + mesh.figures.push({ + type: 'patch', + coords: new Int32Array(ps), + colors: new Int32Array(cs) + }); + } + } + function updateBounds(mesh) { + var minX = mesh.coords[0][0], + minY = mesh.coords[0][1], + maxX = minX, + maxY = minY; + for (var i = 1, ii = mesh.coords.length; i < ii; i++) { + var x = mesh.coords[i][0], + y = mesh.coords[i][1]; + minX = minX > x ? x : minX; + minY = minY > y ? y : minY; + maxX = maxX < x ? x : maxX; + maxY = maxY < y ? y : maxY; + } + mesh.bounds = [minX, minY, maxX, maxY]; + } + function packData(mesh) { + var i, ii, j, jj; + var coords = mesh.coords; + var coordsPacked = new Float32Array(coords.length * 2); + for (i = 0, j = 0, ii = coords.length; i < ii; i++) { + var xy = coords[i]; + coordsPacked[j++] = xy[0]; + coordsPacked[j++] = xy[1]; + } + mesh.coords = coordsPacked; + var colors = mesh.colors; + var colorsPacked = new Uint8Array(colors.length * 3); + for (i = 0, j = 0, ii = colors.length; i < ii; i++) { + var c = colors[i]; + colorsPacked[j++] = c[0]; + colorsPacked[j++] = c[1]; + colorsPacked[j++] = c[2]; + } + mesh.colors = colorsPacked; + var figures = mesh.figures; + for (i = 0, ii = figures.length; i < ii; i++) { + var figure = figures[i], + ps = figure.coords, + cs = figure.colors; + for (j = 0, jj = ps.length; j < jj; j++) { + ps[j] *= 2; + cs[j] *= 3; + } + } + } + function Mesh(stream, matrix, xref, res) { + if (!(0, _primitives.isStream)(stream)) { + throw new _util.FormatError('Mesh data is not a stream'); + } + var dict = stream.dict; + this.matrix = matrix; + this.shadingType = dict.get('ShadingType'); + this.type = 'Pattern'; + this.bbox = dict.getArray('BBox'); + var cs = dict.get('ColorSpace', 'CS'); + cs = _colorspace.ColorSpace.parse(cs, xref, res); + this.cs = cs; + this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null; + var fnObj = dict.get('Function'); + var fn = fnObj ? _function.PDFFunction.parseArray(xref, fnObj) : null; + this.coords = []; + this.colors = []; + this.figures = []; + var decodeContext = { + bitsPerCoordinate: dict.get('BitsPerCoordinate'), + bitsPerComponent: dict.get('BitsPerComponent'), + bitsPerFlag: dict.get('BitsPerFlag'), + decode: dict.getArray('Decode'), + colorFn: fn, + colorSpace: cs, + numComps: fn ? 1 : cs.numComps + }; + var reader = new MeshStreamReader(stream, decodeContext); + var patchMesh = false; + switch (this.shadingType) { + case ShadingType.FREE_FORM_MESH: + decodeType4Shading(this, reader); + break; + case ShadingType.LATTICE_FORM_MESH: + var verticesPerRow = dict.get('VerticesPerRow') | 0; + if (verticesPerRow < 2) { + throw new _util.FormatError('Invalid VerticesPerRow'); + } + decodeType5Shading(this, reader, verticesPerRow); + break; + case ShadingType.COONS_PATCH_MESH: + decodeType6Shading(this, reader); + patchMesh = true; + break; + case ShadingType.TENSOR_PATCH_MESH: + decodeType7Shading(this, reader); + patchMesh = true; + break; + default: + (0, _util.unreachable)('Unsupported mesh type.'); + break; + } + if (patchMesh) { + updateBounds(this); + for (var i = 0, ii = this.figures.length; i < ii; i++) { + buildFigureFromPatch(this, i); + } + } + updateBounds(this); + packData(this); + } + Mesh.prototype = { + getIR: function Mesh_getIR() { + return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background]; + } + }; + return Mesh; +}(); +Shadings.Dummy = function DummyClosure() { + function Dummy() { + this.type = 'Pattern'; + } + Dummy.prototype = { + getIR: function Dummy_getIR() { + return ['Dummy']; + } + }; + return Dummy; +}(); +function getTilingPatternIR(operatorList, dict, args) { + var matrix = dict.getArray('Matrix'); + var bbox = _util.Util.normalizeRect(dict.getArray('BBox')); + var xstep = dict.get('XStep'); + var ystep = dict.get('YStep'); + var paintType = dict.get('PaintType'); + var tilingType = dict.get('TilingType'); + if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) { + throw new _util.FormatError('Invalid getTilingPatternIR /BBox array: [' + bbox + '].'); + } + return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType]; +} +exports.Pattern = Pattern; +exports.getTilingPatternIR = getTilingPatternIR; + +/***/ }), +/* 32 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.NetworkPdfManager = exports.LocalPdfManager = undefined; + +var _util = __w_pdfjs_require__(0); + +var _chunked_stream = __w_pdfjs_require__(11); + +var _document = __w_pdfjs_require__(23); + +var _stream = __w_pdfjs_require__(2); + +var BasePdfManager = function BasePdfManagerClosure() { + function BasePdfManager() { + throw new Error('Cannot initialize BaseManagerManager'); + } + BasePdfManager.prototype = { + get docId() { + return this._docId; + }, + get password() { + return this._password; + }, + get docBaseUrl() { + var docBaseUrl = null; + if (this._docBaseUrl) { + var absoluteUrl = (0, _util.createValidAbsoluteUrl)(this._docBaseUrl); + if (absoluteUrl) { + docBaseUrl = absoluteUrl.href; + } else { + (0, _util.warn)('Invalid absolute docBaseUrl: "' + this._docBaseUrl + '".'); + } + } + return (0, _util.shadow)(this, 'docBaseUrl', docBaseUrl); + }, + onLoadedStream: function BasePdfManager_onLoadedStream() { + throw new _util.NotImplementedException(); + }, + ensureDoc: function BasePdfManager_ensureDoc(prop, args) { + return this.ensure(this.pdfDocument, prop, args); + }, + ensureXRef: function BasePdfManager_ensureXRef(prop, args) { + return this.ensure(this.pdfDocument.xref, prop, args); + }, + ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) { + return this.ensure(this.pdfDocument.catalog, prop, args); + }, + getPage: function BasePdfManager_getPage(pageIndex) { + return this.pdfDocument.getPage(pageIndex); + }, + cleanup: function BasePdfManager_cleanup() { + return this.pdfDocument.cleanup(); + }, + ensure: function BasePdfManager_ensure(obj, prop, args) { + return new _util.NotImplementedException(); + }, + requestRange: function BasePdfManager_requestRange(begin, end) { + return new _util.NotImplementedException(); + }, + requestLoadedStream: function BasePdfManager_requestLoadedStream() { + return new _util.NotImplementedException(); + }, + sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) { + return new _util.NotImplementedException(); + }, + updatePassword: function BasePdfManager_updatePassword(password) { + this._password = password; + }, + terminate: function BasePdfManager_terminate() { + return new _util.NotImplementedException(); + } + }; + return BasePdfManager; +}(); +var LocalPdfManager = function LocalPdfManagerClosure() { + function LocalPdfManager(docId, data, password, evaluatorOptions, docBaseUrl) { + this._docId = docId; + this._password = password; + this._docBaseUrl = docBaseUrl; + this.evaluatorOptions = evaluatorOptions; + var stream = new _stream.Stream(data); + this.pdfDocument = new _document.PDFDocument(this, stream); + this._loadedStreamCapability = (0, _util.createPromiseCapability)(); + this._loadedStreamCapability.resolve(stream); + } + _util.Util.inherit(LocalPdfManager, BasePdfManager, { + ensure: function LocalPdfManager_ensure(obj, prop, args) { + return new Promise(function (resolve, reject) { + try { + var value = obj[prop]; + var result; + if (typeof value === 'function') { + result = value.apply(obj, args); + } else { + result = value; + } + resolve(result); + } catch (e) { + reject(e); + } + }); + }, + requestRange: function LocalPdfManager_requestRange(begin, end) { + return Promise.resolve(); + }, + requestLoadedStream: function LocalPdfManager_requestLoadedStream() {}, + onLoadedStream: function LocalPdfManager_onLoadedStream() { + return this._loadedStreamCapability.promise; + }, + terminate: function LocalPdfManager_terminate() {} + }); + return LocalPdfManager; +}(); +var NetworkPdfManager = function NetworkPdfManagerClosure() { + function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) { + this._docId = docId; + this._password = args.password; + this._docBaseUrl = docBaseUrl; + this.msgHandler = args.msgHandler; + this.evaluatorOptions = evaluatorOptions; + var params = { + msgHandler: args.msgHandler, + url: args.url, + length: args.length, + disableAutoFetch: args.disableAutoFetch, + rangeChunkSize: args.rangeChunkSize + }; + this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, params); + this.pdfDocument = new _document.PDFDocument(this, this.streamManager.getStream()); + } + _util.Util.inherit(NetworkPdfManager, BasePdfManager, { + ensure: function NetworkPdfManager_ensure(obj, prop, args) { + var pdfManager = this; + return new Promise(function (resolve, reject) { + function ensureHelper() { + try { + var result; + var value = obj[prop]; + if (typeof value === 'function') { + result = value.apply(obj, args); + } else { + result = value; + } + resolve(result); + } catch (e) { + if (!(e instanceof _util.MissingDataException)) { + reject(e); + return; + } + pdfManager.streamManager.requestRange(e.begin, e.end).then(ensureHelper, reject); + } + } + ensureHelper(); + }); + }, + requestRange: function NetworkPdfManager_requestRange(begin, end) { + return this.streamManager.requestRange(begin, end); + }, + requestLoadedStream: function NetworkPdfManager_requestLoadedStream() { + this.streamManager.requestAllChunks(); + }, + sendProgressiveData: function NetworkPdfManager_sendProgressiveData(chunk) { + this.streamManager.onReceiveData({ chunk: chunk }); + }, + onLoadedStream: function NetworkPdfManager_onLoadedStream() { + return this.streamManager.onLoadedStream(); + }, + terminate: function NetworkPdfManager_terminate() { + this.streamManager.abort(); + } + }); + return NetworkPdfManager; +}(); +exports.LocalPdfManager = LocalPdfManager; +exports.NetworkPdfManager = NetworkPdfManager; + +/***/ }), +/* 33 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PostScriptParser = exports.PostScriptLexer = undefined; + +var _util = __w_pdfjs_require__(0); + +var _primitives = __w_pdfjs_require__(1); + +var PostScriptParser = function PostScriptParserClosure() { + function PostScriptParser(lexer) { + this.lexer = lexer; + this.operators = []; + this.token = null; + this.prev = null; + } + PostScriptParser.prototype = { + nextToken: function PostScriptParser_nextToken() { + this.prev = this.token; + this.token = this.lexer.getToken(); + }, + accept: function PostScriptParser_accept(type) { + if (this.token.type === type) { + this.nextToken(); + return true; + } + return false; + }, + expect: function PostScriptParser_expect(type) { + if (this.accept(type)) { + return true; + } + throw new _util.FormatError('Unexpected symbol: found ' + this.token.type + ' expected ' + type + '.'); + }, + parse: function PostScriptParser_parse() { + this.nextToken(); + this.expect(PostScriptTokenTypes.LBRACE); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + return this.operators; + }, + parseBlock: function PostScriptParser_parseBlock() { + while (true) { + if (this.accept(PostScriptTokenTypes.NUMBER)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.OPERATOR)) { + this.operators.push(this.prev.value); + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + this.parseCondition(); + } else { + return; + } + } + }, + parseCondition: function PostScriptParser_parseCondition() { + var conditionLocation = this.operators.length; + this.operators.push(null, null); + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + if (this.accept(PostScriptTokenTypes.IF)) { + this.operators[conditionLocation] = this.operators.length; + this.operators[conditionLocation + 1] = 'jz'; + } else if (this.accept(PostScriptTokenTypes.LBRACE)) { + var jumpLocation = this.operators.length; + this.operators.push(null, null); + var endOfTrue = this.operators.length; + this.parseBlock(); + this.expect(PostScriptTokenTypes.RBRACE); + this.expect(PostScriptTokenTypes.IFELSE); + this.operators[jumpLocation] = this.operators.length; + this.operators[jumpLocation + 1] = 'j'; + this.operators[conditionLocation] = endOfTrue; + this.operators[conditionLocation + 1] = 'jz'; + } else { + throw new _util.FormatError('PS Function: error parsing conditional.'); + } + } + }; + return PostScriptParser; +}(); +var PostScriptTokenTypes = { + LBRACE: 0, + RBRACE: 1, + NUMBER: 2, + OPERATOR: 3, + IF: 4, + IFELSE: 5 +}; +var PostScriptToken = function PostScriptTokenClosure() { + function PostScriptToken(type, value) { + this.type = type; + this.value = value; + } + var opCache = Object.create(null); + PostScriptToken.getOperator = function PostScriptToken_getOperator(op) { + var opValue = opCache[op]; + if (opValue) { + return opValue; + } + return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op); + }; + PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE, '{'); + PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE, '}'); + PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF'); + PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE, 'IFELSE'); + return PostScriptToken; +}(); +var PostScriptLexer = function PostScriptLexerClosure() { + function PostScriptLexer(stream) { + this.stream = stream; + this.nextChar(); + this.strBuf = []; + } + PostScriptLexer.prototype = { + nextChar: function PostScriptLexer_nextChar() { + return this.currentChar = this.stream.getByte(); + }, + getToken: function PostScriptLexer_getToken() { + var comment = false; + var ch = this.currentChar; + while (true) { + if (ch < 0) { + return _primitives.EOF; + } + if (comment) { + if (ch === 0x0A || ch === 0x0D) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _util.isSpace)(ch)) { + break; + } + ch = this.nextChar(); + } + switch (ch | 0) { + case 0x30: + case 0x31: + case 0x32: + case 0x33: + case 0x34: + case 0x35: + case 0x36: + case 0x37: + case 0x38: + case 0x39: + case 0x2B: + case 0x2D: + case 0x2E: + return new PostScriptToken(PostScriptTokenTypes.NUMBER, this.getNumber()); + case 0x7B: + this.nextChar(); + return PostScriptToken.LBRACE; + case 0x7D: + this.nextChar(); + return PostScriptToken.RBRACE; + } + var strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0 && (ch >= 0x41 && ch <= 0x5A || ch >= 0x61 && ch <= 0x7A)) { + strBuf.push(String.fromCharCode(ch)); + } + var str = strBuf.join(''); + switch (str.toLowerCase()) { + case 'if': + return PostScriptToken.IF; + case 'ifelse': + return PostScriptToken.IFELSE; + default: + return PostScriptToken.getOperator(str); + } + }, + getNumber: function PostScriptLexer_getNumber() { + var ch = this.currentChar; + var strBuf = this.strBuf; + strBuf.length = 0; + strBuf[0] = String.fromCharCode(ch); + while ((ch = this.nextChar()) >= 0) { + if (ch >= 0x30 && ch <= 0x39 || ch === 0x2D || ch === 0x2E) { + strBuf.push(String.fromCharCode(ch)); + } else { + break; + } + } + var value = parseFloat(strBuf.join('')); + if (isNaN(value)) { + throw new _util.FormatError('Invalid floating point number: ' + value); + } + return value; + } + }; + return PostScriptLexer; +}(); +exports.PostScriptLexer = PostScriptLexer; +exports.PostScriptParser = PostScriptParser; + +/***/ }), +/* 34 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Type1Parser = undefined; + +var _util = __w_pdfjs_require__(0); + +var _encodings = __w_pdfjs_require__(4); + +var _stream = __w_pdfjs_require__(2); + +var HINTING_ENABLED = false; +var Type1CharString = function Type1CharStringClosure() { + var COMMAND_MAP = { + 'hstem': [1], + 'vstem': [3], + 'vmoveto': [4], + 'rlineto': [5], + 'hlineto': [6], + 'vlineto': [7], + 'rrcurveto': [8], + 'callsubr': [10], + 'flex': [12, 35], + 'drop': [12, 18], + 'endchar': [14], + 'rmoveto': [21], + 'hmoveto': [22], + 'vhcurveto': [30], + 'hvcurveto': [31] + }; + function Type1CharString() { + this.width = 0; + this.lsb = 0; + this.flexing = false; + this.output = []; + this.stack = []; + } + Type1CharString.prototype = { + convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) { + var count = encoded.length; + var error = false; + var wx, sbx, subrNumber; + for (var i = 0; i < count; i++) { + var value = encoded[i]; + if (value < 32) { + if (value === 12) { + value = (value << 8) + encoded[++i]; + } + switch (value) { + case 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case 3: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case 4: + if (this.flexing) { + if (this.stack.length < 1) { + error = true; + break; + } + var dy = this.stack.pop(); + this.stack.push(0, dy); + break; + } + error = this.executeCommand(1, COMMAND_MAP.vmoveto); + break; + case 5: + error = this.executeCommand(2, COMMAND_MAP.rlineto); + break; + case 6: + error = this.executeCommand(1, COMMAND_MAP.hlineto); + break; + case 7: + error = this.executeCommand(1, COMMAND_MAP.vlineto); + break; + case 8: + error = this.executeCommand(6, COMMAND_MAP.rrcurveto); + break; + case 9: + this.stack = []; + break; + case 10: + if (this.stack.length < 1) { + error = true; + break; + } + subrNumber = this.stack.pop(); + error = this.convert(subrs[subrNumber], subrs, seacAnalysisEnabled); + break; + case 11: + return error; + case 13: + if (this.stack.length < 2) { + error = true; + break; + } + wx = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx); + error = this.executeCommand(2, COMMAND_MAP.hmoveto); + break; + case 14: + this.output.push(COMMAND_MAP.endchar[0]); + break; + case 21: + if (this.flexing) { + break; + } + error = this.executeCommand(2, COMMAND_MAP.rmoveto); + break; + case 22: + if (this.flexing) { + this.stack.push(0); + break; + } + error = this.executeCommand(1, COMMAND_MAP.hmoveto); + break; + case 30: + error = this.executeCommand(4, COMMAND_MAP.vhcurveto); + break; + case 31: + error = this.executeCommand(4, COMMAND_MAP.hvcurveto); + break; + case (12 << 8) + 0: + this.stack = []; + break; + case (12 << 8) + 1: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.vstem); + break; + case (12 << 8) + 2: + if (!HINTING_ENABLED) { + this.stack = []; + break; + } + error = this.executeCommand(2, COMMAND_MAP.hstem); + break; + case (12 << 8) + 6: + if (seacAnalysisEnabled) { + this.seac = this.stack.splice(-4, 4); + error = this.executeCommand(0, COMMAND_MAP.endchar); + } else { + error = this.executeCommand(4, COMMAND_MAP.endchar); + } + break; + case (12 << 8) + 7: + if (this.stack.length < 4) { + error = true; + break; + } + this.stack.pop(); + wx = this.stack.pop(); + var sby = this.stack.pop(); + sbx = this.stack.pop(); + this.lsb = sbx; + this.width = wx; + this.stack.push(wx, sbx, sby); + error = this.executeCommand(3, COMMAND_MAP.rmoveto); + break; + case (12 << 8) + 12: + if (this.stack.length < 2) { + error = true; + break; + } + var num2 = this.stack.pop(); + var num1 = this.stack.pop(); + this.stack.push(num1 / num2); + break; + case (12 << 8) + 16: + if (this.stack.length < 2) { + error = true; + break; + } + subrNumber = this.stack.pop(); + var numArgs = this.stack.pop(); + if (subrNumber === 0 && numArgs === 3) { + var flexArgs = this.stack.splice(this.stack.length - 17, 17); + this.stack.push(flexArgs[2] + flexArgs[0], flexArgs[3] + flexArgs[1], flexArgs[4], flexArgs[5], flexArgs[6], flexArgs[7], flexArgs[8], flexArgs[9], flexArgs[10], flexArgs[11], flexArgs[12], flexArgs[13], flexArgs[14]); + error = this.executeCommand(13, COMMAND_MAP.flex, true); + this.flexing = false; + this.stack.push(flexArgs[15], flexArgs[16]); + } else if (subrNumber === 1 && numArgs === 0) { + this.flexing = true; + } + break; + case (12 << 8) + 17: + break; + case (12 << 8) + 33: + this.stack = []; + break; + default: + (0, _util.warn)('Unknown type 1 charstring command of "' + value + '"'); + break; + } + if (error) { + break; + } + continue; + } else if (value <= 246) { + value = value - 139; + } else if (value <= 250) { + value = (value - 247) * 256 + encoded[++i] + 108; + } else if (value <= 254) { + value = -((value - 251) * 256) - encoded[++i] - 108; + } else { + value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 | (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0; + } + this.stack.push(value); + } + return error; + }, + executeCommand: function executeCommand(howManyArgs, command, keepStack) { + var stackLength = this.stack.length; + if (howManyArgs > stackLength) { + return true; + } + var start = stackLength - howManyArgs; + for (var i = start; i < stackLength; i++) { + var value = this.stack[i]; + if (value === (value | 0)) { + this.output.push(28, value >> 8 & 0xff, value & 0xff); + } else { + value = 65536 * value | 0; + this.output.push(255, value >> 24 & 0xFF, value >> 16 & 0xFF, value >> 8 & 0xFF, value & 0xFF); + } + } + this.output.push.apply(this.output, command); + if (keepStack) { + this.stack.splice(start, howManyArgs); + } else { + this.stack.length = 0; + } + return false; + } + }; + return Type1CharString; +}(); +var Type1Parser = function Type1ParserClosure() { + var EEXEC_ENCRYPT_KEY = 55665; + var CHAR_STRS_ENCRYPT_KEY = 4330; + function isHexDigit(code) { + return code >= 48 && code <= 57 || code >= 65 && code <= 70 || code >= 97 && code <= 102; + } + function decrypt(data, key, discardNumber) { + if (discardNumber >= data.length) { + return new Uint8Array(0); + } + var r = key | 0, + c1 = 52845, + c2 = 22719, + i, + j; + for (i = 0; i < discardNumber; i++) { + r = (data[i] + r) * c1 + c2 & (1 << 16) - 1; + } + var count = data.length - discardNumber; + var decrypted = new Uint8Array(count); + for (i = discardNumber, j = 0; j < count; i++, j++) { + var value = data[i]; + decrypted[j] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + return decrypted; + } + function decryptAscii(data, key, discardNumber) { + var r = key | 0, + c1 = 52845, + c2 = 22719; + var count = data.length, + maybeLength = count >>> 1; + var decrypted = new Uint8Array(maybeLength); + var i, j; + for (i = 0, j = 0; i < count; i++) { + var digit1 = data[i]; + if (!isHexDigit(digit1)) { + continue; + } + i++; + var digit2; + while (i < count && !isHexDigit(digit2 = data[i])) { + i++; + } + if (i < count) { + var value = parseInt(String.fromCharCode(digit1, digit2), 16); + decrypted[j++] = value ^ r >> 8; + r = (value + r) * c1 + c2 & (1 << 16) - 1; + } + } + return Array.prototype.slice.call(decrypted, discardNumber, j); + } + function isSpecial(c) { + return c === 0x2F || c === 0x5B || c === 0x5D || c === 0x7B || c === 0x7D || c === 0x28 || c === 0x29; + } + function Type1Parser(stream, encrypted, seacAnalysisEnabled) { + if (encrypted) { + var data = stream.getBytes(); + var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3])); + stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, EEXEC_ENCRYPT_KEY, 4)); + } + this.seacAnalysisEnabled = !!seacAnalysisEnabled; + this.stream = stream; + this.nextChar(); + } + Type1Parser.prototype = { + readNumberArray: function Type1Parser_readNumberArray() { + this.getToken(); + var array = []; + while (true) { + var token = this.getToken(); + if (token === null || token === ']' || token === '}') { + break; + } + array.push(parseFloat(token || 0)); + } + return array; + }, + readNumber: function Type1Parser_readNumber() { + var token = this.getToken(); + return parseFloat(token || 0); + }, + readInt: function Type1Parser_readInt() { + var token = this.getToken(); + return parseInt(token || 0, 10) | 0; + }, + readBoolean: function Type1Parser_readBoolean() { + var token = this.getToken(); + return token === 'true' ? 1 : 0; + }, + nextChar: function Type1_nextChar() { + return this.currentChar = this.stream.getByte(); + }, + getToken: function Type1Parser_getToken() { + var comment = false; + var ch = this.currentChar; + while (true) { + if (ch === -1) { + return null; + } + if (comment) { + if (ch === 0x0A || ch === 0x0D) { + comment = false; + } + } else if (ch === 0x25) { + comment = true; + } else if (!(0, _util.isSpace)(ch)) { + break; + } + ch = this.nextChar(); + } + if (isSpecial(ch)) { + this.nextChar(); + return String.fromCharCode(ch); + } + var token = ''; + do { + token += String.fromCharCode(ch); + ch = this.nextChar(); + } while (ch >= 0 && !(0, _util.isSpace)(ch) && !isSpecial(ch)); + return token; + }, + extractFontProgram: function Type1Parser_extractFontProgram() { + var stream = this.stream; + var subrs = [], + charstrings = []; + var privateData = Object.create(null); + privateData['lenIV'] = 4; + var program = { + subrs: [], + charstrings: [], + properties: { 'privateData': privateData } + }; + var token, length, data, lenIV, encoded; + while ((token = this.getToken()) !== null) { + if (token !== '/') { + continue; + } + token = this.getToken(); + switch (token) { + case 'CharStrings': + this.getToken(); + this.getToken(); + this.getToken(); + this.getToken(); + while (true) { + token = this.getToken(); + if (token === null || token === 'end') { + break; + } + if (token !== '/') { + continue; + } + var glyph = this.getToken(); + length = this.readInt(); + this.getToken(); + data = stream.makeSubStream(stream.pos, length); + lenIV = program.properties.privateData['lenIV']; + encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); + stream.skip(length); + this.nextChar(); + token = this.getToken(); + if (token === 'noaccess') { + this.getToken(); + } + charstrings.push({ + glyph: glyph, + encoded: encoded + }); + } + break; + case 'Subrs': + this.readInt(); + this.getToken(); + while ((token = this.getToken()) === 'dup') { + var index = this.readInt(); + length = this.readInt(); + this.getToken(); + data = stream.makeSubStream(stream.pos, length); + lenIV = program.properties.privateData['lenIV']; + encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV); + stream.skip(length); + this.nextChar(); + token = this.getToken(); + if (token === 'noaccess') { + this.getToken(); + } + subrs[index] = encoded; + } + break; + case 'BlueValues': + case 'OtherBlues': + case 'FamilyBlues': + case 'FamilyOtherBlues': + var blueArray = this.readNumberArray(); + if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) { + program.properties.privateData[token] = blueArray; + } + break; + case 'StemSnapH': + case 'StemSnapV': + program.properties.privateData[token] = this.readNumberArray(); + break; + case 'StdHW': + case 'StdVW': + program.properties.privateData[token] = this.readNumberArray()[0]; + break; + case 'BlueShift': + case 'lenIV': + case 'BlueFuzz': + case 'BlueScale': + case 'LanguageGroup': + case 'ExpansionFactor': + program.properties.privateData[token] = this.readNumber(); + break; + case 'ForceBold': + program.properties.privateData[token] = this.readBoolean(); + break; + } + } + for (var i = 0; i < charstrings.length; i++) { + glyph = charstrings[i].glyph; + encoded = charstrings[i].encoded; + var charString = new Type1CharString(); + var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled); + var output = charString.output; + if (error) { + output = [14]; + } + program.charstrings.push({ + glyphName: glyph, + charstring: output, + width: charString.width, + lsb: charString.lsb, + seac: charString.seac + }); + } + return program; + }, + extractFontHeader: function Type1Parser_extractFontHeader(properties) { + var token; + while ((token = this.getToken()) !== null) { + if (token !== '/') { + continue; + } + token = this.getToken(); + switch (token) { + case 'FontMatrix': + var matrix = this.readNumberArray(); + properties.fontMatrix = matrix; + break; + case 'Encoding': + var encodingArg = this.getToken(); + var encoding; + if (!/^\d+$/.test(encodingArg)) { + encoding = (0, _encodings.getEncoding)(encodingArg); + } else { + encoding = []; + var size = parseInt(encodingArg, 10) | 0; + this.getToken(); + for (var j = 0; j < size; j++) { + token = this.getToken(); + while (token !== 'dup' && token !== 'def') { + token = this.getToken(); + if (token === null) { + return; + } + } + if (token === 'def') { + break; + } + var index = this.readInt(); + this.getToken(); + var glyph = this.getToken(); + encoding[index] = glyph; + this.getToken(); + } + } + properties.builtInEncoding = encoding; + break; + case 'FontBBox': + var fontBBox = this.readNumberArray(); + properties.ascent = Math.max(fontBBox[3], fontBBox[1]); + properties.descent = Math.min(fontBBox[1], fontBBox[3]); + properties.ascentScaled = true; + break; + } + } + } + }; + return Type1Parser; +}(); +exports.Type1Parser = Type1Parser; + +/***/ }), +/* 35 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var pdfjsVersion = '1.9.426'; +var pdfjsBuild = '2558a58d'; +var pdfjsCoreWorker = __w_pdfjs_require__(17); +exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler; + +/***/ }), +/* 36 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +if (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked) { + var globalScope = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : false ? undefined : {}; + var userAgent = typeof navigator !== 'undefined' && navigator.userAgent || ''; + var isAndroid = /Android/.test(userAgent); + var isAndroidPre3 = /Android\s[0-2][^\d]/.test(userAgent); + var isAndroidPre5 = /Android\s[0-4][^\d]/.test(userAgent); + var isChrome = userAgent.indexOf('Chrom') >= 0; + var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(userAgent); + var isIOSChrome = userAgent.indexOf('CriOS') >= 0; + var isIE = userAgent.indexOf('Trident') >= 0; + var isIOS = /\b(iPad|iPhone|iPod)(?=;)/.test(userAgent); + var isOpera = userAgent.indexOf('Opera') >= 0; + var isSafari = /Safari\//.test(userAgent) && !/(Chrome\/|Android\s)/.test(userAgent); + var hasDOM = (typeof window === 'undefined' ? 'undefined' : _typeof(window)) === 'object' && (typeof document === 'undefined' ? 'undefined' : _typeof(document)) === 'object'; + if (typeof PDFJS === 'undefined') { + globalScope.PDFJS = {}; + } + PDFJS.compatibilityChecked = true; + (function checkTypedArrayCompatibility() { + if (typeof Uint8Array !== 'undefined') { + if (typeof Uint8Array.prototype.subarray === 'undefined') { + Uint8Array.prototype.subarray = function subarray(start, end) { + return new Uint8Array(this.slice(start, end)); + }; + Float32Array.prototype.subarray = function subarray(start, end) { + return new Float32Array(this.slice(start, end)); + }; + } + if (typeof Float64Array === 'undefined') { + globalScope.Float64Array = Float32Array; + } + return; + } + function subarray(start, end) { + return new TypedArray(this.slice(start, end)); + } + function setArrayOffset(array, offset) { + if (arguments.length < 2) { + offset = 0; + } + for (var i = 0, n = array.length; i < n; ++i, ++offset) { + this[offset] = array[i] & 0xFF; + } + } + function Uint32ArrayView(buffer, length) { + this.buffer = buffer; + this.byteLength = buffer.length; + this.length = length; + ensureUint32ArrayViewProps(this.length); + } + Uint32ArrayView.prototype = Object.create(null); + var uint32ArrayViewSetters = 0; + function createUint32ArrayProp(index) { + return { + get: function get() { + var buffer = this.buffer, + offset = index << 2; + return (buffer[offset] | buffer[offset + 1] << 8 | buffer[offset + 2] << 16 | buffer[offset + 3] << 24) >>> 0; + }, + set: function set(value) { + var buffer = this.buffer, + offset = index << 2; + buffer[offset] = value & 255; + buffer[offset + 1] = value >> 8 & 255; + buffer[offset + 2] = value >> 16 & 255; + buffer[offset + 3] = value >>> 24 & 255; + } + }; + } + function ensureUint32ArrayViewProps(length) { + while (uint32ArrayViewSetters < length) { + Object.defineProperty(Uint32ArrayView.prototype, uint32ArrayViewSetters, createUint32ArrayProp(uint32ArrayViewSetters)); + uint32ArrayViewSetters++; + } + } + function TypedArray(arg1) { + var result, i, n; + if (typeof arg1 === 'number') { + result = []; + for (i = 0; i < arg1; ++i) { + result[i] = 0; + } + } else if ('slice' in arg1) { + result = arg1.slice(0); + } else { + result = []; + for (i = 0, n = arg1.length; i < n; ++i) { + result[i] = arg1[i]; + } + } + result.subarray = subarray; + result.buffer = result; + result.byteLength = result.length; + result.set = setArrayOffset; + if ((typeof arg1 === 'undefined' ? 'undefined' : _typeof(arg1)) === 'object' && arg1.buffer) { + result.buffer = arg1.buffer; + } + return result; + } + globalScope.Uint8Array = TypedArray; + globalScope.Int8Array = TypedArray; + globalScope.Int32Array = TypedArray; + globalScope.Uint16Array = TypedArray; + globalScope.Float32Array = TypedArray; + globalScope.Float64Array = TypedArray; + globalScope.Uint32Array = function () { + if (arguments.length === 3) { + if (arguments[1] !== 0) { + throw new Error('offset !== 0 is not supported'); + } + return new Uint32ArrayView(arguments[0], arguments[2]); + } + return TypedArray.apply(this, arguments); + }; + })(); + (function canvasPixelArrayBuffer() { + if (!hasDOM || !window.CanvasPixelArray) { + return; + } + var cpaProto = window.CanvasPixelArray.prototype; + if ('buffer' in cpaProto) { + return; + } + Object.defineProperty(cpaProto, 'buffer', { + get: function get() { + return this; + }, + + enumerable: false, + configurable: true + }); + Object.defineProperty(cpaProto, 'byteLength', { + get: function get() { + return this.length; + }, + + enumerable: false, + configurable: true + }); + })(); + (function normalizeURLObject() { + if (!globalScope.URL) { + globalScope.URL = globalScope.webkitURL; + } + })(); + (function checkObjectDefinePropertyCompatibility() { + if (typeof Object.defineProperty !== 'undefined') { + var definePropertyPossible = true; + try { + if (hasDOM) { + Object.defineProperty(new Image(), 'id', { value: 'test' }); + } + var Test = function Test() {}; + Test.prototype = { + get id() {} + }; + Object.defineProperty(new Test(), 'id', { + value: '', + configurable: true, + enumerable: true, + writable: false + }); + } catch (e) { + definePropertyPossible = false; + } + if (definePropertyPossible) { + return; + } + } + Object.defineProperty = function objectDefineProperty(obj, name, def) { + delete obj[name]; + if ('get' in def) { + obj.__defineGetter__(name, def['get']); + } + if ('set' in def) { + obj.__defineSetter__(name, def['set']); + } + if ('value' in def) { + obj.__defineSetter__(name, function objectDefinePropertySetter(value) { + this.__defineGetter__(name, function objectDefinePropertyGetter() { + return value; + }); + return value; + }); + obj[name] = def.value; + } + }; + })(); + (function checkXMLHttpRequestResponseCompatibility() { + if (typeof XMLHttpRequest === 'undefined') { + return; + } + var xhrPrototype = XMLHttpRequest.prototype; + var xhr = new XMLHttpRequest(); + if (!('overrideMimeType' in xhr)) { + Object.defineProperty(xhrPrototype, 'overrideMimeType', { + value: function xmlHttpRequestOverrideMimeType(mimeType) {} + }); + } + if ('responseType' in xhr) { + return; + } + Object.defineProperty(xhrPrototype, 'responseType', { + get: function xmlHttpRequestGetResponseType() { + return this._responseType || 'text'; + }, + set: function xmlHttpRequestSetResponseType(value) { + if (value === 'text' || value === 'arraybuffer') { + this._responseType = value; + if (value === 'arraybuffer' && typeof this.overrideMimeType === 'function') { + this.overrideMimeType('text/plain; charset=x-user-defined'); + } + } + } + }); + if (typeof VBArray !== 'undefined') { + Object.defineProperty(xhrPrototype, 'response', { + get: function xmlHttpRequestResponseGet() { + if (this.responseType === 'arraybuffer') { + return new Uint8Array(new VBArray(this.responseBody).toArray()); + } + return this.responseText; + } + }); + return; + } + Object.defineProperty(xhrPrototype, 'response', { + get: function xmlHttpRequestResponseGet() { + if (this.responseType !== 'arraybuffer') { + return this.responseText; + } + var text = this.responseText; + var i, + n = text.length; + var result = new Uint8Array(n); + for (i = 0; i < n; ++i) { + result[i] = text.charCodeAt(i) & 0xFF; + } + return result.buffer; + } + }); + })(); + (function checkWindowBtoaCompatibility() { + if ('btoa' in globalScope) { + return; + } + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + globalScope.btoa = function (chars) { + var buffer = ''; + var i, n; + for (i = 0, n = chars.length; i < n; i += 3) { + var b1 = chars.charCodeAt(i) & 0xFF; + var b2 = chars.charCodeAt(i + 1) & 0xFF; + var b3 = chars.charCodeAt(i + 2) & 0xFF; + var d1 = b1 >> 2, + d2 = (b1 & 3) << 4 | b2 >> 4; + var d3 = i + 1 < n ? (b2 & 0xF) << 2 | b3 >> 6 : 64; + var d4 = i + 2 < n ? b3 & 0x3F : 64; + buffer += digits.charAt(d1) + digits.charAt(d2) + digits.charAt(d3) + digits.charAt(d4); + } + return buffer; + }; + })(); + (function checkWindowAtobCompatibility() { + if ('atob' in globalScope) { + return; + } + var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='; + globalScope.atob = function (input) { + input = input.replace(/=+$/, ''); + if (input.length % 4 === 1) { + throw new Error('bad atob input'); + } + for (var bc = 0, bs, buffer, idx = 0, output = ''; buffer = input.charAt(idx++); ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer, bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0) { + buffer = digits.indexOf(buffer); + } + return output; + }; + })(); + (function checkFunctionPrototypeBindCompatibility() { + if (typeof Function.prototype.bind !== 'undefined') { + return; + } + Function.prototype.bind = function functionPrototypeBind(obj) { + var fn = this, + headArgs = Array.prototype.slice.call(arguments, 1); + var bound = function functionPrototypeBindBound() { + var args = headArgs.concat(Array.prototype.slice.call(arguments)); + return fn.apply(obj, args); + }; + return bound; + }; + })(); + (function checkDatasetProperty() { + if (!hasDOM) { + return; + } + var div = document.createElement('div'); + if ('dataset' in div) { + return; + } + Object.defineProperty(HTMLElement.prototype, 'dataset', { + get: function get() { + if (this._dataset) { + return this._dataset; + } + var dataset = {}; + for (var j = 0, jj = this.attributes.length; j < jj; j++) { + var attribute = this.attributes[j]; + if (attribute.name.substring(0, 5) !== 'data-') { + continue; + } + var key = attribute.name.substring(5).replace(/\-([a-z])/g, function (all, ch) { + return ch.toUpperCase(); + }); + dataset[key] = attribute.value; + } + Object.defineProperty(this, '_dataset', { + value: dataset, + writable: false, + enumerable: false + }); + return dataset; + }, + + enumerable: true + }); + })(); + (function checkClassListProperty() { + function changeList(element, itemName, add, remove) { + var s = element.className || ''; + var list = s.split(/\s+/g); + if (list[0] === '') { + list.shift(); + } + var index = list.indexOf(itemName); + if (index < 0 && add) { + list.push(itemName); + } + if (index >= 0 && remove) { + list.splice(index, 1); + } + element.className = list.join(' '); + return index >= 0; + } + if (!hasDOM) { + return; + } + var div = document.createElement('div'); + if ('classList' in div) { + return; + } + var classListPrototype = { + add: function add(name) { + changeList(this.element, name, true, false); + }, + contains: function contains(name) { + return changeList(this.element, name, false, false); + }, + remove: function remove(name) { + changeList(this.element, name, false, true); + }, + toggle: function toggle(name) { + changeList(this.element, name, true, true); + } + }; + Object.defineProperty(HTMLElement.prototype, 'classList', { + get: function get() { + if (this._classList) { + return this._classList; + } + var classList = Object.create(classListPrototype, { + element: { + value: this, + writable: false, + enumerable: true + } + }); + Object.defineProperty(this, '_classList', { + value: classList, + writable: false, + enumerable: false + }); + return classList; + }, + + enumerable: true + }); + })(); + (function checkWorkerConsoleCompatibility() { + if (typeof importScripts === 'undefined' || 'console' in globalScope) { + return; + } + var consoleTimer = {}; + var workerConsole = { + log: function log() { + var args = Array.prototype.slice.call(arguments); + globalScope.postMessage({ + targetName: 'main', + action: 'console_log', + data: args + }); + }, + error: function error() { + var args = Array.prototype.slice.call(arguments); + globalScope.postMessage({ + targetName: 'main', + action: 'console_error', + data: args + }); + }, + time: function time(name) { + consoleTimer[name] = Date.now(); + }, + timeEnd: function timeEnd(name) { + var time = consoleTimer[name]; + if (!time) { + throw new Error('Unknown timer name ' + name); + } + this.log('Timer:', name, Date.now() - time); + } + }; + globalScope.console = workerConsole; + })(); + (function checkConsoleCompatibility() { + if (!hasDOM) { + return; + } + if (!('console' in window)) { + window.console = { + log: function log() {}, + error: function error() {}, + warn: function warn() {} + }; + return; + } + if (!('bind' in console.log)) { + console.log = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.log); + console.error = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.error); + console.warn = function (fn) { + return function (msg) { + return fn(msg); + }; + }(console.warn); + return; + } + })(); + (function checkOnClickCompatibility() { + function ignoreIfTargetDisabled(event) { + if (isDisabled(event.target)) { + event.stopPropagation(); + } + } + function isDisabled(node) { + return node.disabled || node.parentNode && isDisabled(node.parentNode); + } + if (isOpera) { + document.addEventListener('click', ignoreIfTargetDisabled, true); + } + })(); + (function checkOnBlobSupport() { + if (isIE || isIOSChrome) { + PDFJS.disableCreateObjectURL = true; + } + })(); + (function checkNavigatorLanguage() { + if (typeof navigator === 'undefined') { + return; + } + if ('language' in navigator) { + return; + } + PDFJS.locale = navigator.userLanguage || 'en-US'; + })(); + (function checkRangeRequests() { + if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) { + PDFJS.disableRange = true; + PDFJS.disableStream = true; + } + })(); + (function checkHistoryManipulation() { + if (!hasDOM) { + return; + } + if (!history.pushState || isAndroidPre3) { + PDFJS.disableHistory = true; + } + })(); + (function checkSetPresenceInImageData() { + if (!hasDOM) { + return; + } + if (window.CanvasPixelArray) { + if (typeof window.CanvasPixelArray.prototype.set !== 'function') { + window.CanvasPixelArray.prototype.set = function (arr) { + for (var i = 0, ii = this.length; i < ii; i++) { + this[i] = arr[i]; + } + }; + } + } else { + var polyfill = false, + versionMatch; + if (isChrome) { + versionMatch = userAgent.match(/Chrom(e|ium)\/([0-9]+)\./); + polyfill = versionMatch && parseInt(versionMatch[2]) < 21; + } else if (isAndroid) { + polyfill = isAndroidPre5; + } else if (isSafari) { + versionMatch = userAgent.match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//); + polyfill = versionMatch && parseInt(versionMatch[1]) < 6; + } + if (polyfill) { + var contextPrototype = window.CanvasRenderingContext2D.prototype; + var createImageData = contextPrototype.createImageData; + contextPrototype.createImageData = function (w, h) { + var imageData = createImageData.call(this, w, h); + imageData.data.set = function (arr) { + for (var i = 0, ii = this.length; i < ii; i++) { + this[i] = arr[i]; + } + }; + return imageData; + }; + contextPrototype = null; + } + } + })(); + (function checkRequestAnimationFrame() { + function installFakeAnimationFrameFunctions() { + window.requestAnimationFrame = function (callback) { + return window.setTimeout(callback, 20); + }; + window.cancelAnimationFrame = function (timeoutID) { + window.clearTimeout(timeoutID); + }; + } + if (!hasDOM) { + return; + } + if (isIOS) { + installFakeAnimationFrameFunctions(); + return; + } + if ('requestAnimationFrame' in window) { + return; + } + window.requestAnimationFrame = window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame; + if (window.requestAnimationFrame) { + return; + } + installFakeAnimationFrameFunctions(); + })(); + (function checkCanvasSizeLimitation() { + if (isIOS || isAndroid) { + PDFJS.maxCanvasPixels = 5242880; + } + })(); + (function checkFullscreenSupport() { + if (!hasDOM) { + return; + } + if (isIE && window.parent !== window) { + PDFJS.disableFullscreen = true; + } + })(); + (function checkCurrentScript() { + if (!hasDOM) { + return; + } + if ('currentScript' in document) { + return; + } + Object.defineProperty(document, 'currentScript', { + get: function get() { + var scripts = document.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + }, + + enumerable: true, + configurable: true + }); + })(); + (function checkInputTypeNumberAssign() { + if (!hasDOM) { + return; + } + var el = document.createElement('input'); + try { + el.type = 'number'; + } catch (ex) { + var inputProto = el.constructor.prototype; + var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type'); + Object.defineProperty(inputProto, 'type', { + get: function get() { + return typeProperty.get.call(this); + }, + set: function set(value) { + typeProperty.set.call(this, value === 'number' ? 'text' : value); + }, + + enumerable: true, + configurable: true + }); + } + })(); + (function checkDocumentReadyState() { + if (!hasDOM) { + return; + } + if (!document.attachEvent) { + return; + } + var documentProto = document.constructor.prototype; + var readyStateProto = Object.getOwnPropertyDescriptor(documentProto, 'readyState'); + Object.defineProperty(documentProto, 'readyState', { + get: function get() { + var value = readyStateProto.get.call(this); + return value === 'interactive' ? 'loading' : value; + }, + set: function set(value) { + readyStateProto.set.call(this, value); + }, + + enumerable: true, + configurable: true + }); + })(); + (function checkChildNodeRemove() { + if (!hasDOM) { + return; + } + if (typeof Element.prototype.remove !== 'undefined') { + return; + } + Element.prototype.remove = function () { + if (this.parentNode) { + this.parentNode.removeChild(this); + } + }; + })(); + (function checkNumberIsNaN() { + if (Number.isNaN) { + return; + } + Number.isNaN = function (value) { + return typeof value === 'number' && isNaN(value); + }; + })(); + (function checkNumberIsInteger() { + if (Number.isInteger) { + return; + } + Number.isInteger = function (value) { + return typeof value === 'number' && isFinite(value) && Math.floor(value) === value; + }; + })(); + (function checkPromise() { + if (globalScope.Promise) { + if (typeof globalScope.Promise.all !== 'function') { + globalScope.Promise.all = function (iterable) { + var count = 0, + results = [], + resolve, + reject; + var promise = new globalScope.Promise(function (resolve_, reject_) { + resolve = resolve_; + reject = reject_; + }); + iterable.forEach(function (p, i) { + count++; + p.then(function (result) { + results[i] = result; + count--; + if (count === 0) { + resolve(results); + } + }, reject); + }); + if (count === 0) { + resolve(results); + } + return promise; + }; + } + if (typeof globalScope.Promise.resolve !== 'function') { + globalScope.Promise.resolve = function (value) { + return new globalScope.Promise(function (resolve) { + resolve(value); + }); + }; + } + if (typeof globalScope.Promise.reject !== 'function') { + globalScope.Promise.reject = function (reason) { + return new globalScope.Promise(function (resolve, reject) { + reject(reason); + }); + }; + } + if (typeof globalScope.Promise.prototype.catch !== 'function') { + globalScope.Promise.prototype.catch = function (onReject) { + return globalScope.Promise.prototype.then(undefined, onReject); + }; + } + return; + } + var STATUS_PENDING = 0; + var STATUS_RESOLVED = 1; + var STATUS_REJECTED = 2; + var REJECTION_TIMEOUT = 500; + var HandlerManager = { + handlers: [], + running: false, + unhandledRejections: [], + pendingRejectionCheck: false, + scheduleHandlers: function scheduleHandlers(promise) { + if (promise._status === STATUS_PENDING) { + return; + } + this.handlers = this.handlers.concat(promise._handlers); + promise._handlers = []; + if (this.running) { + return; + } + this.running = true; + setTimeout(this.runHandlers.bind(this), 0); + }, + runHandlers: function runHandlers() { + var RUN_TIMEOUT = 1; + var timeoutAt = Date.now() + RUN_TIMEOUT; + while (this.handlers.length > 0) { + var handler = this.handlers.shift(); + var nextStatus = handler.thisPromise._status; + var nextValue = handler.thisPromise._value; + try { + if (nextStatus === STATUS_RESOLVED) { + if (typeof handler.onResolve === 'function') { + nextValue = handler.onResolve(nextValue); + } + } else if (typeof handler.onReject === 'function') { + nextValue = handler.onReject(nextValue); + nextStatus = STATUS_RESOLVED; + if (handler.thisPromise._unhandledRejection) { + this.removeUnhandeledRejection(handler.thisPromise); + } + } + } catch (ex) { + nextStatus = STATUS_REJECTED; + nextValue = ex; + } + handler.nextPromise._updateStatus(nextStatus, nextValue); + if (Date.now() >= timeoutAt) { + break; + } + } + if (this.handlers.length > 0) { + setTimeout(this.runHandlers.bind(this), 0); + return; + } + this.running = false; + }, + addUnhandledRejection: function addUnhandledRejection(promise) { + this.unhandledRejections.push({ + promise: promise, + time: Date.now() + }); + this.scheduleRejectionCheck(); + }, + removeUnhandeledRejection: function removeUnhandeledRejection(promise) { + promise._unhandledRejection = false; + for (var i = 0; i < this.unhandledRejections.length; i++) { + if (this.unhandledRejections[i].promise === promise) { + this.unhandledRejections.splice(i); + i--; + } + } + }, + scheduleRejectionCheck: function scheduleRejectionCheck() { + var _this = this; + + if (this.pendingRejectionCheck) { + return; + } + this.pendingRejectionCheck = true; + setTimeout(function () { + _this.pendingRejectionCheck = false; + var now = Date.now(); + for (var i = 0; i < _this.unhandledRejections.length; i++) { + if (now - _this.unhandledRejections[i].time > REJECTION_TIMEOUT) { + var unhandled = _this.unhandledRejections[i].promise._value; + var msg = 'Unhandled rejection: ' + unhandled; + if (unhandled.stack) { + msg += '\n' + unhandled.stack; + } + try { + throw new Error(msg); + } catch (_) { + console.warn(msg); + } + _this.unhandledRejections.splice(i); + i--; + } + } + if (_this.unhandledRejections.length) { + _this.scheduleRejectionCheck(); + } + }, REJECTION_TIMEOUT); + } + }; + var Promise = function Promise(resolver) { + this._status = STATUS_PENDING; + this._handlers = []; + try { + resolver.call(this, this._resolve.bind(this), this._reject.bind(this)); + } catch (e) { + this._reject(e); + } + }; + Promise.all = function Promise_all(promises) { + var resolveAll, rejectAll; + var deferred = new Promise(function (resolve, reject) { + resolveAll = resolve; + rejectAll = reject; + }); + var unresolved = promises.length; + var results = []; + if (unresolved === 0) { + resolveAll(results); + return deferred; + } + function reject(reason) { + if (deferred._status === STATUS_REJECTED) { + return; + } + results = []; + rejectAll(reason); + } + for (var i = 0, ii = promises.length; i < ii; ++i) { + var promise = promises[i]; + var resolve = function (i) { + return function (value) { + if (deferred._status === STATUS_REJECTED) { + return; + } + results[i] = value; + unresolved--; + if (unresolved === 0) { + resolveAll(results); + } + }; + }(i); + if (Promise.isPromise(promise)) { + promise.then(resolve, reject); + } else { + resolve(promise); + } + } + return deferred; + }; + Promise.isPromise = function Promise_isPromise(value) { + return value && typeof value.then === 'function'; + }; + Promise.resolve = function Promise_resolve(value) { + return new Promise(function (resolve) { + resolve(value); + }); + }; + Promise.reject = function Promise_reject(reason) { + return new Promise(function (resolve, reject) { + reject(reason); + }); + }; + Promise.prototype = { + _status: null, + _value: null, + _handlers: null, + _unhandledRejection: null, + _updateStatus: function Promise__updateStatus(status, value) { + if (this._status === STATUS_RESOLVED || this._status === STATUS_REJECTED) { + return; + } + if (status === STATUS_RESOLVED && Promise.isPromise(value)) { + value.then(this._updateStatus.bind(this, STATUS_RESOLVED), this._updateStatus.bind(this, STATUS_REJECTED)); + return; + } + this._status = status; + this._value = value; + if (status === STATUS_REJECTED && this._handlers.length === 0) { + this._unhandledRejection = true; + HandlerManager.addUnhandledRejection(this); + } + HandlerManager.scheduleHandlers(this); + }, + _resolve: function Promise_resolve(value) { + this._updateStatus(STATUS_RESOLVED, value); + }, + _reject: function Promise_reject(reason) { + this._updateStatus(STATUS_REJECTED, reason); + }, + then: function Promise_then(onResolve, onReject) { + var nextPromise = new Promise(function (resolve, reject) { + this.resolve = resolve; + this.reject = reject; + }); + this._handlers.push({ + thisPromise: this, + onResolve: onResolve, + onReject: onReject, + nextPromise: nextPromise + }); + HandlerManager.scheduleHandlers(this); + return nextPromise; + }, + catch: function Promise_catch(onReject) { + return this.then(undefined, onReject); + } + }; + globalScope.Promise = Promise; + })(); + (function checkWeakMap() { + if (globalScope.WeakMap) { + return; + } + var id = 0; + function WeakMap() { + this.id = '$weakmap' + id++; + } + WeakMap.prototype = { + has: function has(obj) { + if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) !== 'object' && typeof obj !== 'function' || obj === null) { + return false; + } + return !!Object.getOwnPropertyDescriptor(obj, this.id); + }, + get: function get(obj) { + return this.has(obj) ? obj[this.id] : undefined; + }, + set: function set(obj, value) { + Object.defineProperty(obj, this.id, { + value: value, + enumerable: false, + configurable: true + }); + }, + delete: function _delete(obj) { + delete obj[this.id]; + } + }; + globalScope.WeakMap = WeakMap; + })(); + (function checkURLConstructor() { + var hasWorkingUrl = false; + try { + if (typeof URL === 'function' && _typeof(URL.prototype) === 'object' && 'origin' in URL.prototype) { + var u = new URL('b', 'http://a'); + u.pathname = 'c%20d'; + hasWorkingUrl = u.href === 'http://a/c%20d'; + } + } catch (e) {} + if (hasWorkingUrl) { + return; + } + var relative = Object.create(null); + relative['ftp'] = 21; + relative['file'] = 0; + relative['gopher'] = 70; + relative['http'] = 80; + relative['https'] = 443; + relative['ws'] = 80; + relative['wss'] = 443; + var relativePathDotMapping = Object.create(null); + relativePathDotMapping['%2e'] = '.'; + relativePathDotMapping['.%2e'] = '..'; + relativePathDotMapping['%2e.'] = '..'; + relativePathDotMapping['%2e%2e'] = '..'; + function isRelativeScheme(scheme) { + return relative[scheme] !== undefined; + } + function invalid() { + clear.call(this); + this._isInvalid = true; + } + function IDNAToASCII(h) { + if (h === '') { + invalid.call(this); + } + return h.toLowerCase(); + } + function percentEscape(c) { + var unicode = c.charCodeAt(0); + if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1) { + return c; + } + return encodeURIComponent(c); + } + function percentEscapeQuery(c) { + var unicode = c.charCodeAt(0); + if (unicode > 0x20 && unicode < 0x7F && [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1) { + return c; + } + return encodeURIComponent(c); + } + var EOF, + ALPHA = /[a-zA-Z]/, + ALPHANUMERIC = /[a-zA-Z0-9\+\-\.]/; + function parse(input, stateOverride, base) { + function err(message) { + errors.push(message); + } + var state = stateOverride || 'scheme start', + cursor = 0, + buffer = '', + seenAt = false, + seenBracket = false, + errors = []; + loop: while ((input[cursor - 1] !== EOF || cursor === 0) && !this._isInvalid) { + var c = input[cursor]; + switch (state) { + case 'scheme start': + if (c && ALPHA.test(c)) { + buffer += c.toLowerCase(); + state = 'scheme'; + } else if (!stateOverride) { + buffer = ''; + state = 'no scheme'; + continue; + } else { + err('Invalid scheme.'); + break loop; + } + break; + case 'scheme': + if (c && ALPHANUMERIC.test(c)) { + buffer += c.toLowerCase(); + } else if (c === ':') { + this._scheme = buffer; + buffer = ''; + if (stateOverride) { + break loop; + } + if (isRelativeScheme(this._scheme)) { + this._isRelative = true; + } + if (this._scheme === 'file') { + state = 'relative'; + } else if (this._isRelative && base && base._scheme === this._scheme) { + state = 'relative or authority'; + } else if (this._isRelative) { + state = 'authority first slash'; + } else { + state = 'scheme data'; + } + } else if (!stateOverride) { + buffer = ''; + cursor = 0; + state = 'no scheme'; + continue; + } else if (c === EOF) { + break loop; + } else { + err('Code point not allowed in scheme: ' + c); + break loop; + } + break; + case 'scheme data': + if (c === '?') { + this._query = '?'; + state = 'query'; + } else if (c === '#') { + this._fragment = '#'; + state = 'fragment'; + } else { + if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._schemeData += percentEscape(c); + } + } + break; + case 'no scheme': + if (!base || !isRelativeScheme(base._scheme)) { + err('Missing scheme.'); + invalid.call(this); + } else { + state = 'relative'; + continue; + } + break; + case 'relative or authority': + if (c === '/' && input[cursor + 1] === '/') { + state = 'authority ignore slashes'; + } else { + err('Expected /, got: ' + c); + state = 'relative'; + continue; + } + break; + case 'relative': + this._isRelative = true; + if (this._scheme !== 'file') { + this._scheme = base._scheme; + } + if (c === EOF) { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = base._query; + this._username = base._username; + this._password = base._password; + break loop; + } else if (c === '/' || c === '\\') { + if (c === '\\') { + err('\\ is an invalid code point.'); + } + state = 'relative slash'; + } else if (c === '?') { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = '?'; + this._username = base._username; + this._password = base._password; + state = 'query'; + } else if (c === '#') { + this._host = base._host; + this._port = base._port; + this._path = base._path.slice(); + this._query = base._query; + this._fragment = '#'; + this._username = base._username; + this._password = base._password; + state = 'fragment'; + } else { + var nextC = input[cursor + 1]; + var nextNextC = input[cursor + 2]; + if (this._scheme !== 'file' || !ALPHA.test(c) || nextC !== ':' && nextC !== '|' || nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\' && nextNextC !== '?' && nextNextC !== '#') { + this._host = base._host; + this._port = base._port; + this._username = base._username; + this._password = base._password; + this._path = base._path.slice(); + this._path.pop(); + } + state = 'relative path'; + continue; + } + break; + case 'relative slash': + if (c === '/' || c === '\\') { + if (c === '\\') { + err('\\ is an invalid code point.'); + } + if (this._scheme === 'file') { + state = 'file host'; + } else { + state = 'authority ignore slashes'; + } + } else { + if (this._scheme !== 'file') { + this._host = base._host; + this._port = base._port; + this._username = base._username; + this._password = base._password; + } + state = 'relative path'; + continue; + } + break; + case 'authority first slash': + if (c === '/') { + state = 'authority second slash'; + } else { + err('Expected \'/\', got: ' + c); + state = 'authority ignore slashes'; + continue; + } + break; + case 'authority second slash': + state = 'authority ignore slashes'; + if (c !== '/') { + err('Expected \'/\', got: ' + c); + continue; + } + break; + case 'authority ignore slashes': + if (c !== '/' && c !== '\\') { + state = 'authority'; + continue; + } else { + err('Expected authority, got: ' + c); + } + break; + case 'authority': + if (c === '@') { + if (seenAt) { + err('@ already seen.'); + buffer += '%40'; + } + seenAt = true; + for (var i = 0; i < buffer.length; i++) { + var cp = buffer[i]; + if (cp === '\t' || cp === '\n' || cp === '\r') { + err('Invalid whitespace in authority.'); + continue; + } + if (cp === ':' && this._password === null) { + this._password = ''; + continue; + } + var tempC = percentEscape(cp); + if (this._password !== null) { + this._password += tempC; + } else { + this._username += tempC; + } + } + buffer = ''; + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + cursor -= buffer.length; + buffer = ''; + state = 'host'; + continue; + } else { + buffer += c; + } + break; + case 'file host': + if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + if (buffer.length === 2 && ALPHA.test(buffer[0]) && (buffer[1] === ':' || buffer[1] === '|')) { + state = 'relative path'; + } else if (buffer.length === 0) { + state = 'relative path start'; + } else { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'relative path start'; + } + continue; + } else if (c === '\t' || c === '\n' || c === '\r') { + err('Invalid whitespace in file host.'); + } else { + buffer += c; + } + break; + case 'host': + case 'hostname': + if (c === ':' && !seenBracket) { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'port'; + if (stateOverride === 'hostname') { + break loop; + } + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#') { + this._host = IDNAToASCII.call(this, buffer); + buffer = ''; + state = 'relative path start'; + if (stateOverride) { + break loop; + } + continue; + } else if (c !== '\t' && c !== '\n' && c !== '\r') { + if (c === '[') { + seenBracket = true; + } else if (c === ']') { + seenBracket = false; + } + buffer += c; + } else { + err('Invalid code point in host/hostname: ' + c); + } + break; + case 'port': + if (/[0-9]/.test(c)) { + buffer += c; + } else if (c === EOF || c === '/' || c === '\\' || c === '?' || c === '#' || stateOverride) { + if (buffer !== '') { + var temp = parseInt(buffer, 10); + if (temp !== relative[this._scheme]) { + this._port = temp + ''; + } + buffer = ''; + } + if (stateOverride) { + break loop; + } + state = 'relative path start'; + continue; + } else if (c === '\t' || c === '\n' || c === '\r') { + err('Invalid code point in port: ' + c); + } else { + invalid.call(this); + } + break; + case 'relative path start': + if (c === '\\') { + err('\'\\\' not allowed in path.'); + } + state = 'relative path'; + if (c !== '/' && c !== '\\') { + continue; + } + break; + case 'relative path': + if (c === EOF || c === '/' || c === '\\' || !stateOverride && (c === '?' || c === '#')) { + if (c === '\\') { + err('\\ not allowed in relative path.'); + } + var tmp; + if (tmp = relativePathDotMapping[buffer.toLowerCase()]) { + buffer = tmp; + } + if (buffer === '..') { + this._path.pop(); + if (c !== '/' && c !== '\\') { + this._path.push(''); + } + } else if (buffer === '.' && c !== '/' && c !== '\\') { + this._path.push(''); + } else if (buffer !== '.') { + if (this._scheme === 'file' && this._path.length === 0 && buffer.length === 2 && ALPHA.test(buffer[0]) && buffer[1] === '|') { + buffer = buffer[0] + ':'; + } + this._path.push(buffer); + } + buffer = ''; + if (c === '?') { + this._query = '?'; + state = 'query'; + } else if (c === '#') { + this._fragment = '#'; + state = 'fragment'; + } + } else if (c !== '\t' && c !== '\n' && c !== '\r') { + buffer += percentEscape(c); + } + break; + case 'query': + if (!stateOverride && c === '#') { + this._fragment = '#'; + state = 'fragment'; + } else if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._query += percentEscapeQuery(c); + } + break; + case 'fragment': + if (c !== EOF && c !== '\t' && c !== '\n' && c !== '\r') { + this._fragment += c; + } + break; + } + cursor++; + } + } + function clear() { + this._scheme = ''; + this._schemeData = ''; + this._username = ''; + this._password = null; + this._host = ''; + this._port = ''; + this._path = []; + this._query = ''; + this._fragment = ''; + this._isInvalid = false; + this._isRelative = false; + } + function JURL(url, base) { + if (base !== undefined && !(base instanceof JURL)) { + base = new JURL(String(base)); + } + this._url = url; + clear.call(this); + var input = url.replace(/^[ \t\r\n\f]+|[ \t\r\n\f]+$/g, ''); + parse.call(this, input, null, base); + } + JURL.prototype = { + toString: function toString() { + return this.href; + }, + + get href() { + if (this._isInvalid) { + return this._url; + } + var authority = ''; + if (this._username !== '' || this._password !== null) { + authority = this._username + (this._password !== null ? ':' + this._password : '') + '@'; + } + return this.protocol + (this._isRelative ? '//' + authority + this.host : '') + this.pathname + this._query + this._fragment; + }, + set href(value) { + clear.call(this); + parse.call(this, value); + }, + get protocol() { + return this._scheme + ':'; + }, + set protocol(value) { + if (this._isInvalid) { + return; + } + parse.call(this, value + ':', 'scheme start'); + }, + get host() { + return this._isInvalid ? '' : this._port ? this._host + ':' + this._port : this._host; + }, + set host(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'host'); + }, + get hostname() { + return this._host; + }, + set hostname(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'hostname'); + }, + get port() { + return this._port; + }, + set port(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + parse.call(this, value, 'port'); + }, + get pathname() { + return this._isInvalid ? '' : this._isRelative ? '/' + this._path.join('/') : this._schemeData; + }, + set pathname(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + this._path = []; + parse.call(this, value, 'relative path start'); + }, + get search() { + return this._isInvalid || !this._query || this._query === '?' ? '' : this._query; + }, + set search(value) { + if (this._isInvalid || !this._isRelative) { + return; + } + this._query = '?'; + if (value[0] === '?') { + value = value.slice(1); + } + parse.call(this, value, 'query'); + }, + get hash() { + return this._isInvalid || !this._fragment || this._fragment === '#' ? '' : this._fragment; + }, + set hash(value) { + if (this._isInvalid) { + return; + } + this._fragment = '#'; + if (value[0] === '#') { + value = value.slice(1); + } + parse.call(this, value, 'fragment'); + }, + get origin() { + var host; + if (this._isInvalid || !this._scheme) { + return ''; + } + switch (this._scheme) { + case 'data': + case 'file': + case 'javascript': + case 'mailto': + return 'null'; + case 'blob': + try { + return new JURL(this._schemeData).origin || 'null'; + } catch (_) {} + return 'null'; + } + host = this.host; + if (!host) { + return ''; + } + return this._scheme + '://' + host; + } + }; + var OriginalURL = globalScope.URL; + if (OriginalURL) { + JURL.createObjectURL = function (blob) { + return OriginalURL.createObjectURL.apply(OriginalURL, arguments); + }; + JURL.revokeObjectURL = function (url) { + OriginalURL.revokeObjectURL(url); + }; + } + globalScope.URL = JURL; + })(); +} + +/***/ }), +/* 37 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +var isReadableStreamSupported = false; +if (typeof ReadableStream !== 'undefined') { + try { + new ReadableStream({ + start: function start(controller) { + controller.close(); + } + }); + isReadableStreamSupported = true; + } catch (e) {} +} +if (isReadableStreamSupported) { + exports.ReadableStream = ReadableStream; +} else { + exports.ReadableStream = __w_pdfjs_require__(18).ReadableStream; +} + +/***/ }) +/******/ ]); +}); +//# sourceMappingURL=pdf.worker.js.map diff --git a/public/static/build/pdf.worker.js.map b/public/static/build/pdf.worker.js.map new file mode 100644 index 0000000..4dddc23 --- /dev/null +++ b/public/static/build/pdf.worker.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 709206543ea702ff19cc","webpack:///src/shared/util.js","webpack:///src/core/primitives.js","webpack:///src/core/stream.js","webpack:///src/core/colorspace.js","webpack:///src/core/encodings.js","webpack:///src/core/parser.js","webpack:///src/core/glyphlist.js","webpack:///src/core/function.js","webpack:///src/core/unicode.js","webpack:///src/core/arithmetic_decoder.js","webpack:///src/core/cff_parser.js","webpack:///src/core/chunked_stream.js","webpack:///src/core/crypto.js","webpack:///src/core/evaluator.js","webpack:///src/core/jpx.js","webpack:///src/core/obj.js","webpack:///src/core/standard_fonts.js","webpack:///src/core/worker.js","webpack:///external/streams/streams-lib.js","webpack:///src/core/annotation.js","webpack:///src/core/bidi.js","webpack:///src/core/charsets.js","webpack:///src/core/cmap.js","webpack:///src/core/document.js","webpack:///src/core/font_renderer.js","webpack:///src/core/fonts.js","webpack:///src/core/image.js","webpack:///src/core/jbig2.js","webpack:///src/core/jpg.js","webpack:///src/core/metrics.js","webpack:///src/core/murmurhash3.js","webpack:///src/core/pattern.js","webpack:///src/core/pdf_manager.js","webpack:///src/core/ps_parser.js","webpack:///src/core/type1_parser.js","webpack:///src/pdf.worker.js","webpack:///src/shared/compatibility.js","webpack:///src/shared/streams_polyfill.js"],"names":["getLookupTableFactory","getGlyphsUnicode","t","getDingbatsGlyphsUnicode","exports","getSpecialPUASymbols","mapSpecialUnicodeValues","code","getUnicodeForGlyph","name","glyphsUnicodeMap","unicode","undefined","nameLen","length","hexStr","substr","toUpperCase","parseInt","UnicodeRanges","getUnicodeRangeFor","value","i","ii","range","begin","end","isRTLRangeFor","getNormalizedUnicodes","reverseIfRtl","chars","charsLength","charCodeAt","s"],"mappings":"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S,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS;AAG/C,MAAI,kBAAkB,CAAC,IAAI,WAAW,CACpC,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAC/D,SAAS,SAAS,SAAS,SAAS,SAAS,SA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,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,eAAe,CAAC,GAAG,eACvB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG,cACtB,CAAC,GAAG,cAAc,CAAC,GAAG;AAGxB,MAAI,cAAc,CAChB,CAAC,CAAC,GAAG,CAAC,IACN,CAAC,IAAI,WACL,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAChB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IACpC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IACpC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IACpC,CAAC,IAAI,OAAO,CAAC,IAAI,OACjB,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OAAO,CAAC,IAAI,OACjB,CAAC,IAAI,OAAO,CAAC,IAAI,OACjB,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI,OACL,CAAC,IAAI;AAGP,MAAI,cAAc,CAChB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IACpC,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAAC,GAAG,KAAK,CAAC,GAAG,KACb,CAA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AAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAClC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAClC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAClC,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAClC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IAC5B,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,IA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AI,KACL,CAAC,IAAI,KAAK,CAAC,IAAI,KACf,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,KAC/B,CAA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AAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM;AAEpB,MAAI,IAAI,IAAI,WAAW,CACrB,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM;AAEpB,MAAI,QAAQ,IAAI,WAAW,CACzB,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM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AM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM;AAEpB,MAAI,QAAQ,IAAI,WAAW,CACzB,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAClE,MAAM,MAAM,MAAM;AAEpB,MAAI,SAAS,IAAI,WAAW;AAC5B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;AAC5B,QAAI,IAAI,KAAK;AACX,aAAO,KAAK,KAAK;AADnB,WAEO;AACL,aAAO,KAAM,KAAK,IAAK;AAJG;AAlDmB;AAyDjD,MAAI,MAAM,IAAI,YAAY,CACxB,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,YAAY,YAAY,YAAY,YAAY,YAC5D,YAAY,Y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M;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAK,IAAE,MAAM;AAAI,IAAE,MAAM;AACrE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AACpE,IAAE,MAAM;AAAI,IAAE,MAAM;AAAI,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AACvE,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAC5D,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAC5D,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAC5D,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAC5D,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAAK,IAAE,MAAM;AAC5D,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAClE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAClE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AACnE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AACnE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AACnE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AACnE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AACnE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAClE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACjE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AACpE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AACtD,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAO,IAAE,OAAO;AACtE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AACrE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AACpE,IAAE,OAAO;AAAM,IAAE,OAAO;AAAM,IAAE,OAAO;AAAK,IAAE,OAAO;AAAK,IAAE,OAAO;AACnE,IAAE,OAAO;AAAK,IAAE,OAAO;AAAO,IAAE,OAAO;AAAO,IAAE,OAAO;AACvD,IAAE,OAAO;AAAO,IAAE,OAAO;AAAO,IAAE,OAAO;AAAO,IAAE,OAAO;AACzD,IAAE,OAAO;AAAO,IAAE,OAAO;AAAO,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AACvE,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AACtE,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AAAK,IAAE,QAAQ;AACtE,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAC1D,IAAE,QAAQ;AAAM,IAAE,QAAQ;AAAO,IAAE,QAAQ;AAAO,IAAE,QAAQ;AAC5D,IAAE,QAAQ;AAAO,IAAE,QAAQ;AAAO,IAAE,QAAQ;AAAO,IAAE,QAAQ;AAC7D,I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ACvD,uBAAuB,kBAAkB,aAAa,aACtD,gBAAgB,aAAa,aAAa,aAAa,aACvD,aAAa,aAAa,aAAa,aAAa,aACpD,aAAa,MAAM,MAAM,MAAM,OAAO,OAAO,qBAC7C,sBAAsB,kBAAkB,iBAAiB,aACzD,UAAU,gBAAgB,cAAc,kBAAkB,cAC1D,WAAW,iBAAiB,aAAa,gBAAgB,eACzD,gBAAgB,YAAY,aAAa,gBAAgB,eACzD,eAAe,iBAAiB,gBAAgB,gBAChD,eAAe,iBAAiB,iBAAiB,gBACjD,gBAAgB,eAAe,eAAe,iBAC9C,gBAAgB,gBAAgB,eAAe,iBAC/C,iBAAiB,gBAAgB,gBAAgB,kBACjD,kBAGF;QACE;QACA;QACA,0C;;;;;;;;;;;;;;ACpGK;;AACwC;;AACzB;;AACC;;AAEvB,IAAI,iBAAiB,CAErB,kBACA,mBACA,qBACA,qBAEA,YACA,YACA,QACA,aACA,aACA,QACA,eACA,eACA,eACA,eACA,eACA,gBACA,gBACA,eACA,eACA,SACA,cACA,cACA,SACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,gBACA,eACA,eACA,eACA,eACA,eACA,eACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,kBACA,QACA,QACA,UACA,UACA,aACA,aACA,UACA,UACA,UACA,UACA,aACA,aACA,aACA,aACA,eACA,eACA,SACA,SACA,SACA,cACA,cACA,SACA,YACA,YACA,QACA,QACA,aACA,aACA,WACA,WACA,cACA,cACA,aACA,aACA,SACA,SACA,eACA,eACA,cACA,cACA,KACA,cACA,cACA,cACA,cACA,eACA,eACA,eACA,eACA,eACA,eACA,cACA,cACA,WACA,YACA,aACA,aACA,SACA,eACA,eACA,SACA,eACA,kBACA,kBACA,eACA,eACA,eACA,YACA,SACA,SACA,UACA,UACA,SACA,iBACA,iBACA,kBACA,kBACA,kBACA,kBACA,iBACA,iBACA,gBACA,gBACA,iBACA,iBACA,iBACA,iBACA,gBACA,gBACA,iBACA,oBACA,oBACA,iBACA,kBAC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AS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,SAAS;AACX,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UAAU;AACZ,MAAE,UA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","file":"pdf.worker.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf.worker\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf.worker\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf.worker\"] = factory();\n})(this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __w_pdfjs_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__w_pdfjs_require__.m = modules;\n\n \t// expose the module cache\n \t__w_pdfjs_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__w_pdfjs_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__w_pdfjs_require__.d = function(exports, name, getter) {\n \t\tif(!__w_pdfjs_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__w_pdfjs_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__w_pdfjs_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__w_pdfjs_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __w_pdfjs_require__(__w_pdfjs_require__.s = 35);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 709206543ea702ff19cc","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport './compatibility';\nimport { ReadableStream } from './streams_polyfill';\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n // eslint-disable-next-line no-undef\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self : this;\n\nvar FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst NativeImageDecoding = {\n NONE: 'none',\n DECODE: 'decode',\n DISPLAY: 'display',\n};\n\nvar TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nvar ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nvar AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nvar AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nvar AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nvar AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nvar StreamType = {\n UNKNOWN: 0,\n FLATE: 1,\n LZW: 2,\n DCT: 3,\n JPX: 4,\n JBIG: 5,\n A85: 6,\n AHX: 7,\n CCF: 8,\n RL: 9,\n};\n\nvar FontType = {\n UNKNOWN: 0,\n TYPE1: 1,\n TYPE1C: 2,\n CIDFONTTYPE0: 3,\n CIDFONTTYPE0C: 4,\n TRUETYPE: 5,\n CIDFONTTYPE2: 6,\n TYPE3: 7,\n OPENTYPE: 8,\n TYPE0: 9,\n MMTYPE1: 10,\n};\n\nvar VERBOSITY_LEVELS = {\n errors: 0,\n warnings: 1,\n infos: 5,\n};\n\nvar CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nvar OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nvar verbosity = VERBOSITY_LEVELS.warnings;\n\nfunction setVerbosityLevel(level) {\n verbosity = level;\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VERBOSITY_LEVELS.infos) {\n console.log('Info: ' + msg);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VERBOSITY_LEVELS.warnings) {\n console.log('Warning: ' + msg);\n }\n}\n\n// Deprecated API function -- display regardless of the PDFJS.verbosity setting.\nfunction deprecated(details) {\n console.log('Deprecated API usage: ' + details);\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\nvar UNSUPPORTED_FEATURES = {\n unknown: 'unknown',\n forms: 'forms',\n javaScript: 'javaScript',\n smask: 'smask',\n shadingPattern: 'shadingPattern',\n font: 'font',\n};\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n try {\n var base = new URL(baseUrl);\n if (!base.origin || base.origin === 'null') {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n var other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the whitelisted protocols, e.g. to avoid XSS.\nfunction isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case 'http:':\n case 'https:':\n case 'ftp:':\n case 'mailto:':\n case 'tel:':\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL (utilizing `isValidProtocol`).\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} baseUrl - An absolute URL.\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl) {\n if (!url) {\n return null;\n }\n try {\n var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) { /* `new URL()` will throw on incorrect data. */ }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n Object.defineProperty(obj, prop, { value,\n enumerable: true,\n configurable: true,\n writable: false, });\n return value;\n}\n\nfunction getLookupTableFactory(initializer) {\n var lookup;\n return function () {\n if (initializer) {\n lookup = Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nvar PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nvar PasswordException = (function PasswordExceptionClosure() {\n function PasswordException(msg, code) {\n this.name = 'PasswordException';\n this.message = msg;\n this.code = code;\n }\n\n PasswordException.prototype = new Error();\n PasswordException.constructor = PasswordException;\n\n return PasswordException;\n})();\n\nvar UnknownErrorException = (function UnknownErrorExceptionClosure() {\n function UnknownErrorException(msg, details) {\n this.name = 'UnknownErrorException';\n this.message = msg;\n this.details = details;\n }\n\n UnknownErrorException.prototype = new Error();\n UnknownErrorException.constructor = UnknownErrorException;\n\n return UnknownErrorException;\n})();\n\nvar InvalidPDFException = (function InvalidPDFExceptionClosure() {\n function InvalidPDFException(msg) {\n this.name = 'InvalidPDFException';\n this.message = msg;\n }\n\n InvalidPDFException.prototype = new Error();\n InvalidPDFException.constructor = InvalidPDFException;\n\n return InvalidPDFException;\n})();\n\nvar MissingPDFException = (function MissingPDFExceptionClosure() {\n function MissingPDFException(msg) {\n this.name = 'MissingPDFException';\n this.message = msg;\n }\n\n MissingPDFException.prototype = new Error();\n MissingPDFException.constructor = MissingPDFException;\n\n return MissingPDFException;\n})();\n\nvar UnexpectedResponseException =\n (function UnexpectedResponseExceptionClosure() {\n function UnexpectedResponseException(msg, status) {\n this.name = 'UnexpectedResponseException';\n this.message = msg;\n this.status = status;\n }\n\n UnexpectedResponseException.prototype = new Error();\n UnexpectedResponseException.constructor = UnexpectedResponseException;\n\n return UnexpectedResponseException;\n})();\n\nvar NotImplementedException = (function NotImplementedExceptionClosure() {\n function NotImplementedException(msg) {\n this.message = msg;\n }\n\n NotImplementedException.prototype = new Error();\n NotImplementedException.prototype.name = 'NotImplementedException';\n NotImplementedException.constructor = NotImplementedException;\n\n return NotImplementedException;\n})();\n\nvar MissingDataException = (function MissingDataExceptionClosure() {\n function MissingDataException(begin, end) {\n this.begin = begin;\n this.end = end;\n this.message = 'Missing data [' + begin + ', ' + end + ')';\n }\n\n MissingDataException.prototype = new Error();\n MissingDataException.prototype.name = 'MissingDataException';\n MissingDataException.constructor = MissingDataException;\n\n return MissingDataException;\n})();\n\nvar XRefParseException = (function XRefParseExceptionClosure() {\n function XRefParseException(msg) {\n this.message = msg;\n }\n\n XRefParseException.prototype = new Error();\n XRefParseException.prototype.name = 'XRefParseException';\n XRefParseException.constructor = XRefParseException;\n\n return XRefParseException;\n})();\n\n/**\n * Error caused during parsing PDF data.\n */\nlet FormatError = (function FormatErrorClosure() {\n function FormatError(msg) {\n this.message = msg;\n }\n\n FormatError.prototype = new Error();\n FormatError.prototype.name = 'FormatError';\n FormatError.constructor = FormatError;\n\n return FormatError;\n})();\n\n/**\n * Error used to indicate task cancellation.\n */\nlet AbortException = (function AbortExceptionClosure() {\n function AbortException(msg) {\n this.name = 'AbortException';\n this.message = msg;\n }\n\n AbortException.prototype = new Error();\n AbortException.constructor = AbortException;\n\n return AbortException;\n})();\n\nvar NullCharactersRegExp = /\\x00/g;\n\nfunction removeNullCharacters(str) {\n if (typeof str !== 'string') {\n warn('The argument for removeNullCharacters must be a string.');\n return str;\n }\n return str.replace(NullCharactersRegExp, '');\n}\n\nfunction bytesToString(bytes) {\n assert(bytes !== null && typeof bytes === 'object' &&\n bytes.length !== undefined, 'Invalid argument for bytesToString');\n var length = bytes.length;\n var MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n var strBuf = [];\n for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n var chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join('');\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === 'string', 'Invalid argument for stringToBytes');\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xFF;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined);\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array} arr - the array of the arrays (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n // Shortcut: if first and only item is Uint8Array, return it.\n if (arr.length === 1 && (arr[0] instanceof Uint8Array)) {\n return arr[0];\n }\n var resultLength = 0;\n var i, ii = arr.length;\n var item, itemLength;\n for (i = 0; i < ii; i++) {\n item = arr[i];\n itemLength = arrayByteLength(item);\n resultLength += itemLength;\n }\n var pos = 0;\n var data = new Uint8Array(resultLength);\n for (i = 0; i < ii; i++) {\n item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === 'string') {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,\n (value >> 8) & 0xff, value & 0xff);\n}\n\nfunction log2(x) {\n var n = 1, i = 0;\n while (x > n) {\n n <<= 1;\n i++;\n }\n return i;\n}\n\nfunction readInt8(data, start) {\n return (data[start] << 24) >> 24;\n}\n\nfunction readUint16(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n}\n\nfunction readUint32(data, offset) {\n return ((data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3]) >>> 0;\n}\n\n// Lazy test the endianness of the platform\n// NOTE: This will be 'true' for simulated TypedArrays\nfunction isLittleEndian() {\n var buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n var view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return (view32[0] === 1);\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(''); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nvar IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nvar Util = (function UtilClosure() {\n function Util() {}\n\n var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];\n\n // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids\n // creating many intermediate strings.\n Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {\n rgbBuf[1] = r;\n rgbBuf[3] = g;\n rgbBuf[5] = b;\n return rgbBuf.join('');\n };\n\n // Concatenates two transformation matrices together and returns the result.\n Util.transform = function Util_transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5]\n ];\n };\n\n // For 2d affine transforms\n Util.applyTransform = function Util_applyTransform(p, m) {\n var xt = p[0] * m[0] + p[1] * m[2] + m[4];\n var yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n };\n\n Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {\n var d = m[0] * m[3] - m[1] * m[2];\n var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n };\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n Util.getAxialAlignedBoundingBox =\n function Util_getAxialAlignedBoundingBox(r, m) {\n\n var p1 = Util.applyTransform(r, m);\n var p2 = Util.applyTransform(r.slice(2, 4), m);\n var p3 = Util.applyTransform([r[0], r[3]], m);\n var p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1])\n ];\n };\n\n Util.inverseTransform = function Util_inverseTransform(m) {\n var d = m[0] * m[3] - m[1] * m[2];\n return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];\n };\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n Util.apply3dTransform = function Util_apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2]\n ];\n };\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n Util.singularValueDecompose2dScale =\n function Util_singularValueDecompose2dScale(m) {\n\n var transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n var a = m[0] * transpose[0] + m[1] * transpose[2];\n var b = m[0] * transpose[1] + m[1] * transpose[3];\n var c = m[2] * transpose[0] + m[3] * transpose[2];\n var d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n var first = (a + d) / 2;\n var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;\n var sx = first + second || 1;\n var sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n };\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n Util.normalizeRect = function Util_normalizeRect(rect) {\n var r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n };\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n Util.intersect = function Util_intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),\n orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),\n result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return false;\n }\n\n // Y: first and second points belong to different rectangles?\n if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return false;\n }\n\n return result;\n };\n\n Util.sign = function Util_sign(num) {\n return num < 0 ? -1 : 1;\n };\n\n var ROMAN_NUMBER_MAP = [\n '', 'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',\n '', 'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',\n '', 'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX'\n ];\n /**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {integer} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default is false.\n * @return {string} The resulting Roman number.\n */\n Util.toRoman = function Util_toRoman(number, lowerCase) {\n assert(isInt(number) && number > 0,\n 'The number should be a positive integer.');\n var pos, romanBuf = [];\n // Thousands\n while (number >= 1000) {\n number -= 1000;\n romanBuf.push('M');\n }\n // Hundreds\n pos = (number / 100) | 0;\n number %= 100;\n romanBuf.push(ROMAN_NUMBER_MAP[pos]);\n // Tens\n pos = (number / 10) | 0;\n number %= 10;\n romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);\n // Ones\n romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);\n\n var romanStr = romanBuf.join('');\n return (lowerCase ? romanStr.toLowerCase() : romanStr);\n };\n\n Util.appendToArray = function Util_appendToArray(arr1, arr2) {\n Array.prototype.push.apply(arr1, arr2);\n };\n\n Util.prependToArray = function Util_prependToArray(arr1, arr2) {\n Array.prototype.unshift.apply(arr1, arr2);\n };\n\n Util.extendObj = function extendObj(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj2[key];\n }\n };\n\n Util.getInheritableProperty =\n function Util_getInheritableProperty(dict, name, getArray) {\n while (dict && !dict.has(name)) {\n dict = dict.get('Parent');\n }\n if (!dict) {\n return null;\n }\n return getArray ? dict.getArray(name) : dict.get(name);\n };\n\n Util.inherit = function Util_inherit(sub, base, prototype) {\n sub.prototype = Object.create(base.prototype);\n sub.prototype.constructor = sub;\n for (var prop in prototype) {\n sub.prototype[prop] = prototype[prop];\n }\n };\n\n Util.loadScript = function Util_loadScript(src, callback) {\n var script = document.createElement('script');\n var loaded = false;\n script.setAttribute('src', src);\n if (callback) {\n script.onload = function() {\n if (!loaded) {\n callback();\n }\n loaded = true;\n };\n }\n document.getElementsByTagName('head')[0].appendChild(script);\n };\n\n return Util;\n})();\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n * @class\n * @alias PageViewport\n */\nvar PageViewport = (function PageViewportClosure() {\n /**\n * @constructor\n * @private\n * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.\n * @param scale {number} scale of the viewport.\n * @param rotation {number} rotations of the viewport in degrees.\n * @param offsetX {number} offset X\n * @param offsetY {number} offset Y\n * @param dontFlip {boolean} if true, axis Y will not be flipped.\n */\n function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n var centerX = (viewBox[2] + viewBox[0]) / 2;\n var centerY = (viewBox[3] + viewBox[1]) / 2;\n var rotateA, rotateB, rotateC, rotateD;\n rotation = rotation % 360;\n rotation = rotation < 0 ? rotation + 360 : rotation;\n switch (rotation) {\n case 180:\n rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;\n break;\n case 90:\n rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;\n break;\n case 270:\n rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;\n break;\n // case 0:\n default:\n rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;\n break;\n }\n\n if (dontFlip) {\n rotateC = -rotateC; rotateD = -rotateD;\n }\n\n var offsetCanvasX, offsetCanvasY;\n var width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY\n ];\n\n this.width = width;\n this.height = height;\n this.fontScale = scale;\n }\n PageViewport.prototype = /** @lends PageViewport.prototype */ {\n /**\n * Clones viewport with additional properties.\n * @param args {Object} (optional) If specified, may contain the 'scale' or\n * 'rotation' properties to override the corresponding properties in\n * the cloned viewport.\n * @returns {PageViewport} Cloned viewport.\n */\n clone: function PageViewPort_clone(args) {\n args = args || {};\n var scale = 'scale' in args ? args.scale : this.scale;\n var rotation = 'rotation' in args ? args.rotation : this.rotation;\n return new PageViewport(this.viewBox.slice(), scale, rotation,\n this.offsetX, this.offsetY, args.dontFlip);\n },\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n },\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param rect {Array} xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Contains corresponding coordinates of the rectangle\n * in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle:\n function PageViewport_convertToViewportRectangle(rect) {\n var tl = Util.applyTransform([rect[0], rect[1]], this.transform);\n var br = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [tl[0], tl[1], br[0], br[1]];\n },\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param x {number} X coordinate.\n * @param y {number} Y coordinate.\n * @returns {Object} Object that contains 'x' and 'y' properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n },\n };\n return PageViewport;\n})();\n\nvar PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,\n 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,\n 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,\n 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC\n];\n\nfunction stringToPDFString(str) {\n var i, n = str.length, strBuf = [];\n if (str[0] === '\\xFE' && str[1] === '\\xFF') {\n // UTF16BE BOM\n for (i = 2; i < n; i += 2) {\n strBuf.push(String.fromCharCode(\n (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));\n }\n } else {\n for (i = 0; i < n; ++i) {\n var code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join('');\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isEmptyObj(obj) {\n for (var key in obj) {\n return false;\n }\n return true;\n}\n\nfunction isBool(v) {\n return typeof v === 'boolean';\n}\n\nfunction isInt(v) {\n return typeof v === 'number' && ((v | 0) === v);\n}\n\nfunction isNum(v) {\n return typeof v === 'number';\n}\n\nfunction isString(v) {\n return typeof v === 'string';\n}\n\nfunction isArray(v) {\n return v instanceof Array;\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === 'object' && v !== null && v.byteLength !== undefined;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isSpace(ch) {\n return (ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A);\n}\n\nfunction isNodeJS() {\n // eslint-disable-next-line no-undef\n return typeof process === 'object' && process + '' === '[object process]';\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise} promise - A promise object.\n * @property {function} resolve - Fulfills the promise.\n * @property {function} reject - Rejects the promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @return {PromiseCapability} A capability object contains:\n * - a Promise, resolve and reject methods.\n */\nfunction createPromiseCapability() {\n var capability = {};\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = resolve;\n capability.reject = reject;\n });\n return capability;\n}\n\nvar StatTimer = (function StatTimerClosure() {\n function rpad(str, pad, length) {\n while (str.length < length) {\n str += pad;\n }\n return str;\n }\n function StatTimer() {\n this.started = Object.create(null);\n this.times = [];\n this.enabled = true;\n }\n StatTimer.prototype = {\n time: function StatTimer_time(name) {\n if (!this.enabled) {\n return;\n }\n if (name in this.started) {\n warn('Timer is already running for ' + name);\n }\n this.started[name] = Date.now();\n },\n timeEnd: function StatTimer_timeEnd(name) {\n if (!this.enabled) {\n return;\n }\n if (!(name in this.started)) {\n warn('Timer has not been started for ' + name);\n }\n this.times.push({\n 'name': name,\n 'start': this.started[name],\n 'end': Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n },\n toString: function StatTimer_toString() {\n var i, ii;\n var times = this.times;\n var out = '';\n // Find the longest name for padding purposes.\n var longest = 0;\n for (i = 0, ii = times.length; i < ii; ++i) {\n var name = times[i]['name'];\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (i = 0, ii = times.length; i < ii; ++i) {\n var span = times[i];\n var duration = span.end - span.start;\n out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\\n';\n }\n return out;\n },\n };\n return StatTimer;\n})();\n\nvar createBlob = function createBlob(data, contentType) {\n if (typeof Blob !== 'undefined') {\n return new Blob([data], { type: contentType, });\n }\n throw new Error('The \"Blob\" constructor is not supported.');\n};\n\nvar createObjectURL = (function createObjectURLClosure() {\n // Blob/createObjectURL is not available, falling back to data schema.\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n return function createObjectURL(data, contentType, forceDataSchema = false) {\n if (!forceDataSchema && URL.createObjectURL) {\n var blob = createBlob(data, contentType);\n return URL.createObjectURL(blob);\n }\n\n var buffer = 'data:' + contentType + ';base64,';\n for (var i = 0, ii = data.length; i < ii; i += 3) {\n var b1 = data[i] & 0xFF;\n var b2 = data[i + 1] & 0xFF;\n var b3 = data[i + 2] & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n };\n})();\n\nfunction resolveCall(fn, args, thisArg = null) {\n if (!fn) {\n return Promise.resolve(undefined);\n }\n return new Promise((resolve, reject) => {\n resolve(fn.apply(thisArg, args));\n });\n}\n\nfunction wrapReason(reason) {\n if (typeof reason !== 'object') {\n return reason;\n }\n switch (reason.name) {\n case 'AbortException':\n return new AbortException(reason.message);\n case 'MissingPDFException':\n return new MissingPDFException(reason.message);\n case 'UnexpectedResponseException':\n return new UnexpectedResponseException(reason.message, reason.status);\n default:\n return new UnknownErrorException(reason.message, reason.details);\n }\n}\n\nfunction resolveOrReject(capability, success, reason) {\n if (success) {\n capability.resolve();\n } else {\n capability.reject(reason);\n }\n}\n\nfunction finalize(promise) {\n return Promise.resolve(promise).catch(() => {});\n}\n\nfunction MessageHandler(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.postMessageTransfers = true;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n let callbacksCapabilities = this.callbacksCapabilities = Object.create(null);\n let ah = this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = (event) => {\n let data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n } else if (data.isReply) {\n let callbackId = data.callbackId;\n if (data.callbackId in callbacksCapabilities) {\n let callback = callbacksCapabilities[callbackId];\n delete callbacksCapabilities[callbackId];\n if ('error' in data) {\n callback.reject(wrapReason(data.error));\n } else {\n callback.resolve(data.data);\n }\n } else {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n } else if (data.action in ah) {\n let action = ah[data.action];\n if (data.callbackId) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n Promise.resolve().then(function () {\n return action[0].call(action[1], data.data);\n }).then((result) => {\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n data: result,\n });\n }, (reason) => {\n if (reason instanceof Error) {\n // Serialize error to avoid \"DataCloneError\"\n reason = reason + '';\n }\n comObj.postMessage({\n sourceName,\n targetName,\n isReply: true,\n callbackId: data.callbackId,\n error: reason,\n });\n });\n } else if (data.streamId) {\n this._createStreamSink(data);\n } else {\n action[0].call(action[1], data.data);\n }\n } else {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n };\n comObj.addEventListener('message', this._onComObjOnMessage);\n}\n\nMessageHandler.prototype = {\n on(actionName, handler, scope) {\n var ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = [handler, scope];\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers\n */\n send(actionName, data, transfers) {\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n };\n this.postMessage(message, transfers);\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n var callbackId = this.callbackId++;\n var message = {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n callbackId,\n };\n var capability = createPromiseCapability();\n this.callbacksCapabilities[callbackId] = capability;\n try {\n this.postMessage(message, transfers);\n } catch (e) {\n capability.reject(e);\n }\n return capability.promise;\n },\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {String} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - Optional list of transfers/ArrayBuffers.\n * @return {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n let streamId = this.streamId++;\n let sourceName = this.sourceName;\n let targetName = this.targetName;\n\n return new ReadableStream({\n start: (controller) => {\n let startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n isClosed: false,\n };\n this.postMessage({\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n });\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: (controller) => {\n let pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'pull',\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: (reason) => {\n let cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n this.postMessage({\n sourceName,\n targetName,\n stream: 'cancel',\n reason,\n streamId,\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n }, queueingStrategy);\n },\n\n _createStreamSink(data) {\n let self = this;\n let action = this.actionHandler[data.action];\n let streamId = data.streamId;\n let desiredSize = data.desiredSize;\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let capability = createPromiseCapability();\n\n let sendStreamRequest = ({ stream, chunk, transfers,\n success, reason, }) => {\n this.postMessage({ sourceName, targetName, stream, streamId,\n chunk, success, reason, }, transfers);\n };\n\n let streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n let lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n sendStreamRequest({ stream: 'enqueue', chunk, transfers, });\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n sendStreamRequest({ stream: 'close', });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n sendStreamRequest({ stream: 'error', reason, });\n },\n\n sinkCapability: capability,\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n resolveCall(action[0], [data.data, streamSink], action[1]).then(() => {\n sendStreamRequest({ stream: 'start_complete', success: true, });\n }, (reason) => {\n sendStreamRequest({ stream: 'start_complete', success: false, reason, });\n });\n },\n\n _processStreamMessage(data) {\n let sourceName = this.sourceName;\n let targetName = data.sourceName;\n let streamId = data.streamId;\n\n let sendStreamResponse = ({ stream, success, reason, }) => {\n this.comObj.postMessage({ sourceName, targetName, stream,\n success, streamId, reason, });\n };\n\n let deleteStreamController = () => {\n // Delete streamController only when start, pull and\n // cancel callbacks are resolved, to avoid \"TypeError\".\n Promise.all([\n this.streamControllers[data.streamId].startCall,\n this.streamControllers[data.streamId].pullCall,\n this.streamControllers[data.streamId].cancelCall\n ].map(function(capability) {\n return capability && finalize(capability.promise);\n })).then(() => {\n delete this.streamControllers[data.streamId];\n });\n };\n\n switch (data.stream) {\n case 'start_complete':\n resolveOrReject(this.streamControllers[data.streamId].startCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull_complete':\n resolveOrReject(this.streamControllers[data.streamId].pullCall,\n data.success, wrapReason(data.reason));\n break;\n case 'pull':\n // Ignore any pull after close is called.\n if (!this.streamSinks[data.streamId]) {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n break;\n }\n // Pull increases the desiredSize property of sink,\n // so when it changes from negative to positive,\n // set ready property as resolved promise.\n if (this.streamSinks[data.streamId].desiredSize <= 0 &&\n data.desiredSize > 0) {\n this.streamSinks[data.streamId].sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n this.streamSinks[data.streamId].desiredSize = data.desiredSize;\n resolveCall(this.streamSinks[data.streamId].onPull).then(() => {\n sendStreamResponse({ stream: 'pull_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'pull_complete',\n success: false, reason, });\n });\n break;\n case 'enqueue':\n assert(this.streamControllers[data.streamId],\n 'enqueue should have stream controller');\n if (!this.streamControllers[data.streamId].isClosed) {\n this.streamControllers[data.streamId].controller.enqueue(data.chunk);\n }\n break;\n case 'close':\n assert(this.streamControllers[data.streamId],\n 'close should have stream controller');\n if (this.streamControllers[data.streamId].isClosed) {\n break;\n }\n this.streamControllers[data.streamId].isClosed = true;\n this.streamControllers[data.streamId].controller.close();\n deleteStreamController();\n break;\n case 'error':\n assert(this.streamControllers[data.streamId],\n 'error should have stream controller');\n this.streamControllers[data.streamId].controller.\n error(wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel_complete':\n resolveOrReject(this.streamControllers[data.streamId].cancelCall,\n data.success, wrapReason(data.reason));\n deleteStreamController();\n break;\n case 'cancel':\n if (!this.streamSinks[data.streamId]) {\n break;\n }\n resolveCall(this.streamSinks[data.streamId].onCancel,\n [wrapReason(data.reason)]).then(() => {\n sendStreamResponse({ stream: 'cancel_complete', success: true, });\n }, (reason) => {\n sendStreamResponse({ stream: 'cancel_complete',\n success: false, reason, });\n });\n this.streamSinks[data.streamId].sinkCapability.\n reject(wrapReason(data.reason));\n this.streamSinks[data.streamId].isCancelled = true;\n delete this.streamSinks[data.streamId];\n break;\n default:\n throw new Error('Unexpected stream case');\n }\n },\n\n /**\n * Sends raw message to the comObj.\n * @private\n * @param {Object} message - Raw message.\n * @param transfers List of transfers/ArrayBuffers, or undefined.\n */\n postMessage(message, transfers) {\n if (transfers && this.postMessageTransfers) {\n this.comObj.postMessage(message, transfers);\n } else {\n this.comObj.postMessage(message);\n }\n },\n\n destroy() {\n this.comObj.removeEventListener('message', this._onComObjOnMessage);\n },\n};\n\nfunction loadJpegStream(id, imageUrl, objs) {\n var img = new Image();\n img.onload = (function loadJpegStream_onloadClosure() {\n objs.resolve(id, img);\n });\n img.onerror = (function loadJpegStream_onerrorClosure() {\n objs.resolve(id, null);\n warn('Error during JPEG image loading');\n });\n img.src = imageUrl;\n}\n\nexport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n OPS,\n VERBOSITY_LEVELS,\n UNSUPPORTED_FEATURES,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationType,\n FontType,\n ImageKind,\n CMapCompressionType,\n AbortException,\n InvalidPDFException,\n MessageHandler,\n MissingDataException,\n MissingPDFException,\n NativeImageDecoding,\n NotImplementedException,\n PageViewport,\n PasswordException,\n PasswordResponses,\n StatTimer,\n StreamType,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n Util,\n XRefParseException,\n FormatError,\n arrayByteLength,\n arraysToBytes,\n assert,\n bytesToString,\n createBlob,\n createPromiseCapability,\n createObjectURL,\n deprecated,\n getLookupTableFactory,\n getVerbosityLevel,\n globalScope,\n info,\n isArray,\n isArrayBuffer,\n isBool,\n isEmptyObj,\n isInt,\n isNum,\n isString,\n isSpace,\n isNodeJS,\n isSameOrigin,\n createValidAbsoluteUrl,\n isLittleEndian,\n isEvalSupported,\n loadJpegStream,\n log2,\n readInt8,\n readUint16,\n readUint32,\n removeNullCharacters,\n ReadableStream,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n utf8StringToString,\n warn,\n unreachable,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/shared/util.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* uses XRef */\n\nimport { isArray } from '../shared/util';\n\nvar EOF = {};\n\nvar Name = (function NameClosure() {\n function Name(name) {\n this.name = name;\n }\n\n Name.prototype = {};\n\n var nameCache = Object.create(null);\n\n Name.get = function Name_get(name) {\n var nameValue = nameCache[name];\n return (nameValue ? nameValue : (nameCache[name] = new Name(name)));\n };\n\n return Name;\n})();\n\nvar Cmd = (function CmdClosure() {\n function Cmd(cmd) {\n this.cmd = cmd;\n }\n\n Cmd.prototype = {};\n\n var cmdCache = Object.create(null);\n\n Cmd.get = function Cmd_get(cmd) {\n var cmdValue = cmdCache[cmd];\n return (cmdValue ? cmdValue : (cmdCache[cmd] = new Cmd(cmd)));\n };\n\n return Cmd;\n})();\n\nvar Dict = (function DictClosure() {\n var nonSerializable = function nonSerializableClosure() {\n return nonSerializable; // creating closure on some variable\n };\n\n // xref is optional\n function Dict(xref) {\n // Map should only be used internally, use functions below to access.\n this._map = Object.create(null);\n this.xref = xref;\n this.objId = null;\n this.suppressEncryption = false;\n this.__nonSerializable__ = nonSerializable; // disable cloning of the Dict\n }\n\n Dict.prototype = {\n assignXref: function Dict_assignXref(newXref) {\n this.xref = newXref;\n },\n\n // automatically dereferences Ref objects\n get: function Dict_get(key1, key2, key3) {\n var value;\n var xref = this.xref, suppressEncryption = this.suppressEncryption;\n if (typeof (value = this._map[key1]) !== 'undefined' ||\n key1 in this._map || typeof key2 === 'undefined') {\n return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n }\n if (typeof (value = this._map[key2]) !== 'undefined' ||\n key2 in this._map || typeof key3 === 'undefined') {\n return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n }\n value = this._map[key3] || null;\n return xref ? xref.fetchIfRef(value, suppressEncryption) : value;\n },\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n getAsync: function Dict_getAsync(key1, key2, key3) {\n var value;\n var xref = this.xref, suppressEncryption = this.suppressEncryption;\n if (typeof (value = this._map[key1]) !== 'undefined' ||\n key1 in this._map || typeof key2 === 'undefined') {\n if (xref) {\n return xref.fetchIfRefAsync(value, suppressEncryption);\n }\n return Promise.resolve(value);\n }\n if (typeof (value = this._map[key2]) !== 'undefined' ||\n key2 in this._map || typeof key3 === 'undefined') {\n if (xref) {\n return xref.fetchIfRefAsync(value, suppressEncryption);\n }\n return Promise.resolve(value);\n }\n value = this._map[key3] || null;\n if (xref) {\n return xref.fetchIfRefAsync(value, suppressEncryption);\n }\n return Promise.resolve(value);\n },\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray: function Dict_getArray(key1, key2, key3) {\n var value = this.get(key1, key2, key3);\n var xref = this.xref, suppressEncryption = this.suppressEncryption;\n if (!isArray(value) || !xref) {\n return value;\n }\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (var i = 0, ii = value.length; i < ii; i++) {\n if (!isRef(value[i])) {\n continue;\n }\n value[i] = xref.fetch(value[i], suppressEncryption);\n }\n return value;\n },\n\n // no dereferencing\n getRaw: function Dict_getRaw(key) {\n return this._map[key];\n },\n\n getKeys: function Dict_getKeys() {\n return Object.keys(this._map);\n },\n\n set: function Dict_set(key, value) {\n this._map[key] = value;\n },\n\n has: function Dict_has(key) {\n return key in this._map;\n },\n\n forEach: function Dict_forEach(callback) {\n for (var key in this._map) {\n callback(key, this.get(key));\n }\n },\n };\n\n Dict.empty = new Dict(null);\n\n Dict.merge = function(xref, dictArray) {\n let mergedDict = new Dict(xref);\n\n for (let i = 0, ii = dictArray.length; i < ii; i++) {\n let dict = dictArray[i];\n if (!isDict(dict)) {\n continue;\n }\n for (let keyName in dict._map) {\n if (mergedDict._map[keyName] !== undefined) {\n continue;\n }\n mergedDict._map[keyName] = dict._map[keyName];\n }\n }\n return mergedDict;\n };\n\n return Dict;\n})();\n\nvar Ref = (function RefClosure() {\n function Ref(num, gen) {\n this.num = num;\n this.gen = gen;\n }\n\n Ref.prototype = {\n toString: function Ref_toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n var str = this.num + 'R';\n if (this.gen !== 0) {\n str += this.gen;\n }\n return str;\n },\n };\n\n return Ref;\n})();\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nvar RefSet = (function RefSetClosure() {\n function RefSet() {\n this.dict = Object.create(null);\n }\n\n RefSet.prototype = {\n has: function RefSet_has(ref) {\n return ref.toString() in this.dict;\n },\n\n put: function RefSet_put(ref) {\n this.dict[ref.toString()] = true;\n },\n\n remove: function RefSet_remove(ref) {\n delete this.dict[ref.toString()];\n },\n };\n\n return RefSet;\n})();\n\nvar RefSetCache = (function RefSetCacheClosure() {\n function RefSetCache() {\n this.dict = Object.create(null);\n }\n\n RefSetCache.prototype = {\n get: function RefSetCache_get(ref) {\n return this.dict[ref.toString()];\n },\n\n has: function RefSetCache_has(ref) {\n return ref.toString() in this.dict;\n },\n\n put: function RefSetCache_put(ref, obj) {\n this.dict[ref.toString()] = obj;\n },\n\n putAlias: function RefSetCache_putAlias(ref, aliasRef) {\n this.dict[ref.toString()] = this.get(aliasRef);\n },\n\n forEach: function RefSetCache_forEach(fn, thisArg) {\n for (var i in this.dict) {\n fn.call(thisArg, this.dict[i]);\n }\n },\n\n clear: function RefSetCache_clear() {\n this.dict = Object.create(null);\n },\n };\n\n return RefSetCache;\n})();\n\nfunction isEOF(v) {\n return (v === EOF);\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return v instanceof Dict &&\n (type === undefined || isName(v.get('Type'), type));\n}\n\nfunction isRef(v) {\n return v instanceof Ref;\n}\n\nfunction isRefsEqual(v1, v2) {\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nfunction isStream(v) {\n return typeof v === 'object' && v !== null && v.getBytes !== undefined;\n}\n\nexport {\n EOF,\n Cmd,\n Dict,\n Name,\n Ref,\n RefSet,\n RefSetCache,\n isEOF,\n isCmd,\n isDict,\n isName,\n isRef,\n isRefsEqual,\n isStream,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/primitives.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createObjectURL, FormatError, info, isArray, isInt, isSpace, shadow, Util\n} from '../shared/util';\nimport { Dict, isDict, isStream } from './primitives';\nimport { Jbig2Image } from './jbig2';\nimport { JpegImage } from './jpg';\nimport { JpxImage } from './jpx';\n\nvar Stream = (function StreamClosure() {\n function Stream(arrayBuffer, start, length, dict) {\n this.bytes = (arrayBuffer instanceof Uint8Array ?\n arrayBuffer : new Uint8Array(arrayBuffer));\n this.start = start || 0;\n this.pos = this.start;\n this.end = (start + length) || this.bytes.length;\n this.dict = dict;\n }\n\n // required methods for a stream. if a particular stream does not\n // implement these, an error should be thrown\n Stream.prototype = {\n get length() {\n return this.end - this.start;\n },\n get isEmpty() {\n return this.length === 0;\n },\n getByte: function Stream_getByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.bytes[this.pos++];\n },\n getUint16: function Stream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n },\n getInt32: function Stream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n // returns subarray of original buffer\n // should only be read\n getBytes: function Stream_getBytes(length) {\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n\n if (!length) {\n return bytes.subarray(pos, strEnd);\n }\n var end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.pos = end;\n return bytes.subarray(pos, end);\n },\n peekByte: function Stream_peekByte() {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n },\n peekBytes: function Stream_peekBytes(length) {\n var bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n },\n skip: function Stream_skip(n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n },\n reset: function Stream_reset() {\n this.pos = this.start;\n },\n moveStart: function Stream_moveStart() {\n this.start = this.pos;\n },\n makeSubStream: function Stream_makeSubStream(start, length, dict) {\n return new Stream(this.bytes.buffer, start, length, dict);\n },\n };\n\n return Stream;\n})();\n\nvar StringStream = (function StringStreamClosure() {\n function StringStream(str) {\n var length = str.length;\n var bytes = new Uint8Array(length);\n for (var n = 0; n < length; ++n) {\n bytes[n] = str.charCodeAt(n);\n }\n Stream.call(this, bytes);\n }\n\n StringStream.prototype = Stream.prototype;\n\n return StringStream;\n})();\n\n// super class for the decoding streams\nvar DecodeStream = (function DecodeStreamClosure() {\n // Lots of DecodeStreams are created whose buffers are never used. For these\n // we share a single empty buffer. This is (a) space-efficient and (b) avoids\n // having special cases that would be required if we used |null| for an empty\n // buffer.\n var emptyBuffer = new Uint8Array(0);\n\n function DecodeStream(maybeMinBufferLength) {\n this.pos = 0;\n this.bufferLength = 0;\n this.eof = false;\n this.buffer = emptyBuffer;\n this.minBufferLength = 512;\n if (maybeMinBufferLength) {\n // Compute the first power of two that is as big as maybeMinBufferLength.\n while (this.minBufferLength < maybeMinBufferLength) {\n this.minBufferLength *= 2;\n }\n }\n }\n\n DecodeStream.prototype = {\n get isEmpty() {\n while (!this.eof && this.bufferLength === 0) {\n this.readBlock();\n }\n return this.bufferLength === 0;\n },\n ensureBuffer: function DecodeStream_ensureBuffer(requested) {\n var buffer = this.buffer;\n if (requested <= buffer.byteLength) {\n return buffer;\n }\n var size = this.minBufferLength;\n while (size < requested) {\n size *= 2;\n }\n var buffer2 = new Uint8Array(size);\n buffer2.set(buffer);\n return (this.buffer = buffer2);\n },\n getByte: function DecodeStream_getByte() {\n var pos = this.pos;\n while (this.bufferLength <= pos) {\n if (this.eof) {\n return -1;\n }\n this.readBlock();\n }\n return this.buffer[this.pos++];\n },\n getUint16: function DecodeStream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n },\n getInt32: function DecodeStream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n getBytes: function DecodeStream_getBytes(length) {\n var end, pos = this.pos;\n\n if (length) {\n this.ensureBuffer(pos + length);\n end = pos + length;\n\n while (!this.eof && this.bufferLength < end) {\n this.readBlock();\n }\n var bufEnd = this.bufferLength;\n if (end > bufEnd) {\n end = bufEnd;\n }\n } else {\n while (!this.eof) {\n this.readBlock();\n }\n end = this.bufferLength;\n }\n\n this.pos = end;\n return this.buffer.subarray(pos, end);\n },\n peekByte: function DecodeStream_peekByte() {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n },\n peekBytes: function DecodeStream_peekBytes(length) {\n var bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n },\n makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {\n var end = start + length;\n while (this.bufferLength <= end && !this.eof) {\n this.readBlock();\n }\n return new Stream(this.buffer, start, length, dict);\n },\n skip: function DecodeStream_skip(n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n },\n reset: function DecodeStream_reset() {\n this.pos = 0;\n },\n getBaseStreams: function DecodeStream_getBaseStreams() {\n if (this.str && this.str.getBaseStreams) {\n return this.str.getBaseStreams();\n }\n return [];\n },\n };\n\n return DecodeStream;\n})();\n\nvar StreamsSequenceStream = (function StreamsSequenceStreamClosure() {\n function StreamsSequenceStream(streams) {\n this.streams = streams;\n DecodeStream.call(this, /* maybeLength = */ null);\n }\n\n StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype);\n\n StreamsSequenceStream.prototype.readBlock =\n function streamSequenceStreamReadBlock() {\n\n var streams = this.streams;\n if (streams.length === 0) {\n this.eof = true;\n return;\n }\n var stream = streams.shift();\n var chunk = stream.getBytes();\n var bufferLength = this.bufferLength;\n var newLength = bufferLength + chunk.length;\n var buffer = this.ensureBuffer(newLength);\n buffer.set(chunk, bufferLength);\n this.bufferLength = newLength;\n };\n\n StreamsSequenceStream.prototype.getBaseStreams =\n function StreamsSequenceStream_getBaseStreams() {\n\n var baseStreams = [];\n for (var i = 0, ii = this.streams.length; i < ii; i++) {\n var stream = this.streams[i];\n if (stream.getBaseStreams) {\n Util.appendToArray(baseStreams, stream.getBaseStreams());\n }\n }\n return baseStreams;\n };\n\n return StreamsSequenceStream;\n})();\n\nvar FlateStream = (function FlateStreamClosure() {\n var codeLenCodeMap = new Int32Array([\n 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15\n ]);\n\n var lengthDecode = new Int32Array([\n 0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009, 0x0000a,\n 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017, 0x2001b, 0x2001f,\n 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043, 0x40053, 0x40063, 0x40073,\n 0x50083, 0x500a3, 0x500c3, 0x500e3, 0x00102, 0x00102, 0x00102\n ]);\n\n var distDecode = new Int32Array([\n 0x00001, 0x00002, 0x00003, 0x00004, 0x10005, 0x10007, 0x20009, 0x2000d,\n 0x30011, 0x30019, 0x40021, 0x40031, 0x50041, 0x50061, 0x60081, 0x600c1,\n 0x70101, 0x70181, 0x80201, 0x80301, 0x90401, 0x90601, 0xa0801, 0xa0c01,\n 0xb1001, 0xb1801, 0xc2001, 0xc3001, 0xd4001, 0xd6001\n ]);\n\n var fixedLitCodeTab = [new Int32Array([\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c0,\n 0x70108, 0x80060, 0x80020, 0x900a0, 0x80000, 0x80080, 0x80040, 0x900e0,\n 0x70104, 0x80058, 0x80018, 0x90090, 0x70114, 0x80078, 0x80038, 0x900d0,\n 0x7010c, 0x80068, 0x80028, 0x900b0, 0x80008, 0x80088, 0x80048, 0x900f0,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c8,\n 0x7010a, 0x80064, 0x80024, 0x900a8, 0x80004, 0x80084, 0x80044, 0x900e8,\n 0x70106, 0x8005c, 0x8001c, 0x90098, 0x70116, 0x8007c, 0x8003c, 0x900d8,\n 0x7010e, 0x8006c, 0x8002c, 0x900b8, 0x8000c, 0x8008c, 0x8004c, 0x900f8,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c4,\n 0x70109, 0x80062, 0x80022, 0x900a4, 0x80002, 0x80082, 0x80042, 0x900e4,\n 0x70105, 0x8005a, 0x8001a, 0x90094, 0x70115, 0x8007a, 0x8003a, 0x900d4,\n 0x7010d, 0x8006a, 0x8002a, 0x900b4, 0x8000a, 0x8008a, 0x8004a, 0x900f4,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cc,\n 0x7010b, 0x80066, 0x80026, 0x900ac, 0x80006, 0x80086, 0x80046, 0x900ec,\n 0x70107, 0x8005e, 0x8001e, 0x9009c, 0x70117, 0x8007e, 0x8003e, 0x900dc,\n 0x7010f, 0x8006e, 0x8002e, 0x900bc, 0x8000e, 0x8008e, 0x8004e, 0x900fc,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c2,\n 0x70108, 0x80061, 0x80021, 0x900a2, 0x80001, 0x80081, 0x80041, 0x900e2,\n 0x70104, 0x80059, 0x80019, 0x90092, 0x70114, 0x80079, 0x80039, 0x900d2,\n 0x7010c, 0x80069, 0x80029, 0x900b2, 0x80009, 0x80089, 0x80049, 0x900f2,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900ca,\n 0x7010a, 0x80065, 0x80025, 0x900aa, 0x80005, 0x80085, 0x80045, 0x900ea,\n 0x70106, 0x8005d, 0x8001d, 0x9009a, 0x70116, 0x8007d, 0x8003d, 0x900da,\n 0x7010e, 0x8006d, 0x8002d, 0x900ba, 0x8000d, 0x8008d, 0x8004d, 0x900fa,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c6,\n 0x70109, 0x80063, 0x80023, 0x900a6, 0x80003, 0x80083, 0x80043, 0x900e6,\n 0x70105, 0x8005b, 0x8001b, 0x90096, 0x70115, 0x8007b, 0x8003b, 0x900d6,\n 0x7010d, 0x8006b, 0x8002b, 0x900b6, 0x8000b, 0x8008b, 0x8004b, 0x900f6,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900ce,\n 0x7010b, 0x80067, 0x80027, 0x900ae, 0x80007, 0x80087, 0x80047, 0x900ee,\n 0x70107, 0x8005f, 0x8001f, 0x9009e, 0x70117, 0x8007f, 0x8003f, 0x900de,\n 0x7010f, 0x8006f, 0x8002f, 0x900be, 0x8000f, 0x8008f, 0x8004f, 0x900fe,\n 0x70100, 0x80050, 0x80010, 0x80118, 0x70110, 0x80070, 0x80030, 0x900c1,\n 0x70108, 0x80060, 0x80020, 0x900a1, 0x80000, 0x80080, 0x80040, 0x900e1,\n 0x70104, 0x80058, 0x80018, 0x90091, 0x70114, 0x80078, 0x80038, 0x900d1,\n 0x7010c, 0x80068, 0x80028, 0x900b1, 0x80008, 0x80088, 0x80048, 0x900f1,\n 0x70102, 0x80054, 0x80014, 0x8011c, 0x70112, 0x80074, 0x80034, 0x900c9,\n 0x7010a, 0x80064, 0x80024, 0x900a9, 0x80004, 0x80084, 0x80044, 0x900e9,\n 0x70106, 0x8005c, 0x8001c, 0x90099, 0x70116, 0x8007c, 0x8003c, 0x900d9,\n 0x7010e, 0x8006c, 0x8002c, 0x900b9, 0x8000c, 0x8008c, 0x8004c, 0x900f9,\n 0x70101, 0x80052, 0x80012, 0x8011a, 0x70111, 0x80072, 0x80032, 0x900c5,\n 0x70109, 0x80062, 0x80022, 0x900a5, 0x80002, 0x80082, 0x80042, 0x900e5,\n 0x70105, 0x8005a, 0x8001a, 0x90095, 0x70115, 0x8007a, 0x8003a, 0x900d5,\n 0x7010d, 0x8006a, 0x8002a, 0x900b5, 0x8000a, 0x8008a, 0x8004a, 0x900f5,\n 0x70103, 0x80056, 0x80016, 0x8011e, 0x70113, 0x80076, 0x80036, 0x900cd,\n 0x7010b, 0x80066, 0x80026, 0x900ad, 0x80006, 0x80086, 0x80046, 0x900ed,\n 0x70107, 0x8005e, 0x8001e, 0x9009d, 0x70117, 0x8007e, 0x8003e, 0x900dd,\n 0x7010f, 0x8006e, 0x8002e, 0x900bd, 0x8000e, 0x8008e, 0x8004e, 0x900fd,\n 0x70100, 0x80051, 0x80011, 0x80119, 0x70110, 0x80071, 0x80031, 0x900c3,\n 0x70108, 0x80061, 0x80021, 0x900a3, 0x80001, 0x80081, 0x80041, 0x900e3,\n 0x70104, 0x80059, 0x80019, 0x90093, 0x70114, 0x80079, 0x80039, 0x900d3,\n 0x7010c, 0x80069, 0x80029, 0x900b3, 0x80009, 0x80089, 0x80049, 0x900f3,\n 0x70102, 0x80055, 0x80015, 0x8011d, 0x70112, 0x80075, 0x80035, 0x900cb,\n 0x7010a, 0x80065, 0x80025, 0x900ab, 0x80005, 0x80085, 0x80045, 0x900eb,\n 0x70106, 0x8005d, 0x8001d, 0x9009b, 0x70116, 0x8007d, 0x8003d, 0x900db,\n 0x7010e, 0x8006d, 0x8002d, 0x900bb, 0x8000d, 0x8008d, 0x8004d, 0x900fb,\n 0x70101, 0x80053, 0x80013, 0x8011b, 0x70111, 0x80073, 0x80033, 0x900c7,\n 0x70109, 0x80063, 0x80023, 0x900a7, 0x80003, 0x80083, 0x80043, 0x900e7,\n 0x70105, 0x8005b, 0x8001b, 0x90097, 0x70115, 0x8007b, 0x8003b, 0x900d7,\n 0x7010d, 0x8006b, 0x8002b, 0x900b7, 0x8000b, 0x8008b, 0x8004b, 0x900f7,\n 0x70103, 0x80057, 0x80017, 0x8011f, 0x70113, 0x80077, 0x80037, 0x900cf,\n 0x7010b, 0x80067, 0x80027, 0x900af, 0x80007, 0x80087, 0x80047, 0x900ef,\n 0x70107, 0x8005f, 0x8001f, 0x9009f, 0x70117, 0x8007f, 0x8003f, 0x900df,\n 0x7010f, 0x8006f, 0x8002f, 0x900bf, 0x8000f, 0x8008f, 0x8004f, 0x900ff\n ]), 9];\n\n var fixedDistCodeTab = [new Int32Array([\n 0x50000, 0x50010, 0x50008, 0x50018, 0x50004, 0x50014, 0x5000c, 0x5001c,\n 0x50002, 0x50012, 0x5000a, 0x5001a, 0x50006, 0x50016, 0x5000e, 0x00000,\n 0x50001, 0x50011, 0x50009, 0x50019, 0x50005, 0x50015, 0x5000d, 0x5001d,\n 0x50003, 0x50013, 0x5000b, 0x5001b, 0x50007, 0x50017, 0x5000f, 0x00000\n ]), 5];\n\n function FlateStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n\n var cmf = str.getByte();\n var flg = str.getByte();\n if (cmf === -1 || flg === -1) {\n throw new FormatError(\n `Invalid header in flate stream: ${cmf}, ${flg}`);\n }\n if ((cmf & 0x0f) !== 0x08) {\n throw new FormatError(\n `Unknown compression method in flate stream: ${cmf}, ${flg}`);\n }\n if ((((cmf << 8) + flg) % 31) !== 0) {\n throw new FormatError(`Bad FCHECK in flate stream: ${cmf}, ${flg}`);\n }\n if (flg & 0x20) {\n throw new FormatError(\n `FDICT bit set in flate stream: ${cmf}, ${flg}`);\n }\n\n this.codeSize = 0;\n this.codeBuf = 0;\n\n DecodeStream.call(this, maybeLength);\n }\n\n FlateStream.prototype = Object.create(DecodeStream.prototype);\n\n FlateStream.prototype.getBits = function FlateStream_getBits(bits) {\n var str = this.str;\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n\n var b;\n while (codeSize < bits) {\n if ((b = str.getByte()) === -1) {\n throw new FormatError('Bad encoding in flate stream');\n }\n codeBuf |= b << codeSize;\n codeSize += 8;\n }\n b = codeBuf & ((1 << bits) - 1);\n this.codeBuf = codeBuf >> bits;\n this.codeSize = codeSize -= bits;\n\n return b;\n };\n\n FlateStream.prototype.getCode = function FlateStream_getCode(table) {\n var str = this.str;\n var codes = table[0];\n var maxLen = table[1];\n var codeSize = this.codeSize;\n var codeBuf = this.codeBuf;\n\n var b;\n while (codeSize < maxLen) {\n if ((b = str.getByte()) === -1) {\n // premature end of stream. code might however still be valid.\n // codeSize < codeLen check below guards against incomplete codeVal.\n break;\n }\n codeBuf |= (b << codeSize);\n codeSize += 8;\n }\n var code = codes[codeBuf & ((1 << maxLen) - 1)];\n var codeLen = code >> 16;\n var codeVal = code & 0xffff;\n if (codeLen < 1 || codeSize < codeLen) {\n throw new FormatError('Bad encoding in flate stream');\n }\n this.codeBuf = (codeBuf >> codeLen);\n this.codeSize = (codeSize - codeLen);\n return codeVal;\n };\n\n FlateStream.prototype.generateHuffmanTable =\n function flateStreamGenerateHuffmanTable(lengths) {\n var n = lengths.length;\n\n // find max code length\n var maxLen = 0;\n var i;\n for (i = 0; i < n; ++i) {\n if (lengths[i] > maxLen) {\n maxLen = lengths[i];\n }\n }\n\n // build the table\n var size = 1 << maxLen;\n var codes = new Int32Array(size);\n for (var len = 1, code = 0, skip = 2;\n len <= maxLen;\n ++len, code <<= 1, skip <<= 1) {\n for (var val = 0; val < n; ++val) {\n if (lengths[val] === len) {\n // bit-reverse the code\n var code2 = 0;\n var t = code;\n for (i = 0; i < len; ++i) {\n code2 = (code2 << 1) | (t & 1);\n t >>= 1;\n }\n\n // fill the table entries\n for (i = code2; i < size; i += skip) {\n codes[i] = (len << 16) | val;\n }\n ++code;\n }\n }\n }\n\n return [codes, maxLen];\n };\n\n FlateStream.prototype.readBlock = function FlateStream_readBlock() {\n var buffer, len;\n var str = this.str;\n // read block header\n var hdr = this.getBits(3);\n if (hdr & 1) {\n this.eof = true;\n }\n hdr >>= 1;\n\n if (hdr === 0) { // uncompressed block\n var b;\n\n if ((b = str.getByte()) === -1) {\n throw new FormatError('Bad block header in flate stream');\n }\n var blockLen = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError('Bad block header in flate stream');\n }\n blockLen |= (b << 8);\n if ((b = str.getByte()) === -1) {\n throw new FormatError('Bad block header in flate stream');\n }\n var check = b;\n if ((b = str.getByte()) === -1) {\n throw new FormatError('Bad block header in flate stream');\n }\n check |= (b << 8);\n if (check !== (~blockLen & 0xffff) &&\n (blockLen !== 0 || check !== 0)) {\n // Ignoring error for bad \"empty\" block (see issue 1277)\n throw new FormatError(\n 'Bad uncompressed block length in flate stream');\n }\n\n this.codeBuf = 0;\n this.codeSize = 0;\n\n var bufferLength = this.bufferLength;\n buffer = this.ensureBuffer(bufferLength + blockLen);\n var end = bufferLength + blockLen;\n this.bufferLength = end;\n if (blockLen === 0) {\n if (str.peekByte() === -1) {\n this.eof = true;\n }\n } else {\n for (var n = bufferLength; n < end; ++n) {\n if ((b = str.getByte()) === -1) {\n this.eof = true;\n break;\n }\n buffer[n] = b;\n }\n }\n return;\n }\n\n var litCodeTable;\n var distCodeTable;\n if (hdr === 1) { // compressed block, fixed codes\n litCodeTable = fixedLitCodeTab;\n distCodeTable = fixedDistCodeTab;\n } else if (hdr === 2) { // compressed block, dynamic codes\n var numLitCodes = this.getBits(5) + 257;\n var numDistCodes = this.getBits(5) + 1;\n var numCodeLenCodes = this.getBits(4) + 4;\n\n // build the code lengths code table\n var codeLenCodeLengths = new Uint8Array(codeLenCodeMap.length);\n\n var i;\n for (i = 0; i < numCodeLenCodes; ++i) {\n codeLenCodeLengths[codeLenCodeMap[i]] = this.getBits(3);\n }\n var codeLenCodeTab = this.generateHuffmanTable(codeLenCodeLengths);\n\n // build the literal and distance code tables\n len = 0;\n i = 0;\n var codes = numLitCodes + numDistCodes;\n var codeLengths = new Uint8Array(codes);\n var bitsLength, bitsOffset, what;\n while (i < codes) {\n var code = this.getCode(codeLenCodeTab);\n if (code === 16) {\n bitsLength = 2; bitsOffset = 3; what = len;\n } else if (code === 17) {\n bitsLength = 3; bitsOffset = 3; what = (len = 0);\n } else if (code === 18) {\n bitsLength = 7; bitsOffset = 11; what = (len = 0);\n } else {\n codeLengths[i++] = len = code;\n continue;\n }\n\n var repeatLength = this.getBits(bitsLength) + bitsOffset;\n while (repeatLength-- > 0) {\n codeLengths[i++] = what;\n }\n }\n\n litCodeTable =\n this.generateHuffmanTable(codeLengths.subarray(0, numLitCodes));\n distCodeTable =\n this.generateHuffmanTable(codeLengths.subarray(numLitCodes, codes));\n } else {\n throw new FormatError('Unknown block type in flate stream');\n }\n\n buffer = this.buffer;\n var limit = buffer ? buffer.length : 0;\n var pos = this.bufferLength;\n while (true) {\n var code1 = this.getCode(litCodeTable);\n if (code1 < 256) {\n if (pos + 1 >= limit) {\n buffer = this.ensureBuffer(pos + 1);\n limit = buffer.length;\n }\n buffer[pos++] = code1;\n continue;\n }\n if (code1 === 256) {\n this.bufferLength = pos;\n return;\n }\n code1 -= 257;\n code1 = lengthDecode[code1];\n var code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n len = (code1 & 0xffff) + code2;\n code1 = this.getCode(distCodeTable);\n code1 = distDecode[code1];\n code2 = code1 >> 16;\n if (code2 > 0) {\n code2 = this.getBits(code2);\n }\n var dist = (code1 & 0xffff) + code2;\n if (pos + len >= limit) {\n buffer = this.ensureBuffer(pos + len);\n limit = buffer.length;\n }\n for (var k = 0; k < len; ++k, ++pos) {\n buffer[pos] = buffer[pos - dist];\n }\n }\n };\n\n return FlateStream;\n})();\n\nvar PredictorStream = (function PredictorStreamClosure() {\n function PredictorStream(str, maybeLength, params) {\n if (!isDict(params)) {\n return str; // no prediction\n }\n var predictor = this.predictor = params.get('Predictor') || 1;\n\n if (predictor <= 1) {\n return str; // no prediction\n }\n if (predictor !== 2 && (predictor < 10 || predictor > 15)) {\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n\n if (predictor === 2) {\n this.readBlock = this.readBlockTiff;\n } else {\n this.readBlock = this.readBlockPng;\n }\n\n this.str = str;\n this.dict = str.dict;\n\n var colors = this.colors = params.get('Colors') || 1;\n var bits = this.bits = params.get('BitsPerComponent') || 8;\n var columns = this.columns = params.get('Columns') || 1;\n\n this.pixBytes = (colors * bits + 7) >> 3;\n this.rowBytes = (columns * colors * bits + 7) >> 3;\n\n DecodeStream.call(this, maybeLength);\n return this;\n }\n\n PredictorStream.prototype = Object.create(DecodeStream.prototype);\n\n PredictorStream.prototype.readBlockTiff =\n function predictorStreamReadBlockTiff() {\n var rowBytes = this.rowBytes;\n\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n var bits = this.bits;\n var colors = this.colors;\n\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n var inbuf = 0, outbuf = 0;\n var inbits = 0, outbits = 0;\n var pos = bufferLength;\n var i;\n\n if (bits === 1 && colors === 1) {\n // Optimized version of the loop in the \"else\"-branch\n // for 1 bit-per-component and 1 color TIFF images.\n for (i = 0; i < rowBytes; ++i) {\n var c = rawBytes[i] ^ inbuf;\n c ^= c >> 1;\n c ^= c >> 2;\n c ^= c >> 4;\n inbuf = (c & 1) << 7;\n buffer[pos++] = c;\n }\n } else if (bits === 8) {\n for (i = 0; i < colors; ++i) {\n buffer[pos++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[pos] = buffer[pos - colors] + rawBytes[i];\n pos++;\n }\n } else {\n var compArray = new Uint8Array(colors + 1);\n var bitMask = (1 << bits) - 1;\n var j = 0, k = bufferLength;\n var columns = this.columns;\n for (i = 0; i < columns; ++i) {\n for (var kk = 0; kk < colors; ++kk) {\n if (inbits < bits) {\n inbuf = (inbuf << 8) | (rawBytes[j++] & 0xFF);\n inbits += 8;\n }\n compArray[kk] = (compArray[kk] +\n (inbuf >> (inbits - bits))) & bitMask;\n inbits -= bits;\n outbuf = (outbuf << bits) | compArray[kk];\n outbits += bits;\n if (outbits >= 8) {\n buffer[k++] = (outbuf >> (outbits - 8)) & 0xFF;\n outbits -= 8;\n }\n }\n }\n if (outbits > 0) {\n buffer[k++] = (outbuf << (8 - outbits)) +\n (inbuf & ((1 << (8 - outbits)) - 1));\n }\n }\n this.bufferLength += rowBytes;\n };\n\n PredictorStream.prototype.readBlockPng =\n function predictorStreamReadBlockPng() {\n\n var rowBytes = this.rowBytes;\n var pixBytes = this.pixBytes;\n\n var predictor = this.str.getByte();\n var rawBytes = this.str.getBytes(rowBytes);\n this.eof = !rawBytes.length;\n if (this.eof) {\n return;\n }\n\n var bufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(bufferLength + rowBytes);\n\n var prevRow = buffer.subarray(bufferLength - rowBytes, bufferLength);\n if (prevRow.length === 0) {\n prevRow = new Uint8Array(rowBytes);\n }\n\n var i, j = bufferLength, up, c;\n switch (predictor) {\n case 0:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n break;\n case 1:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (buffer[j - pixBytes] + rawBytes[i]) & 0xFF;\n j++;\n }\n break;\n case 2:\n for (i = 0; i < rowBytes; ++i) {\n buffer[j++] = (prevRow[i] + rawBytes[i]) & 0xFF;\n }\n break;\n case 3:\n for (i = 0; i < pixBytes; ++i) {\n buffer[j++] = (prevRow[i] >> 1) + rawBytes[i];\n }\n for (; i < rowBytes; ++i) {\n buffer[j] = (((prevRow[i] + buffer[j - pixBytes]) >> 1) +\n rawBytes[i]) & 0xFF;\n j++;\n }\n break;\n case 4:\n // we need to save the up left pixels values. the simplest way\n // is to create a new buffer\n for (i = 0; i < pixBytes; ++i) {\n up = prevRow[i];\n c = rawBytes[i];\n buffer[j++] = up + c;\n }\n for (; i < rowBytes; ++i) {\n up = prevRow[i];\n var upLeft = prevRow[i - pixBytes];\n var left = buffer[j - pixBytes];\n var p = left + up - upLeft;\n\n var pa = p - left;\n if (pa < 0) {\n pa = -pa;\n }\n var pb = p - up;\n if (pb < 0) {\n pb = -pb;\n }\n var pc = p - upLeft;\n if (pc < 0) {\n pc = -pc;\n }\n\n c = rawBytes[i];\n if (pa <= pb && pa <= pc) {\n buffer[j++] = left + c;\n } else if (pb <= pc) {\n buffer[j++] = up + c;\n } else {\n buffer[j++] = upLeft + c;\n }\n }\n break;\n default:\n throw new FormatError(`Unsupported predictor: ${predictor}`);\n }\n this.bufferLength += rowBytes;\n };\n\n return PredictorStream;\n})();\n\n/**\n * Depending on the type of JPEG a JpegStream is handled in different ways. For\n * JPEG's that are supported natively such as DeviceGray and DeviceRGB the image\n * data is stored and then loaded by the browser. For unsupported JPEG's we use\n * a library to decode these images and the stream behaves like all the other\n * DecodeStreams.\n */\nvar JpegStream = (function JpegStreamClosure() {\n function JpegStream(stream, maybeLength, dict, params) {\n // Some images may contain 'junk' before the SOI (start-of-image) marker.\n // Note: this seems to mainly affect inline images.\n var ch;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === 0xFF) { // Find the first byte of the SOI marker (0xFFD8).\n stream.skip(-1); // Reset the stream position to the SOI.\n break;\n }\n }\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n DecodeStream.call(this, maybeLength);\n }\n\n JpegStream.prototype = Object.create(DecodeStream.prototype);\n\n Object.defineProperty(JpegStream.prototype, 'bytes', {\n get: function JpegStream_bytes() {\n // If this.maybeLength is null, we'll get the entire stream.\n return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n },\n configurable: true,\n });\n\n JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) {\n if (this.bufferLength) {\n return;\n }\n var jpegImage = new JpegImage();\n\n // Checking if values need to be transformed before conversion.\n var decodeArr = this.dict.getArray('Decode', 'D');\n if (this.forceRGB && isArray(decodeArr)) {\n var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;\n var decodeArrLength = decodeArr.length;\n var transform = new Int32Array(decodeArrLength);\n var transformNeeded = false;\n var maxValue = (1 << bitsPerComponent) - 1;\n for (var i = 0; i < decodeArrLength; i += 2) {\n transform[i] = ((decodeArr[i + 1] - decodeArr[i]) * 256) | 0;\n transform[i + 1] = (decodeArr[i] * maxValue) | 0;\n if (transform[i] !== 256 || transform[i + 1] !== 0) {\n transformNeeded = true;\n }\n }\n if (transformNeeded) {\n jpegImage.decodeTransform = transform;\n }\n }\n // Fetching the 'ColorTransform' entry, if it exists.\n if (isDict(this.params)) {\n var colorTransform = this.params.get('ColorTransform');\n if (isInt(colorTransform)) {\n jpegImage.colorTransform = colorTransform;\n }\n }\n\n jpegImage.parse(this.bytes);\n var data = jpegImage.getData(this.drawWidth, this.drawHeight,\n this.forceRGB);\n this.buffer = data;\n this.bufferLength = data.length;\n this.eof = true;\n };\n\n JpegStream.prototype.getBytes = function JpegStream_getBytes(length) {\n this.ensureBuffer();\n return this.buffer;\n };\n\n JpegStream.prototype.getIR = function JpegStream_getIR(forceDataSchema) {\n return createObjectURL(this.bytes, 'image/jpeg', forceDataSchema);\n };\n\n return JpegStream;\n})();\n\n/**\n * For JPEG 2000's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nvar JpxStream = (function JpxStreamClosure() {\n function JpxStream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n DecodeStream.call(this, maybeLength);\n }\n\n JpxStream.prototype = Object.create(DecodeStream.prototype);\n\n Object.defineProperty(JpxStream.prototype, 'bytes', {\n get: function JpxStream_bytes() {\n // If this.maybeLength is null, we'll get the entire stream.\n return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n },\n configurable: true,\n });\n\n JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) {\n if (this.bufferLength) {\n return;\n }\n\n var jpxImage = new JpxImage();\n jpxImage.parse(this.bytes);\n\n var width = jpxImage.width;\n var height = jpxImage.height;\n var componentsCount = jpxImage.componentsCount;\n var tileCount = jpxImage.tiles.length;\n if (tileCount === 1) {\n this.buffer = jpxImage.tiles[0].items;\n } else {\n var data = new Uint8Array(width * height * componentsCount);\n\n for (var k = 0; k < tileCount; k++) {\n var tileComponents = jpxImage.tiles[k];\n var tileWidth = tileComponents.width;\n var tileHeight = tileComponents.height;\n var tileLeft = tileComponents.left;\n var tileTop = tileComponents.top;\n\n var src = tileComponents.items;\n var srcPosition = 0;\n var dataPosition = (width * tileTop + tileLeft) * componentsCount;\n var imgRowSize = width * componentsCount;\n var tileRowSize = tileWidth * componentsCount;\n\n for (var j = 0; j < tileHeight; j++) {\n var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);\n data.set(rowBytes, dataPosition);\n srcPosition += tileRowSize;\n dataPosition += imgRowSize;\n }\n }\n this.buffer = data;\n }\n this.bufferLength = this.buffer.length;\n this.eof = true;\n };\n\n return JpxStream;\n})();\n\n/**\n * For JBIG2's we use a library to decode these images and\n * the stream behaves like all the other DecodeStreams.\n */\nvar Jbig2Stream = (function Jbig2StreamClosure() {\n function Jbig2Stream(stream, maybeLength, dict, params) {\n this.stream = stream;\n this.maybeLength = maybeLength;\n this.dict = dict;\n this.params = params;\n\n DecodeStream.call(this, maybeLength);\n }\n\n Jbig2Stream.prototype = Object.create(DecodeStream.prototype);\n\n Object.defineProperty(Jbig2Stream.prototype, 'bytes', {\n get: function Jbig2Stream_bytes() {\n // If this.maybeLength is null, we'll get the entire stream.\n return shadow(this, 'bytes', this.stream.getBytes(this.maybeLength));\n },\n configurable: true,\n });\n\n Jbig2Stream.prototype.ensureBuffer = function Jbig2Stream_ensureBuffer(req) {\n if (this.bufferLength) {\n return;\n }\n\n var jbig2Image = new Jbig2Image();\n\n var chunks = [];\n if (isDict(this.params)) {\n var globalsStream = this.params.get('JBIG2Globals');\n if (isStream(globalsStream)) {\n var globals = globalsStream.getBytes();\n chunks.push({ data: globals, start: 0, end: globals.length, });\n }\n }\n chunks.push({ data: this.bytes, start: 0, end: this.bytes.length, });\n var data = jbig2Image.parseChunks(chunks);\n var dataLength = data.length;\n\n // JBIG2 had black as 1 and white as 0, inverting the colors\n for (var i = 0; i < dataLength; i++) {\n data[i] ^= 0xFF;\n }\n\n this.buffer = data;\n this.bufferLength = dataLength;\n this.eof = true;\n };\n\n return Jbig2Stream;\n})();\n\nvar DecryptStream = (function DecryptStreamClosure() {\n function DecryptStream(str, maybeLength, decrypt) {\n this.str = str;\n this.dict = str.dict;\n this.decrypt = decrypt;\n this.nextChunk = null;\n this.initialized = false;\n\n DecodeStream.call(this, maybeLength);\n }\n\n var chunkSize = 512;\n\n DecryptStream.prototype = Object.create(DecodeStream.prototype);\n\n DecryptStream.prototype.readBlock = function DecryptStream_readBlock() {\n var chunk;\n if (this.initialized) {\n chunk = this.nextChunk;\n } else {\n chunk = this.str.getBytes(chunkSize);\n this.initialized = true;\n }\n if (!chunk || chunk.length === 0) {\n this.eof = true;\n return;\n }\n this.nextChunk = this.str.getBytes(chunkSize);\n var hasMoreData = this.nextChunk && this.nextChunk.length > 0;\n\n var decrypt = this.decrypt;\n chunk = decrypt(chunk, !hasMoreData);\n\n var bufferLength = this.bufferLength;\n var i, n = chunk.length;\n var buffer = this.ensureBuffer(bufferLength + n);\n for (i = 0; i < n; i++) {\n buffer[bufferLength++] = chunk[i];\n }\n this.bufferLength = bufferLength;\n };\n\n return DecryptStream;\n})();\n\nvar Ascii85Stream = (function Ascii85StreamClosure() {\n function Ascii85Stream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n this.input = new Uint8Array(5);\n\n // Most streams increase in size when decoded, but Ascii85 streams\n // typically shrink by ~20%.\n if (maybeLength) {\n maybeLength = 0.8 * maybeLength;\n }\n DecodeStream.call(this, maybeLength);\n }\n\n Ascii85Stream.prototype = Object.create(DecodeStream.prototype);\n\n Ascii85Stream.prototype.readBlock = function Ascii85Stream_readBlock() {\n var TILDA_CHAR = 0x7E; // '~'\n var Z_LOWER_CHAR = 0x7A; // 'z'\n var EOF = -1;\n\n var str = this.str;\n\n var c = str.getByte();\n while (isSpace(c)) {\n c = str.getByte();\n }\n\n if (c === EOF || c === TILDA_CHAR) {\n this.eof = true;\n return;\n }\n\n var bufferLength = this.bufferLength, buffer;\n var i;\n\n // special code for z\n if (c === Z_LOWER_CHAR) {\n buffer = this.ensureBuffer(bufferLength + 4);\n for (i = 0; i < 4; ++i) {\n buffer[bufferLength + i] = 0;\n }\n this.bufferLength += 4;\n } else {\n var input = this.input;\n input[0] = c;\n for (i = 1; i < 5; ++i) {\n c = str.getByte();\n while (isSpace(c)) {\n c = str.getByte();\n }\n\n input[i] = c;\n\n if (c === EOF || c === TILDA_CHAR) {\n break;\n }\n }\n buffer = this.ensureBuffer(bufferLength + i - 1);\n this.bufferLength += i - 1;\n\n // partial ending;\n if (i < 5) {\n for (; i < 5; ++i) {\n input[i] = 0x21 + 84;\n }\n this.eof = true;\n }\n var t = 0;\n for (i = 0; i < 5; ++i) {\n t = t * 85 + (input[i] - 0x21);\n }\n\n for (i = 3; i >= 0; --i) {\n buffer[bufferLength + i] = t & 0xFF;\n t >>= 8;\n }\n }\n };\n\n return Ascii85Stream;\n})();\n\nvar AsciiHexStream = (function AsciiHexStreamClosure() {\n function AsciiHexStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n\n this.firstDigit = -1;\n\n // Most streams increase in size when decoded, but AsciiHex streams shrink\n // by 50%.\n if (maybeLength) {\n maybeLength = 0.5 * maybeLength;\n }\n DecodeStream.call(this, maybeLength);\n }\n\n AsciiHexStream.prototype = Object.create(DecodeStream.prototype);\n\n AsciiHexStream.prototype.readBlock = function AsciiHexStream_readBlock() {\n var UPSTREAM_BLOCK_SIZE = 8000;\n var bytes = this.str.getBytes(UPSTREAM_BLOCK_SIZE);\n if (!bytes.length) {\n this.eof = true;\n return;\n }\n\n var maxDecodeLength = (bytes.length + 1) >> 1;\n var buffer = this.ensureBuffer(this.bufferLength + maxDecodeLength);\n var bufferLength = this.bufferLength;\n\n var firstDigit = this.firstDigit;\n for (var i = 0, ii = bytes.length; i < ii; i++) {\n var ch = bytes[i], digit;\n if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'\n digit = ch & 0x0F;\n } else if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n // 'A'-'Z', 'a'-'z'\n digit = (ch & 0x0F) + 9;\n } else if (ch === 0x3E) { // '>'\n this.eof = true;\n break;\n } else { // probably whitespace\n continue; // ignoring\n }\n if (firstDigit < 0) {\n firstDigit = digit;\n } else {\n buffer[bufferLength++] = (firstDigit << 4) | digit;\n firstDigit = -1;\n }\n }\n if (firstDigit >= 0 && this.eof) {\n // incomplete byte\n buffer[bufferLength++] = (firstDigit << 4);\n firstDigit = -1;\n }\n this.firstDigit = firstDigit;\n this.bufferLength = bufferLength;\n };\n\n return AsciiHexStream;\n})();\n\nvar RunLengthStream = (function RunLengthStreamClosure() {\n function RunLengthStream(str, maybeLength) {\n this.str = str;\n this.dict = str.dict;\n\n DecodeStream.call(this, maybeLength);\n }\n\n RunLengthStream.prototype = Object.create(DecodeStream.prototype);\n\n RunLengthStream.prototype.readBlock = function RunLengthStream_readBlock() {\n // The repeatHeader has following format. The first byte defines type of run\n // and amount of bytes to repeat/copy: n = 0 through 127 - copy next n bytes\n // (in addition to the second byte from the header), n = 129 through 255 -\n // duplicate the second byte from the header (257 - n) times, n = 128 - end.\n var repeatHeader = this.str.getBytes(2);\n if (!repeatHeader || repeatHeader.length < 2 || repeatHeader[0] === 128) {\n this.eof = true;\n return;\n }\n\n var buffer;\n var bufferLength = this.bufferLength;\n var n = repeatHeader[0];\n if (n < 128) {\n // copy n bytes\n buffer = this.ensureBuffer(bufferLength + n + 1);\n buffer[bufferLength++] = repeatHeader[1];\n if (n > 0) {\n var source = this.str.getBytes(n);\n buffer.set(source, bufferLength);\n bufferLength += n;\n }\n } else {\n n = 257 - n;\n var b = repeatHeader[1];\n buffer = this.ensureBuffer(bufferLength + n + 1);\n for (var i = 0; i < n; i++) {\n buffer[bufferLength++] = b;\n }\n }\n this.bufferLength = bufferLength;\n };\n\n return RunLengthStream;\n})();\n\nvar CCITTFaxStream = (function CCITTFaxStreamClosure() {\n\n var ccittEOL = -2;\n var ccittEOF = -1;\n var twoDimPass = 0;\n var twoDimHoriz = 1;\n var twoDimVert0 = 2;\n var twoDimVertR1 = 3;\n var twoDimVertL1 = 4;\n var twoDimVertR2 = 5;\n var twoDimVertL2 = 6;\n var twoDimVertR3 = 7;\n var twoDimVertL3 = 8;\n\n var twoDimTable = [\n [-1, -1], [-1, -1], // 000000x\n [7, twoDimVertL3], // 0000010\n [7, twoDimVertR3], // 0000011\n [6, twoDimVertL2], [6, twoDimVertL2], // 000010x\n [6, twoDimVertR2], [6, twoDimVertR2], // 000011x\n [4, twoDimPass], [4, twoDimPass], // 0001xxx\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [4, twoDimPass], [4, twoDimPass],\n [3, twoDimHoriz], [3, twoDimHoriz], // 001xxxx\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimHoriz], [3, twoDimHoriz],\n [3, twoDimVertL1], [3, twoDimVertL1], // 010xxxx\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertL1], [3, twoDimVertL1],\n [3, twoDimVertR1], [3, twoDimVertR1], // 011xxxx\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [3, twoDimVertR1], [3, twoDimVertR1],\n [1, twoDimVert0], [1, twoDimVert0], // 1xxxxxx\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0],\n [1, twoDimVert0], [1, twoDimVert0]\n ];\n\n var whiteTable1 = [\n [-1, -1], // 00000\n [12, ccittEOL], // 00001\n [-1, -1], [-1, -1], // 0001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 011xx\n [11, 1792], [11, 1792], // 1000x\n [12, 1984], // 10010\n [12, 2048], // 10011\n [12, 2112], // 10100\n [12, 2176], // 10101\n [12, 2240], // 10110\n [12, 2304], // 10111\n [11, 1856], [11, 1856], // 1100x\n [11, 1920], [11, 1920], // 1101x\n [12, 2368], // 11100\n [12, 2432], // 11101\n [12, 2496], // 11110\n [12, 2560] // 11111\n ];\n\n var whiteTable2 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000000xx\n [8, 29], [8, 29], // 00000010x\n [8, 30], [8, 30], // 00000011x\n [8, 45], [8, 45], // 00000100x\n [8, 46], [8, 46], // 00000101x\n [7, 22], [7, 22], [7, 22], [7, 22], // 0000011xx\n [7, 23], [7, 23], [7, 23], [7, 23], // 0000100xx\n [8, 47], [8, 47], // 00001010x\n [8, 48], [8, 48], // 00001011x\n [6, 13], [6, 13], [6, 13], [6, 13], // 000011xxx\n [6, 13], [6, 13], [6, 13], [6, 13],\n [7, 20], [7, 20], [7, 20], [7, 20], // 0001000xx\n [8, 33], [8, 33], // 00010010x\n [8, 34], [8, 34], // 00010011x\n [8, 35], [8, 35], // 00010100x\n [8, 36], [8, 36], // 00010101x\n [8, 37], [8, 37], // 00010110x\n [8, 38], [8, 38], // 00010111x\n [7, 19], [7, 19], [7, 19], [7, 19], // 0001100xx\n [8, 31], [8, 31], // 00011010x\n [8, 32], [8, 32], // 00011011x\n [6, 1], [6, 1], [6, 1], [6, 1], // 000111xxx\n [6, 1], [6, 1], [6, 1], [6, 1],\n [6, 12], [6, 12], [6, 12], [6, 12], // 001000xxx\n [6, 12], [6, 12], [6, 12], [6, 12],\n [8, 53], [8, 53], // 00100100x\n [8, 54], [8, 54], // 00100101x\n [7, 26], [7, 26], [7, 26], [7, 26], // 0010011xx\n [8, 39], [8, 39], // 00101000x\n [8, 40], [8, 40], // 00101001x\n [8, 41], [8, 41], // 00101010x\n [8, 42], [8, 42], // 00101011x\n [8, 43], [8, 43], // 00101100x\n [8, 44], [8, 44], // 00101101x\n [7, 21], [7, 21], [7, 21], [7, 21], // 0010111xx\n [7, 28], [7, 28], [7, 28], [7, 28], // 0011000xx\n [8, 61], [8, 61], // 00110010x\n [8, 62], [8, 62], // 00110011x\n [8, 63], [8, 63], // 00110100x\n [8, 0], [8, 0], // 00110101x\n [8, 320], [8, 320], // 00110110x\n [8, 384], [8, 384], // 00110111x\n [5, 10], [5, 10], [5, 10], [5, 10], // 00111xxxx\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 10], [5, 10], [5, 10], [5, 10],\n [5, 11], [5, 11], [5, 11], [5, 11], // 01000xxxx\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [5, 11], [5, 11], [5, 11], [5, 11],\n [7, 27], [7, 27], [7, 27], [7, 27], // 0100100xx\n [8, 59], [8, 59], // 01001010x\n [8, 60], [8, 60], // 01001011x\n [9, 1472], // 010011000\n [9, 1536], // 010011001\n [9, 1600], // 010011010\n [9, 1728], // 010011011\n [7, 18], [7, 18], [7, 18], [7, 18], // 0100111xx\n [7, 24], [7, 24], [7, 24], [7, 24], // 0101000xx\n [8, 49], [8, 49], // 01010010x\n [8, 50], [8, 50], // 01010011x\n [8, 51], [8, 51], // 01010100x\n [8, 52], [8, 52], // 01010101x\n [7, 25], [7, 25], [7, 25], [7, 25], // 0101011xx\n [8, 55], [8, 55], // 01011000x\n [8, 56], [8, 56], // 01011001x\n [8, 57], [8, 57], // 01011010x\n [8, 58], [8, 58], // 01011011x\n [6, 192], [6, 192], [6, 192], [6, 192], // 010111xxx\n [6, 192], [6, 192], [6, 192], [6, 192],\n [6, 1664], [6, 1664], [6, 1664], [6, 1664], // 011000xxx\n [6, 1664], [6, 1664], [6, 1664], [6, 1664],\n [8, 448], [8, 448], // 01100100x\n [8, 512], [8, 512], // 01100101x\n [9, 704], // 011001100\n [9, 768], // 011001101\n [8, 640], [8, 640], // 01100111x\n [8, 576], [8, 576], // 01101000x\n [9, 832], // 011010010\n [9, 896], // 011010011\n [9, 960], // 011010100\n [9, 1024], // 011010101\n [9, 1088], // 011010110\n [9, 1152], // 011010111\n [9, 1216], // 011011000\n [9, 1280], // 011011001\n [9, 1344], // 011011010\n [9, 1408], // 011011011\n [7, 256], [7, 256], [7, 256], [7, 256], // 0110111xx\n [4, 2], [4, 2], [4, 2], [4, 2], // 0111xxxxx\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 2], [4, 2], [4, 2], [4, 2],\n [4, 3], [4, 3], [4, 3], [4, 3], // 1000xxxxx\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [4, 3], [4, 3], [4, 3], [4, 3],\n [5, 128], [5, 128], [5, 128], [5, 128], // 10010xxxx\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 128], [5, 128], [5, 128], [5, 128],\n [5, 8], [5, 8], [5, 8], [5, 8], // 10011xxxx\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 8], [5, 8], [5, 8], [5, 8],\n [5, 9], [5, 9], [5, 9], [5, 9], // 10100xxxx\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [5, 9], [5, 9], [5, 9], [5, 9],\n [6, 16], [6, 16], [6, 16], [6, 16], // 101010xxx\n [6, 16], [6, 16], [6, 16], [6, 16],\n [6, 17], [6, 17], [6, 17], [6, 17], // 101011xxx\n [6, 17], [6, 17], [6, 17], [6, 17],\n [4, 4], [4, 4], [4, 4], [4, 4], // 1011xxxxx\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 4], [4, 4], [4, 4], [4, 4],\n [4, 5], [4, 5], [4, 5], [4, 5], // 1100xxxxx\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [4, 5], [4, 5], [4, 5], [4, 5],\n [6, 14], [6, 14], [6, 14], [6, 14], // 110100xxx\n [6, 14], [6, 14], [6, 14], [6, 14],\n [6, 15], [6, 15], [6, 15], [6, 15], // 110101xxx\n [6, 15], [6, 15], [6, 15], [6, 15],\n [5, 64], [5, 64], [5, 64], [5, 64], // 11011xxxx\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [5, 64], [5, 64], [5, 64], [5, 64],\n [4, 6], [4, 6], [4, 6], [4, 6], // 1110xxxxx\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 6], [4, 6], [4, 6], [4, 6],\n [4, 7], [4, 7], [4, 7], [4, 7], // 1111xxxxx\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7],\n [4, 7], [4, 7], [4, 7], [4, 7]\n ];\n\n var blackTable1 = [\n [-1, -1], [-1, -1], // 000000000000x\n [12, ccittEOL], [12, ccittEOL], // 000000000001x\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000001xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000010xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000011xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000100xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000101xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000110xx\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 00000000111xx\n [11, 1792], [11, 1792], [11, 1792], [11, 1792], // 00000001000xx\n [12, 1984], [12, 1984], // 000000010010x\n [12, 2048], [12, 2048], // 000000010011x\n [12, 2112], [12, 2112], // 000000010100x\n [12, 2176], [12, 2176], // 000000010101x\n [12, 2240], [12, 2240], // 000000010110x\n [12, 2304], [12, 2304], // 000000010111x\n [11, 1856], [11, 1856], [11, 1856], [11, 1856], // 00000001100xx\n [11, 1920], [11, 1920], [11, 1920], [11, 1920], // 00000001101xx\n [12, 2368], [12, 2368], // 000000011100x\n [12, 2432], [12, 2432], // 000000011101x\n [12, 2496], [12, 2496], // 000000011110x\n [12, 2560], [12, 2560], // 000000011111x\n [10, 18], [10, 18], [10, 18], [10, 18], // 0000001000xxx\n [10, 18], [10, 18], [10, 18], [10, 18],\n [12, 52], [12, 52], // 000000100100x\n [13, 640], // 0000001001010\n [13, 704], // 0000001001011\n [13, 768], // 0000001001100\n [13, 832], // 0000001001101\n [12, 55], [12, 55], // 000000100111x\n [12, 56], [12, 56], // 000000101000x\n [13, 1280], // 0000001010010\n [13, 1344], // 0000001010011\n [13, 1408], // 0000001010100\n [13, 1472], // 0000001010101\n [12, 59], [12, 59], // 000000101011x\n [12, 60], [12, 60], // 000000101100x\n [13, 1536], // 0000001011010\n [13, 1600], // 0000001011011\n [11, 24], [11, 24], [11, 24], [11, 24], // 00000010111xx\n [11, 25], [11, 25], [11, 25], [11, 25], // 00000011000xx\n [13, 1664], // 0000001100100\n [13, 1728], // 0000001100101\n [12, 320], [12, 320], // 000000110011x\n [12, 384], [12, 384], // 000000110100x\n [12, 448], [12, 448], // 000000110101x\n [13, 512], // 0000001101100\n [13, 576], // 0000001101101\n [12, 53], [12, 53], // 000000110111x\n [12, 54], [12, 54], // 000000111000x\n [13, 896], // 0000001110010\n [13, 960], // 0000001110011\n [13, 1024], // 0000001110100\n [13, 1088], // 0000001110101\n [13, 1152], // 0000001110110\n [13, 1216], // 0000001110111\n [10, 64], [10, 64], [10, 64], [10, 64], // 0000001111xxx\n [10, 64], [10, 64], [10, 64], [10, 64]\n ];\n\n var blackTable2 = [\n [8, 13], [8, 13], [8, 13], [8, 13], // 00000100xxxx\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [8, 13], [8, 13], [8, 13], [8, 13],\n [11, 23], [11, 23], // 00000101000x\n [12, 50], // 000001010010\n [12, 51], // 000001010011\n [12, 44], // 000001010100\n [12, 45], // 000001010101\n [12, 46], // 000001010110\n [12, 47], // 000001010111\n [12, 57], // 000001011000\n [12, 58], // 000001011001\n [12, 61], // 000001011010\n [12, 256], // 000001011011\n [10, 16], [10, 16], [10, 16], [10, 16], // 0000010111xx\n [10, 17], [10, 17], [10, 17], [10, 17], // 0000011000xx\n [12, 48], // 000001100100\n [12, 49], // 000001100101\n [12, 62], // 000001100110\n [12, 63], // 000001100111\n [12, 30], // 000001101000\n [12, 31], // 000001101001\n [12, 32], // 000001101010\n [12, 33], // 000001101011\n [12, 40], // 000001101100\n [12, 41], // 000001101101\n [11, 22], [11, 22], // 00000110111x\n [8, 14], [8, 14], [8, 14], [8, 14], // 00000111xxxx\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [8, 14], [8, 14], [8, 14], [8, 14],\n [7, 10], [7, 10], [7, 10], [7, 10], // 0000100xxxxx\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 10], [7, 10], [7, 10], [7, 10],\n [7, 11], [7, 11], [7, 11], [7, 11], // 0000101xxxxx\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [7, 11], [7, 11], [7, 11], [7, 11],\n [9, 15], [9, 15], [9, 15], [9, 15], // 000011000xxx\n [9, 15], [9, 15], [9, 15], [9, 15],\n [12, 128], // 000011001000\n [12, 192], // 000011001001\n [12, 26], // 000011001010\n [12, 27], // 000011001011\n [12, 28], // 000011001100\n [12, 29], // 000011001101\n [11, 19], [11, 19], // 00001100111x\n [11, 20], [11, 20], // 00001101000x\n [12, 34], // 000011010010\n [12, 35], // 000011010011\n [12, 36], // 000011010100\n [12, 37], // 000011010101\n [12, 38], // 000011010110\n [12, 39], // 000011010111\n [11, 21], [11, 21], // 00001101100x\n [12, 42], // 000011011010\n [12, 43], // 000011011011\n [10, 0], [10, 0], [10, 0], [10, 0], // 0000110111xx\n [7, 12], [7, 12], [7, 12], [7, 12], // 0000111xxxxx\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12],\n [7, 12], [7, 12], [7, 12], [7, 12]\n ];\n\n var blackTable3 = [\n [-1, -1], [-1, -1], [-1, -1], [-1, -1], // 0000xx\n [6, 9], // 000100\n [6, 8], // 000101\n [5, 7], [5, 7], // 00011x\n [4, 6], [4, 6], [4, 6], [4, 6], // 0010xx\n [4, 5], [4, 5], [4, 5], [4, 5], // 0011xx\n [3, 1], [3, 1], [3, 1], [3, 1], // 010xxx\n [3, 1], [3, 1], [3, 1], [3, 1],\n [3, 4], [3, 4], [3, 4], [3, 4], // 011xxx\n [3, 4], [3, 4], [3, 4], [3, 4],\n [2, 3], [2, 3], [2, 3], [2, 3], // 10xxxx\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 3], [2, 3], [2, 3], [2, 3],\n [2, 2], [2, 2], [2, 2], [2, 2], // 11xxxx\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2],\n [2, 2], [2, 2], [2, 2], [2, 2]\n ];\n\n function CCITTFaxStream(str, maybeLength, params) {\n this.str = str;\n this.dict = str.dict;\n\n params = params || Dict.empty;\n\n this.encoding = params.get('K') || 0;\n this.eoline = params.get('EndOfLine') || false;\n this.byteAlign = params.get('EncodedByteAlign') || false;\n this.columns = params.get('Columns') || 1728;\n this.rows = params.get('Rows') || 0;\n var eoblock = params.get('EndOfBlock');\n if (eoblock === null || eoblock === undefined) {\n eoblock = true;\n }\n this.eoblock = eoblock;\n this.black = params.get('BlackIs1') || false;\n\n this.codingLine = new Uint32Array(this.columns + 1);\n this.refLine = new Uint32Array(this.columns + 2);\n\n this.codingLine[0] = this.columns;\n this.codingPos = 0;\n\n this.row = 0;\n this.nextLine2D = this.encoding < 0;\n this.inputBits = 0;\n this.inputBuf = 0;\n this.outputBits = 0;\n\n var code1;\n while ((code1 = this.lookBits(12)) === 0) {\n this.eatBits(1);\n }\n if (code1 === 1) {\n this.eatBits(12);\n }\n if (this.encoding > 0) {\n this.nextLine2D = !this.lookBits(1);\n this.eatBits(1);\n }\n\n DecodeStream.call(this, maybeLength);\n }\n\n CCITTFaxStream.prototype = Object.create(DecodeStream.prototype);\n\n CCITTFaxStream.prototype.readBlock = function CCITTFaxStream_readBlock() {\n while (!this.eof) {\n var c = this.lookChar();\n this.ensureBuffer(this.bufferLength + 1);\n this.buffer[this.bufferLength++] = c;\n }\n };\n\n CCITTFaxStream.prototype.addPixels =\n function ccittFaxStreamAddPixels(a1, blackPixels) {\n var codingLine = this.codingLine;\n var codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info('row is wrong length');\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n }\n this.codingPos = codingPos;\n };\n\n CCITTFaxStream.prototype.addPixelsNeg =\n function ccittFaxStreamAddPixelsNeg(a1, blackPixels) {\n var codingLine = this.codingLine;\n var codingPos = this.codingPos;\n\n if (a1 > codingLine[codingPos]) {\n if (a1 > this.columns) {\n info('row is wrong length');\n this.err = true;\n a1 = this.columns;\n }\n if ((codingPos & 1) ^ blackPixels) {\n ++codingPos;\n }\n\n codingLine[codingPos] = a1;\n } else if (a1 < codingLine[codingPos]) {\n if (a1 < 0) {\n info('invalid code');\n this.err = true;\n a1 = 0;\n }\n while (codingPos > 0 && a1 < codingLine[codingPos - 1]) {\n --codingPos;\n }\n codingLine[codingPos] = a1;\n }\n\n this.codingPos = codingPos;\n };\n\n CCITTFaxStream.prototype.lookChar = function CCITTFaxStream_lookChar() {\n var refLine = this.refLine;\n var codingLine = this.codingLine;\n var columns = this.columns;\n\n var refPos, blackPixels, bits, i;\n\n if (this.outputBits === 0) {\n if (this.eof) {\n return null;\n }\n this.err = false;\n\n var code1, code2, code3;\n if (this.nextLine2D) {\n for (i = 0; codingLine[i] < columns; ++i) {\n refLine[i] = codingLine[i];\n }\n refLine[i++] = columns;\n refLine[i] = columns;\n codingLine[0] = 0;\n this.codingPos = 0;\n refPos = 0;\n blackPixels = 0;\n\n while (codingLine[this.codingPos] < columns) {\n code1 = this.getTwoDimCode();\n switch (code1) {\n case twoDimPass:\n this.addPixels(refLine[refPos + 1], blackPixels);\n if (refLine[refPos + 1] < columns) {\n refPos += 2;\n }\n break;\n case twoDimHoriz:\n code1 = code2 = 0;\n if (blackPixels) {\n do {\n code1 += (code3 = this.getBlackCode());\n } while (code3 >= 64);\n do {\n code2 += (code3 = this.getWhiteCode());\n } while (code3 >= 64);\n } else {\n do {\n code1 += (code3 = this.getWhiteCode());\n } while (code3 >= 64);\n do {\n code2 += (code3 = this.getBlackCode());\n } while (code3 >= 64);\n }\n this.addPixels(codingLine[this.codingPos] +\n code1, blackPixels);\n if (codingLine[this.codingPos] < columns) {\n this.addPixels(codingLine[this.codingPos] + code2,\n blackPixels ^ 1);\n }\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n break;\n case twoDimVertR3:\n this.addPixels(refLine[refPos] + 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR2:\n this.addPixels(refLine[refPos] + 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertR1:\n this.addPixels(refLine[refPos] + 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVert0:\n this.addPixels(refLine[refPos], blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n ++refPos;\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL3:\n this.addPixelsNeg(refLine[refPos] - 3, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL2:\n this.addPixelsNeg(refLine[refPos] - 2, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case twoDimVertL1:\n this.addPixelsNeg(refLine[refPos] - 1, blackPixels);\n blackPixels ^= 1;\n if (codingLine[this.codingPos] < columns) {\n if (refPos > 0) {\n --refPos;\n } else {\n ++refPos;\n }\n while (refLine[refPos] <= codingLine[this.codingPos] &&\n refLine[refPos] < columns) {\n refPos += 2;\n }\n }\n break;\n case ccittEOF:\n this.addPixels(columns, 0);\n this.eof = true;\n break;\n default:\n info('bad 2d code');\n this.addPixels(columns, 0);\n this.err = true;\n }\n }\n } else {\n codingLine[0] = 0;\n this.codingPos = 0;\n blackPixels = 0;\n while (codingLine[this.codingPos] < columns) {\n code1 = 0;\n if (blackPixels) {\n do {\n code1 += (code3 = this.getBlackCode());\n } while (code3 >= 64);\n } else {\n do {\n code1 += (code3 = this.getWhiteCode());\n } while (code3 >= 64);\n }\n this.addPixels(codingLine[this.codingPos] + code1, blackPixels);\n blackPixels ^= 1;\n }\n }\n\n var gotEOL = false;\n\n if (this.byteAlign) {\n this.inputBits &= ~7;\n }\n\n if (!this.eoblock && this.row === this.rows - 1) {\n this.eof = true;\n } else {\n code1 = this.lookBits(12);\n if (this.eoline) {\n while (code1 !== ccittEOF && code1 !== 1) {\n this.eatBits(1);\n code1 = this.lookBits(12);\n }\n } else {\n while (code1 === 0) {\n this.eatBits(1);\n code1 = this.lookBits(12);\n }\n }\n if (code1 === 1) {\n this.eatBits(12);\n gotEOL = true;\n } else if (code1 === ccittEOF) {\n this.eof = true;\n }\n }\n\n if (!this.eof && this.encoding > 0) {\n this.nextLine2D = !this.lookBits(1);\n this.eatBits(1);\n }\n\n if (this.eoblock && gotEOL && this.byteAlign) {\n code1 = this.lookBits(12);\n if (code1 === 1) {\n this.eatBits(12);\n if (this.encoding > 0) {\n this.lookBits(1);\n this.eatBits(1);\n }\n if (this.encoding >= 0) {\n for (i = 0; i < 4; ++i) {\n code1 = this.lookBits(12);\n if (code1 !== 1) {\n info('bad rtc code: ' + code1);\n }\n this.eatBits(12);\n if (this.encoding > 0) {\n this.lookBits(1);\n this.eatBits(1);\n }\n }\n }\n this.eof = true;\n }\n } else if (this.err && this.eoline) {\n while (true) {\n code1 = this.lookBits(13);\n if (code1 === ccittEOF) {\n this.eof = true;\n return null;\n }\n if ((code1 >> 1) === 1) {\n break;\n }\n this.eatBits(1);\n }\n this.eatBits(12);\n if (this.encoding > 0) {\n this.eatBits(1);\n this.nextLine2D = !(code1 & 1);\n }\n }\n\n if (codingLine[0] > 0) {\n this.outputBits = codingLine[this.codingPos = 0];\n } else {\n this.outputBits = codingLine[this.codingPos = 1];\n }\n this.row++;\n }\n\n var c;\n if (this.outputBits >= 8) {\n c = (this.codingPos & 1) ? 0 : 0xFF;\n this.outputBits -= 8;\n if (this.outputBits === 0 && codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = (codingLine[this.codingPos] -\n codingLine[this.codingPos - 1]);\n }\n } else {\n bits = 8;\n c = 0;\n do {\n if (this.outputBits > bits) {\n c <<= bits;\n if (!(this.codingPos & 1)) {\n c |= 0xFF >> (8 - bits);\n }\n this.outputBits -= bits;\n bits = 0;\n } else {\n c <<= this.outputBits;\n if (!(this.codingPos & 1)) {\n c |= 0xFF >> (8 - this.outputBits);\n }\n bits -= this.outputBits;\n this.outputBits = 0;\n if (codingLine[this.codingPos] < columns) {\n this.codingPos++;\n this.outputBits = (codingLine[this.codingPos] -\n codingLine[this.codingPos - 1]);\n } else if (bits > 0) {\n c <<= bits;\n bits = 0;\n }\n }\n } while (bits);\n }\n if (this.black) {\n c ^= 0xFF;\n }\n return c;\n };\n\n // This functions returns the code found from the table.\n // The start and end parameters set the boundaries for searching the table.\n // The limit parameter is optional. Function returns an array with three\n // values. The first array element indicates whether a valid code is being\n // returned. The second array element is the actual code. The third array\n // element indicates whether EOF was reached.\n CCITTFaxStream.prototype.findTableCode =\n function ccittFaxStreamFindTableCode(start, end, table, limit) {\n\n var limitValue = limit || 0;\n for (var i = start; i <= end; ++i) {\n var code = this.lookBits(i);\n if (code === ccittEOF) {\n return [true, 1, false];\n }\n if (i < end) {\n code <<= end - i;\n }\n if (!limitValue || code >= limitValue) {\n var p = table[code - limitValue];\n if (p[0] === i) {\n this.eatBits(i);\n return [true, p[1], true];\n }\n }\n }\n return [false, 0, false];\n };\n\n CCITTFaxStream.prototype.getTwoDimCode =\n function ccittFaxStreamGetTwoDimCode() {\n\n var code = 0;\n var p;\n if (this.eoblock) {\n code = this.lookBits(7);\n p = twoDimTable[code];\n if (p && p[0] > 0) {\n this.eatBits(p[0]);\n return p[1];\n }\n } else {\n var result = this.findTableCode(1, 7, twoDimTable);\n if (result[0] && result[2]) {\n return result[1];\n }\n }\n info('Bad two dim code');\n return ccittEOF;\n };\n\n CCITTFaxStream.prototype.getWhiteCode =\n function ccittFaxStreamGetWhiteCode() {\n\n var code = 0;\n var p;\n if (this.eoblock) {\n code = this.lookBits(12);\n if (code === ccittEOF) {\n return 1;\n }\n\n if ((code >> 5) === 0) {\n p = whiteTable1[code];\n } else {\n p = whiteTable2[code >> 3];\n }\n\n if (p[0] > 0) {\n this.eatBits(p[0]);\n return p[1];\n }\n } else {\n var result = this.findTableCode(1, 9, whiteTable2);\n if (result[0]) {\n return result[1];\n }\n\n result = this.findTableCode(11, 12, whiteTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info('bad white code');\n this.eatBits(1);\n return 1;\n };\n\n CCITTFaxStream.prototype.getBlackCode =\n function ccittFaxStreamGetBlackCode() {\n\n var code, p;\n if (this.eoblock) {\n code = this.lookBits(13);\n if (code === ccittEOF) {\n return 1;\n }\n if ((code >> 7) === 0) {\n p = blackTable1[code];\n } else if ((code >> 9) === 0 && (code >> 7) !== 0) {\n p = blackTable2[(code >> 1) - 64];\n } else {\n p = blackTable3[code >> 7];\n }\n\n if (p[0] > 0) {\n this.eatBits(p[0]);\n return p[1];\n }\n } else {\n var result = this.findTableCode(2, 6, blackTable3);\n if (result[0]) {\n return result[1];\n }\n\n result = this.findTableCode(7, 12, blackTable2, 64);\n if (result[0]) {\n return result[1];\n }\n\n result = this.findTableCode(10, 13, blackTable1);\n if (result[0]) {\n return result[1];\n }\n }\n info('bad black code');\n this.eatBits(1);\n return 1;\n };\n\n CCITTFaxStream.prototype.lookBits = function CCITTFaxStream_lookBits(n) {\n var c;\n while (this.inputBits < n) {\n if ((c = this.str.getByte()) === -1) {\n if (this.inputBits === 0) {\n return ccittEOF;\n }\n return ((this.inputBuf << (n - this.inputBits)) &\n (0xFFFF >> (16 - n)));\n }\n this.inputBuf = (this.inputBuf << 8) | c;\n this.inputBits += 8;\n }\n return (this.inputBuf >> (this.inputBits - n)) & (0xFFFF >> (16 - n));\n };\n\n CCITTFaxStream.prototype.eatBits = function CCITTFaxStream_eatBits(n) {\n if ((this.inputBits -= n) < 0) {\n this.inputBits = 0;\n }\n };\n\n return CCITTFaxStream;\n})();\n\nvar LZWStream = (function LZWStreamClosure() {\n function LZWStream(str, maybeLength, earlyChange) {\n this.str = str;\n this.dict = str.dict;\n this.cachedData = 0;\n this.bitsCached = 0;\n\n var maxLzwDictionarySize = 4096;\n var lzwState = {\n earlyChange,\n codeLength: 9,\n nextCode: 258,\n dictionaryValues: new Uint8Array(maxLzwDictionarySize),\n dictionaryLengths: new Uint16Array(maxLzwDictionarySize),\n dictionaryPrevCodes: new Uint16Array(maxLzwDictionarySize),\n currentSequence: new Uint8Array(maxLzwDictionarySize),\n currentSequenceLength: 0,\n };\n for (var i = 0; i < 256; ++i) {\n lzwState.dictionaryValues[i] = i;\n lzwState.dictionaryLengths[i] = 1;\n }\n this.lzwState = lzwState;\n\n DecodeStream.call(this, maybeLength);\n }\n\n LZWStream.prototype = Object.create(DecodeStream.prototype);\n\n LZWStream.prototype.readBits = function LZWStream_readBits(n) {\n var bitsCached = this.bitsCached;\n var cachedData = this.cachedData;\n while (bitsCached < n) {\n var c = this.str.getByte();\n if (c === -1) {\n this.eof = true;\n return null;\n }\n cachedData = (cachedData << 8) | c;\n bitsCached += 8;\n }\n this.bitsCached = (bitsCached -= n);\n this.cachedData = cachedData;\n this.lastCode = null;\n return (cachedData >>> bitsCached) & ((1 << n) - 1);\n };\n\n LZWStream.prototype.readBlock = function LZWStream_readBlock() {\n var blockSize = 512;\n var estimatedDecodedSize = blockSize * 2, decodedSizeDelta = blockSize;\n var i, j, q;\n\n var lzwState = this.lzwState;\n if (!lzwState) {\n return; // eof was found\n }\n\n var earlyChange = lzwState.earlyChange;\n var nextCode = lzwState.nextCode;\n var dictionaryValues = lzwState.dictionaryValues;\n var dictionaryLengths = lzwState.dictionaryLengths;\n var dictionaryPrevCodes = lzwState.dictionaryPrevCodes;\n var codeLength = lzwState.codeLength;\n var prevCode = lzwState.prevCode;\n var currentSequence = lzwState.currentSequence;\n var currentSequenceLength = lzwState.currentSequenceLength;\n\n var decodedLength = 0;\n var currentBufferLength = this.bufferLength;\n var buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n\n for (i = 0; i < blockSize; i++) {\n var code = this.readBits(codeLength);\n var hasPrev = currentSequenceLength > 0;\n if (code < 256) {\n currentSequence[0] = code;\n currentSequenceLength = 1;\n } else if (code >= 258) {\n if (code < nextCode) {\n currentSequenceLength = dictionaryLengths[code];\n for (j = currentSequenceLength - 1, q = code; j >= 0; j--) {\n currentSequence[j] = dictionaryValues[q];\n q = dictionaryPrevCodes[q];\n }\n } else {\n currentSequence[currentSequenceLength++] = currentSequence[0];\n }\n } else if (code === 256) {\n codeLength = 9;\n nextCode = 258;\n currentSequenceLength = 0;\n continue;\n } else {\n this.eof = true;\n delete this.lzwState;\n break;\n }\n\n if (hasPrev) {\n dictionaryPrevCodes[nextCode] = prevCode;\n dictionaryLengths[nextCode] = dictionaryLengths[prevCode] + 1;\n dictionaryValues[nextCode] = currentSequence[0];\n nextCode++;\n codeLength = (nextCode + earlyChange) & (nextCode + earlyChange - 1) ?\n codeLength : Math.min(Math.log(nextCode + earlyChange) /\n 0.6931471805599453 + 1, 12) | 0;\n }\n prevCode = code;\n\n decodedLength += currentSequenceLength;\n if (estimatedDecodedSize < decodedLength) {\n do {\n estimatedDecodedSize += decodedSizeDelta;\n } while (estimatedDecodedSize < decodedLength);\n buffer = this.ensureBuffer(this.bufferLength + estimatedDecodedSize);\n }\n for (j = 0; j < currentSequenceLength; j++) {\n buffer[currentBufferLength++] = currentSequence[j];\n }\n }\n lzwState.nextCode = nextCode;\n lzwState.codeLength = codeLength;\n lzwState.prevCode = prevCode;\n lzwState.currentSequenceLength = currentSequenceLength;\n\n this.bufferLength = currentBufferLength;\n };\n\n return LZWStream;\n})();\n\nvar NullStream = (function NullStreamClosure() {\n function NullStream() {\n Stream.call(this, new Uint8Array(0));\n }\n\n NullStream.prototype = Stream.prototype;\n\n return NullStream;\n})();\n\nexport {\n Ascii85Stream,\n AsciiHexStream,\n CCITTFaxStream,\n DecryptStream,\n DecodeStream,\n FlateStream,\n Jbig2Stream,\n JpegStream,\n JpxStream,\n NullStream,\n PredictorStream,\n RunLengthStream,\n Stream,\n StreamsSequenceStream,\n StringStream,\n LZWStream,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/stream.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError, info, isArray, isString, shadow, warn\n} from '../shared/util';\nimport { isDict, isName, isStream } from './primitives';\nimport { PDFFunction } from './function';\n\nvar ColorSpace = (function ColorSpaceClosure() {\n /**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {Number} bpc - Number of bits per component.\n * @param {Number} w1 - Original width.\n * @param {Number} h1 - Original height.\n * @param {Number} w2 - New width.\n * @param {Number} h2 - New height.\n * @param {Number} alpha01 - Size reserved for the alpha channel.\n * @param {TypedArray} dest - The destination buffer.\n */\n function resizeRgbImage(src, bpc, w1, h1, w2, h2, alpha01, dest) {\n var COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n var xRatio = w1 / w2;\n var yRatio = h1 / h2;\n var i, j, py, newIndex = 0, oldIndex;\n var xScaled = new Uint16Array(w2);\n var w1Scanline = w1 * COMPONENTS;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n }\n\n // Constructor should define this.numComps, this.defaultColor, this.name\n function ColorSpace() {\n throw new Error('should not call ColorSpace constructor');\n }\n\n ColorSpace.prototype = {\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb: function ColorSpace_getRgb(src, srcOffset) {\n var rgb = new Uint8Array(3);\n this.getRgbItem(src, srcOffset, rgb, 0);\n return rgb;\n },\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem: function ColorSpace_getRgbItem(src, srcOffset,\n dest, destOffset) {\n throw new Error('Should not call ColorSpace.getRgbItem');\n },\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer: function ColorSpace_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n throw new Error('Should not call ColorSpace.getRgbBuffer');\n },\n /**\n * Determines the number of bytes required to store the result of the\n * conversion done by the getRgbBuffer method. As in getRgbBuffer,\n * |alpha01| is either 0 (RGB output) or 1 (RGBA output).\n */\n getOutputLength: function ColorSpace_getOutputLength(inputLength,\n alpha01) {\n throw new Error('Should not call ColorSpace.getOutputLength');\n },\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough: function ColorSpace_isPassthrough(bits) {\n return false;\n },\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb: function ColorSpace_fillRgb(dest, originalWidth,\n originalHeight, width, height,\n actualHeight, bpc, comps, alpha01) {\n var count = originalWidth * originalHeight;\n var rgbBuf = null;\n var numComponentColors = 1 << bpc;\n var needsResizing = originalHeight !== height || originalWidth !== width;\n var i, ii;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (this.numComps === 1 && count > numComponentColors &&\n this.name !== 'DeviceGray' && this.name !== 'DeviceRGB') {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n var allColors = bpc <= 8 ? new Uint8Array(numComponentColors) :\n new Uint16Array(numComponentColors);\n var key;\n for (i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n var colorMap = new Uint8Array(numComponentColors * 3);\n this.getRgbBuffer(allColors, 0, numComponentColors, colorMap, 0, bpc,\n /* alpha01 = */ 0);\n\n var destPos, rgbPos;\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n destPos = 0;\n for (i = 0; i < count; ++i) {\n key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n rgbPos = 0;\n for (i = 0; i < count; ++i) {\n key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else {\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc,\n alpha01);\n } else {\n rgbBuf = new Uint8Array(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc,\n /* alpha01 = */ 0);\n }\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(rgbBuf, bpc, originalWidth, originalHeight,\n width, height, alpha01, dest);\n } else {\n rgbPos = 0;\n destPos = 0;\n for (i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n },\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n usesZeroToOneRange: true,\n };\n\n ColorSpace.parse = function ColorSpace_parse(cs, xref, res) {\n var IR = ColorSpace.parseToIR(cs, xref, res);\n if (IR instanceof AlternateCS) {\n return IR;\n }\n return ColorSpace.fromIR(IR);\n };\n\n ColorSpace.fromIR = function ColorSpace_fromIR(IR) {\n var name = isArray(IR) ? IR[0] : IR;\n var whitePoint, blackPoint, gamma;\n\n switch (name) {\n case 'DeviceGrayCS':\n return this.singletons.gray;\n case 'DeviceRgbCS':\n return this.singletons.rgb;\n case 'DeviceCmykCS':\n return this.singletons.cmyk;\n case 'CalGrayCS':\n whitePoint = IR[1];\n blackPoint = IR[2];\n gamma = IR[3];\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case 'CalRGBCS':\n whitePoint = IR[1];\n blackPoint = IR[2];\n gamma = IR[3];\n var matrix = IR[4];\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case 'PatternCS':\n var basePatternCS = IR[1];\n if (basePatternCS) {\n basePatternCS = ColorSpace.fromIR(basePatternCS);\n }\n return new PatternCS(basePatternCS);\n case 'IndexedCS':\n var baseIndexedCS = IR[1];\n var hiVal = IR[2];\n var lookup = IR[3];\n return new IndexedCS(ColorSpace.fromIR(baseIndexedCS), hiVal, lookup);\n case 'AlternateCS':\n var numComps = IR[1];\n var alt = IR[2];\n var tintFnIR = IR[3];\n\n return new AlternateCS(numComps, ColorSpace.fromIR(alt),\n PDFFunction.fromIR(tintFnIR));\n case 'LabCS':\n whitePoint = IR[1];\n blackPoint = IR[2];\n var range = IR[3];\n return new LabCS(whitePoint, blackPoint, range);\n default:\n throw new FormatError(`Unknown colorspace name: ${name}`);\n }\n };\n\n ColorSpace.parseToIR = function ColorSpace_parseToIR(cs, xref, res) {\n if (isName(cs)) {\n var colorSpaces = res.get('ColorSpace');\n if (isDict(colorSpaces)) {\n var refcs = colorSpaces.get(cs.name);\n if (refcs) {\n cs = refcs;\n }\n }\n }\n\n cs = xref.fetchIfRef(cs);\n if (isName(cs)) {\n switch (cs.name) {\n case 'DeviceGray':\n case 'G':\n return 'DeviceGrayCS';\n case 'DeviceRGB':\n case 'RGB':\n return 'DeviceRgbCS';\n case 'DeviceCMYK':\n case 'CMYK':\n return 'DeviceCmykCS';\n case 'Pattern':\n return ['PatternCS', null];\n default:\n throw new FormatError(`unrecognized colorspace ${cs.name}`);\n }\n }\n if (isArray(cs)) {\n var mode = xref.fetchIfRef(cs[0]).name;\n var numComps, params, alt, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case 'DeviceGray':\n case 'G':\n return 'DeviceGrayCS';\n case 'DeviceRGB':\n case 'RGB':\n return 'DeviceRgbCS';\n case 'DeviceCMYK':\n case 'CMYK':\n return 'DeviceCmykCS';\n case 'CalGray':\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray('WhitePoint');\n blackPoint = params.getArray('BlackPoint');\n gamma = params.get('Gamma');\n return ['CalGrayCS', whitePoint, blackPoint, gamma];\n case 'CalRGB':\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray('WhitePoint');\n blackPoint = params.getArray('BlackPoint');\n gamma = params.getArray('Gamma');\n var matrix = params.getArray('Matrix');\n return ['CalRGBCS', whitePoint, blackPoint, gamma, matrix];\n case 'ICCBased':\n var stream = xref.fetchIfRef(cs[1]);\n var dict = stream.dict;\n numComps = dict.get('N');\n alt = dict.get('Alternate');\n if (alt) {\n var altIR = ColorSpace.parseToIR(alt, xref, res);\n // Parse the /Alternate CS to ensure that the number of components\n // are correct, and also (indirectly) that it is not a PatternCS.\n var altCS = ColorSpace.fromIR(altIR);\n if (altCS.numComps === numComps) {\n return altIR;\n }\n warn('ICCBased color space: Ignoring incorrect /Alternate entry.');\n }\n if (numComps === 1) {\n return 'DeviceGrayCS';\n } else if (numComps === 3) {\n return 'DeviceRgbCS';\n } else if (numComps === 4) {\n return 'DeviceCmykCS';\n }\n break;\n case 'Pattern':\n var basePatternCS = cs[1] || null;\n if (basePatternCS) {\n basePatternCS = ColorSpace.parseToIR(basePatternCS, xref, res);\n }\n return ['PatternCS', basePatternCS];\n case 'Indexed':\n case 'I':\n var baseIndexedCS = ColorSpace.parseToIR(cs[1], xref, res);\n var hiVal = xref.fetchIfRef(cs[2]) + 1;\n var lookup = xref.fetchIfRef(cs[3]);\n if (isStream(lookup)) {\n lookup = lookup.getBytes();\n }\n return ['IndexedCS', baseIndexedCS, hiVal, lookup];\n case 'Separation':\n case 'DeviceN':\n var name = xref.fetchIfRef(cs[1]);\n numComps = isArray(name) ? name.length : 1;\n alt = ColorSpace.parseToIR(cs[2], xref, res);\n var tintFnIR = PDFFunction.getIR(xref, xref.fetchIfRef(cs[3]));\n return ['AlternateCS', numComps, alt, tintFnIR];\n case 'Lab':\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray('WhitePoint');\n blackPoint = params.getArray('BlackPoint');\n var range = params.getArray('Range');\n return ['LabCS', whitePoint, blackPoint, range];\n default:\n throw new FormatError(`unimplemented color space object \"${mode}\"`);\n }\n }\n throw new FormatError(`unrecognized color space object: \"${cs}\"`);\n };\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component. e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode Decode map (usually from an image).\n * @param {Number} n Number of components the color space has.\n */\n ColorSpace.isDefaultDecode = function ColorSpace_isDefaultDecode(decode, n) {\n if (!isArray(decode)) {\n return true;\n }\n\n if (n * 2 !== decode.length) {\n warn('The decode map is not the correct length');\n return true;\n }\n for (var i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n };\n\n ColorSpace.singletons = {\n get gray() {\n return shadow(this, 'gray', new DeviceGrayCS());\n },\n get rgb() {\n return shadow(this, 'rgb', new DeviceRgbCS());\n },\n get cmyk() {\n return shadow(this, 'cmyk', new DeviceCmykCS());\n },\n };\n\n return ColorSpace;\n})();\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n */\nvar AlternateCS = (function AlternateCSClosure() {\n function AlternateCS(numComps, base, tintFn) {\n this.name = 'Alternate';\n this.numComps = numComps;\n this.defaultColor = new Float32Array(numComps);\n for (var i = 0; i < numComps; ++i) {\n this.defaultColor[i] = 1;\n }\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n AlternateCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function AlternateCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n var tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n },\n getRgbBuffer: function AlternateCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var tintFn = this.tintFn;\n var base = this.base;\n var scale = 1 / ((1 << bits) - 1);\n var baseNumComps = base.numComps;\n var usesZeroToOneRange = base.usesZeroToOneRange;\n var isPassthrough = (base.isPassthrough(8) || !usesZeroToOneRange) &&\n alpha01 === 0;\n var pos = isPassthrough ? destOffset : 0;\n var baseBuf = isPassthrough ? dest : new Uint8Array(baseNumComps * count);\n var numComps = this.numComps;\n\n var scaled = new Float32Array(numComps);\n var tinted = new Float32Array(baseNumComps);\n var i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n },\n getOutputLength: function AlternateCS_getOutputLength(inputLength,\n alpha01) {\n return this.base.getOutputLength(inputLength *\n this.base.numComps / this.numComps,\n alpha01);\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function AlternateCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n\n return AlternateCS;\n})();\n\nvar PatternCS = (function PatternCSClosure() {\n function PatternCS(baseCS) {\n this.name = 'Pattern';\n this.base = baseCS;\n }\n PatternCS.prototype = {};\n\n return PatternCS;\n})();\n\nvar IndexedCS = (function IndexedCSClosure() {\n function IndexedCS(base, highVal, lookup) {\n this.name = 'Indexed';\n this.numComps = 1;\n this.defaultColor = new Uint8Array(this.numComps);\n this.base = base;\n this.highVal = highVal;\n\n var baseNumComps = base.numComps;\n var length = baseNumComps * highVal;\n\n if (isStream(lookup)) {\n this.lookup = new Uint8Array(length);\n var bytes = lookup.getBytes(length);\n this.lookup.set(bytes);\n } else if (isString(lookup)) {\n this.lookup = new Uint8Array(length);\n for (var i = 0; i < length; ++i) {\n this.lookup[i] = lookup.charCodeAt(i);\n }\n } else if (lookup instanceof Uint8Array || lookup instanceof Array) {\n this.lookup = lookup;\n } else {\n throw new FormatError(`Unrecognized lookup table: ${lookup}`);\n }\n }\n\n IndexedCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function IndexedCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n var numComps = this.base.numComps;\n var start = src[srcOffset] * numComps;\n this.base.getRgbBuffer(this.lookup, start, 1, dest, destOffset, 8, 0);\n },\n getRgbBuffer: function IndexedCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var base = this.base;\n var numComps = base.numComps;\n var outputDelta = base.getOutputLength(numComps, alpha01);\n var lookup = this.lookup;\n\n for (var i = 0; i < count; ++i) {\n var lookupPos = src[srcOffset++] * numComps;\n base.getRgbBuffer(lookup, lookupPos, 1, dest, destOffset, 8, alpha01);\n destOffset += outputDelta;\n }\n },\n getOutputLength: function IndexedCS_getOutputLength(inputLength, alpha01) {\n return this.base.getOutputLength(inputLength * this.base.numComps,\n alpha01);\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function IndexedCS_isDefaultDecode(decodeMap) {\n // indexed color maps shouldn't be changed\n return true;\n },\n usesZeroToOneRange: true,\n };\n return IndexedCS;\n})();\n\nvar DeviceGrayCS = (function DeviceGrayCSClosure() {\n function DeviceGrayCS() {\n this.name = 'DeviceGray';\n this.numComps = 1;\n this.defaultColor = new Float32Array(this.numComps);\n }\n\n DeviceGrayCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function DeviceGrayCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n var c = (src[srcOffset] * 255) | 0;\n c = c < 0 ? 0 : c > 255 ? 255 : c;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n },\n getRgbBuffer: function DeviceGrayCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var scale = 255 / ((1 << bits) - 1);\n var j = srcOffset, q = destOffset;\n for (var i = 0; i < count; ++i) {\n var c = (scale * src[j++]) | 0;\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n },\n getOutputLength: function DeviceGrayCS_getOutputLength(inputLength,\n alpha01) {\n return inputLength * (3 + alpha01);\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function DeviceGrayCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n return DeviceGrayCS;\n})();\n\nvar DeviceRgbCS = (function DeviceRgbCSClosure() {\n function DeviceRgbCS() {\n this.name = 'DeviceRGB';\n this.numComps = 3;\n this.defaultColor = new Float32Array(this.numComps);\n }\n DeviceRgbCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function DeviceRgbCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n var r = (src[srcOffset] * 255) | 0;\n var g = (src[srcOffset + 1] * 255) | 0;\n var b = (src[srcOffset + 2] * 255) | 0;\n dest[destOffset] = r < 0 ? 0 : r > 255 ? 255 : r;\n dest[destOffset + 1] = g < 0 ? 0 : g > 255 ? 255 : g;\n dest[destOffset + 2] = b < 0 ? 0 : b > 255 ? 255 : b;\n },\n getRgbBuffer: function DeviceRgbCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n var scale = 255 / ((1 << bits) - 1);\n var j = srcOffset, q = destOffset;\n for (var i = 0; i < count; ++i) {\n dest[q++] = (scale * src[j++]) | 0;\n dest[q++] = (scale * src[j++]) | 0;\n dest[q++] = (scale * src[j++]) | 0;\n q += alpha01;\n }\n },\n getOutputLength: function DeviceRgbCS_getOutputLength(inputLength,\n alpha01) {\n return (inputLength * (3 + alpha01) / 3) | 0;\n },\n isPassthrough: function DeviceRgbCS_isPassthrough(bits) {\n return bits === 8;\n },\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function DeviceRgbCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n return DeviceRgbCS;\n})();\n\nvar DeviceCmykCS = (function DeviceCmykCSClosure() {\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n function convertToRgb(src, srcOffset, srcScale, dest, destOffset) {\n var c = src[srcOffset + 0] * srcScale;\n var m = src[srcOffset + 1] * srcScale;\n var y = src[srcOffset + 2] * srcScale;\n var k = src[srcOffset + 3] * srcScale;\n\n var r =\n (c * (-4.387332384609988 * c + 54.48615194189176 * m +\n 18.82290502165302 * y + 212.25662451639585 * k +\n -285.2331026137004) +\n m * (1.7149763477362134 * m - 5.6096736904047315 * y +\n -17.873870861415444 * k - 5.497006427196366) +\n y * (-2.5217340131683033 * y - 21.248923337353073 * k +\n 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747) + 255) | 0;\n var g =\n (c * (8.841041422036149 * c + 60.118027045597366 * m +\n 6.871425592049007 * y + 31.159100130055922 * k +\n -79.2970844816548) +\n m * (-15.310361306967817 * m + 17.575251261109482 * y +\n 131.35250912493976 * k - 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578) + 255) | 0;\n var b =\n (c * (0.8842522430003296 * c + 8.078677503112928 * m +\n 30.89978309703729 * y - 0.23883238689178934 * k +\n -14.183576799673286) +\n m * (10.49593273432072 * m + 63.02378494754052 * y +\n 50.606957656360734 * k - 112.23884253719248) +\n y * (0.03296041114873217 * y + 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367) + 255) | 0;\n\n dest[destOffset] = r > 255 ? 255 : r < 0 ? 0 : r;\n dest[destOffset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n dest[destOffset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n\n function DeviceCmykCS() {\n this.name = 'DeviceCMYK';\n this.numComps = 4;\n this.defaultColor = new Float32Array(this.numComps);\n // Set the fourth component to the maximum value for a black color.\n this.defaultColor[3] = 1;\n }\n DeviceCmykCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function DeviceCmykCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n convertToRgb(src, srcOffset, 1, dest, destOffset);\n },\n getRgbBuffer: function DeviceCmykCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n for (var i = 0; i < count; i++) {\n convertToRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n },\n getOutputLength: function DeviceCmykCS_getOutputLength(inputLength,\n alpha01) {\n return (inputLength / 4 * (3 + alpha01)) | 0;\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function DeviceCmykCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n\n return DeviceCmykCS;\n})();\n\n//\n// CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n//\nvar CalGrayCS = (function CalGrayCSClosure() {\n function CalGrayCS(whitePoint, blackPoint, gamma) {\n this.name = 'CalGray';\n this.numComps = 1;\n this.defaultColor = new Float32Array(this.numComps);\n\n if (!whitePoint) {\n throw new FormatError(\n 'WhitePoint missing - required for color space CalGray');\n }\n blackPoint = blackPoint || [0, 0, 0];\n gamma = gamma || 1;\n\n // Translate arguments to spec variables.\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n this.G = gamma;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}` +\n ', no fallback available');\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info('Invalid BlackPoint for ' + this.name + ', falling back to default');\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(this.name + ', BlackPoint: XB: ' + this.XB + ', YB: ' + this.YB +\n ', ZB: ' + this.ZB + ', only default values are supported.');\n }\n\n if (this.G < 1) {\n info('Invalid Gamma: ' + this.G + ' for ' + this.name +\n ', falling back to default');\n this.G = 1;\n }\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n var A = src[srcOffset] * scale;\n var AG = Math.pow(A, cs.G);\n\n // Computes L as per spec. ( = cs.YW * AG )\n // Except if other than default BlackPoint values are used.\n var L = cs.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0;\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n CalGrayCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n },\n getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n\n for (var i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n },\n getOutputLength: function CalGrayCS_getOutputLength(inputLength, alpha01) {\n return inputLength * (3 + alpha01);\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function CalGrayCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n return CalGrayCS;\n})();\n\n//\n// CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n//\nvar CalRGBCS = (function CalRGBCSClosure() {\n\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n var BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n var BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n var SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n var FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n var tempNormalizeMatrix = new Float32Array(3);\n var tempConvertMatrix1 = new Float32Array(3);\n var tempConvertMatrix2 = new Float32Array(3);\n\n var DECODE_L_CONSTANT = Math.pow(((8 + 16) / 116), 3) / 8.0;\n\n function CalRGBCS(whitePoint, blackPoint, gamma, matrix) {\n this.name = 'CalRGB';\n this.numComps = 3;\n this.defaultColor = new Float32Array(this.numComps);\n\n if (!whitePoint) {\n throw new FormatError(\n 'WhitePoint missing - required for color space CalRGB');\n }\n blackPoint = blackPoint || new Float32Array(3);\n gamma = gamma || new Float32Array([1, 1, 1]);\n matrix = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Translate arguments to spec variables.\n var XW = whitePoint[0];\n var YW = whitePoint[1];\n var ZW = whitePoint[2];\n this.whitePoint = whitePoint;\n\n var XB = blackPoint[0];\n var YB = blackPoint[1];\n var ZB = blackPoint[2];\n this.blackPoint = blackPoint;\n\n this.GR = gamma[0];\n this.GG = gamma[1];\n this.GB = gamma[2];\n\n this.MXA = matrix[0];\n this.MYA = matrix[1];\n this.MZA = matrix[2];\n this.MXB = matrix[3];\n this.MYB = matrix[4];\n this.MZB = matrix[5];\n this.MXC = matrix[6];\n this.MYC = matrix[7];\n this.MZC = matrix[8];\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(`Invalid WhitePoint components for ${this.name}` +\n ', no fallback available');\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info('Invalid BlackPoint for ' + this.name + ' [' + XB + ', ' + YB +\n ', ' + ZB + '], falling back to default');\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info('Invalid Gamma [' + this.GR + ', ' + this.GG + ', ' + this.GB +\n '] for ' + this.name + ', falling back to default');\n this.GR = this.GG = this.GB = 1;\n }\n\n if (this.MXA < 0 || this.MYA < 0 || this.MZA < 0 ||\n this.MXB < 0 || this.MYB < 0 || this.MZB < 0 ||\n this.MXC < 0 || this.MYC < 0 || this.MZC < 0) {\n info('Invalid Matrix for ' + this.name + ' [' +\n this.MXA + ', ' + this.MYA + ', ' + this.MZA +\n this.MXB + ', ' + this.MYB + ', ' + this.MZB +\n this.MXC + ', ' + this.MYC + ', ' + this.MZC +\n '], falling back to default');\n this.MXA = this.MYB = this.MZC = 1;\n this.MXB = this.MYA = this.MZA = this.MXC = this.MYC = this.MZB = 0;\n }\n }\n\n function matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n function convertToFlat(sourceWhitePoint, LMS, result) {\n result[0] = LMS[0] * 1 / sourceWhitePoint[0];\n result[1] = LMS[1] * 1 / sourceWhitePoint[1];\n result[2] = LMS[2] * 1 / sourceWhitePoint[2];\n }\n\n function convertToD65(sourceWhitePoint, LMS, result) {\n var D65X = 0.95047;\n var D65Y = 1;\n var D65Z = 1.08883;\n\n result[0] = LMS[0] * D65X / sourceWhitePoint[0];\n result[1] = LMS[1] * D65Y / sourceWhitePoint[1];\n result[2] = LMS[2] * D65Z / sourceWhitePoint[2];\n }\n\n function sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return adjustToRange(0, 1, 12.92 * color);\n }\n\n return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055);\n }\n\n function adjustToRange(min, max, value) {\n return Math.max(min, Math.min(max, value));\n }\n\n function decodeL(L) {\n if (L < 0) {\n return -decodeL(-L);\n }\n\n if (L > 8.0) {\n return Math.pow(((L + 16) / 116), 3);\n }\n\n return L * DECODE_L_CONSTANT;\n }\n\n function compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n var zeroDecodeL = decodeL(0);\n\n var X_DST = zeroDecodeL;\n var X_SRC = decodeL(sourceBlackPoint[0]);\n\n var Y_DST = zeroDecodeL;\n var Y_SRC = decodeL(sourceBlackPoint[1]);\n\n var Z_DST = zeroDecodeL;\n var Z_SRC = decodeL(sourceBlackPoint[2]);\n\n var X_Scale = (1 - X_DST) / (1 - X_SRC);\n var X_Offset = 1 - X_Scale;\n\n var Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n var Y_Offset = 1 - Y_Scale;\n\n var Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n var Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n function normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n var LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n var LMS_Flat = tempNormalizeMatrix;\n convertToFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_Flat, result);\n }\n\n function normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n\n var LMS = result;\n matrixProduct(BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n var LMS_D65 = tempNormalizeMatrix;\n convertToD65(sourceWhitePoint, LMS, LMS_D65);\n\n matrixProduct(BRADFORD_SCALE_INVERSE_MATRIX, LMS_D65, result);\n }\n\n function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n var A = adjustToRange(0, 1, src[srcOffset] * scale);\n var B = adjustToRange(0, 1, src[srcOffset + 1] * scale);\n var C = adjustToRange(0, 1, src[srcOffset + 2] * scale);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n var AGR = Math.pow(A, cs.GR);\n var BGG = Math.pow(B, cs.GG);\n var CGB = Math.pow(C, cs.GB);\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n var X = cs.MXA * AGR + cs.MXB * BGG + cs.MXC * CGB;\n var Y = cs.MYA * AGR + cs.MYB * BGG + cs.MYC * CGB;\n var Z = cs.MZA * AGR + cs.MZB * BGG + cs.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n var XYZ = tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n var XYZ_Flat = tempConvertMatrix2;\n\n normalizeWhitePointToFlat(cs.whitePoint, XYZ, XYZ_Flat);\n\n var XYZ_Black = tempConvertMatrix1;\n compensateBlackPoint(cs.blackPoint, XYZ_Flat, XYZ_Black);\n\n var XYZ_D65 = tempConvertMatrix2;\n normalizeWhitePointToD65(FLAT_WHITEPOINT_MATRIX, XYZ_Black, XYZ_D65);\n\n var SRGB = tempConvertMatrix1;\n matrixProduct(SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n var sR = sRGBTransferFunction(SRGB[0]);\n var sG = sRGBTransferFunction(SRGB[1]);\n var sB = sRGBTransferFunction(SRGB[2]);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = Math.round(sR * 255);\n dest[destOffset + 1] = Math.round(sG * 255);\n dest[destOffset + 2] = Math.round(sB * 255);\n }\n\n CalRGBCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function CalRGBCS_getRgbItem(src, srcOffset,\n dest, destOffset) {\n convertToRgb(this, src, srcOffset, dest, destOffset, 1);\n },\n getRgbBuffer: function CalRGBCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var scale = 1 / ((1 << bits) - 1);\n\n for (var i = 0; i < count; ++i) {\n convertToRgb(this, src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n },\n getOutputLength: function CalRGBCS_getOutputLength(inputLength, alpha01) {\n return (inputLength * (3 + alpha01) / 3) | 0;\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function CalRGBCS_isDefaultDecode(decodeMap) {\n return ColorSpace.isDefaultDecode(decodeMap, this.numComps);\n },\n usesZeroToOneRange: true,\n };\n return CalRGBCS;\n})();\n\n//\n// LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n//\nvar LabCS = (function LabCSClosure() {\n function LabCS(whitePoint, blackPoint, range) {\n this.name = 'Lab';\n this.numComps = 3;\n this.defaultColor = new Float32Array(this.numComps);\n\n if (!whitePoint) {\n throw new FormatError(\n 'WhitePoint missing - required for color space Lab');\n }\n blackPoint = blackPoint || [0, 0, 0];\n range = range || [-100, 100, -100, 100];\n\n // Translate args to spec variables\n this.XW = whitePoint[0];\n this.YW = whitePoint[1];\n this.ZW = whitePoint[2];\n this.amin = range[0];\n this.amax = range[1];\n this.bmin = range[2];\n this.bmax = range[3];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n this.XB = blackPoint[0];\n this.YB = blackPoint[1];\n this.ZB = blackPoint[2];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n 'Invalid WhitePoint components, no fallback available');\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info('Invalid BlackPoint, falling back to default');\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info('Invalid Range, falling back to defaults');\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n // Function g(x) from spec\n function fn_g(x) {\n var result;\n if (x >= 6 / 29) {\n result = x * x * x;\n } else {\n result = (108 / 841) * (x - 4 / 29);\n }\n return result;\n }\n\n function decode(value, high1, low2, high2) {\n return low2 + (value) * (high2 - low2) / (high1);\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n function convertToRgb(cs, src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n var Ls = src[srcOffset];\n var as = src[srcOffset + 1];\n var bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = decode(Ls, maxVal, 0, 100);\n as = decode(as, maxVal, cs.amin, cs.amax);\n bs = decode(bs, maxVal, cs.bmin, cs.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n as = as > cs.amax ? cs.amax : as < cs.amin ? cs.amin : as;\n bs = bs > cs.bmax ? cs.bmax : bs < cs.bmin ? cs.bmin : bs;\n\n // Computes intermediate variables X,Y,Z as per spec\n var M = (Ls + 16) / 116;\n var L = M + (as / 500);\n var N = M - (bs / 200);\n\n var X = cs.XW * fn_g(L);\n var Y = cs.YW * fn_g(M);\n var Z = cs.ZW * fn_g(N);\n\n var r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (cs.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.6170 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.9160 + Z * 0.0333;\n b = X * 0.0720 + Y * -0.2290 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.2040 + Z * 1.0570;\n }\n // clamp color values to [0,1] range then convert to [0,255] range.\n dest[destOffset] = r <= 0 ? 0 : r >= 1 ? 255 : Math.sqrt(r) * 255 | 0;\n dest[destOffset + 1] = g <= 0 ? 0 : g >= 1 ? 255 : Math.sqrt(g) * 255 | 0;\n dest[destOffset + 2] = b <= 0 ? 0 : b >= 1 ? 255 : Math.sqrt(b) * 255 | 0;\n }\n\n LabCS.prototype = {\n getRgb: ColorSpace.prototype.getRgb,\n getRgbItem: function LabCS_getRgbItem(src, srcOffset, dest, destOffset) {\n convertToRgb(this, src, srcOffset, false, dest, destOffset);\n },\n getRgbBuffer: function LabCS_getRgbBuffer(src, srcOffset, count,\n dest, destOffset, bits,\n alpha01) {\n var maxVal = (1 << bits) - 1;\n for (var i = 0; i < count; i++) {\n convertToRgb(this, src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n },\n getOutputLength: function LabCS_getOutputLength(inputLength, alpha01) {\n return (inputLength * (3 + alpha01) / 3) | 0;\n },\n isPassthrough: ColorSpace.prototype.isPassthrough,\n fillRgb: ColorSpace.prototype.fillRgb,\n isDefaultDecode: function LabCS_isDefaultDecode(decodeMap) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n },\n usesZeroToOneRange: false,\n };\n return LabCS;\n})();\n\nexport {\n ColorSpace,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/colorspace.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar ExpertEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclamsmall', 'Hungarumlautsmall', '', 'dollaroldstyle',\n 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon',\n 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior',\n 'questionsmall', '', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior',\n 'esuperior', '', '', '', 'isuperior', '', '', 'lsuperior', 'msuperior',\n 'nsuperior', 'osuperior', '', '', 'rsuperior', 'ssuperior', 'tsuperior',\n '', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '',\n 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n 'onefitted', 'rupiah', 'Tildesmall', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',\n '', '', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall',\n 'Caronsmall', '', 'Dotaccentsmall', '', '', 'Macronsmall', '', '',\n 'figuredash', 'hypheninferior', '', '', 'Ogoneksmall', 'Ringsmall',\n 'Cedillasmall', '', '', '', 'onequarter', 'onehalf', 'threequarters',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', '', '', 'zerosuperior',\n 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior',\n 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior',\n 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior',\n 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior',\n 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior',\n 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall',\n 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall',\n 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n 'Ydieresissmall'];\n\nvar MacExpertEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclamsmall', 'Hungarumlautsmall', 'centoldstyle',\n 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall',\n 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle',\n 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle',\n 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle',\n 'nineoldstyle', 'colon', 'semicolon', '', 'threequartersemdash', '',\n 'questionsmall', '', '', '', '', 'Ethsmall', '', '', 'onequarter',\n 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', '', '', '', '', '', '', 'ff',\n 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', '', 'parenrightinferior',\n 'Circumflexsmall', 'hypheninferior', 'Gravesmall', 'Asmall', 'Bsmall',\n 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',\n 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',\n 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',\n 'Tildesmall', '', '', 'asuperior', 'centsuperior', '', '', '', '',\n 'Aacutesmall', 'Agravesmall', 'Acircumflexsmall', 'Adieresissmall',\n 'Atildesmall', 'Aringsmall', 'Ccedillasmall', 'Eacutesmall', 'Egravesmall',\n 'Ecircumflexsmall', 'Edieresissmall', 'Iacutesmall', 'Igravesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ntildesmall', 'Oacutesmall',\n 'Ogravesmall', 'Ocircumflexsmall', 'Odieresissmall', 'Otildesmall',\n 'Uacutesmall', 'Ugravesmall', 'Ucircumflexsmall', 'Udieresissmall', '',\n 'eightsuperior', 'fourinferior', 'threeinferior', 'sixinferior',\n 'eightinferior', 'seveninferior', 'Scaronsmall', '', 'centinferior',\n 'twoinferior', '', 'Dieresissmall', '', 'Caronsmall', 'osuperior',\n 'fiveinferior', '', 'commainferior', 'periodinferior', 'Yacutesmall', '',\n 'dollarinferior', '', 'Thornsmall', '', 'nineinferior', 'zeroinferior',\n 'Zcaronsmall', 'AEsmall', 'Oslashsmall', 'questiondownsmall',\n 'oneinferior', 'Lslashsmall', '', '', '', '', '', '', 'Cedillasmall', '',\n '', '', '', '', 'OEsmall', 'figuredash', 'hyphensuperior', '', '', '', '',\n 'exclamdownsmall', '', 'Ydieresissmall', '', 'onesuperior', 'twosuperior',\n 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',\n 'sevensuperior', 'ninesuperior', 'zerosuperior', '', 'esuperior',\n 'rsuperior', 'tsuperior', '', '', 'isuperior', 'ssuperior', 'dsuperior',\n '', '', '', '', '', 'lsuperior', 'Ogoneksmall', 'Brevesmall',\n 'Macronsmall', 'bsuperior', 'nsuperior', 'msuperior', 'commasuperior',\n 'periodsuperior', 'Dotaccentsmall', 'Ringsmall'];\n\nvar MacRomanEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',\n 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',\n 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',\n 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', '',\n 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde', 'Odieresis',\n 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis', 'atilde',\n 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',\n 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute',\n 'ograve', 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave',\n 'ucircumflex', 'udieresis', 'dagger', 'degree', 'cent', 'sterling',\n 'section', 'bullet', 'paragraph', 'germandbls', 'registered', 'copyright',\n 'trademark', 'acute', 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity',\n 'plusminus', 'lessequal', 'greaterequal', 'yen', 'mu', 'partialdiff',\n 'summation', 'product', 'pi', 'integral', 'ordfeminine', 'ordmasculine',\n 'Omega', 'ae', 'oslash', 'questiondown', 'exclamdown', 'logicalnot',\n 'radical', 'florin', 'approxequal', 'Delta', 'guillemotleft',\n 'guillemotright', 'ellipsis', 'space', 'Agrave', 'Atilde', 'Otilde', 'OE',\n 'oe', 'endash', 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft',\n 'quoteright', 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction',\n 'currency', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl',\n 'periodcentered', 'quotesinglbase', 'quotedblbase', 'perthousand',\n 'Acircumflex', 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute',\n 'Icircumflex', 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple',\n 'Ograve', 'Uacute', 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex',\n 'tilde', 'macron', 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut',\n 'ogonek', 'caron'];\n\nvar StandardEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',\n 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f',\n 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',\n 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'exclamdown',\n 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n 'guilsinglright', 'fi', 'fl', '', 'endash', 'dagger', 'daggerdbl',\n 'periodcentered', '', 'paragraph', 'bullet', 'quotesinglbase',\n 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n 'perthousand', '', 'questiondown', '', 'grave', 'acute', 'circumflex',\n 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', '', 'ring', 'cedilla',\n '', 'hungarumlaut', 'ogonek', 'caron', 'emdash', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', 'AE', '', 'ordfeminine', '', '',\n '', '', 'Lslash', 'Oslash', 'OE', 'ordmasculine', '', '', '', '', '', 'ae',\n '', '', '', 'dotlessi', '', '', 'lslash', 'oslash', 'oe', 'germandbls'];\n\nvar WinAnsiEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n 'ampersand', 'quotesingle', 'parenleft', 'parenright', 'asterisk', 'plus',\n 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three',\n 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon',\n 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F',\n 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright',\n 'asciicircum', 'underscore', 'grave', 'a', 'b', 'c', 'd', 'e', 'f', 'g',\n 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',\n 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde',\n 'bullet', 'Euro', 'bullet', 'quotesinglbase', 'florin', 'quotedblbase',\n 'ellipsis', 'dagger', 'daggerdbl', 'circumflex', 'perthousand', 'Scaron',\n 'guilsinglleft', 'OE', 'bullet', 'Zcaron', 'bullet', 'bullet', 'quoteleft',\n 'quoteright', 'quotedblleft', 'quotedblright', 'bullet', 'endash',\n 'emdash', 'tilde', 'trademark', 'scaron', 'guilsinglright', 'oe', 'bullet',\n 'zcaron', 'Ydieresis', 'space', 'exclamdown', 'cent', 'sterling',\n 'currency', 'yen', 'brokenbar', 'section', 'dieresis', 'copyright',\n 'ordfeminine', 'guillemotleft', 'logicalnot', 'hyphen', 'registered',\n 'macron', 'degree', 'plusminus', 'twosuperior', 'threesuperior', 'acute',\n 'mu', 'paragraph', 'periodcentered', 'cedilla', 'onesuperior',\n 'ordmasculine', 'guillemotright', 'onequarter', 'onehalf', 'threequarters',\n 'questiondown', 'Agrave', 'Aacute', 'Acircumflex', 'Atilde', 'Adieresis',\n 'Aring', 'AE', 'Ccedilla', 'Egrave', 'Eacute', 'Ecircumflex', 'Edieresis',\n 'Igrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Eth', 'Ntilde', 'Ograve',\n 'Oacute', 'Ocircumflex', 'Otilde', 'Odieresis', 'multiply', 'Oslash',\n 'Ugrave', 'Uacute', 'Ucircumflex', 'Udieresis', 'Yacute', 'Thorn',\n 'germandbls', 'agrave', 'aacute', 'acircumflex', 'atilde', 'adieresis',\n 'aring', 'ae', 'ccedilla', 'egrave', 'eacute', 'ecircumflex', 'edieresis',\n 'igrave', 'iacute', 'icircumflex', 'idieresis', 'eth', 'ntilde', 'ograve',\n 'oacute', 'ocircumflex', 'otilde', 'odieresis', 'divide', 'oslash',\n 'ugrave', 'uacute', 'ucircumflex', 'udieresis', 'yacute', 'thorn',\n 'ydieresis'];\n\nvar SymbolSetEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'exclam', 'universal', 'numbersign', 'existential', 'percent',\n 'ampersand', 'suchthat', 'parenleft', 'parenright', 'asteriskmath', 'plus',\n 'comma', 'minus', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',\n 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',\n 'equal', 'greater', 'question', 'congruent', 'Alpha', 'Beta', 'Chi',\n 'Delta', 'Epsilon', 'Phi', 'Gamma', 'Eta', 'Iota', 'theta1', 'Kappa',\n 'Lambda', 'Mu', 'Nu', 'Omicron', 'Pi', 'Theta', 'Rho', 'Sigma', 'Tau',\n 'Upsilon', 'sigma1', 'Omega', 'Xi', 'Psi', 'Zeta', 'bracketleft',\n 'therefore', 'bracketright', 'perpendicular', 'underscore', 'radicalex',\n 'alpha', 'beta', 'chi', 'delta', 'epsilon', 'phi', 'gamma', 'eta', 'iota',\n 'phi1', 'kappa', 'lambda', 'mu', 'nu', 'omicron', 'pi', 'theta', 'rho',\n 'sigma', 'tau', 'upsilon', 'omega1', 'omega', 'xi', 'psi', 'zeta',\n 'braceleft', 'bar', 'braceright', 'similar', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', 'Euro', 'Upsilon1', 'minute', 'lessequal',\n 'fraction', 'infinity', 'florin', 'club', 'diamond', 'heart', 'spade',\n 'arrowboth', 'arrowleft', 'arrowup', 'arrowright', 'arrowdown', 'degree',\n 'plusminus', 'second', 'greaterequal', 'multiply', 'proportional',\n 'partialdiff', 'bullet', 'divide', 'notequal', 'equivalence',\n 'approxequal', 'ellipsis', 'arrowvertex', 'arrowhorizex', 'carriagereturn',\n 'aleph', 'Ifraktur', 'Rfraktur', 'weierstrass', 'circlemultiply',\n 'circleplus', 'emptyset', 'intersection', 'union', 'propersuperset',\n 'reflexsuperset', 'notsubset', 'propersubset', 'reflexsubset', 'element',\n 'notelement', 'angle', 'gradient', 'registerserif', 'copyrightserif',\n 'trademarkserif', 'product', 'radical', 'dotmath', 'logicalnot',\n 'logicaland', 'logicalor', 'arrowdblboth', 'arrowdblleft', 'arrowdblup',\n 'arrowdblright', 'arrowdbldown', 'lozenge', 'angleleft', 'registersans',\n 'copyrightsans', 'trademarksans', 'summation', 'parenlefttp',\n 'parenleftex', 'parenleftbt', 'bracketlefttp', 'bracketleftex',\n 'bracketleftbt', 'bracelefttp', 'braceleftmid', 'braceleftbt', 'braceex',\n '', 'angleright', 'integral', 'integraltp', 'integralex', 'integralbt',\n 'parenrighttp', 'parenrightex', 'parenrightbt', 'bracketrighttp',\n 'bracketrightex', 'bracketrightbt', 'bracerighttp', 'bracerightmid',\n 'bracerightbt'];\n\nvar ZapfDingbatsEncoding = [\n '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',\n 'space', 'a1', 'a2', 'a202', 'a3', 'a4', 'a5', 'a119', 'a118', 'a117',\n 'a11', 'a12', 'a13', 'a14', 'a15', 'a16', 'a105', 'a17', 'a18', 'a19',\n 'a20', 'a21', 'a22', 'a23', 'a24', 'a25', 'a26', 'a27', 'a28', 'a6', 'a7',\n 'a8', 'a9', 'a10', 'a29', 'a30', 'a31', 'a32', 'a33', 'a34', 'a35', 'a36',\n 'a37', 'a38', 'a39', 'a40', 'a41', 'a42', 'a43', 'a44', 'a45', 'a46',\n 'a47', 'a48', 'a49', 'a50', 'a51', 'a52', 'a53', 'a54', 'a55', 'a56',\n 'a57', 'a58', 'a59', 'a60', 'a61', 'a62', 'a63', 'a64', 'a65', 'a66',\n 'a67', 'a68', 'a69', 'a70', 'a71', 'a72', 'a73', 'a74', 'a203', 'a75',\n 'a204', 'a76', 'a77', 'a78', 'a79', 'a81', 'a82', 'a83', 'a84', 'a97',\n 'a98', 'a99', 'a100', '', 'a89', 'a90', 'a93', 'a94', 'a91', 'a92', 'a205',\n 'a85', 'a206', 'a86', 'a87', 'a88', 'a95', 'a96', '', '', '', '', '', '',\n '', '', '', '', '', '', '', '', '', '', '', '', '', 'a101', 'a102', 'a103',\n 'a104', 'a106', 'a107', 'a108', 'a112', 'a111', 'a110', 'a109', 'a120',\n 'a121', 'a122', 'a123', 'a124', 'a125', 'a126', 'a127', 'a128', 'a129',\n 'a130', 'a131', 'a132', 'a133', 'a134', 'a135', 'a136', 'a137', 'a138',\n 'a139', 'a140', 'a141', 'a142', 'a143', 'a144', 'a145', 'a146', 'a147',\n 'a148', 'a149', 'a150', 'a151', 'a152', 'a153', 'a154', 'a155', 'a156',\n 'a157', 'a158', 'a159', 'a160', 'a161', 'a163', 'a164', 'a196', 'a165',\n 'a192', 'a166', 'a167', 'a168', 'a169', 'a170', 'a171', 'a172', 'a173',\n 'a162', 'a174', 'a175', 'a176', 'a177', 'a178', 'a179', 'a193', 'a180',\n 'a199', 'a181', 'a200', 'a182', '', 'a201', 'a183', 'a184', 'a197', 'a185',\n 'a194', 'a198', 'a186', 'a195', 'a187', 'a188', 'a189', 'a190', 'a191'];\n\nfunction getEncoding(encodingName) {\n switch (encodingName) {\n case 'WinAnsiEncoding':\n return WinAnsiEncoding;\n case 'StandardEncoding':\n return StandardEncoding;\n case 'MacRomanEncoding':\n return MacRomanEncoding;\n case 'SymbolSetEncoding':\n return SymbolSetEncoding;\n case 'ZapfDingbatsEncoding':\n return ZapfDingbatsEncoding;\n case 'ExpertEncoding':\n return ExpertEncoding;\n case 'MacExpertEncoding':\n return MacExpertEncoding;\n default:\n return null;\n }\n}\n\nexport {\n WinAnsiEncoding,\n StandardEncoding,\n MacRomanEncoding,\n SymbolSetEncoding,\n ZapfDingbatsEncoding,\n ExpertEncoding,\n getEncoding,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/encodings.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Ascii85Stream, AsciiHexStream, CCITTFaxStream, FlateStream, Jbig2Stream,\n JpegStream, JpxStream, LZWStream, NullStream, PredictorStream, RunLengthStream\n} from './stream';\nimport {\n assert, FormatError, info, isArray, isInt, isNum, isString,\n MissingDataException, StreamType, warn\n} from '../shared/util';\nimport {\n Cmd, Dict, EOF, isCmd, isDict, isEOF, isName, Name, Ref\n} from './primitives';\n\nvar MAX_LENGTH_TO_CACHE = 1000;\n\nvar Parser = (function ParserClosure() {\n function Parser(lexer, allowStreams, xref, recoveryMode) {\n this.lexer = lexer;\n this.allowStreams = allowStreams;\n this.xref = xref;\n this.recoveryMode = recoveryMode || false;\n this.imageCache = Object.create(null);\n this.refill();\n }\n\n Parser.prototype = {\n refill: function Parser_refill() {\n this.buf1 = this.lexer.getObj();\n this.buf2 = this.lexer.getObj();\n },\n shift: function Parser_shift() {\n if (isCmd(this.buf2, 'ID')) {\n this.buf1 = this.buf2;\n this.buf2 = null;\n } else {\n this.buf1 = this.buf2;\n this.buf2 = this.lexer.getObj();\n }\n },\n tryShift: function Parser_tryShift() {\n try {\n this.shift();\n return true;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n // Upon failure, the caller should reset this.lexer.pos to a known good\n // state and call this.shift() twice to reset the buffers.\n return false;\n }\n },\n getObj: function Parser_getObj(cipherTransform) {\n var buf1 = this.buf1;\n this.shift();\n\n if (buf1 instanceof Cmd) {\n switch (buf1.cmd) {\n case 'BI': // inline image\n return this.makeInlineImage(cipherTransform);\n case '[': // array\n var array = [];\n while (!isCmd(this.buf1, ']') && !isEOF(this.buf1)) {\n array.push(this.getObj(cipherTransform));\n }\n if (isEOF(this.buf1)) {\n if (!this.recoveryMode) {\n throw new FormatError('End of file inside array');\n }\n return array;\n }\n this.shift();\n return array;\n case '<<': // dictionary or stream\n var dict = new Dict(this.xref);\n while (!isCmd(this.buf1, '>>') && !isEOF(this.buf1)) {\n if (!isName(this.buf1)) {\n info('Malformed dictionary: key must be a name object');\n this.shift();\n continue;\n }\n\n var key = this.buf1.name;\n this.shift();\n if (isEOF(this.buf1)) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n if (isEOF(this.buf1)) {\n if (!this.recoveryMode) {\n throw new FormatError('End of file inside dictionary');\n }\n return dict;\n }\n\n // Stream objects are not allowed inside content streams or\n // object streams.\n if (isCmd(this.buf2, 'stream')) {\n return (this.allowStreams ?\n this.makeStream(dict, cipherTransform) : dict);\n }\n this.shift();\n return dict;\n default: // simple object\n return buf1;\n }\n }\n\n if (isInt(buf1)) { // indirect reference or integer\n var num = buf1;\n if (isInt(this.buf1) && isCmd(this.buf2, 'R')) {\n var ref = new Ref(num, this.buf1);\n this.shift();\n this.shift();\n return ref;\n }\n return num;\n }\n\n if (isString(buf1)) { // string\n var str = buf1;\n if (cipherTransform) {\n str = cipherTransform.decryptString(str);\n }\n return str;\n }\n\n // simple object\n return buf1;\n },\n /**\n * Find the end of the stream by searching for the /EI\\s/.\n * @returns {number} The inline stream length.\n */\n findDefaultInlineStreamEnd:\n function Parser_findDefaultInlineStreamEnd(stream) {\n var E = 0x45, I = 0x49, SPACE = 0x20, LF = 0xA, CR = 0xD;\n var startPos = stream.pos, state = 0, ch, i, n, followingBytes;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = (ch === E) ? 1 : 0;\n } else if (state === 1) {\n state = (ch === I) ? 2 : 0;\n } else {\n assert(state === 2);\n if (ch === SPACE || ch === LF || ch === CR) {\n // Let's check the next five bytes are ASCII... just be sure.\n n = 5;\n followingBytes = stream.peekBytes(n);\n for (i = 0; i < n; i++) {\n ch = followingBytes[i];\n if (ch !== LF && ch !== CR && (ch < SPACE || ch > 0x7F)) {\n // Not a LF, CR, SPACE or any visible ASCII character, i.e.\n // it's binary stuff. Resetting the state.\n state = 0;\n break;\n }\n }\n if (state === 2) {\n break; // Finished!\n }\n } else {\n state = 0;\n }\n }\n }\n return ((stream.pos - 4) - startPos);\n },\n /**\n * Find the EOI (end-of-image) marker 0xFFD9 of the stream.\n * @returns {number} The inline stream length.\n */\n findDCTDecodeInlineStreamEnd:\n function Parser_findDCTDecodeInlineStreamEnd(stream) {\n var startPos = stream.pos, foundEOI = false, b, markerLength, length;\n while ((b = stream.getByte()) !== -1) {\n if (b !== 0xFF) { // Not a valid marker.\n continue;\n }\n switch (stream.getByte()) {\n case 0x00: // Byte stuffing.\n // 0xFF00 appears to be a very common byte sequence in JPEG images.\n break;\n\n case 0xFF: // Fill byte.\n // Avoid skipping a valid marker, resetting the stream position.\n stream.skip(-1);\n break;\n\n case 0xD9: // EOI\n foundEOI = true;\n break;\n\n case 0xC0: // SOF0\n case 0xC1: // SOF1\n case 0xC2: // SOF2\n case 0xC3: // SOF3\n /* falls through */\n case 0xC5: // SOF5\n case 0xC6: // SOF6\n case 0xC7: // SOF7\n /* falls through */\n case 0xC9: // SOF9\n case 0xCA: // SOF10\n case 0xCB: // SOF11\n /* falls through */\n case 0xCD: // SOF13\n case 0xCE: // SOF14\n case 0xCF: // SOF15\n /* falls through */\n case 0xC4: // DHT\n case 0xCC: // DAC\n /* falls through */\n case 0xDA: // SOS\n case 0xDB: // DQT\n case 0xDC: // DNL\n case 0xDD: // DRI\n case 0xDE: // DHP\n case 0xDF: // EXP\n /* falls through */\n case 0xE0: // APP0\n case 0xE1: // APP1\n case 0xE2: // APP2\n case 0xE3: // APP3\n case 0xE4: // APP4\n case 0xE5: // APP5\n case 0xE6: // APP6\n case 0xE7: // APP7\n case 0xE8: // APP8\n case 0xE9: // APP9\n case 0xEA: // APP10\n case 0xEB: // APP11\n case 0xEC: // APP12\n case 0xED: // APP13\n case 0xEE: // APP14\n case 0xEF: // APP15\n /* falls through */\n case 0xFE: // COM\n // The marker should be followed by the length of the segment.\n markerLength = stream.getUint16();\n if (markerLength > 2) {\n // |markerLength| contains the byte length of the marker segment,\n // including its own length (2 bytes) and excluding the marker.\n stream.skip(markerLength - 2); // Jump to the next marker.\n } else {\n // The marker length is invalid, resetting the stream position.\n stream.skip(-2);\n }\n break;\n }\n if (foundEOI) {\n break;\n }\n }\n length = stream.pos - startPos;\n if (b === -1) {\n warn('Inline DCTDecode image stream: ' +\n 'EOI marker not found, searching for /EI/ instead.');\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n },\n /**\n * Find the EOD (end-of-data) marker '~>' (i.e. TILDE + GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCII85DecodeInlineStreamEnd:\n function Parser_findASCII85DecodeInlineStreamEnd(stream) {\n var TILDE = 0x7E, GT = 0x3E;\n var startPos = stream.pos, ch, length;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === TILDE && stream.peekByte() === GT) {\n stream.skip();\n break;\n }\n }\n length = stream.pos - startPos;\n if (ch === -1) {\n warn('Inline ASCII85Decode image stream: ' +\n 'EOD marker not found, searching for /EI/ instead.');\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n },\n /**\n * Find the EOD (end-of-data) marker '>' (i.e. GT) of the stream.\n * @returns {number} The inline stream length.\n */\n findASCIIHexDecodeInlineStreamEnd:\n function Parser_findASCIIHexDecodeInlineStreamEnd(stream) {\n var GT = 0x3E;\n var startPos = stream.pos, ch, length;\n while ((ch = stream.getByte()) !== -1) {\n if (ch === GT) {\n break;\n }\n }\n length = stream.pos - startPos;\n if (ch === -1) {\n warn('Inline ASCIIHexDecode image stream: ' +\n 'EOD marker not found, searching for /EI/ instead.');\n stream.skip(-length); // Reset the stream position.\n return this.findDefaultInlineStreamEnd(stream);\n }\n this.inlineStreamSkipEI(stream);\n return length;\n },\n /**\n * Skip over the /EI/ for streams where we search for an EOD marker.\n */\n inlineStreamSkipEI: function Parser_inlineStreamSkipEI(stream) {\n var E = 0x45, I = 0x49;\n var state = 0, ch;\n while ((ch = stream.getByte()) !== -1) {\n if (state === 0) {\n state = (ch === E) ? 1 : 0;\n } else if (state === 1) {\n state = (ch === I) ? 2 : 0;\n } else if (state === 2) {\n break;\n }\n }\n },\n makeInlineImage: function Parser_makeInlineImage(cipherTransform) {\n var lexer = this.lexer;\n var stream = lexer.stream;\n\n // Parse dictionary.\n var dict = new Dict(this.xref);\n while (!isCmd(this.buf1, 'ID') && !isEOF(this.buf1)) {\n if (!isName(this.buf1)) {\n throw new FormatError('Dictionary key must be a name object');\n }\n var key = this.buf1.name;\n this.shift();\n if (isEOF(this.buf1)) {\n break;\n }\n dict.set(key, this.getObj(cipherTransform));\n }\n\n // Extract the name of the first (i.e. the current) image filter.\n var filter = dict.get('Filter', 'F'), filterName;\n if (isName(filter)) {\n filterName = filter.name;\n } else if (isArray(filter)) {\n var filterZero = this.xref.fetchIfRef(filter[0]);\n if (isName(filterZero)) {\n filterName = filterZero.name;\n }\n }\n\n // Parse image stream.\n var startPos = stream.pos, length, i, ii;\n if (filterName === 'DCTDecode' || filterName === 'DCT') {\n length = this.findDCTDecodeInlineStreamEnd(stream);\n } else if (filterName === 'ASCII85Decode' || filterName === 'A85') {\n length = this.findASCII85DecodeInlineStreamEnd(stream);\n } else if (filterName === 'ASCIIHexDecode' || filterName === 'AHx') {\n length = this.findASCIIHexDecodeInlineStreamEnd(stream);\n } else {\n length = this.findDefaultInlineStreamEnd(stream);\n }\n var imageStream = stream.makeSubStream(startPos, length, dict);\n\n // Cache all images below the MAX_LENGTH_TO_CACHE threshold by their\n // adler32 checksum.\n var adler32;\n if (length < MAX_LENGTH_TO_CACHE) {\n var imageBytes = imageStream.getBytes();\n imageStream.reset();\n\n var a = 1;\n var b = 0;\n for (i = 0, ii = imageBytes.length; i < ii; ++i) {\n // No modulo required in the loop if imageBytes.length < 5552.\n a += imageBytes[i] & 0xff;\n b += a;\n }\n adler32 = ((b % 65521) << 16) | (a % 65521);\n\n if (this.imageCache.adler32 === adler32) {\n this.buf2 = Cmd.get('EI');\n this.shift();\n\n this.imageCache[adler32].reset();\n return this.imageCache[adler32];\n }\n }\n\n if (cipherTransform) {\n imageStream = cipherTransform.createStream(imageStream, length);\n }\n\n imageStream = this.filter(imageStream, dict, length);\n imageStream.dict = dict;\n if (adler32 !== undefined) {\n imageStream.cacheKey = 'inline_' + length + '_' + adler32;\n this.imageCache[adler32] = imageStream;\n }\n\n this.buf2 = Cmd.get('EI');\n this.shift();\n\n return imageStream;\n },\n makeStream: function Parser_makeStream(dict, cipherTransform) {\n var lexer = this.lexer;\n var stream = lexer.stream;\n\n // get stream start position\n lexer.skipToNextLine();\n var pos = stream.pos - 1;\n\n // get length\n var length = dict.get('Length');\n if (!isInt(length)) {\n info('Bad ' + length + ' attribute in stream');\n length = 0;\n }\n\n // skip over the stream data\n stream.pos = pos + length;\n lexer.nextChar();\n\n // Shift '>>' and check whether the new object marks the end of the stream\n if (this.tryShift() && isCmd(this.buf2, 'endstream')) {\n this.shift(); // 'stream'\n } else {\n // bad stream length, scanning for endstream\n stream.pos = pos;\n var SCAN_BLOCK_SIZE = 2048;\n var ENDSTREAM_SIGNATURE_LENGTH = 9;\n var ENDSTREAM_SIGNATURE = [0x65, 0x6E, 0x64, 0x73, 0x74, 0x72, 0x65,\n 0x61, 0x6D];\n var skipped = 0, found = false, i, j;\n while (stream.pos < stream.end) {\n var scanBytes = stream.peekBytes(SCAN_BLOCK_SIZE);\n var scanLength = scanBytes.length - ENDSTREAM_SIGNATURE_LENGTH;\n if (scanLength <= 0) {\n break;\n }\n found = false;\n i = 0;\n while (i < scanLength) {\n j = 0;\n while (j < ENDSTREAM_SIGNATURE_LENGTH &&\n scanBytes[i + j] === ENDSTREAM_SIGNATURE[j]) {\n j++;\n }\n if (j >= ENDSTREAM_SIGNATURE_LENGTH) {\n found = true;\n break;\n }\n i++;\n }\n if (found) {\n skipped += i;\n stream.pos += i;\n break;\n }\n skipped += scanLength;\n stream.pos += scanLength;\n }\n if (!found) {\n throw new FormatError('Missing endstream');\n }\n length = skipped;\n\n lexer.nextChar();\n this.shift();\n this.shift();\n }\n this.shift(); // 'endstream'\n\n stream = stream.makeSubStream(pos, length, dict);\n if (cipherTransform) {\n stream = cipherTransform.createStream(stream, length);\n }\n stream = this.filter(stream, dict, length);\n stream.dict = dict;\n return stream;\n },\n filter: function Parser_filter(stream, dict, length) {\n var filter = dict.get('Filter', 'F');\n var params = dict.get('DecodeParms', 'DP');\n if (isName(filter)) {\n if (isArray(params)) {\n params = this.xref.fetchIfRef(params[0]);\n }\n return this.makeFilter(stream, filter.name, length, params);\n }\n\n var maybeLength = length;\n if (isArray(filter)) {\n var filterArray = filter;\n var paramsArray = params;\n for (var i = 0, ii = filterArray.length; i < ii; ++i) {\n filter = this.xref.fetchIfRef(filterArray[i]);\n if (!isName(filter)) {\n throw new FormatError('Bad filter name: ' + filter);\n }\n\n params = null;\n if (isArray(paramsArray) && (i in paramsArray)) {\n params = this.xref.fetchIfRef(paramsArray[i]);\n }\n stream = this.makeFilter(stream, filter.name, maybeLength, params);\n // after the first stream the length variable is invalid\n maybeLength = null;\n }\n }\n return stream;\n },\n makeFilter: function Parser_makeFilter(stream, name, maybeLength, params) {\n // Since the 'Length' entry in the stream dictionary can be completely\n // wrong, e.g. zero for non-empty streams, only skip parsing the stream\n // when we can be absolutely certain that it actually is empty.\n if (maybeLength === 0) {\n warn('Empty \"' + name + '\" stream.');\n return new NullStream(stream);\n }\n try {\n var xrefStreamStats = this.xref.stats.streamTypes;\n if (name === 'FlateDecode' || name === 'Fl') {\n xrefStreamStats[StreamType.FLATE] = true;\n if (params) {\n return new PredictorStream(new FlateStream(stream, maybeLength),\n maybeLength, params);\n }\n return new FlateStream(stream, maybeLength);\n }\n if (name === 'LZWDecode' || name === 'LZW') {\n xrefStreamStats[StreamType.LZW] = true;\n var earlyChange = 1;\n if (params) {\n if (params.has('EarlyChange')) {\n earlyChange = params.get('EarlyChange');\n }\n return new PredictorStream(\n new LZWStream(stream, maybeLength, earlyChange),\n maybeLength, params);\n }\n return new LZWStream(stream, maybeLength, earlyChange);\n }\n if (name === 'DCTDecode' || name === 'DCT') {\n xrefStreamStats[StreamType.DCT] = true;\n return new JpegStream(stream, maybeLength, stream.dict, params);\n }\n if (name === 'JPXDecode' || name === 'JPX') {\n xrefStreamStats[StreamType.JPX] = true;\n return new JpxStream(stream, maybeLength, stream.dict, params);\n }\n if (name === 'ASCII85Decode' || name === 'A85') {\n xrefStreamStats[StreamType.A85] = true;\n return new Ascii85Stream(stream, maybeLength);\n }\n if (name === 'ASCIIHexDecode' || name === 'AHx') {\n xrefStreamStats[StreamType.AHX] = true;\n return new AsciiHexStream(stream, maybeLength);\n }\n if (name === 'CCITTFaxDecode' || name === 'CCF') {\n xrefStreamStats[StreamType.CCF] = true;\n return new CCITTFaxStream(stream, maybeLength, params);\n }\n if (name === 'RunLengthDecode' || name === 'RL') {\n xrefStreamStats[StreamType.RL] = true;\n return new RunLengthStream(stream, maybeLength);\n }\n if (name === 'JBIG2Decode') {\n xrefStreamStats[StreamType.JBIG] = true;\n return new Jbig2Stream(stream, maybeLength, stream.dict, params);\n }\n warn('filter \"' + name + '\" not supported yet');\n return stream;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn('Invalid stream: \\\"' + ex + '\\\"');\n return new NullStream(stream);\n }\n },\n };\n\n return Parser;\n})();\n\nvar Lexer = (function LexerClosure() {\n function Lexer(stream, knownCommands) {\n this.stream = stream;\n this.nextChar();\n\n // While lexing, we build up many strings one char at a time. Using += for\n // this can result in lots of garbage strings. It's better to build an\n // array of single-char strings and then join() them together at the end.\n // And reusing a single array (i.e. |this.strBuf|) over and over for this\n // purpose uses less memory than using a new array for each string.\n this.strBuf = [];\n\n // The PDFs might have \"glued\" commands with other commands, operands or\n // literals, e.g. \"q1\". The knownCommands is a dictionary of the valid\n // commands and their prefixes. The prefixes are built the following way:\n // if there a command that is a prefix of the other valid command or\n // literal (e.g. 'f' and 'false') the following prefixes must be included,\n // 'fa', 'fal', 'fals'. The prefixes are not needed, if the command has no\n // other commands or literals as a prefix. The knowCommands is optional.\n this.knownCommands = knownCommands;\n }\n\n // A '1' in this array means the character is white space. A '1' or\n // '2' means the character ends a name or command.\n var specialChars = [\n 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, // 0x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1x\n 1, 0, 0, 0, 0, 2, 0, 0, 2, 2, 0, 0, 0, 0, 0, 2, // 2x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, // 3x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 4x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 5x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 6x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, // 7x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 8x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 9x\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ax\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // bx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // cx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // dx\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // ex\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // fx\n ];\n\n function toHexDigit(ch) {\n if (ch >= 0x30 && ch <= 0x39) { // '0'-'9'\n return ch & 0x0F;\n }\n if ((ch >= 0x41 && ch <= 0x46) || (ch >= 0x61 && ch <= 0x66)) {\n // 'A'-'F', 'a'-'f'\n return (ch & 0x0F) + 9;\n }\n return -1;\n }\n\n Lexer.prototype = {\n nextChar: function Lexer_nextChar() {\n return (this.currentChar = this.stream.getByte());\n },\n peekChar: function Lexer_peekChar() {\n return this.stream.peekByte();\n },\n getNumber: function Lexer_getNumber() {\n var ch = this.currentChar;\n var eNotation = false;\n var divideBy = 0; // different from 0 if it's a floating point value\n var sign = 1;\n\n if (ch === 0x2D) { // '-'\n sign = -1;\n ch = this.nextChar();\n\n if (ch === 0x2D) { // '-'\n // Ignore double negative (this is consistent with Adobe Reader).\n ch = this.nextChar();\n }\n } else if (ch === 0x2B) { // '+'\n ch = this.nextChar();\n }\n if (ch === 0x2E) { // '.'\n divideBy = 10;\n ch = this.nextChar();\n }\n if (ch === 0x0A || ch === 0x0D) { // LF, CR\n // Ignore line-breaks (this is consistent with Adobe Reader).\n do {\n ch = this.nextChar();\n } while (ch === 0x0A || ch === 0x0D);\n }\n if (ch < 0x30 || ch > 0x39) { // '0' - '9'\n throw new FormatError(\n `Invalid number: ${String.fromCharCode(ch)} (charCode ${ch})`);\n }\n\n var baseValue = ch - 0x30; // '0'\n var powerValue = 0;\n var powerValueSign = 1;\n\n while ((ch = this.nextChar()) >= 0) {\n if (0x30 <= ch && ch <= 0x39) { // '0' - '9'\n var currentDigit = ch - 0x30; // '0'\n if (eNotation) { // We are after an 'e' or 'E'\n powerValue = powerValue * 10 + currentDigit;\n } else {\n if (divideBy !== 0) { // We are after a point\n divideBy *= 10;\n }\n baseValue = baseValue * 10 + currentDigit;\n }\n } else if (ch === 0x2E) { // '.'\n if (divideBy === 0) {\n divideBy = 1;\n } else {\n // A number can have only one '.'\n break;\n }\n } else if (ch === 0x2D) { // '-'\n // ignore minus signs in the middle of numbers to match\n // Adobe's behavior\n warn('Badly formatted number');\n } else if (ch === 0x45 || ch === 0x65) { // 'E', 'e'\n // 'E' can be either a scientific notation or the beginning of a new\n // operator\n ch = this.peekChar();\n if (ch === 0x2B || ch === 0x2D) { // '+', '-'\n powerValueSign = (ch === 0x2D) ? -1 : 1;\n this.nextChar(); // Consume the sign character\n } else if (ch < 0x30 || ch > 0x39) { // '0' - '9'\n // The 'E' must be the beginning of a new operator\n break;\n }\n eNotation = true;\n } else {\n // the last character doesn't belong to us\n break;\n }\n }\n\n if (divideBy !== 0) {\n baseValue /= divideBy;\n }\n if (eNotation) {\n baseValue *= Math.pow(10, powerValueSign * powerValue);\n }\n return sign * baseValue;\n },\n getString: function Lexer_getString() {\n var numParen = 1;\n var done = false;\n var strBuf = this.strBuf;\n strBuf.length = 0;\n\n var ch = this.nextChar();\n while (true) {\n var charBuffered = false;\n switch (ch | 0) {\n case -1:\n warn('Unterminated string');\n done = true;\n break;\n case 0x28: // '('\n ++numParen;\n strBuf.push('(');\n break;\n case 0x29: // ')'\n if (--numParen === 0) {\n this.nextChar(); // consume strings ')'\n done = true;\n } else {\n strBuf.push(')');\n }\n break;\n case 0x5C: // '\\\\'\n ch = this.nextChar();\n switch (ch) {\n case -1:\n warn('Unterminated string');\n done = true;\n break;\n case 0x6E: // 'n'\n strBuf.push('\\n');\n break;\n case 0x72: // 'r'\n strBuf.push('\\r');\n break;\n case 0x74: // 't'\n strBuf.push('\\t');\n break;\n case 0x62: // 'b'\n strBuf.push('\\b');\n break;\n case 0x66: // 'f'\n strBuf.push('\\f');\n break;\n case 0x5C: // '\\'\n case 0x28: // '('\n case 0x29: // ')'\n strBuf.push(String.fromCharCode(ch));\n break;\n case 0x30: case 0x31: case 0x32: case 0x33: // '0'-'3'\n case 0x34: case 0x35: case 0x36: case 0x37: // '4'-'7'\n var x = ch & 0x0F;\n ch = this.nextChar();\n charBuffered = true;\n if (ch >= 0x30 && ch <= 0x37) { // '0'-'7'\n x = (x << 3) + (ch & 0x0F);\n ch = this.nextChar();\n if (ch >= 0x30 && ch <= 0x37) { // '0'-'7'\n charBuffered = false;\n x = (x << 3) + (ch & 0x0F);\n }\n }\n strBuf.push(String.fromCharCode(x));\n break;\n case 0x0D: // CR\n if (this.peekChar() === 0x0A) { // LF\n this.nextChar();\n }\n break;\n case 0x0A: // LF\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n break;\n default:\n strBuf.push(String.fromCharCode(ch));\n break;\n }\n if (done) {\n break;\n }\n if (!charBuffered) {\n ch = this.nextChar();\n }\n }\n return strBuf.join('');\n },\n getName: function Lexer_getName() {\n var ch, previousCh;\n var strBuf = this.strBuf;\n strBuf.length = 0;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n if (ch === 0x23) { // '#'\n ch = this.nextChar();\n if (specialChars[ch]) {\n warn('Lexer_getName: ' +\n 'NUMBER SIGN (#) should be followed by a hexadecimal number.');\n strBuf.push('#');\n break;\n }\n var x = toHexDigit(ch);\n if (x !== -1) {\n previousCh = ch;\n ch = this.nextChar();\n var x2 = toHexDigit(ch);\n if (x2 === -1) {\n warn('Lexer_getName: Illegal digit (' +\n String.fromCharCode(ch) + ') in hexadecimal number.');\n strBuf.push('#', String.fromCharCode(previousCh));\n if (specialChars[ch]) {\n break;\n }\n strBuf.push(String.fromCharCode(ch));\n continue;\n }\n strBuf.push(String.fromCharCode((x << 4) | x2));\n } else {\n strBuf.push('#', String.fromCharCode(ch));\n }\n } else {\n strBuf.push(String.fromCharCode(ch));\n }\n }\n if (strBuf.length > 127) {\n warn('name token is longer than allowed by the spec: ' + strBuf.length);\n }\n return Name.get(strBuf.join(''));\n },\n getHexString: function Lexer_getHexString() {\n var strBuf = this.strBuf;\n strBuf.length = 0;\n var ch = this.currentChar;\n var isFirstHex = true;\n var firstDigit;\n var secondDigit;\n while (true) {\n if (ch < 0) {\n warn('Unterminated hex string');\n break;\n } else if (ch === 0x3E) { // '>'\n this.nextChar();\n break;\n } else if (specialChars[ch] === 1) {\n ch = this.nextChar();\n continue;\n } else {\n if (isFirstHex) {\n firstDigit = toHexDigit(ch);\n if (firstDigit === -1) {\n warn('Ignoring invalid character \"' + ch + '\" in hex string');\n ch = this.nextChar();\n continue;\n }\n } else {\n secondDigit = toHexDigit(ch);\n if (secondDigit === -1) {\n warn('Ignoring invalid character \"' + ch + '\" in hex string');\n ch = this.nextChar();\n continue;\n }\n strBuf.push(String.fromCharCode((firstDigit << 4) | secondDigit));\n }\n isFirstHex = !isFirstHex;\n ch = this.nextChar();\n }\n }\n return strBuf.join('');\n },\n getObj: function Lexer_getObj() {\n // skip whitespace and comments\n var comment = false;\n var ch = this.currentChar;\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n if (comment) {\n if (ch === 0x0A || ch === 0x0D) { // LF, CR\n comment = false;\n }\n } else if (ch === 0x25) { // '%'\n comment = true;\n } else if (specialChars[ch] !== 1) {\n break;\n }\n ch = this.nextChar();\n }\n\n // start reading token\n switch (ch | 0) {\n case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'\n case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'\n case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'\n return this.getNumber();\n case 0x28: // '('\n return this.getString();\n case 0x2F: // '/'\n return this.getName();\n // array punctuation\n case 0x5B: // '['\n this.nextChar();\n return Cmd.get('[');\n case 0x5D: // ']'\n this.nextChar();\n return Cmd.get(']');\n // hex string or dict punctuation\n case 0x3C: // '<'\n ch = this.nextChar();\n if (ch === 0x3C) {\n // dict punctuation\n this.nextChar();\n return Cmd.get('<<');\n }\n return this.getHexString();\n // dict punctuation\n case 0x3E: // '>'\n ch = this.nextChar();\n if (ch === 0x3E) {\n this.nextChar();\n return Cmd.get('>>');\n }\n return Cmd.get('>');\n case 0x7B: // '{'\n this.nextChar();\n return Cmd.get('{');\n case 0x7D: // '}'\n this.nextChar();\n return Cmd.get('}');\n case 0x29: // ')'\n // Consume the current character in order to avoid permanently hanging\n // the worker thread if `Lexer.getObject` is called from within a loop\n // containing try-catch statements, since we would otherwise attempt\n // to parse the *same* character over and over (fixes issue8061.pdf).\n this.nextChar();\n throw new FormatError(`Illegal character: ${ch}`);\n }\n\n // command\n var str = String.fromCharCode(ch);\n var knownCommands = this.knownCommands;\n var knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n while ((ch = this.nextChar()) >= 0 && !specialChars[ch]) {\n // stop if known command is found and next character does not make\n // the str a command\n var possibleCommand = str + String.fromCharCode(ch);\n if (knownCommandFound && knownCommands[possibleCommand] === undefined) {\n break;\n }\n if (str.length === 128) {\n throw new FormatError(`Command token too long: ${str.length}`);\n }\n str = possibleCommand;\n knownCommandFound = knownCommands && knownCommands[str] !== undefined;\n }\n if (str === 'true') {\n return true;\n }\n if (str === 'false') {\n return false;\n }\n if (str === 'null') {\n return null;\n }\n return Cmd.get(str);\n },\n skipToNextLine: function Lexer_skipToNextLine() {\n var ch = this.currentChar;\n while (ch >= 0) {\n if (ch === 0x0D) { // CR\n ch = this.nextChar();\n if (ch === 0x0A) { // LF\n this.nextChar();\n }\n break;\n } else if (ch === 0x0A) { // LF\n this.nextChar();\n break;\n }\n ch = this.nextChar();\n }\n },\n };\n\n return Lexer;\n})();\n\nvar Linearization = {\n create: function LinearizationCreate(stream) {\n function getInt(name, allowZeroValue) {\n var obj = linDict.get(name);\n if (isInt(obj) && (allowZeroValue ? obj >= 0 : obj > 0)) {\n return obj;\n }\n throw new Error('The \"' + name + '\" parameter in the linearization ' +\n 'dictionary is invalid.');\n }\n function getHints() {\n var hints = linDict.get('H'), hintsLength, item;\n if (isArray(hints) &&\n ((hintsLength = hints.length) === 2 || hintsLength === 4)) {\n for (var index = 0; index < hintsLength; index++) {\n if (!(isInt(item = hints[index]) && item > 0)) {\n throw new Error('Hint (' + index +\n ') in the linearization dictionary is invalid.');\n }\n }\n return hints;\n }\n throw new Error('Hint array in the linearization dictionary is invalid.');\n }\n var parser = new Parser(new Lexer(stream), false, null);\n var obj1 = parser.getObj();\n var obj2 = parser.getObj();\n var obj3 = parser.getObj();\n var linDict = parser.getObj();\n var obj, length;\n if (!(isInt(obj1) && isInt(obj2) && isCmd(obj3, 'obj') && isDict(linDict) &&\n isNum(obj = linDict.get('Linearized')) && obj > 0)) {\n return null; // No valid linearization dictionary found.\n } else if ((length = getInt('L')) !== stream.length) {\n throw new Error('The \"L\" parameter in the linearization dictionary ' +\n 'does not equal the stream length.');\n }\n return {\n length,\n hints: getHints(),\n objectNumberFirst: getInt('O'),\n endFirst: getInt('E'),\n numPages: getInt('N'),\n mainXRefEntriesOffset: getInt('T'),\n pageFirst: (linDict.has('P') ? getInt('P', true) : 0),\n };\n },\n};\n\nexport {\n Lexer,\n Linearization,\n Parser,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/parser.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require('../shared/util').getLookupTableFactory;\n\nvar getGlyphsUnicode = getLookupTableFactory(function (t) {\n t['A'] = 0x0041;\n t['AE'] = 0x00C6;\n t['AEacute'] = 0x01FC;\n t['AEmacron'] = 0x01E2;\n t['AEsmall'] = 0xF7E6;\n t['Aacute'] = 0x00C1;\n t['Aacutesmall'] = 0xF7E1;\n t['Abreve'] = 0x0102;\n t['Abreveacute'] = 0x1EAE;\n t['Abrevecyrillic'] = 0x04D0;\n t['Abrevedotbelow'] = 0x1EB6;\n t['Abrevegrave'] = 0x1EB0;\n t['Abrevehookabove'] = 0x1EB2;\n t['Abrevetilde'] = 0x1EB4;\n t['Acaron'] = 0x01CD;\n t['Acircle'] = 0x24B6;\n t['Acircumflex'] = 0x00C2;\n t['Acircumflexacute'] = 0x1EA4;\n t['Acircumflexdotbelow'] = 0x1EAC;\n t['Acircumflexgrave'] = 0x1EA6;\n t['Acircumflexhookabove'] = 0x1EA8;\n t['Acircumflexsmall'] = 0xF7E2;\n t['Acircumflextilde'] = 0x1EAA;\n t['Acute'] = 0xF6C9;\n t['Acutesmall'] = 0xF7B4;\n t['Acyrillic'] = 0x0410;\n t['Adblgrave'] = 0x0200;\n t['Adieresis'] = 0x00C4;\n t['Adieresiscyrillic'] = 0x04D2;\n t['Adieresismacron'] = 0x01DE;\n t['Adieresissmall'] = 0xF7E4;\n t['Adotbelow'] = 0x1EA0;\n t['Adotmacron'] = 0x01E0;\n t['Agrave'] = 0x00C0;\n t['Agravesmall'] = 0xF7E0;\n t['Ahookabove'] = 0x1EA2;\n t['Aiecyrillic'] = 0x04D4;\n t['Ainvertedbreve'] = 0x0202;\n t['Alpha'] = 0x0391;\n t['Alphatonos'] = 0x0386;\n t['Amacron'] = 0x0100;\n t['Amonospace'] = 0xFF21;\n t['Aogonek'] = 0x0104;\n t['Aring'] = 0x00C5;\n t['Aringacute'] = 0x01FA;\n t['Aringbelow'] = 0x1E00;\n t['Aringsmall'] = 0xF7E5;\n t['Asmall'] = 0xF761;\n t['Atilde'] = 0x00C3;\n t['Atildesmall'] = 0xF7E3;\n t['Aybarmenian'] = 0x0531;\n t['B'] = 0x0042;\n t['Bcircle'] = 0x24B7;\n t['Bdotaccent'] = 0x1E02;\n t['Bdotbelow'] = 0x1E04;\n t['Becyrillic'] = 0x0411;\n t['Benarmenian'] = 0x0532;\n t['Beta'] = 0x0392;\n t['Bhook'] = 0x0181;\n t['Blinebelow'] = 0x1E06;\n t['Bmonospace'] = 0xFF22;\n t['Brevesmall'] = 0xF6F4;\n t['Bsmall'] = 0xF762;\n t['Btopbar'] = 0x0182;\n t['C'] = 0x0043;\n t['Caarmenian'] = 0x053E;\n t['Cacute'] = 0x0106;\n t['Caron'] = 0xF6CA;\n t['Caronsmall'] = 0xF6F5;\n t['Ccaron'] = 0x010C;\n t['Ccedilla'] = 0x00C7;\n t['Ccedillaacute'] = 0x1E08;\n t['Ccedillasmall'] = 0xF7E7;\n t['Ccircle'] = 0x24B8;\n t['Ccircumflex'] = 0x0108;\n t['Cdot'] = 0x010A;\n t['Cdotaccent'] = 0x010A;\n t['Cedillasmall'] = 0xF7B8;\n t['Chaarmenian'] = 0x0549;\n t['Cheabkhasiancyrillic'] = 0x04BC;\n t['Checyrillic'] = 0x0427;\n t['Chedescenderabkhasiancyrillic'] = 0x04BE;\n t['Chedescendercyrillic'] = 0x04B6;\n t['Chedieresiscyrillic'] = 0x04F4;\n t['Cheharmenian'] = 0x0543;\n t['Chekhakassiancyrillic'] = 0x04CB;\n t['Cheverticalstrokecyrillic'] = 0x04B8;\n t['Chi'] = 0x03A7;\n t['Chook'] = 0x0187;\n t['Circumflexsmall'] = 0xF6F6;\n t['Cmonospace'] = 0xFF23;\n t['Coarmenian'] = 0x0551;\n t['Csmall'] = 0xF763;\n t['D'] = 0x0044;\n t['DZ'] = 0x01F1;\n t['DZcaron'] = 0x01C4;\n t['Daarmenian'] = 0x0534;\n t['Dafrican'] = 0x0189;\n t['Dcaron'] = 0x010E;\n t['Dcedilla'] = 0x1E10;\n t['Dcircle'] = 0x24B9;\n t['Dcircumflexbelow'] = 0x1E12;\n t['Dcroat'] = 0x0110;\n t['Ddotaccent'] = 0x1E0A;\n t['Ddotbelow'] = 0x1E0C;\n t['Decyrillic'] = 0x0414;\n t['Deicoptic'] = 0x03EE;\n t['Delta'] = 0x2206;\n t['Deltagreek'] = 0x0394;\n t['Dhook'] = 0x018A;\n t['Dieresis'] = 0xF6CB;\n t['DieresisAcute'] = 0xF6CC;\n t['DieresisGrave'] = 0xF6CD;\n t['Dieresissmall'] = 0xF7A8;\n t['Digammagreek'] = 0x03DC;\n t['Djecyrillic'] = 0x0402;\n t['Dlinebelow'] = 0x1E0E;\n t['Dmonospace'] = 0xFF24;\n t['Dotaccentsmall'] = 0xF6F7;\n t['Dslash'] = 0x0110;\n t['Dsmall'] = 0xF764;\n t['Dtopbar'] = 0x018B;\n t['Dz'] = 0x01F2;\n t['Dzcaron'] = 0x01C5;\n t['Dzeabkhasiancyrillic'] = 0x04E0;\n t['Dzecyrillic'] = 0x0405;\n t['Dzhecyrillic'] = 0x040F;\n t['E'] = 0x0045;\n t['Eacute'] = 0x00C9;\n t['Eacutesmall'] = 0xF7E9;\n t['Ebreve'] = 0x0114;\n t['Ecaron'] = 0x011A;\n t['Ecedillabreve'] = 0x1E1C;\n t['Echarmenian'] = 0x0535;\n t['Ecircle'] = 0x24BA;\n t['Ecircumflex'] = 0x00CA;\n t['Ecircumflexacute'] = 0x1EBE;\n t['Ecircumflexbelow'] = 0x1E18;\n t['Ecircumflexdotbelow'] = 0x1EC6;\n t['Ecircumflexgrave'] = 0x1EC0;\n t['Ecircumflexhookabove'] = 0x1EC2;\n t['Ecircumflexsmall'] = 0xF7EA;\n t['Ecircumflextilde'] = 0x1EC4;\n t['Ecyrillic'] = 0x0404;\n t['Edblgrave'] = 0x0204;\n t['Edieresis'] = 0x00CB;\n t['Edieresissmall'] = 0xF7EB;\n t['Edot'] = 0x0116;\n t['Edotaccent'] = 0x0116;\n t['Edotbelow'] = 0x1EB8;\n t['Efcyrillic'] = 0x0424;\n t['Egrave'] = 0x00C8;\n t['Egravesmall'] = 0xF7E8;\n t['Eharmenian'] = 0x0537;\n t['Ehookabove'] = 0x1EBA;\n t['Eightroman'] = 0x2167;\n t['Einvertedbreve'] = 0x0206;\n t['Eiotifiedcyrillic'] = 0x0464;\n t['Elcyrillic'] = 0x041B;\n t['Elevenroman'] = 0x216A;\n t['Emacron'] = 0x0112;\n t['Emacronacute'] = 0x1E16;\n t['Emacrongrave'] = 0x1E14;\n t['Emcyrillic'] = 0x041C;\n t['Emonospace'] = 0xFF25;\n t['Encyrillic'] = 0x041D;\n t['Endescendercyrillic'] = 0x04A2;\n t['Eng'] = 0x014A;\n t['Enghecyrillic'] = 0x04A4;\n t['Enhookcyrillic'] = 0x04C7;\n t['Eogonek'] = 0x0118;\n t['Eopen'] = 0x0190;\n t['Epsilon'] = 0x0395;\n t['Epsilontonos'] = 0x0388;\n t['Ercyrillic'] = 0x0420;\n t['Ereversed'] = 0x018E;\n t['Ereversedcyrillic'] = 0x042D;\n t['Escyrillic'] = 0x0421;\n t['Esdescendercyrillic'] = 0x04AA;\n t['Esh'] = 0x01A9;\n t['Esmall'] = 0xF765;\n t['Eta'] = 0x0397;\n t['Etarmenian'] = 0x0538;\n t['Etatonos'] = 0x0389;\n t['Eth'] = 0x00D0;\n t['Ethsmall'] = 0xF7F0;\n t['Etilde'] = 0x1EBC;\n t['Etildebelow'] = 0x1E1A;\n t['Euro'] = 0x20AC;\n t['Ezh'] = 0x01B7;\n t['Ezhcaron'] = 0x01EE;\n t['Ezhreversed'] = 0x01B8;\n t['F'] = 0x0046;\n t['Fcircle'] = 0x24BB;\n t['Fdotaccent'] = 0x1E1E;\n t['Feharmenian'] = 0x0556;\n t['Feicoptic'] = 0x03E4;\n t['Fhook'] = 0x0191;\n t['Fitacyrillic'] = 0x0472;\n t['Fiveroman'] = 0x2164;\n t['Fmonospace'] = 0xFF26;\n t['Fourroman'] = 0x2163;\n t['Fsmall'] = 0xF766;\n t['G'] = 0x0047;\n t['GBsquare'] = 0x3387;\n t['Gacute'] = 0x01F4;\n t['Gamma'] = 0x0393;\n t['Gammaafrican'] = 0x0194;\n t['Gangiacoptic'] = 0x03EA;\n t['Gbreve'] = 0x011E;\n t['Gcaron'] = 0x01E6;\n t['Gcedilla'] = 0x0122;\n t['Gcircle'] = 0x24BC;\n t['Gcircumflex'] = 0x011C;\n t['Gcommaaccent'] = 0x0122;\n t['Gdot'] = 0x0120;\n t['Gdotaccent'] = 0x0120;\n t['Gecyrillic'] = 0x0413;\n t['Ghadarmenian'] = 0x0542;\n t['Ghemiddlehookcyrillic'] = 0x0494;\n t['Ghestrokecyrillic'] = 0x0492;\n t['Gheupturncyrillic'] = 0x0490;\n t['Ghook'] = 0x0193;\n t['Gimarmenian'] = 0x0533;\n t['Gjecyrillic'] = 0x0403;\n t['Gmacron'] = 0x1E20;\n t['Gmonospace'] = 0xFF27;\n t['Grave'] = 0xF6CE;\n t['Gravesmall'] = 0xF760;\n t['Gsmall'] = 0xF767;\n t['Gsmallhook'] = 0x029B;\n t['Gstroke'] = 0x01E4;\n t['H'] = 0x0048;\n t['H18533'] = 0x25CF;\n t['H18543'] = 0x25AA;\n t['H18551'] = 0x25AB;\n t['H22073'] = 0x25A1;\n t['HPsquare'] = 0x33CB;\n t['Haabkhasiancyrillic'] = 0x04A8;\n t['Hadescendercyrillic'] = 0x04B2;\n t['Hardsigncyrillic'] = 0x042A;\n t['Hbar'] = 0x0126;\n t['Hbrevebelow'] = 0x1E2A;\n t['Hcedilla'] = 0x1E28;\n t['Hcircle'] = 0x24BD;\n t['Hcircumflex'] = 0x0124;\n t['Hdieresis'] = 0x1E26;\n t['Hdotaccent'] = 0x1E22;\n t['Hdotbelow'] = 0x1E24;\n t['Hmonospace'] = 0xFF28;\n t['Hoarmenian'] = 0x0540;\n t['Horicoptic'] = 0x03E8;\n t['Hsmall'] = 0xF768;\n t['Hungarumlaut'] = 0xF6CF;\n t['Hungarumlautsmall'] = 0xF6F8;\n t['Hzsquare'] = 0x3390;\n t['I'] = 0x0049;\n t['IAcyrillic'] = 0x042F;\n t['IJ'] = 0x0132;\n t['IUcyrillic'] = 0x042E;\n t['Iacute'] = 0x00CD;\n t['Iacutesmall'] = 0xF7ED;\n t['Ibreve'] = 0x012C;\n t['Icaron'] = 0x01CF;\n t['Icircle'] = 0x24BE;\n t['Icircumflex'] = 0x00CE;\n t['Icircumflexsmall'] = 0xF7EE;\n t['Icyrillic'] = 0x0406;\n t['Idblgrave'] = 0x0208;\n t['Idieresis'] = 0x00CF;\n t['Idieresisacute'] = 0x1E2E;\n t['Idieresiscyrillic'] = 0x04E4;\n t['Idieresissmall'] = 0xF7EF;\n t['Idot'] = 0x0130;\n t['Idotaccent'] = 0x0130;\n t['Idotbelow'] = 0x1ECA;\n t['Iebrevecyrillic'] = 0x04D6;\n t['Iecyrillic'] = 0x0415;\n t['Ifraktur'] = 0x2111;\n t['Igrave'] = 0x00CC;\n t['Igravesmall'] = 0xF7EC;\n t['Ihookabove'] = 0x1EC8;\n t['Iicyrillic'] = 0x0418;\n t['Iinvertedbreve'] = 0x020A;\n t['Iishortcyrillic'] = 0x0419;\n t['Imacron'] = 0x012A;\n t['Imacroncyrillic'] = 0x04E2;\n t['Imonospace'] = 0xFF29;\n t['Iniarmenian'] = 0x053B;\n t['Iocyrillic'] = 0x0401;\n t['Iogonek'] = 0x012E;\n t['Iota'] = 0x0399;\n t['Iotaafrican'] = 0x0196;\n t['Iotadieresis'] = 0x03AA;\n t['Iotatonos'] = 0x038A;\n t['Ismall'] = 0xF769;\n t['Istroke'] = 0x0197;\n t['Itilde'] = 0x0128;\n t['Itildebelow'] = 0x1E2C;\n t['Izhitsacyrillic'] = 0x0474;\n t['Izhitsadblgravecyrillic'] = 0x0476;\n t['J'] = 0x004A;\n t['Jaarmenian'] = 0x0541;\n t['Jcircle'] = 0x24BF;\n t['Jcircumflex'] = 0x0134;\n t['Jecyrillic'] = 0x0408;\n t['Jheharmenian'] = 0x054B;\n t['Jmonospace'] = 0xFF2A;\n t['Jsmall'] = 0xF76A;\n t['K'] = 0x004B;\n t['KBsquare'] = 0x3385;\n t['KKsquare'] = 0x33CD;\n t['Kabashkircyrillic'] = 0x04A0;\n t['Kacute'] = 0x1E30;\n t['Kacyrillic'] = 0x041A;\n t['Kadescendercyrillic'] = 0x049A;\n t['Kahookcyrillic'] = 0x04C3;\n t['Kappa'] = 0x039A;\n t['Kastrokecyrillic'] = 0x049E;\n t['Kaverticalstrokecyrillic'] = 0x049C;\n t['Kcaron'] = 0x01E8;\n t['Kcedilla'] = 0x0136;\n t['Kcircle'] = 0x24C0;\n t['Kcommaaccent'] = 0x0136;\n t['Kdotbelow'] = 0x1E32;\n t['Keharmenian'] = 0x0554;\n t['Kenarmenian'] = 0x053F;\n t['Khacyrillic'] = 0x0425;\n t['Kheicoptic'] = 0x03E6;\n t['Khook'] = 0x0198;\n t['Kjecyrillic'] = 0x040C;\n t['Klinebelow'] = 0x1E34;\n t['Kmonospace'] = 0xFF2B;\n t['Koppacyrillic'] = 0x0480;\n t['Koppagreek'] = 0x03DE;\n t['Ksicyrillic'] = 0x046E;\n t['Ksmall'] = 0xF76B;\n t['L'] = 0x004C;\n t['LJ'] = 0x01C7;\n t['LL'] = 0xF6BF;\n t['Lacute'] = 0x0139;\n t['Lambda'] = 0x039B;\n t['Lcaron'] = 0x013D;\n t['Lcedilla'] = 0x013B;\n t['Lcircle'] = 0x24C1;\n t['Lcircumflexbelow'] = 0x1E3C;\n t['Lcommaaccent'] = 0x013B;\n t['Ldot'] = 0x013F;\n t['Ldotaccent'] = 0x013F;\n t['Ldotbelow'] = 0x1E36;\n t['Ldotbelowmacron'] = 0x1E38;\n t['Liwnarmenian'] = 0x053C;\n t['Lj'] = 0x01C8;\n t['Ljecyrillic'] = 0x0409;\n t['Llinebelow'] = 0x1E3A;\n t['Lmonospace'] = 0xFF2C;\n t['Lslash'] = 0x0141;\n t['Lslashsmall'] = 0xF6F9;\n t['Lsmall'] = 0xF76C;\n t['M'] = 0x004D;\n t['MBsquare'] = 0x3386;\n t['Macron'] = 0xF6D0;\n t['Macronsmall'] = 0xF7AF;\n t['Macute'] = 0x1E3E;\n t['Mcircle'] = 0x24C2;\n t['Mdotaccent'] = 0x1E40;\n t['Mdotbelow'] = 0x1E42;\n t['Menarmenian'] = 0x0544;\n t['Mmonospace'] = 0xFF2D;\n t['Msmall'] = 0xF76D;\n t['Mturned'] = 0x019C;\n t['Mu'] = 0x039C;\n t['N'] = 0x004E;\n t['NJ'] = 0x01CA;\n t['Nacute'] = 0x0143;\n t['Ncaron'] = 0x0147;\n t['Ncedilla'] = 0x0145;\n t['Ncircle'] = 0x24C3;\n t['Ncircumflexbelow'] = 0x1E4A;\n t['Ncommaaccent'] = 0x0145;\n t['Ndotaccent'] = 0x1E44;\n t['Ndotbelow'] = 0x1E46;\n t['Nhookleft'] = 0x019D;\n t['Nineroman'] = 0x2168;\n t['Nj'] = 0x01CB;\n t['Njecyrillic'] = 0x040A;\n t['Nlinebelow'] = 0x1E48;\n t['Nmonospace'] = 0xFF2E;\n t['Nowarmenian'] = 0x0546;\n t['Nsmall'] = 0xF76E;\n t['Ntilde'] = 0x00D1;\n t['Ntildesmall'] = 0xF7F1;\n t['Nu'] = 0x039D;\n t['O'] = 0x004F;\n t['OE'] = 0x0152;\n t['OEsmall'] = 0xF6FA;\n t['Oacute'] = 0x00D3;\n t['Oacutesmall'] = 0xF7F3;\n t['Obarredcyrillic'] = 0x04E8;\n t['Obarreddieresiscyrillic'] = 0x04EA;\n t['Obreve'] = 0x014E;\n t['Ocaron'] = 0x01D1;\n t['Ocenteredtilde'] = 0x019F;\n t['Ocircle'] = 0x24C4;\n t['Ocircumflex'] = 0x00D4;\n t['Ocircumflexacute'] = 0x1ED0;\n t['Ocircumflexdotbelow'] = 0x1ED8;\n t['Ocircumflexgrave'] = 0x1ED2;\n t['Ocircumflexhookabove'] = 0x1ED4;\n t['Ocircumflexsmall'] = 0xF7F4;\n t['Ocircumflextilde'] = 0x1ED6;\n t['Ocyrillic'] = 0x041E;\n t['Odblacute'] = 0x0150;\n t['Odblgrave'] = 0x020C;\n t['Odieresis'] = 0x00D6;\n t['Odieresiscyrillic'] = 0x04E6;\n t['Odieresissmall'] = 0xF7F6;\n t['Odotbelow'] = 0x1ECC;\n t['Ogoneksmall'] = 0xF6FB;\n t['Ograve'] = 0x00D2;\n t['Ogravesmall'] = 0xF7F2;\n t['Oharmenian'] = 0x0555;\n t['Ohm'] = 0x2126;\n t['Ohookabove'] = 0x1ECE;\n t['Ohorn'] = 0x01A0;\n t['Ohornacute'] = 0x1EDA;\n t['Ohorndotbelow'] = 0x1EE2;\n t['Ohorngrave'] = 0x1EDC;\n t['Ohornhookabove'] = 0x1EDE;\n t['Ohorntilde'] = 0x1EE0;\n t['Ohungarumlaut'] = 0x0150;\n t['Oi'] = 0x01A2;\n t['Oinvertedbreve'] = 0x020E;\n t['Omacron'] = 0x014C;\n t['Omacronacute'] = 0x1E52;\n t['Omacrongrave'] = 0x1E50;\n t['Omega'] = 0x2126;\n t['Omegacyrillic'] = 0x0460;\n t['Omegagreek'] = 0x03A9;\n t['Omegaroundcyrillic'] = 0x047A;\n t['Omegatitlocyrillic'] = 0x047C;\n t['Omegatonos'] = 0x038F;\n t['Omicron'] = 0x039F;\n t['Omicrontonos'] = 0x038C;\n t['Omonospace'] = 0xFF2F;\n t['Oneroman'] = 0x2160;\n t['Oogonek'] = 0x01EA;\n t['Oogonekmacron'] = 0x01EC;\n t['Oopen'] = 0x0186;\n t['Oslash'] = 0x00D8;\n t['Oslashacute'] = 0x01FE;\n t['Oslashsmall'] = 0xF7F8;\n t['Osmall'] = 0xF76F;\n t['Ostrokeacute'] = 0x01FE;\n t['Otcyrillic'] = 0x047E;\n t['Otilde'] = 0x00D5;\n t['Otildeacute'] = 0x1E4C;\n t['Otildedieresis'] = 0x1E4E;\n t['Otildesmall'] = 0xF7F5;\n t['P'] = 0x0050;\n t['Pacute'] = 0x1E54;\n t['Pcircle'] = 0x24C5;\n t['Pdotaccent'] = 0x1E56;\n t['Pecyrillic'] = 0x041F;\n t['Peharmenian'] = 0x054A;\n t['Pemiddlehookcyrillic'] = 0x04A6;\n t['Phi'] = 0x03A6;\n t['Phook'] = 0x01A4;\n t['Pi'] = 0x03A0;\n t['Piwrarmenian'] = 0x0553;\n t['Pmonospace'] = 0xFF30;\n t['Psi'] = 0x03A8;\n t['Psicyrillic'] = 0x0470;\n t['Psmall'] = 0xF770;\n t['Q'] = 0x0051;\n t['Qcircle'] = 0x24C6;\n t['Qmonospace'] = 0xFF31;\n t['Qsmall'] = 0xF771;\n t['R'] = 0x0052;\n t['Raarmenian'] = 0x054C;\n t['Racute'] = 0x0154;\n t['Rcaron'] = 0x0158;\n t['Rcedilla'] = 0x0156;\n t['Rcircle'] = 0x24C7;\n t['Rcommaaccent'] = 0x0156;\n t['Rdblgrave'] = 0x0210;\n t['Rdotaccent'] = 0x1E58;\n t['Rdotbelow'] = 0x1E5A;\n t['Rdotbelowmacron'] = 0x1E5C;\n t['Reharmenian'] = 0x0550;\n t['Rfraktur'] = 0x211C;\n t['Rho'] = 0x03A1;\n t['Ringsmall'] = 0xF6FC;\n t['Rinvertedbreve'] = 0x0212;\n t['Rlinebelow'] = 0x1E5E;\n t['Rmonospace'] = 0xFF32;\n t['Rsmall'] = 0xF772;\n t['Rsmallinverted'] = 0x0281;\n t['Rsmallinvertedsuperior'] = 0x02B6;\n t['S'] = 0x0053;\n t['SF010000'] = 0x250C;\n t['SF020000'] = 0x2514;\n t['SF030000'] = 0x2510;\n t['SF040000'] = 0x2518;\n t['SF050000'] = 0x253C;\n t['SF060000'] = 0x252C;\n t['SF070000'] = 0x2534;\n t['SF080000'] = 0x251C;\n t['SF090000'] = 0x2524;\n t['SF100000'] = 0x2500;\n t['SF110000'] = 0x2502;\n t['SF190000'] = 0x2561;\n t['SF200000'] = 0x2562;\n t['SF210000'] = 0x2556;\n t['SF220000'] = 0x2555;\n t['SF230000'] = 0x2563;\n t['SF240000'] = 0x2551;\n t['SF250000'] = 0x2557;\n t['SF260000'] = 0x255D;\n t['SF270000'] = 0x255C;\n t['SF280000'] = 0x255B;\n t['SF360000'] = 0x255E;\n t['SF370000'] = 0x255F;\n t['SF380000'] = 0x255A;\n t['SF390000'] = 0x2554;\n t['SF400000'] = 0x2569;\n t['SF410000'] = 0x2566;\n t['SF420000'] = 0x2560;\n t['SF430000'] = 0x2550;\n t['SF440000'] = 0x256C;\n t['SF450000'] = 0x2567;\n t['SF460000'] = 0x2568;\n t['SF470000'] = 0x2564;\n t['SF480000'] = 0x2565;\n t['SF490000'] = 0x2559;\n t['SF500000'] = 0x2558;\n t['SF510000'] = 0x2552;\n t['SF520000'] = 0x2553;\n t['SF530000'] = 0x256B;\n t['SF540000'] = 0x256A;\n t['Sacute'] = 0x015A;\n t['Sacutedotaccent'] = 0x1E64;\n t['Sampigreek'] = 0x03E0;\n t['Scaron'] = 0x0160;\n t['Scarondotaccent'] = 0x1E66;\n t['Scaronsmall'] = 0xF6FD;\n t['Scedilla'] = 0x015E;\n t['Schwa'] = 0x018F;\n t['Schwacyrillic'] = 0x04D8;\n t['Schwadieresiscyrillic'] = 0x04DA;\n t['Scircle'] = 0x24C8;\n t['Scircumflex'] = 0x015C;\n t['Scommaaccent'] = 0x0218;\n t['Sdotaccent'] = 0x1E60;\n t['Sdotbelow'] = 0x1E62;\n t['Sdotbelowdotaccent'] = 0x1E68;\n t['Seharmenian'] = 0x054D;\n t['Sevenroman'] = 0x2166;\n t['Shaarmenian'] = 0x0547;\n t['Shacyrillic'] = 0x0428;\n t['Shchacyrillic'] = 0x0429;\n t['Sheicoptic'] = 0x03E2;\n t['Shhacyrillic'] = 0x04BA;\n t['Shimacoptic'] = 0x03EC;\n t['Sigma'] = 0x03A3;\n t['Sixroman'] = 0x2165;\n t['Smonospace'] = 0xFF33;\n t['Softsigncyrillic'] = 0x042C;\n t['Ssmall'] = 0xF773;\n t['Stigmagreek'] = 0x03DA;\n t['T'] = 0x0054;\n t['Tau'] = 0x03A4;\n t['Tbar'] = 0x0166;\n t['Tcaron'] = 0x0164;\n t['Tcedilla'] = 0x0162;\n t['Tcircle'] = 0x24C9;\n t['Tcircumflexbelow'] = 0x1E70;\n t['Tcommaaccent'] = 0x0162;\n t['Tdotaccent'] = 0x1E6A;\n t['Tdotbelow'] = 0x1E6C;\n t['Tecyrillic'] = 0x0422;\n t['Tedescendercyrillic'] = 0x04AC;\n t['Tenroman'] = 0x2169;\n t['Tetsecyrillic'] = 0x04B4;\n t['Theta'] = 0x0398;\n t['Thook'] = 0x01AC;\n t['Thorn'] = 0x00DE;\n t['Thornsmall'] = 0xF7FE;\n t['Threeroman'] = 0x2162;\n t['Tildesmall'] = 0xF6FE;\n t['Tiwnarmenian'] = 0x054F;\n t['Tlinebelow'] = 0x1E6E;\n t['Tmonospace'] = 0xFF34;\n t['Toarmenian'] = 0x0539;\n t['Tonefive'] = 0x01BC;\n t['Tonesix'] = 0x0184;\n t['Tonetwo'] = 0x01A7;\n t['Tretroflexhook'] = 0x01AE;\n t['Tsecyrillic'] = 0x0426;\n t['Tshecyrillic'] = 0x040B;\n t['Tsmall'] = 0xF774;\n t['Twelveroman'] = 0x216B;\n t['Tworoman'] = 0x2161;\n t['U'] = 0x0055;\n t['Uacute'] = 0x00DA;\n t['Uacutesmall'] = 0xF7FA;\n t['Ubreve'] = 0x016C;\n t['Ucaron'] = 0x01D3;\n t['Ucircle'] = 0x24CA;\n t['Ucircumflex'] = 0x00DB;\n t['Ucircumflexbelow'] = 0x1E76;\n t['Ucircumflexsmall'] = 0xF7FB;\n t['Ucyrillic'] = 0x0423;\n t['Udblacute'] = 0x0170;\n t['Udblgrave'] = 0x0214;\n t['Udieresis'] = 0x00DC;\n t['Udieresisacute'] = 0x01D7;\n t['Udieresisbelow'] = 0x1E72;\n t['Udieresiscaron'] = 0x01D9;\n t['Udieresiscyrillic'] = 0x04F0;\n t['Udieresisgrave'] = 0x01DB;\n t['Udieresismacron'] = 0x01D5;\n t['Udieresissmall'] = 0xF7FC;\n t['Udotbelow'] = 0x1EE4;\n t['Ugrave'] = 0x00D9;\n t['Ugravesmall'] = 0xF7F9;\n t['Uhookabove'] = 0x1EE6;\n t['Uhorn'] = 0x01AF;\n t['Uhornacute'] = 0x1EE8;\n t['Uhorndotbelow'] = 0x1EF0;\n t['Uhorngrave'] = 0x1EEA;\n t['Uhornhookabove'] = 0x1EEC;\n t['Uhorntilde'] = 0x1EEE;\n t['Uhungarumlaut'] = 0x0170;\n t['Uhungarumlautcyrillic'] = 0x04F2;\n t['Uinvertedbreve'] = 0x0216;\n t['Ukcyrillic'] = 0x0478;\n t['Umacron'] = 0x016A;\n t['Umacroncyrillic'] = 0x04EE;\n t['Umacrondieresis'] = 0x1E7A;\n t['Umonospace'] = 0xFF35;\n t['Uogonek'] = 0x0172;\n t['Upsilon'] = 0x03A5;\n t['Upsilon1'] = 0x03D2;\n t['Upsilonacutehooksymbolgreek'] = 0x03D3;\n t['Upsilonafrican'] = 0x01B1;\n t['Upsilondieresis'] = 0x03AB;\n t['Upsilondieresishooksymbolgreek'] = 0x03D4;\n t['Upsilonhooksymbol'] = 0x03D2;\n t['Upsilontonos'] = 0x038E;\n t['Uring'] = 0x016E;\n t['Ushortcyrillic'] = 0x040E;\n t['Usmall'] = 0xF775;\n t['Ustraightcyrillic'] = 0x04AE;\n t['Ustraightstrokecyrillic'] = 0x04B0;\n t['Utilde'] = 0x0168;\n t['Utildeacute'] = 0x1E78;\n t['Utildebelow'] = 0x1E74;\n t['V'] = 0x0056;\n t['Vcircle'] = 0x24CB;\n t['Vdotbelow'] = 0x1E7E;\n t['Vecyrillic'] = 0x0412;\n t['Vewarmenian'] = 0x054E;\n t['Vhook'] = 0x01B2;\n t['Vmonospace'] = 0xFF36;\n t['Voarmenian'] = 0x0548;\n t['Vsmall'] = 0xF776;\n t['Vtilde'] = 0x1E7C;\n t['W'] = 0x0057;\n t['Wacute'] = 0x1E82;\n t['Wcircle'] = 0x24CC;\n t['Wcircumflex'] = 0x0174;\n t['Wdieresis'] = 0x1E84;\n t['Wdotaccent'] = 0x1E86;\n t['Wdotbelow'] = 0x1E88;\n t['Wgrave'] = 0x1E80;\n t['Wmonospace'] = 0xFF37;\n t['Wsmall'] = 0xF777;\n t['X'] = 0x0058;\n t['Xcircle'] = 0x24CD;\n t['Xdieresis'] = 0x1E8C;\n t['Xdotaccent'] = 0x1E8A;\n t['Xeharmenian'] = 0x053D;\n t['Xi'] = 0x039E;\n t['Xmonospace'] = 0xFF38;\n t['Xsmall'] = 0xF778;\n t['Y'] = 0x0059;\n t['Yacute'] = 0x00DD;\n t['Yacutesmall'] = 0xF7FD;\n t['Yatcyrillic'] = 0x0462;\n t['Ycircle'] = 0x24CE;\n t['Ycircumflex'] = 0x0176;\n t['Ydieresis'] = 0x0178;\n t['Ydieresissmall'] = 0xF7FF;\n t['Ydotaccent'] = 0x1E8E;\n t['Ydotbelow'] = 0x1EF4;\n t['Yericyrillic'] = 0x042B;\n t['Yerudieresiscyrillic'] = 0x04F8;\n t['Ygrave'] = 0x1EF2;\n t['Yhook'] = 0x01B3;\n t['Yhookabove'] = 0x1EF6;\n t['Yiarmenian'] = 0x0545;\n t['Yicyrillic'] = 0x0407;\n t['Yiwnarmenian'] = 0x0552;\n t['Ymonospace'] = 0xFF39;\n t['Ysmall'] = 0xF779;\n t['Ytilde'] = 0x1EF8;\n t['Yusbigcyrillic'] = 0x046A;\n t['Yusbigiotifiedcyrillic'] = 0x046C;\n t['Yuslittlecyrillic'] = 0x0466;\n t['Yuslittleiotifiedcyrillic'] = 0x0468;\n t['Z'] = 0x005A;\n t['Zaarmenian'] = 0x0536;\n t['Zacute'] = 0x0179;\n t['Zcaron'] = 0x017D;\n t['Zcaronsmall'] = 0xF6FF;\n t['Zcircle'] = 0x24CF;\n t['Zcircumflex'] = 0x1E90;\n t['Zdot'] = 0x017B;\n t['Zdotaccent'] = 0x017B;\n t['Zdotbelow'] = 0x1E92;\n t['Zecyrillic'] = 0x0417;\n t['Zedescendercyrillic'] = 0x0498;\n t['Zedieresiscyrillic'] = 0x04DE;\n t['Zeta'] = 0x0396;\n t['Zhearmenian'] = 0x053A;\n t['Zhebrevecyrillic'] = 0x04C1;\n t['Zhecyrillic'] = 0x0416;\n t['Zhedescendercyrillic'] = 0x0496;\n t['Zhedieresiscyrillic'] = 0x04DC;\n t['Zlinebelow'] = 0x1E94;\n t['Zmonospace'] = 0xFF3A;\n t['Zsmall'] = 0xF77A;\n t['Zstroke'] = 0x01B5;\n t['a'] = 0x0061;\n t['aabengali'] = 0x0986;\n t['aacute'] = 0x00E1;\n t['aadeva'] = 0x0906;\n t['aagujarati'] = 0x0A86;\n t['aagurmukhi'] = 0x0A06;\n t['aamatragurmukhi'] = 0x0A3E;\n t['aarusquare'] = 0x3303;\n t['aavowelsignbengali'] = 0x09BE;\n t['aavowelsigndeva'] = 0x093E;\n t['aavowelsigngujarati'] = 0x0ABE;\n t['abbreviationmarkarmenian'] = 0x055F;\n t['abbreviationsigndeva'] = 0x0970;\n t['abengali'] = 0x0985;\n t['abopomofo'] = 0x311A;\n t['abreve'] = 0x0103;\n t['abreveacute'] = 0x1EAF;\n t['abrevecyrillic'] = 0x04D1;\n t['abrevedotbelow'] = 0x1EB7;\n t['abrevegrave'] = 0x1EB1;\n t['abrevehookabove'] = 0x1EB3;\n t['abrevetilde'] = 0x1EB5;\n t['acaron'] = 0x01CE;\n t['acircle'] = 0x24D0;\n t['acircumflex'] = 0x00E2;\n t['acircumflexacute'] = 0x1EA5;\n t['acircumflexdotbelow'] = 0x1EAD;\n t['acircumflexgrave'] = 0x1EA7;\n t['acircumflexhookabove'] = 0x1EA9;\n t['acircumflextilde'] = 0x1EAB;\n t['acute'] = 0x00B4;\n t['acutebelowcmb'] = 0x0317;\n t['acutecmb'] = 0x0301;\n t['acutecomb'] = 0x0301;\n t['acutedeva'] = 0x0954;\n t['acutelowmod'] = 0x02CF;\n t['acutetonecmb'] = 0x0341;\n t['acyrillic'] = 0x0430;\n t['adblgrave'] = 0x0201;\n t['addakgurmukhi'] = 0x0A71;\n t['adeva'] = 0x0905;\n t['adieresis'] = 0x00E4;\n t['adieresiscyrillic'] = 0x04D3;\n t['adieresismacron'] = 0x01DF;\n t['adotbelow'] = 0x1EA1;\n t['adotmacron'] = 0x01E1;\n t['ae'] = 0x00E6;\n t['aeacute'] = 0x01FD;\n t['aekorean'] = 0x3150;\n t['aemacron'] = 0x01E3;\n t['afii00208'] = 0x2015;\n t['afii08941'] = 0x20A4;\n t['afii10017'] = 0x0410;\n t['afii10018'] = 0x0411;\n t['afii10019'] = 0x0412;\n t['afii10020'] = 0x0413;\n t['afii10021'] = 0x0414;\n t['afii10022'] = 0x0415;\n t['afii10023'] = 0x0401;\n t['afii10024'] = 0x0416;\n t['afii10025'] = 0x0417;\n t['afii10026'] = 0x0418;\n t['afii10027'] = 0x0419;\n t['afii10028'] = 0x041A;\n t['afii10029'] = 0x041B;\n t['afii10030'] = 0x041C;\n t['afii10031'] = 0x041D;\n t['afii10032'] = 0x041E;\n t['afii10033'] = 0x041F;\n t['afii10034'] = 0x0420;\n t['afii10035'] = 0x0421;\n t['afii10036'] = 0x0422;\n t['afii10037'] = 0x0423;\n t['afii10038'] = 0x0424;\n t['afii10039'] = 0x0425;\n t['afii10040'] = 0x0426;\n t['afii10041'] = 0x0427;\n t['afii10042'] = 0x0428;\n t['afii10043'] = 0x0429;\n t['afii10044'] = 0x042A;\n t['afii10045'] = 0x042B;\n t['afii10046'] = 0x042C;\n t['afii10047'] = 0x042D;\n t['afii10048'] = 0x042E;\n t['afii10049'] = 0x042F;\n t['afii10050'] = 0x0490;\n t['afii10051'] = 0x0402;\n t['afii10052'] = 0x0403;\n t['afii10053'] = 0x0404;\n t['afii10054'] = 0x0405;\n t['afii10055'] = 0x0406;\n t['afii10056'] = 0x0407;\n t['afii10057'] = 0x0408;\n t['afii10058'] = 0x0409;\n t['afii10059'] = 0x040A;\n t['afii10060'] = 0x040B;\n t['afii10061'] = 0x040C;\n t['afii10062'] = 0x040E;\n t['afii10063'] = 0xF6C4;\n t['afii10064'] = 0xF6C5;\n t['afii10065'] = 0x0430;\n t['afii10066'] = 0x0431;\n t['afii10067'] = 0x0432;\n t['afii10068'] = 0x0433;\n t['afii10069'] = 0x0434;\n t['afii10070'] = 0x0435;\n t['afii10071'] = 0x0451;\n t['afii10072'] = 0x0436;\n t['afii10073'] = 0x0437;\n t['afii10074'] = 0x0438;\n t['afii10075'] = 0x0439;\n t['afii10076'] = 0x043A;\n t['afii10077'] = 0x043B;\n t['afii10078'] = 0x043C;\n t['afii10079'] = 0x043D;\n t['afii10080'] = 0x043E;\n t['afii10081'] = 0x043F;\n t['afii10082'] = 0x0440;\n t['afii10083'] = 0x0441;\n t['afii10084'] = 0x0442;\n t['afii10085'] = 0x0443;\n t['afii10086'] = 0x0444;\n t['afii10087'] = 0x0445;\n t['afii10088'] = 0x0446;\n t['afii10089'] = 0x0447;\n t['afii10090'] = 0x0448;\n t['afii10091'] = 0x0449;\n t['afii10092'] = 0x044A;\n t['afii10093'] = 0x044B;\n t['afii10094'] = 0x044C;\n t['afii10095'] = 0x044D;\n t['afii10096'] = 0x044E;\n t['afii10097'] = 0x044F;\n t['afii10098'] = 0x0491;\n t['afii10099'] = 0x0452;\n t['afii10100'] = 0x0453;\n t['afii10101'] = 0x0454;\n t['afii10102'] = 0x0455;\n t['afii10103'] = 0x0456;\n t['afii10104'] = 0x0457;\n t['afii10105'] = 0x0458;\n t['afii10106'] = 0x0459;\n t['afii10107'] = 0x045A;\n t['afii10108'] = 0x045B;\n t['afii10109'] = 0x045C;\n t['afii10110'] = 0x045E;\n t['afii10145'] = 0x040F;\n t['afii10146'] = 0x0462;\n t['afii10147'] = 0x0472;\n t['afii10148'] = 0x0474;\n t['afii10192'] = 0xF6C6;\n t['afii10193'] = 0x045F;\n t['afii10194'] = 0x0463;\n t['afii10195'] = 0x0473;\n t['afii10196'] = 0x0475;\n t['afii10831'] = 0xF6C7;\n t['afii10832'] = 0xF6C8;\n t['afii10846'] = 0x04D9;\n t['afii299'] = 0x200E;\n t['afii300'] = 0x200F;\n t['afii301'] = 0x200D;\n t['afii57381'] = 0x066A;\n t['afii57388'] = 0x060C;\n t['afii57392'] = 0x0660;\n t['afii57393'] = 0x0661;\n t['afii57394'] = 0x0662;\n t['afii57395'] = 0x0663;\n t['afii57396'] = 0x0664;\n t['afii57397'] = 0x0665;\n t['afii57398'] = 0x0666;\n t['afii57399'] = 0x0667;\n t['afii57400'] = 0x0668;\n t['afii57401'] = 0x0669;\n t['afii57403'] = 0x061B;\n t['afii57407'] = 0x061F;\n t['afii57409'] = 0x0621;\n t['afii57410'] = 0x0622;\n t['afii57411'] = 0x0623;\n t['afii57412'] = 0x0624;\n t['afii57413'] = 0x0625;\n t['afii57414'] = 0x0626;\n t['afii57415'] = 0x0627;\n t['afii57416'] = 0x0628;\n t['afii57417'] = 0x0629;\n t['afii57418'] = 0x062A;\n t['afii57419'] = 0x062B;\n t['afii57420'] = 0x062C;\n t['afii57421'] = 0x062D;\n t['afii57422'] = 0x062E;\n t['afii57423'] = 0x062F;\n t['afii57424'] = 0x0630;\n t['afii57425'] = 0x0631;\n t['afii57426'] = 0x0632;\n t['afii57427'] = 0x0633;\n t['afii57428'] = 0x0634;\n t['afii57429'] = 0x0635;\n t['afii57430'] = 0x0636;\n t['afii57431'] = 0x0637;\n t['afii57432'] = 0x0638;\n t['afii57433'] = 0x0639;\n t['afii57434'] = 0x063A;\n t['afii57440'] = 0x0640;\n t['afii57441'] = 0x0641;\n t['afii57442'] = 0x0642;\n t['afii57443'] = 0x0643;\n t['afii57444'] = 0x0644;\n t['afii57445'] = 0x0645;\n t['afii57446'] = 0x0646;\n t['afii57448'] = 0x0648;\n t['afii57449'] = 0x0649;\n t['afii57450'] = 0x064A;\n t['afii57451'] = 0x064B;\n t['afii57452'] = 0x064C;\n t['afii57453'] = 0x064D;\n t['afii57454'] = 0x064E;\n t['afii57455'] = 0x064F;\n t['afii57456'] = 0x0650;\n t['afii57457'] = 0x0651;\n t['afii57458'] = 0x0652;\n t['afii57470'] = 0x0647;\n t['afii57505'] = 0x06A4;\n t['afii57506'] = 0x067E;\n t['afii57507'] = 0x0686;\n t['afii57508'] = 0x0698;\n t['afii57509'] = 0x06AF;\n t['afii57511'] = 0x0679;\n t['afii57512'] = 0x0688;\n t['afii57513'] = 0x0691;\n t['afii57514'] = 0x06BA;\n t['afii57519'] = 0x06D2;\n t['afii57534'] = 0x06D5;\n t['afii57636'] = 0x20AA;\n t['afii57645'] = 0x05BE;\n t['afii57658'] = 0x05C3;\n t['afii57664'] = 0x05D0;\n t['afii57665'] = 0x05D1;\n t['afii57666'] = 0x05D2;\n t['afii57667'] = 0x05D3;\n t['afii57668'] = 0x05D4;\n t['afii57669'] = 0x05D5;\n t['afii57670'] = 0x05D6;\n t['afii57671'] = 0x05D7;\n t['afii57672'] = 0x05D8;\n t['afii57673'] = 0x05D9;\n t['afii57674'] = 0x05DA;\n t['afii57675'] = 0x05DB;\n t['afii57676'] = 0x05DC;\n t['afii57677'] = 0x05DD;\n t['afii57678'] = 0x05DE;\n t['afii57679'] = 0x05DF;\n t['afii57680'] = 0x05E0;\n t['afii57681'] = 0x05E1;\n t['afii57682'] = 0x05E2;\n t['afii57683'] = 0x05E3;\n t['afii57684'] = 0x05E4;\n t['afii57685'] = 0x05E5;\n t['afii57686'] = 0x05E6;\n t['afii57687'] = 0x05E7;\n t['afii57688'] = 0x05E8;\n t['afii57689'] = 0x05E9;\n t['afii57690'] = 0x05EA;\n t['afii57694'] = 0xFB2A;\n t['afii57695'] = 0xFB2B;\n t['afii57700'] = 0xFB4B;\n t['afii57705'] = 0xFB1F;\n t['afii57716'] = 0x05F0;\n t['afii57717'] = 0x05F1;\n t['afii57718'] = 0x05F2;\n t['afii57723'] = 0xFB35;\n t['afii57793'] = 0x05B4;\n t['afii57794'] = 0x05B5;\n t['afii57795'] = 0x05B6;\n t['afii57796'] = 0x05BB;\n t['afii57797'] = 0x05B8;\n t['afii57798'] = 0x05B7;\n t['afii57799'] = 0x05B0;\n t['afii57800'] = 0x05B2;\n t['afii57801'] = 0x05B1;\n t['afii57802'] = 0x05B3;\n t['afii57803'] = 0x05C2;\n t['afii57804'] = 0x05C1;\n t['afii57806'] = 0x05B9;\n t['afii57807'] = 0x05BC;\n t['afii57839'] = 0x05BD;\n t['afii57841'] = 0x05BF;\n t['afii57842'] = 0x05C0;\n t['afii57929'] = 0x02BC;\n t['afii61248'] = 0x2105;\n t['afii61289'] = 0x2113;\n t['afii61352'] = 0x2116;\n t['afii61573'] = 0x202C;\n t['afii61574'] = 0x202D;\n t['afii61575'] = 0x202E;\n t['afii61664'] = 0x200C;\n t['afii63167'] = 0x066D;\n t['afii64937'] = 0x02BD;\n t['agrave'] = 0x00E0;\n t['agujarati'] = 0x0A85;\n t['agurmukhi'] = 0x0A05;\n t['ahiragana'] = 0x3042;\n t['ahookabove'] = 0x1EA3;\n t['aibengali'] = 0x0990;\n t['aibopomofo'] = 0x311E;\n t['aideva'] = 0x0910;\n t['aiecyrillic'] = 0x04D5;\n t['aigujarati'] = 0x0A90;\n t['aigurmukhi'] = 0x0A10;\n t['aimatragurmukhi'] = 0x0A48;\n t['ainarabic'] = 0x0639;\n t['ainfinalarabic'] = 0xFECA;\n t['aininitialarabic'] = 0xFECB;\n t['ainmedialarabic'] = 0xFECC;\n t['ainvertedbreve'] = 0x0203;\n t['aivowelsignbengali'] = 0x09C8;\n t['aivowelsigndeva'] = 0x0948;\n t['aivowelsigngujarati'] = 0x0AC8;\n t['akatakana'] = 0x30A2;\n t['akatakanahalfwidth'] = 0xFF71;\n t['akorean'] = 0x314F;\n t['alef'] = 0x05D0;\n t['alefarabic'] = 0x0627;\n t['alefdageshhebrew'] = 0xFB30;\n t['aleffinalarabic'] = 0xFE8E;\n t['alefhamzaabovearabic'] = 0x0623;\n t['alefhamzaabovefinalarabic'] = 0xFE84;\n t['alefhamzabelowarabic'] = 0x0625;\n t['alefhamzabelowfinalarabic'] = 0xFE88;\n t['alefhebrew'] = 0x05D0;\n t['aleflamedhebrew'] = 0xFB4F;\n t['alefmaddaabovearabic'] = 0x0622;\n t['alefmaddaabovefinalarabic'] = 0xFE82;\n t['alefmaksuraarabic'] = 0x0649;\n t['alefmaksurafinalarabic'] = 0xFEF0;\n t['alefmaksurainitialarabic'] = 0xFEF3;\n t['alefmaksuramedialarabic'] = 0xFEF4;\n t['alefpatahhebrew'] = 0xFB2E;\n t['alefqamatshebrew'] = 0xFB2F;\n t['aleph'] = 0x2135;\n t['allequal'] = 0x224C;\n t['alpha'] = 0x03B1;\n t['alphatonos'] = 0x03AC;\n t['amacron'] = 0x0101;\n t['amonospace'] = 0xFF41;\n t['ampersand'] = 0x0026;\n t['ampersandmonospace'] = 0xFF06;\n t['ampersandsmall'] = 0xF726;\n t['amsquare'] = 0x33C2;\n t['anbopomofo'] = 0x3122;\n t['angbopomofo'] = 0x3124;\n t['angbracketleft'] = 0x3008; // Glyph is missing from Adobe's original list.\n t['angbracketright'] = 0x3009; // Glyph is missing from Adobe's original list.\n t['angkhankhuthai'] = 0x0E5A;\n t['angle'] = 0x2220;\n t['anglebracketleft'] = 0x3008;\n t['anglebracketleftvertical'] = 0xFE3F;\n t['anglebracketright'] = 0x3009;\n t['anglebracketrightvertical'] = 0xFE40;\n t['angleleft'] = 0x2329;\n t['angleright'] = 0x232A;\n t['angstrom'] = 0x212B;\n t['anoteleia'] = 0x0387;\n t['anudattadeva'] = 0x0952;\n t['anusvarabengali'] = 0x0982;\n t['anusvaradeva'] = 0x0902;\n t['anusvaragujarati'] = 0x0A82;\n t['aogonek'] = 0x0105;\n t['apaatosquare'] = 0x3300;\n t['aparen'] = 0x249C;\n t['apostrophearmenian'] = 0x055A;\n t['apostrophemod'] = 0x02BC;\n t['apple'] = 0xF8FF;\n t['approaches'] = 0x2250;\n t['approxequal'] = 0x2248;\n t['approxequalorimage'] = 0x2252;\n t['approximatelyequal'] = 0x2245;\n t['araeaekorean'] = 0x318E;\n t['araeakorean'] = 0x318D;\n t['arc'] = 0x2312;\n t['arighthalfring'] = 0x1E9A;\n t['aring'] = 0x00E5;\n t['aringacute'] = 0x01FB;\n t['aringbelow'] = 0x1E01;\n t['arrowboth'] = 0x2194;\n t['arrowdashdown'] = 0x21E3;\n t['arrowdashleft'] = 0x21E0;\n t['arrowdashright'] = 0x21E2;\n t['arrowdashup'] = 0x21E1;\n t['arrowdblboth'] = 0x21D4;\n t['arrowdbldown'] = 0x21D3;\n t['arrowdblleft'] = 0x21D0;\n t['arrowdblright'] = 0x21D2;\n t['arrowdblup'] = 0x21D1;\n t['arrowdown'] = 0x2193;\n t['arrowdownleft'] = 0x2199;\n t['arrowdownright'] = 0x2198;\n t['arrowdownwhite'] = 0x21E9;\n t['arrowheaddownmod'] = 0x02C5;\n t['arrowheadleftmod'] = 0x02C2;\n t['arrowheadrightmod'] = 0x02C3;\n t['arrowheadupmod'] = 0x02C4;\n t['arrowhorizex'] = 0xF8E7;\n t['arrowleft'] = 0x2190;\n t['arrowleftdbl'] = 0x21D0;\n t['arrowleftdblstroke'] = 0x21CD;\n t['arrowleftoverright'] = 0x21C6;\n t['arrowleftwhite'] = 0x21E6;\n t['arrowright'] = 0x2192;\n t['arrowrightdblstroke'] = 0x21CF;\n t['arrowrightheavy'] = 0x279E;\n t['arrowrightoverleft'] = 0x21C4;\n t['arrowrightwhite'] = 0x21E8;\n t['arrowtableft'] = 0x21E4;\n t['arrowtabright'] = 0x21E5;\n t['arrowup'] = 0x2191;\n t['arrowupdn'] = 0x2195;\n t['arrowupdnbse'] = 0x21A8;\n t['arrowupdownbase'] = 0x21A8;\n t['arrowupleft'] = 0x2196;\n t['arrowupleftofdown'] = 0x21C5;\n t['arrowupright'] = 0x2197;\n t['arrowupwhite'] = 0x21E7;\n t['arrowvertex'] = 0xF8E6;\n t['asciicircum'] = 0x005E;\n t['asciicircummonospace'] = 0xFF3E;\n t['asciitilde'] = 0x007E;\n t['asciitildemonospace'] = 0xFF5E;\n t['ascript'] = 0x0251;\n t['ascriptturned'] = 0x0252;\n t['asmallhiragana'] = 0x3041;\n t['asmallkatakana'] = 0x30A1;\n t['asmallkatakanahalfwidth'] = 0xFF67;\n t['asterisk'] = 0x002A;\n t['asteriskaltonearabic'] = 0x066D;\n t['asteriskarabic'] = 0x066D;\n t['asteriskmath'] = 0x2217;\n t['asteriskmonospace'] = 0xFF0A;\n t['asterisksmall'] = 0xFE61;\n t['asterism'] = 0x2042;\n t['asuperior'] = 0xF6E9;\n t['asymptoticallyequal'] = 0x2243;\n t['at'] = 0x0040;\n t['atilde'] = 0x00E3;\n t['atmonospace'] = 0xFF20;\n t['atsmall'] = 0xFE6B;\n t['aturned'] = 0x0250;\n t['aubengali'] = 0x0994;\n t['aubopomofo'] = 0x3120;\n t['audeva'] = 0x0914;\n t['augujarati'] = 0x0A94;\n t['augurmukhi'] = 0x0A14;\n t['aulengthmarkbengali'] = 0x09D7;\n t['aumatragurmukhi'] = 0x0A4C;\n t['auvowelsignbengali'] = 0x09CC;\n t['auvowelsigndeva'] = 0x094C;\n t['auvowelsigngujarati'] = 0x0ACC;\n t['avagrahadeva'] = 0x093D;\n t['aybarmenian'] = 0x0561;\n t['ayin'] = 0x05E2;\n t['ayinaltonehebrew'] = 0xFB20;\n t['ayinhebrew'] = 0x05E2;\n t['b'] = 0x0062;\n t['babengali'] = 0x09AC;\n t['backslash'] = 0x005C;\n t['backslashmonospace'] = 0xFF3C;\n t['badeva'] = 0x092C;\n t['bagujarati'] = 0x0AAC;\n t['bagurmukhi'] = 0x0A2C;\n t['bahiragana'] = 0x3070;\n t['bahtthai'] = 0x0E3F;\n t['bakatakana'] = 0x30D0;\n t['bar'] = 0x007C;\n t['barmonospace'] = 0xFF5C;\n t['bbopomofo'] = 0x3105;\n t['bcircle'] = 0x24D1;\n t['bdotaccent'] = 0x1E03;\n t['bdotbelow'] = 0x1E05;\n t['beamedsixteenthnotes'] = 0x266C;\n t['because'] = 0x2235;\n t['becyrillic'] = 0x0431;\n t['beharabic'] = 0x0628;\n t['behfinalarabic'] = 0xFE90;\n t['behinitialarabic'] = 0xFE91;\n t['behiragana'] = 0x3079;\n t['behmedialarabic'] = 0xFE92;\n t['behmeeminitialarabic'] = 0xFC9F;\n t['behmeemisolatedarabic'] = 0xFC08;\n t['behnoonfinalarabic'] = 0xFC6D;\n t['bekatakana'] = 0x30D9;\n t['benarmenian'] = 0x0562;\n t['bet'] = 0x05D1;\n t['beta'] = 0x03B2;\n t['betasymbolgreek'] = 0x03D0;\n t['betdagesh'] = 0xFB31;\n t['betdageshhebrew'] = 0xFB31;\n t['bethebrew'] = 0x05D1;\n t['betrafehebrew'] = 0xFB4C;\n t['bhabengali'] = 0x09AD;\n t['bhadeva'] = 0x092D;\n t['bhagujarati'] = 0x0AAD;\n t['bhagurmukhi'] = 0x0A2D;\n t['bhook'] = 0x0253;\n t['bihiragana'] = 0x3073;\n t['bikatakana'] = 0x30D3;\n t['bilabialclick'] = 0x0298;\n t['bindigurmukhi'] = 0x0A02;\n t['birusquare'] = 0x3331;\n t['blackcircle'] = 0x25CF;\n t['blackdiamond'] = 0x25C6;\n t['blackdownpointingtriangle'] = 0x25BC;\n t['blackleftpointingpointer'] = 0x25C4;\n t['blackleftpointingtriangle'] = 0x25C0;\n t['blacklenticularbracketleft'] = 0x3010;\n t['blacklenticularbracketleftvertical'] = 0xFE3B;\n t['blacklenticularbracketright'] = 0x3011;\n t['blacklenticularbracketrightvertical'] = 0xFE3C;\n t['blacklowerlefttriangle'] = 0x25E3;\n t['blacklowerrighttriangle'] = 0x25E2;\n t['blackrectangle'] = 0x25AC;\n t['blackrightpointingpointer'] = 0x25BA;\n t['blackrightpointingtriangle'] = 0x25B6;\n t['blacksmallsquare'] = 0x25AA;\n t['blacksmilingface'] = 0x263B;\n t['blacksquare'] = 0x25A0;\n t['blackstar'] = 0x2605;\n t['blackupperlefttriangle'] = 0x25E4;\n t['blackupperrighttriangle'] = 0x25E5;\n t['blackuppointingsmalltriangle'] = 0x25B4;\n t['blackuppointingtriangle'] = 0x25B2;\n t['blank'] = 0x2423;\n t['blinebelow'] = 0x1E07;\n t['block'] = 0x2588;\n t['bmonospace'] = 0xFF42;\n t['bobaimaithai'] = 0x0E1A;\n t['bohiragana'] = 0x307C;\n t['bokatakana'] = 0x30DC;\n t['bparen'] = 0x249D;\n t['bqsquare'] = 0x33C3;\n t['braceex'] = 0xF8F4;\n t['braceleft'] = 0x007B;\n t['braceleftbt'] = 0xF8F3;\n t['braceleftmid'] = 0xF8F2;\n t['braceleftmonospace'] = 0xFF5B;\n t['braceleftsmall'] = 0xFE5B;\n t['bracelefttp'] = 0xF8F1;\n t['braceleftvertical'] = 0xFE37;\n t['braceright'] = 0x007D;\n t['bracerightbt'] = 0xF8FE;\n t['bracerightmid'] = 0xF8FD;\n t['bracerightmonospace'] = 0xFF5D;\n t['bracerightsmall'] = 0xFE5C;\n t['bracerighttp'] = 0xF8FC;\n t['bracerightvertical'] = 0xFE38;\n t['bracketleft'] = 0x005B;\n t['bracketleftbt'] = 0xF8F0;\n t['bracketleftex'] = 0xF8EF;\n t['bracketleftmonospace'] = 0xFF3B;\n t['bracketlefttp'] = 0xF8EE;\n t['bracketright'] = 0x005D;\n t['bracketrightbt'] = 0xF8FB;\n t['bracketrightex'] = 0xF8FA;\n t['bracketrightmonospace'] = 0xFF3D;\n t['bracketrighttp'] = 0xF8F9;\n t['breve'] = 0x02D8;\n t['brevebelowcmb'] = 0x032E;\n t['brevecmb'] = 0x0306;\n t['breveinvertedbelowcmb'] = 0x032F;\n t['breveinvertedcmb'] = 0x0311;\n t['breveinverteddoublecmb'] = 0x0361;\n t['bridgebelowcmb'] = 0x032A;\n t['bridgeinvertedbelowcmb'] = 0x033A;\n t['brokenbar'] = 0x00A6;\n t['bstroke'] = 0x0180;\n t['bsuperior'] = 0xF6EA;\n t['btopbar'] = 0x0183;\n t['buhiragana'] = 0x3076;\n t['bukatakana'] = 0x30D6;\n t['bullet'] = 0x2022;\n t['bulletinverse'] = 0x25D8;\n t['bulletoperator'] = 0x2219;\n t['bullseye'] = 0x25CE;\n t['c'] = 0x0063;\n t['caarmenian'] = 0x056E;\n t['cabengali'] = 0x099A;\n t['cacute'] = 0x0107;\n t['cadeva'] = 0x091A;\n t['cagujarati'] = 0x0A9A;\n t['cagurmukhi'] = 0x0A1A;\n t['calsquare'] = 0x3388;\n t['candrabindubengali'] = 0x0981;\n t['candrabinducmb'] = 0x0310;\n t['candrabindudeva'] = 0x0901;\n t['candrabindugujarati'] = 0x0A81;\n t['capslock'] = 0x21EA;\n t['careof'] = 0x2105;\n t['caron'] = 0x02C7;\n t['caronbelowcmb'] = 0x032C;\n t['caroncmb'] = 0x030C;\n t['carriagereturn'] = 0x21B5;\n t['cbopomofo'] = 0x3118;\n t['ccaron'] = 0x010D;\n t['ccedilla'] = 0x00E7;\n t['ccedillaacute'] = 0x1E09;\n t['ccircle'] = 0x24D2;\n t['ccircumflex'] = 0x0109;\n t['ccurl'] = 0x0255;\n t['cdot'] = 0x010B;\n t['cdotaccent'] = 0x010B;\n t['cdsquare'] = 0x33C5;\n t['cedilla'] = 0x00B8;\n t['cedillacmb'] = 0x0327;\n t['cent'] = 0x00A2;\n t['centigrade'] = 0x2103;\n t['centinferior'] = 0xF6DF;\n t['centmonospace'] = 0xFFE0;\n t['centoldstyle'] = 0xF7A2;\n t['centsuperior'] = 0xF6E0;\n t['chaarmenian'] = 0x0579;\n t['chabengali'] = 0x099B;\n t['chadeva'] = 0x091B;\n t['chagujarati'] = 0x0A9B;\n t['chagurmukhi'] = 0x0A1B;\n t['chbopomofo'] = 0x3114;\n t['cheabkhasiancyrillic'] = 0x04BD;\n t['checkmark'] = 0x2713;\n t['checyrillic'] = 0x0447;\n t['chedescenderabkhasiancyrillic'] = 0x04BF;\n t['chedescendercyrillic'] = 0x04B7;\n t['chedieresiscyrillic'] = 0x04F5;\n t['cheharmenian'] = 0x0573;\n t['chekhakassiancyrillic'] = 0x04CC;\n t['cheverticalstrokecyrillic'] = 0x04B9;\n t['chi'] = 0x03C7;\n t['chieuchacirclekorean'] = 0x3277;\n t['chieuchaparenkorean'] = 0x3217;\n t['chieuchcirclekorean'] = 0x3269;\n t['chieuchkorean'] = 0x314A;\n t['chieuchparenkorean'] = 0x3209;\n t['chochangthai'] = 0x0E0A;\n t['chochanthai'] = 0x0E08;\n t['chochingthai'] = 0x0E09;\n t['chochoethai'] = 0x0E0C;\n t['chook'] = 0x0188;\n t['cieucacirclekorean'] = 0x3276;\n t['cieucaparenkorean'] = 0x3216;\n t['cieuccirclekorean'] = 0x3268;\n t['cieuckorean'] = 0x3148;\n t['cieucparenkorean'] = 0x3208;\n t['cieucuparenkorean'] = 0x321C;\n t['circle'] = 0x25CB;\n t['circlecopyrt'] = 0x00A9; // Glyph is missing from Adobe's original list.\n t['circlemultiply'] = 0x2297;\n t['circleot'] = 0x2299;\n t['circleplus'] = 0x2295;\n t['circlepostalmark'] = 0x3036;\n t['circlewithlefthalfblack'] = 0x25D0;\n t['circlewithrighthalfblack'] = 0x25D1;\n t['circumflex'] = 0x02C6;\n t['circumflexbelowcmb'] = 0x032D;\n t['circumflexcmb'] = 0x0302;\n t['clear'] = 0x2327;\n t['clickalveolar'] = 0x01C2;\n t['clickdental'] = 0x01C0;\n t['clicklateral'] = 0x01C1;\n t['clickretroflex'] = 0x01C3;\n t['club'] = 0x2663;\n t['clubsuitblack'] = 0x2663;\n t['clubsuitwhite'] = 0x2667;\n t['cmcubedsquare'] = 0x33A4;\n t['cmonospace'] = 0xFF43;\n t['cmsquaredsquare'] = 0x33A0;\n t['coarmenian'] = 0x0581;\n t['colon'] = 0x003A;\n t['colonmonetary'] = 0x20A1;\n t['colonmonospace'] = 0xFF1A;\n t['colonsign'] = 0x20A1;\n t['colonsmall'] = 0xFE55;\n t['colontriangularhalfmod'] = 0x02D1;\n t['colontriangularmod'] = 0x02D0;\n t['comma'] = 0x002C;\n t['commaabovecmb'] = 0x0313;\n t['commaaboverightcmb'] = 0x0315;\n t['commaaccent'] = 0xF6C3;\n t['commaarabic'] = 0x060C;\n t['commaarmenian'] = 0x055D;\n t['commainferior'] = 0xF6E1;\n t['commamonospace'] = 0xFF0C;\n t['commareversedabovecmb'] = 0x0314;\n t['commareversedmod'] = 0x02BD;\n t['commasmall'] = 0xFE50;\n t['commasuperior'] = 0xF6E2;\n t['commaturnedabovecmb'] = 0x0312;\n t['commaturnedmod'] = 0x02BB;\n t['compass'] = 0x263C;\n t['congruent'] = 0x2245;\n t['contourintegral'] = 0x222E;\n t['control'] = 0x2303;\n t['controlACK'] = 0x0006;\n t['controlBEL'] = 0x0007;\n t['controlBS'] = 0x0008;\n t['controlCAN'] = 0x0018;\n t['controlCR'] = 0x000D;\n t['controlDC1'] = 0x0011;\n t['controlDC2'] = 0x0012;\n t['controlDC3'] = 0x0013;\n t['controlDC4'] = 0x0014;\n t['controlDEL'] = 0x007F;\n t['controlDLE'] = 0x0010;\n t['controlEM'] = 0x0019;\n t['controlENQ'] = 0x0005;\n t['controlEOT'] = 0x0004;\n t['controlESC'] = 0x001B;\n t['controlETB'] = 0x0017;\n t['controlETX'] = 0x0003;\n t['controlFF'] = 0x000C;\n t['controlFS'] = 0x001C;\n t['controlGS'] = 0x001D;\n t['controlHT'] = 0x0009;\n t['controlLF'] = 0x000A;\n t['controlNAK'] = 0x0015;\n t['controlNULL'] = 0x0000; // Glyph is missing from Adobe's original list.\n t['controlRS'] = 0x001E;\n t['controlSI'] = 0x000F;\n t['controlSO'] = 0x000E;\n t['controlSOT'] = 0x0002;\n t['controlSTX'] = 0x0001;\n t['controlSUB'] = 0x001A;\n t['controlSYN'] = 0x0016;\n t['controlUS'] = 0x001F;\n t['controlVT'] = 0x000B;\n t['copyright'] = 0x00A9;\n t['copyrightsans'] = 0xF8E9;\n t['copyrightserif'] = 0xF6D9;\n t['cornerbracketleft'] = 0x300C;\n t['cornerbracketlefthalfwidth'] = 0xFF62;\n t['cornerbracketleftvertical'] = 0xFE41;\n t['cornerbracketright'] = 0x300D;\n t['cornerbracketrighthalfwidth'] = 0xFF63;\n t['cornerbracketrightvertical'] = 0xFE42;\n t['corporationsquare'] = 0x337F;\n t['cosquare'] = 0x33C7;\n t['coverkgsquare'] = 0x33C6;\n t['cparen'] = 0x249E;\n t['cruzeiro'] = 0x20A2;\n t['cstretched'] = 0x0297;\n t['curlyand'] = 0x22CF;\n t['curlyor'] = 0x22CE;\n t['currency'] = 0x00A4;\n t['cyrBreve'] = 0xF6D1;\n t['cyrFlex'] = 0xF6D2;\n t['cyrbreve'] = 0xF6D4;\n t['cyrflex'] = 0xF6D5;\n t['d'] = 0x0064;\n t['daarmenian'] = 0x0564;\n t['dabengali'] = 0x09A6;\n t['dadarabic'] = 0x0636;\n t['dadeva'] = 0x0926;\n t['dadfinalarabic'] = 0xFEBE;\n t['dadinitialarabic'] = 0xFEBF;\n t['dadmedialarabic'] = 0xFEC0;\n t['dagesh'] = 0x05BC;\n t['dageshhebrew'] = 0x05BC;\n t['dagger'] = 0x2020;\n t['daggerdbl'] = 0x2021;\n t['dagujarati'] = 0x0AA6;\n t['dagurmukhi'] = 0x0A26;\n t['dahiragana'] = 0x3060;\n t['dakatakana'] = 0x30C0;\n t['dalarabic'] = 0x062F;\n t['dalet'] = 0x05D3;\n t['daletdagesh'] = 0xFB33;\n t['daletdageshhebrew'] = 0xFB33;\n t['dalethebrew'] = 0x05D3;\n t['dalfinalarabic'] = 0xFEAA;\n t['dammaarabic'] = 0x064F;\n t['dammalowarabic'] = 0x064F;\n t['dammatanaltonearabic'] = 0x064C;\n t['dammatanarabic'] = 0x064C;\n t['danda'] = 0x0964;\n t['dargahebrew'] = 0x05A7;\n t['dargalefthebrew'] = 0x05A7;\n t['dasiapneumatacyrilliccmb'] = 0x0485;\n t['dblGrave'] = 0xF6D3;\n t['dblanglebracketleft'] = 0x300A;\n t['dblanglebracketleftvertical'] = 0xFE3D;\n t['dblanglebracketright'] = 0x300B;\n t['dblanglebracketrightvertical'] = 0xFE3E;\n t['dblarchinvertedbelowcmb'] = 0x032B;\n t['dblarrowleft'] = 0x21D4;\n t['dblarrowright'] = 0x21D2;\n t['dbldanda'] = 0x0965;\n t['dblgrave'] = 0xF6D6;\n t['dblgravecmb'] = 0x030F;\n t['dblintegral'] = 0x222C;\n t['dbllowline'] = 0x2017;\n t['dbllowlinecmb'] = 0x0333;\n t['dbloverlinecmb'] = 0x033F;\n t['dblprimemod'] = 0x02BA;\n t['dblverticalbar'] = 0x2016;\n t['dblverticallineabovecmb'] = 0x030E;\n t['dbopomofo'] = 0x3109;\n t['dbsquare'] = 0x33C8;\n t['dcaron'] = 0x010F;\n t['dcedilla'] = 0x1E11;\n t['dcircle'] = 0x24D3;\n t['dcircumflexbelow'] = 0x1E13;\n t['dcroat'] = 0x0111;\n t['ddabengali'] = 0x09A1;\n t['ddadeva'] = 0x0921;\n t['ddagujarati'] = 0x0AA1;\n t['ddagurmukhi'] = 0x0A21;\n t['ddalarabic'] = 0x0688;\n t['ddalfinalarabic'] = 0xFB89;\n t['dddhadeva'] = 0x095C;\n t['ddhabengali'] = 0x09A2;\n t['ddhadeva'] = 0x0922;\n t['ddhagujarati'] = 0x0AA2;\n t['ddhagurmukhi'] = 0x0A22;\n t['ddotaccent'] = 0x1E0B;\n t['ddotbelow'] = 0x1E0D;\n t['decimalseparatorarabic'] = 0x066B;\n t['decimalseparatorpersian'] = 0x066B;\n t['decyrillic'] = 0x0434;\n t['degree'] = 0x00B0;\n t['dehihebrew'] = 0x05AD;\n t['dehiragana'] = 0x3067;\n t['deicoptic'] = 0x03EF;\n t['dekatakana'] = 0x30C7;\n t['deleteleft'] = 0x232B;\n t['deleteright'] = 0x2326;\n t['delta'] = 0x03B4;\n t['deltaturned'] = 0x018D;\n t['denominatorminusonenumeratorbengali'] = 0x09F8;\n t['dezh'] = 0x02A4;\n t['dhabengali'] = 0x09A7;\n t['dhadeva'] = 0x0927;\n t['dhagujarati'] = 0x0AA7;\n t['dhagurmukhi'] = 0x0A27;\n t['dhook'] = 0x0257;\n t['dialytikatonos'] = 0x0385;\n t['dialytikatonoscmb'] = 0x0344;\n t['diamond'] = 0x2666;\n t['diamondsuitwhite'] = 0x2662;\n t['dieresis'] = 0x00A8;\n t['dieresisacute'] = 0xF6D7;\n t['dieresisbelowcmb'] = 0x0324;\n t['dieresiscmb'] = 0x0308;\n t['dieresisgrave'] = 0xF6D8;\n t['dieresistonos'] = 0x0385;\n t['dihiragana'] = 0x3062;\n t['dikatakana'] = 0x30C2;\n t['dittomark'] = 0x3003;\n t['divide'] = 0x00F7;\n t['divides'] = 0x2223;\n t['divisionslash'] = 0x2215;\n t['djecyrillic'] = 0x0452;\n t['dkshade'] = 0x2593;\n t['dlinebelow'] = 0x1E0F;\n t['dlsquare'] = 0x3397;\n t['dmacron'] = 0x0111;\n t['dmonospace'] = 0xFF44;\n t['dnblock'] = 0x2584;\n t['dochadathai'] = 0x0E0E;\n t['dodekthai'] = 0x0E14;\n t['dohiragana'] = 0x3069;\n t['dokatakana'] = 0x30C9;\n t['dollar'] = 0x0024;\n t['dollarinferior'] = 0xF6E3;\n t['dollarmonospace'] = 0xFF04;\n t['dollaroldstyle'] = 0xF724;\n t['dollarsmall'] = 0xFE69;\n t['dollarsuperior'] = 0xF6E4;\n t['dong'] = 0x20AB;\n t['dorusquare'] = 0x3326;\n t['dotaccent'] = 0x02D9;\n t['dotaccentcmb'] = 0x0307;\n t['dotbelowcmb'] = 0x0323;\n t['dotbelowcomb'] = 0x0323;\n t['dotkatakana'] = 0x30FB;\n t['dotlessi'] = 0x0131;\n t['dotlessj'] = 0xF6BE;\n t['dotlessjstrokehook'] = 0x0284;\n t['dotmath'] = 0x22C5;\n t['dottedcircle'] = 0x25CC;\n t['doubleyodpatah'] = 0xFB1F;\n t['doubleyodpatahhebrew'] = 0xFB1F;\n t['downtackbelowcmb'] = 0x031E;\n t['downtackmod'] = 0x02D5;\n t['dparen'] = 0x249F;\n t['dsuperior'] = 0xF6EB;\n t['dtail'] = 0x0256;\n t['dtopbar'] = 0x018C;\n t['duhiragana'] = 0x3065;\n t['dukatakana'] = 0x30C5;\n t['dz'] = 0x01F3;\n t['dzaltone'] = 0x02A3;\n t['dzcaron'] = 0x01C6;\n t['dzcurl'] = 0x02A5;\n t['dzeabkhasiancyrillic'] = 0x04E1;\n t['dzecyrillic'] = 0x0455;\n t['dzhecyrillic'] = 0x045F;\n t['e'] = 0x0065;\n t['eacute'] = 0x00E9;\n t['earth'] = 0x2641;\n t['ebengali'] = 0x098F;\n t['ebopomofo'] = 0x311C;\n t['ebreve'] = 0x0115;\n t['ecandradeva'] = 0x090D;\n t['ecandragujarati'] = 0x0A8D;\n t['ecandravowelsigndeva'] = 0x0945;\n t['ecandravowelsigngujarati'] = 0x0AC5;\n t['ecaron'] = 0x011B;\n t['ecedillabreve'] = 0x1E1D;\n t['echarmenian'] = 0x0565;\n t['echyiwnarmenian'] = 0x0587;\n t['ecircle'] = 0x24D4;\n t['ecircumflex'] = 0x00EA;\n t['ecircumflexacute'] = 0x1EBF;\n t['ecircumflexbelow'] = 0x1E19;\n t['ecircumflexdotbelow'] = 0x1EC7;\n t['ecircumflexgrave'] = 0x1EC1;\n t['ecircumflexhookabove'] = 0x1EC3;\n t['ecircumflextilde'] = 0x1EC5;\n t['ecyrillic'] = 0x0454;\n t['edblgrave'] = 0x0205;\n t['edeva'] = 0x090F;\n t['edieresis'] = 0x00EB;\n t['edot'] = 0x0117;\n t['edotaccent'] = 0x0117;\n t['edotbelow'] = 0x1EB9;\n t['eegurmukhi'] = 0x0A0F;\n t['eematragurmukhi'] = 0x0A47;\n t['efcyrillic'] = 0x0444;\n t['egrave'] = 0x00E8;\n t['egujarati'] = 0x0A8F;\n t['eharmenian'] = 0x0567;\n t['ehbopomofo'] = 0x311D;\n t['ehiragana'] = 0x3048;\n t['ehookabove'] = 0x1EBB;\n t['eibopomofo'] = 0x311F;\n t['eight'] = 0x0038;\n t['eightarabic'] = 0x0668;\n t['eightbengali'] = 0x09EE;\n t['eightcircle'] = 0x2467;\n t['eightcircleinversesansserif'] = 0x2791;\n t['eightdeva'] = 0x096E;\n t['eighteencircle'] = 0x2471;\n t['eighteenparen'] = 0x2485;\n t['eighteenperiod'] = 0x2499;\n t['eightgujarati'] = 0x0AEE;\n t['eightgurmukhi'] = 0x0A6E;\n t['eighthackarabic'] = 0x0668;\n t['eighthangzhou'] = 0x3028;\n t['eighthnotebeamed'] = 0x266B;\n t['eightideographicparen'] = 0x3227;\n t['eightinferior'] = 0x2088;\n t['eightmonospace'] = 0xFF18;\n t['eightoldstyle'] = 0xF738;\n t['eightparen'] = 0x247B;\n t['eightperiod'] = 0x248F;\n t['eightpersian'] = 0x06F8;\n t['eightroman'] = 0x2177;\n t['eightsuperior'] = 0x2078;\n t['eightthai'] = 0x0E58;\n t['einvertedbreve'] = 0x0207;\n t['eiotifiedcyrillic'] = 0x0465;\n t['ekatakana'] = 0x30A8;\n t['ekatakanahalfwidth'] = 0xFF74;\n t['ekonkargurmukhi'] = 0x0A74;\n t['ekorean'] = 0x3154;\n t['elcyrillic'] = 0x043B;\n t['element'] = 0x2208;\n t['elevencircle'] = 0x246A;\n t['elevenparen'] = 0x247E;\n t['elevenperiod'] = 0x2492;\n t['elevenroman'] = 0x217A;\n t['ellipsis'] = 0x2026;\n t['ellipsisvertical'] = 0x22EE;\n t['emacron'] = 0x0113;\n t['emacronacute'] = 0x1E17;\n t['emacrongrave'] = 0x1E15;\n t['emcyrillic'] = 0x043C;\n t['emdash'] = 0x2014;\n t['emdashvertical'] = 0xFE31;\n t['emonospace'] = 0xFF45;\n t['emphasismarkarmenian'] = 0x055B;\n t['emptyset'] = 0x2205;\n t['enbopomofo'] = 0x3123;\n t['encyrillic'] = 0x043D;\n t['endash'] = 0x2013;\n t['endashvertical'] = 0xFE32;\n t['endescendercyrillic'] = 0x04A3;\n t['eng'] = 0x014B;\n t['engbopomofo'] = 0x3125;\n t['enghecyrillic'] = 0x04A5;\n t['enhookcyrillic'] = 0x04C8;\n t['enspace'] = 0x2002;\n t['eogonek'] = 0x0119;\n t['eokorean'] = 0x3153;\n t['eopen'] = 0x025B;\n t['eopenclosed'] = 0x029A;\n t['eopenreversed'] = 0x025C;\n t['eopenreversedclosed'] = 0x025E;\n t['eopenreversedhook'] = 0x025D;\n t['eparen'] = 0x24A0;\n t['epsilon'] = 0x03B5;\n t['epsilontonos'] = 0x03AD;\n t['equal'] = 0x003D;\n t['equalmonospace'] = 0xFF1D;\n t['equalsmall'] = 0xFE66;\n t['equalsuperior'] = 0x207C;\n t['equivalence'] = 0x2261;\n t['erbopomofo'] = 0x3126;\n t['ercyrillic'] = 0x0440;\n t['ereversed'] = 0x0258;\n t['ereversedcyrillic'] = 0x044D;\n t['escyrillic'] = 0x0441;\n t['esdescendercyrillic'] = 0x04AB;\n t['esh'] = 0x0283;\n t['eshcurl'] = 0x0286;\n t['eshortdeva'] = 0x090E;\n t['eshortvowelsigndeva'] = 0x0946;\n t['eshreversedloop'] = 0x01AA;\n t['eshsquatreversed'] = 0x0285;\n t['esmallhiragana'] = 0x3047;\n t['esmallkatakana'] = 0x30A7;\n t['esmallkatakanahalfwidth'] = 0xFF6A;\n t['estimated'] = 0x212E;\n t['esuperior'] = 0xF6EC;\n t['eta'] = 0x03B7;\n t['etarmenian'] = 0x0568;\n t['etatonos'] = 0x03AE;\n t['eth'] = 0x00F0;\n t['etilde'] = 0x1EBD;\n t['etildebelow'] = 0x1E1B;\n t['etnahtafoukhhebrew'] = 0x0591;\n t['etnahtafoukhlefthebrew'] = 0x0591;\n t['etnahtahebrew'] = 0x0591;\n t['etnahtalefthebrew'] = 0x0591;\n t['eturned'] = 0x01DD;\n t['eukorean'] = 0x3161;\n t['euro'] = 0x20AC;\n t['evowelsignbengali'] = 0x09C7;\n t['evowelsigndeva'] = 0x0947;\n t['evowelsigngujarati'] = 0x0AC7;\n t['exclam'] = 0x0021;\n t['exclamarmenian'] = 0x055C;\n t['exclamdbl'] = 0x203C;\n t['exclamdown'] = 0x00A1;\n t['exclamdownsmall'] = 0xF7A1;\n t['exclammonospace'] = 0xFF01;\n t['exclamsmall'] = 0xF721;\n t['existential'] = 0x2203;\n t['ezh'] = 0x0292;\n t['ezhcaron'] = 0x01EF;\n t['ezhcurl'] = 0x0293;\n t['ezhreversed'] = 0x01B9;\n t['ezhtail'] = 0x01BA;\n t['f'] = 0x0066;\n t['fadeva'] = 0x095E;\n t['fagurmukhi'] = 0x0A5E;\n t['fahrenheit'] = 0x2109;\n t['fathaarabic'] = 0x064E;\n t['fathalowarabic'] = 0x064E;\n t['fathatanarabic'] = 0x064B;\n t['fbopomofo'] = 0x3108;\n t['fcircle'] = 0x24D5;\n t['fdotaccent'] = 0x1E1F;\n t['feharabic'] = 0x0641;\n t['feharmenian'] = 0x0586;\n t['fehfinalarabic'] = 0xFED2;\n t['fehinitialarabic'] = 0xFED3;\n t['fehmedialarabic'] = 0xFED4;\n t['feicoptic'] = 0x03E5;\n t['female'] = 0x2640;\n t['ff'] = 0xFB00;\n t['ffi'] = 0xFB03;\n t['ffl'] = 0xFB04;\n t['fi'] = 0xFB01;\n t['fifteencircle'] = 0x246E;\n t['fifteenparen'] = 0x2482;\n t['fifteenperiod'] = 0x2496;\n t['figuredash'] = 0x2012;\n t['filledbox'] = 0x25A0;\n t['filledrect'] = 0x25AC;\n t['finalkaf'] = 0x05DA;\n t['finalkafdagesh'] = 0xFB3A;\n t['finalkafdageshhebrew'] = 0xFB3A;\n t['finalkafhebrew'] = 0x05DA;\n t['finalmem'] = 0x05DD;\n t['finalmemhebrew'] = 0x05DD;\n t['finalnun'] = 0x05DF;\n t['finalnunhebrew'] = 0x05DF;\n t['finalpe'] = 0x05E3;\n t['finalpehebrew'] = 0x05E3;\n t['finaltsadi'] = 0x05E5;\n t['finaltsadihebrew'] = 0x05E5;\n t['firsttonechinese'] = 0x02C9;\n t['fisheye'] = 0x25C9;\n t['fitacyrillic'] = 0x0473;\n t['five'] = 0x0035;\n t['fivearabic'] = 0x0665;\n t['fivebengali'] = 0x09EB;\n t['fivecircle'] = 0x2464;\n t['fivecircleinversesansserif'] = 0x278E;\n t['fivedeva'] = 0x096B;\n t['fiveeighths'] = 0x215D;\n t['fivegujarati'] = 0x0AEB;\n t['fivegurmukhi'] = 0x0A6B;\n t['fivehackarabic'] = 0x0665;\n t['fivehangzhou'] = 0x3025;\n t['fiveideographicparen'] = 0x3224;\n t['fiveinferior'] = 0x2085;\n t['fivemonospace'] = 0xFF15;\n t['fiveoldstyle'] = 0xF735;\n t['fiveparen'] = 0x2478;\n t['fiveperiod'] = 0x248C;\n t['fivepersian'] = 0x06F5;\n t['fiveroman'] = 0x2174;\n t['fivesuperior'] = 0x2075;\n t['fivethai'] = 0x0E55;\n t['fl'] = 0xFB02;\n t['florin'] = 0x0192;\n t['fmonospace'] = 0xFF46;\n t['fmsquare'] = 0x3399;\n t['fofanthai'] = 0x0E1F;\n t['fofathai'] = 0x0E1D;\n t['fongmanthai'] = 0x0E4F;\n t['forall'] = 0x2200;\n t['four'] = 0x0034;\n t['fourarabic'] = 0x0664;\n t['fourbengali'] = 0x09EA;\n t['fourcircle'] = 0x2463;\n t['fourcircleinversesansserif'] = 0x278D;\n t['fourdeva'] = 0x096A;\n t['fourgujarati'] = 0x0AEA;\n t['fourgurmukhi'] = 0x0A6A;\n t['fourhackarabic'] = 0x0664;\n t['fourhangzhou'] = 0x3024;\n t['fourideographicparen'] = 0x3223;\n t['fourinferior'] = 0x2084;\n t['fourmonospace'] = 0xFF14;\n t['fournumeratorbengali'] = 0x09F7;\n t['fouroldstyle'] = 0xF734;\n t['fourparen'] = 0x2477;\n t['fourperiod'] = 0x248B;\n t['fourpersian'] = 0x06F4;\n t['fourroman'] = 0x2173;\n t['foursuperior'] = 0x2074;\n t['fourteencircle'] = 0x246D;\n t['fourteenparen'] = 0x2481;\n t['fourteenperiod'] = 0x2495;\n t['fourthai'] = 0x0E54;\n t['fourthtonechinese'] = 0x02CB;\n t['fparen'] = 0x24A1;\n t['fraction'] = 0x2044;\n t['franc'] = 0x20A3;\n t['g'] = 0x0067;\n t['gabengali'] = 0x0997;\n t['gacute'] = 0x01F5;\n t['gadeva'] = 0x0917;\n t['gafarabic'] = 0x06AF;\n t['gaffinalarabic'] = 0xFB93;\n t['gafinitialarabic'] = 0xFB94;\n t['gafmedialarabic'] = 0xFB95;\n t['gagujarati'] = 0x0A97;\n t['gagurmukhi'] = 0x0A17;\n t['gahiragana'] = 0x304C;\n t['gakatakana'] = 0x30AC;\n t['gamma'] = 0x03B3;\n t['gammalatinsmall'] = 0x0263;\n t['gammasuperior'] = 0x02E0;\n t['gangiacoptic'] = 0x03EB;\n t['gbopomofo'] = 0x310D;\n t['gbreve'] = 0x011F;\n t['gcaron'] = 0x01E7;\n t['gcedilla'] = 0x0123;\n t['gcircle'] = 0x24D6;\n t['gcircumflex'] = 0x011D;\n t['gcommaaccent'] = 0x0123;\n t['gdot'] = 0x0121;\n t['gdotaccent'] = 0x0121;\n t['gecyrillic'] = 0x0433;\n t['gehiragana'] = 0x3052;\n t['gekatakana'] = 0x30B2;\n t['geometricallyequal'] = 0x2251;\n t['gereshaccenthebrew'] = 0x059C;\n t['gereshhebrew'] = 0x05F3;\n t['gereshmuqdamhebrew'] = 0x059D;\n t['germandbls'] = 0x00DF;\n t['gershayimaccenthebrew'] = 0x059E;\n t['gershayimhebrew'] = 0x05F4;\n t['getamark'] = 0x3013;\n t['ghabengali'] = 0x0998;\n t['ghadarmenian'] = 0x0572;\n t['ghadeva'] = 0x0918;\n t['ghagujarati'] = 0x0A98;\n t['ghagurmukhi'] = 0x0A18;\n t['ghainarabic'] = 0x063A;\n t['ghainfinalarabic'] = 0xFECE;\n t['ghaininitialarabic'] = 0xFECF;\n t['ghainmedialarabic'] = 0xFED0;\n t['ghemiddlehookcyrillic'] = 0x0495;\n t['ghestrokecyrillic'] = 0x0493;\n t['gheupturncyrillic'] = 0x0491;\n t['ghhadeva'] = 0x095A;\n t['ghhagurmukhi'] = 0x0A5A;\n t['ghook'] = 0x0260;\n t['ghzsquare'] = 0x3393;\n t['gihiragana'] = 0x304E;\n t['gikatakana'] = 0x30AE;\n t['gimarmenian'] = 0x0563;\n t['gimel'] = 0x05D2;\n t['gimeldagesh'] = 0xFB32;\n t['gimeldageshhebrew'] = 0xFB32;\n t['gimelhebrew'] = 0x05D2;\n t['gjecyrillic'] = 0x0453;\n t['glottalinvertedstroke'] = 0x01BE;\n t['glottalstop'] = 0x0294;\n t['glottalstopinverted'] = 0x0296;\n t['glottalstopmod'] = 0x02C0;\n t['glottalstopreversed'] = 0x0295;\n t['glottalstopreversedmod'] = 0x02C1;\n t['glottalstopreversedsuperior'] = 0x02E4;\n t['glottalstopstroke'] = 0x02A1;\n t['glottalstopstrokereversed'] = 0x02A2;\n t['gmacron'] = 0x1E21;\n t['gmonospace'] = 0xFF47;\n t['gohiragana'] = 0x3054;\n t['gokatakana'] = 0x30B4;\n t['gparen'] = 0x24A2;\n t['gpasquare'] = 0x33AC;\n t['gradient'] = 0x2207;\n t['grave'] = 0x0060;\n t['gravebelowcmb'] = 0x0316;\n t['gravecmb'] = 0x0300;\n t['gravecomb'] = 0x0300;\n t['gravedeva'] = 0x0953;\n t['gravelowmod'] = 0x02CE;\n t['gravemonospace'] = 0xFF40;\n t['gravetonecmb'] = 0x0340;\n t['greater'] = 0x003E;\n t['greaterequal'] = 0x2265;\n t['greaterequalorless'] = 0x22DB;\n t['greatermonospace'] = 0xFF1E;\n t['greaterorequivalent'] = 0x2273;\n t['greaterorless'] = 0x2277;\n t['greateroverequal'] = 0x2267;\n t['greatersmall'] = 0xFE65;\n t['gscript'] = 0x0261;\n t['gstroke'] = 0x01E5;\n t['guhiragana'] = 0x3050;\n t['guillemotleft'] = 0x00AB;\n t['guillemotright'] = 0x00BB;\n t['guilsinglleft'] = 0x2039;\n t['guilsinglright'] = 0x203A;\n t['gukatakana'] = 0x30B0;\n t['guramusquare'] = 0x3318;\n t['gysquare'] = 0x33C9;\n t['h'] = 0x0068;\n t['haabkhasiancyrillic'] = 0x04A9;\n t['haaltonearabic'] = 0x06C1;\n t['habengali'] = 0x09B9;\n t['hadescendercyrillic'] = 0x04B3;\n t['hadeva'] = 0x0939;\n t['hagujarati'] = 0x0AB9;\n t['hagurmukhi'] = 0x0A39;\n t['haharabic'] = 0x062D;\n t['hahfinalarabic'] = 0xFEA2;\n t['hahinitialarabic'] = 0xFEA3;\n t['hahiragana'] = 0x306F;\n t['hahmedialarabic'] = 0xFEA4;\n t['haitusquare'] = 0x332A;\n t['hakatakana'] = 0x30CF;\n t['hakatakanahalfwidth'] = 0xFF8A;\n t['halantgurmukhi'] = 0x0A4D;\n t['hamzaarabic'] = 0x0621;\n t['hamzalowarabic'] = 0x0621;\n t['hangulfiller'] = 0x3164;\n t['hardsigncyrillic'] = 0x044A;\n t['harpoonleftbarbup'] = 0x21BC;\n t['harpoonrightbarbup'] = 0x21C0;\n t['hasquare'] = 0x33CA;\n t['hatafpatah'] = 0x05B2;\n t['hatafpatah16'] = 0x05B2;\n t['hatafpatah23'] = 0x05B2;\n t['hatafpatah2f'] = 0x05B2;\n t['hatafpatahhebrew'] = 0x05B2;\n t['hatafpatahnarrowhebrew'] = 0x05B2;\n t['hatafpatahquarterhebrew'] = 0x05B2;\n t['hatafpatahwidehebrew'] = 0x05B2;\n t['hatafqamats'] = 0x05B3;\n t['hatafqamats1b'] = 0x05B3;\n t['hatafqamats28'] = 0x05B3;\n t['hatafqamats34'] = 0x05B3;\n t['hatafqamatshebrew'] = 0x05B3;\n t['hatafqamatsnarrowhebrew'] = 0x05B3;\n t['hatafqamatsquarterhebrew'] = 0x05B3;\n t['hatafqamatswidehebrew'] = 0x05B3;\n t['hatafsegol'] = 0x05B1;\n t['hatafsegol17'] = 0x05B1;\n t['hatafsegol24'] = 0x05B1;\n t['hatafsegol30'] = 0x05B1;\n t['hatafsegolhebrew'] = 0x05B1;\n t['hatafsegolnarrowhebrew'] = 0x05B1;\n t['hatafsegolquarterhebrew'] = 0x05B1;\n t['hatafsegolwidehebrew'] = 0x05B1;\n t['hbar'] = 0x0127;\n t['hbopomofo'] = 0x310F;\n t['hbrevebelow'] = 0x1E2B;\n t['hcedilla'] = 0x1E29;\n t['hcircle'] = 0x24D7;\n t['hcircumflex'] = 0x0125;\n t['hdieresis'] = 0x1E27;\n t['hdotaccent'] = 0x1E23;\n t['hdotbelow'] = 0x1E25;\n t['he'] = 0x05D4;\n t['heart'] = 0x2665;\n t['heartsuitblack'] = 0x2665;\n t['heartsuitwhite'] = 0x2661;\n t['hedagesh'] = 0xFB34;\n t['hedageshhebrew'] = 0xFB34;\n t['hehaltonearabic'] = 0x06C1;\n t['heharabic'] = 0x0647;\n t['hehebrew'] = 0x05D4;\n t['hehfinalaltonearabic'] = 0xFBA7;\n t['hehfinalalttwoarabic'] = 0xFEEA;\n t['hehfinalarabic'] = 0xFEEA;\n t['hehhamzaabovefinalarabic'] = 0xFBA5;\n t['hehhamzaaboveisolatedarabic'] = 0xFBA4;\n t['hehinitialaltonearabic'] = 0xFBA8;\n t['hehinitialarabic'] = 0xFEEB;\n t['hehiragana'] = 0x3078;\n t['hehmedialaltonearabic'] = 0xFBA9;\n t['hehmedialarabic'] = 0xFEEC;\n t['heiseierasquare'] = 0x337B;\n t['hekatakana'] = 0x30D8;\n t['hekatakanahalfwidth'] = 0xFF8D;\n t['hekutaarusquare'] = 0x3336;\n t['henghook'] = 0x0267;\n t['herutusquare'] = 0x3339;\n t['het'] = 0x05D7;\n t['hethebrew'] = 0x05D7;\n t['hhook'] = 0x0266;\n t['hhooksuperior'] = 0x02B1;\n t['hieuhacirclekorean'] = 0x327B;\n t['hieuhaparenkorean'] = 0x321B;\n t['hieuhcirclekorean'] = 0x326D;\n t['hieuhkorean'] = 0x314E;\n t['hieuhparenkorean'] = 0x320D;\n t['hihiragana'] = 0x3072;\n t['hikatakana'] = 0x30D2;\n t['hikatakanahalfwidth'] = 0xFF8B;\n t['hiriq'] = 0x05B4;\n t['hiriq14'] = 0x05B4;\n t['hiriq21'] = 0x05B4;\n t['hiriq2d'] = 0x05B4;\n t['hiriqhebrew'] = 0x05B4;\n t['hiriqnarrowhebrew'] = 0x05B4;\n t['hiriqquarterhebrew'] = 0x05B4;\n t['hiriqwidehebrew'] = 0x05B4;\n t['hlinebelow'] = 0x1E96;\n t['hmonospace'] = 0xFF48;\n t['hoarmenian'] = 0x0570;\n t['hohipthai'] = 0x0E2B;\n t['hohiragana'] = 0x307B;\n t['hokatakana'] = 0x30DB;\n t['hokatakanahalfwidth'] = 0xFF8E;\n t['holam'] = 0x05B9;\n t['holam19'] = 0x05B9;\n t['holam26'] = 0x05B9;\n t['holam32'] = 0x05B9;\n t['holamhebrew'] = 0x05B9;\n t['holamnarrowhebrew'] = 0x05B9;\n t['holamquarterhebrew'] = 0x05B9;\n t['holamwidehebrew'] = 0x05B9;\n t['honokhukthai'] = 0x0E2E;\n t['hookabovecomb'] = 0x0309;\n t['hookcmb'] = 0x0309;\n t['hookpalatalizedbelowcmb'] = 0x0321;\n t['hookretroflexbelowcmb'] = 0x0322;\n t['hoonsquare'] = 0x3342;\n t['horicoptic'] = 0x03E9;\n t['horizontalbar'] = 0x2015;\n t['horncmb'] = 0x031B;\n t['hotsprings'] = 0x2668;\n t['house'] = 0x2302;\n t['hparen'] = 0x24A3;\n t['hsuperior'] = 0x02B0;\n t['hturned'] = 0x0265;\n t['huhiragana'] = 0x3075;\n t['huiitosquare'] = 0x3333;\n t['hukatakana'] = 0x30D5;\n t['hukatakanahalfwidth'] = 0xFF8C;\n t['hungarumlaut'] = 0x02DD;\n t['hungarumlautcmb'] = 0x030B;\n t['hv'] = 0x0195;\n t['hyphen'] = 0x002D;\n t['hypheninferior'] = 0xF6E5;\n t['hyphenmonospace'] = 0xFF0D;\n t['hyphensmall'] = 0xFE63;\n t['hyphensuperior'] = 0xF6E6;\n t['hyphentwo'] = 0x2010;\n t['i'] = 0x0069;\n t['iacute'] = 0x00ED;\n t['iacyrillic'] = 0x044F;\n t['ibengali'] = 0x0987;\n t['ibopomofo'] = 0x3127;\n t['ibreve'] = 0x012D;\n t['icaron'] = 0x01D0;\n t['icircle'] = 0x24D8;\n t['icircumflex'] = 0x00EE;\n t['icyrillic'] = 0x0456;\n t['idblgrave'] = 0x0209;\n t['ideographearthcircle'] = 0x328F;\n t['ideographfirecircle'] = 0x328B;\n t['ideographicallianceparen'] = 0x323F;\n t['ideographiccallparen'] = 0x323A;\n t['ideographiccentrecircle'] = 0x32A5;\n t['ideographicclose'] = 0x3006;\n t['ideographiccomma'] = 0x3001;\n t['ideographiccommaleft'] = 0xFF64;\n t['ideographiccongratulationparen'] = 0x3237;\n t['ideographiccorrectcircle'] = 0x32A3;\n t['ideographicearthparen'] = 0x322F;\n t['ideographicenterpriseparen'] = 0x323D;\n t['ideographicexcellentcircle'] = 0x329D;\n t['ideographicfestivalparen'] = 0x3240;\n t['ideographicfinancialcircle'] = 0x3296;\n t['ideographicfinancialparen'] = 0x3236;\n t['ideographicfireparen'] = 0x322B;\n t['ideographichaveparen'] = 0x3232;\n t['ideographichighcircle'] = 0x32A4;\n t['ideographiciterationmark'] = 0x3005;\n t['ideographiclaborcircle'] = 0x3298;\n t['ideographiclaborparen'] = 0x3238;\n t['ideographicleftcircle'] = 0x32A7;\n t['ideographiclowcircle'] = 0x32A6;\n t['ideographicmedicinecircle'] = 0x32A9;\n t['ideographicmetalparen'] = 0x322E;\n t['ideographicmoonparen'] = 0x322A;\n t['ideographicnameparen'] = 0x3234;\n t['ideographicperiod'] = 0x3002;\n t['ideographicprintcircle'] = 0x329E;\n t['ideographicreachparen'] = 0x3243;\n t['ideographicrepresentparen'] = 0x3239;\n t['ideographicresourceparen'] = 0x323E;\n t['ideographicrightcircle'] = 0x32A8;\n t['ideographicsecretcircle'] = 0x3299;\n t['ideographicselfparen'] = 0x3242;\n t['ideographicsocietyparen'] = 0x3233;\n t['ideographicspace'] = 0x3000;\n t['ideographicspecialparen'] = 0x3235;\n t['ideographicstockparen'] = 0x3231;\n t['ideographicstudyparen'] = 0x323B;\n t['ideographicsunparen'] = 0x3230;\n t['ideographicsuperviseparen'] = 0x323C;\n t['ideographicwaterparen'] = 0x322C;\n t['ideographicwoodparen'] = 0x322D;\n t['ideographiczero'] = 0x3007;\n t['ideographmetalcircle'] = 0x328E;\n t['ideographmooncircle'] = 0x328A;\n t['ideographnamecircle'] = 0x3294;\n t['ideographsuncircle'] = 0x3290;\n t['ideographwatercircle'] = 0x328C;\n t['ideographwoodcircle'] = 0x328D;\n t['ideva'] = 0x0907;\n t['idieresis'] = 0x00EF;\n t['idieresisacute'] = 0x1E2F;\n t['idieresiscyrillic'] = 0x04E5;\n t['idotbelow'] = 0x1ECB;\n t['iebrevecyrillic'] = 0x04D7;\n t['iecyrillic'] = 0x0435;\n t['ieungacirclekorean'] = 0x3275;\n t['ieungaparenkorean'] = 0x3215;\n t['ieungcirclekorean'] = 0x3267;\n t['ieungkorean'] = 0x3147;\n t['ieungparenkorean'] = 0x3207;\n t['igrave'] = 0x00EC;\n t['igujarati'] = 0x0A87;\n t['igurmukhi'] = 0x0A07;\n t['ihiragana'] = 0x3044;\n t['ihookabove'] = 0x1EC9;\n t['iibengali'] = 0x0988;\n t['iicyrillic'] = 0x0438;\n t['iideva'] = 0x0908;\n t['iigujarati'] = 0x0A88;\n t['iigurmukhi'] = 0x0A08;\n t['iimatragurmukhi'] = 0x0A40;\n t['iinvertedbreve'] = 0x020B;\n t['iishortcyrillic'] = 0x0439;\n t['iivowelsignbengali'] = 0x09C0;\n t['iivowelsigndeva'] = 0x0940;\n t['iivowelsigngujarati'] = 0x0AC0;\n t['ij'] = 0x0133;\n t['ikatakana'] = 0x30A4;\n t['ikatakanahalfwidth'] = 0xFF72;\n t['ikorean'] = 0x3163;\n t['ilde'] = 0x02DC;\n t['iluyhebrew'] = 0x05AC;\n t['imacron'] = 0x012B;\n t['imacroncyrillic'] = 0x04E3;\n t['imageorapproximatelyequal'] = 0x2253;\n t['imatragurmukhi'] = 0x0A3F;\n t['imonospace'] = 0xFF49;\n t['increment'] = 0x2206;\n t['infinity'] = 0x221E;\n t['iniarmenian'] = 0x056B;\n t['integral'] = 0x222B;\n t['integralbottom'] = 0x2321;\n t['integralbt'] = 0x2321;\n t['integralex'] = 0xF8F5;\n t['integraltop'] = 0x2320;\n t['integraltp'] = 0x2320;\n t['intersection'] = 0x2229;\n t['intisquare'] = 0x3305;\n t['invbullet'] = 0x25D8;\n t['invcircle'] = 0x25D9;\n t['invsmileface'] = 0x263B;\n t['iocyrillic'] = 0x0451;\n t['iogonek'] = 0x012F;\n t['iota'] = 0x03B9;\n t['iotadieresis'] = 0x03CA;\n t['iotadieresistonos'] = 0x0390;\n t['iotalatin'] = 0x0269;\n t['iotatonos'] = 0x03AF;\n t['iparen'] = 0x24A4;\n t['irigurmukhi'] = 0x0A72;\n t['ismallhiragana'] = 0x3043;\n t['ismallkatakana'] = 0x30A3;\n t['ismallkatakanahalfwidth'] = 0xFF68;\n t['issharbengali'] = 0x09FA;\n t['istroke'] = 0x0268;\n t['isuperior'] = 0xF6ED;\n t['iterationhiragana'] = 0x309D;\n t['iterationkatakana'] = 0x30FD;\n t['itilde'] = 0x0129;\n t['itildebelow'] = 0x1E2D;\n t['iubopomofo'] = 0x3129;\n t['iucyrillic'] = 0x044E;\n t['ivowelsignbengali'] = 0x09BF;\n t['ivowelsigndeva'] = 0x093F;\n t['ivowelsigngujarati'] = 0x0ABF;\n t['izhitsacyrillic'] = 0x0475;\n t['izhitsadblgravecyrillic'] = 0x0477;\n t['j'] = 0x006A;\n t['jaarmenian'] = 0x0571;\n t['jabengali'] = 0x099C;\n t['jadeva'] = 0x091C;\n t['jagujarati'] = 0x0A9C;\n t['jagurmukhi'] = 0x0A1C;\n t['jbopomofo'] = 0x3110;\n t['jcaron'] = 0x01F0;\n t['jcircle'] = 0x24D9;\n t['jcircumflex'] = 0x0135;\n t['jcrossedtail'] = 0x029D;\n t['jdotlessstroke'] = 0x025F;\n t['jecyrillic'] = 0x0458;\n t['jeemarabic'] = 0x062C;\n t['jeemfinalarabic'] = 0xFE9E;\n t['jeeminitialarabic'] = 0xFE9F;\n t['jeemmedialarabic'] = 0xFEA0;\n t['jeharabic'] = 0x0698;\n t['jehfinalarabic'] = 0xFB8B;\n t['jhabengali'] = 0x099D;\n t['jhadeva'] = 0x091D;\n t['jhagujarati'] = 0x0A9D;\n t['jhagurmukhi'] = 0x0A1D;\n t['jheharmenian'] = 0x057B;\n t['jis'] = 0x3004;\n t['jmonospace'] = 0xFF4A;\n t['jparen'] = 0x24A5;\n t['jsuperior'] = 0x02B2;\n t['k'] = 0x006B;\n t['kabashkircyrillic'] = 0x04A1;\n t['kabengali'] = 0x0995;\n t['kacute'] = 0x1E31;\n t['kacyrillic'] = 0x043A;\n t['kadescendercyrillic'] = 0x049B;\n t['kadeva'] = 0x0915;\n t['kaf'] = 0x05DB;\n t['kafarabic'] = 0x0643;\n t['kafdagesh'] = 0xFB3B;\n t['kafdageshhebrew'] = 0xFB3B;\n t['kaffinalarabic'] = 0xFEDA;\n t['kafhebrew'] = 0x05DB;\n t['kafinitialarabic'] = 0xFEDB;\n t['kafmedialarabic'] = 0xFEDC;\n t['kafrafehebrew'] = 0xFB4D;\n t['kagujarati'] = 0x0A95;\n t['kagurmukhi'] = 0x0A15;\n t['kahiragana'] = 0x304B;\n t['kahookcyrillic'] = 0x04C4;\n t['kakatakana'] = 0x30AB;\n t['kakatakanahalfwidth'] = 0xFF76;\n t['kappa'] = 0x03BA;\n t['kappasymbolgreek'] = 0x03F0;\n t['kapyeounmieumkorean'] = 0x3171;\n t['kapyeounphieuphkorean'] = 0x3184;\n t['kapyeounpieupkorean'] = 0x3178;\n t['kapyeounssangpieupkorean'] = 0x3179;\n t['karoriisquare'] = 0x330D;\n t['kashidaautoarabic'] = 0x0640;\n t['kashidaautonosidebearingarabic'] = 0x0640;\n t['kasmallkatakana'] = 0x30F5;\n t['kasquare'] = 0x3384;\n t['kasraarabic'] = 0x0650;\n t['kasratanarabic'] = 0x064D;\n t['kastrokecyrillic'] = 0x049F;\n t['katahiraprolongmarkhalfwidth'] = 0xFF70;\n t['kaverticalstrokecyrillic'] = 0x049D;\n t['kbopomofo'] = 0x310E;\n t['kcalsquare'] = 0x3389;\n t['kcaron'] = 0x01E9;\n t['kcedilla'] = 0x0137;\n t['kcircle'] = 0x24DA;\n t['kcommaaccent'] = 0x0137;\n t['kdotbelow'] = 0x1E33;\n t['keharmenian'] = 0x0584;\n t['kehiragana'] = 0x3051;\n t['kekatakana'] = 0x30B1;\n t['kekatakanahalfwidth'] = 0xFF79;\n t['kenarmenian'] = 0x056F;\n t['kesmallkatakana'] = 0x30F6;\n t['kgreenlandic'] = 0x0138;\n t['khabengali'] = 0x0996;\n t['khacyrillic'] = 0x0445;\n t['khadeva'] = 0x0916;\n t['khagujarati'] = 0x0A96;\n t['khagurmukhi'] = 0x0A16;\n t['khaharabic'] = 0x062E;\n t['khahfinalarabic'] = 0xFEA6;\n t['khahinitialarabic'] = 0xFEA7;\n t['khahmedialarabic'] = 0xFEA8;\n t['kheicoptic'] = 0x03E7;\n t['khhadeva'] = 0x0959;\n t['khhagurmukhi'] = 0x0A59;\n t['khieukhacirclekorean'] = 0x3278;\n t['khieukhaparenkorean'] = 0x3218;\n t['khieukhcirclekorean'] = 0x326A;\n t['khieukhkorean'] = 0x314B;\n t['khieukhparenkorean'] = 0x320A;\n t['khokhaithai'] = 0x0E02;\n t['khokhonthai'] = 0x0E05;\n t['khokhuatthai'] = 0x0E03;\n t['khokhwaithai'] = 0x0E04;\n t['khomutthai'] = 0x0E5B;\n t['khook'] = 0x0199;\n t['khorakhangthai'] = 0x0E06;\n t['khzsquare'] = 0x3391;\n t['kihiragana'] = 0x304D;\n t['kikatakana'] = 0x30AD;\n t['kikatakanahalfwidth'] = 0xFF77;\n t['kiroguramusquare'] = 0x3315;\n t['kiromeetorusquare'] = 0x3316;\n t['kirosquare'] = 0x3314;\n t['kiyeokacirclekorean'] = 0x326E;\n t['kiyeokaparenkorean'] = 0x320E;\n t['kiyeokcirclekorean'] = 0x3260;\n t['kiyeokkorean'] = 0x3131;\n t['kiyeokparenkorean'] = 0x3200;\n t['kiyeoksioskorean'] = 0x3133;\n t['kjecyrillic'] = 0x045C;\n t['klinebelow'] = 0x1E35;\n t['klsquare'] = 0x3398;\n t['kmcubedsquare'] = 0x33A6;\n t['kmonospace'] = 0xFF4B;\n t['kmsquaredsquare'] = 0x33A2;\n t['kohiragana'] = 0x3053;\n t['kohmsquare'] = 0x33C0;\n t['kokaithai'] = 0x0E01;\n t['kokatakana'] = 0x30B3;\n t['kokatakanahalfwidth'] = 0xFF7A;\n t['kooposquare'] = 0x331E;\n t['koppacyrillic'] = 0x0481;\n t['koreanstandardsymbol'] = 0x327F;\n t['koroniscmb'] = 0x0343;\n t['kparen'] = 0x24A6;\n t['kpasquare'] = 0x33AA;\n t['ksicyrillic'] = 0x046F;\n t['ktsquare'] = 0x33CF;\n t['kturned'] = 0x029E;\n t['kuhiragana'] = 0x304F;\n t['kukatakana'] = 0x30AF;\n t['kukatakanahalfwidth'] = 0xFF78;\n t['kvsquare'] = 0x33B8;\n t['kwsquare'] = 0x33BE;\n t['l'] = 0x006C;\n t['labengali'] = 0x09B2;\n t['lacute'] = 0x013A;\n t['ladeva'] = 0x0932;\n t['lagujarati'] = 0x0AB2;\n t['lagurmukhi'] = 0x0A32;\n t['lakkhangyaothai'] = 0x0E45;\n t['lamaleffinalarabic'] = 0xFEFC;\n t['lamalefhamzaabovefinalarabic'] = 0xFEF8;\n t['lamalefhamzaaboveisolatedarabic'] = 0xFEF7;\n t['lamalefhamzabelowfinalarabic'] = 0xFEFA;\n t['lamalefhamzabelowisolatedarabic'] = 0xFEF9;\n t['lamalefisolatedarabic'] = 0xFEFB;\n t['lamalefmaddaabovefinalarabic'] = 0xFEF6;\n t['lamalefmaddaaboveisolatedarabic'] = 0xFEF5;\n t['lamarabic'] = 0x0644;\n t['lambda'] = 0x03BB;\n t['lambdastroke'] = 0x019B;\n t['lamed'] = 0x05DC;\n t['lameddagesh'] = 0xFB3C;\n t['lameddageshhebrew'] = 0xFB3C;\n t['lamedhebrew'] = 0x05DC;\n t['lamfinalarabic'] = 0xFEDE;\n t['lamhahinitialarabic'] = 0xFCCA;\n t['laminitialarabic'] = 0xFEDF;\n t['lamjeeminitialarabic'] = 0xFCC9;\n t['lamkhahinitialarabic'] = 0xFCCB;\n t['lamlamhehisolatedarabic'] = 0xFDF2;\n t['lammedialarabic'] = 0xFEE0;\n t['lammeemhahinitialarabic'] = 0xFD88;\n t['lammeeminitialarabic'] = 0xFCCC;\n t['largecircle'] = 0x25EF;\n t['lbar'] = 0x019A;\n t['lbelt'] = 0x026C;\n t['lbopomofo'] = 0x310C;\n t['lcaron'] = 0x013E;\n t['lcedilla'] = 0x013C;\n t['lcircle'] = 0x24DB;\n t['lcircumflexbelow'] = 0x1E3D;\n t['lcommaaccent'] = 0x013C;\n t['ldot'] = 0x0140;\n t['ldotaccent'] = 0x0140;\n t['ldotbelow'] = 0x1E37;\n t['ldotbelowmacron'] = 0x1E39;\n t['leftangleabovecmb'] = 0x031A;\n t['lefttackbelowcmb'] = 0x0318;\n t['less'] = 0x003C;\n t['lessequal'] = 0x2264;\n t['lessequalorgreater'] = 0x22DA;\n t['lessmonospace'] = 0xFF1C;\n t['lessorequivalent'] = 0x2272;\n t['lessorgreater'] = 0x2276;\n t['lessoverequal'] = 0x2266;\n t['lesssmall'] = 0xFE64;\n t['lezh'] = 0x026E;\n t['lfblock'] = 0x258C;\n t['lhookretroflex'] = 0x026D;\n t['lira'] = 0x20A4;\n t['liwnarmenian'] = 0x056C;\n t['lj'] = 0x01C9;\n t['ljecyrillic'] = 0x0459;\n t['ll'] = 0xF6C0;\n t['lladeva'] = 0x0933;\n t['llagujarati'] = 0x0AB3;\n t['llinebelow'] = 0x1E3B;\n t['llladeva'] = 0x0934;\n t['llvocalicbengali'] = 0x09E1;\n t['llvocalicdeva'] = 0x0961;\n t['llvocalicvowelsignbengali'] = 0x09E3;\n t['llvocalicvowelsigndeva'] = 0x0963;\n t['lmiddletilde'] = 0x026B;\n t['lmonospace'] = 0xFF4C;\n t['lmsquare'] = 0x33D0;\n t['lochulathai'] = 0x0E2C;\n t['logicaland'] = 0x2227;\n t['logicalnot'] = 0x00AC;\n t['logicalnotreversed'] = 0x2310;\n t['logicalor'] = 0x2228;\n t['lolingthai'] = 0x0E25;\n t['longs'] = 0x017F;\n t['lowlinecenterline'] = 0xFE4E;\n t['lowlinecmb'] = 0x0332;\n t['lowlinedashed'] = 0xFE4D;\n t['lozenge'] = 0x25CA;\n t['lparen'] = 0x24A7;\n t['lslash'] = 0x0142;\n t['lsquare'] = 0x2113;\n t['lsuperior'] = 0xF6EE;\n t['ltshade'] = 0x2591;\n t['luthai'] = 0x0E26;\n t['lvocalicbengali'] = 0x098C;\n t['lvocalicdeva'] = 0x090C;\n t['lvocalicvowelsignbengali'] = 0x09E2;\n t['lvocalicvowelsigndeva'] = 0x0962;\n t['lxsquare'] = 0x33D3;\n t['m'] = 0x006D;\n t['mabengali'] = 0x09AE;\n t['macron'] = 0x00AF;\n t['macronbelowcmb'] = 0x0331;\n t['macroncmb'] = 0x0304;\n t['macronlowmod'] = 0x02CD;\n t['macronmonospace'] = 0xFFE3;\n t['macute'] = 0x1E3F;\n t['madeva'] = 0x092E;\n t['magujarati'] = 0x0AAE;\n t['magurmukhi'] = 0x0A2E;\n t['mahapakhhebrew'] = 0x05A4;\n t['mahapakhlefthebrew'] = 0x05A4;\n t['mahiragana'] = 0x307E;\n t['maichattawalowleftthai'] = 0xF895;\n t['maichattawalowrightthai'] = 0xF894;\n t['maichattawathai'] = 0x0E4B;\n t['maichattawaupperleftthai'] = 0xF893;\n t['maieklowleftthai'] = 0xF88C;\n t['maieklowrightthai'] = 0xF88B;\n t['maiekthai'] = 0x0E48;\n t['maiekupperleftthai'] = 0xF88A;\n t['maihanakatleftthai'] = 0xF884;\n t['maihanakatthai'] = 0x0E31;\n t['maitaikhuleftthai'] = 0xF889;\n t['maitaikhuthai'] = 0x0E47;\n t['maitholowleftthai'] = 0xF88F;\n t['maitholowrightthai'] = 0xF88E;\n t['maithothai'] = 0x0E49;\n t['maithoupperleftthai'] = 0xF88D;\n t['maitrilowleftthai'] = 0xF892;\n t['maitrilowrightthai'] = 0xF891;\n t['maitrithai'] = 0x0E4A;\n t['maitriupperleftthai'] = 0xF890;\n t['maiyamokthai'] = 0x0E46;\n t['makatakana'] = 0x30DE;\n t['makatakanahalfwidth'] = 0xFF8F;\n t['male'] = 0x2642;\n t['mansyonsquare'] = 0x3347;\n t['maqafhebrew'] = 0x05BE;\n t['mars'] = 0x2642;\n t['masoracirclehebrew'] = 0x05AF;\n t['masquare'] = 0x3383;\n t['mbopomofo'] = 0x3107;\n t['mbsquare'] = 0x33D4;\n t['mcircle'] = 0x24DC;\n t['mcubedsquare'] = 0x33A5;\n t['mdotaccent'] = 0x1E41;\n t['mdotbelow'] = 0x1E43;\n t['meemarabic'] = 0x0645;\n t['meemfinalarabic'] = 0xFEE2;\n t['meeminitialarabic'] = 0xFEE3;\n t['meemmedialarabic'] = 0xFEE4;\n t['meemmeeminitialarabic'] = 0xFCD1;\n t['meemmeemisolatedarabic'] = 0xFC48;\n t['meetorusquare'] = 0x334D;\n t['mehiragana'] = 0x3081;\n t['meizierasquare'] = 0x337E;\n t['mekatakana'] = 0x30E1;\n t['mekatakanahalfwidth'] = 0xFF92;\n t['mem'] = 0x05DE;\n t['memdagesh'] = 0xFB3E;\n t['memdageshhebrew'] = 0xFB3E;\n t['memhebrew'] = 0x05DE;\n t['menarmenian'] = 0x0574;\n t['merkhahebrew'] = 0x05A5;\n t['merkhakefulahebrew'] = 0x05A6;\n t['merkhakefulalefthebrew'] = 0x05A6;\n t['merkhalefthebrew'] = 0x05A5;\n t['mhook'] = 0x0271;\n t['mhzsquare'] = 0x3392;\n t['middledotkatakanahalfwidth'] = 0xFF65;\n t['middot'] = 0x00B7;\n t['mieumacirclekorean'] = 0x3272;\n t['mieumaparenkorean'] = 0x3212;\n t['mieumcirclekorean'] = 0x3264;\n t['mieumkorean'] = 0x3141;\n t['mieumpansioskorean'] = 0x3170;\n t['mieumparenkorean'] = 0x3204;\n t['mieumpieupkorean'] = 0x316E;\n t['mieumsioskorean'] = 0x316F;\n t['mihiragana'] = 0x307F;\n t['mikatakana'] = 0x30DF;\n t['mikatakanahalfwidth'] = 0xFF90;\n t['minus'] = 0x2212;\n t['minusbelowcmb'] = 0x0320;\n t['minuscircle'] = 0x2296;\n t['minusmod'] = 0x02D7;\n t['minusplus'] = 0x2213;\n t['minute'] = 0x2032;\n t['miribaarusquare'] = 0x334A;\n t['mirisquare'] = 0x3349;\n t['mlonglegturned'] = 0x0270;\n t['mlsquare'] = 0x3396;\n t['mmcubedsquare'] = 0x33A3;\n t['mmonospace'] = 0xFF4D;\n t['mmsquaredsquare'] = 0x339F;\n t['mohiragana'] = 0x3082;\n t['mohmsquare'] = 0x33C1;\n t['mokatakana'] = 0x30E2;\n t['mokatakanahalfwidth'] = 0xFF93;\n t['molsquare'] = 0x33D6;\n t['momathai'] = 0x0E21;\n t['moverssquare'] = 0x33A7;\n t['moverssquaredsquare'] = 0x33A8;\n t['mparen'] = 0x24A8;\n t['mpasquare'] = 0x33AB;\n t['mssquare'] = 0x33B3;\n t['msuperior'] = 0xF6EF;\n t['mturned'] = 0x026F;\n t['mu'] = 0x00B5;\n t['mu1'] = 0x00B5;\n t['muasquare'] = 0x3382;\n t['muchgreater'] = 0x226B;\n t['muchless'] = 0x226A;\n t['mufsquare'] = 0x338C;\n t['mugreek'] = 0x03BC;\n t['mugsquare'] = 0x338D;\n t['muhiragana'] = 0x3080;\n t['mukatakana'] = 0x30E0;\n t['mukatakanahalfwidth'] = 0xFF91;\n t['mulsquare'] = 0x3395;\n t['multiply'] = 0x00D7;\n t['mumsquare'] = 0x339B;\n t['munahhebrew'] = 0x05A3;\n t['munahlefthebrew'] = 0x05A3;\n t['musicalnote'] = 0x266A;\n t['musicalnotedbl'] = 0x266B;\n t['musicflatsign'] = 0x266D;\n t['musicsharpsign'] = 0x266F;\n t['mussquare'] = 0x33B2;\n t['muvsquare'] = 0x33B6;\n t['muwsquare'] = 0x33BC;\n t['mvmegasquare'] = 0x33B9;\n t['mvsquare'] = 0x33B7;\n t['mwmegasquare'] = 0x33BF;\n t['mwsquare'] = 0x33BD;\n t['n'] = 0x006E;\n t['nabengali'] = 0x09A8;\n t['nabla'] = 0x2207;\n t['nacute'] = 0x0144;\n t['nadeva'] = 0x0928;\n t['nagujarati'] = 0x0AA8;\n t['nagurmukhi'] = 0x0A28;\n t['nahiragana'] = 0x306A;\n t['nakatakana'] = 0x30CA;\n t['nakatakanahalfwidth'] = 0xFF85;\n t['napostrophe'] = 0x0149;\n t['nasquare'] = 0x3381;\n t['nbopomofo'] = 0x310B;\n t['nbspace'] = 0x00A0;\n t['ncaron'] = 0x0148;\n t['ncedilla'] = 0x0146;\n t['ncircle'] = 0x24DD;\n t['ncircumflexbelow'] = 0x1E4B;\n t['ncommaaccent'] = 0x0146;\n t['ndotaccent'] = 0x1E45;\n t['ndotbelow'] = 0x1E47;\n t['nehiragana'] = 0x306D;\n t['nekatakana'] = 0x30CD;\n t['nekatakanahalfwidth'] = 0xFF88;\n t['newsheqelsign'] = 0x20AA;\n t['nfsquare'] = 0x338B;\n t['ngabengali'] = 0x0999;\n t['ngadeva'] = 0x0919;\n t['ngagujarati'] = 0x0A99;\n t['ngagurmukhi'] = 0x0A19;\n t['ngonguthai'] = 0x0E07;\n t['nhiragana'] = 0x3093;\n t['nhookleft'] = 0x0272;\n t['nhookretroflex'] = 0x0273;\n t['nieunacirclekorean'] = 0x326F;\n t['nieunaparenkorean'] = 0x320F;\n t['nieuncieuckorean'] = 0x3135;\n t['nieuncirclekorean'] = 0x3261;\n t['nieunhieuhkorean'] = 0x3136;\n t['nieunkorean'] = 0x3134;\n t['nieunpansioskorean'] = 0x3168;\n t['nieunparenkorean'] = 0x3201;\n t['nieunsioskorean'] = 0x3167;\n t['nieuntikeutkorean'] = 0x3166;\n t['nihiragana'] = 0x306B;\n t['nikatakana'] = 0x30CB;\n t['nikatakanahalfwidth'] = 0xFF86;\n t['nikhahitleftthai'] = 0xF899;\n t['nikhahitthai'] = 0x0E4D;\n t['nine'] = 0x0039;\n t['ninearabic'] = 0x0669;\n t['ninebengali'] = 0x09EF;\n t['ninecircle'] = 0x2468;\n t['ninecircleinversesansserif'] = 0x2792;\n t['ninedeva'] = 0x096F;\n t['ninegujarati'] = 0x0AEF;\n t['ninegurmukhi'] = 0x0A6F;\n t['ninehackarabic'] = 0x0669;\n t['ninehangzhou'] = 0x3029;\n t['nineideographicparen'] = 0x3228;\n t['nineinferior'] = 0x2089;\n t['ninemonospace'] = 0xFF19;\n t['nineoldstyle'] = 0xF739;\n t['nineparen'] = 0x247C;\n t['nineperiod'] = 0x2490;\n t['ninepersian'] = 0x06F9;\n t['nineroman'] = 0x2178;\n t['ninesuperior'] = 0x2079;\n t['nineteencircle'] = 0x2472;\n t['nineteenparen'] = 0x2486;\n t['nineteenperiod'] = 0x249A;\n t['ninethai'] = 0x0E59;\n t['nj'] = 0x01CC;\n t['njecyrillic'] = 0x045A;\n t['nkatakana'] = 0x30F3;\n t['nkatakanahalfwidth'] = 0xFF9D;\n t['nlegrightlong'] = 0x019E;\n t['nlinebelow'] = 0x1E49;\n t['nmonospace'] = 0xFF4E;\n t['nmsquare'] = 0x339A;\n t['nnabengali'] = 0x09A3;\n t['nnadeva'] = 0x0923;\n t['nnagujarati'] = 0x0AA3;\n t['nnagurmukhi'] = 0x0A23;\n t['nnnadeva'] = 0x0929;\n t['nohiragana'] = 0x306E;\n t['nokatakana'] = 0x30CE;\n t['nokatakanahalfwidth'] = 0xFF89;\n t['nonbreakingspace'] = 0x00A0;\n t['nonenthai'] = 0x0E13;\n t['nonuthai'] = 0x0E19;\n t['noonarabic'] = 0x0646;\n t['noonfinalarabic'] = 0xFEE6;\n t['noonghunnaarabic'] = 0x06BA;\n t['noonghunnafinalarabic'] = 0xFB9F;\n t['nooninitialarabic'] = 0xFEE7;\n t['noonjeeminitialarabic'] = 0xFCD2;\n t['noonjeemisolatedarabic'] = 0xFC4B;\n t['noonmedialarabic'] = 0xFEE8;\n t['noonmeeminitialarabic'] = 0xFCD5;\n t['noonmeemisolatedarabic'] = 0xFC4E;\n t['noonnoonfinalarabic'] = 0xFC8D;\n t['notcontains'] = 0x220C;\n t['notelement'] = 0x2209;\n t['notelementof'] = 0x2209;\n t['notequal'] = 0x2260;\n t['notgreater'] = 0x226F;\n t['notgreaternorequal'] = 0x2271;\n t['notgreaternorless'] = 0x2279;\n t['notidentical'] = 0x2262;\n t['notless'] = 0x226E;\n t['notlessnorequal'] = 0x2270;\n t['notparallel'] = 0x2226;\n t['notprecedes'] = 0x2280;\n t['notsubset'] = 0x2284;\n t['notsucceeds'] = 0x2281;\n t['notsuperset'] = 0x2285;\n t['nowarmenian'] = 0x0576;\n t['nparen'] = 0x24A9;\n t['nssquare'] = 0x33B1;\n t['nsuperior'] = 0x207F;\n t['ntilde'] = 0x00F1;\n t['nu'] = 0x03BD;\n t['nuhiragana'] = 0x306C;\n t['nukatakana'] = 0x30CC;\n t['nukatakanahalfwidth'] = 0xFF87;\n t['nuktabengali'] = 0x09BC;\n t['nuktadeva'] = 0x093C;\n t['nuktagujarati'] = 0x0ABC;\n t['nuktagurmukhi'] = 0x0A3C;\n t['numbersign'] = 0x0023;\n t['numbersignmonospace'] = 0xFF03;\n t['numbersignsmall'] = 0xFE5F;\n t['numeralsigngreek'] = 0x0374;\n t['numeralsignlowergreek'] = 0x0375;\n t['numero'] = 0x2116;\n t['nun'] = 0x05E0;\n t['nundagesh'] = 0xFB40;\n t['nundageshhebrew'] = 0xFB40;\n t['nunhebrew'] = 0x05E0;\n t['nvsquare'] = 0x33B5;\n t['nwsquare'] = 0x33BB;\n t['nyabengali'] = 0x099E;\n t['nyadeva'] = 0x091E;\n t['nyagujarati'] = 0x0A9E;\n t['nyagurmukhi'] = 0x0A1E;\n t['o'] = 0x006F;\n t['oacute'] = 0x00F3;\n t['oangthai'] = 0x0E2D;\n t['obarred'] = 0x0275;\n t['obarredcyrillic'] = 0x04E9;\n t['obarreddieresiscyrillic'] = 0x04EB;\n t['obengali'] = 0x0993;\n t['obopomofo'] = 0x311B;\n t['obreve'] = 0x014F;\n t['ocandradeva'] = 0x0911;\n t['ocandragujarati'] = 0x0A91;\n t['ocandravowelsigndeva'] = 0x0949;\n t['ocandravowelsigngujarati'] = 0x0AC9;\n t['ocaron'] = 0x01D2;\n t['ocircle'] = 0x24DE;\n t['ocircumflex'] = 0x00F4;\n t['ocircumflexacute'] = 0x1ED1;\n t['ocircumflexdotbelow'] = 0x1ED9;\n t['ocircumflexgrave'] = 0x1ED3;\n t['ocircumflexhookabove'] = 0x1ED5;\n t['ocircumflextilde'] = 0x1ED7;\n t['ocyrillic'] = 0x043E;\n t['odblacute'] = 0x0151;\n t['odblgrave'] = 0x020D;\n t['odeva'] = 0x0913;\n t['odieresis'] = 0x00F6;\n t['odieresiscyrillic'] = 0x04E7;\n t['odotbelow'] = 0x1ECD;\n t['oe'] = 0x0153;\n t['oekorean'] = 0x315A;\n t['ogonek'] = 0x02DB;\n t['ogonekcmb'] = 0x0328;\n t['ograve'] = 0x00F2;\n t['ogujarati'] = 0x0A93;\n t['oharmenian'] = 0x0585;\n t['ohiragana'] = 0x304A;\n t['ohookabove'] = 0x1ECF;\n t['ohorn'] = 0x01A1;\n t['ohornacute'] = 0x1EDB;\n t['ohorndotbelow'] = 0x1EE3;\n t['ohorngrave'] = 0x1EDD;\n t['ohornhookabove'] = 0x1EDF;\n t['ohorntilde'] = 0x1EE1;\n t['ohungarumlaut'] = 0x0151;\n t['oi'] = 0x01A3;\n t['oinvertedbreve'] = 0x020F;\n t['okatakana'] = 0x30AA;\n t['okatakanahalfwidth'] = 0xFF75;\n t['okorean'] = 0x3157;\n t['olehebrew'] = 0x05AB;\n t['omacron'] = 0x014D;\n t['omacronacute'] = 0x1E53;\n t['omacrongrave'] = 0x1E51;\n t['omdeva'] = 0x0950;\n t['omega'] = 0x03C9;\n t['omega1'] = 0x03D6;\n t['omegacyrillic'] = 0x0461;\n t['omegalatinclosed'] = 0x0277;\n t['omegaroundcyrillic'] = 0x047B;\n t['omegatitlocyrillic'] = 0x047D;\n t['omegatonos'] = 0x03CE;\n t['omgujarati'] = 0x0AD0;\n t['omicron'] = 0x03BF;\n t['omicrontonos'] = 0x03CC;\n t['omonospace'] = 0xFF4F;\n t['one'] = 0x0031;\n t['onearabic'] = 0x0661;\n t['onebengali'] = 0x09E7;\n t['onecircle'] = 0x2460;\n t['onecircleinversesansserif'] = 0x278A;\n t['onedeva'] = 0x0967;\n t['onedotenleader'] = 0x2024;\n t['oneeighth'] = 0x215B;\n t['onefitted'] = 0xF6DC;\n t['onegujarati'] = 0x0AE7;\n t['onegurmukhi'] = 0x0A67;\n t['onehackarabic'] = 0x0661;\n t['onehalf'] = 0x00BD;\n t['onehangzhou'] = 0x3021;\n t['oneideographicparen'] = 0x3220;\n t['oneinferior'] = 0x2081;\n t['onemonospace'] = 0xFF11;\n t['onenumeratorbengali'] = 0x09F4;\n t['oneoldstyle'] = 0xF731;\n t['oneparen'] = 0x2474;\n t['oneperiod'] = 0x2488;\n t['onepersian'] = 0x06F1;\n t['onequarter'] = 0x00BC;\n t['oneroman'] = 0x2170;\n t['onesuperior'] = 0x00B9;\n t['onethai'] = 0x0E51;\n t['onethird'] = 0x2153;\n t['oogonek'] = 0x01EB;\n t['oogonekmacron'] = 0x01ED;\n t['oogurmukhi'] = 0x0A13;\n t['oomatragurmukhi'] = 0x0A4B;\n t['oopen'] = 0x0254;\n t['oparen'] = 0x24AA;\n t['openbullet'] = 0x25E6;\n t['option'] = 0x2325;\n t['ordfeminine'] = 0x00AA;\n t['ordmasculine'] = 0x00BA;\n t['orthogonal'] = 0x221F;\n t['oshortdeva'] = 0x0912;\n t['oshortvowelsigndeva'] = 0x094A;\n t['oslash'] = 0x00F8;\n t['oslashacute'] = 0x01FF;\n t['osmallhiragana'] = 0x3049;\n t['osmallkatakana'] = 0x30A9;\n t['osmallkatakanahalfwidth'] = 0xFF6B;\n t['ostrokeacute'] = 0x01FF;\n t['osuperior'] = 0xF6F0;\n t['otcyrillic'] = 0x047F;\n t['otilde'] = 0x00F5;\n t['otildeacute'] = 0x1E4D;\n t['otildedieresis'] = 0x1E4F;\n t['oubopomofo'] = 0x3121;\n t['overline'] = 0x203E;\n t['overlinecenterline'] = 0xFE4A;\n t['overlinecmb'] = 0x0305;\n t['overlinedashed'] = 0xFE49;\n t['overlinedblwavy'] = 0xFE4C;\n t['overlinewavy'] = 0xFE4B;\n t['overscore'] = 0x00AF;\n t['ovowelsignbengali'] = 0x09CB;\n t['ovowelsigndeva'] = 0x094B;\n t['ovowelsigngujarati'] = 0x0ACB;\n t['p'] = 0x0070;\n t['paampssquare'] = 0x3380;\n t['paasentosquare'] = 0x332B;\n t['pabengali'] = 0x09AA;\n t['pacute'] = 0x1E55;\n t['padeva'] = 0x092A;\n t['pagedown'] = 0x21DF;\n t['pageup'] = 0x21DE;\n t['pagujarati'] = 0x0AAA;\n t['pagurmukhi'] = 0x0A2A;\n t['pahiragana'] = 0x3071;\n t['paiyannoithai'] = 0x0E2F;\n t['pakatakana'] = 0x30D1;\n t['palatalizationcyrilliccmb'] = 0x0484;\n t['palochkacyrillic'] = 0x04C0;\n t['pansioskorean'] = 0x317F;\n t['paragraph'] = 0x00B6;\n t['parallel'] = 0x2225;\n t['parenleft'] = 0x0028;\n t['parenleftaltonearabic'] = 0xFD3E;\n t['parenleftbt'] = 0xF8ED;\n t['parenleftex'] = 0xF8EC;\n t['parenleftinferior'] = 0x208D;\n t['parenleftmonospace'] = 0xFF08;\n t['parenleftsmall'] = 0xFE59;\n t['parenleftsuperior'] = 0x207D;\n t['parenlefttp'] = 0xF8EB;\n t['parenleftvertical'] = 0xFE35;\n t['parenright'] = 0x0029;\n t['parenrightaltonearabic'] = 0xFD3F;\n t['parenrightbt'] = 0xF8F8;\n t['parenrightex'] = 0xF8F7;\n t['parenrightinferior'] = 0x208E;\n t['parenrightmonospace'] = 0xFF09;\n t['parenrightsmall'] = 0xFE5A;\n t['parenrightsuperior'] = 0x207E;\n t['parenrighttp'] = 0xF8F6;\n t['parenrightvertical'] = 0xFE36;\n t['partialdiff'] = 0x2202;\n t['paseqhebrew'] = 0x05C0;\n t['pashtahebrew'] = 0x0599;\n t['pasquare'] = 0x33A9;\n t['patah'] = 0x05B7;\n t['patah11'] = 0x05B7;\n t['patah1d'] = 0x05B7;\n t['patah2a'] = 0x05B7;\n t['patahhebrew'] = 0x05B7;\n t['patahnarrowhebrew'] = 0x05B7;\n t['patahquarterhebrew'] = 0x05B7;\n t['patahwidehebrew'] = 0x05B7;\n t['pazerhebrew'] = 0x05A1;\n t['pbopomofo'] = 0x3106;\n t['pcircle'] = 0x24DF;\n t['pdotaccent'] = 0x1E57;\n t['pe'] = 0x05E4;\n t['pecyrillic'] = 0x043F;\n t['pedagesh'] = 0xFB44;\n t['pedageshhebrew'] = 0xFB44;\n t['peezisquare'] = 0x333B;\n t['pefinaldageshhebrew'] = 0xFB43;\n t['peharabic'] = 0x067E;\n t['peharmenian'] = 0x057A;\n t['pehebrew'] = 0x05E4;\n t['pehfinalarabic'] = 0xFB57;\n t['pehinitialarabic'] = 0xFB58;\n t['pehiragana'] = 0x307A;\n t['pehmedialarabic'] = 0xFB59;\n t['pekatakana'] = 0x30DA;\n t['pemiddlehookcyrillic'] = 0x04A7;\n t['perafehebrew'] = 0xFB4E;\n t['percent'] = 0x0025;\n t['percentarabic'] = 0x066A;\n t['percentmonospace'] = 0xFF05;\n t['percentsmall'] = 0xFE6A;\n t['period'] = 0x002E;\n t['periodarmenian'] = 0x0589;\n t['periodcentered'] = 0x00B7;\n t['periodhalfwidth'] = 0xFF61;\n t['periodinferior'] = 0xF6E7;\n t['periodmonospace'] = 0xFF0E;\n t['periodsmall'] = 0xFE52;\n t['periodsuperior'] = 0xF6E8;\n t['perispomenigreekcmb'] = 0x0342;\n t['perpendicular'] = 0x22A5;\n t['perthousand'] = 0x2030;\n t['peseta'] = 0x20A7;\n t['pfsquare'] = 0x338A;\n t['phabengali'] = 0x09AB;\n t['phadeva'] = 0x092B;\n t['phagujarati'] = 0x0AAB;\n t['phagurmukhi'] = 0x0A2B;\n t['phi'] = 0x03C6;\n t['phi1'] = 0x03D5;\n t['phieuphacirclekorean'] = 0x327A;\n t['phieuphaparenkorean'] = 0x321A;\n t['phieuphcirclekorean'] = 0x326C;\n t['phieuphkorean'] = 0x314D;\n t['phieuphparenkorean'] = 0x320C;\n t['philatin'] = 0x0278;\n t['phinthuthai'] = 0x0E3A;\n t['phisymbolgreek'] = 0x03D5;\n t['phook'] = 0x01A5;\n t['phophanthai'] = 0x0E1E;\n t['phophungthai'] = 0x0E1C;\n t['phosamphaothai'] = 0x0E20;\n t['pi'] = 0x03C0;\n t['pieupacirclekorean'] = 0x3273;\n t['pieupaparenkorean'] = 0x3213;\n t['pieupcieuckorean'] = 0x3176;\n t['pieupcirclekorean'] = 0x3265;\n t['pieupkiyeokkorean'] = 0x3172;\n t['pieupkorean'] = 0x3142;\n t['pieupparenkorean'] = 0x3205;\n t['pieupsioskiyeokkorean'] = 0x3174;\n t['pieupsioskorean'] = 0x3144;\n t['pieupsiostikeutkorean'] = 0x3175;\n t['pieupthieuthkorean'] = 0x3177;\n t['pieuptikeutkorean'] = 0x3173;\n t['pihiragana'] = 0x3074;\n t['pikatakana'] = 0x30D4;\n t['pisymbolgreek'] = 0x03D6;\n t['piwrarmenian'] = 0x0583;\n t['plus'] = 0x002B;\n t['plusbelowcmb'] = 0x031F;\n t['pluscircle'] = 0x2295;\n t['plusminus'] = 0x00B1;\n t['plusmod'] = 0x02D6;\n t['plusmonospace'] = 0xFF0B;\n t['plussmall'] = 0xFE62;\n t['plussuperior'] = 0x207A;\n t['pmonospace'] = 0xFF50;\n t['pmsquare'] = 0x33D8;\n t['pohiragana'] = 0x307D;\n t['pointingindexdownwhite'] = 0x261F;\n t['pointingindexleftwhite'] = 0x261C;\n t['pointingindexrightwhite'] = 0x261E;\n t['pointingindexupwhite'] = 0x261D;\n t['pokatakana'] = 0x30DD;\n t['poplathai'] = 0x0E1B;\n t['postalmark'] = 0x3012;\n t['postalmarkface'] = 0x3020;\n t['pparen'] = 0x24AB;\n t['precedes'] = 0x227A;\n t['prescription'] = 0x211E;\n t['primemod'] = 0x02B9;\n t['primereversed'] = 0x2035;\n t['product'] = 0x220F;\n t['projective'] = 0x2305;\n t['prolongedkana'] = 0x30FC;\n t['propellor'] = 0x2318;\n t['propersubset'] = 0x2282;\n t['propersuperset'] = 0x2283;\n t['proportion'] = 0x2237;\n t['proportional'] = 0x221D;\n t['psi'] = 0x03C8;\n t['psicyrillic'] = 0x0471;\n t['psilipneumatacyrilliccmb'] = 0x0486;\n t['pssquare'] = 0x33B0;\n t['puhiragana'] = 0x3077;\n t['pukatakana'] = 0x30D7;\n t['pvsquare'] = 0x33B4;\n t['pwsquare'] = 0x33BA;\n t['q'] = 0x0071;\n t['qadeva'] = 0x0958;\n t['qadmahebrew'] = 0x05A8;\n t['qafarabic'] = 0x0642;\n t['qaffinalarabic'] = 0xFED6;\n t['qafinitialarabic'] = 0xFED7;\n t['qafmedialarabic'] = 0xFED8;\n t['qamats'] = 0x05B8;\n t['qamats10'] = 0x05B8;\n t['qamats1a'] = 0x05B8;\n t['qamats1c'] = 0x05B8;\n t['qamats27'] = 0x05B8;\n t['qamats29'] = 0x05B8;\n t['qamats33'] = 0x05B8;\n t['qamatsde'] = 0x05B8;\n t['qamatshebrew'] = 0x05B8;\n t['qamatsnarrowhebrew'] = 0x05B8;\n t['qamatsqatanhebrew'] = 0x05B8;\n t['qamatsqatannarrowhebrew'] = 0x05B8;\n t['qamatsqatanquarterhebrew'] = 0x05B8;\n t['qamatsqatanwidehebrew'] = 0x05B8;\n t['qamatsquarterhebrew'] = 0x05B8;\n t['qamatswidehebrew'] = 0x05B8;\n t['qarneyparahebrew'] = 0x059F;\n t['qbopomofo'] = 0x3111;\n t['qcircle'] = 0x24E0;\n t['qhook'] = 0x02A0;\n t['qmonospace'] = 0xFF51;\n t['qof'] = 0x05E7;\n t['qofdagesh'] = 0xFB47;\n t['qofdageshhebrew'] = 0xFB47;\n t['qofhebrew'] = 0x05E7;\n t['qparen'] = 0x24AC;\n t['quarternote'] = 0x2669;\n t['qubuts'] = 0x05BB;\n t['qubuts18'] = 0x05BB;\n t['qubuts25'] = 0x05BB;\n t['qubuts31'] = 0x05BB;\n t['qubutshebrew'] = 0x05BB;\n t['qubutsnarrowhebrew'] = 0x05BB;\n t['qubutsquarterhebrew'] = 0x05BB;\n t['qubutswidehebrew'] = 0x05BB;\n t['question'] = 0x003F;\n t['questionarabic'] = 0x061F;\n t['questionarmenian'] = 0x055E;\n t['questiondown'] = 0x00BF;\n t['questiondownsmall'] = 0xF7BF;\n t['questiongreek'] = 0x037E;\n t['questionmonospace'] = 0xFF1F;\n t['questionsmall'] = 0xF73F;\n t['quotedbl'] = 0x0022;\n t['quotedblbase'] = 0x201E;\n t['quotedblleft'] = 0x201C;\n t['quotedblmonospace'] = 0xFF02;\n t['quotedblprime'] = 0x301E;\n t['quotedblprimereversed'] = 0x301D;\n t['quotedblright'] = 0x201D;\n t['quoteleft'] = 0x2018;\n t['quoteleftreversed'] = 0x201B;\n t['quotereversed'] = 0x201B;\n t['quoteright'] = 0x2019;\n t['quoterightn'] = 0x0149;\n t['quotesinglbase'] = 0x201A;\n t['quotesingle'] = 0x0027;\n t['quotesinglemonospace'] = 0xFF07;\n t['r'] = 0x0072;\n t['raarmenian'] = 0x057C;\n t['rabengali'] = 0x09B0;\n t['racute'] = 0x0155;\n t['radeva'] = 0x0930;\n t['radical'] = 0x221A;\n t['radicalex'] = 0xF8E5;\n t['radoverssquare'] = 0x33AE;\n t['radoverssquaredsquare'] = 0x33AF;\n t['radsquare'] = 0x33AD;\n t['rafe'] = 0x05BF;\n t['rafehebrew'] = 0x05BF;\n t['ragujarati'] = 0x0AB0;\n t['ragurmukhi'] = 0x0A30;\n t['rahiragana'] = 0x3089;\n t['rakatakana'] = 0x30E9;\n t['rakatakanahalfwidth'] = 0xFF97;\n t['ralowerdiagonalbengali'] = 0x09F1;\n t['ramiddlediagonalbengali'] = 0x09F0;\n t['ramshorn'] = 0x0264;\n t['ratio'] = 0x2236;\n t['rbopomofo'] = 0x3116;\n t['rcaron'] = 0x0159;\n t['rcedilla'] = 0x0157;\n t['rcircle'] = 0x24E1;\n t['rcommaaccent'] = 0x0157;\n t['rdblgrave'] = 0x0211;\n t['rdotaccent'] = 0x1E59;\n t['rdotbelow'] = 0x1E5B;\n t['rdotbelowmacron'] = 0x1E5D;\n t['referencemark'] = 0x203B;\n t['reflexsubset'] = 0x2286;\n t['reflexsuperset'] = 0x2287;\n t['registered'] = 0x00AE;\n t['registersans'] = 0xF8E8;\n t['registerserif'] = 0xF6DA;\n t['reharabic'] = 0x0631;\n t['reharmenian'] = 0x0580;\n t['rehfinalarabic'] = 0xFEAE;\n t['rehiragana'] = 0x308C;\n t['rekatakana'] = 0x30EC;\n t['rekatakanahalfwidth'] = 0xFF9A;\n t['resh'] = 0x05E8;\n t['reshdageshhebrew'] = 0xFB48;\n t['reshhebrew'] = 0x05E8;\n t['reversedtilde'] = 0x223D;\n t['reviahebrew'] = 0x0597;\n t['reviamugrashhebrew'] = 0x0597;\n t['revlogicalnot'] = 0x2310;\n t['rfishhook'] = 0x027E;\n t['rfishhookreversed'] = 0x027F;\n t['rhabengali'] = 0x09DD;\n t['rhadeva'] = 0x095D;\n t['rho'] = 0x03C1;\n t['rhook'] = 0x027D;\n t['rhookturned'] = 0x027B;\n t['rhookturnedsuperior'] = 0x02B5;\n t['rhosymbolgreek'] = 0x03F1;\n t['rhotichookmod'] = 0x02DE;\n t['rieulacirclekorean'] = 0x3271;\n t['rieulaparenkorean'] = 0x3211;\n t['rieulcirclekorean'] = 0x3263;\n t['rieulhieuhkorean'] = 0x3140;\n t['rieulkiyeokkorean'] = 0x313A;\n t['rieulkiyeoksioskorean'] = 0x3169;\n t['rieulkorean'] = 0x3139;\n t['rieulmieumkorean'] = 0x313B;\n t['rieulpansioskorean'] = 0x316C;\n t['rieulparenkorean'] = 0x3203;\n t['rieulphieuphkorean'] = 0x313F;\n t['rieulpieupkorean'] = 0x313C;\n t['rieulpieupsioskorean'] = 0x316B;\n t['rieulsioskorean'] = 0x313D;\n t['rieulthieuthkorean'] = 0x313E;\n t['rieultikeutkorean'] = 0x316A;\n t['rieulyeorinhieuhkorean'] = 0x316D;\n t['rightangle'] = 0x221F;\n t['righttackbelowcmb'] = 0x0319;\n t['righttriangle'] = 0x22BF;\n t['rihiragana'] = 0x308A;\n t['rikatakana'] = 0x30EA;\n t['rikatakanahalfwidth'] = 0xFF98;\n t['ring'] = 0x02DA;\n t['ringbelowcmb'] = 0x0325;\n t['ringcmb'] = 0x030A;\n t['ringhalfleft'] = 0x02BF;\n t['ringhalfleftarmenian'] = 0x0559;\n t['ringhalfleftbelowcmb'] = 0x031C;\n t['ringhalfleftcentered'] = 0x02D3;\n t['ringhalfright'] = 0x02BE;\n t['ringhalfrightbelowcmb'] = 0x0339;\n t['ringhalfrightcentered'] = 0x02D2;\n t['rinvertedbreve'] = 0x0213;\n t['rittorusquare'] = 0x3351;\n t['rlinebelow'] = 0x1E5F;\n t['rlongleg'] = 0x027C;\n t['rlonglegturned'] = 0x027A;\n t['rmonospace'] = 0xFF52;\n t['rohiragana'] = 0x308D;\n t['rokatakana'] = 0x30ED;\n t['rokatakanahalfwidth'] = 0xFF9B;\n t['roruathai'] = 0x0E23;\n t['rparen'] = 0x24AD;\n t['rrabengali'] = 0x09DC;\n t['rradeva'] = 0x0931;\n t['rragurmukhi'] = 0x0A5C;\n t['rreharabic'] = 0x0691;\n t['rrehfinalarabic'] = 0xFB8D;\n t['rrvocalicbengali'] = 0x09E0;\n t['rrvocalicdeva'] = 0x0960;\n t['rrvocalicgujarati'] = 0x0AE0;\n t['rrvocalicvowelsignbengali'] = 0x09C4;\n t['rrvocalicvowelsigndeva'] = 0x0944;\n t['rrvocalicvowelsigngujarati'] = 0x0AC4;\n t['rsuperior'] = 0xF6F1;\n t['rtblock'] = 0x2590;\n t['rturned'] = 0x0279;\n t['rturnedsuperior'] = 0x02B4;\n t['ruhiragana'] = 0x308B;\n t['rukatakana'] = 0x30EB;\n t['rukatakanahalfwidth'] = 0xFF99;\n t['rupeemarkbengali'] = 0x09F2;\n t['rupeesignbengali'] = 0x09F3;\n t['rupiah'] = 0xF6DD;\n t['ruthai'] = 0x0E24;\n t['rvocalicbengali'] = 0x098B;\n t['rvocalicdeva'] = 0x090B;\n t['rvocalicgujarati'] = 0x0A8B;\n t['rvocalicvowelsignbengali'] = 0x09C3;\n t['rvocalicvowelsigndeva'] = 0x0943;\n t['rvocalicvowelsigngujarati'] = 0x0AC3;\n t['s'] = 0x0073;\n t['sabengali'] = 0x09B8;\n t['sacute'] = 0x015B;\n t['sacutedotaccent'] = 0x1E65;\n t['sadarabic'] = 0x0635;\n t['sadeva'] = 0x0938;\n t['sadfinalarabic'] = 0xFEBA;\n t['sadinitialarabic'] = 0xFEBB;\n t['sadmedialarabic'] = 0xFEBC;\n t['sagujarati'] = 0x0AB8;\n t['sagurmukhi'] = 0x0A38;\n t['sahiragana'] = 0x3055;\n t['sakatakana'] = 0x30B5;\n t['sakatakanahalfwidth'] = 0xFF7B;\n t['sallallahoualayhewasallamarabic'] = 0xFDFA;\n t['samekh'] = 0x05E1;\n t['samekhdagesh'] = 0xFB41;\n t['samekhdageshhebrew'] = 0xFB41;\n t['samekhhebrew'] = 0x05E1;\n t['saraaathai'] = 0x0E32;\n t['saraaethai'] = 0x0E41;\n t['saraaimaimalaithai'] = 0x0E44;\n t['saraaimaimuanthai'] = 0x0E43;\n t['saraamthai'] = 0x0E33;\n t['saraathai'] = 0x0E30;\n t['saraethai'] = 0x0E40;\n t['saraiileftthai'] = 0xF886;\n t['saraiithai'] = 0x0E35;\n t['saraileftthai'] = 0xF885;\n t['saraithai'] = 0x0E34;\n t['saraothai'] = 0x0E42;\n t['saraueeleftthai'] = 0xF888;\n t['saraueethai'] = 0x0E37;\n t['saraueleftthai'] = 0xF887;\n t['sarauethai'] = 0x0E36;\n t['sarauthai'] = 0x0E38;\n t['sarauuthai'] = 0x0E39;\n t['sbopomofo'] = 0x3119;\n t['scaron'] = 0x0161;\n t['scarondotaccent'] = 0x1E67;\n t['scedilla'] = 0x015F;\n t['schwa'] = 0x0259;\n t['schwacyrillic'] = 0x04D9;\n t['schwadieresiscyrillic'] = 0x04DB;\n t['schwahook'] = 0x025A;\n t['scircle'] = 0x24E2;\n t['scircumflex'] = 0x015D;\n t['scommaaccent'] = 0x0219;\n t['sdotaccent'] = 0x1E61;\n t['sdotbelow'] = 0x1E63;\n t['sdotbelowdotaccent'] = 0x1E69;\n t['seagullbelowcmb'] = 0x033C;\n t['second'] = 0x2033;\n t['secondtonechinese'] = 0x02CA;\n t['section'] = 0x00A7;\n t['seenarabic'] = 0x0633;\n t['seenfinalarabic'] = 0xFEB2;\n t['seeninitialarabic'] = 0xFEB3;\n t['seenmedialarabic'] = 0xFEB4;\n t['segol'] = 0x05B6;\n t['segol13'] = 0x05B6;\n t['segol1f'] = 0x05B6;\n t['segol2c'] = 0x05B6;\n t['segolhebrew'] = 0x05B6;\n t['segolnarrowhebrew'] = 0x05B6;\n t['segolquarterhebrew'] = 0x05B6;\n t['segoltahebrew'] = 0x0592;\n t['segolwidehebrew'] = 0x05B6;\n t['seharmenian'] = 0x057D;\n t['sehiragana'] = 0x305B;\n t['sekatakana'] = 0x30BB;\n t['sekatakanahalfwidth'] = 0xFF7E;\n t['semicolon'] = 0x003B;\n t['semicolonarabic'] = 0x061B;\n t['semicolonmonospace'] = 0xFF1B;\n t['semicolonsmall'] = 0xFE54;\n t['semivoicedmarkkana'] = 0x309C;\n t['semivoicedmarkkanahalfwidth'] = 0xFF9F;\n t['sentisquare'] = 0x3322;\n t['sentosquare'] = 0x3323;\n t['seven'] = 0x0037;\n t['sevenarabic'] = 0x0667;\n t['sevenbengali'] = 0x09ED;\n t['sevencircle'] = 0x2466;\n t['sevencircleinversesansserif'] = 0x2790;\n t['sevendeva'] = 0x096D;\n t['seveneighths'] = 0x215E;\n t['sevengujarati'] = 0x0AED;\n t['sevengurmukhi'] = 0x0A6D;\n t['sevenhackarabic'] = 0x0667;\n t['sevenhangzhou'] = 0x3027;\n t['sevenideographicparen'] = 0x3226;\n t['seveninferior'] = 0x2087;\n t['sevenmonospace'] = 0xFF17;\n t['sevenoldstyle'] = 0xF737;\n t['sevenparen'] = 0x247A;\n t['sevenperiod'] = 0x248E;\n t['sevenpersian'] = 0x06F7;\n t['sevenroman'] = 0x2176;\n t['sevensuperior'] = 0x2077;\n t['seventeencircle'] = 0x2470;\n t['seventeenparen'] = 0x2484;\n t['seventeenperiod'] = 0x2498;\n t['seventhai'] = 0x0E57;\n t['sfthyphen'] = 0x00AD;\n t['shaarmenian'] = 0x0577;\n t['shabengali'] = 0x09B6;\n t['shacyrillic'] = 0x0448;\n t['shaddaarabic'] = 0x0651;\n t['shaddadammaarabic'] = 0xFC61;\n t['shaddadammatanarabic'] = 0xFC5E;\n t['shaddafathaarabic'] = 0xFC60;\n t['shaddakasraarabic'] = 0xFC62;\n t['shaddakasratanarabic'] = 0xFC5F;\n t['shade'] = 0x2592;\n t['shadedark'] = 0x2593;\n t['shadelight'] = 0x2591;\n t['shademedium'] = 0x2592;\n t['shadeva'] = 0x0936;\n t['shagujarati'] = 0x0AB6;\n t['shagurmukhi'] = 0x0A36;\n t['shalshelethebrew'] = 0x0593;\n t['shbopomofo'] = 0x3115;\n t['shchacyrillic'] = 0x0449;\n t['sheenarabic'] = 0x0634;\n t['sheenfinalarabic'] = 0xFEB6;\n t['sheeninitialarabic'] = 0xFEB7;\n t['sheenmedialarabic'] = 0xFEB8;\n t['sheicoptic'] = 0x03E3;\n t['sheqel'] = 0x20AA;\n t['sheqelhebrew'] = 0x20AA;\n t['sheva'] = 0x05B0;\n t['sheva115'] = 0x05B0;\n t['sheva15'] = 0x05B0;\n t['sheva22'] = 0x05B0;\n t['sheva2e'] = 0x05B0;\n t['shevahebrew'] = 0x05B0;\n t['shevanarrowhebrew'] = 0x05B0;\n t['shevaquarterhebrew'] = 0x05B0;\n t['shevawidehebrew'] = 0x05B0;\n t['shhacyrillic'] = 0x04BB;\n t['shimacoptic'] = 0x03ED;\n t['shin'] = 0x05E9;\n t['shindagesh'] = 0xFB49;\n t['shindageshhebrew'] = 0xFB49;\n t['shindageshshindot'] = 0xFB2C;\n t['shindageshshindothebrew'] = 0xFB2C;\n t['shindageshsindot'] = 0xFB2D;\n t['shindageshsindothebrew'] = 0xFB2D;\n t['shindothebrew'] = 0x05C1;\n t['shinhebrew'] = 0x05E9;\n t['shinshindot'] = 0xFB2A;\n t['shinshindothebrew'] = 0xFB2A;\n t['shinsindot'] = 0xFB2B;\n t['shinsindothebrew'] = 0xFB2B;\n t['shook'] = 0x0282;\n t['sigma'] = 0x03C3;\n t['sigma1'] = 0x03C2;\n t['sigmafinal'] = 0x03C2;\n t['sigmalunatesymbolgreek'] = 0x03F2;\n t['sihiragana'] = 0x3057;\n t['sikatakana'] = 0x30B7;\n t['sikatakanahalfwidth'] = 0xFF7C;\n t['siluqhebrew'] = 0x05BD;\n t['siluqlefthebrew'] = 0x05BD;\n t['similar'] = 0x223C;\n t['sindothebrew'] = 0x05C2;\n t['siosacirclekorean'] = 0x3274;\n t['siosaparenkorean'] = 0x3214;\n t['sioscieuckorean'] = 0x317E;\n t['sioscirclekorean'] = 0x3266;\n t['sioskiyeokkorean'] = 0x317A;\n t['sioskorean'] = 0x3145;\n t['siosnieunkorean'] = 0x317B;\n t['siosparenkorean'] = 0x3206;\n t['siospieupkorean'] = 0x317D;\n t['siostikeutkorean'] = 0x317C;\n t['six'] = 0x0036;\n t['sixarabic'] = 0x0666;\n t['sixbengali'] = 0x09EC;\n t['sixcircle'] = 0x2465;\n t['sixcircleinversesansserif'] = 0x278F;\n t['sixdeva'] = 0x096C;\n t['sixgujarati'] = 0x0AEC;\n t['sixgurmukhi'] = 0x0A6C;\n t['sixhackarabic'] = 0x0666;\n t['sixhangzhou'] = 0x3026;\n t['sixideographicparen'] = 0x3225;\n t['sixinferior'] = 0x2086;\n t['sixmonospace'] = 0xFF16;\n t['sixoldstyle'] = 0xF736;\n t['sixparen'] = 0x2479;\n t['sixperiod'] = 0x248D;\n t['sixpersian'] = 0x06F6;\n t['sixroman'] = 0x2175;\n t['sixsuperior'] = 0x2076;\n t['sixteencircle'] = 0x246F;\n t['sixteencurrencydenominatorbengali'] = 0x09F9;\n t['sixteenparen'] = 0x2483;\n t['sixteenperiod'] = 0x2497;\n t['sixthai'] = 0x0E56;\n t['slash'] = 0x002F;\n t['slashmonospace'] = 0xFF0F;\n t['slong'] = 0x017F;\n t['slongdotaccent'] = 0x1E9B;\n t['smileface'] = 0x263A;\n t['smonospace'] = 0xFF53;\n t['sofpasuqhebrew'] = 0x05C3;\n t['softhyphen'] = 0x00AD;\n t['softsigncyrillic'] = 0x044C;\n t['sohiragana'] = 0x305D;\n t['sokatakana'] = 0x30BD;\n t['sokatakanahalfwidth'] = 0xFF7F;\n t['soliduslongoverlaycmb'] = 0x0338;\n t['solidusshortoverlaycmb'] = 0x0337;\n t['sorusithai'] = 0x0E29;\n t['sosalathai'] = 0x0E28;\n t['sosothai'] = 0x0E0B;\n t['sosuathai'] = 0x0E2A;\n t['space'] = 0x0020;\n t['spacehackarabic'] = 0x0020;\n t['spade'] = 0x2660;\n t['spadesuitblack'] = 0x2660;\n t['spadesuitwhite'] = 0x2664;\n t['sparen'] = 0x24AE;\n t['squarebelowcmb'] = 0x033B;\n t['squarecc'] = 0x33C4;\n t['squarecm'] = 0x339D;\n t['squarediagonalcrosshatchfill'] = 0x25A9;\n t['squarehorizontalfill'] = 0x25A4;\n t['squarekg'] = 0x338F;\n t['squarekm'] = 0x339E;\n t['squarekmcapital'] = 0x33CE;\n t['squareln'] = 0x33D1;\n t['squarelog'] = 0x33D2;\n t['squaremg'] = 0x338E;\n t['squaremil'] = 0x33D5;\n t['squaremm'] = 0x339C;\n t['squaremsquared'] = 0x33A1;\n t['squareorthogonalcrosshatchfill'] = 0x25A6;\n t['squareupperlefttolowerrightfill'] = 0x25A7;\n t['squareupperrighttolowerleftfill'] = 0x25A8;\n t['squareverticalfill'] = 0x25A5;\n t['squarewhitewithsmallblack'] = 0x25A3;\n t['srsquare'] = 0x33DB;\n t['ssabengali'] = 0x09B7;\n t['ssadeva'] = 0x0937;\n t['ssagujarati'] = 0x0AB7;\n t['ssangcieuckorean'] = 0x3149;\n t['ssanghieuhkorean'] = 0x3185;\n t['ssangieungkorean'] = 0x3180;\n t['ssangkiyeokkorean'] = 0x3132;\n t['ssangnieunkorean'] = 0x3165;\n t['ssangpieupkorean'] = 0x3143;\n t['ssangsioskorean'] = 0x3146;\n t['ssangtikeutkorean'] = 0x3138;\n t['ssuperior'] = 0xF6F2;\n t['sterling'] = 0x00A3;\n t['sterlingmonospace'] = 0xFFE1;\n t['strokelongoverlaycmb'] = 0x0336;\n t['strokeshortoverlaycmb'] = 0x0335;\n t['subset'] = 0x2282;\n t['subsetnotequal'] = 0x228A;\n t['subsetorequal'] = 0x2286;\n t['succeeds'] = 0x227B;\n t['suchthat'] = 0x220B;\n t['suhiragana'] = 0x3059;\n t['sukatakana'] = 0x30B9;\n t['sukatakanahalfwidth'] = 0xFF7D;\n t['sukunarabic'] = 0x0652;\n t['summation'] = 0x2211;\n t['sun'] = 0x263C;\n t['superset'] = 0x2283;\n t['supersetnotequal'] = 0x228B;\n t['supersetorequal'] = 0x2287;\n t['svsquare'] = 0x33DC;\n t['syouwaerasquare'] = 0x337C;\n t['t'] = 0x0074;\n t['tabengali'] = 0x09A4;\n t['tackdown'] = 0x22A4;\n t['tackleft'] = 0x22A3;\n t['tadeva'] = 0x0924;\n t['tagujarati'] = 0x0AA4;\n t['tagurmukhi'] = 0x0A24;\n t['taharabic'] = 0x0637;\n t['tahfinalarabic'] = 0xFEC2;\n t['tahinitialarabic'] = 0xFEC3;\n t['tahiragana'] = 0x305F;\n t['tahmedialarabic'] = 0xFEC4;\n t['taisyouerasquare'] = 0x337D;\n t['takatakana'] = 0x30BF;\n t['takatakanahalfwidth'] = 0xFF80;\n t['tatweelarabic'] = 0x0640;\n t['tau'] = 0x03C4;\n t['tav'] = 0x05EA;\n t['tavdages'] = 0xFB4A;\n t['tavdagesh'] = 0xFB4A;\n t['tavdageshhebrew'] = 0xFB4A;\n t['tavhebrew'] = 0x05EA;\n t['tbar'] = 0x0167;\n t['tbopomofo'] = 0x310A;\n t['tcaron'] = 0x0165;\n t['tccurl'] = 0x02A8;\n t['tcedilla'] = 0x0163;\n t['tcheharabic'] = 0x0686;\n t['tchehfinalarabic'] = 0xFB7B;\n t['tchehinitialarabic'] = 0xFB7C;\n t['tchehmedialarabic'] = 0xFB7D;\n t['tcircle'] = 0x24E3;\n t['tcircumflexbelow'] = 0x1E71;\n t['tcommaaccent'] = 0x0163;\n t['tdieresis'] = 0x1E97;\n t['tdotaccent'] = 0x1E6B;\n t['tdotbelow'] = 0x1E6D;\n t['tecyrillic'] = 0x0442;\n t['tedescendercyrillic'] = 0x04AD;\n t['teharabic'] = 0x062A;\n t['tehfinalarabic'] = 0xFE96;\n t['tehhahinitialarabic'] = 0xFCA2;\n t['tehhahisolatedarabic'] = 0xFC0C;\n t['tehinitialarabic'] = 0xFE97;\n t['tehiragana'] = 0x3066;\n t['tehjeeminitialarabic'] = 0xFCA1;\n t['tehjeemisolatedarabic'] = 0xFC0B;\n t['tehmarbutaarabic'] = 0x0629;\n t['tehmarbutafinalarabic'] = 0xFE94;\n t['tehmedialarabic'] = 0xFE98;\n t['tehmeeminitialarabic'] = 0xFCA4;\n t['tehmeemisolatedarabic'] = 0xFC0E;\n t['tehnoonfinalarabic'] = 0xFC73;\n t['tekatakana'] = 0x30C6;\n t['tekatakanahalfwidth'] = 0xFF83;\n t['telephone'] = 0x2121;\n t['telephoneblack'] = 0x260E;\n t['telishagedolahebrew'] = 0x05A0;\n t['telishaqetanahebrew'] = 0x05A9;\n t['tencircle'] = 0x2469;\n t['tenideographicparen'] = 0x3229;\n t['tenparen'] = 0x247D;\n t['tenperiod'] = 0x2491;\n t['tenroman'] = 0x2179;\n t['tesh'] = 0x02A7;\n t['tet'] = 0x05D8;\n t['tetdagesh'] = 0xFB38;\n t['tetdageshhebrew'] = 0xFB38;\n t['tethebrew'] = 0x05D8;\n t['tetsecyrillic'] = 0x04B5;\n t['tevirhebrew'] = 0x059B;\n t['tevirlefthebrew'] = 0x059B;\n t['thabengali'] = 0x09A5;\n t['thadeva'] = 0x0925;\n t['thagujarati'] = 0x0AA5;\n t['thagurmukhi'] = 0x0A25;\n t['thalarabic'] = 0x0630;\n t['thalfinalarabic'] = 0xFEAC;\n t['thanthakhatlowleftthai'] = 0xF898;\n t['thanthakhatlowrightthai'] = 0xF897;\n t['thanthakhatthai'] = 0x0E4C;\n t['thanthakhatupperleftthai'] = 0xF896;\n t['theharabic'] = 0x062B;\n t['thehfinalarabic'] = 0xFE9A;\n t['thehinitialarabic'] = 0xFE9B;\n t['thehmedialarabic'] = 0xFE9C;\n t['thereexists'] = 0x2203;\n t['therefore'] = 0x2234;\n t['theta'] = 0x03B8;\n t['theta1'] = 0x03D1;\n t['thetasymbolgreek'] = 0x03D1;\n t['thieuthacirclekorean'] = 0x3279;\n t['thieuthaparenkorean'] = 0x3219;\n t['thieuthcirclekorean'] = 0x326B;\n t['thieuthkorean'] = 0x314C;\n t['thieuthparenkorean'] = 0x320B;\n t['thirteencircle'] = 0x246C;\n t['thirteenparen'] = 0x2480;\n t['thirteenperiod'] = 0x2494;\n t['thonangmonthothai'] = 0x0E11;\n t['thook'] = 0x01AD;\n t['thophuthaothai'] = 0x0E12;\n t['thorn'] = 0x00FE;\n t['thothahanthai'] = 0x0E17;\n t['thothanthai'] = 0x0E10;\n t['thothongthai'] = 0x0E18;\n t['thothungthai'] = 0x0E16;\n t['thousandcyrillic'] = 0x0482;\n t['thousandsseparatorarabic'] = 0x066C;\n t['thousandsseparatorpersian'] = 0x066C;\n t['three'] = 0x0033;\n t['threearabic'] = 0x0663;\n t['threebengali'] = 0x09E9;\n t['threecircle'] = 0x2462;\n t['threecircleinversesansserif'] = 0x278C;\n t['threedeva'] = 0x0969;\n t['threeeighths'] = 0x215C;\n t['threegujarati'] = 0x0AE9;\n t['threegurmukhi'] = 0x0A69;\n t['threehackarabic'] = 0x0663;\n t['threehangzhou'] = 0x3023;\n t['threeideographicparen'] = 0x3222;\n t['threeinferior'] = 0x2083;\n t['threemonospace'] = 0xFF13;\n t['threenumeratorbengali'] = 0x09F6;\n t['threeoldstyle'] = 0xF733;\n t['threeparen'] = 0x2476;\n t['threeperiod'] = 0x248A;\n t['threepersian'] = 0x06F3;\n t['threequarters'] = 0x00BE;\n t['threequartersemdash'] = 0xF6DE;\n t['threeroman'] = 0x2172;\n t['threesuperior'] = 0x00B3;\n t['threethai'] = 0x0E53;\n t['thzsquare'] = 0x3394;\n t['tihiragana'] = 0x3061;\n t['tikatakana'] = 0x30C1;\n t['tikatakanahalfwidth'] = 0xFF81;\n t['tikeutacirclekorean'] = 0x3270;\n t['tikeutaparenkorean'] = 0x3210;\n t['tikeutcirclekorean'] = 0x3262;\n t['tikeutkorean'] = 0x3137;\n t['tikeutparenkorean'] = 0x3202;\n t['tilde'] = 0x02DC;\n t['tildebelowcmb'] = 0x0330;\n t['tildecmb'] = 0x0303;\n t['tildecomb'] = 0x0303;\n t['tildedoublecmb'] = 0x0360;\n t['tildeoperator'] = 0x223C;\n t['tildeoverlaycmb'] = 0x0334;\n t['tildeverticalcmb'] = 0x033E;\n t['timescircle'] = 0x2297;\n t['tipehahebrew'] = 0x0596;\n t['tipehalefthebrew'] = 0x0596;\n t['tippigurmukhi'] = 0x0A70;\n t['titlocyrilliccmb'] = 0x0483;\n t['tiwnarmenian'] = 0x057F;\n t['tlinebelow'] = 0x1E6F;\n t['tmonospace'] = 0xFF54;\n t['toarmenian'] = 0x0569;\n t['tohiragana'] = 0x3068;\n t['tokatakana'] = 0x30C8;\n t['tokatakanahalfwidth'] = 0xFF84;\n t['tonebarextrahighmod'] = 0x02E5;\n t['tonebarextralowmod'] = 0x02E9;\n t['tonebarhighmod'] = 0x02E6;\n t['tonebarlowmod'] = 0x02E8;\n t['tonebarmidmod'] = 0x02E7;\n t['tonefive'] = 0x01BD;\n t['tonesix'] = 0x0185;\n t['tonetwo'] = 0x01A8;\n t['tonos'] = 0x0384;\n t['tonsquare'] = 0x3327;\n t['topatakthai'] = 0x0E0F;\n t['tortoiseshellbracketleft'] = 0x3014;\n t['tortoiseshellbracketleftsmall'] = 0xFE5D;\n t['tortoiseshellbracketleftvertical'] = 0xFE39;\n t['tortoiseshellbracketright'] = 0x3015;\n t['tortoiseshellbracketrightsmall'] = 0xFE5E;\n t['tortoiseshellbracketrightvertical'] = 0xFE3A;\n t['totaothai'] = 0x0E15;\n t['tpalatalhook'] = 0x01AB;\n t['tparen'] = 0x24AF;\n t['trademark'] = 0x2122;\n t['trademarksans'] = 0xF8EA;\n t['trademarkserif'] = 0xF6DB;\n t['tretroflexhook'] = 0x0288;\n t['triagdn'] = 0x25BC;\n t['triaglf'] = 0x25C4;\n t['triagrt'] = 0x25BA;\n t['triagup'] = 0x25B2;\n t['ts'] = 0x02A6;\n t['tsadi'] = 0x05E6;\n t['tsadidagesh'] = 0xFB46;\n t['tsadidageshhebrew'] = 0xFB46;\n t['tsadihebrew'] = 0x05E6;\n t['tsecyrillic'] = 0x0446;\n t['tsere'] = 0x05B5;\n t['tsere12'] = 0x05B5;\n t['tsere1e'] = 0x05B5;\n t['tsere2b'] = 0x05B5;\n t['tserehebrew'] = 0x05B5;\n t['tserenarrowhebrew'] = 0x05B5;\n t['tserequarterhebrew'] = 0x05B5;\n t['tserewidehebrew'] = 0x05B5;\n t['tshecyrillic'] = 0x045B;\n t['tsuperior'] = 0xF6F3;\n t['ttabengali'] = 0x099F;\n t['ttadeva'] = 0x091F;\n t['ttagujarati'] = 0x0A9F;\n t['ttagurmukhi'] = 0x0A1F;\n t['tteharabic'] = 0x0679;\n t['ttehfinalarabic'] = 0xFB67;\n t['ttehinitialarabic'] = 0xFB68;\n t['ttehmedialarabic'] = 0xFB69;\n t['tthabengali'] = 0x09A0;\n t['tthadeva'] = 0x0920;\n t['tthagujarati'] = 0x0AA0;\n t['tthagurmukhi'] = 0x0A20;\n t['tturned'] = 0x0287;\n t['tuhiragana'] = 0x3064;\n t['tukatakana'] = 0x30C4;\n t['tukatakanahalfwidth'] = 0xFF82;\n t['tusmallhiragana'] = 0x3063;\n t['tusmallkatakana'] = 0x30C3;\n t['tusmallkatakanahalfwidth'] = 0xFF6F;\n t['twelvecircle'] = 0x246B;\n t['twelveparen'] = 0x247F;\n t['twelveperiod'] = 0x2493;\n t['twelveroman'] = 0x217B;\n t['twentycircle'] = 0x2473;\n t['twentyhangzhou'] = 0x5344;\n t['twentyparen'] = 0x2487;\n t['twentyperiod'] = 0x249B;\n t['two'] = 0x0032;\n t['twoarabic'] = 0x0662;\n t['twobengali'] = 0x09E8;\n t['twocircle'] = 0x2461;\n t['twocircleinversesansserif'] = 0x278B;\n t['twodeva'] = 0x0968;\n t['twodotenleader'] = 0x2025;\n t['twodotleader'] = 0x2025;\n t['twodotleadervertical'] = 0xFE30;\n t['twogujarati'] = 0x0AE8;\n t['twogurmukhi'] = 0x0A68;\n t['twohackarabic'] = 0x0662;\n t['twohangzhou'] = 0x3022;\n t['twoideographicparen'] = 0x3221;\n t['twoinferior'] = 0x2082;\n t['twomonospace'] = 0xFF12;\n t['twonumeratorbengali'] = 0x09F5;\n t['twooldstyle'] = 0xF732;\n t['twoparen'] = 0x2475;\n t['twoperiod'] = 0x2489;\n t['twopersian'] = 0x06F2;\n t['tworoman'] = 0x2171;\n t['twostroke'] = 0x01BB;\n t['twosuperior'] = 0x00B2;\n t['twothai'] = 0x0E52;\n t['twothirds'] = 0x2154;\n t['u'] = 0x0075;\n t['uacute'] = 0x00FA;\n t['ubar'] = 0x0289;\n t['ubengali'] = 0x0989;\n t['ubopomofo'] = 0x3128;\n t['ubreve'] = 0x016D;\n t['ucaron'] = 0x01D4;\n t['ucircle'] = 0x24E4;\n t['ucircumflex'] = 0x00FB;\n t['ucircumflexbelow'] = 0x1E77;\n t['ucyrillic'] = 0x0443;\n t['udattadeva'] = 0x0951;\n t['udblacute'] = 0x0171;\n t['udblgrave'] = 0x0215;\n t['udeva'] = 0x0909;\n t['udieresis'] = 0x00FC;\n t['udieresisacute'] = 0x01D8;\n t['udieresisbelow'] = 0x1E73;\n t['udieresiscaron'] = 0x01DA;\n t['udieresiscyrillic'] = 0x04F1;\n t['udieresisgrave'] = 0x01DC;\n t['udieresismacron'] = 0x01D6;\n t['udotbelow'] = 0x1EE5;\n t['ugrave'] = 0x00F9;\n t['ugujarati'] = 0x0A89;\n t['ugurmukhi'] = 0x0A09;\n t['uhiragana'] = 0x3046;\n t['uhookabove'] = 0x1EE7;\n t['uhorn'] = 0x01B0;\n t['uhornacute'] = 0x1EE9;\n t['uhorndotbelow'] = 0x1EF1;\n t['uhorngrave'] = 0x1EEB;\n t['uhornhookabove'] = 0x1EED;\n t['uhorntilde'] = 0x1EEF;\n t['uhungarumlaut'] = 0x0171;\n t['uhungarumlautcyrillic'] = 0x04F3;\n t['uinvertedbreve'] = 0x0217;\n t['ukatakana'] = 0x30A6;\n t['ukatakanahalfwidth'] = 0xFF73;\n t['ukcyrillic'] = 0x0479;\n t['ukorean'] = 0x315C;\n t['umacron'] = 0x016B;\n t['umacroncyrillic'] = 0x04EF;\n t['umacrondieresis'] = 0x1E7B;\n t['umatragurmukhi'] = 0x0A41;\n t['umonospace'] = 0xFF55;\n t['underscore'] = 0x005F;\n t['underscoredbl'] = 0x2017;\n t['underscoremonospace'] = 0xFF3F;\n t['underscorevertical'] = 0xFE33;\n t['underscorewavy'] = 0xFE4F;\n t['union'] = 0x222A;\n t['universal'] = 0x2200;\n t['uogonek'] = 0x0173;\n t['uparen'] = 0x24B0;\n t['upblock'] = 0x2580;\n t['upperdothebrew'] = 0x05C4;\n t['upsilon'] = 0x03C5;\n t['upsilondieresis'] = 0x03CB;\n t['upsilondieresistonos'] = 0x03B0;\n t['upsilonlatin'] = 0x028A;\n t['upsilontonos'] = 0x03CD;\n t['uptackbelowcmb'] = 0x031D;\n t['uptackmod'] = 0x02D4;\n t['uragurmukhi'] = 0x0A73;\n t['uring'] = 0x016F;\n t['ushortcyrillic'] = 0x045E;\n t['usmallhiragana'] = 0x3045;\n t['usmallkatakana'] = 0x30A5;\n t['usmallkatakanahalfwidth'] = 0xFF69;\n t['ustraightcyrillic'] = 0x04AF;\n t['ustraightstrokecyrillic'] = 0x04B1;\n t['utilde'] = 0x0169;\n t['utildeacute'] = 0x1E79;\n t['utildebelow'] = 0x1E75;\n t['uubengali'] = 0x098A;\n t['uudeva'] = 0x090A;\n t['uugujarati'] = 0x0A8A;\n t['uugurmukhi'] = 0x0A0A;\n t['uumatragurmukhi'] = 0x0A42;\n t['uuvowelsignbengali'] = 0x09C2;\n t['uuvowelsigndeva'] = 0x0942;\n t['uuvowelsigngujarati'] = 0x0AC2;\n t['uvowelsignbengali'] = 0x09C1;\n t['uvowelsigndeva'] = 0x0941;\n t['uvowelsigngujarati'] = 0x0AC1;\n t['v'] = 0x0076;\n t['vadeva'] = 0x0935;\n t['vagujarati'] = 0x0AB5;\n t['vagurmukhi'] = 0x0A35;\n t['vakatakana'] = 0x30F7;\n t['vav'] = 0x05D5;\n t['vavdagesh'] = 0xFB35;\n t['vavdagesh65'] = 0xFB35;\n t['vavdageshhebrew'] = 0xFB35;\n t['vavhebrew'] = 0x05D5;\n t['vavholam'] = 0xFB4B;\n t['vavholamhebrew'] = 0xFB4B;\n t['vavvavhebrew'] = 0x05F0;\n t['vavyodhebrew'] = 0x05F1;\n t['vcircle'] = 0x24E5;\n t['vdotbelow'] = 0x1E7F;\n t['vecyrillic'] = 0x0432;\n t['veharabic'] = 0x06A4;\n t['vehfinalarabic'] = 0xFB6B;\n t['vehinitialarabic'] = 0xFB6C;\n t['vehmedialarabic'] = 0xFB6D;\n t['vekatakana'] = 0x30F9;\n t['venus'] = 0x2640;\n t['verticalbar'] = 0x007C;\n t['verticallineabovecmb'] = 0x030D;\n t['verticallinebelowcmb'] = 0x0329;\n t['verticallinelowmod'] = 0x02CC;\n t['verticallinemod'] = 0x02C8;\n t['vewarmenian'] = 0x057E;\n t['vhook'] = 0x028B;\n t['vikatakana'] = 0x30F8;\n t['viramabengali'] = 0x09CD;\n t['viramadeva'] = 0x094D;\n t['viramagujarati'] = 0x0ACD;\n t['visargabengali'] = 0x0983;\n t['visargadeva'] = 0x0903;\n t['visargagujarati'] = 0x0A83;\n t['vmonospace'] = 0xFF56;\n t['voarmenian'] = 0x0578;\n t['voicediterationhiragana'] = 0x309E;\n t['voicediterationkatakana'] = 0x30FE;\n t['voicedmarkkana'] = 0x309B;\n t['voicedmarkkanahalfwidth'] = 0xFF9E;\n t['vokatakana'] = 0x30FA;\n t['vparen'] = 0x24B1;\n t['vtilde'] = 0x1E7D;\n t['vturned'] = 0x028C;\n t['vuhiragana'] = 0x3094;\n t['vukatakana'] = 0x30F4;\n t['w'] = 0x0077;\n t['wacute'] = 0x1E83;\n t['waekorean'] = 0x3159;\n t['wahiragana'] = 0x308F;\n t['wakatakana'] = 0x30EF;\n t['wakatakanahalfwidth'] = 0xFF9C;\n t['wakorean'] = 0x3158;\n t['wasmallhiragana'] = 0x308E;\n t['wasmallkatakana'] = 0x30EE;\n t['wattosquare'] = 0x3357;\n t['wavedash'] = 0x301C;\n t['wavyunderscorevertical'] = 0xFE34;\n t['wawarabic'] = 0x0648;\n t['wawfinalarabic'] = 0xFEEE;\n t['wawhamzaabovearabic'] = 0x0624;\n t['wawhamzaabovefinalarabic'] = 0xFE86;\n t['wbsquare'] = 0x33DD;\n t['wcircle'] = 0x24E6;\n t['wcircumflex'] = 0x0175;\n t['wdieresis'] = 0x1E85;\n t['wdotaccent'] = 0x1E87;\n t['wdotbelow'] = 0x1E89;\n t['wehiragana'] = 0x3091;\n t['weierstrass'] = 0x2118;\n t['wekatakana'] = 0x30F1;\n t['wekorean'] = 0x315E;\n t['weokorean'] = 0x315D;\n t['wgrave'] = 0x1E81;\n t['whitebullet'] = 0x25E6;\n t['whitecircle'] = 0x25CB;\n t['whitecircleinverse'] = 0x25D9;\n t['whitecornerbracketleft'] = 0x300E;\n t['whitecornerbracketleftvertical'] = 0xFE43;\n t['whitecornerbracketright'] = 0x300F;\n t['whitecornerbracketrightvertical'] = 0xFE44;\n t['whitediamond'] = 0x25C7;\n t['whitediamondcontainingblacksmalldiamond'] = 0x25C8;\n t['whitedownpointingsmalltriangle'] = 0x25BF;\n t['whitedownpointingtriangle'] = 0x25BD;\n t['whiteleftpointingsmalltriangle'] = 0x25C3;\n t['whiteleftpointingtriangle'] = 0x25C1;\n t['whitelenticularbracketleft'] = 0x3016;\n t['whitelenticularbracketright'] = 0x3017;\n t['whiterightpointingsmalltriangle'] = 0x25B9;\n t['whiterightpointingtriangle'] = 0x25B7;\n t['whitesmallsquare'] = 0x25AB;\n t['whitesmilingface'] = 0x263A;\n t['whitesquare'] = 0x25A1;\n t['whitestar'] = 0x2606;\n t['whitetelephone'] = 0x260F;\n t['whitetortoiseshellbracketleft'] = 0x3018;\n t['whitetortoiseshellbracketright'] = 0x3019;\n t['whiteuppointingsmalltriangle'] = 0x25B5;\n t['whiteuppointingtriangle'] = 0x25B3;\n t['wihiragana'] = 0x3090;\n t['wikatakana'] = 0x30F0;\n t['wikorean'] = 0x315F;\n t['wmonospace'] = 0xFF57;\n t['wohiragana'] = 0x3092;\n t['wokatakana'] = 0x30F2;\n t['wokatakanahalfwidth'] = 0xFF66;\n t['won'] = 0x20A9;\n t['wonmonospace'] = 0xFFE6;\n t['wowaenthai'] = 0x0E27;\n t['wparen'] = 0x24B2;\n t['wring'] = 0x1E98;\n t['wsuperior'] = 0x02B7;\n t['wturned'] = 0x028D;\n t['wynn'] = 0x01BF;\n t['x'] = 0x0078;\n t['xabovecmb'] = 0x033D;\n t['xbopomofo'] = 0x3112;\n t['xcircle'] = 0x24E7;\n t['xdieresis'] = 0x1E8D;\n t['xdotaccent'] = 0x1E8B;\n t['xeharmenian'] = 0x056D;\n t['xi'] = 0x03BE;\n t['xmonospace'] = 0xFF58;\n t['xparen'] = 0x24B3;\n t['xsuperior'] = 0x02E3;\n t['y'] = 0x0079;\n t['yaadosquare'] = 0x334E;\n t['yabengali'] = 0x09AF;\n t['yacute'] = 0x00FD;\n t['yadeva'] = 0x092F;\n t['yaekorean'] = 0x3152;\n t['yagujarati'] = 0x0AAF;\n t['yagurmukhi'] = 0x0A2F;\n t['yahiragana'] = 0x3084;\n t['yakatakana'] = 0x30E4;\n t['yakatakanahalfwidth'] = 0xFF94;\n t['yakorean'] = 0x3151;\n t['yamakkanthai'] = 0x0E4E;\n t['yasmallhiragana'] = 0x3083;\n t['yasmallkatakana'] = 0x30E3;\n t['yasmallkatakanahalfwidth'] = 0xFF6C;\n t['yatcyrillic'] = 0x0463;\n t['ycircle'] = 0x24E8;\n t['ycircumflex'] = 0x0177;\n t['ydieresis'] = 0x00FF;\n t['ydotaccent'] = 0x1E8F;\n t['ydotbelow'] = 0x1EF5;\n t['yeharabic'] = 0x064A;\n t['yehbarreearabic'] = 0x06D2;\n t['yehbarreefinalarabic'] = 0xFBAF;\n t['yehfinalarabic'] = 0xFEF2;\n t['yehhamzaabovearabic'] = 0x0626;\n t['yehhamzaabovefinalarabic'] = 0xFE8A;\n t['yehhamzaaboveinitialarabic'] = 0xFE8B;\n t['yehhamzaabovemedialarabic'] = 0xFE8C;\n t['yehinitialarabic'] = 0xFEF3;\n t['yehmedialarabic'] = 0xFEF4;\n t['yehmeeminitialarabic'] = 0xFCDD;\n t['yehmeemisolatedarabic'] = 0xFC58;\n t['yehnoonfinalarabic'] = 0xFC94;\n t['yehthreedotsbelowarabic'] = 0x06D1;\n t['yekorean'] = 0x3156;\n t['yen'] = 0x00A5;\n t['yenmonospace'] = 0xFFE5;\n t['yeokorean'] = 0x3155;\n t['yeorinhieuhkorean'] = 0x3186;\n t['yerahbenyomohebrew'] = 0x05AA;\n t['yerahbenyomolefthebrew'] = 0x05AA;\n t['yericyrillic'] = 0x044B;\n t['yerudieresiscyrillic'] = 0x04F9;\n t['yesieungkorean'] = 0x3181;\n t['yesieungpansioskorean'] = 0x3183;\n t['yesieungsioskorean'] = 0x3182;\n t['yetivhebrew'] = 0x059A;\n t['ygrave'] = 0x1EF3;\n t['yhook'] = 0x01B4;\n t['yhookabove'] = 0x1EF7;\n t['yiarmenian'] = 0x0575;\n t['yicyrillic'] = 0x0457;\n t['yikorean'] = 0x3162;\n t['yinyang'] = 0x262F;\n t['yiwnarmenian'] = 0x0582;\n t['ymonospace'] = 0xFF59;\n t['yod'] = 0x05D9;\n t['yoddagesh'] = 0xFB39;\n t['yoddageshhebrew'] = 0xFB39;\n t['yodhebrew'] = 0x05D9;\n t['yodyodhebrew'] = 0x05F2;\n t['yodyodpatahhebrew'] = 0xFB1F;\n t['yohiragana'] = 0x3088;\n t['yoikorean'] = 0x3189;\n t['yokatakana'] = 0x30E8;\n t['yokatakanahalfwidth'] = 0xFF96;\n t['yokorean'] = 0x315B;\n t['yosmallhiragana'] = 0x3087;\n t['yosmallkatakana'] = 0x30E7;\n t['yosmallkatakanahalfwidth'] = 0xFF6E;\n t['yotgreek'] = 0x03F3;\n t['yoyaekorean'] = 0x3188;\n t['yoyakorean'] = 0x3187;\n t['yoyakthai'] = 0x0E22;\n t['yoyingthai'] = 0x0E0D;\n t['yparen'] = 0x24B4;\n t['ypogegrammeni'] = 0x037A;\n t['ypogegrammenigreekcmb'] = 0x0345;\n t['yr'] = 0x01A6;\n t['yring'] = 0x1E99;\n t['ysuperior'] = 0x02B8;\n t['ytilde'] = 0x1EF9;\n t['yturned'] = 0x028E;\n t['yuhiragana'] = 0x3086;\n t['yuikorean'] = 0x318C;\n t['yukatakana'] = 0x30E6;\n t['yukatakanahalfwidth'] = 0xFF95;\n t['yukorean'] = 0x3160;\n t['yusbigcyrillic'] = 0x046B;\n t['yusbigiotifiedcyrillic'] = 0x046D;\n t['yuslittlecyrillic'] = 0x0467;\n t['yuslittleiotifiedcyrillic'] = 0x0469;\n t['yusmallhiragana'] = 0x3085;\n t['yusmallkatakana'] = 0x30E5;\n t['yusmallkatakanahalfwidth'] = 0xFF6D;\n t['yuyekorean'] = 0x318B;\n t['yuyeokorean'] = 0x318A;\n t['yyabengali'] = 0x09DF;\n t['yyadeva'] = 0x095F;\n t['z'] = 0x007A;\n t['zaarmenian'] = 0x0566;\n t['zacute'] = 0x017A;\n t['zadeva'] = 0x095B;\n t['zagurmukhi'] = 0x0A5B;\n t['zaharabic'] = 0x0638;\n t['zahfinalarabic'] = 0xFEC6;\n t['zahinitialarabic'] = 0xFEC7;\n t['zahiragana'] = 0x3056;\n t['zahmedialarabic'] = 0xFEC8;\n t['zainarabic'] = 0x0632;\n t['zainfinalarabic'] = 0xFEB0;\n t['zakatakana'] = 0x30B6;\n t['zaqefgadolhebrew'] = 0x0595;\n t['zaqefqatanhebrew'] = 0x0594;\n t['zarqahebrew'] = 0x0598;\n t['zayin'] = 0x05D6;\n t['zayindagesh'] = 0xFB36;\n t['zayindageshhebrew'] = 0xFB36;\n t['zayinhebrew'] = 0x05D6;\n t['zbopomofo'] = 0x3117;\n t['zcaron'] = 0x017E;\n t['zcircle'] = 0x24E9;\n t['zcircumflex'] = 0x1E91;\n t['zcurl'] = 0x0291;\n t['zdot'] = 0x017C;\n t['zdotaccent'] = 0x017C;\n t['zdotbelow'] = 0x1E93;\n t['zecyrillic'] = 0x0437;\n t['zedescendercyrillic'] = 0x0499;\n t['zedieresiscyrillic'] = 0x04DF;\n t['zehiragana'] = 0x305C;\n t['zekatakana'] = 0x30BC;\n t['zero'] = 0x0030;\n t['zeroarabic'] = 0x0660;\n t['zerobengali'] = 0x09E6;\n t['zerodeva'] = 0x0966;\n t['zerogujarati'] = 0x0AE6;\n t['zerogurmukhi'] = 0x0A66;\n t['zerohackarabic'] = 0x0660;\n t['zeroinferior'] = 0x2080;\n t['zeromonospace'] = 0xFF10;\n t['zerooldstyle'] = 0xF730;\n t['zeropersian'] = 0x06F0;\n t['zerosuperior'] = 0x2070;\n t['zerothai'] = 0x0E50;\n t['zerowidthjoiner'] = 0xFEFF;\n t['zerowidthnonjoiner'] = 0x200C;\n t['zerowidthspace'] = 0x200B;\n t['zeta'] = 0x03B6;\n t['zhbopomofo'] = 0x3113;\n t['zhearmenian'] = 0x056A;\n t['zhebrevecyrillic'] = 0x04C2;\n t['zhecyrillic'] = 0x0436;\n t['zhedescendercyrillic'] = 0x0497;\n t['zhedieresiscyrillic'] = 0x04DD;\n t['zihiragana'] = 0x3058;\n t['zikatakana'] = 0x30B8;\n t['zinorhebrew'] = 0x05AE;\n t['zlinebelow'] = 0x1E95;\n t['zmonospace'] = 0xFF5A;\n t['zohiragana'] = 0x305E;\n t['zokatakana'] = 0x30BE;\n t['zparen'] = 0x24B5;\n t['zretroflexhook'] = 0x0290;\n t['zstroke'] = 0x01B6;\n t['zuhiragana'] = 0x305A;\n t['zukatakana'] = 0x30BA;\n t['.notdef'] = 0x0000;\n\n // TeX-specific glyph names.\n t['angbracketleftbig'] = 0x2329;\n t['angbracketleftBig'] = 0x2329;\n t['angbracketleftbigg'] = 0x2329;\n t['angbracketleftBigg'] = 0x2329;\n t['angbracketrightBig'] = 0x232A;\n t['angbracketrightbig'] = 0x232A;\n t['angbracketrightBigg'] = 0x232A;\n t['angbracketrightbigg'] = 0x232A;\n t['arrowhookleft'] = 0x21AA;\n t['arrowhookright'] = 0x21A9;\n t['arrowlefttophalf'] = 0x21BC;\n t['arrowleftbothalf'] = 0x21BD;\n t['arrownortheast'] = 0x2197;\n t['arrownorthwest'] = 0x2196;\n t['arrowrighttophalf'] = 0x21C0;\n t['arrowrightbothalf'] = 0x21C1;\n t['arrowsoutheast'] = 0x2198;\n t['arrowsouthwest'] = 0x2199;\n t['backslashbig'] = 0x2216;\n t['backslashBig'] = 0x2216;\n t['backslashBigg'] = 0x2216;\n t['backslashbigg'] = 0x2216;\n t['bardbl'] = 0x2016;\n t['bracehtipdownleft'] = 0xFE37;\n t['bracehtipdownright'] = 0xFE37;\n t['bracehtipupleft'] = 0xFE38;\n t['bracehtipupright'] = 0xFE38;\n t['braceleftBig'] = 0x007B;\n t['braceleftbig'] = 0x007B;\n t['braceleftbigg'] = 0x007B;\n t['braceleftBigg'] = 0x007B;\n t['bracerightBig'] = 0x007D;\n t['bracerightbig'] = 0x007D;\n t['bracerightbigg'] = 0x007D;\n t['bracerightBigg'] = 0x007D;\n t['bracketleftbig'] = 0x005B;\n t['bracketleftBig'] = 0x005B;\n t['bracketleftbigg'] = 0x005B;\n t['bracketleftBigg'] = 0x005B;\n t['bracketrightBig'] = 0x005D;\n t['bracketrightbig'] = 0x005D;\n t['bracketrightbigg'] = 0x005D;\n t['bracketrightBigg'] = 0x005D;\n t['ceilingleftbig'] = 0x2308;\n t['ceilingleftBig'] = 0x2308;\n t['ceilingleftBigg'] = 0x2308;\n t['ceilingleftbigg'] = 0x2308;\n t['ceilingrightbig'] = 0x2309;\n t['ceilingrightBig'] = 0x2309;\n t['ceilingrightbigg'] = 0x2309;\n t['ceilingrightBigg'] = 0x2309;\n t['circledotdisplay'] = 0x2299;\n t['circledottext'] = 0x2299;\n t['circlemultiplydisplay'] = 0x2297;\n t['circlemultiplytext'] = 0x2297;\n t['circleplusdisplay'] = 0x2295;\n t['circleplustext'] = 0x2295;\n t['contintegraldisplay'] = 0x222E;\n t['contintegraltext'] = 0x222E;\n t['coproductdisplay'] = 0x2210;\n t['coproducttext'] = 0x2210;\n t['floorleftBig'] = 0x230A;\n t['floorleftbig'] = 0x230A;\n t['floorleftbigg'] = 0x230A;\n t['floorleftBigg'] = 0x230A;\n t['floorrightbig'] = 0x230B;\n t['floorrightBig'] = 0x230B;\n t['floorrightBigg'] = 0x230B;\n t['floorrightbigg'] = 0x230B;\n t['hatwide'] = 0x0302;\n t['hatwider'] = 0x0302;\n t['hatwidest'] = 0x0302;\n t['intercal'] = 0x1D40;\n t['integraldisplay'] = 0x222B;\n t['integraltext'] = 0x222B;\n t['intersectiondisplay'] = 0x22C2;\n t['intersectiontext'] = 0x22C2;\n t['logicalanddisplay'] = 0x2227;\n t['logicalandtext'] = 0x2227;\n t['logicalordisplay'] = 0x2228;\n t['logicalortext'] = 0x2228;\n t['parenleftBig'] = 0x0028;\n t['parenleftbig'] = 0x0028;\n t['parenleftBigg'] = 0x0028;\n t['parenleftbigg'] = 0x0028;\n t['parenrightBig'] = 0x0029;\n t['parenrightbig'] = 0x0029;\n t['parenrightBigg'] = 0x0029;\n t['parenrightbigg'] = 0x0029;\n t['prime'] = 0x2032;\n t['productdisplay'] = 0x220F;\n t['producttext'] = 0x220F;\n t['radicalbig'] = 0x221A;\n t['radicalBig'] = 0x221A;\n t['radicalBigg'] = 0x221A;\n t['radicalbigg'] = 0x221A;\n t['radicalbt'] = 0x221A;\n t['radicaltp'] = 0x221A;\n t['radicalvertex'] = 0x221A;\n t['slashbig'] = 0x002F;\n t['slashBig'] = 0x002F;\n t['slashBigg'] = 0x002F;\n t['slashbigg'] = 0x002F;\n t['summationdisplay'] = 0x2211;\n t['summationtext'] = 0x2211;\n t['tildewide'] = 0x02DC;\n t['tildewider'] = 0x02DC;\n t['tildewidest'] = 0x02DC;\n t['uniondisplay'] = 0x22C3;\n t['unionmultidisplay'] = 0x228E;\n t['unionmultitext'] = 0x228E;\n t['unionsqdisplay'] = 0x2294;\n t['unionsqtext'] = 0x2294;\n t['uniontext'] = 0x22C3;\n t['vextenddouble'] = 0x2225;\n t['vextendsingle'] = 0x2223;\n});\n\nvar getDingbatsGlyphsUnicode = getLookupTableFactory(function (t) {\n t['space'] = 0x0020;\n t['a1'] = 0x2701;\n t['a2'] = 0x2702;\n t['a202'] = 0x2703;\n t['a3'] = 0x2704;\n t['a4'] = 0x260E;\n t['a5'] = 0x2706;\n t['a119'] = 0x2707;\n t['a118'] = 0x2708;\n t['a117'] = 0x2709;\n t['a11'] = 0x261B;\n t['a12'] = 0x261E;\n t['a13'] = 0x270C;\n t['a14'] = 0x270D;\n t['a15'] = 0x270E;\n t['a16'] = 0x270F;\n t['a105'] = 0x2710;\n t['a17'] = 0x2711;\n t['a18'] = 0x2712;\n t['a19'] = 0x2713;\n t['a20'] = 0x2714;\n t['a21'] = 0x2715;\n t['a22'] = 0x2716;\n t['a23'] = 0x2717;\n t['a24'] = 0x2718;\n t['a25'] = 0x2719;\n t['a26'] = 0x271A;\n t['a27'] = 0x271B;\n t['a28'] = 0x271C;\n t['a6'] = 0x271D;\n t['a7'] = 0x271E;\n t['a8'] = 0x271F;\n t['a9'] = 0x2720;\n t['a10'] = 0x2721;\n t['a29'] = 0x2722;\n t['a30'] = 0x2723;\n t['a31'] = 0x2724;\n t['a32'] = 0x2725;\n t['a33'] = 0x2726;\n t['a34'] = 0x2727;\n t['a35'] = 0x2605;\n t['a36'] = 0x2729;\n t['a37'] = 0x272A;\n t['a38'] = 0x272B;\n t['a39'] = 0x272C;\n t['a40'] = 0x272D;\n t['a41'] = 0x272E;\n t['a42'] = 0x272F;\n t['a43'] = 0x2730;\n t['a44'] = 0x2731;\n t['a45'] = 0x2732;\n t['a46'] = 0x2733;\n t['a47'] = 0x2734;\n t['a48'] = 0x2735;\n t['a49'] = 0x2736;\n t['a50'] = 0x2737;\n t['a51'] = 0x2738;\n t['a52'] = 0x2739;\n t['a53'] = 0x273A;\n t['a54'] = 0x273B;\n t['a55'] = 0x273C;\n t['a56'] = 0x273D;\n t['a57'] = 0x273E;\n t['a58'] = 0x273F;\n t['a59'] = 0x2740;\n t['a60'] = 0x2741;\n t['a61'] = 0x2742;\n t['a62'] = 0x2743;\n t['a63'] = 0x2744;\n t['a64'] = 0x2745;\n t['a65'] = 0x2746;\n t['a66'] = 0x2747;\n t['a67'] = 0x2748;\n t['a68'] = 0x2749;\n t['a69'] = 0x274A;\n t['a70'] = 0x274B;\n t['a71'] = 0x25CF;\n t['a72'] = 0x274D;\n t['a73'] = 0x25A0;\n t['a74'] = 0x274F;\n t['a203'] = 0x2750;\n t['a75'] = 0x2751;\n t['a204'] = 0x2752;\n t['a76'] = 0x25B2;\n t['a77'] = 0x25BC;\n t['a78'] = 0x25C6;\n t['a79'] = 0x2756;\n t['a81'] = 0x25D7;\n t['a82'] = 0x2758;\n t['a83'] = 0x2759;\n t['a84'] = 0x275A;\n t['a97'] = 0x275B;\n t['a98'] = 0x275C;\n t['a99'] = 0x275D;\n t['a100'] = 0x275E;\n t['a101'] = 0x2761;\n t['a102'] = 0x2762;\n t['a103'] = 0x2763;\n t['a104'] = 0x2764;\n t['a106'] = 0x2765;\n t['a107'] = 0x2766;\n t['a108'] = 0x2767;\n t['a112'] = 0x2663;\n t['a111'] = 0x2666;\n t['a110'] = 0x2665;\n t['a109'] = 0x2660;\n t['a120'] = 0x2460;\n t['a121'] = 0x2461;\n t['a122'] = 0x2462;\n t['a123'] = 0x2463;\n t['a124'] = 0x2464;\n t['a125'] = 0x2465;\n t['a126'] = 0x2466;\n t['a127'] = 0x2467;\n t['a128'] = 0x2468;\n t['a129'] = 0x2469;\n t['a130'] = 0x2776;\n t['a131'] = 0x2777;\n t['a132'] = 0x2778;\n t['a133'] = 0x2779;\n t['a134'] = 0x277A;\n t['a135'] = 0x277B;\n t['a136'] = 0x277C;\n t['a137'] = 0x277D;\n t['a138'] = 0x277E;\n t['a139'] = 0x277F;\n t['a140'] = 0x2780;\n t['a141'] = 0x2781;\n t['a142'] = 0x2782;\n t['a143'] = 0x2783;\n t['a144'] = 0x2784;\n t['a145'] = 0x2785;\n t['a146'] = 0x2786;\n t['a147'] = 0x2787;\n t['a148'] = 0x2788;\n t['a149'] = 0x2789;\n t['a150'] = 0x278A;\n t['a151'] = 0x278B;\n t['a152'] = 0x278C;\n t['a153'] = 0x278D;\n t['a154'] = 0x278E;\n t['a155'] = 0x278F;\n t['a156'] = 0x2790;\n t['a157'] = 0x2791;\n t['a158'] = 0x2792;\n t['a159'] = 0x2793;\n t['a160'] = 0x2794;\n t['a161'] = 0x2192;\n t['a163'] = 0x2194;\n t['a164'] = 0x2195;\n t['a196'] = 0x2798;\n t['a165'] = 0x2799;\n t['a192'] = 0x279A;\n t['a166'] = 0x279B;\n t['a167'] = 0x279C;\n t['a168'] = 0x279D;\n t['a169'] = 0x279E;\n t['a170'] = 0x279F;\n t['a171'] = 0x27A0;\n t['a172'] = 0x27A1;\n t['a173'] = 0x27A2;\n t['a162'] = 0x27A3;\n t['a174'] = 0x27A4;\n t['a175'] = 0x27A5;\n t['a176'] = 0x27A6;\n t['a177'] = 0x27A7;\n t['a178'] = 0x27A8;\n t['a179'] = 0x27A9;\n t['a193'] = 0x27AA;\n t['a180'] = 0x27AB;\n t['a199'] = 0x27AC;\n t['a181'] = 0x27AD;\n t['a200'] = 0x27AE;\n t['a182'] = 0x27AF;\n t['a201'] = 0x27B1;\n t['a183'] = 0x27B2;\n t['a184'] = 0x27B3;\n t['a197'] = 0x27B4;\n t['a185'] = 0x27B5;\n t['a194'] = 0x27B6;\n t['a198'] = 0x27B7;\n t['a186'] = 0x27B8;\n t['a195'] = 0x27B9;\n t['a187'] = 0x27BA;\n t['a188'] = 0x27BB;\n t['a189'] = 0x27BC;\n t['a190'] = 0x27BD;\n t['a191'] = 0x27BE;\n t['a89'] = 0x2768; // 0xF8D7\n t['a90'] = 0x2769; // 0xF8D8\n t['a93'] = 0x276A; // 0xF8D9\n t['a94'] = 0x276B; // 0xF8DA\n t['a91'] = 0x276C; // 0xF8DB\n t['a92'] = 0x276D; // 0xF8DC\n t['a205'] = 0x276E; // 0xF8DD\n t['a85'] = 0x276F; // 0xF8DE\n t['a206'] = 0x2770; // 0xF8DF\n t['a86'] = 0x2771; // 0xF8E0\n t['a87'] = 0x2772; // 0xF8E1\n t['a88'] = 0x2773; // 0xF8E2\n t['a95'] = 0x2774; // 0xF8E3\n t['a96'] = 0x2775; // 0xF8E4\n t['.notdef'] = 0x0000;\n});\n\nexports.getGlyphsUnicode = getGlyphsUnicode;\nexports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode;\n\n\n\n// WEBPACK FOOTER //\n// src/core/glyphlist.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, isArray, isBool } from '../shared/util';\nimport { isDict, isStream } from './primitives';\nimport { PostScriptLexer, PostScriptParser } from './ps_parser';\n\nvar PDFFunction = (function PDFFunctionClosure() {\n var CONSTRUCT_SAMPLED = 0;\n var CONSTRUCT_INTERPOLATED = 2;\n var CONSTRUCT_STICHED = 3;\n var CONSTRUCT_POSTSCRIPT = 4;\n\n return {\n getSampleArray: function PDFFunction_getSampleArray(size, outputSize, bps,\n str) {\n var i, ii;\n var length = 1;\n for (i = 0, ii = size.length; i < ii; i++) {\n length *= size[i];\n }\n length *= outputSize;\n\n var array = new Array(length);\n var codeSize = 0;\n var codeBuf = 0;\n // 32 is a valid bps so shifting won't work\n var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1);\n\n var strBytes = str.getBytes((length * bps + 7) / 8);\n var strIdx = 0;\n for (i = 0; i < length; i++) {\n while (codeSize < bps) {\n codeBuf <<= 8;\n codeBuf |= strBytes[strIdx++];\n codeSize += 8;\n }\n codeSize -= bps;\n array[i] = (codeBuf >> codeSize) * sampleMul;\n codeBuf &= (1 << codeSize) - 1;\n }\n return array;\n },\n\n getIR: function PDFFunction_getIR(xref, fn) {\n var dict = fn.dict;\n if (!dict) {\n dict = fn;\n }\n\n var types = [this.constructSampled,\n null,\n this.constructInterpolated,\n this.constructStiched,\n this.constructPostScript];\n\n var typeNum = dict.get('FunctionType');\n var typeFn = types[typeNum];\n if (!typeFn) {\n throw new FormatError('Unknown type of function');\n }\n\n return typeFn.call(this, fn, dict, xref);\n },\n\n fromIR: function PDFFunction_fromIR(IR) {\n var type = IR[0];\n switch (type) {\n case CONSTRUCT_SAMPLED:\n return this.constructSampledFromIR(IR);\n case CONSTRUCT_INTERPOLATED:\n return this.constructInterpolatedFromIR(IR);\n case CONSTRUCT_STICHED:\n return this.constructStichedFromIR(IR);\n // case CONSTRUCT_POSTSCRIPT:\n default:\n return this.constructPostScriptFromIR(IR);\n }\n },\n\n parse: function PDFFunction_parse(xref, fn) {\n var IR = this.getIR(xref, fn);\n return this.fromIR(IR);\n },\n\n parseArray: function PDFFunction_parseArray(xref, fnObj) {\n if (!isArray(fnObj)) {\n // not an array -- parsing as regular function\n return this.parse(xref, fnObj);\n }\n\n var fnArray = [];\n for (var j = 0, jj = fnObj.length; j < jj; j++) {\n var obj = xref.fetchIfRef(fnObj[j]);\n fnArray.push(PDFFunction.parse(xref, obj));\n }\n return function (src, srcOffset, dest, destOffset) {\n for (var i = 0, ii = fnArray.length; i < ii; i++) {\n fnArray[i](src, srcOffset, dest, destOffset + i);\n }\n };\n },\n\n constructSampled: function PDFFunction_constructSampled(str, dict) {\n function toMultiArray(arr) {\n var inputLength = arr.length;\n var out = [];\n var index = 0;\n for (var i = 0; i < inputLength; i += 2) {\n out[index] = [arr[i], arr[i + 1]];\n ++index;\n }\n return out;\n }\n var domain = dict.getArray('Domain');\n var range = dict.getArray('Range');\n\n if (!domain || !range) {\n throw new FormatError('No domain or range');\n }\n\n var inputSize = domain.length / 2;\n var outputSize = range.length / 2;\n\n domain = toMultiArray(domain);\n range = toMultiArray(range);\n\n var size = dict.get('Size');\n var bps = dict.get('BitsPerSample');\n var order = dict.get('Order') || 1;\n if (order !== 1) {\n // No description how cubic spline interpolation works in PDF32000:2008\n // As in poppler, ignoring order, linear interpolation may work as good\n info('No support for cubic spline interpolation: ' + order);\n }\n\n var encode = dict.getArray('Encode');\n if (!encode) {\n encode = [];\n for (var i = 0; i < inputSize; ++i) {\n encode.push(0);\n encode.push(size[i] - 1);\n }\n }\n encode = toMultiArray(encode);\n\n var decode = dict.getArray('Decode');\n if (!decode) {\n decode = range;\n } else {\n decode = toMultiArray(decode);\n }\n\n var samples = this.getSampleArray(size, outputSize, bps, str);\n\n return [\n CONSTRUCT_SAMPLED, inputSize, domain, encode, decode, samples, size,\n outputSize, Math.pow(2, bps) - 1, range\n ];\n },\n\n constructSampledFromIR: function PDFFunction_constructSampledFromIR(IR) {\n // See chapter 3, page 109 of the PDF reference\n function interpolate(x, xmin, xmax, ymin, ymax) {\n return ymin + ((x - xmin) * ((ymax - ymin) / (xmax - xmin)));\n }\n\n return function constructSampledFromIRResult(src, srcOffset,\n dest, destOffset) {\n // See chapter 3, page 110 of the PDF reference.\n var m = IR[1];\n var domain = IR[2];\n var encode = IR[3];\n var decode = IR[4];\n var samples = IR[5];\n var size = IR[6];\n var n = IR[7];\n // var mask = IR[8];\n var range = IR[9];\n\n // Building the cube vertices: its part and sample index\n // http://rjwagner49.com/Mathematics/Interpolation.pdf\n var cubeVertices = 1 << m;\n var cubeN = new Float64Array(cubeVertices);\n var cubeVertex = new Uint32Array(cubeVertices);\n var i, j;\n for (j = 0; j < cubeVertices; j++) {\n cubeN[j] = 1;\n }\n\n var k = n, pos = 1;\n // Map x_i to y_j for 0 <= i < m using the sampled function.\n for (i = 0; i < m; ++i) {\n // x_i' = min(max(x_i, Domain_2i), Domain_2i+1)\n var domain_2i = domain[i][0];\n var domain_2i_1 = domain[i][1];\n var xi = Math.min(Math.max(src[srcOffset + i], domain_2i),\n domain_2i_1);\n\n // e_i = Interpolate(x_i', Domain_2i, Domain_2i+1,\n // Encode_2i, Encode_2i+1)\n var e = interpolate(xi, domain_2i, domain_2i_1,\n encode[i][0], encode[i][1]);\n\n // e_i' = min(max(e_i, 0), Size_i - 1)\n var size_i = size[i];\n e = Math.min(Math.max(e, 0), size_i - 1);\n\n // Adjusting the cube: N and vertex sample index\n var e0 = e < size_i - 1 ? Math.floor(e) : e - 1; // e1 = e0 + 1;\n var n0 = e0 + 1 - e; // (e1 - e) / (e1 - e0);\n var n1 = e - e0; // (e - e0) / (e1 - e0);\n var offset0 = e0 * k;\n var offset1 = offset0 + k; // e1 * k\n for (j = 0; j < cubeVertices; j++) {\n if (j & pos) {\n cubeN[j] *= n1;\n cubeVertex[j] += offset1;\n } else {\n cubeN[j] *= n0;\n cubeVertex[j] += offset0;\n }\n }\n\n k *= size_i;\n pos <<= 1;\n }\n\n for (j = 0; j < n; ++j) {\n // Sum all cube vertices' samples portions\n var rj = 0;\n for (i = 0; i < cubeVertices; i++) {\n rj += samples[cubeVertex[i] + j] * cubeN[i];\n }\n\n // r_j' = Interpolate(r_j, 0, 2^BitsPerSample - 1,\n // Decode_2j, Decode_2j+1)\n rj = interpolate(rj, 0, 1, decode[j][0], decode[j][1]);\n\n // y_j = min(max(r_j, range_2j), range_2j+1)\n dest[destOffset + j] = Math.min(Math.max(rj, range[j][0]),\n range[j][1]);\n }\n };\n },\n\n constructInterpolated: function PDFFunction_constructInterpolated(str,\n dict) {\n var c0 = dict.getArray('C0') || [0];\n var c1 = dict.getArray('C1') || [1];\n var n = dict.get('N');\n\n if (!isArray(c0) || !isArray(c1)) {\n throw new FormatError(\n 'Illegal dictionary for interpolated function');\n }\n\n var length = c0.length;\n var diff = [];\n for (var i = 0; i < length; ++i) {\n diff.push(c1[i] - c0[i]);\n }\n\n return [CONSTRUCT_INTERPOLATED, c0, diff, n];\n },\n\n constructInterpolatedFromIR:\n function PDFFunction_constructInterpolatedFromIR(IR) {\n var c0 = IR[1];\n var diff = IR[2];\n var n = IR[3];\n\n var length = diff.length;\n\n return function constructInterpolatedFromIRResult(src, srcOffset,\n dest, destOffset) {\n var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n);\n\n for (var j = 0; j < length; ++j) {\n dest[destOffset + j] = c0[j] + (x * diff[j]);\n }\n };\n },\n\n constructStiched: function PDFFunction_constructStiched(fn, dict, xref) {\n var domain = dict.getArray('Domain');\n\n if (!domain) {\n throw new FormatError('No domain');\n }\n\n var inputSize = domain.length / 2;\n if (inputSize !== 1) {\n throw new FormatError('Bad domain for stiched function');\n }\n\n var fnRefs = dict.get('Functions');\n var fns = [];\n for (var i = 0, ii = fnRefs.length; i < ii; ++i) {\n fns.push(PDFFunction.getIR(xref, xref.fetchIfRef(fnRefs[i])));\n }\n\n var bounds = dict.getArray('Bounds');\n var encode = dict.getArray('Encode');\n\n return [CONSTRUCT_STICHED, domain, bounds, encode, fns];\n },\n\n constructStichedFromIR: function PDFFunction_constructStichedFromIR(IR) {\n var domain = IR[1];\n var bounds = IR[2];\n var encode = IR[3];\n var fnsIR = IR[4];\n var fns = [];\n var tmpBuf = new Float32Array(1);\n\n for (var i = 0, ii = fnsIR.length; i < ii; i++) {\n fns.push(PDFFunction.fromIR(fnsIR[i]));\n }\n\n return function constructStichedFromIRResult(src, srcOffset,\n dest, destOffset) {\n var clip = function constructStichedFromIRClip(v, min, max) {\n if (v > max) {\n v = max;\n } else if (v < min) {\n v = min;\n }\n return v;\n };\n\n // clip to domain\n var v = clip(src[srcOffset], domain[0], domain[1]);\n // calculate which bound the value is in\n for (var i = 0, ii = bounds.length; i < ii; ++i) {\n if (v < bounds[i]) {\n break;\n }\n }\n\n // encode value into domain of function\n var dmin = domain[0];\n if (i > 0) {\n dmin = bounds[i - 1];\n }\n var dmax = domain[1];\n if (i < bounds.length) {\n dmax = bounds[i];\n }\n\n var rmin = encode[2 * i];\n var rmax = encode[2 * i + 1];\n\n // Prevent the value from becoming NaN as a result\n // of division by zero (fixes issue6113.pdf).\n tmpBuf[0] = dmin === dmax ? rmin :\n rmin + (v - dmin) * (rmax - rmin) / (dmax - dmin);\n\n // call the appropriate function\n fns[i](tmpBuf, 0, dest, destOffset);\n };\n },\n\n constructPostScript: function PDFFunction_constructPostScript(fn, dict,\n xref) {\n var domain = dict.getArray('Domain');\n var range = dict.getArray('Range');\n\n if (!domain) {\n throw new FormatError('No domain.');\n }\n\n if (!range) {\n throw new FormatError('No range.');\n }\n\n var lexer = new PostScriptLexer(fn);\n var parser = new PostScriptParser(lexer);\n var code = parser.parse();\n\n return [CONSTRUCT_POSTSCRIPT, domain, range, code];\n },\n\n constructPostScriptFromIR: function PDFFunction_constructPostScriptFromIR(\n IR) {\n var domain = IR[1];\n var range = IR[2];\n var code = IR[3];\n\n var compiled = (new PostScriptCompiler()).compile(code, domain, range);\n if (compiled) {\n // Compiled function consists of simple expressions such as addition,\n // subtraction, Math.max, and also contains 'var' and 'return'\n // statements. See the generation in the PostScriptCompiler below.\n // eslint-disable-next-line no-new-func\n return new Function('src', 'srcOffset', 'dest', 'destOffset', compiled);\n }\n\n info('Unable to compile PS function');\n\n var numOutputs = range.length >> 1;\n var numInputs = domain.length >> 1;\n var evaluator = new PostScriptEvaluator(code);\n // Cache the values for a big speed up, the cache size is limited though\n // since the number of possible values can be huge from a PS function.\n var cache = Object.create(null);\n // The MAX_CACHE_SIZE is set to ~4x the maximum number of distinct values\n // seen in our tests.\n var MAX_CACHE_SIZE = 2048 * 4;\n var cache_available = MAX_CACHE_SIZE;\n var tmpBuf = new Float32Array(numInputs);\n\n return function constructPostScriptFromIRResult(src, srcOffset,\n dest, destOffset) {\n var i, value;\n var key = '';\n var input = tmpBuf;\n for (i = 0; i < numInputs; i++) {\n value = src[srcOffset + i];\n input[i] = value;\n key += value + '_';\n }\n\n var cachedValue = cache[key];\n if (cachedValue !== undefined) {\n dest.set(cachedValue, destOffset);\n return;\n }\n\n var output = new Float32Array(numOutputs);\n var stack = evaluator.execute(input);\n var stackIndex = stack.length - numOutputs;\n for (i = 0; i < numOutputs; i++) {\n value = stack[stackIndex + i];\n var bound = range[i * 2];\n if (value < bound) {\n value = bound;\n } else {\n bound = range[i * 2 + 1];\n if (value > bound) {\n value = bound;\n }\n }\n output[i] = value;\n }\n if (cache_available > 0) {\n cache_available--;\n cache[key] = output;\n }\n dest.set(output, destOffset);\n };\n },\n };\n})();\n\nfunction isPDFFunction(v) {\n var fnDict;\n if (typeof v !== 'object') {\n return false;\n } else if (isDict(v)) {\n fnDict = v;\n } else if (isStream(v)) {\n fnDict = v.dict;\n } else {\n return false;\n }\n return fnDict.has('FunctionType');\n}\n\nvar PostScriptStack = (function PostScriptStackClosure() {\n var MAX_STACK_SIZE = 100;\n function PostScriptStack(initialStack) {\n this.stack = !initialStack ? [] :\n Array.prototype.slice.call(initialStack, 0);\n }\n\n PostScriptStack.prototype = {\n push: function PostScriptStack_push(value) {\n if (this.stack.length >= MAX_STACK_SIZE) {\n throw new Error('PostScript function stack overflow.');\n }\n this.stack.push(value);\n },\n pop: function PostScriptStack_pop() {\n if (this.stack.length <= 0) {\n throw new Error('PostScript function stack underflow.');\n }\n return this.stack.pop();\n },\n copy: function PostScriptStack_copy(n) {\n if (this.stack.length + n >= MAX_STACK_SIZE) {\n throw new Error('PostScript function stack overflow.');\n }\n var stack = this.stack;\n for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {\n stack.push(stack[i]);\n }\n },\n index: function PostScriptStack_index(n) {\n this.push(this.stack[this.stack.length - n - 1]);\n },\n // rotate the last n stack elements p times\n roll: function PostScriptStack_roll(n, p) {\n var stack = this.stack;\n var l = stack.length - n;\n var r = stack.length - 1, c = l + (p - Math.floor(p / n) * n), i, j, t;\n for (i = l, j = r; i < j; i++, j--) {\n t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n }\n for (i = l, j = c - 1; i < j; i++, j--) {\n t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n }\n for (i = c, j = r; i < j; i++, j--) {\n t = stack[i]; stack[i] = stack[j]; stack[j] = t;\n }\n },\n };\n return PostScriptStack;\n})();\nvar PostScriptEvaluator = (function PostScriptEvaluatorClosure() {\n function PostScriptEvaluator(operators) {\n this.operators = operators;\n }\n PostScriptEvaluator.prototype = {\n execute: function PostScriptEvaluator_execute(initialStack) {\n var stack = new PostScriptStack(initialStack);\n var counter = 0;\n var operators = this.operators;\n var length = operators.length;\n var operator, a, b;\n while (counter < length) {\n operator = operators[counter++];\n if (typeof operator === 'number') {\n // Operator is really an operand and should be pushed to the stack.\n stack.push(operator);\n continue;\n }\n switch (operator) {\n // non standard ps operators\n case 'jz': // jump if false\n b = stack.pop();\n a = stack.pop();\n if (!a) {\n counter = b;\n }\n break;\n case 'j': // jump\n a = stack.pop();\n counter = a;\n break;\n\n // all ps operators in alphabetical order (excluding if/ifelse)\n case 'abs':\n a = stack.pop();\n stack.push(Math.abs(a));\n break;\n case 'add':\n b = stack.pop();\n a = stack.pop();\n stack.push(a + b);\n break;\n case 'and':\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a && b);\n } else {\n stack.push(a & b);\n }\n break;\n case 'atan':\n a = stack.pop();\n stack.push(Math.atan(a));\n break;\n case 'bitshift':\n b = stack.pop();\n a = stack.pop();\n if (a > 0) {\n stack.push(a << b);\n } else {\n stack.push(a >> b);\n }\n break;\n case 'ceiling':\n a = stack.pop();\n stack.push(Math.ceil(a));\n break;\n case 'copy':\n a = stack.pop();\n stack.copy(a);\n break;\n case 'cos':\n a = stack.pop();\n stack.push(Math.cos(a));\n break;\n case 'cvi':\n a = stack.pop() | 0;\n stack.push(a);\n break;\n case 'cvr':\n // noop\n break;\n case 'div':\n b = stack.pop();\n a = stack.pop();\n stack.push(a / b);\n break;\n case 'dup':\n stack.copy(1);\n break;\n case 'eq':\n b = stack.pop();\n a = stack.pop();\n stack.push(a === b);\n break;\n case 'exch':\n stack.roll(2, 1);\n break;\n case 'exp':\n b = stack.pop();\n a = stack.pop();\n stack.push(Math.pow(a, b));\n break;\n case 'false':\n stack.push(false);\n break;\n case 'floor':\n a = stack.pop();\n stack.push(Math.floor(a));\n break;\n case 'ge':\n b = stack.pop();\n a = stack.pop();\n stack.push(a >= b);\n break;\n case 'gt':\n b = stack.pop();\n a = stack.pop();\n stack.push(a > b);\n break;\n case 'idiv':\n b = stack.pop();\n a = stack.pop();\n stack.push((a / b) | 0);\n break;\n case 'index':\n a = stack.pop();\n stack.index(a);\n break;\n case 'le':\n b = stack.pop();\n a = stack.pop();\n stack.push(a <= b);\n break;\n case 'ln':\n a = stack.pop();\n stack.push(Math.log(a));\n break;\n case 'log':\n a = stack.pop();\n stack.push(Math.log(a) / Math.LN10);\n break;\n case 'lt':\n b = stack.pop();\n a = stack.pop();\n stack.push(a < b);\n break;\n case 'mod':\n b = stack.pop();\n a = stack.pop();\n stack.push(a % b);\n break;\n case 'mul':\n b = stack.pop();\n a = stack.pop();\n stack.push(a * b);\n break;\n case 'ne':\n b = stack.pop();\n a = stack.pop();\n stack.push(a !== b);\n break;\n case 'neg':\n a = stack.pop();\n stack.push(-a);\n break;\n case 'not':\n a = stack.pop();\n if (isBool(a)) {\n stack.push(!a);\n } else {\n stack.push(~a);\n }\n break;\n case 'or':\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a || b);\n } else {\n stack.push(a | b);\n }\n break;\n case 'pop':\n stack.pop();\n break;\n case 'roll':\n b = stack.pop();\n a = stack.pop();\n stack.roll(a, b);\n break;\n case 'round':\n a = stack.pop();\n stack.push(Math.round(a));\n break;\n case 'sin':\n a = stack.pop();\n stack.push(Math.sin(a));\n break;\n case 'sqrt':\n a = stack.pop();\n stack.push(Math.sqrt(a));\n break;\n case 'sub':\n b = stack.pop();\n a = stack.pop();\n stack.push(a - b);\n break;\n case 'true':\n stack.push(true);\n break;\n case 'truncate':\n a = stack.pop();\n a = a < 0 ? Math.ceil(a) : Math.floor(a);\n stack.push(a);\n break;\n case 'xor':\n b = stack.pop();\n a = stack.pop();\n if (isBool(a) && isBool(b)) {\n stack.push(a !== b);\n } else {\n stack.push(a ^ b);\n }\n break;\n default:\n throw new FormatError(`Unknown operator ${operator}`);\n }\n }\n return stack.stack;\n },\n };\n return PostScriptEvaluator;\n})();\n\n// Most of the PDFs functions consist of simple operations such as:\n// roll, exch, sub, cvr, pop, index, dup, mul, if, gt, add.\n//\n// We can compile most of such programs, and at the same moment, we can\n// optimize some expressions using basic math properties. Keeping track of\n// min/max values will allow us to avoid extra Math.min/Math.max calls.\nvar PostScriptCompiler = (function PostScriptCompilerClosure() {\n function AstNode(type) {\n this.type = type;\n }\n AstNode.prototype.visit = function (visitor) {\n throw new Error('abstract method');\n };\n\n function AstArgument(index, min, max) {\n AstNode.call(this, 'args');\n this.index = index;\n this.min = min;\n this.max = max;\n }\n AstArgument.prototype = Object.create(AstNode.prototype);\n AstArgument.prototype.visit = function (visitor) {\n visitor.visitArgument(this);\n };\n\n function AstLiteral(number) {\n AstNode.call(this, 'literal');\n this.number = number;\n this.min = number;\n this.max = number;\n }\n AstLiteral.prototype = Object.create(AstNode.prototype);\n AstLiteral.prototype.visit = function (visitor) {\n visitor.visitLiteral(this);\n };\n\n function AstBinaryOperation(op, arg1, arg2, min, max) {\n AstNode.call(this, 'binary');\n this.op = op;\n this.arg1 = arg1;\n this.arg2 = arg2;\n this.min = min;\n this.max = max;\n }\n AstBinaryOperation.prototype = Object.create(AstNode.prototype);\n AstBinaryOperation.prototype.visit = function (visitor) {\n visitor.visitBinaryOperation(this);\n };\n\n function AstMin(arg, max) {\n AstNode.call(this, 'max');\n this.arg = arg;\n this.min = arg.min;\n this.max = max;\n }\n AstMin.prototype = Object.create(AstNode.prototype);\n AstMin.prototype.visit = function (visitor) {\n visitor.visitMin(this);\n };\n\n function AstVariable(index, min, max) {\n AstNode.call(this, 'var');\n this.index = index;\n this.min = min;\n this.max = max;\n }\n AstVariable.prototype = Object.create(AstNode.prototype);\n AstVariable.prototype.visit = function (visitor) {\n visitor.visitVariable(this);\n };\n\n function AstVariableDefinition(variable, arg) {\n AstNode.call(this, 'definition');\n this.variable = variable;\n this.arg = arg;\n }\n AstVariableDefinition.prototype = Object.create(AstNode.prototype);\n AstVariableDefinition.prototype.visit = function (visitor) {\n visitor.visitVariableDefinition(this);\n };\n\n function ExpressionBuilderVisitor() {\n this.parts = [];\n }\n ExpressionBuilderVisitor.prototype = {\n visitArgument(arg) {\n this.parts.push('Math.max(', arg.min, ', Math.min(',\n arg.max, ', src[srcOffset + ', arg.index, ']))');\n },\n visitVariable(variable) {\n this.parts.push('v', variable.index);\n },\n visitLiteral(literal) {\n this.parts.push(literal.number);\n },\n visitBinaryOperation(operation) {\n this.parts.push('(');\n operation.arg1.visit(this);\n this.parts.push(' ', operation.op, ' ');\n operation.arg2.visit(this);\n this.parts.push(')');\n },\n visitVariableDefinition(definition) {\n this.parts.push('var ');\n definition.variable.visit(this);\n this.parts.push(' = ');\n definition.arg.visit(this);\n this.parts.push(';');\n },\n visitMin(max) {\n this.parts.push('Math.min(');\n max.arg.visit(this);\n this.parts.push(', ', max.max, ')');\n },\n toString() {\n return this.parts.join('');\n },\n };\n\n function buildAddOperation(num1, num2) {\n if (num2.type === 'literal' && num2.number === 0) {\n // optimization: second operand is 0\n return num1;\n }\n if (num1.type === 'literal' && num1.number === 0) {\n // optimization: first operand is 0\n return num2;\n }\n if (num2.type === 'literal' && num1.type === 'literal') {\n // optimization: operands operand are literals\n return new AstLiteral(num1.number + num2.number);\n }\n return new AstBinaryOperation('+', num1, num2,\n num1.min + num2.min, num1.max + num2.max);\n }\n\n function buildMulOperation(num1, num2) {\n if (num2.type === 'literal') {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num2.number === 1) {\n return num1; // and it's 1\n } else if (num1.type === 'literal') {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number * num2.number);\n }\n }\n if (num1.type === 'literal') {\n // optimization: first operands is a literal...\n if (num1.number === 0) {\n return new AstLiteral(0); // and it's 0\n } else if (num1.number === 1) {\n return num2; // and it's 1\n }\n }\n var min = Math.min(num1.min * num2.min, num1.min * num2.max,\n num1.max * num2.min, num1.max * num2.max);\n var max = Math.max(num1.min * num2.min, num1.min * num2.max,\n num1.max * num2.min, num1.max * num2.max);\n return new AstBinaryOperation('*', num1, num2, min, max);\n }\n\n function buildSubOperation(num1, num2) {\n if (num2.type === 'literal') {\n // optimization: second operands is a literal...\n if (num2.number === 0) {\n return num1; // ... and it's 0\n } else if (num1.type === 'literal') {\n // ... and first operands is a literal too\n return new AstLiteral(num1.number - num2.number);\n }\n }\n if (num2.type === 'binary' && num2.op === '-' &&\n num1.type === 'literal' && num1.number === 1 &&\n num2.arg1.type === 'literal' && num2.arg1.number === 1) {\n // optimization for case: 1 - (1 - x)\n return num2.arg2;\n }\n return new AstBinaryOperation('-', num1, num2,\n num1.min - num2.max, num1.max - num2.min);\n }\n\n function buildMinOperation(num1, max) {\n if (num1.min >= max) {\n // optimization: num1 min value is not less than required max\n return new AstLiteral(max); // just returning max\n } else if (num1.max <= max) {\n // optimization: num1 max value is not greater than required max\n return num1; // just returning an argument\n }\n return new AstMin(num1, max);\n }\n\n function PostScriptCompiler() {}\n PostScriptCompiler.prototype = {\n compile: function PostScriptCompiler_compile(code, domain, range) {\n var stack = [];\n var i, ii;\n var instructions = [];\n var inputSize = domain.length >> 1, outputSize = range.length >> 1;\n var lastRegister = 0;\n var n, j;\n var num1, num2, ast1, ast2, tmpVar, item;\n for (i = 0; i < inputSize; i++) {\n stack.push(new AstArgument(i, domain[i * 2], domain[i * 2 + 1]));\n }\n\n for (i = 0, ii = code.length; i < ii; i++) {\n item = code[i];\n if (typeof item === 'number') {\n stack.push(new AstLiteral(item));\n continue;\n }\n\n switch (item) {\n case 'add':\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildAddOperation(num1, num2));\n break;\n case 'cvr':\n if (stack.length < 1) {\n return null;\n }\n break;\n case 'mul':\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildMulOperation(num1, num2));\n break;\n case 'sub':\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n stack.push(buildSubOperation(num1, num2));\n break;\n case 'exch':\n if (stack.length < 2) {\n return null;\n }\n ast1 = stack.pop(); ast2 = stack.pop();\n stack.push(ast1, ast2);\n break;\n case 'pop':\n if (stack.length < 1) {\n return null;\n }\n stack.pop();\n break;\n case 'index':\n if (stack.length < 1) {\n return null;\n }\n num1 = stack.pop();\n if (num1.type !== 'literal') {\n return null;\n }\n n = num1.number;\n if (n < 0 || (n | 0) !== n || stack.length < n) {\n return null;\n }\n ast1 = stack[stack.length - n - 1];\n if (ast1.type === 'literal' || ast1.type === 'var') {\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - n - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case 'dup':\n if (stack.length < 1) {\n return null;\n }\n if (typeof code[i + 1] === 'number' && code[i + 2] === 'gt' &&\n code[i + 3] === i + 7 && code[i + 4] === 'jz' &&\n code[i + 5] === 'pop' && code[i + 6] === code[i + 1]) {\n // special case of the commands sequence for the min operation\n num1 = stack.pop();\n stack.push(buildMinOperation(num1, code[i + 1]));\n i += 6;\n break;\n }\n ast1 = stack[stack.length - 1];\n if (ast1.type === 'literal' || ast1.type === 'var') {\n // we don't have to save into intermediate variable a literal or\n // variable.\n stack.push(ast1);\n break;\n }\n tmpVar = new AstVariable(lastRegister++, ast1.min, ast1.max);\n stack[stack.length - 1] = tmpVar;\n stack.push(tmpVar);\n instructions.push(new AstVariableDefinition(tmpVar, ast1));\n break;\n case 'roll':\n if (stack.length < 2) {\n return null;\n }\n num2 = stack.pop();\n num1 = stack.pop();\n if (num2.type !== 'literal' || num1.type !== 'literal') {\n // both roll operands must be numbers\n return null;\n }\n j = num2.number;\n n = num1.number;\n if (n <= 0 || (n | 0) !== n || (j | 0) !== j || stack.length < n) {\n // ... and integers\n return null;\n }\n j = ((j % n) + n) % n;\n if (j === 0) {\n break; // just skipping -- there are nothing to rotate\n }\n Array.prototype.push.apply(stack,\n stack.splice(stack.length - n, n - j));\n break;\n default:\n return null; // unsupported operator\n }\n }\n\n if (stack.length !== outputSize) {\n return null;\n }\n\n var result = [];\n instructions.forEach(function (instruction) {\n var statementBuilder = new ExpressionBuilderVisitor();\n instruction.visit(statementBuilder);\n result.push(statementBuilder.toString());\n });\n stack.forEach(function (expr, i) {\n var statementBuilder = new ExpressionBuilderVisitor();\n expr.visit(statementBuilder);\n var min = range[i * 2], max = range[i * 2 + 1];\n var out = [statementBuilder.toString()];\n if (min > expr.min) {\n out.unshift('Math.max(', min, ', ');\n out.push(')');\n }\n if (max < expr.max) {\n out.unshift('Math.min(', max, ', ');\n out.push(')');\n }\n out.unshift('dest[destOffset + ', i, '] = ');\n out.push(';');\n result.push(out.join(''));\n });\n return result.join('\\n');\n },\n };\n\n return PostScriptCompiler;\n})();\n\nexport {\n isPDFFunction,\n PDFFunction,\n PostScriptEvaluator,\n PostScriptCompiler,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/function.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* no-babel-preset */\n\nvar getLookupTableFactory = require('../shared/util').getLookupTableFactory;\n\n// Some characters, e.g. copyrightserif, are mapped to the private use area\n// and might not be displayed using standard fonts. Mapping/hacking well-known\n// chars to the similar equivalents in the normal characters range.\nvar getSpecialPUASymbols = getLookupTableFactory(function (t) {\n t[63721] = 0x00A9; // copyrightsans (0xF8E9) => copyright\n t[63193] = 0x00A9; // copyrightserif (0xF6D9) => copyright\n t[63720] = 0x00AE; // registersans (0xF8E8) => registered\n t[63194] = 0x00AE; // registerserif (0xF6DA) => registered\n t[63722] = 0x2122; // trademarksans (0xF8EA) => trademark\n t[63195] = 0x2122; // trademarkserif (0xF6DB) => trademark\n t[63729] = 0x23A7; // bracelefttp (0xF8F1)\n t[63730] = 0x23A8; // braceleftmid (0xF8F2)\n t[63731] = 0x23A9; // braceleftbt (0xF8F3)\n t[63740] = 0x23AB; // bracerighttp (0xF8FC)\n t[63741] = 0x23AC; // bracerightmid (0xF8FD)\n t[63742] = 0x23AD; // bracerightbt (0xF8FE)\n t[63726] = 0x23A1; // bracketlefttp (0xF8EE)\n t[63727] = 0x23A2; // bracketleftex (0xF8EF)\n t[63728] = 0x23A3; // bracketleftbt (0xF8F0)\n t[63737] = 0x23A4; // bracketrighttp (0xF8F9)\n t[63738] = 0x23A5; // bracketrightex (0xF8FA)\n t[63739] = 0x23A6; // bracketrightbt (0xF8FB)\n t[63723] = 0x239B; // parenlefttp (0xF8EB)\n t[63724] = 0x239C; // parenleftex (0xF8EC)\n t[63725] = 0x239D; // parenleftbt (0xF8ED)\n t[63734] = 0x239E; // parenrighttp (0xF8F6)\n t[63735] = 0x239F; // parenrightex (0xF8F7)\n t[63736] = 0x23A0; // parenrightbt (0xF8F8)\n});\n\nfunction mapSpecialUnicodeValues(code) {\n if (code >= 0xFFF0 && code <= 0xFFFF) { // Specials unicode block.\n return 0;\n } else if (code >= 0xF600 && code <= 0xF8FF) {\n return (getSpecialPUASymbols()[code] || code);\n }\n return code;\n}\n\nfunction getUnicodeForGlyph(name, glyphsUnicodeMap) {\n var unicode = glyphsUnicodeMap[name];\n if (unicode !== undefined) {\n return unicode;\n }\n if (!name) {\n return -1;\n }\n // Try to recover valid Unicode values from 'uniXXXX'/'uXXXX{XX}' glyphs.\n if (name[0] === 'u') {\n var nameLen = name.length, hexStr;\n\n if (nameLen === 7 && name[1] === 'n' && name[2] === 'i') { // 'uniXXXX'\n hexStr = name.substr(3);\n } else if (nameLen >= 5 && nameLen <= 7) { // 'uXXXX{XX}'\n hexStr = name.substr(1);\n } else {\n return -1;\n }\n // Check for upper-case hexadecimal characters, to avoid false positives.\n if (hexStr === hexStr.toUpperCase()) {\n unicode = parseInt(hexStr, 16);\n if (unicode >= 0) {\n return unicode;\n }\n }\n }\n return -1;\n}\n\nvar UnicodeRanges = [\n { 'begin': 0x0000, 'end': 0x007F, }, // Basic Latin\n { 'begin': 0x0080, 'end': 0x00FF, }, // Latin-1 Supplement\n { 'begin': 0x0100, 'end': 0x017F, }, // Latin Extended-A\n { 'begin': 0x0180, 'end': 0x024F, }, // Latin Extended-B\n { 'begin': 0x0250, 'end': 0x02AF, }, // IPA Extensions\n { 'begin': 0x02B0, 'end': 0x02FF, }, // Spacing Modifier Letters\n { 'begin': 0x0300, 'end': 0x036F, }, // Combining Diacritical Marks\n { 'begin': 0x0370, 'end': 0x03FF, }, // Greek and Coptic\n { 'begin': 0x2C80, 'end': 0x2CFF, }, // Coptic\n { 'begin': 0x0400, 'end': 0x04FF, }, // Cyrillic\n { 'begin': 0x0530, 'end': 0x058F, }, // Armenian\n { 'begin': 0x0590, 'end': 0x05FF, }, // Hebrew\n { 'begin': 0xA500, 'end': 0xA63F, }, // Vai\n { 'begin': 0x0600, 'end': 0x06FF, }, // Arabic\n { 'begin': 0x07C0, 'end': 0x07FF, }, // NKo\n { 'begin': 0x0900, 'end': 0x097F, }, // Devanagari\n { 'begin': 0x0980, 'end': 0x09FF, }, // Bengali\n { 'begin': 0x0A00, 'end': 0x0A7F, }, // Gurmukhi\n { 'begin': 0x0A80, 'end': 0x0AFF, }, // Gujarati\n { 'begin': 0x0B00, 'end': 0x0B7F, }, // Oriya\n { 'begin': 0x0B80, 'end': 0x0BFF, }, // Tamil\n { 'begin': 0x0C00, 'end': 0x0C7F, }, // Telugu\n { 'begin': 0x0C80, 'end': 0x0CFF, }, // Kannada\n { 'begin': 0x0D00, 'end': 0x0D7F, }, // Malayalam\n { 'begin': 0x0E00, 'end': 0x0E7F, }, // Thai\n { 'begin': 0x0E80, 'end': 0x0EFF, }, // Lao\n { 'begin': 0x10A0, 'end': 0x10FF, }, // Georgian\n { 'begin': 0x1B00, 'end': 0x1B7F, }, // Balinese\n { 'begin': 0x1100, 'end': 0x11FF, }, // Hangul Jamo\n { 'begin': 0x1E00, 'end': 0x1EFF, }, // Latin Extended Additional\n { 'begin': 0x1F00, 'end': 0x1FFF, }, // Greek Extended\n { 'begin': 0x2000, 'end': 0x206F, }, // General Punctuation\n { 'begin': 0x2070, 'end': 0x209F, }, // Superscripts And Subscripts\n { 'begin': 0x20A0, 'end': 0x20CF, }, // Currency Symbol\n { 'begin': 0x20D0, 'end': 0x20FF, }, // Combining Diacritical Marks\n { 'begin': 0x2100, 'end': 0x214F, }, // Letterlike Symbols\n { 'begin': 0x2150, 'end': 0x218F, }, // Number Forms\n { 'begin': 0x2190, 'end': 0x21FF, }, // Arrows\n { 'begin': 0x2200, 'end': 0x22FF, }, // Mathematical Operators\n { 'begin': 0x2300, 'end': 0x23FF, }, // Miscellaneous Technical\n { 'begin': 0x2400, 'end': 0x243F, }, // Control Pictures\n { 'begin': 0x2440, 'end': 0x245F, }, // Optical Character Recognition\n { 'begin': 0x2460, 'end': 0x24FF, }, // Enclosed Alphanumerics\n { 'begin': 0x2500, 'end': 0x257F, }, // Box Drawing\n { 'begin': 0x2580, 'end': 0x259F, }, // Block Elements\n { 'begin': 0x25A0, 'end': 0x25FF, }, // Geometric Shapes\n { 'begin': 0x2600, 'end': 0x26FF, }, // Miscellaneous Symbols\n { 'begin': 0x2700, 'end': 0x27BF, }, // Dingbats\n { 'begin': 0x3000, 'end': 0x303F, }, // CJK Symbols And Punctuation\n { 'begin': 0x3040, 'end': 0x309F, }, // Hiragana\n { 'begin': 0x30A0, 'end': 0x30FF, }, // Katakana\n { 'begin': 0x3100, 'end': 0x312F, }, // Bopomofo\n { 'begin': 0x3130, 'end': 0x318F, }, // Hangul Compatibility Jamo\n { 'begin': 0xA840, 'end': 0xA87F, }, // Phags-pa\n { 'begin': 0x3200, 'end': 0x32FF, }, // Enclosed CJK Letters And Months\n { 'begin': 0x3300, 'end': 0x33FF, }, // CJK Compatibility\n { 'begin': 0xAC00, 'end': 0xD7AF, }, // Hangul Syllables\n { 'begin': 0xD800, 'end': 0xDFFF, }, // Non-Plane 0 *\n { 'begin': 0x10900, 'end': 0x1091F, }, // Phoenicia\n { 'begin': 0x4E00, 'end': 0x9FFF, }, // CJK Unified Ideographs\n { 'begin': 0xE000, 'end': 0xF8FF, }, // Private Use Area (plane 0)\n { 'begin': 0x31C0, 'end': 0x31EF, }, // CJK Strokes\n { 'begin': 0xFB00, 'end': 0xFB4F, }, // Alphabetic Presentation Forms\n { 'begin': 0xFB50, 'end': 0xFDFF, }, // Arabic Presentation Forms-A\n { 'begin': 0xFE20, 'end': 0xFE2F, }, // Combining Half Marks\n { 'begin': 0xFE10, 'end': 0xFE1F, }, // Vertical Forms\n { 'begin': 0xFE50, 'end': 0xFE6F, }, // Small Form Variants\n { 'begin': 0xFE70, 'end': 0xFEFF, }, // Arabic Presentation Forms-B\n { 'begin': 0xFF00, 'end': 0xFFEF, }, // Halfwidth And Fullwidth Forms\n { 'begin': 0xFFF0, 'end': 0xFFFF, }, // Specials\n { 'begin': 0x0F00, 'end': 0x0FFF, }, // Tibetan\n { 'begin': 0x0700, 'end': 0x074F, }, // Syriac\n { 'begin': 0x0780, 'end': 0x07BF, }, // Thaana\n { 'begin': 0x0D80, 'end': 0x0DFF, }, // Sinhala\n { 'begin': 0x1000, 'end': 0x109F, }, // Myanmar\n { 'begin': 0x1200, 'end': 0x137F, }, // Ethiopic\n { 'begin': 0x13A0, 'end': 0x13FF, }, // Cherokee\n { 'begin': 0x1400, 'end': 0x167F, }, // Unified Canadian Aboriginal Syllabics\n { 'begin': 0x1680, 'end': 0x169F, }, // Ogham\n { 'begin': 0x16A0, 'end': 0x16FF, }, // Runic\n { 'begin': 0x1780, 'end': 0x17FF, }, // Khmer\n { 'begin': 0x1800, 'end': 0x18AF, }, // Mongolian\n { 'begin': 0x2800, 'end': 0x28FF, }, // Braille Patterns\n { 'begin': 0xA000, 'end': 0xA48F, }, // Yi Syllables\n { 'begin': 0x1700, 'end': 0x171F, }, // Tagalog\n { 'begin': 0x10300, 'end': 0x1032F, }, // Old Italic\n { 'begin': 0x10330, 'end': 0x1034F, }, // Gothic\n { 'begin': 0x10400, 'end': 0x1044F, }, // Deseret\n { 'begin': 0x1D000, 'end': 0x1D0FF, }, // Byzantine Musical Symbols\n { 'begin': 0x1D400, 'end': 0x1D7FF, }, // Mathematical Alphanumeric Symbols\n { 'begin': 0xFF000, 'end': 0xFFFFD, }, // Private Use (plane 15)\n { 'begin': 0xFE00, 'end': 0xFE0F, }, // Variation Selectors\n { 'begin': 0xE0000, 'end': 0xE007F, }, // Tags\n { 'begin': 0x1900, 'end': 0x194F, }, // Limbu\n { 'begin': 0x1950, 'end': 0x197F, }, // Tai Le\n { 'begin': 0x1980, 'end': 0x19DF, }, // New Tai Lue\n { 'begin': 0x1A00, 'end': 0x1A1F, }, // Buginese\n { 'begin': 0x2C00, 'end': 0x2C5F, }, // Glagolitic\n { 'begin': 0x2D30, 'end': 0x2D7F, }, // Tifinagh\n { 'begin': 0x4DC0, 'end': 0x4DFF, }, // Yijing Hexagram Symbols\n { 'begin': 0xA800, 'end': 0xA82F, }, // Syloti Nagri\n { 'begin': 0x10000, 'end': 0x1007F, }, // Linear B Syllabary\n { 'begin': 0x10140, 'end': 0x1018F, }, // Ancient Greek Numbers\n { 'begin': 0x10380, 'end': 0x1039F, }, // Ugaritic\n { 'begin': 0x103A0, 'end': 0x103DF, }, // Old Persian\n { 'begin': 0x10450, 'end': 0x1047F, }, // Shavian\n { 'begin': 0x10480, 'end': 0x104AF, }, // Osmanya\n { 'begin': 0x10800, 'end': 0x1083F, }, // Cypriot Syllabary\n { 'begin': 0x10A00, 'end': 0x10A5F, }, // Kharoshthi\n { 'begin': 0x1D300, 'end': 0x1D35F, }, // Tai Xuan Jing Symbols\n { 'begin': 0x12000, 'end': 0x123FF, }, // Cuneiform\n { 'begin': 0x1D360, 'end': 0x1D37F, }, // Counting Rod Numerals\n { 'begin': 0x1B80, 'end': 0x1BBF, }, // Sundanese\n { 'begin': 0x1C00, 'end': 0x1C4F, }, // Lepcha\n { 'begin': 0x1C50, 'end': 0x1C7F, }, // Ol Chiki\n { 'begin': 0xA880, 'end': 0xA8DF, }, // Saurashtra\n { 'begin': 0xA900, 'end': 0xA92F, }, // Kayah Li\n { 'begin': 0xA930, 'end': 0xA95F, }, // Rejang\n { 'begin': 0xAA00, 'end': 0xAA5F, }, // Cham\n { 'begin': 0x10190, 'end': 0x101CF, }, // Ancient Symbols\n { 'begin': 0x101D0, 'end': 0x101FF, }, // Phaistos Disc\n { 'begin': 0x102A0, 'end': 0x102DF, }, // Carian\n { 'begin': 0x1F030, 'end': 0x1F09F, } // Domino Tiles\n];\n\nfunction getUnicodeRangeFor(value) {\n for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {\n var range = UnicodeRanges[i];\n if (value >= range.begin && value < range.end) {\n return i;\n }\n }\n return -1;\n}\n\nfunction isRTLRangeFor(value) {\n var range = UnicodeRanges[13];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n range = UnicodeRanges[11];\n if (value >= range.begin && value < range.end) {\n return true;\n }\n return false;\n}\n\n// The normalization table is obtained by filtering the Unicode characters\n// database with entries.\nvar getNormalizedUnicodes = getLookupTableFactory(function (t) {\n t['\\u00A8'] = '\\u0020\\u0308';\n t['\\u00AF'] = '\\u0020\\u0304';\n t['\\u00B4'] = '\\u0020\\u0301';\n t['\\u00B5'] = '\\u03BC';\n t['\\u00B8'] = '\\u0020\\u0327';\n t['\\u0132'] = '\\u0049\\u004A';\n t['\\u0133'] = '\\u0069\\u006A';\n t['\\u013F'] = '\\u004C\\u00B7';\n t['\\u0140'] = '\\u006C\\u00B7';\n t['\\u0149'] = '\\u02BC\\u006E';\n t['\\u017F'] = '\\u0073';\n t['\\u01C4'] = '\\u0044\\u017D';\n t['\\u01C5'] = '\\u0044\\u017E';\n t['\\u01C6'] = '\\u0064\\u017E';\n t['\\u01C7'] = '\\u004C\\u004A';\n t['\\u01C8'] = '\\u004C\\u006A';\n t['\\u01C9'] = '\\u006C\\u006A';\n t['\\u01CA'] = '\\u004E\\u004A';\n t['\\u01CB'] = '\\u004E\\u006A';\n t['\\u01CC'] = '\\u006E\\u006A';\n t['\\u01F1'] = '\\u0044\\u005A';\n t['\\u01F2'] = '\\u0044\\u007A';\n t['\\u01F3'] = '\\u0064\\u007A';\n t['\\u02D8'] = '\\u0020\\u0306';\n t['\\u02D9'] = '\\u0020\\u0307';\n t['\\u02DA'] = '\\u0020\\u030A';\n t['\\u02DB'] = '\\u0020\\u0328';\n t['\\u02DC'] = '\\u0020\\u0303';\n t['\\u02DD'] = '\\u0020\\u030B';\n t['\\u037A'] = '\\u0020\\u0345';\n t['\\u0384'] = '\\u0020\\u0301';\n t['\\u03D0'] = '\\u03B2';\n t['\\u03D1'] = '\\u03B8';\n t['\\u03D2'] = '\\u03A5';\n t['\\u03D5'] = '\\u03C6';\n t['\\u03D6'] = '\\u03C0';\n t['\\u03F0'] = '\\u03BA';\n t['\\u03F1'] = '\\u03C1';\n t['\\u03F2'] = '\\u03C2';\n t['\\u03F4'] = '\\u0398';\n t['\\u03F5'] = '\\u03B5';\n t['\\u03F9'] = '\\u03A3';\n t['\\u0587'] = '\\u0565\\u0582';\n t['\\u0675'] = '\\u0627\\u0674';\n t['\\u0676'] = '\\u0648\\u0674';\n t['\\u0677'] = '\\u06C7\\u0674';\n t['\\u0678'] = '\\u064A\\u0674';\n t['\\u0E33'] = '\\u0E4D\\u0E32';\n t['\\u0EB3'] = '\\u0ECD\\u0EB2';\n t['\\u0EDC'] = '\\u0EAB\\u0E99';\n t['\\u0EDD'] = '\\u0EAB\\u0EA1';\n t['\\u0F77'] = '\\u0FB2\\u0F81';\n t['\\u0F79'] = '\\u0FB3\\u0F81';\n t['\\u1E9A'] = '\\u0061\\u02BE';\n t['\\u1FBD'] = '\\u0020\\u0313';\n t['\\u1FBF'] = '\\u0020\\u0313';\n t['\\u1FC0'] = '\\u0020\\u0342';\n t['\\u1FFE'] = '\\u0020\\u0314';\n t['\\u2002'] = '\\u0020';\n t['\\u2003'] = '\\u0020';\n t['\\u2004'] = '\\u0020';\n t['\\u2005'] = '\\u0020';\n t['\\u2006'] = '\\u0020';\n t['\\u2008'] = '\\u0020';\n t['\\u2009'] = '\\u0020';\n t['\\u200A'] = '\\u0020';\n t['\\u2017'] = '\\u0020\\u0333';\n t['\\u2024'] = '\\u002E';\n t['\\u2025'] = '\\u002E\\u002E';\n t['\\u2026'] = '\\u002E\\u002E\\u002E';\n t['\\u2033'] = '\\u2032\\u2032';\n t['\\u2034'] = '\\u2032\\u2032\\u2032';\n t['\\u2036'] = '\\u2035\\u2035';\n t['\\u2037'] = '\\u2035\\u2035\\u2035';\n t['\\u203C'] = '\\u0021\\u0021';\n t['\\u203E'] = '\\u0020\\u0305';\n t['\\u2047'] = '\\u003F\\u003F';\n t['\\u2048'] = '\\u003F\\u0021';\n t['\\u2049'] = '\\u0021\\u003F';\n t['\\u2057'] = '\\u2032\\u2032\\u2032\\u2032';\n t['\\u205F'] = '\\u0020';\n t['\\u20A8'] = '\\u0052\\u0073';\n t['\\u2100'] = '\\u0061\\u002F\\u0063';\n t['\\u2101'] = '\\u0061\\u002F\\u0073';\n t['\\u2103'] = '\\u00B0\\u0043';\n t['\\u2105'] = '\\u0063\\u002F\\u006F';\n t['\\u2106'] = '\\u0063\\u002F\\u0075';\n t['\\u2107'] = '\\u0190';\n t['\\u2109'] = '\\u00B0\\u0046';\n t['\\u2116'] = '\\u004E\\u006F';\n t['\\u2121'] = '\\u0054\\u0045\\u004C';\n t['\\u2135'] = '\\u05D0';\n t['\\u2136'] = '\\u05D1';\n t['\\u2137'] = '\\u05D2';\n t['\\u2138'] = '\\u05D3';\n t['\\u213B'] = '\\u0046\\u0041\\u0058';\n t['\\u2160'] = '\\u0049';\n t['\\u2161'] = '\\u0049\\u0049';\n t['\\u2162'] = '\\u0049\\u0049\\u0049';\n t['\\u2163'] = '\\u0049\\u0056';\n t['\\u2164'] = '\\u0056';\n t['\\u2165'] = '\\u0056\\u0049';\n t['\\u2166'] = '\\u0056\\u0049\\u0049';\n t['\\u2167'] = '\\u0056\\u0049\\u0049\\u0049';\n t['\\u2168'] = '\\u0049\\u0058';\n t['\\u2169'] = '\\u0058';\n t['\\u216A'] = '\\u0058\\u0049';\n t['\\u216B'] = '\\u0058\\u0049\\u0049';\n t['\\u216C'] = '\\u004C';\n t['\\u216D'] = '\\u0043';\n t['\\u216E'] = '\\u0044';\n t['\\u216F'] = '\\u004D';\n t['\\u2170'] = '\\u0069';\n t['\\u2171'] = '\\u0069\\u0069';\n t['\\u2172'] = '\\u0069\\u0069\\u0069';\n t['\\u2173'] = '\\u0069\\u0076';\n t['\\u2174'] = '\\u0076';\n t['\\u2175'] = '\\u0076\\u0069';\n t['\\u2176'] = '\\u0076\\u0069\\u0069';\n t['\\u2177'] = '\\u0076\\u0069\\u0069\\u0069';\n t['\\u2178'] = '\\u0069\\u0078';\n t['\\u2179'] = '\\u0078';\n t['\\u217A'] = '\\u0078\\u0069';\n t['\\u217B'] = '\\u0078\\u0069\\u0069';\n t['\\u217C'] = '\\u006C';\n t['\\u217D'] = '\\u0063';\n t['\\u217E'] = '\\u0064';\n t['\\u217F'] = '\\u006D';\n t['\\u222C'] = '\\u222B\\u222B';\n t['\\u222D'] = '\\u222B\\u222B\\u222B';\n t['\\u222F'] = '\\u222E\\u222E';\n t['\\u2230'] = '\\u222E\\u222E\\u222E';\n t['\\u2474'] = '\\u0028\\u0031\\u0029';\n t['\\u2475'] = '\\u0028\\u0032\\u0029';\n t['\\u2476'] = '\\u0028\\u0033\\u0029';\n t['\\u2477'] = '\\u0028\\u0034\\u0029';\n t['\\u2478'] = '\\u0028\\u0035\\u0029';\n t['\\u2479'] = '\\u0028\\u0036\\u0029';\n t['\\u247A'] = '\\u0028\\u0037\\u0029';\n t['\\u247B'] = '\\u0028\\u0038\\u0029';\n t['\\u247C'] = '\\u0028\\u0039\\u0029';\n t['\\u247D'] = '\\u0028\\u0031\\u0030\\u0029';\n t['\\u247E'] = '\\u0028\\u0031\\u0031\\u0029';\n t['\\u247F'] = '\\u0028\\u0031\\u0032\\u0029';\n t['\\u2480'] = '\\u0028\\u0031\\u0033\\u0029';\n t['\\u2481'] = '\\u0028\\u0031\\u0034\\u0029';\n t['\\u2482'] = '\\u0028\\u0031\\u0035\\u0029';\n t['\\u2483'] = '\\u0028\\u0031\\u0036\\u0029';\n t['\\u2484'] = '\\u0028\\u0031\\u0037\\u0029';\n t['\\u2485'] = '\\u0028\\u0031\\u0038\\u0029';\n t['\\u2486'] = '\\u0028\\u0031\\u0039\\u0029';\n t['\\u2487'] = '\\u0028\\u0032\\u0030\\u0029';\n t['\\u2488'] = '\\u0031\\u002E';\n t['\\u2489'] = '\\u0032\\u002E';\n t['\\u248A'] = '\\u0033\\u002E';\n t['\\u248B'] = '\\u0034\\u002E';\n t['\\u248C'] = '\\u0035\\u002E';\n t['\\u248D'] = '\\u0036\\u002E';\n t['\\u248E'] = '\\u0037\\u002E';\n t['\\u248F'] = '\\u0038\\u002E';\n t['\\u2490'] = '\\u0039\\u002E';\n t['\\u2491'] = '\\u0031\\u0030\\u002E';\n t['\\u2492'] = '\\u0031\\u0031\\u002E';\n t['\\u2493'] = '\\u0031\\u0032\\u002E';\n t['\\u2494'] = '\\u0031\\u0033\\u002E';\n t['\\u2495'] = '\\u0031\\u0034\\u002E';\n t['\\u2496'] = '\\u0031\\u0035\\u002E';\n t['\\u2497'] = '\\u0031\\u0036\\u002E';\n t['\\u2498'] = '\\u0031\\u0037\\u002E';\n t['\\u2499'] = '\\u0031\\u0038\\u002E';\n t['\\u249A'] = '\\u0031\\u0039\\u002E';\n t['\\u249B'] = '\\u0032\\u0030\\u002E';\n t['\\u249C'] = '\\u0028\\u0061\\u0029';\n t['\\u249D'] = '\\u0028\\u0062\\u0029';\n t['\\u249E'] = '\\u0028\\u0063\\u0029';\n t['\\u249F'] = '\\u0028\\u0064\\u0029';\n t['\\u24A0'] = '\\u0028\\u0065\\u0029';\n t['\\u24A1'] = '\\u0028\\u0066\\u0029';\n t['\\u24A2'] = '\\u0028\\u0067\\u0029';\n t['\\u24A3'] = '\\u0028\\u0068\\u0029';\n t['\\u24A4'] = '\\u0028\\u0069\\u0029';\n t['\\u24A5'] = '\\u0028\\u006A\\u0029';\n t['\\u24A6'] = '\\u0028\\u006B\\u0029';\n t['\\u24A7'] = '\\u0028\\u006C\\u0029';\n t['\\u24A8'] = '\\u0028\\u006D\\u0029';\n t['\\u24A9'] = '\\u0028\\u006E\\u0029';\n t['\\u24AA'] = '\\u0028\\u006F\\u0029';\n t['\\u24AB'] = '\\u0028\\u0070\\u0029';\n t['\\u24AC'] = '\\u0028\\u0071\\u0029';\n t['\\u24AD'] = '\\u0028\\u0072\\u0029';\n t['\\u24AE'] = '\\u0028\\u0073\\u0029';\n t['\\u24AF'] = '\\u0028\\u0074\\u0029';\n t['\\u24B0'] = '\\u0028\\u0075\\u0029';\n t['\\u24B1'] = '\\u0028\\u0076\\u0029';\n t['\\u24B2'] = '\\u0028\\u0077\\u0029';\n t['\\u24B3'] = '\\u0028\\u0078\\u0029';\n t['\\u24B4'] = '\\u0028\\u0079\\u0029';\n t['\\u24B5'] = '\\u0028\\u007A\\u0029';\n t['\\u2A0C'] = '\\u222B\\u222B\\u222B\\u222B';\n t['\\u2A74'] = '\\u003A\\u003A\\u003D';\n t['\\u2A75'] = '\\u003D\\u003D';\n t['\\u2A76'] = '\\u003D\\u003D\\u003D';\n t['\\u2E9F'] = '\\u6BCD';\n t['\\u2EF3'] = '\\u9F9F';\n t['\\u2F00'] = '\\u4E00';\n t['\\u2F01'] = '\\u4E28';\n t['\\u2F02'] = '\\u4E36';\n t['\\u2F03'] = '\\u4E3F';\n t['\\u2F04'] = '\\u4E59';\n t['\\u2F05'] = '\\u4E85';\n t['\\u2F06'] = '\\u4E8C';\n t['\\u2F07'] = '\\u4EA0';\n t['\\u2F08'] = '\\u4EBA';\n t['\\u2F09'] = '\\u513F';\n t['\\u2F0A'] = '\\u5165';\n t['\\u2F0B'] = '\\u516B';\n t['\\u2F0C'] = '\\u5182';\n t['\\u2F0D'] = '\\u5196';\n t['\\u2F0E'] = '\\u51AB';\n t['\\u2F0F'] = '\\u51E0';\n t['\\u2F10'] = '\\u51F5';\n t['\\u2F11'] = '\\u5200';\n t['\\u2F12'] = '\\u529B';\n t['\\u2F13'] = '\\u52F9';\n t['\\u2F14'] = '\\u5315';\n t['\\u2F15'] = '\\u531A';\n t['\\u2F16'] = '\\u5338';\n t['\\u2F17'] = '\\u5341';\n t['\\u2F18'] = '\\u535C';\n t['\\u2F19'] = '\\u5369';\n t['\\u2F1A'] = '\\u5382';\n t['\\u2F1B'] = '\\u53B6';\n t['\\u2F1C'] = '\\u53C8';\n t['\\u2F1D'] = '\\u53E3';\n t['\\u2F1E'] = '\\u56D7';\n t['\\u2F1F'] = '\\u571F';\n t['\\u2F20'] = '\\u58EB';\n t['\\u2F21'] = '\\u5902';\n t['\\u2F22'] = '\\u590A';\n t['\\u2F23'] = '\\u5915';\n t['\\u2F24'] = '\\u5927';\n t['\\u2F25'] = '\\u5973';\n t['\\u2F26'] = '\\u5B50';\n t['\\u2F27'] = '\\u5B80';\n t['\\u2F28'] = '\\u5BF8';\n t['\\u2F29'] = '\\u5C0F';\n t['\\u2F2A'] = '\\u5C22';\n t['\\u2F2B'] = '\\u5C38';\n t['\\u2F2C'] = '\\u5C6E';\n t['\\u2F2D'] = '\\u5C71';\n t['\\u2F2E'] = '\\u5DDB';\n t['\\u2F2F'] = '\\u5DE5';\n t['\\u2F30'] = '\\u5DF1';\n t['\\u2F31'] = '\\u5DFE';\n t['\\u2F32'] = '\\u5E72';\n t['\\u2F33'] = '\\u5E7A';\n t['\\u2F34'] = '\\u5E7F';\n t['\\u2F35'] = '\\u5EF4';\n t['\\u2F36'] = '\\u5EFE';\n t['\\u2F37'] = '\\u5F0B';\n t['\\u2F38'] = '\\u5F13';\n t['\\u2F39'] = '\\u5F50';\n t['\\u2F3A'] = '\\u5F61';\n t['\\u2F3B'] = '\\u5F73';\n t['\\u2F3C'] = '\\u5FC3';\n t['\\u2F3D'] = '\\u6208';\n t['\\u2F3E'] = '\\u6236';\n t['\\u2F3F'] = '\\u624B';\n t['\\u2F40'] = '\\u652F';\n t['\\u2F41'] = '\\u6534';\n t['\\u2F42'] = '\\u6587';\n t['\\u2F43'] = '\\u6597';\n t['\\u2F44'] = '\\u65A4';\n t['\\u2F45'] = '\\u65B9';\n t['\\u2F46'] = '\\u65E0';\n t['\\u2F47'] = '\\u65E5';\n t['\\u2F48'] = '\\u66F0';\n t['\\u2F49'] = '\\u6708';\n t['\\u2F4A'] = '\\u6728';\n t['\\u2F4B'] = '\\u6B20';\n t['\\u2F4C'] = '\\u6B62';\n t['\\u2F4D'] = '\\u6B79';\n t['\\u2F4E'] = '\\u6BB3';\n t['\\u2F4F'] = '\\u6BCB';\n t['\\u2F50'] = '\\u6BD4';\n t['\\u2F51'] = '\\u6BDB';\n t['\\u2F52'] = '\\u6C0F';\n t['\\u2F53'] = '\\u6C14';\n t['\\u2F54'] = '\\u6C34';\n t['\\u2F55'] = '\\u706B';\n t['\\u2F56'] = '\\u722A';\n t['\\u2F57'] = '\\u7236';\n t['\\u2F58'] = '\\u723B';\n t['\\u2F59'] = '\\u723F';\n t['\\u2F5A'] = '\\u7247';\n t['\\u2F5B'] = '\\u7259';\n t['\\u2F5C'] = '\\u725B';\n t['\\u2F5D'] = '\\u72AC';\n t['\\u2F5E'] = '\\u7384';\n t['\\u2F5F'] = '\\u7389';\n t['\\u2F60'] = '\\u74DC';\n t['\\u2F61'] = '\\u74E6';\n t['\\u2F62'] = '\\u7518';\n t['\\u2F63'] = '\\u751F';\n t['\\u2F64'] = '\\u7528';\n t['\\u2F65'] = '\\u7530';\n t['\\u2F66'] = '\\u758B';\n t['\\u2F67'] = '\\u7592';\n t['\\u2F68'] = '\\u7676';\n t['\\u2F69'] = '\\u767D';\n t['\\u2F6A'] = '\\u76AE';\n t['\\u2F6B'] = '\\u76BF';\n t['\\u2F6C'] = '\\u76EE';\n t['\\u2F6D'] = '\\u77DB';\n t['\\u2F6E'] = '\\u77E2';\n t['\\u2F6F'] = '\\u77F3';\n t['\\u2F70'] = '\\u793A';\n t['\\u2F71'] = '\\u79B8';\n t['\\u2F72'] = '\\u79BE';\n t['\\u2F73'] = '\\u7A74';\n t['\\u2F74'] = '\\u7ACB';\n t['\\u2F75'] = '\\u7AF9';\n t['\\u2F76'] = '\\u7C73';\n t['\\u2F77'] = '\\u7CF8';\n t['\\u2F78'] = '\\u7F36';\n t['\\u2F79'] = '\\u7F51';\n t['\\u2F7A'] = '\\u7F8A';\n t['\\u2F7B'] = '\\u7FBD';\n t['\\u2F7C'] = '\\u8001';\n t['\\u2F7D'] = '\\u800C';\n t['\\u2F7E'] = '\\u8012';\n t['\\u2F7F'] = '\\u8033';\n t['\\u2F80'] = '\\u807F';\n t['\\u2F81'] = '\\u8089';\n t['\\u2F82'] = '\\u81E3';\n t['\\u2F83'] = '\\u81EA';\n t['\\u2F84'] = '\\u81F3';\n t['\\u2F85'] = '\\u81FC';\n t['\\u2F86'] = '\\u820C';\n t['\\u2F87'] = '\\u821B';\n t['\\u2F88'] = '\\u821F';\n t['\\u2F89'] = '\\u826E';\n t['\\u2F8A'] = '\\u8272';\n t['\\u2F8B'] = '\\u8278';\n t['\\u2F8C'] = '\\u864D';\n t['\\u2F8D'] = '\\u866B';\n t['\\u2F8E'] = '\\u8840';\n t['\\u2F8F'] = '\\u884C';\n t['\\u2F90'] = '\\u8863';\n t['\\u2F91'] = '\\u897E';\n t['\\u2F92'] = '\\u898B';\n t['\\u2F93'] = '\\u89D2';\n t['\\u2F94'] = '\\u8A00';\n t['\\u2F95'] = '\\u8C37';\n t['\\u2F96'] = '\\u8C46';\n t['\\u2F97'] = '\\u8C55';\n t['\\u2F98'] = '\\u8C78';\n t['\\u2F99'] = '\\u8C9D';\n t['\\u2F9A'] = '\\u8D64';\n t['\\u2F9B'] = '\\u8D70';\n t['\\u2F9C'] = '\\u8DB3';\n t['\\u2F9D'] = '\\u8EAB';\n t['\\u2F9E'] = '\\u8ECA';\n t['\\u2F9F'] = '\\u8F9B';\n t['\\u2FA0'] = '\\u8FB0';\n t['\\u2FA1'] = '\\u8FB5';\n t['\\u2FA2'] = '\\u9091';\n t['\\u2FA3'] = '\\u9149';\n t['\\u2FA4'] = '\\u91C6';\n t['\\u2FA5'] = '\\u91CC';\n t['\\u2FA6'] = '\\u91D1';\n t['\\u2FA7'] = '\\u9577';\n t['\\u2FA8'] = '\\u9580';\n t['\\u2FA9'] = '\\u961C';\n t['\\u2FAA'] = '\\u96B6';\n t['\\u2FAB'] = '\\u96B9';\n t['\\u2FAC'] = '\\u96E8';\n t['\\u2FAD'] = '\\u9751';\n t['\\u2FAE'] = '\\u975E';\n t['\\u2FAF'] = '\\u9762';\n t['\\u2FB0'] = '\\u9769';\n t['\\u2FB1'] = '\\u97CB';\n t['\\u2FB2'] = '\\u97ED';\n t['\\u2FB3'] = '\\u97F3';\n t['\\u2FB4'] = '\\u9801';\n t['\\u2FB5'] = '\\u98A8';\n t['\\u2FB6'] = '\\u98DB';\n t['\\u2FB7'] = '\\u98DF';\n t['\\u2FB8'] = '\\u9996';\n t['\\u2FB9'] = '\\u9999';\n t['\\u2FBA'] = '\\u99AC';\n t['\\u2FBB'] = '\\u9AA8';\n t['\\u2FBC'] = '\\u9AD8';\n t['\\u2FBD'] = '\\u9ADF';\n t['\\u2FBE'] = '\\u9B25';\n t['\\u2FBF'] = '\\u9B2F';\n t['\\u2FC0'] = '\\u9B32';\n t['\\u2FC1'] = '\\u9B3C';\n t['\\u2FC2'] = '\\u9B5A';\n t['\\u2FC3'] = '\\u9CE5';\n t['\\u2FC4'] = '\\u9E75';\n t['\\u2FC5'] = '\\u9E7F';\n t['\\u2FC6'] = '\\u9EA5';\n t['\\u2FC7'] = '\\u9EBB';\n t['\\u2FC8'] = '\\u9EC3';\n t['\\u2FC9'] = '\\u9ECD';\n t['\\u2FCA'] = '\\u9ED1';\n t['\\u2FCB'] = '\\u9EF9';\n t['\\u2FCC'] = '\\u9EFD';\n t['\\u2FCD'] = '\\u9F0E';\n t['\\u2FCE'] = '\\u9F13';\n t['\\u2FCF'] = '\\u9F20';\n t['\\u2FD0'] = '\\u9F3B';\n t['\\u2FD1'] = '\\u9F4A';\n t['\\u2FD2'] = '\\u9F52';\n t['\\u2FD3'] = '\\u9F8D';\n t['\\u2FD4'] = '\\u9F9C';\n t['\\u2FD5'] = '\\u9FA0';\n t['\\u3036'] = '\\u3012';\n t['\\u3038'] = '\\u5341';\n t['\\u3039'] = '\\u5344';\n t['\\u303A'] = '\\u5345';\n t['\\u309B'] = '\\u0020\\u3099';\n t['\\u309C'] = '\\u0020\\u309A';\n t['\\u3131'] = '\\u1100';\n t['\\u3132'] = '\\u1101';\n t['\\u3133'] = '\\u11AA';\n t['\\u3134'] = '\\u1102';\n t['\\u3135'] = '\\u11AC';\n t['\\u3136'] = '\\u11AD';\n t['\\u3137'] = '\\u1103';\n t['\\u3138'] = '\\u1104';\n t['\\u3139'] = '\\u1105';\n t['\\u313A'] = '\\u11B0';\n t['\\u313B'] = '\\u11B1';\n t['\\u313C'] = '\\u11B2';\n t['\\u313D'] = '\\u11B3';\n t['\\u313E'] = '\\u11B4';\n t['\\u313F'] = '\\u11B5';\n t['\\u3140'] = '\\u111A';\n t['\\u3141'] = '\\u1106';\n t['\\u3142'] = '\\u1107';\n t['\\u3143'] = '\\u1108';\n t['\\u3144'] = '\\u1121';\n t['\\u3145'] = '\\u1109';\n t['\\u3146'] = '\\u110A';\n t['\\u3147'] = '\\u110B';\n t['\\u3148'] = '\\u110C';\n t['\\u3149'] = '\\u110D';\n t['\\u314A'] = '\\u110E';\n t['\\u314B'] = '\\u110F';\n t['\\u314C'] = '\\u1110';\n t['\\u314D'] = '\\u1111';\n t['\\u314E'] = '\\u1112';\n t['\\u314F'] = '\\u1161';\n t['\\u3150'] = '\\u1162';\n t['\\u3151'] = '\\u1163';\n t['\\u3152'] = '\\u1164';\n t['\\u3153'] = '\\u1165';\n t['\\u3154'] = '\\u1166';\n t['\\u3155'] = '\\u1167';\n t['\\u3156'] = '\\u1168';\n t['\\u3157'] = '\\u1169';\n t['\\u3158'] = '\\u116A';\n t['\\u3159'] = '\\u116B';\n t['\\u315A'] = '\\u116C';\n t['\\u315B'] = '\\u116D';\n t['\\u315C'] = '\\u116E';\n t['\\u315D'] = '\\u116F';\n t['\\u315E'] = '\\u1170';\n t['\\u315F'] = '\\u1171';\n t['\\u3160'] = '\\u1172';\n t['\\u3161'] = '\\u1173';\n t['\\u3162'] = '\\u1174';\n t['\\u3163'] = '\\u1175';\n t['\\u3164'] = '\\u1160';\n t['\\u3165'] = '\\u1114';\n t['\\u3166'] = '\\u1115';\n t['\\u3167'] = '\\u11C7';\n t['\\u3168'] = '\\u11C8';\n t['\\u3169'] = '\\u11CC';\n t['\\u316A'] = '\\u11CE';\n t['\\u316B'] = '\\u11D3';\n t['\\u316C'] = '\\u11D7';\n t['\\u316D'] = '\\u11D9';\n t['\\u316E'] = '\\u111C';\n t['\\u316F'] = '\\u11DD';\n t['\\u3170'] = '\\u11DF';\n t['\\u3171'] = '\\u111D';\n t['\\u3172'] = '\\u111E';\n t['\\u3173'] = '\\u1120';\n t['\\u3174'] = '\\u1122';\n t['\\u3175'] = '\\u1123';\n t['\\u3176'] = '\\u1127';\n t['\\u3177'] = '\\u1129';\n t['\\u3178'] = '\\u112B';\n t['\\u3179'] = '\\u112C';\n t['\\u317A'] = '\\u112D';\n t['\\u317B'] = '\\u112E';\n t['\\u317C'] = '\\u112F';\n t['\\u317D'] = '\\u1132';\n t['\\u317E'] = '\\u1136';\n t['\\u317F'] = '\\u1140';\n t['\\u3180'] = '\\u1147';\n t['\\u3181'] = '\\u114C';\n t['\\u3182'] = '\\u11F1';\n t['\\u3183'] = '\\u11F2';\n t['\\u3184'] = '\\u1157';\n t['\\u3185'] = '\\u1158';\n t['\\u3186'] = '\\u1159';\n t['\\u3187'] = '\\u1184';\n t['\\u3188'] = '\\u1185';\n t['\\u3189'] = '\\u1188';\n t['\\u318A'] = '\\u1191';\n t['\\u318B'] = '\\u1192';\n t['\\u318C'] = '\\u1194';\n t['\\u318D'] = '\\u119E';\n t['\\u318E'] = '\\u11A1';\n t['\\u3200'] = '\\u0028\\u1100\\u0029';\n t['\\u3201'] = '\\u0028\\u1102\\u0029';\n t['\\u3202'] = '\\u0028\\u1103\\u0029';\n t['\\u3203'] = '\\u0028\\u1105\\u0029';\n t['\\u3204'] = '\\u0028\\u1106\\u0029';\n t['\\u3205'] = '\\u0028\\u1107\\u0029';\n t['\\u3206'] = '\\u0028\\u1109\\u0029';\n t['\\u3207'] = '\\u0028\\u110B\\u0029';\n t['\\u3208'] = '\\u0028\\u110C\\u0029';\n t['\\u3209'] = '\\u0028\\u110E\\u0029';\n t['\\u320A'] = '\\u0028\\u110F\\u0029';\n t['\\u320B'] = '\\u0028\\u1110\\u0029';\n t['\\u320C'] = '\\u0028\\u1111\\u0029';\n t['\\u320D'] = '\\u0028\\u1112\\u0029';\n t['\\u320E'] = '\\u0028\\u1100\\u1161\\u0029';\n t['\\u320F'] = '\\u0028\\u1102\\u1161\\u0029';\n t['\\u3210'] = '\\u0028\\u1103\\u1161\\u0029';\n t['\\u3211'] = '\\u0028\\u1105\\u1161\\u0029';\n t['\\u3212'] = '\\u0028\\u1106\\u1161\\u0029';\n t['\\u3213'] = '\\u0028\\u1107\\u1161\\u0029';\n t['\\u3214'] = '\\u0028\\u1109\\u1161\\u0029';\n t['\\u3215'] = '\\u0028\\u110B\\u1161\\u0029';\n t['\\u3216'] = '\\u0028\\u110C\\u1161\\u0029';\n t['\\u3217'] = '\\u0028\\u110E\\u1161\\u0029';\n t['\\u3218'] = '\\u0028\\u110F\\u1161\\u0029';\n t['\\u3219'] = '\\u0028\\u1110\\u1161\\u0029';\n t['\\u321A'] = '\\u0028\\u1111\\u1161\\u0029';\n t['\\u321B'] = '\\u0028\\u1112\\u1161\\u0029';\n t['\\u321C'] = '\\u0028\\u110C\\u116E\\u0029';\n t['\\u321D'] = '\\u0028\\u110B\\u1169\\u110C\\u1165\\u11AB\\u0029';\n t['\\u321E'] = '\\u0028\\u110B\\u1169\\u1112\\u116E\\u0029';\n t['\\u3220'] = '\\u0028\\u4E00\\u0029';\n t['\\u3221'] = '\\u0028\\u4E8C\\u0029';\n t['\\u3222'] = '\\u0028\\u4E09\\u0029';\n t['\\u3223'] = '\\u0028\\u56DB\\u0029';\n t['\\u3224'] = '\\u0028\\u4E94\\u0029';\n t['\\u3225'] = '\\u0028\\u516D\\u0029';\n t['\\u3226'] = '\\u0028\\u4E03\\u0029';\n t['\\u3227'] = '\\u0028\\u516B\\u0029';\n t['\\u3228'] = '\\u0028\\u4E5D\\u0029';\n t['\\u3229'] = '\\u0028\\u5341\\u0029';\n t['\\u322A'] = '\\u0028\\u6708\\u0029';\n t['\\u322B'] = '\\u0028\\u706B\\u0029';\n t['\\u322C'] = '\\u0028\\u6C34\\u0029';\n t['\\u322D'] = '\\u0028\\u6728\\u0029';\n t['\\u322E'] = '\\u0028\\u91D1\\u0029';\n t['\\u322F'] = '\\u0028\\u571F\\u0029';\n t['\\u3230'] = '\\u0028\\u65E5\\u0029';\n t['\\u3231'] = '\\u0028\\u682A\\u0029';\n t['\\u3232'] = '\\u0028\\u6709\\u0029';\n t['\\u3233'] = '\\u0028\\u793E\\u0029';\n t['\\u3234'] = '\\u0028\\u540D\\u0029';\n t['\\u3235'] = '\\u0028\\u7279\\u0029';\n t['\\u3236'] = '\\u0028\\u8CA1\\u0029';\n t['\\u3237'] = '\\u0028\\u795D\\u0029';\n t['\\u3238'] = '\\u0028\\u52B4\\u0029';\n t['\\u3239'] = '\\u0028\\u4EE3\\u0029';\n t['\\u323A'] = '\\u0028\\u547C\\u0029';\n t['\\u323B'] = '\\u0028\\u5B66\\u0029';\n t['\\u323C'] = '\\u0028\\u76E3\\u0029';\n t['\\u323D'] = '\\u0028\\u4F01\\u0029';\n t['\\u323E'] = '\\u0028\\u8CC7\\u0029';\n t['\\u323F'] = '\\u0028\\u5354\\u0029';\n t['\\u3240'] = '\\u0028\\u796D\\u0029';\n t['\\u3241'] = '\\u0028\\u4F11\\u0029';\n t['\\u3242'] = '\\u0028\\u81EA\\u0029';\n t['\\u3243'] = '\\u0028\\u81F3\\u0029';\n t['\\u32C0'] = '\\u0031\\u6708';\n t['\\u32C1'] = '\\u0032\\u6708';\n t['\\u32C2'] = '\\u0033\\u6708';\n t['\\u32C3'] = '\\u0034\\u6708';\n t['\\u32C4'] = '\\u0035\\u6708';\n t['\\u32C5'] = '\\u0036\\u6708';\n t['\\u32C6'] = '\\u0037\\u6708';\n t['\\u32C7'] = '\\u0038\\u6708';\n t['\\u32C8'] = '\\u0039\\u6708';\n t['\\u32C9'] = '\\u0031\\u0030\\u6708';\n t['\\u32CA'] = '\\u0031\\u0031\\u6708';\n t['\\u32CB'] = '\\u0031\\u0032\\u6708';\n t['\\u3358'] = '\\u0030\\u70B9';\n t['\\u3359'] = '\\u0031\\u70B9';\n t['\\u335A'] = '\\u0032\\u70B9';\n t['\\u335B'] = '\\u0033\\u70B9';\n t['\\u335C'] = '\\u0034\\u70B9';\n t['\\u335D'] = '\\u0035\\u70B9';\n t['\\u335E'] = '\\u0036\\u70B9';\n t['\\u335F'] = '\\u0037\\u70B9';\n t['\\u3360'] = '\\u0038\\u70B9';\n t['\\u3361'] = '\\u0039\\u70B9';\n t['\\u3362'] = '\\u0031\\u0030\\u70B9';\n t['\\u3363'] = '\\u0031\\u0031\\u70B9';\n t['\\u3364'] = '\\u0031\\u0032\\u70B9';\n t['\\u3365'] = '\\u0031\\u0033\\u70B9';\n t['\\u3366'] = '\\u0031\\u0034\\u70B9';\n t['\\u3367'] = '\\u0031\\u0035\\u70B9';\n t['\\u3368'] = '\\u0031\\u0036\\u70B9';\n t['\\u3369'] = '\\u0031\\u0037\\u70B9';\n t['\\u336A'] = '\\u0031\\u0038\\u70B9';\n t['\\u336B'] = '\\u0031\\u0039\\u70B9';\n t['\\u336C'] = '\\u0032\\u0030\\u70B9';\n t['\\u336D'] = '\\u0032\\u0031\\u70B9';\n t['\\u336E'] = '\\u0032\\u0032\\u70B9';\n t['\\u336F'] = '\\u0032\\u0033\\u70B9';\n t['\\u3370'] = '\\u0032\\u0034\\u70B9';\n t['\\u33E0'] = '\\u0031\\u65E5';\n t['\\u33E1'] = '\\u0032\\u65E5';\n t['\\u33E2'] = '\\u0033\\u65E5';\n t['\\u33E3'] = '\\u0034\\u65E5';\n t['\\u33E4'] = '\\u0035\\u65E5';\n t['\\u33E5'] = '\\u0036\\u65E5';\n t['\\u33E6'] = '\\u0037\\u65E5';\n t['\\u33E7'] = '\\u0038\\u65E5';\n t['\\u33E8'] = '\\u0039\\u65E5';\n t['\\u33E9'] = '\\u0031\\u0030\\u65E5';\n t['\\u33EA'] = '\\u0031\\u0031\\u65E5';\n t['\\u33EB'] = '\\u0031\\u0032\\u65E5';\n t['\\u33EC'] = '\\u0031\\u0033\\u65E5';\n t['\\u33ED'] = '\\u0031\\u0034\\u65E5';\n t['\\u33EE'] = '\\u0031\\u0035\\u65E5';\n t['\\u33EF'] = '\\u0031\\u0036\\u65E5';\n t['\\u33F0'] = '\\u0031\\u0037\\u65E5';\n t['\\u33F1'] = '\\u0031\\u0038\\u65E5';\n t['\\u33F2'] = '\\u0031\\u0039\\u65E5';\n t['\\u33F3'] = '\\u0032\\u0030\\u65E5';\n t['\\u33F4'] = '\\u0032\\u0031\\u65E5';\n t['\\u33F5'] = '\\u0032\\u0032\\u65E5';\n t['\\u33F6'] = '\\u0032\\u0033\\u65E5';\n t['\\u33F7'] = '\\u0032\\u0034\\u65E5';\n t['\\u33F8'] = '\\u0032\\u0035\\u65E5';\n t['\\u33F9'] = '\\u0032\\u0036\\u65E5';\n t['\\u33FA'] = '\\u0032\\u0037\\u65E5';\n t['\\u33FB'] = '\\u0032\\u0038\\u65E5';\n t['\\u33FC'] = '\\u0032\\u0039\\u65E5';\n t['\\u33FD'] = '\\u0033\\u0030\\u65E5';\n t['\\u33FE'] = '\\u0033\\u0031\\u65E5';\n t['\\uFB00'] = '\\u0066\\u0066';\n t['\\uFB01'] = '\\u0066\\u0069';\n t['\\uFB02'] = '\\u0066\\u006C';\n t['\\uFB03'] = '\\u0066\\u0066\\u0069';\n t['\\uFB04'] = '\\u0066\\u0066\\u006C';\n t['\\uFB05'] = '\\u017F\\u0074';\n t['\\uFB06'] = '\\u0073\\u0074';\n t['\\uFB13'] = '\\u0574\\u0576';\n t['\\uFB14'] = '\\u0574\\u0565';\n t['\\uFB15'] = '\\u0574\\u056B';\n t['\\uFB16'] = '\\u057E\\u0576';\n t['\\uFB17'] = '\\u0574\\u056D';\n t['\\uFB4F'] = '\\u05D0\\u05DC';\n t['\\uFB50'] = '\\u0671';\n t['\\uFB51'] = '\\u0671';\n t['\\uFB52'] = '\\u067B';\n t['\\uFB53'] = '\\u067B';\n t['\\uFB54'] = '\\u067B';\n t['\\uFB55'] = '\\u067B';\n t['\\uFB56'] = '\\u067E';\n t['\\uFB57'] = '\\u067E';\n t['\\uFB58'] = '\\u067E';\n t['\\uFB59'] = '\\u067E';\n t['\\uFB5A'] = '\\u0680';\n t['\\uFB5B'] = '\\u0680';\n t['\\uFB5C'] = '\\u0680';\n t['\\uFB5D'] = '\\u0680';\n t['\\uFB5E'] = '\\u067A';\n t['\\uFB5F'] = '\\u067A';\n t['\\uFB60'] = '\\u067A';\n t['\\uFB61'] = '\\u067A';\n t['\\uFB62'] = '\\u067F';\n t['\\uFB63'] = '\\u067F';\n t['\\uFB64'] = '\\u067F';\n t['\\uFB65'] = '\\u067F';\n t['\\uFB66'] = '\\u0679';\n t['\\uFB67'] = '\\u0679';\n t['\\uFB68'] = '\\u0679';\n t['\\uFB69'] = '\\u0679';\n t['\\uFB6A'] = '\\u06A4';\n t['\\uFB6B'] = '\\u06A4';\n t['\\uFB6C'] = '\\u06A4';\n t['\\uFB6D'] = '\\u06A4';\n t['\\uFB6E'] = '\\u06A6';\n t['\\uFB6F'] = '\\u06A6';\n t['\\uFB70'] = '\\u06A6';\n t['\\uFB71'] = '\\u06A6';\n t['\\uFB72'] = '\\u0684';\n t['\\uFB73'] = '\\u0684';\n t['\\uFB74'] = '\\u0684';\n t['\\uFB75'] = '\\u0684';\n t['\\uFB76'] = '\\u0683';\n t['\\uFB77'] = '\\u0683';\n t['\\uFB78'] = '\\u0683';\n t['\\uFB79'] = '\\u0683';\n t['\\uFB7A'] = '\\u0686';\n t['\\uFB7B'] = '\\u0686';\n t['\\uFB7C'] = '\\u0686';\n t['\\uFB7D'] = '\\u0686';\n t['\\uFB7E'] = '\\u0687';\n t['\\uFB7F'] = '\\u0687';\n t['\\uFB80'] = '\\u0687';\n t['\\uFB81'] = '\\u0687';\n t['\\uFB82'] = '\\u068D';\n t['\\uFB83'] = '\\u068D';\n t['\\uFB84'] = '\\u068C';\n t['\\uFB85'] = '\\u068C';\n t['\\uFB86'] = '\\u068E';\n t['\\uFB87'] = '\\u068E';\n t['\\uFB88'] = '\\u0688';\n t['\\uFB89'] = '\\u0688';\n t['\\uFB8A'] = '\\u0698';\n t['\\uFB8B'] = '\\u0698';\n t['\\uFB8C'] = '\\u0691';\n t['\\uFB8D'] = '\\u0691';\n t['\\uFB8E'] = '\\u06A9';\n t['\\uFB8F'] = '\\u06A9';\n t['\\uFB90'] = '\\u06A9';\n t['\\uFB91'] = '\\u06A9';\n t['\\uFB92'] = '\\u06AF';\n t['\\uFB93'] = '\\u06AF';\n t['\\uFB94'] = '\\u06AF';\n t['\\uFB95'] = '\\u06AF';\n t['\\uFB96'] = '\\u06B3';\n t['\\uFB97'] = '\\u06B3';\n t['\\uFB98'] = '\\u06B3';\n t['\\uFB99'] = '\\u06B3';\n t['\\uFB9A'] = '\\u06B1';\n t['\\uFB9B'] = '\\u06B1';\n t['\\uFB9C'] = '\\u06B1';\n t['\\uFB9D'] = '\\u06B1';\n t['\\uFB9E'] = '\\u06BA';\n t['\\uFB9F'] = '\\u06BA';\n t['\\uFBA0'] = '\\u06BB';\n t['\\uFBA1'] = '\\u06BB';\n t['\\uFBA2'] = '\\u06BB';\n t['\\uFBA3'] = '\\u06BB';\n t['\\uFBA4'] = '\\u06C0';\n t['\\uFBA5'] = '\\u06C0';\n t['\\uFBA6'] = '\\u06C1';\n t['\\uFBA7'] = '\\u06C1';\n t['\\uFBA8'] = '\\u06C1';\n t['\\uFBA9'] = '\\u06C1';\n t['\\uFBAA'] = '\\u06BE';\n t['\\uFBAB'] = '\\u06BE';\n t['\\uFBAC'] = '\\u06BE';\n t['\\uFBAD'] = '\\u06BE';\n t['\\uFBAE'] = '\\u06D2';\n t['\\uFBAF'] = '\\u06D2';\n t['\\uFBB0'] = '\\u06D3';\n t['\\uFBB1'] = '\\u06D3';\n t['\\uFBD3'] = '\\u06AD';\n t['\\uFBD4'] = '\\u06AD';\n t['\\uFBD5'] = '\\u06AD';\n t['\\uFBD6'] = '\\u06AD';\n t['\\uFBD7'] = '\\u06C7';\n t['\\uFBD8'] = '\\u06C7';\n t['\\uFBD9'] = '\\u06C6';\n t['\\uFBDA'] = '\\u06C6';\n t['\\uFBDB'] = '\\u06C8';\n t['\\uFBDC'] = '\\u06C8';\n t['\\uFBDD'] = '\\u0677';\n t['\\uFBDE'] = '\\u06CB';\n t['\\uFBDF'] = '\\u06CB';\n t['\\uFBE0'] = '\\u06C5';\n t['\\uFBE1'] = '\\u06C5';\n t['\\uFBE2'] = '\\u06C9';\n t['\\uFBE3'] = '\\u06C9';\n t['\\uFBE4'] = '\\u06D0';\n t['\\uFBE5'] = '\\u06D0';\n t['\\uFBE6'] = '\\u06D0';\n t['\\uFBE7'] = '\\u06D0';\n t['\\uFBE8'] = '\\u0649';\n t['\\uFBE9'] = '\\u0649';\n t['\\uFBEA'] = '\\u0626\\u0627';\n t['\\uFBEB'] = '\\u0626\\u0627';\n t['\\uFBEC'] = '\\u0626\\u06D5';\n t['\\uFBED'] = '\\u0626\\u06D5';\n t['\\uFBEE'] = '\\u0626\\u0648';\n t['\\uFBEF'] = '\\u0626\\u0648';\n t['\\uFBF0'] = '\\u0626\\u06C7';\n t['\\uFBF1'] = '\\u0626\\u06C7';\n t['\\uFBF2'] = '\\u0626\\u06C6';\n t['\\uFBF3'] = '\\u0626\\u06C6';\n t['\\uFBF4'] = '\\u0626\\u06C8';\n t['\\uFBF5'] = '\\u0626\\u06C8';\n t['\\uFBF6'] = '\\u0626\\u06D0';\n t['\\uFBF7'] = '\\u0626\\u06D0';\n t['\\uFBF8'] = '\\u0626\\u06D0';\n t['\\uFBF9'] = '\\u0626\\u0649';\n t['\\uFBFA'] = '\\u0626\\u0649';\n t['\\uFBFB'] = '\\u0626\\u0649';\n t['\\uFBFC'] = '\\u06CC';\n t['\\uFBFD'] = '\\u06CC';\n t['\\uFBFE'] = '\\u06CC';\n t['\\uFBFF'] = '\\u06CC';\n t['\\uFC00'] = '\\u0626\\u062C';\n t['\\uFC01'] = '\\u0626\\u062D';\n t['\\uFC02'] = '\\u0626\\u0645';\n t['\\uFC03'] = '\\u0626\\u0649';\n t['\\uFC04'] = '\\u0626\\u064A';\n t['\\uFC05'] = '\\u0628\\u062C';\n t['\\uFC06'] = '\\u0628\\u062D';\n t['\\uFC07'] = '\\u0628\\u062E';\n t['\\uFC08'] = '\\u0628\\u0645';\n t['\\uFC09'] = '\\u0628\\u0649';\n t['\\uFC0A'] = '\\u0628\\u064A';\n t['\\uFC0B'] = '\\u062A\\u062C';\n t['\\uFC0C'] = '\\u062A\\u062D';\n t['\\uFC0D'] = '\\u062A\\u062E';\n t['\\uFC0E'] = '\\u062A\\u0645';\n t['\\uFC0F'] = '\\u062A\\u0649';\n t['\\uFC10'] = '\\u062A\\u064A';\n t['\\uFC11'] = '\\u062B\\u062C';\n t['\\uFC12'] = '\\u062B\\u0645';\n t['\\uFC13'] = '\\u062B\\u0649';\n t['\\uFC14'] = '\\u062B\\u064A';\n t['\\uFC15'] = '\\u062C\\u062D';\n t['\\uFC16'] = '\\u062C\\u0645';\n t['\\uFC17'] = '\\u062D\\u062C';\n t['\\uFC18'] = '\\u062D\\u0645';\n t['\\uFC19'] = '\\u062E\\u062C';\n t['\\uFC1A'] = '\\u062E\\u062D';\n t['\\uFC1B'] = '\\u062E\\u0645';\n t['\\uFC1C'] = '\\u0633\\u062C';\n t['\\uFC1D'] = '\\u0633\\u062D';\n t['\\uFC1E'] = '\\u0633\\u062E';\n t['\\uFC1F'] = '\\u0633\\u0645';\n t['\\uFC20'] = '\\u0635\\u062D';\n t['\\uFC21'] = '\\u0635\\u0645';\n t['\\uFC22'] = '\\u0636\\u062C';\n t['\\uFC23'] = '\\u0636\\u062D';\n t['\\uFC24'] = '\\u0636\\u062E';\n t['\\uFC25'] = '\\u0636\\u0645';\n t['\\uFC26'] = '\\u0637\\u062D';\n t['\\uFC27'] = '\\u0637\\u0645';\n t['\\uFC28'] = '\\u0638\\u0645';\n t['\\uFC29'] = '\\u0639\\u062C';\n t['\\uFC2A'] = '\\u0639\\u0645';\n t['\\uFC2B'] = '\\u063A\\u062C';\n t['\\uFC2C'] = '\\u063A\\u0645';\n t['\\uFC2D'] = '\\u0641\\u062C';\n t['\\uFC2E'] = '\\u0641\\u062D';\n t['\\uFC2F'] = '\\u0641\\u062E';\n t['\\uFC30'] = '\\u0641\\u0645';\n t['\\uFC31'] = '\\u0641\\u0649';\n t['\\uFC32'] = '\\u0641\\u064A';\n t['\\uFC33'] = '\\u0642\\u062D';\n t['\\uFC34'] = '\\u0642\\u0645';\n t['\\uFC35'] = '\\u0642\\u0649';\n t['\\uFC36'] = '\\u0642\\u064A';\n t['\\uFC37'] = '\\u0643\\u0627';\n t['\\uFC38'] = '\\u0643\\u062C';\n t['\\uFC39'] = '\\u0643\\u062D';\n t['\\uFC3A'] = '\\u0643\\u062E';\n t['\\uFC3B'] = '\\u0643\\u0644';\n t['\\uFC3C'] = '\\u0643\\u0645';\n t['\\uFC3D'] = '\\u0643\\u0649';\n t['\\uFC3E'] = '\\u0643\\u064A';\n t['\\uFC3F'] = '\\u0644\\u062C';\n t['\\uFC40'] = '\\u0644\\u062D';\n t['\\uFC41'] = '\\u0644\\u062E';\n t['\\uFC42'] = '\\u0644\\u0645';\n t['\\uFC43'] = '\\u0644\\u0649';\n t['\\uFC44'] = '\\u0644\\u064A';\n t['\\uFC45'] = '\\u0645\\u062C';\n t['\\uFC46'] = '\\u0645\\u062D';\n t['\\uFC47'] = '\\u0645\\u062E';\n t['\\uFC48'] = '\\u0645\\u0645';\n t['\\uFC49'] = '\\u0645\\u0649';\n t['\\uFC4A'] = '\\u0645\\u064A';\n t['\\uFC4B'] = '\\u0646\\u062C';\n t['\\uFC4C'] = '\\u0646\\u062D';\n t['\\uFC4D'] = '\\u0646\\u062E';\n t['\\uFC4E'] = '\\u0646\\u0645';\n t['\\uFC4F'] = '\\u0646\\u0649';\n t['\\uFC50'] = '\\u0646\\u064A';\n t['\\uFC51'] = '\\u0647\\u062C';\n t['\\uFC52'] = '\\u0647\\u0645';\n t['\\uFC53'] = '\\u0647\\u0649';\n t['\\uFC54'] = '\\u0647\\u064A';\n t['\\uFC55'] = '\\u064A\\u062C';\n t['\\uFC56'] = '\\u064A\\u062D';\n t['\\uFC57'] = '\\u064A\\u062E';\n t['\\uFC58'] = '\\u064A\\u0645';\n t['\\uFC59'] = '\\u064A\\u0649';\n t['\\uFC5A'] = '\\u064A\\u064A';\n t['\\uFC5B'] = '\\u0630\\u0670';\n t['\\uFC5C'] = '\\u0631\\u0670';\n t['\\uFC5D'] = '\\u0649\\u0670';\n t['\\uFC5E'] = '\\u0020\\u064C\\u0651';\n t['\\uFC5F'] = '\\u0020\\u064D\\u0651';\n t['\\uFC60'] = '\\u0020\\u064E\\u0651';\n t['\\uFC61'] = '\\u0020\\u064F\\u0651';\n t['\\uFC62'] = '\\u0020\\u0650\\u0651';\n t['\\uFC63'] = '\\u0020\\u0651\\u0670';\n t['\\uFC64'] = '\\u0626\\u0631';\n t['\\uFC65'] = '\\u0626\\u0632';\n t['\\uFC66'] = '\\u0626\\u0645';\n t['\\uFC67'] = '\\u0626\\u0646';\n t['\\uFC68'] = '\\u0626\\u0649';\n t['\\uFC69'] = '\\u0626\\u064A';\n t['\\uFC6A'] = '\\u0628\\u0631';\n t['\\uFC6B'] = '\\u0628\\u0632';\n t['\\uFC6C'] = '\\u0628\\u0645';\n t['\\uFC6D'] = '\\u0628\\u0646';\n t['\\uFC6E'] = '\\u0628\\u0649';\n t['\\uFC6F'] = '\\u0628\\u064A';\n t['\\uFC70'] = '\\u062A\\u0631';\n t['\\uFC71'] = '\\u062A\\u0632';\n t['\\uFC72'] = '\\u062A\\u0645';\n t['\\uFC73'] = '\\u062A\\u0646';\n t['\\uFC74'] = '\\u062A\\u0649';\n t['\\uFC75'] = '\\u062A\\u064A';\n t['\\uFC76'] = '\\u062B\\u0631';\n t['\\uFC77'] = '\\u062B\\u0632';\n t['\\uFC78'] = '\\u062B\\u0645';\n t['\\uFC79'] = '\\u062B\\u0646';\n t['\\uFC7A'] = '\\u062B\\u0649';\n t['\\uFC7B'] = '\\u062B\\u064A';\n t['\\uFC7C'] = '\\u0641\\u0649';\n t['\\uFC7D'] = '\\u0641\\u064A';\n t['\\uFC7E'] = '\\u0642\\u0649';\n t['\\uFC7F'] = '\\u0642\\u064A';\n t['\\uFC80'] = '\\u0643\\u0627';\n t['\\uFC81'] = '\\u0643\\u0644';\n t['\\uFC82'] = '\\u0643\\u0645';\n t['\\uFC83'] = '\\u0643\\u0649';\n t['\\uFC84'] = '\\u0643\\u064A';\n t['\\uFC85'] = '\\u0644\\u0645';\n t['\\uFC86'] = '\\u0644\\u0649';\n t['\\uFC87'] = '\\u0644\\u064A';\n t['\\uFC88'] = '\\u0645\\u0627';\n t['\\uFC89'] = '\\u0645\\u0645';\n t['\\uFC8A'] = '\\u0646\\u0631';\n t['\\uFC8B'] = '\\u0646\\u0632';\n t['\\uFC8C'] = '\\u0646\\u0645';\n t['\\uFC8D'] = '\\u0646\\u0646';\n t['\\uFC8E'] = '\\u0646\\u0649';\n t['\\uFC8F'] = '\\u0646\\u064A';\n t['\\uFC90'] = '\\u0649\\u0670';\n t['\\uFC91'] = '\\u064A\\u0631';\n t['\\uFC92'] = '\\u064A\\u0632';\n t['\\uFC93'] = '\\u064A\\u0645';\n t['\\uFC94'] = '\\u064A\\u0646';\n t['\\uFC95'] = '\\u064A\\u0649';\n t['\\uFC96'] = '\\u064A\\u064A';\n t['\\uFC97'] = '\\u0626\\u062C';\n t['\\uFC98'] = '\\u0626\\u062D';\n t['\\uFC99'] = '\\u0626\\u062E';\n t['\\uFC9A'] = '\\u0626\\u0645';\n t['\\uFC9B'] = '\\u0626\\u0647';\n t['\\uFC9C'] = '\\u0628\\u062C';\n t['\\uFC9D'] = '\\u0628\\u062D';\n t['\\uFC9E'] = '\\u0628\\u062E';\n t['\\uFC9F'] = '\\u0628\\u0645';\n t['\\uFCA0'] = '\\u0628\\u0647';\n t['\\uFCA1'] = '\\u062A\\u062C';\n t['\\uFCA2'] = '\\u062A\\u062D';\n t['\\uFCA3'] = '\\u062A\\u062E';\n t['\\uFCA4'] = '\\u062A\\u0645';\n t['\\uFCA5'] = '\\u062A\\u0647';\n t['\\uFCA6'] = '\\u062B\\u0645';\n t['\\uFCA7'] = '\\u062C\\u062D';\n t['\\uFCA8'] = '\\u062C\\u0645';\n t['\\uFCA9'] = '\\u062D\\u062C';\n t['\\uFCAA'] = '\\u062D\\u0645';\n t['\\uFCAB'] = '\\u062E\\u062C';\n t['\\uFCAC'] = '\\u062E\\u0645';\n t['\\uFCAD'] = '\\u0633\\u062C';\n t['\\uFCAE'] = '\\u0633\\u062D';\n t['\\uFCAF'] = '\\u0633\\u062E';\n t['\\uFCB0'] = '\\u0633\\u0645';\n t['\\uFCB1'] = '\\u0635\\u062D';\n t['\\uFCB2'] = '\\u0635\\u062E';\n t['\\uFCB3'] = '\\u0635\\u0645';\n t['\\uFCB4'] = '\\u0636\\u062C';\n t['\\uFCB5'] = '\\u0636\\u062D';\n t['\\uFCB6'] = '\\u0636\\u062E';\n t['\\uFCB7'] = '\\u0636\\u0645';\n t['\\uFCB8'] = '\\u0637\\u062D';\n t['\\uFCB9'] = '\\u0638\\u0645';\n t['\\uFCBA'] = '\\u0639\\u062C';\n t['\\uFCBB'] = '\\u0639\\u0645';\n t['\\uFCBC'] = '\\u063A\\u062C';\n t['\\uFCBD'] = '\\u063A\\u0645';\n t['\\uFCBE'] = '\\u0641\\u062C';\n t['\\uFCBF'] = '\\u0641\\u062D';\n t['\\uFCC0'] = '\\u0641\\u062E';\n t['\\uFCC1'] = '\\u0641\\u0645';\n t['\\uFCC2'] = '\\u0642\\u062D';\n t['\\uFCC3'] = '\\u0642\\u0645';\n t['\\uFCC4'] = '\\u0643\\u062C';\n t['\\uFCC5'] = '\\u0643\\u062D';\n t['\\uFCC6'] = '\\u0643\\u062E';\n t['\\uFCC7'] = '\\u0643\\u0644';\n t['\\uFCC8'] = '\\u0643\\u0645';\n t['\\uFCC9'] = '\\u0644\\u062C';\n t['\\uFCCA'] = '\\u0644\\u062D';\n t['\\uFCCB'] = '\\u0644\\u062E';\n t['\\uFCCC'] = '\\u0644\\u0645';\n t['\\uFCCD'] = '\\u0644\\u0647';\n t['\\uFCCE'] = '\\u0645\\u062C';\n t['\\uFCCF'] = '\\u0645\\u062D';\n t['\\uFCD0'] = '\\u0645\\u062E';\n t['\\uFCD1'] = '\\u0645\\u0645';\n t['\\uFCD2'] = '\\u0646\\u062C';\n t['\\uFCD3'] = '\\u0646\\u062D';\n t['\\uFCD4'] = '\\u0646\\u062E';\n t['\\uFCD5'] = '\\u0646\\u0645';\n t['\\uFCD6'] = '\\u0646\\u0647';\n t['\\uFCD7'] = '\\u0647\\u062C';\n t['\\uFCD8'] = '\\u0647\\u0645';\n t['\\uFCD9'] = '\\u0647\\u0670';\n t['\\uFCDA'] = '\\u064A\\u062C';\n t['\\uFCDB'] = '\\u064A\\u062D';\n t['\\uFCDC'] = '\\u064A\\u062E';\n t['\\uFCDD'] = '\\u064A\\u0645';\n t['\\uFCDE'] = '\\u064A\\u0647';\n t['\\uFCDF'] = '\\u0626\\u0645';\n t['\\uFCE0'] = '\\u0626\\u0647';\n t['\\uFCE1'] = '\\u0628\\u0645';\n t['\\uFCE2'] = '\\u0628\\u0647';\n t['\\uFCE3'] = '\\u062A\\u0645';\n t['\\uFCE4'] = '\\u062A\\u0647';\n t['\\uFCE5'] = '\\u062B\\u0645';\n t['\\uFCE6'] = '\\u062B\\u0647';\n t['\\uFCE7'] = '\\u0633\\u0645';\n t['\\uFCE8'] = '\\u0633\\u0647';\n t['\\uFCE9'] = '\\u0634\\u0645';\n t['\\uFCEA'] = '\\u0634\\u0647';\n t['\\uFCEB'] = '\\u0643\\u0644';\n t['\\uFCEC'] = '\\u0643\\u0645';\n t['\\uFCED'] = '\\u0644\\u0645';\n t['\\uFCEE'] = '\\u0646\\u0645';\n t['\\uFCEF'] = '\\u0646\\u0647';\n t['\\uFCF0'] = '\\u064A\\u0645';\n t['\\uFCF1'] = '\\u064A\\u0647';\n t['\\uFCF2'] = '\\u0640\\u064E\\u0651';\n t['\\uFCF3'] = '\\u0640\\u064F\\u0651';\n t['\\uFCF4'] = '\\u0640\\u0650\\u0651';\n t['\\uFCF5'] = '\\u0637\\u0649';\n t['\\uFCF6'] = '\\u0637\\u064A';\n t['\\uFCF7'] = '\\u0639\\u0649';\n t['\\uFCF8'] = '\\u0639\\u064A';\n t['\\uFCF9'] = '\\u063A\\u0649';\n t['\\uFCFA'] = '\\u063A\\u064A';\n t['\\uFCFB'] = '\\u0633\\u0649';\n t['\\uFCFC'] = '\\u0633\\u064A';\n t['\\uFCFD'] = '\\u0634\\u0649';\n t['\\uFCFE'] = '\\u0634\\u064A';\n t['\\uFCFF'] = '\\u062D\\u0649';\n t['\\uFD00'] = '\\u062D\\u064A';\n t['\\uFD01'] = '\\u062C\\u0649';\n t['\\uFD02'] = '\\u062C\\u064A';\n t['\\uFD03'] = '\\u062E\\u0649';\n t['\\uFD04'] = '\\u062E\\u064A';\n t['\\uFD05'] = '\\u0635\\u0649';\n t['\\uFD06'] = '\\u0635\\u064A';\n t['\\uFD07'] = '\\u0636\\u0649';\n t['\\uFD08'] = '\\u0636\\u064A';\n t['\\uFD09'] = '\\u0634\\u062C';\n t['\\uFD0A'] = '\\u0634\\u062D';\n t['\\uFD0B'] = '\\u0634\\u062E';\n t['\\uFD0C'] = '\\u0634\\u0645';\n t['\\uFD0D'] = '\\u0634\\u0631';\n t['\\uFD0E'] = '\\u0633\\u0631';\n t['\\uFD0F'] = '\\u0635\\u0631';\n t['\\uFD10'] = '\\u0636\\u0631';\n t['\\uFD11'] = '\\u0637\\u0649';\n t['\\uFD12'] = '\\u0637\\u064A';\n t['\\uFD13'] = '\\u0639\\u0649';\n t['\\uFD14'] = '\\u0639\\u064A';\n t['\\uFD15'] = '\\u063A\\u0649';\n t['\\uFD16'] = '\\u063A\\u064A';\n t['\\uFD17'] = '\\u0633\\u0649';\n t['\\uFD18'] = '\\u0633\\u064A';\n t['\\uFD19'] = '\\u0634\\u0649';\n t['\\uFD1A'] = '\\u0634\\u064A';\n t['\\uFD1B'] = '\\u062D\\u0649';\n t['\\uFD1C'] = '\\u062D\\u064A';\n t['\\uFD1D'] = '\\u062C\\u0649';\n t['\\uFD1E'] = '\\u062C\\u064A';\n t['\\uFD1F'] = '\\u062E\\u0649';\n t['\\uFD20'] = '\\u062E\\u064A';\n t['\\uFD21'] = '\\u0635\\u0649';\n t['\\uFD22'] = '\\u0635\\u064A';\n t['\\uFD23'] = '\\u0636\\u0649';\n t['\\uFD24'] = '\\u0636\\u064A';\n t['\\uFD25'] = '\\u0634\\u062C';\n t['\\uFD26'] = '\\u0634\\u062D';\n t['\\uFD27'] = '\\u0634\\u062E';\n t['\\uFD28'] = '\\u0634\\u0645';\n t['\\uFD29'] = '\\u0634\\u0631';\n t['\\uFD2A'] = '\\u0633\\u0631';\n t['\\uFD2B'] = '\\u0635\\u0631';\n t['\\uFD2C'] = '\\u0636\\u0631';\n t['\\uFD2D'] = '\\u0634\\u062C';\n t['\\uFD2E'] = '\\u0634\\u062D';\n t['\\uFD2F'] = '\\u0634\\u062E';\n t['\\uFD30'] = '\\u0634\\u0645';\n t['\\uFD31'] = '\\u0633\\u0647';\n t['\\uFD32'] = '\\u0634\\u0647';\n t['\\uFD33'] = '\\u0637\\u0645';\n t['\\uFD34'] = '\\u0633\\u062C';\n t['\\uFD35'] = '\\u0633\\u062D';\n t['\\uFD36'] = '\\u0633\\u062E';\n t['\\uFD37'] = '\\u0634\\u062C';\n t['\\uFD38'] = '\\u0634\\u062D';\n t['\\uFD39'] = '\\u0634\\u062E';\n t['\\uFD3A'] = '\\u0637\\u0645';\n t['\\uFD3B'] = '\\u0638\\u0645';\n t['\\uFD3C'] = '\\u0627\\u064B';\n t['\\uFD3D'] = '\\u0627\\u064B';\n t['\\uFD50'] = '\\u062A\\u062C\\u0645';\n t['\\uFD51'] = '\\u062A\\u062D\\u062C';\n t['\\uFD52'] = '\\u062A\\u062D\\u062C';\n t['\\uFD53'] = '\\u062A\\u062D\\u0645';\n t['\\uFD54'] = '\\u062A\\u062E\\u0645';\n t['\\uFD55'] = '\\u062A\\u0645\\u062C';\n t['\\uFD56'] = '\\u062A\\u0645\\u062D';\n t['\\uFD57'] = '\\u062A\\u0645\\u062E';\n t['\\uFD58'] = '\\u062C\\u0645\\u062D';\n t['\\uFD59'] = '\\u062C\\u0645\\u062D';\n t['\\uFD5A'] = '\\u062D\\u0645\\u064A';\n t['\\uFD5B'] = '\\u062D\\u0645\\u0649';\n t['\\uFD5C'] = '\\u0633\\u062D\\u062C';\n t['\\uFD5D'] = '\\u0633\\u062C\\u062D';\n t['\\uFD5E'] = '\\u0633\\u062C\\u0649';\n t['\\uFD5F'] = '\\u0633\\u0645\\u062D';\n t['\\uFD60'] = '\\u0633\\u0645\\u062D';\n t['\\uFD61'] = '\\u0633\\u0645\\u062C';\n t['\\uFD62'] = '\\u0633\\u0645\\u0645';\n t['\\uFD63'] = '\\u0633\\u0645\\u0645';\n t['\\uFD64'] = '\\u0635\\u062D\\u062D';\n t['\\uFD65'] = '\\u0635\\u062D\\u062D';\n t['\\uFD66'] = '\\u0635\\u0645\\u0645';\n t['\\uFD67'] = '\\u0634\\u062D\\u0645';\n t['\\uFD68'] = '\\u0634\\u062D\\u0645';\n t['\\uFD69'] = '\\u0634\\u062C\\u064A';\n t['\\uFD6A'] = '\\u0634\\u0645\\u062E';\n t['\\uFD6B'] = '\\u0634\\u0645\\u062E';\n t['\\uFD6C'] = '\\u0634\\u0645\\u0645';\n t['\\uFD6D'] = '\\u0634\\u0645\\u0645';\n t['\\uFD6E'] = '\\u0636\\u062D\\u0649';\n t['\\uFD6F'] = '\\u0636\\u062E\\u0645';\n t['\\uFD70'] = '\\u0636\\u062E\\u0645';\n t['\\uFD71'] = '\\u0637\\u0645\\u062D';\n t['\\uFD72'] = '\\u0637\\u0645\\u062D';\n t['\\uFD73'] = '\\u0637\\u0645\\u0645';\n t['\\uFD74'] = '\\u0637\\u0645\\u064A';\n t['\\uFD75'] = '\\u0639\\u062C\\u0645';\n t['\\uFD76'] = '\\u0639\\u0645\\u0645';\n t['\\uFD77'] = '\\u0639\\u0645\\u0645';\n t['\\uFD78'] = '\\u0639\\u0645\\u0649';\n t['\\uFD79'] = '\\u063A\\u0645\\u0645';\n t['\\uFD7A'] = '\\u063A\\u0645\\u064A';\n t['\\uFD7B'] = '\\u063A\\u0645\\u0649';\n t['\\uFD7C'] = '\\u0641\\u062E\\u0645';\n t['\\uFD7D'] = '\\u0641\\u062E\\u0645';\n t['\\uFD7E'] = '\\u0642\\u0645\\u062D';\n t['\\uFD7F'] = '\\u0642\\u0645\\u0645';\n t['\\uFD80'] = '\\u0644\\u062D\\u0645';\n t['\\uFD81'] = '\\u0644\\u062D\\u064A';\n t['\\uFD82'] = '\\u0644\\u062D\\u0649';\n t['\\uFD83'] = '\\u0644\\u062C\\u062C';\n t['\\uFD84'] = '\\u0644\\u062C\\u062C';\n t['\\uFD85'] = '\\u0644\\u062E\\u0645';\n t['\\uFD86'] = '\\u0644\\u062E\\u0645';\n t['\\uFD87'] = '\\u0644\\u0645\\u062D';\n t['\\uFD88'] = '\\u0644\\u0645\\u062D';\n t['\\uFD89'] = '\\u0645\\u062D\\u062C';\n t['\\uFD8A'] = '\\u0645\\u062D\\u0645';\n t['\\uFD8B'] = '\\u0645\\u062D\\u064A';\n t['\\uFD8C'] = '\\u0645\\u062C\\u062D';\n t['\\uFD8D'] = '\\u0645\\u062C\\u0645';\n t['\\uFD8E'] = '\\u0645\\u062E\\u062C';\n t['\\uFD8F'] = '\\u0645\\u062E\\u0645';\n t['\\uFD92'] = '\\u0645\\u062C\\u062E';\n t['\\uFD93'] = '\\u0647\\u0645\\u062C';\n t['\\uFD94'] = '\\u0647\\u0645\\u0645';\n t['\\uFD95'] = '\\u0646\\u062D\\u0645';\n t['\\uFD96'] = '\\u0646\\u062D\\u0649';\n t['\\uFD97'] = '\\u0646\\u062C\\u0645';\n t['\\uFD98'] = '\\u0646\\u062C\\u0645';\n t['\\uFD99'] = '\\u0646\\u062C\\u0649';\n t['\\uFD9A'] = '\\u0646\\u0645\\u064A';\n t['\\uFD9B'] = '\\u0646\\u0645\\u0649';\n t['\\uFD9C'] = '\\u064A\\u0645\\u0645';\n t['\\uFD9D'] = '\\u064A\\u0645\\u0645';\n t['\\uFD9E'] = '\\u0628\\u062E\\u064A';\n t['\\uFD9F'] = '\\u062A\\u062C\\u064A';\n t['\\uFDA0'] = '\\u062A\\u062C\\u0649';\n t['\\uFDA1'] = '\\u062A\\u062E\\u064A';\n t['\\uFDA2'] = '\\u062A\\u062E\\u0649';\n t['\\uFDA3'] = '\\u062A\\u0645\\u064A';\n t['\\uFDA4'] = '\\u062A\\u0645\\u0649';\n t['\\uFDA5'] = '\\u062C\\u0645\\u064A';\n t['\\uFDA6'] = '\\u062C\\u062D\\u0649';\n t['\\uFDA7'] = '\\u062C\\u0645\\u0649';\n t['\\uFDA8'] = '\\u0633\\u062E\\u0649';\n t['\\uFDA9'] = '\\u0635\\u062D\\u064A';\n t['\\uFDAA'] = '\\u0634\\u062D\\u064A';\n t['\\uFDAB'] = '\\u0636\\u062D\\u064A';\n t['\\uFDAC'] = '\\u0644\\u062C\\u064A';\n t['\\uFDAD'] = '\\u0644\\u0645\\u064A';\n t['\\uFDAE'] = '\\u064A\\u062D\\u064A';\n t['\\uFDAF'] = '\\u064A\\u062C\\u064A';\n t['\\uFDB0'] = '\\u064A\\u0645\\u064A';\n t['\\uFDB1'] = '\\u0645\\u0645\\u064A';\n t['\\uFDB2'] = '\\u0642\\u0645\\u064A';\n t['\\uFDB3'] = '\\u0646\\u062D\\u064A';\n t['\\uFDB4'] = '\\u0642\\u0645\\u062D';\n t['\\uFDB5'] = '\\u0644\\u062D\\u0645';\n t['\\uFDB6'] = '\\u0639\\u0645\\u064A';\n t['\\uFDB7'] = '\\u0643\\u0645\\u064A';\n t['\\uFDB8'] = '\\u0646\\u062C\\u062D';\n t['\\uFDB9'] = '\\u0645\\u062E\\u064A';\n t['\\uFDBA'] = '\\u0644\\u062C\\u0645';\n t['\\uFDBB'] = '\\u0643\\u0645\\u0645';\n t['\\uFDBC'] = '\\u0644\\u062C\\u0645';\n t['\\uFDBD'] = '\\u0646\\u062C\\u062D';\n t['\\uFDBE'] = '\\u062C\\u062D\\u064A';\n t['\\uFDBF'] = '\\u062D\\u062C\\u064A';\n t['\\uFDC0'] = '\\u0645\\u062C\\u064A';\n t['\\uFDC1'] = '\\u0641\\u0645\\u064A';\n t['\\uFDC2'] = '\\u0628\\u062D\\u064A';\n t['\\uFDC3'] = '\\u0643\\u0645\\u0645';\n t['\\uFDC4'] = '\\u0639\\u062C\\u0645';\n t['\\uFDC5'] = '\\u0635\\u0645\\u0645';\n t['\\uFDC6'] = '\\u0633\\u062E\\u064A';\n t['\\uFDC7'] = '\\u0646\\u062C\\u064A';\n t['\\uFE49'] = '\\u203E';\n t['\\uFE4A'] = '\\u203E';\n t['\\uFE4B'] = '\\u203E';\n t['\\uFE4C'] = '\\u203E';\n t['\\uFE4D'] = '\\u005F';\n t['\\uFE4E'] = '\\u005F';\n t['\\uFE4F'] = '\\u005F';\n t['\\uFE80'] = '\\u0621';\n t['\\uFE81'] = '\\u0622';\n t['\\uFE82'] = '\\u0622';\n t['\\uFE83'] = '\\u0623';\n t['\\uFE84'] = '\\u0623';\n t['\\uFE85'] = '\\u0624';\n t['\\uFE86'] = '\\u0624';\n t['\\uFE87'] = '\\u0625';\n t['\\uFE88'] = '\\u0625';\n t['\\uFE89'] = '\\u0626';\n t['\\uFE8A'] = '\\u0626';\n t['\\uFE8B'] = '\\u0626';\n t['\\uFE8C'] = '\\u0626';\n t['\\uFE8D'] = '\\u0627';\n t['\\uFE8E'] = '\\u0627';\n t['\\uFE8F'] = '\\u0628';\n t['\\uFE90'] = '\\u0628';\n t['\\uFE91'] = '\\u0628';\n t['\\uFE92'] = '\\u0628';\n t['\\uFE93'] = '\\u0629';\n t['\\uFE94'] = '\\u0629';\n t['\\uFE95'] = '\\u062A';\n t['\\uFE96'] = '\\u062A';\n t['\\uFE97'] = '\\u062A';\n t['\\uFE98'] = '\\u062A';\n t['\\uFE99'] = '\\u062B';\n t['\\uFE9A'] = '\\u062B';\n t['\\uFE9B'] = '\\u062B';\n t['\\uFE9C'] = '\\u062B';\n t['\\uFE9D'] = '\\u062C';\n t['\\uFE9E'] = '\\u062C';\n t['\\uFE9F'] = '\\u062C';\n t['\\uFEA0'] = '\\u062C';\n t['\\uFEA1'] = '\\u062D';\n t['\\uFEA2'] = '\\u062D';\n t['\\uFEA3'] = '\\u062D';\n t['\\uFEA4'] = '\\u062D';\n t['\\uFEA5'] = '\\u062E';\n t['\\uFEA6'] = '\\u062E';\n t['\\uFEA7'] = '\\u062E';\n t['\\uFEA8'] = '\\u062E';\n t['\\uFEA9'] = '\\u062F';\n t['\\uFEAA'] = '\\u062F';\n t['\\uFEAB'] = '\\u0630';\n t['\\uFEAC'] = '\\u0630';\n t['\\uFEAD'] = '\\u0631';\n t['\\uFEAE'] = '\\u0631';\n t['\\uFEAF'] = '\\u0632';\n t['\\uFEB0'] = '\\u0632';\n t['\\uFEB1'] = '\\u0633';\n t['\\uFEB2'] = '\\u0633';\n t['\\uFEB3'] = '\\u0633';\n t['\\uFEB4'] = '\\u0633';\n t['\\uFEB5'] = '\\u0634';\n t['\\uFEB6'] = '\\u0634';\n t['\\uFEB7'] = '\\u0634';\n t['\\uFEB8'] = '\\u0634';\n t['\\uFEB9'] = '\\u0635';\n t['\\uFEBA'] = '\\u0635';\n t['\\uFEBB'] = '\\u0635';\n t['\\uFEBC'] = '\\u0635';\n t['\\uFEBD'] = '\\u0636';\n t['\\uFEBE'] = '\\u0636';\n t['\\uFEBF'] = '\\u0636';\n t['\\uFEC0'] = '\\u0636';\n t['\\uFEC1'] = '\\u0637';\n t['\\uFEC2'] = '\\u0637';\n t['\\uFEC3'] = '\\u0637';\n t['\\uFEC4'] = '\\u0637';\n t['\\uFEC5'] = '\\u0638';\n t['\\uFEC6'] = '\\u0638';\n t['\\uFEC7'] = '\\u0638';\n t['\\uFEC8'] = '\\u0638';\n t['\\uFEC9'] = '\\u0639';\n t['\\uFECA'] = '\\u0639';\n t['\\uFECB'] = '\\u0639';\n t['\\uFECC'] = '\\u0639';\n t['\\uFECD'] = '\\u063A';\n t['\\uFECE'] = '\\u063A';\n t['\\uFECF'] = '\\u063A';\n t['\\uFED0'] = '\\u063A';\n t['\\uFED1'] = '\\u0641';\n t['\\uFED2'] = '\\u0641';\n t['\\uFED3'] = '\\u0641';\n t['\\uFED4'] = '\\u0641';\n t['\\uFED5'] = '\\u0642';\n t['\\uFED6'] = '\\u0642';\n t['\\uFED7'] = '\\u0642';\n t['\\uFED8'] = '\\u0642';\n t['\\uFED9'] = '\\u0643';\n t['\\uFEDA'] = '\\u0643';\n t['\\uFEDB'] = '\\u0643';\n t['\\uFEDC'] = '\\u0643';\n t['\\uFEDD'] = '\\u0644';\n t['\\uFEDE'] = '\\u0644';\n t['\\uFEDF'] = '\\u0644';\n t['\\uFEE0'] = '\\u0644';\n t['\\uFEE1'] = '\\u0645';\n t['\\uFEE2'] = '\\u0645';\n t['\\uFEE3'] = '\\u0645';\n t['\\uFEE4'] = '\\u0645';\n t['\\uFEE5'] = '\\u0646';\n t['\\uFEE6'] = '\\u0646';\n t['\\uFEE7'] = '\\u0646';\n t['\\uFEE8'] = '\\u0646';\n t['\\uFEE9'] = '\\u0647';\n t['\\uFEEA'] = '\\u0647';\n t['\\uFEEB'] = '\\u0647';\n t['\\uFEEC'] = '\\u0647';\n t['\\uFEED'] = '\\u0648';\n t['\\uFEEE'] = '\\u0648';\n t['\\uFEEF'] = '\\u0649';\n t['\\uFEF0'] = '\\u0649';\n t['\\uFEF1'] = '\\u064A';\n t['\\uFEF2'] = '\\u064A';\n t['\\uFEF3'] = '\\u064A';\n t['\\uFEF4'] = '\\u064A';\n t['\\uFEF5'] = '\\u0644\\u0622';\n t['\\uFEF6'] = '\\u0644\\u0622';\n t['\\uFEF7'] = '\\u0644\\u0623';\n t['\\uFEF8'] = '\\u0644\\u0623';\n t['\\uFEF9'] = '\\u0644\\u0625';\n t['\\uFEFA'] = '\\u0644\\u0625';\n t['\\uFEFB'] = '\\u0644\\u0627';\n t['\\uFEFC'] = '\\u0644\\u0627';\n});\n\nfunction reverseIfRtl(chars) {\n var charsLength = chars.length;\n // Reverse an arabic ligature.\n if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {\n return chars;\n }\n var s = '';\n for (var ii = charsLength - 1; ii >= 0; ii--) {\n s += chars[ii];\n }\n return s;\n}\n\nexports.mapSpecialUnicodeValues = mapSpecialUnicodeValues;\nexports.reverseIfRtl = reverseIfRtl;\nexports.getUnicodeRangeFor = getUnicodeRangeFor;\nexports.getNormalizedUnicodes = getNormalizedUnicodes;\nexports.getUnicodeForGlyph = getUnicodeForGlyph;\n\n\n\n// WEBPACK FOOTER //\n// src/core/unicode.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* This class implements the QM Coder decoding as defined in\n * JPEG 2000 Part I Final Committee Draft Version 1.0\n * Annex C.3 Arithmetic decoding procedure\n * available at http://www.jpeg.org/public/fcd15444-1.pdf\n *\n * The arithmetic decoder is used in conjunction with context models to decode\n * JPEG2000 and JBIG2 streams.\n */\nvar ArithmeticDecoder = (function ArithmeticDecoderClosure() {\n // Table C-2\n var QeTable = [\n { qe: 0x5601, nmps: 1, nlps: 1, switchFlag: 1, },\n { qe: 0x3401, nmps: 2, nlps: 6, switchFlag: 0, },\n { qe: 0x1801, nmps: 3, nlps: 9, switchFlag: 0, },\n { qe: 0x0AC1, nmps: 4, nlps: 12, switchFlag: 0, },\n { qe: 0x0521, nmps: 5, nlps: 29, switchFlag: 0, },\n { qe: 0x0221, nmps: 38, nlps: 33, switchFlag: 0, },\n { qe: 0x5601, nmps: 7, nlps: 6, switchFlag: 1, },\n { qe: 0x5401, nmps: 8, nlps: 14, switchFlag: 0, },\n { qe: 0x4801, nmps: 9, nlps: 14, switchFlag: 0, },\n { qe: 0x3801, nmps: 10, nlps: 14, switchFlag: 0, },\n { qe: 0x3001, nmps: 11, nlps: 17, switchFlag: 0, },\n { qe: 0x2401, nmps: 12, nlps: 18, switchFlag: 0, },\n { qe: 0x1C01, nmps: 13, nlps: 20, switchFlag: 0, },\n { qe: 0x1601, nmps: 29, nlps: 21, switchFlag: 0, },\n { qe: 0x5601, nmps: 15, nlps: 14, switchFlag: 1, },\n { qe: 0x5401, nmps: 16, nlps: 14, switchFlag: 0, },\n { qe: 0x5101, nmps: 17, nlps: 15, switchFlag: 0, },\n { qe: 0x4801, nmps: 18, nlps: 16, switchFlag: 0, },\n { qe: 0x3801, nmps: 19, nlps: 17, switchFlag: 0, },\n { qe: 0x3401, nmps: 20, nlps: 18, switchFlag: 0, },\n { qe: 0x3001, nmps: 21, nlps: 19, switchFlag: 0, },\n { qe: 0x2801, nmps: 22, nlps: 19, switchFlag: 0, },\n { qe: 0x2401, nmps: 23, nlps: 20, switchFlag: 0, },\n { qe: 0x2201, nmps: 24, nlps: 21, switchFlag: 0, },\n { qe: 0x1C01, nmps: 25, nlps: 22, switchFlag: 0, },\n { qe: 0x1801, nmps: 26, nlps: 23, switchFlag: 0, },\n { qe: 0x1601, nmps: 27, nlps: 24, switchFlag: 0, },\n { qe: 0x1401, nmps: 28, nlps: 25, switchFlag: 0, },\n { qe: 0x1201, nmps: 29, nlps: 26, switchFlag: 0, },\n { qe: 0x1101, nmps: 30, nlps: 27, switchFlag: 0, },\n { qe: 0x0AC1, nmps: 31, nlps: 28, switchFlag: 0, },\n { qe: 0x09C1, nmps: 32, nlps: 29, switchFlag: 0, },\n { qe: 0x08A1, nmps: 33, nlps: 30, switchFlag: 0, },\n { qe: 0x0521, nmps: 34, nlps: 31, switchFlag: 0, },\n { qe: 0x0441, nmps: 35, nlps: 32, switchFlag: 0, },\n { qe: 0x02A1, nmps: 36, nlps: 33, switchFlag: 0, },\n { qe: 0x0221, nmps: 37, nlps: 34, switchFlag: 0, },\n { qe: 0x0141, nmps: 38, nlps: 35, switchFlag: 0, },\n { qe: 0x0111, nmps: 39, nlps: 36, switchFlag: 0, },\n { qe: 0x0085, nmps: 40, nlps: 37, switchFlag: 0, },\n { qe: 0x0049, nmps: 41, nlps: 38, switchFlag: 0, },\n { qe: 0x0025, nmps: 42, nlps: 39, switchFlag: 0, },\n { qe: 0x0015, nmps: 43, nlps: 40, switchFlag: 0, },\n { qe: 0x0009, nmps: 44, nlps: 41, switchFlag: 0, },\n { qe: 0x0005, nmps: 45, nlps: 42, switchFlag: 0, },\n { qe: 0x0001, nmps: 45, nlps: 43, switchFlag: 0, },\n { qe: 0x5601, nmps: 46, nlps: 46, switchFlag: 0, }\n ];\n\n // C.3.5 Initialisation of the decoder (INITDEC)\n function ArithmeticDecoder(data, start, end) {\n this.data = data;\n this.bp = start;\n this.dataEnd = end;\n\n this.chigh = data[start];\n this.clow = 0;\n\n this.byteIn();\n\n this.chigh = ((this.chigh << 7) & 0xFFFF) | ((this.clow >> 9) & 0x7F);\n this.clow = (this.clow << 7) & 0xFFFF;\n this.ct -= 7;\n this.a = 0x8000;\n }\n\n ArithmeticDecoder.prototype = {\n // C.3.4 Compressed data input (BYTEIN)\n byteIn: function ArithmeticDecoder_byteIn() {\n var data = this.data;\n var bp = this.bp;\n if (data[bp] === 0xFF) {\n var b1 = data[bp + 1];\n if (b1 > 0x8F) {\n this.clow += 0xFF00;\n this.ct = 8;\n } else {\n bp++;\n this.clow += (data[bp] << 9);\n this.ct = 7;\n this.bp = bp;\n }\n } else {\n bp++;\n this.clow += bp < this.dataEnd ? (data[bp] << 8) : 0xFF00;\n this.ct = 8;\n this.bp = bp;\n }\n if (this.clow > 0xFFFF) {\n this.chigh += (this.clow >> 16);\n this.clow &= 0xFFFF;\n }\n },\n // C.3.2 Decoding a decision (DECODE)\n readBit: function ArithmeticDecoder_readBit(contexts, pos) {\n // contexts are packed into 1 byte:\n // highest 7 bits carry cx.index, lowest bit carries cx.mps\n var cx_index = contexts[pos] >> 1, cx_mps = contexts[pos] & 1;\n var qeTableIcx = QeTable[cx_index];\n var qeIcx = qeTableIcx.qe;\n var d;\n var a = this.a - qeIcx;\n\n if (this.chigh < qeIcx) {\n // exchangeLps\n if (a < qeIcx) {\n a = qeIcx;\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n } else {\n a = qeIcx;\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n }\n } else {\n this.chigh -= qeIcx;\n if ((a & 0x8000) !== 0) {\n this.a = a;\n return cx_mps;\n }\n // exchangeMps\n if (a < qeIcx) {\n d = 1 ^ cx_mps;\n if (qeTableIcx.switchFlag === 1) {\n cx_mps = d;\n }\n cx_index = qeTableIcx.nlps;\n } else {\n d = cx_mps;\n cx_index = qeTableIcx.nmps;\n }\n }\n // C.3.3 renormD;\n do {\n if (this.ct === 0) {\n this.byteIn();\n }\n\n a <<= 1;\n this.chigh = ((this.chigh << 1) & 0xFFFF) | ((this.clow >> 15) & 1);\n this.clow = (this.clow << 1) & 0xFFFF;\n this.ct--;\n } while ((a & 0x8000) === 0);\n this.a = a;\n\n contexts[pos] = cx_index << 1 | cx_mps;\n return d;\n },\n };\n\n return ArithmeticDecoder;\n})();\n\nexport {\n ArithmeticDecoder,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/arithmetic_decoder.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString, FormatError, info, isArray, stringToBytes, Util, warn\n} from '../shared/util';\nimport {\n ExpertCharset, ExpertSubsetCharset, ISOAdobeCharset\n} from './charsets';\nimport { ExpertEncoding, StandardEncoding } from './encodings';\n\n// Maximum subroutine call depth of type 2 chartrings. Matches OTS.\nvar MAX_SUBR_NESTING = 10;\n\n/**\n * The CFF class takes a Type1 file and wrap it into a\n * 'Compact Font Format' which itself embed Type2 charstrings.\n */\nvar CFFStandardStrings = [\n '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent',\n 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus',\n 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four',\n 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less',\n 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',\n 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',\n 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum',\n 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\n 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',\n 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase',\n 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown',\n 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent',\n 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash',\n 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae',\n 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior',\n 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn',\n 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters',\n 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior',\n 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring',\n 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave',\n 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute',\n 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute',\n 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron',\n 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde',\n 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute',\n 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex',\n 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex',\n 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall',\n 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall',\n 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle',\n 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle',\n 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior',\n 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior',\n 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior',\n 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior',\n 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall',\n 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall',\n 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall',\n 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall',\n 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah',\n 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall',\n 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall',\n 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior',\n 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth',\n 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds',\n 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior',\n 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior',\n 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior',\n 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior',\n 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior',\n 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall',\n 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall',\n 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall',\n 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall',\n 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall',\n 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall',\n 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall',\n 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003',\n 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'\n];\n\n\nvar CFFParser = (function CFFParserClosure() {\n var CharstringValidationData = [\n null,\n { id: 'hstem', min: 2, stackClearing: true, stem: true, },\n null,\n { id: 'vstem', min: 2, stackClearing: true, stem: true, },\n { id: 'vmoveto', min: 1, stackClearing: true, },\n { id: 'rlineto', min: 2, resetStack: true, },\n { id: 'hlineto', min: 1, resetStack: true, },\n { id: 'vlineto', min: 1, resetStack: true, },\n { id: 'rrcurveto', min: 6, resetStack: true, },\n null,\n { id: 'callsubr', min: 1, undefStack: true, },\n { id: 'return', min: 0, undefStack: true, },\n null, // 12\n null,\n { id: 'endchar', min: 0, stackClearing: true, },\n null,\n null,\n null,\n { id: 'hstemhm', min: 2, stackClearing: true, stem: true, },\n { id: 'hintmask', min: 0, stackClearing: true, },\n { id: 'cntrmask', min: 0, stackClearing: true, },\n { id: 'rmoveto', min: 2, stackClearing: true, },\n { id: 'hmoveto', min: 1, stackClearing: true, },\n { id: 'vstemhm', min: 2, stackClearing: true, stem: true, },\n { id: 'rcurveline', min: 8, resetStack: true, },\n { id: 'rlinecurve', min: 8, resetStack: true, },\n { id: 'vvcurveto', min: 4, resetStack: true, },\n { id: 'hhcurveto', min: 4, resetStack: true, },\n null, // shortint\n { id: 'callgsubr', min: 1, undefStack: true, },\n { id: 'vhcurveto', min: 4, resetStack: true, },\n { id: 'hvcurveto', min: 4, resetStack: true, }\n ];\n var CharstringValidationData12 = [\n null,\n null,\n null,\n { id: 'and', min: 2, stackDelta: -1, },\n { id: 'or', min: 2, stackDelta: -1, },\n { id: 'not', min: 1, stackDelta: 0, },\n null,\n null,\n null,\n { id: 'abs', min: 1, stackDelta: 0, },\n { id: 'add', min: 2, stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] + stack[index - 1];\n },\n },\n { id: 'sub', min: 2, stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] - stack[index - 1];\n },\n },\n { id: 'div', min: 2, stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] / stack[index - 1];\n },\n },\n null,\n { id: 'neg', min: 1, stackDelta: 0,\n stackFn: function stack_div(stack, index) {\n stack[index - 1] = -stack[index - 1];\n },\n },\n { id: 'eq', min: 2, stackDelta: -1, },\n null,\n null,\n { id: 'drop', min: 1, stackDelta: -1, },\n null,\n { id: 'put', min: 2, stackDelta: -2, },\n { id: 'get', min: 1, stackDelta: 0, },\n { id: 'ifelse', min: 4, stackDelta: -3, },\n { id: 'random', min: 0, stackDelta: 1, },\n { id: 'mul', min: 2, stackDelta: -1,\n stackFn: function stack_div(stack, index) {\n stack[index - 2] = stack[index - 2] * stack[index - 1];\n },\n },\n null,\n { id: 'sqrt', min: 1, stackDelta: 0, },\n { id: 'dup', min: 1, stackDelta: 1, },\n { id: 'exch', min: 2, stackDelta: 0, },\n { id: 'index', min: 2, stackDelta: 0, },\n { id: 'roll', min: 3, stackDelta: -2, },\n null,\n null,\n null,\n { id: 'hflex', min: 7, resetStack: true, },\n { id: 'flex', min: 13, resetStack: true, },\n { id: 'hflex1', min: 9, resetStack: true, },\n { id: 'flex1', min: 11, resetStack: true, }\n ];\n\n function CFFParser(file, properties, seacAnalysisEnabled) {\n this.bytes = file.getBytes();\n this.properties = properties;\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n }\n CFFParser.prototype = {\n parse: function CFFParser_parse() {\n var properties = this.properties;\n var cff = new CFF();\n this.cff = cff;\n\n // The first five sections must be in order, all the others are reached\n // via offsets contained in one of the below.\n var header = this.parseHeader();\n var nameIndex = this.parseIndex(header.endPos);\n var topDictIndex = this.parseIndex(nameIndex.endPos);\n var stringIndex = this.parseIndex(topDictIndex.endPos);\n var globalSubrIndex = this.parseIndex(stringIndex.endPos);\n\n var topDictParsed = this.parseDict(topDictIndex.obj.get(0));\n var topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);\n\n cff.header = header.obj;\n cff.names = this.parseNameIndex(nameIndex.obj);\n cff.strings = this.parseStringIndex(stringIndex.obj);\n cff.topDict = topDict;\n cff.globalSubrIndex = globalSubrIndex.obj;\n\n this.parsePrivateDict(cff.topDict);\n\n cff.isCIDFont = topDict.hasName('ROS');\n\n var charStringOffset = topDict.getByName('CharStrings');\n var charStringIndex = this.parseIndex(charStringOffset).obj;\n\n var fontMatrix = topDict.getByName('FontMatrix');\n if (fontMatrix) {\n properties.fontMatrix = fontMatrix;\n }\n\n var fontBBox = topDict.getByName('FontBBox');\n if (fontBBox) {\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n }\n\n var charset, encoding;\n if (cff.isCIDFont) {\n var fdArrayIndex = this.parseIndex(topDict.getByName('FDArray')).obj;\n for (var i = 0, ii = fdArrayIndex.count; i < ii; ++i) {\n var dictRaw = fdArrayIndex.get(i);\n var fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw),\n cff.strings);\n this.parsePrivateDict(fontDict);\n cff.fdArray.push(fontDict);\n }\n // cid fonts don't have an encoding\n encoding = null;\n charset = this.parseCharsets(topDict.getByName('charset'),\n charStringIndex.count, cff.strings, true);\n cff.fdSelect = this.parseFDSelect(topDict.getByName('FDSelect'),\n charStringIndex.count);\n } else {\n charset = this.parseCharsets(topDict.getByName('charset'),\n charStringIndex.count, cff.strings, false);\n encoding = this.parseEncoding(topDict.getByName('Encoding'),\n properties,\n cff.strings, charset.charset);\n }\n\n cff.charset = charset;\n cff.encoding = encoding;\n\n var charStringsAndSeacs = this.parseCharStrings({\n charStrings: charStringIndex,\n localSubrIndex: topDict.privateDict.subrsIndex,\n globalSubrIndex: globalSubrIndex.obj,\n fdSelect: cff.fdSelect,\n fdArray: cff.fdArray,\n privateDict: topDict.privateDict,\n });\n cff.charStrings = charStringsAndSeacs.charStrings;\n cff.seacs = charStringsAndSeacs.seacs;\n cff.widths = charStringsAndSeacs.widths;\n\n return cff;\n },\n parseHeader: function CFFParser_parseHeader() {\n var bytes = this.bytes;\n var bytesLength = bytes.length;\n var offset = 0;\n\n // Prevent an infinite loop, by checking that the offset is within the\n // bounds of the bytes array. Necessary in empty, or invalid, font files.\n while (offset < bytesLength && bytes[offset] !== 1) {\n ++offset;\n }\n if (offset >= bytesLength) {\n throw new FormatError('Invalid CFF header');\n }\n if (offset !== 0) {\n info('cff data is shifted');\n bytes = bytes.subarray(offset);\n this.bytes = bytes;\n }\n var major = bytes[0];\n var minor = bytes[1];\n var hdrSize = bytes[2];\n var offSize = bytes[3];\n var header = new CFFHeader(major, minor, hdrSize, offSize);\n return { obj: header, endPos: hdrSize, };\n },\n parseDict: function CFFParser_parseDict(dict) {\n var pos = 0;\n\n function parseOperand() {\n var value = dict[pos++];\n if (value === 30) {\n return parseFloatOperand();\n } else if (value === 28) {\n value = dict[pos++];\n value = ((value << 24) | (dict[pos++] << 16)) >> 16;\n return value;\n } else if (value === 29) {\n value = dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n value = (value << 8) | dict[pos++];\n return value;\n } else if (value >= 32 && value <= 246) {\n return value - 139;\n } else if (value >= 247 && value <= 250) {\n return ((value - 247) * 256) + dict[pos++] + 108;\n } else if (value >= 251 && value <= 254) {\n return -((value - 251) * 256) - dict[pos++] - 108;\n }\n warn('CFFParser_parseDict: \"' + value + '\" is a reserved command.');\n return NaN;\n }\n\n function parseFloatOperand() {\n var str = '';\n var eof = 15;\n var lookup = ['0', '1', '2', '3', '4', '5', '6', '7', '8',\n '9', '.', 'E', 'E-', null, '-'];\n var length = dict.length;\n while (pos < length) {\n var b = dict[pos++];\n var b1 = b >> 4;\n var b2 = b & 15;\n\n if (b1 === eof) {\n break;\n }\n str += lookup[b1];\n\n if (b2 === eof) {\n break;\n }\n str += lookup[b2];\n }\n return parseFloat(str);\n }\n\n var operands = [];\n var entries = [];\n\n pos = 0;\n var end = dict.length;\n while (pos < end) {\n var b = dict[pos];\n if (b <= 21) {\n if (b === 12) {\n b = (b << 8) | dict[++pos];\n }\n entries.push([b, operands]);\n operands = [];\n ++pos;\n } else {\n operands.push(parseOperand());\n }\n }\n return entries;\n },\n parseIndex: function CFFParser_parseIndex(pos) {\n var cffIndex = new CFFIndex();\n var bytes = this.bytes;\n var count = (bytes[pos++] << 8) | bytes[pos++];\n var offsets = [];\n var end = pos;\n var i, ii;\n\n if (count !== 0) {\n var offsetSize = bytes[pos++];\n // add 1 for offset to determine size of last object\n var startPos = pos + ((count + 1) * offsetSize) - 1;\n\n for (i = 0, ii = count + 1; i < ii; ++i) {\n var offset = 0;\n for (var j = 0; j < offsetSize; ++j) {\n offset <<= 8;\n offset += bytes[pos++];\n }\n offsets.push(startPos + offset);\n }\n end = offsets[count];\n }\n for (i = 0, ii = offsets.length - 1; i < ii; ++i) {\n var offsetStart = offsets[i];\n var offsetEnd = offsets[i + 1];\n cffIndex.add(bytes.subarray(offsetStart, offsetEnd));\n }\n return { obj: cffIndex, endPos: end, };\n },\n parseNameIndex: function CFFParser_parseNameIndex(index) {\n var names = [];\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var name = index.get(i);\n // OTS doesn't allow names to be over 127 characters.\n var length = Math.min(name.length, 127);\n var data = [];\n // OTS also only permits certain characters in the name.\n for (var j = 0; j < length; ++j) {\n var c = name[j];\n if (j === 0 && c === 0) {\n data[j] = c;\n continue;\n }\n if ((c < 33 || c > 126) || c === 91 /* [ */ || c === 93 /* ] */ ||\n c === 40 /* ( */ || c === 41 /* ) */ || c === 123 /* { */ ||\n c === 125 /* } */ || c === 60 /* < */ || c === 62 /* > */ ||\n c === 47 /* / */ || c === 37 /* % */ || c === 35 /* # */) {\n data[j] = 95;\n continue;\n }\n data[j] = c;\n }\n names.push(bytesToString(data));\n }\n return names;\n },\n parseStringIndex: function CFFParser_parseStringIndex(index) {\n var strings = new CFFStrings();\n for (var i = 0, ii = index.count; i < ii; ++i) {\n var data = index.get(i);\n strings.add(bytesToString(data));\n }\n return strings;\n },\n createDict: function CFFParser_createDict(Type, dict, strings) {\n var cffDict = new Type(strings);\n for (var i = 0, ii = dict.length; i < ii; ++i) {\n var pair = dict[i];\n var key = pair[0];\n var value = pair[1];\n cffDict.setByKey(key, value);\n }\n return cffDict;\n },\n parseCharString: function CFFParser_parseCharString(state, data,\n localSubrIndex,\n globalSubrIndex) {\n if (!data || state.callDepth > MAX_SUBR_NESTING) {\n return false;\n }\n var stackSize = state.stackSize;\n var stack = state.stack;\n\n var length = data.length;\n\n for (var j = 0; j < length;) {\n var value = data[j++];\n var validationCommand = null;\n if (value === 12) {\n var q = data[j++];\n if (q === 0) {\n // The CFF specification state that the 'dotsection' command\n // (12, 0) is deprecated and treated as a no-op, but all Type2\n // charstrings processors should support them. Unfortunately\n // the font sanitizer don't. As a workaround the sequence (12, 0)\n // is replaced by a useless (0, hmoveto).\n data[j - 2] = 139;\n data[j - 1] = 22;\n stackSize = 0;\n } else {\n validationCommand = CharstringValidationData12[q];\n }\n } else if (value === 28) { // number (16 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16)) >> 16;\n j += 2;\n stackSize++;\n } else if (value === 14) {\n if (stackSize >= 4) {\n stackSize -= 4;\n if (this.seacAnalysisEnabled) {\n state.seac = stack.slice(stackSize, stackSize + 4);\n return false;\n }\n }\n validationCommand = CharstringValidationData[value];\n } else if (value >= 32 && value <= 246) { // number\n stack[stackSize] = value - 139;\n stackSize++;\n } else if (value >= 247 && value <= 254) { // number (+1 bytes)\n stack[stackSize] = (value < 251 ?\n ((value - 247) << 8) + data[j] + 108 :\n -((value - 251) << 8) - data[j] - 108);\n j++;\n stackSize++;\n } else if (value === 255) { // number (32 bit)\n stack[stackSize] = ((data[j] << 24) | (data[j + 1] << 16) |\n (data[j + 2] << 8) | data[j + 3]) / 65536;\n j += 4;\n stackSize++;\n } else if (value === 19 || value === 20) {\n state.hints += stackSize >> 1;\n // skipping right amount of hints flag data\n j += (state.hints + 7) >> 3;\n stackSize %= 2;\n validationCommand = CharstringValidationData[value];\n } else if (value === 10 || value === 29) {\n var subrsIndex;\n if (value === 10) {\n subrsIndex = localSubrIndex;\n } else {\n subrsIndex = globalSubrIndex;\n }\n if (!subrsIndex) {\n validationCommand = CharstringValidationData[value];\n warn('Missing subrsIndex for ' + validationCommand.id);\n return false;\n }\n var bias = 32768;\n if (subrsIndex.count < 1240) {\n bias = 107;\n } else if (subrsIndex.count < 33900) {\n bias = 1131;\n }\n var subrNumber = stack[--stackSize] + bias;\n if (subrNumber < 0 || subrNumber >= subrsIndex.count ||\n isNaN(subrNumber)) {\n validationCommand = CharstringValidationData[value];\n warn('Out of bounds subrIndex for ' + validationCommand.id);\n return false;\n }\n state.stackSize = stackSize;\n state.callDepth++;\n var valid = this.parseCharString(state, subrsIndex.get(subrNumber),\n localSubrIndex, globalSubrIndex);\n if (!valid) {\n return false;\n }\n state.callDepth--;\n stackSize = state.stackSize;\n continue;\n } else if (value === 11) {\n state.stackSize = stackSize;\n return true;\n } else {\n validationCommand = CharstringValidationData[value];\n }\n if (validationCommand) {\n if (validationCommand.stem) {\n state.hints += stackSize >> 1;\n }\n if ('min' in validationCommand) {\n if (!state.undefStack && stackSize < validationCommand.min) {\n warn('Not enough parameters for ' + validationCommand.id +\n '; actual: ' + stackSize +\n ', expected: ' + validationCommand.min);\n return false;\n }\n }\n if (state.firstStackClearing && validationCommand.stackClearing) {\n state.firstStackClearing = false;\n // the optional character width can be found before the first\n // stack-clearing command arguments\n stackSize -= validationCommand.min;\n if (stackSize >= 2 && validationCommand.stem) {\n // there are even amount of arguments for stem commands\n stackSize %= 2;\n } else if (stackSize > 1) {\n warn('Found too many parameters for stack-clearing command');\n }\n if (stackSize > 0 && stack[stackSize - 1] >= 0) {\n state.width = stack[stackSize - 1];\n }\n }\n if ('stackDelta' in validationCommand) {\n if ('stackFn' in validationCommand) {\n validationCommand.stackFn(stack, stackSize);\n }\n stackSize += validationCommand.stackDelta;\n } else if (validationCommand.stackClearing) {\n stackSize = 0;\n } else if (validationCommand.resetStack) {\n stackSize = 0;\n state.undefStack = false;\n } else if (validationCommand.undefStack) {\n stackSize = 0;\n state.undefStack = true;\n state.firstStackClearing = false;\n }\n }\n }\n state.stackSize = stackSize;\n return true;\n },\n parseCharStrings({ charStrings, localSubrIndex, globalSubrIndex, fdSelect,\n fdArray, privateDict, }) {\n var seacs = [];\n var widths = [];\n var count = charStrings.count;\n for (var i = 0; i < count; i++) {\n var charstring = charStrings.get(i);\n var state = {\n callDepth: 0,\n stackSize: 0,\n stack: [],\n undefStack: true,\n hints: 0,\n firstStackClearing: true,\n seac: null,\n width: null,\n };\n var valid = true;\n var localSubrToUse = null;\n var privateDictToUse = privateDict;\n if (fdSelect && fdArray.length) {\n var fdIndex = fdSelect.getFDIndex(i);\n if (fdIndex === -1) {\n warn('Glyph index is not in fd select.');\n valid = false;\n }\n if (fdIndex >= fdArray.length) {\n warn('Invalid fd index for glyph index.');\n valid = false;\n }\n if (valid) {\n privateDictToUse = fdArray[fdIndex].privateDict;\n localSubrToUse = privateDictToUse.subrsIndex;\n }\n } else if (localSubrIndex) {\n localSubrToUse = localSubrIndex;\n }\n if (valid) {\n valid = this.parseCharString(state, charstring, localSubrToUse,\n globalSubrIndex);\n }\n if (state.width !== null) {\n const nominalWidth = privateDictToUse.getByName('nominalWidthX');\n widths[i] = nominalWidth + state.width;\n } else {\n const defaultWidth = privateDictToUse.getByName('defaultWidthX');\n widths[i] = defaultWidth;\n }\n if (state.seac !== null) {\n seacs[i] = state.seac;\n }\n if (!valid) {\n // resetting invalid charstring to single 'endchar'\n charStrings.set(i, new Uint8Array([14]));\n }\n }\n return { charStrings, seacs, widths, };\n },\n emptyPrivateDictionary:\n function CFFParser_emptyPrivateDictionary(parentDict) {\n var privateDict = this.createDict(CFFPrivateDict, [],\n parentDict.strings);\n parentDict.setByKey(18, [0, 0]);\n parentDict.privateDict = privateDict;\n },\n parsePrivateDict: function CFFParser_parsePrivateDict(parentDict) {\n // no private dict, do nothing\n if (!parentDict.hasName('Private')) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n var privateOffset = parentDict.getByName('Private');\n // make sure the params are formatted correctly\n if (!isArray(privateOffset) || privateOffset.length !== 2) {\n parentDict.removeByName('Private');\n return;\n }\n var size = privateOffset[0];\n var offset = privateOffset[1];\n // remove empty dicts or ones that refer to invalid location\n if (size === 0 || offset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n\n var privateDictEnd = offset + size;\n var dictData = this.bytes.subarray(offset, privateDictEnd);\n var dict = this.parseDict(dictData);\n var privateDict = this.createDict(CFFPrivateDict, dict,\n parentDict.strings);\n parentDict.privateDict = privateDict;\n\n // Parse the Subrs index also since it's relative to the private dict.\n if (!privateDict.getByName('Subrs')) {\n return;\n }\n var subrsOffset = privateDict.getByName('Subrs');\n var relativeOffset = offset + subrsOffset;\n // Validate the offset.\n if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {\n this.emptyPrivateDictionary(parentDict);\n return;\n }\n var subrsIndex = this.parseIndex(relativeOffset);\n privateDict.subrsIndex = subrsIndex.obj;\n },\n parseCharsets: function CFFParser_parseCharsets(pos, length, strings, cid) {\n if (pos === 0) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.ISO_ADOBE,\n ISOAdobeCharset);\n } else if (pos === 1) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT,\n ExpertCharset);\n } else if (pos === 2) {\n return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET,\n ExpertSubsetCharset);\n }\n\n var bytes = this.bytes;\n var start = pos;\n var format = bytes[pos++];\n var charset = ['.notdef'];\n var id, count, i;\n\n // subtract 1 for the .notdef glyph\n length -= 1;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; i++) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n charset.push(cid ? id : strings.get(id));\n }\n break;\n case 1:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n case 2:\n while (charset.length <= length) {\n id = (bytes[pos++] << 8) | bytes[pos++];\n count = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i <= count; i++) {\n charset.push(cid ? id++ : strings.get(id++));\n }\n }\n break;\n default:\n throw new FormatError('Unknown charset format');\n }\n // Raw won't be needed if we actually compile the charset.\n var end = pos;\n var raw = bytes.subarray(start, end);\n\n return new CFFCharset(false, format, charset, raw);\n },\n parseEncoding: function CFFParser_parseEncoding(pos,\n properties,\n strings,\n charset) {\n var encoding = Object.create(null);\n var bytes = this.bytes;\n var predefined = false;\n var format, i, ii;\n var raw = null;\n\n function readSupplement() {\n var supplementsCount = bytes[pos++];\n for (i = 0; i < supplementsCount; i++) {\n var code = bytes[pos++];\n var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);\n encoding[code] = charset.indexOf(strings.get(sid));\n }\n }\n\n if (pos === 0 || pos === 1) {\n predefined = true;\n format = pos;\n var baseEncoding = pos ? ExpertEncoding : StandardEncoding;\n for (i = 0, ii = charset.length; i < ii; i++) {\n var index = baseEncoding.indexOf(charset[i]);\n if (index !== -1) {\n encoding[index] = i;\n }\n }\n } else {\n var dataStart = pos;\n format = bytes[pos++];\n switch (format & 0x7f) {\n case 0:\n var glyphsCount = bytes[pos++];\n for (i = 1; i <= glyphsCount; i++) {\n encoding[bytes[pos++]] = i;\n }\n break;\n\n case 1:\n var rangesCount = bytes[pos++];\n var gid = 1;\n for (i = 0; i < rangesCount; i++) {\n var start = bytes[pos++];\n var left = bytes[pos++];\n for (var j = start; j <= start + left; j++) {\n encoding[j] = gid++;\n }\n }\n break;\n\n default:\n throw new FormatError(`Unknown encoding format: ${format} in CFF`);\n }\n var dataEnd = pos;\n if (format & 0x80) { // hasSupplement\n // The font sanitizer does not support CFF encoding with a\n // supplement, since the encoding is not really used to map\n // between gid to glyph, let's overwrite what is declared in\n // the top dictionary to let the sanitizer think the font use\n // StandardEncoding, that's a lie but that's ok.\n bytes[dataStart] &= 0x7f;\n readSupplement();\n }\n raw = bytes.subarray(dataStart, dataEnd);\n }\n format = format & 0x7f;\n return new CFFEncoding(predefined, format, encoding, raw);\n },\n parseFDSelect: function CFFParser_parseFDSelect(pos, length) {\n var start = pos;\n var bytes = this.bytes;\n var format = bytes[pos++];\n var fdSelect = [], rawBytes;\n var i, invalidFirstGID = false;\n\n switch (format) {\n case 0:\n for (i = 0; i < length; ++i) {\n var id = bytes[pos++];\n fdSelect.push(id);\n }\n rawBytes = bytes.subarray(start, pos);\n break;\n case 3:\n var rangesCount = (bytes[pos++] << 8) | bytes[pos++];\n for (i = 0; i < rangesCount; ++i) {\n var first = (bytes[pos++] << 8) | bytes[pos++];\n if (i === 0 && first !== 0) {\n warn('parseFDSelect: The first range must have a first GID of 0' +\n ' -- trying to recover.');\n invalidFirstGID = true;\n first = 0;\n }\n var fdIndex = bytes[pos++];\n var next = (bytes[pos] << 8) | bytes[pos + 1];\n for (var j = first; j < next; ++j) {\n fdSelect.push(fdIndex);\n }\n }\n // Advance past the sentinel(next).\n pos += 2;\n rawBytes = bytes.subarray(start, pos);\n\n if (invalidFirstGID) {\n rawBytes[3] = rawBytes[4] = 0; // Adjust the first range, first GID.\n }\n break;\n default:\n throw new FormatError(`parseFDSelect: Unknown format \"${format}\".`);\n }\n if (fdSelect.length !== length) {\n throw new FormatError('parseFDSelect: Invalid font data.');\n }\n\n return new CFFFDSelect(fdSelect, rawBytes);\n },\n };\n return CFFParser;\n})();\n\n// Compact Font Format\nvar CFF = (function CFFClosure() {\n function CFF() {\n this.header = null;\n this.names = [];\n this.topDict = null;\n this.strings = new CFFStrings();\n this.globalSubrIndex = null;\n\n // The following could really be per font, but since we only have one font\n // store them here.\n this.encoding = null;\n this.charset = null;\n this.charStrings = null;\n this.fdArray = [];\n this.fdSelect = null;\n\n this.isCIDFont = false;\n }\n return CFF;\n})();\n\nvar CFFHeader = (function CFFHeaderClosure() {\n function CFFHeader(major, minor, hdrSize, offSize) {\n this.major = major;\n this.minor = minor;\n this.hdrSize = hdrSize;\n this.offSize = offSize;\n }\n return CFFHeader;\n})();\n\nvar CFFStrings = (function CFFStringsClosure() {\n function CFFStrings() {\n this.strings = [];\n }\n CFFStrings.prototype = {\n get: function CFFStrings_get(index) {\n if (index >= 0 && index <= 390) {\n return CFFStandardStrings[index];\n }\n if (index - 391 <= this.strings.length) {\n return this.strings[index - 391];\n }\n return CFFStandardStrings[0];\n },\n add: function CFFStrings_add(value) {\n this.strings.push(value);\n },\n get count() {\n return this.strings.length;\n },\n };\n return CFFStrings;\n})();\n\nvar CFFIndex = (function CFFIndexClosure() {\n function CFFIndex() {\n this.objects = [];\n this.length = 0;\n }\n CFFIndex.prototype = {\n add: function CFFIndex_add(data) {\n this.length += data.length;\n this.objects.push(data);\n },\n set: function CFFIndex_set(index, data) {\n this.length += data.length - this.objects[index].length;\n this.objects[index] = data;\n },\n get: function CFFIndex_get(index) {\n return this.objects[index];\n },\n get count() {\n return this.objects.length;\n },\n };\n return CFFIndex;\n})();\n\nvar CFFDict = (function CFFDictClosure() {\n function CFFDict(tables, strings) {\n this.keyToNameMap = tables.keyToNameMap;\n this.nameToKeyMap = tables.nameToKeyMap;\n this.defaults = tables.defaults;\n this.types = tables.types;\n this.opcodes = tables.opcodes;\n this.order = tables.order;\n this.strings = strings;\n this.values = Object.create(null);\n }\n CFFDict.prototype = {\n // value should always be an array\n setByKey: function CFFDict_setByKey(key, value) {\n if (!(key in this.keyToNameMap)) {\n return false;\n }\n var valueLength = value.length;\n // ignore empty values\n if (valueLength === 0) {\n return true;\n }\n // Ignore invalid values (fixes bug1068432.pdf and bug1308536.pdf).\n for (var i = 0; i < valueLength; i++) {\n if (isNaN(value[i])) {\n warn('Invalid CFFDict value: \"' + value + '\" for key \"' + key + '\".');\n return true;\n }\n }\n var type = this.types[key];\n // remove the array wrapping these types of values\n if (type === 'num' || type === 'sid' || type === 'offset') {\n value = value[0];\n }\n this.values[key] = value;\n return true;\n },\n setByName: function CFFDict_setByName(name, value) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name \"${name}\"`);\n }\n this.values[this.nameToKeyMap[name]] = value;\n },\n hasName: function CFFDict_hasName(name) {\n return this.nameToKeyMap[name] in this.values;\n },\n getByName: function CFFDict_getByName(name) {\n if (!(name in this.nameToKeyMap)) {\n throw new FormatError(`Invalid dictionary name ${name}\"`);\n }\n var key = this.nameToKeyMap[name];\n if (!(key in this.values)) {\n return this.defaults[key];\n }\n return this.values[key];\n },\n removeByName: function CFFDict_removeByName(name) {\n delete this.values[this.nameToKeyMap[name]];\n },\n };\n CFFDict.createTables = function CFFDict_createTables(layout) {\n var tables = {\n keyToNameMap: {},\n nameToKeyMap: {},\n defaults: {},\n types: {},\n opcodes: {},\n order: [],\n };\n for (var i = 0, ii = layout.length; i < ii; ++i) {\n var entry = layout[i];\n var key = isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];\n tables.keyToNameMap[key] = entry[1];\n tables.nameToKeyMap[entry[1]] = key;\n tables.types[key] = entry[2];\n tables.defaults[key] = entry[3];\n tables.opcodes[key] = isArray(entry[0]) ? entry[0] : [entry[0]];\n tables.order.push(key);\n }\n return tables;\n };\n return CFFDict;\n})();\n\nvar CFFTopDict = (function CFFTopDictClosure() {\n var layout = [\n [[12, 30], 'ROS', ['sid', 'sid', 'num'], null],\n [[12, 20], 'SyntheticBase', 'num', null],\n [0, 'version', 'sid', null],\n [1, 'Notice', 'sid', null],\n [[12, 0], 'Copyright', 'sid', null],\n [2, 'FullName', 'sid', null],\n [3, 'FamilyName', 'sid', null],\n [4, 'Weight', 'sid', null],\n [[12, 1], 'isFixedPitch', 'num', 0],\n [[12, 2], 'ItalicAngle', 'num', 0],\n [[12, 3], 'UnderlinePosition', 'num', -100],\n [[12, 4], 'UnderlineThickness', 'num', 50],\n [[12, 5], 'PaintType', 'num', 0],\n [[12, 6], 'CharstringType', 'num', 2],\n [[12, 7], 'FontMatrix', ['num', 'num', 'num', 'num', 'num', 'num'],\n [0.001, 0, 0, 0.001, 0, 0]],\n [13, 'UniqueID', 'num', null],\n [5, 'FontBBox', ['num', 'num', 'num', 'num'], [0, 0, 0, 0]],\n [[12, 8], 'StrokeWidth', 'num', 0],\n [14, 'XUID', 'array', null],\n [15, 'charset', 'offset', 0],\n [16, 'Encoding', 'offset', 0],\n [17, 'CharStrings', 'offset', 0],\n [18, 'Private', ['offset', 'offset'], null],\n [[12, 21], 'PostScript', 'sid', null],\n [[12, 22], 'BaseFontName', 'sid', null],\n [[12, 23], 'BaseFontBlend', 'delta', null],\n [[12, 31], 'CIDFontVersion', 'num', 0],\n [[12, 32], 'CIDFontRevision', 'num', 0],\n [[12, 33], 'CIDFontType', 'num', 0],\n [[12, 34], 'CIDCount', 'num', 8720],\n [[12, 35], 'UIDBase', 'num', null],\n // XXX: CID Fonts on DirectWrite 6.1 only seem to work if FDSelect comes\n // before FDArray.\n [[12, 37], 'FDSelect', 'offset', null],\n [[12, 36], 'FDArray', 'offset', null],\n [[12, 38], 'FontName', 'sid', null]\n ];\n var tables = null;\n function CFFTopDict(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n CFFDict.call(this, tables, strings);\n this.privateDict = null;\n }\n CFFTopDict.prototype = Object.create(CFFDict.prototype);\n return CFFTopDict;\n})();\n\nvar CFFPrivateDict = (function CFFPrivateDictClosure() {\n var layout = [\n [6, 'BlueValues', 'delta', null],\n [7, 'OtherBlues', 'delta', null],\n [8, 'FamilyBlues', 'delta', null],\n [9, 'FamilyOtherBlues', 'delta', null],\n [[12, 9], 'BlueScale', 'num', 0.039625],\n [[12, 10], 'BlueShift', 'num', 7],\n [[12, 11], 'BlueFuzz', 'num', 1],\n [10, 'StdHW', 'num', null],\n [11, 'StdVW', 'num', null],\n [[12, 12], 'StemSnapH', 'delta', null],\n [[12, 13], 'StemSnapV', 'delta', null],\n [[12, 14], 'ForceBold', 'num', 0],\n [[12, 17], 'LanguageGroup', 'num', 0],\n [[12, 18], 'ExpansionFactor', 'num', 0.06],\n [[12, 19], 'initialRandomSeed', 'num', 0],\n [20, 'defaultWidthX', 'num', 0],\n [21, 'nominalWidthX', 'num', 0],\n [19, 'Subrs', 'offset', null]\n ];\n var tables = null;\n function CFFPrivateDict(strings) {\n if (tables === null) {\n tables = CFFDict.createTables(layout);\n }\n CFFDict.call(this, tables, strings);\n this.subrsIndex = null;\n }\n CFFPrivateDict.prototype = Object.create(CFFDict.prototype);\n return CFFPrivateDict;\n})();\n\nvar CFFCharsetPredefinedTypes = {\n ISO_ADOBE: 0,\n EXPERT: 1,\n EXPERT_SUBSET: 2,\n};\nvar CFFCharset = (function CFFCharsetClosure() {\n function CFFCharset(predefined, format, charset, raw) {\n this.predefined = predefined;\n this.format = format;\n this.charset = charset;\n this.raw = raw;\n }\n return CFFCharset;\n})();\n\nvar CFFEncoding = (function CFFEncodingClosure() {\n function CFFEncoding(predefined, format, encoding, raw) {\n this.predefined = predefined;\n this.format = format;\n this.encoding = encoding;\n this.raw = raw;\n }\n return CFFEncoding;\n})();\n\nvar CFFFDSelect = (function CFFFDSelectClosure() {\n function CFFFDSelect(fdSelect, raw) {\n this.fdSelect = fdSelect;\n this.raw = raw;\n }\n CFFFDSelect.prototype = {\n getFDIndex: function CFFFDSelect_get(glyphIndex) {\n if (glyphIndex < 0 || glyphIndex >= this.fdSelect.length) {\n return -1;\n }\n return this.fdSelect[glyphIndex];\n },\n };\n return CFFFDSelect;\n})();\n\n// Helper class to keep track of where an offset is within the data and helps\n// filling in that offset once it's known.\nvar CFFOffsetTracker = (function CFFOffsetTrackerClosure() {\n function CFFOffsetTracker() {\n this.offsets = Object.create(null);\n }\n CFFOffsetTracker.prototype = {\n isTracking: function CFFOffsetTracker_isTracking(key) {\n return key in this.offsets;\n },\n track: function CFFOffsetTracker_track(key, location) {\n if (key in this.offsets) {\n throw new FormatError(`Already tracking location of ${key}`);\n }\n this.offsets[key] = location;\n },\n offset: function CFFOffsetTracker_offset(value) {\n for (var key in this.offsets) {\n this.offsets[key] += value;\n }\n },\n setEntryLocation: function CFFOffsetTracker_setEntryLocation(key,\n values,\n output) {\n if (!(key in this.offsets)) {\n throw new FormatError(`Not tracking location of ${key}`);\n }\n var data = output.data;\n var dataOffset = this.offsets[key];\n var size = 5;\n for (var i = 0, ii = values.length; i < ii; ++i) {\n var offset0 = i * size + dataOffset;\n var offset1 = offset0 + 1;\n var offset2 = offset0 + 2;\n var offset3 = offset0 + 3;\n var offset4 = offset0 + 4;\n // It's easy to screw up offsets so perform this sanity check.\n if (data[offset0] !== 0x1d || data[offset1] !== 0 ||\n data[offset2] !== 0 || data[offset3] !== 0 || data[offset4] !== 0) {\n throw new FormatError('writing to an offset that is not empty');\n }\n var value = values[i];\n data[offset0] = 0x1d;\n data[offset1] = (value >> 24) & 0xFF;\n data[offset2] = (value >> 16) & 0xFF;\n data[offset3] = (value >> 8) & 0xFF;\n data[offset4] = value & 0xFF;\n }\n },\n };\n return CFFOffsetTracker;\n})();\n\n// Takes a CFF and converts it to the binary representation.\nvar CFFCompiler = (function CFFCompilerClosure() {\n function CFFCompiler(cff) {\n this.cff = cff;\n }\n CFFCompiler.prototype = {\n compile: function CFFCompiler_compile() {\n var cff = this.cff;\n var output = {\n data: [],\n length: 0,\n add: function CFFCompiler_add(data) {\n this.data = this.data.concat(data);\n this.length = this.data.length;\n },\n };\n\n // Compile the five entries that must be in order.\n var header = this.compileHeader(cff.header);\n output.add(header);\n\n var nameIndex = this.compileNameIndex(cff.names);\n output.add(nameIndex);\n\n if (cff.isCIDFont) {\n // The spec is unclear on how font matrices should relate to each other\n // when there is one in the main top dict and the sub top dicts.\n // Windows handles this differently than linux and osx so we have to\n // normalize to work on all.\n // Rules based off of some mailing list discussions:\n // - If main font has a matrix and subfont doesn't, use the main matrix.\n // - If no main font matrix and there is a subfont matrix, use the\n // subfont matrix.\n // - If both have matrices, concat together.\n // - If neither have matrices, use default.\n // To make this work on all platforms we move the top matrix into each\n // sub top dict and concat if necessary.\n if (cff.topDict.hasName('FontMatrix')) {\n var base = cff.topDict.getByName('FontMatrix');\n cff.topDict.removeByName('FontMatrix');\n for (var i = 0, ii = cff.fdArray.length; i < ii; i++) {\n var subDict = cff.fdArray[i];\n var matrix = base.slice(0);\n if (subDict.hasName('FontMatrix')) {\n matrix = Util.transform(matrix, subDict.getByName('FontMatrix'));\n }\n subDict.setByName('FontMatrix', matrix);\n }\n }\n }\n\n var compiled = this.compileTopDicts([cff.topDict],\n output.length,\n cff.isCIDFont);\n output.add(compiled.output);\n var topDictTracker = compiled.trackers[0];\n\n var stringIndex = this.compileStringIndex(cff.strings.strings);\n output.add(stringIndex);\n\n var globalSubrIndex = this.compileIndex(cff.globalSubrIndex);\n output.add(globalSubrIndex);\n\n // Now start on the other entries that have no specific order.\n if (cff.encoding && cff.topDict.hasName('Encoding')) {\n if (cff.encoding.predefined) {\n topDictTracker.setEntryLocation('Encoding', [cff.encoding.format],\n output);\n } else {\n var encoding = this.compileEncoding(cff.encoding);\n topDictTracker.setEntryLocation('Encoding', [output.length], output);\n output.add(encoding);\n }\n }\n\n if (cff.charset && cff.topDict.hasName('charset')) {\n if (cff.charset.predefined) {\n topDictTracker.setEntryLocation('charset', [cff.charset.format],\n output);\n } else {\n var charset = this.compileCharset(cff.charset);\n topDictTracker.setEntryLocation('charset', [output.length], output);\n output.add(charset);\n }\n }\n\n var charStrings = this.compileCharStrings(cff.charStrings);\n topDictTracker.setEntryLocation('CharStrings', [output.length], output);\n output.add(charStrings);\n\n if (cff.isCIDFont) {\n // For some reason FDSelect must be in front of FDArray on windows. OSX\n // and linux don't seem to care.\n topDictTracker.setEntryLocation('FDSelect', [output.length], output);\n var fdSelect = this.compileFDSelect(cff.fdSelect.raw);\n output.add(fdSelect);\n // It is unclear if the sub font dictionary can have CID related\n // dictionary keys, but the sanitizer doesn't like them so remove them.\n compiled = this.compileTopDicts(cff.fdArray, output.length, true);\n topDictTracker.setEntryLocation('FDArray', [output.length], output);\n output.add(compiled.output);\n var fontDictTrackers = compiled.trackers;\n\n this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);\n }\n\n this.compilePrivateDicts([cff.topDict], [topDictTracker], output);\n\n // If the font data ends with INDEX whose object data is zero-length,\n // the sanitizer will bail out. Add a dummy byte to avoid that.\n output.add([0]);\n\n return output.data;\n },\n encodeNumber: function CFFCompiler_encodeNumber(value) {\n if (parseFloat(value) === parseInt(value, 10) && !isNaN(value)) { // isInt\n return this.encodeInteger(value);\n }\n return this.encodeFloat(value);\n },\n encodeFloat: function CFFCompiler_encodeFloat(num) {\n var value = num.toString();\n\n // rounding inaccurate doubles\n var m = /\\.(\\d*?)(?:9{5,20}|0{5,20})\\d{0,2}(?:e(.+)|$)/.exec(value);\n if (m) {\n var epsilon = parseFloat('1e' + ((m[2] ? +m[2] : 0) + m[1].length));\n value = (Math.round(num * epsilon) / epsilon).toString();\n }\n\n var nibbles = '';\n var i, ii;\n for (i = 0, ii = value.length; i < ii; ++i) {\n var a = value[i];\n if (a === 'e') {\n nibbles += value[++i] === '-' ? 'c' : 'b';\n } else if (a === '.') {\n nibbles += 'a';\n } else if (a === '-') {\n nibbles += 'e';\n } else {\n nibbles += a;\n }\n }\n nibbles += (nibbles.length & 1) ? 'f' : 'ff';\n var out = [30];\n for (i = 0, ii = nibbles.length; i < ii; i += 2) {\n out.push(parseInt(nibbles.substr(i, 2), 16));\n }\n return out;\n },\n encodeInteger: function CFFCompiler_encodeInteger(value) {\n var code;\n if (value >= -107 && value <= 107) {\n code = [value + 139];\n } else if (value >= 108 && value <= 1131) {\n value = value - 108;\n code = [(value >> 8) + 247, value & 0xFF];\n } else if (value >= -1131 && value <= -108) {\n value = -value - 108;\n code = [(value >> 8) + 251, value & 0xFF];\n } else if (value >= -32768 && value <= 32767) {\n code = [0x1c, (value >> 8) & 0xFF, value & 0xFF];\n } else {\n code = [0x1d,\n (value >> 24) & 0xFF,\n (value >> 16) & 0xFF,\n (value >> 8) & 0xFF,\n value & 0xFF];\n }\n return code;\n },\n compileHeader: function CFFCompiler_compileHeader(header) {\n return [\n header.major,\n header.minor,\n header.hdrSize,\n header.offSize\n ];\n },\n compileNameIndex: function CFFCompiler_compileNameIndex(names) {\n var nameIndex = new CFFIndex();\n for (var i = 0, ii = names.length; i < ii; ++i) {\n nameIndex.add(stringToBytes(names[i]));\n }\n return this.compileIndex(nameIndex);\n },\n compileTopDicts: function CFFCompiler_compileTopDicts(dicts,\n length,\n removeCidKeys) {\n var fontDictTrackers = [];\n var fdArrayIndex = new CFFIndex();\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n if (removeCidKeys) {\n fontDict.removeByName('CIDFontVersion');\n fontDict.removeByName('CIDFontRevision');\n fontDict.removeByName('CIDFontType');\n fontDict.removeByName('CIDCount');\n fontDict.removeByName('UIDBase');\n }\n var fontDictTracker = new CFFOffsetTracker();\n var fontDictData = this.compileDict(fontDict, fontDictTracker);\n fontDictTrackers.push(fontDictTracker);\n fdArrayIndex.add(fontDictData);\n fontDictTracker.offset(length);\n }\n fdArrayIndex = this.compileIndex(fdArrayIndex, fontDictTrackers);\n return {\n trackers: fontDictTrackers,\n output: fdArrayIndex,\n };\n },\n compilePrivateDicts: function CFFCompiler_compilePrivateDicts(dicts,\n trackers,\n output) {\n for (var i = 0, ii = dicts.length; i < ii; ++i) {\n var fontDict = dicts[i];\n var privateDict = fontDict.privateDict;\n if (!privateDict || !fontDict.hasName('Private')) {\n throw new FormatError('There must be a private dictionary.');\n }\n var privateDictTracker = new CFFOffsetTracker();\n var privateDictData = this.compileDict(privateDict, privateDictTracker);\n\n var outputLength = output.length;\n privateDictTracker.offset(outputLength);\n if (!privateDictData.length) {\n // The private dictionary was empty, set the output length to zero to\n // ensure the offset length isn't out of bounds in the eyes of the\n // sanitizer.\n outputLength = 0;\n }\n\n trackers[i].setEntryLocation('Private',\n [privateDictData.length, outputLength],\n output);\n output.add(privateDictData);\n\n if (privateDict.subrsIndex && privateDict.hasName('Subrs')) {\n var subrs = this.compileIndex(privateDict.subrsIndex);\n privateDictTracker.setEntryLocation('Subrs', [privateDictData.length],\n output);\n output.add(subrs);\n }\n }\n },\n compileDict: function CFFCompiler_compileDict(dict, offsetTracker) {\n var out = [];\n // The dictionary keys must be in a certain order.\n var order = dict.order;\n for (var i = 0; i < order.length; ++i) {\n var key = order[i];\n if (!(key in dict.values)) {\n continue;\n }\n var values = dict.values[key];\n var types = dict.types[key];\n if (!isArray(types)) {\n types = [types];\n }\n if (!isArray(values)) {\n values = [values];\n }\n\n // Remove any empty dict values.\n if (values.length === 0) {\n continue;\n }\n\n for (var j = 0, jj = types.length; j < jj; ++j) {\n var type = types[j];\n var value = values[j];\n switch (type) {\n case 'num':\n case 'sid':\n out = out.concat(this.encodeNumber(value));\n break;\n case 'offset':\n // For offsets we just insert a 32bit integer so we don't have to\n // deal with figuring out the length of the offset when it gets\n // replaced later on by the compiler.\n var name = dict.keyToNameMap[key];\n // Some offsets have the offset and the length, so just record the\n // position of the first one.\n if (!offsetTracker.isTracking(name)) {\n offsetTracker.track(name, out.length);\n }\n out = out.concat([0x1d, 0, 0, 0, 0]);\n break;\n case 'array':\n case 'delta':\n out = out.concat(this.encodeNumber(value));\n for (var k = 1, kk = values.length; k < kk; ++k) {\n out = out.concat(this.encodeNumber(values[k]));\n }\n break;\n default:\n throw new FormatError(`Unknown data type of ${type}`);\n }\n }\n out = out.concat(dict.opcodes[key]);\n }\n return out;\n },\n compileStringIndex: function CFFCompiler_compileStringIndex(strings) {\n var stringIndex = new CFFIndex();\n for (var i = 0, ii = strings.length; i < ii; ++i) {\n stringIndex.add(stringToBytes(strings[i]));\n }\n return this.compileIndex(stringIndex);\n },\n compileGlobalSubrIndex: function CFFCompiler_compileGlobalSubrIndex() {\n var globalSubrIndex = this.cff.globalSubrIndex;\n this.out.writeByteArray(this.compileIndex(globalSubrIndex));\n },\n compileCharStrings: function CFFCompiler_compileCharStrings(charStrings) {\n return this.compileIndex(charStrings);\n },\n compileCharset: function CFFCompiler_compileCharset(charset) {\n return this.compileTypedArray(charset.raw);\n },\n compileEncoding: function CFFCompiler_compileEncoding(encoding) {\n return this.compileTypedArray(encoding.raw);\n },\n compileFDSelect: function CFFCompiler_compileFDSelect(fdSelect) {\n return this.compileTypedArray(fdSelect);\n },\n compileTypedArray: function CFFCompiler_compileTypedArray(data) {\n var out = [];\n for (var i = 0, ii = data.length; i < ii; ++i) {\n out[i] = data[i];\n }\n return out;\n },\n compileIndex: function CFFCompiler_compileIndex(index, trackers) {\n trackers = trackers || [];\n var objects = index.objects;\n // First 2 bytes contains the number of objects contained into this index\n var count = objects.length;\n\n // If there is no object, just create an index. This technically\n // should just be [0, 0] but OTS has an issue with that.\n if (count === 0) {\n return [0, 0, 0];\n }\n\n var data = [(count >> 8) & 0xFF, count & 0xff];\n\n var lastOffset = 1, i;\n for (i = 0; i < count; ++i) {\n lastOffset += objects[i].length;\n }\n\n var offsetSize;\n if (lastOffset < 0x100) {\n offsetSize = 1;\n } else if (lastOffset < 0x10000) {\n offsetSize = 2;\n } else if (lastOffset < 0x1000000) {\n offsetSize = 3;\n } else {\n offsetSize = 4;\n }\n\n // Next byte contains the offset size use to reference object in the file\n data.push(offsetSize);\n\n // Add another offset after this one because we need a new offset\n var relativeOffset = 1;\n for (i = 0; i < count + 1; i++) {\n if (offsetSize === 1) {\n data.push(relativeOffset & 0xFF);\n } else if (offsetSize === 2) {\n data.push((relativeOffset >> 8) & 0xFF,\n relativeOffset & 0xFF);\n } else if (offsetSize === 3) {\n data.push((relativeOffset >> 16) & 0xFF,\n (relativeOffset >> 8) & 0xFF,\n relativeOffset & 0xFF);\n } else {\n data.push((relativeOffset >>> 24) & 0xFF,\n (relativeOffset >> 16) & 0xFF,\n (relativeOffset >> 8) & 0xFF,\n relativeOffset & 0xFF);\n }\n\n if (objects[i]) {\n relativeOffset += objects[i].length;\n }\n }\n\n for (i = 0; i < count; i++) {\n // Notify the tracker where the object will be offset in the data.\n if (trackers[i]) {\n trackers[i].offset(data.length);\n }\n for (var j = 0, jj = objects[i].length; j < jj; j++) {\n data.push(objects[i][j]);\n }\n }\n return data;\n },\n };\n return CFFCompiler;\n})();\n\nexport {\n CFFStandardStrings,\n CFFParser,\n CFF,\n CFFHeader,\n CFFStrings,\n CFFIndex,\n CFFCharset,\n CFFTopDict,\n CFFPrivateDict,\n CFFCompiler,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/cff_parser.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength, arraysToBytes, createPromiseCapability, isEmptyObj, isInt,\n MissingDataException\n} from '../shared/util';\n\nvar ChunkedStream = (function ChunkedStreamClosure() {\n function ChunkedStream(length, chunkSize, manager) {\n this.bytes = new Uint8Array(length);\n this.start = 0;\n this.pos = 0;\n this.end = length;\n this.chunkSize = chunkSize;\n this.loadedChunks = [];\n this.numChunksLoaded = 0;\n this.numChunks = Math.ceil(length / chunkSize);\n this.manager = manager;\n this.progressiveDataLength = 0;\n this.lastSuccessfulEnsureByteChunk = -1; // a single-entry cache\n }\n\n // required methods for a stream. if a particular stream does not\n // implement these, an error should be thrown\n ChunkedStream.prototype = {\n\n getMissingChunks: function ChunkedStream_getMissingChunks() {\n var chunks = [];\n for (var chunk = 0, n = this.numChunks; chunk < n; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n chunks.push(chunk);\n }\n }\n return chunks;\n },\n\n getBaseStreams: function ChunkedStream_getBaseStreams() {\n return [this];\n },\n\n allChunksLoaded: function ChunkedStream_allChunksLoaded() {\n return this.numChunksLoaded === this.numChunks;\n },\n\n onReceiveData: function ChunkedStream_onReceiveData(begin, chunk) {\n var end = begin + chunk.byteLength;\n\n if (begin % this.chunkSize !== 0) {\n throw new Error(`Bad begin offset: ${begin}`);\n }\n // Using this.length is inaccurate here since this.start can be moved\n // See ChunkedStream.moveStart()\n var length = this.bytes.length;\n if (end % this.chunkSize !== 0 && end !== length) {\n throw new Error(`Bad end offset: ${end}`);\n }\n\n this.bytes.set(new Uint8Array(chunk), begin);\n var chunkSize = this.chunkSize;\n var beginChunk = Math.floor(begin / chunkSize);\n var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n var curChunk;\n\n for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n if (!this.loadedChunks[curChunk]) {\n this.loadedChunks[curChunk] = true;\n ++this.numChunksLoaded;\n }\n }\n },\n\n onReceiveProgressiveData:\n function ChunkedStream_onReceiveProgressiveData(data) {\n var position = this.progressiveDataLength;\n var beginChunk = Math.floor(position / this.chunkSize);\n\n this.bytes.set(new Uint8Array(data), position);\n position += data.byteLength;\n this.progressiveDataLength = position;\n var endChunk = position >= this.end ? this.numChunks :\n Math.floor(position / this.chunkSize);\n var curChunk;\n for (curChunk = beginChunk; curChunk < endChunk; ++curChunk) {\n if (!this.loadedChunks[curChunk]) {\n this.loadedChunks[curChunk] = true;\n ++this.numChunksLoaded;\n }\n }\n },\n\n ensureByte: function ChunkedStream_ensureByte(pos) {\n var chunk = Math.floor(pos / this.chunkSize);\n if (chunk === this.lastSuccessfulEnsureByteChunk) {\n return;\n }\n\n if (!this.loadedChunks[chunk]) {\n throw new MissingDataException(pos, pos + 1);\n }\n this.lastSuccessfulEnsureByteChunk = chunk;\n },\n\n ensureRange: function ChunkedStream_ensureRange(begin, end) {\n if (begin >= end) {\n return;\n }\n\n if (end <= this.progressiveDataLength) {\n return;\n }\n\n var chunkSize = this.chunkSize;\n var beginChunk = Math.floor(begin / chunkSize);\n var endChunk = Math.floor((end - 1) / chunkSize) + 1;\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n throw new MissingDataException(begin, end);\n }\n }\n },\n\n nextEmptyChunk: function ChunkedStream_nextEmptyChunk(beginChunk) {\n var chunk, numChunks = this.numChunks;\n for (var i = 0; i < numChunks; ++i) {\n chunk = (beginChunk + i) % numChunks; // Wrap around to beginning\n if (!this.loadedChunks[chunk]) {\n return chunk;\n }\n }\n return null;\n },\n\n hasChunk: function ChunkedStream_hasChunk(chunk) {\n return !!this.loadedChunks[chunk];\n },\n\n get length() {\n return this.end - this.start;\n },\n\n get isEmpty() {\n return this.length === 0;\n },\n\n getByte: function ChunkedStream_getByte() {\n var pos = this.pos;\n if (pos >= this.end) {\n return -1;\n }\n this.ensureByte(pos);\n return this.bytes[this.pos++];\n },\n\n getUint16: function ChunkedStream_getUint16() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n },\n\n getInt32: function ChunkedStream_getInt32() {\n var b0 = this.getByte();\n var b1 = this.getByte();\n var b2 = this.getByte();\n var b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n },\n\n // returns subarray of original buffer\n // should only be read\n getBytes: function ChunkedStream_getBytes(length) {\n var bytes = this.bytes;\n var pos = this.pos;\n var strEnd = this.end;\n\n if (!length) {\n this.ensureRange(pos, strEnd);\n return bytes.subarray(pos, strEnd);\n }\n\n var end = pos + length;\n if (end > strEnd) {\n end = strEnd;\n }\n this.ensureRange(pos, end);\n\n this.pos = end;\n return bytes.subarray(pos, end);\n },\n\n peekByte: function ChunkedStream_peekByte() {\n var peekedByte = this.getByte();\n this.pos--;\n return peekedByte;\n },\n\n peekBytes: function ChunkedStream_peekBytes(length) {\n var bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n },\n\n getByteRange: function ChunkedStream_getBytes(begin, end) {\n this.ensureRange(begin, end);\n return this.bytes.subarray(begin, end);\n },\n\n skip: function ChunkedStream_skip(n) {\n if (!n) {\n n = 1;\n }\n this.pos += n;\n },\n\n reset: function ChunkedStream_reset() {\n this.pos = this.start;\n },\n\n moveStart: function ChunkedStream_moveStart() {\n this.start = this.pos;\n },\n\n makeSubStream: function ChunkedStream_makeSubStream(start, length, dict) {\n this.ensureRange(start, start + length);\n\n function ChunkedStreamSubstream() {}\n ChunkedStreamSubstream.prototype = Object.create(this);\n ChunkedStreamSubstream.prototype.getMissingChunks = function() {\n var chunkSize = this.chunkSize;\n var beginChunk = Math.floor(this.start / chunkSize);\n var endChunk = Math.floor((this.end - 1) / chunkSize) + 1;\n var missingChunks = [];\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (!this.loadedChunks[chunk]) {\n missingChunks.push(chunk);\n }\n }\n return missingChunks;\n };\n var subStream = new ChunkedStreamSubstream();\n subStream.pos = subStream.start = start;\n subStream.end = start + length || this.end;\n subStream.dict = dict;\n return subStream;\n },\n };\n\n return ChunkedStream;\n})();\n\nvar ChunkedStreamManager = (function ChunkedStreamManagerClosure() {\n\n function ChunkedStreamManager(pdfNetworkStream, args) {\n var chunkSize = args.rangeChunkSize;\n var length = args.length;\n this.stream = new ChunkedStream(length, chunkSize, this);\n this.length = length;\n this.chunkSize = chunkSize;\n this.pdfNetworkStream = pdfNetworkStream;\n this.url = args.url;\n this.disableAutoFetch = args.disableAutoFetch;\n this.msgHandler = args.msgHandler;\n\n this.currRequestId = 0;\n\n this.chunksNeededByRequest = Object.create(null);\n this.requestsByChunk = Object.create(null);\n this.promisesByRequest = Object.create(null);\n this.progressiveDataLength = 0;\n this.aborted = false;\n\n this._loadedStreamCapability = createPromiseCapability();\n }\n\n ChunkedStreamManager.prototype = {\n onLoadedStream: function ChunkedStreamManager_getLoadedStream() {\n return this._loadedStreamCapability.promise;\n },\n\n sendRequest: function ChunkedStreamManager_sendRequest(begin, end) {\n var rangeReader = this.pdfNetworkStream.getRangeReader(begin, end);\n if (!rangeReader.isStreamingSupported) {\n rangeReader.onProgress = this.onProgress.bind(this);\n }\n var chunks = [], loaded = 0;\n var manager = this;\n var promise = new Promise(function (resolve, reject) {\n var readChunk = function (chunk) {\n try {\n if (!chunk.done) {\n var data = chunk.value;\n chunks.push(data);\n loaded += arrayByteLength(data);\n if (rangeReader.isStreamingSupported) {\n manager.onProgress({ loaded, });\n }\n rangeReader.read().then(readChunk, reject);\n return;\n }\n var chunkData = arraysToBytes(chunks);\n chunks = null;\n resolve(chunkData);\n } catch (e) {\n reject(e);\n }\n };\n rangeReader.read().then(readChunk, reject);\n });\n promise.then((data) => {\n if (this.aborted) {\n return; // ignoring any data after abort\n }\n this.onReceiveData({ chunk: data, begin, });\n });\n // TODO check errors\n },\n\n // Get all the chunks that are not yet loaded and groups them into\n // contiguous ranges to load in as few requests as possible\n requestAllChunks: function ChunkedStreamManager_requestAllChunks() {\n var missingChunks = this.stream.getMissingChunks();\n this._requestChunks(missingChunks);\n return this._loadedStreamCapability.promise;\n },\n\n _requestChunks: function ChunkedStreamManager_requestChunks(chunks) {\n var requestId = this.currRequestId++;\n\n var i, ii;\n var chunksNeeded = Object.create(null);\n this.chunksNeededByRequest[requestId] = chunksNeeded;\n for (i = 0, ii = chunks.length; i < ii; i++) {\n if (!this.stream.hasChunk(chunks[i])) {\n chunksNeeded[chunks[i]] = true;\n }\n }\n\n if (isEmptyObj(chunksNeeded)) {\n return Promise.resolve();\n }\n\n var capability = createPromiseCapability();\n this.promisesByRequest[requestId] = capability;\n\n var chunksToRequest = [];\n for (var chunk in chunksNeeded) {\n chunk = chunk | 0;\n if (!(chunk in this.requestsByChunk)) {\n this.requestsByChunk[chunk] = [];\n chunksToRequest.push(chunk);\n }\n this.requestsByChunk[chunk].push(requestId);\n }\n\n if (!chunksToRequest.length) {\n return capability.promise;\n }\n\n var groupedChunksToRequest = this.groupChunks(chunksToRequest);\n\n for (i = 0; i < groupedChunksToRequest.length; ++i) {\n var groupedChunk = groupedChunksToRequest[i];\n var begin = groupedChunk.beginChunk * this.chunkSize;\n var end = Math.min(groupedChunk.endChunk * this.chunkSize, this.length);\n this.sendRequest(begin, end);\n }\n\n return capability.promise;\n },\n\n getStream: function ChunkedStreamManager_getStream() {\n return this.stream;\n },\n\n // Loads any chunks in the requested range that are not yet loaded\n requestRange: function ChunkedStreamManager_requestRange(begin, end) {\n\n end = Math.min(end, this.length);\n\n var beginChunk = this.getBeginChunk(begin);\n var endChunk = this.getEndChunk(end);\n\n var chunks = [];\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n chunks.push(chunk);\n }\n\n return this._requestChunks(chunks);\n },\n\n requestRanges: function ChunkedStreamManager_requestRanges(ranges) {\n ranges = ranges || [];\n var chunksToRequest = [];\n\n for (var i = 0; i < ranges.length; i++) {\n var beginChunk = this.getBeginChunk(ranges[i].begin);\n var endChunk = this.getEndChunk(ranges[i].end);\n for (var chunk = beginChunk; chunk < endChunk; ++chunk) {\n if (chunksToRequest.indexOf(chunk) < 0) {\n chunksToRequest.push(chunk);\n }\n }\n }\n\n chunksToRequest.sort(function(a, b) {\n return a - b;\n });\n return this._requestChunks(chunksToRequest);\n },\n\n // Groups a sorted array of chunks into as few contiguous larger\n // chunks as possible\n groupChunks: function ChunkedStreamManager_groupChunks(chunks) {\n var groupedChunks = [];\n var beginChunk = -1;\n var prevChunk = -1;\n for (var i = 0; i < chunks.length; ++i) {\n var chunk = chunks[i];\n\n if (beginChunk < 0) {\n beginChunk = chunk;\n }\n\n if (prevChunk >= 0 && prevChunk + 1 !== chunk) {\n groupedChunks.push({ beginChunk,\n endChunk: prevChunk + 1, });\n beginChunk = chunk;\n }\n if (i + 1 === chunks.length) {\n groupedChunks.push({ beginChunk,\n endChunk: chunk + 1, });\n }\n\n prevChunk = chunk;\n }\n return groupedChunks;\n },\n\n onProgress: function ChunkedStreamManager_onProgress(args) {\n var bytesLoaded = (this.stream.numChunksLoaded * this.chunkSize +\n args.loaded);\n this.msgHandler.send('DocProgress', {\n loaded: bytesLoaded,\n total: this.length,\n });\n },\n\n onReceiveData: function ChunkedStreamManager_onReceiveData(args) {\n var chunk = args.chunk;\n var isProgressive = args.begin === undefined;\n var begin = isProgressive ? this.progressiveDataLength : args.begin;\n var end = begin + chunk.byteLength;\n\n var beginChunk = Math.floor(begin / this.chunkSize);\n var endChunk = end < this.length ? Math.floor(end / this.chunkSize) :\n Math.ceil(end / this.chunkSize);\n\n if (isProgressive) {\n this.stream.onReceiveProgressiveData(chunk);\n this.progressiveDataLength = end;\n } else {\n this.stream.onReceiveData(begin, chunk);\n }\n\n if (this.stream.allChunksLoaded()) {\n this._loadedStreamCapability.resolve(this.stream);\n }\n\n var loadedRequests = [];\n var i, requestId;\n for (chunk = beginChunk; chunk < endChunk; ++chunk) {\n // The server might return more chunks than requested\n var requestIds = this.requestsByChunk[chunk] || [];\n delete this.requestsByChunk[chunk];\n\n for (i = 0; i < requestIds.length; ++i) {\n requestId = requestIds[i];\n var chunksNeeded = this.chunksNeededByRequest[requestId];\n if (chunk in chunksNeeded) {\n delete chunksNeeded[chunk];\n }\n\n if (!isEmptyObj(chunksNeeded)) {\n continue;\n }\n\n loadedRequests.push(requestId);\n }\n }\n\n // If there are no pending requests, automatically fetch the next\n // unfetched chunk of the PDF\n if (!this.disableAutoFetch && isEmptyObj(this.requestsByChunk)) {\n var nextEmptyChunk;\n if (this.stream.numChunksLoaded === 1) {\n // This is a special optimization so that after fetching the first\n // chunk, rather than fetching the second chunk, we fetch the last\n // chunk.\n var lastChunk = this.stream.numChunks - 1;\n if (!this.stream.hasChunk(lastChunk)) {\n nextEmptyChunk = lastChunk;\n }\n } else {\n nextEmptyChunk = this.stream.nextEmptyChunk(endChunk);\n }\n if (isInt(nextEmptyChunk)) {\n this._requestChunks([nextEmptyChunk]);\n }\n }\n\n for (i = 0; i < loadedRequests.length; ++i) {\n requestId = loadedRequests[i];\n var capability = this.promisesByRequest[requestId];\n delete this.promisesByRequest[requestId];\n capability.resolve();\n }\n\n this.msgHandler.send('DocProgress', {\n loaded: this.stream.numChunksLoaded * this.chunkSize,\n total: this.length,\n });\n },\n\n onError: function ChunkedStreamManager_onError(err) {\n this._loadedStreamCapability.reject(err);\n },\n\n getBeginChunk: function ChunkedStreamManager_getBeginChunk(begin) {\n var chunk = Math.floor(begin / this.chunkSize);\n return chunk;\n },\n\n getEndChunk: function ChunkedStreamManager_getEndChunk(end) {\n var chunk = Math.floor((end - 1) / this.chunkSize) + 1;\n return chunk;\n },\n\n abort: function ChunkedStreamManager_abort() {\n this.aborted = true;\n if (this.pdfNetworkStream) {\n this.pdfNetworkStream.cancelAllRequests('abort');\n }\n for (var requestId in this.promisesByRequest) {\n var capability = this.promisesByRequest[requestId];\n capability.reject(new Error('Request was aborted'));\n }\n },\n };\n\n return ChunkedStreamManager;\n})();\n\nexport {\n ChunkedStream,\n ChunkedStreamManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/chunked_stream.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString, FormatError, isInt, PasswordException, PasswordResponses,\n stringToBytes, utf8StringToString, warn\n} from '../shared/util';\nimport { isDict, isName, Name } from './primitives';\nimport { DecryptStream } from './stream';\n\nvar ARCFourCipher = (function ARCFourCipherClosure() {\n function ARCFourCipher(key) {\n this.a = 0;\n this.b = 0;\n var s = new Uint8Array(256);\n var i, j = 0, tmp, keyLength = key.length;\n for (i = 0; i < 256; ++i) {\n s[i] = i;\n }\n for (i = 0; i < 256; ++i) {\n tmp = s[i];\n j = (j + tmp + key[i % keyLength]) & 0xFF;\n s[i] = s[j];\n s[j] = tmp;\n }\n this.s = s;\n }\n\n ARCFourCipher.prototype = {\n encryptBlock: function ARCFourCipher_encryptBlock(data) {\n var i, n = data.length, tmp, tmp2;\n var a = this.a, b = this.b, s = this.s;\n var output = new Uint8Array(n);\n for (i = 0; i < n; ++i) {\n a = (a + 1) & 0xFF;\n tmp = s[a];\n b = (b + tmp) & 0xFF;\n tmp2 = s[b];\n s[a] = tmp2;\n s[b] = tmp;\n output[i] = data[i] ^ s[(tmp + tmp2) & 0xFF];\n }\n this.a = a;\n this.b = b;\n return output;\n },\n };\n ARCFourCipher.prototype.decryptBlock = ARCFourCipher.prototype.encryptBlock;\n\n return ARCFourCipher;\n})();\n\nvar calculateMD5 = (function calculateMD5Closure() {\n var r = new Uint8Array([\n 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,\n 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20,\n 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,\n 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21]);\n\n var k = new Int32Array([\n -680876936, -389564586, 606105819, -1044525330, -176418897, 1200080426,\n -1473231341, -45705983, 1770035416, -1958414417, -42063, -1990404162,\n 1804603682, -40341101, -1502002290, 1236535329, -165796510, -1069501632,\n 643717713, -373897302, -701558691, 38016083, -660478335, -405537848,\n 568446438, -1019803690, -187363961, 1163531501, -1444681467, -51403784,\n 1735328473, -1926607734, -378558, -2022574463, 1839030562, -35309556,\n -1530992060, 1272893353, -155497632, -1094730640, 681279174, -358537222,\n -722521979, 76029189, -640364487, -421815835, 530742520, -995338651,\n -198630844, 1126891415, -1416354905, -57434055, 1700485571, -1894986606,\n -1051523, -2054922799, 1873313359, -30611744, -1560198380, 1309151649,\n -145523070, -1120210379, 718787259, -343485551]);\n\n function hash(data, offset, length) {\n var h0 = 1732584193, h1 = -271733879, h2 = -1732584194, h3 = 271733878;\n // pre-processing\n var paddedLength = (length + 72) & ~63; // data + 9 extra bytes\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = (length << 3) & 0xFF;\n padded[i++] = (length >> 5) & 0xFF;\n padded[i++] = (length >> 13) & 0xFF;\n padded[i++] = (length >> 21) & 0xFF;\n padded[i++] = (length >>> 29) & 0xFF;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n var w = new Int32Array(16);\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j, i += 4) {\n w[j] = (padded[i] | (padded[i + 1] << 8) |\n (padded[i + 2] << 16) | (padded[i + 3] << 24));\n }\n var a = h0, b = h1, c = h2, d = h3, f, g;\n for (j = 0; j < 64; ++j) {\n if (j < 16) {\n f = (b & c) | ((~b) & d);\n g = j;\n } else if (j < 32) {\n f = (d & b) | ((~d) & c);\n g = (5 * j + 1) & 15;\n } else if (j < 48) {\n f = b ^ c ^ d;\n g = (3 * j + 5) & 15;\n } else {\n f = c ^ (b | (~d));\n g = (7 * j) & 15;\n }\n var tmp = d, rotateArg = (a + f + k[j] + w[g]) | 0, rotate = r[j];\n d = c;\n c = b;\n b = (b + ((rotateArg << rotate) | (rotateArg >>> (32 - rotate)))) | 0;\n a = tmp;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n }\n return new Uint8Array([\n h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >>> 24) & 0xFF,\n h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >>> 24) & 0xFF,\n h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >>> 24) & 0xFF,\n h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >>> 24) & 0xFF\n ]);\n }\n\n return hash;\n})();\nvar Word64 = (function Word64Closure() {\n function Word64(highInteger, lowInteger) {\n this.high = highInteger | 0;\n this.low = lowInteger | 0;\n }\n Word64.prototype = {\n and: function Word64_and(word) {\n this.high &= word.high;\n this.low &= word.low;\n },\n xor: function Word64_xor(word) {\n this.high ^= word.high;\n this.low ^= word.low;\n },\n\n or: function Word64_or(word) {\n this.high |= word.high;\n this.low |= word.low;\n },\n\n shiftRight: function Word64_shiftRight(places) {\n if (places >= 32) {\n this.low = (this.high >>> (places - 32)) | 0;\n this.high = 0;\n } else {\n this.low = (this.low >>> places) | (this.high << (32 - places));\n this.high = (this.high >>> places) | 0;\n }\n },\n\n shiftLeft: function Word64_shiftLeft(places) {\n if (places >= 32) {\n this.high = this.low << (places - 32);\n this.low = 0;\n } else {\n this.high = (this.high << places) | (this.low >>> (32 - places));\n this.low = this.low << places;\n }\n },\n\n rotateRight: function Word64_rotateRight(places) {\n var low, high;\n if (places & 32) {\n high = this.low;\n low = this.high;\n } else {\n low = this.low;\n high = this.high;\n }\n places &= 31;\n this.low = (low >>> places) | (high << (32 - places));\n this.high = (high >>> places) | (low << (32 - places));\n },\n\n not: function Word64_not() {\n this.high = ~this.high;\n this.low = ~this.low;\n },\n\n add: function Word64_add(word) {\n var lowAdd = (this.low >>> 0) + (word.low >>> 0);\n var highAdd = (this.high >>> 0) + (word.high >>> 0);\n if (lowAdd > 0xFFFFFFFF) {\n highAdd += 1;\n }\n this.low = lowAdd | 0;\n this.high = highAdd | 0;\n },\n\n copyTo: function Word64_copyTo(bytes, offset) {\n bytes[offset] = (this.high >>> 24) & 0xFF;\n bytes[offset + 1] = (this.high >> 16) & 0xFF;\n bytes[offset + 2] = (this.high >> 8) & 0xFF;\n bytes[offset + 3] = this.high & 0xFF;\n bytes[offset + 4] = (this.low >>> 24) & 0xFF;\n bytes[offset + 5] = (this.low >> 16) & 0xFF;\n bytes[offset + 6] = (this.low >> 8) & 0xFF;\n bytes[offset + 7] = this.low & 0xFF;\n },\n\n assign: function Word64_assign(word) {\n this.high = word.high;\n this.low = word.low;\n },\n };\n return Word64;\n})();\n\nvar calculateSHA256 = (function calculateSHA256Closure() {\n function rotr(x, n) {\n return (x >>> n) | (x << 32 - n);\n }\n\n function ch(x, y, z) {\n return (x & y) ^ (~x & z);\n }\n\n function maj(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n }\n\n function sigma(x) {\n return rotr(x, 2) ^ rotr(x, 13) ^ rotr(x, 22);\n }\n\n function sigmaPrime(x) {\n return rotr(x, 6) ^ rotr(x, 11) ^ rotr(x, 25);\n }\n\n function littleSigma(x) {\n return rotr(x, 7) ^ rotr(x, 18) ^ x >>> 3;\n }\n\n function littleSigmaPrime(x) {\n return rotr(x, 17) ^ rotr(x, 19) ^ x >>> 10;\n }\n\n var k = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];\n\n function hash(data, offset, length) {\n // initial hash values\n var h0 = 0x6a09e667, h1 = 0xbb67ae85, h2 = 0x3c6ef372,\n h3 = 0xa54ff53a, h4 = 0x510e527f, h5 = 0x9b05688c,\n h6 = 0x1f83d9ab, h7 = 0x5be0cd19;\n // pre-processing\n var paddedLength = Math.ceil((length + 9) / 64) * 64;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n n = paddedLength - 8;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xFF;\n padded[i++] = (length >> 21) & 0xFF;\n padded[i++] = (length >> 13) & 0xFF;\n padded[i++] = (length >> 5) & 0xFF;\n padded[i++] = (length << 3) & 0xFF;\n var w = new Uint32Array(64);\n // for each 512 bit block\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j] = (padded[i] << 24 | (padded[i + 1] << 16) |\n (padded[i + 2] << 8) | (padded[i + 3]));\n i += 4;\n }\n\n for (j = 16; j < 64; ++j) {\n w[j] = littleSigmaPrime(w[j - 2]) + w[j - 7] +\n littleSigma(w[j - 15]) + w[j - 16] | 0;\n }\n var a = h0, b = h1, c = h2, d = h3, e = h4,\n f = h5, g = h6, h = h7, t1, t2;\n for (j = 0; j < 64; ++j) {\n t1 = h + sigmaPrime(e) + ch(e, f, g) + k[j] + w[j];\n t2 = sigma(a) + maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h0 = (h0 + a) | 0;\n h1 = (h1 + b) | 0;\n h2 = (h2 + c) | 0;\n h3 = (h3 + d) | 0;\n h4 = (h4 + e) | 0;\n h5 = (h5 + f) | 0;\n h6 = (h6 + g) | 0;\n h7 = (h7 + h) | 0;\n }\n return new Uint8Array([\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, (h0) & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, (h1) & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, (h2) & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, (h3) & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, (h4) & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, (h5) & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, (h6) & 0xFF,\n (h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, (h7) & 0xFF\n ]);\n }\n\n return hash;\n})();\n\nvar calculateSHA512 = (function calculateSHA512Closure() {\n function ch(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.not();\n tmp.and(z);\n result.xor(tmp);\n }\n\n function maj(result, x, y, z, tmp) {\n result.assign(x);\n result.and(y);\n tmp.assign(x);\n tmp.and(z);\n result.xor(tmp);\n tmp.assign(y);\n tmp.and(z);\n result.xor(tmp);\n }\n\n function sigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(28);\n tmp.assign(x);\n tmp.rotateRight(34);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(39);\n result.xor(tmp);\n }\n\n function sigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(14);\n tmp.assign(x);\n tmp.rotateRight(18);\n result.xor(tmp);\n tmp.assign(x);\n tmp.rotateRight(41);\n result.xor(tmp);\n }\n\n function littleSigma(result, x, tmp) {\n result.assign(x);\n result.rotateRight(1);\n tmp.assign(x);\n tmp.rotateRight(8);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(7);\n result.xor(tmp);\n }\n\n function littleSigmaPrime(result, x, tmp) {\n result.assign(x);\n result.rotateRight(19);\n tmp.assign(x);\n tmp.rotateRight(61);\n result.xor(tmp);\n tmp.assign(x);\n tmp.shiftRight(6);\n result.xor(tmp);\n }\n\n var k = [\n new Word64(0x428a2f98, 0xd728ae22), new Word64(0x71374491, 0x23ef65cd),\n new Word64(0xb5c0fbcf, 0xec4d3b2f), new Word64(0xe9b5dba5, 0x8189dbbc),\n new Word64(0x3956c25b, 0xf348b538), new Word64(0x59f111f1, 0xb605d019),\n new Word64(0x923f82a4, 0xaf194f9b), new Word64(0xab1c5ed5, 0xda6d8118),\n new Word64(0xd807aa98, 0xa3030242), new Word64(0x12835b01, 0x45706fbe),\n new Word64(0x243185be, 0x4ee4b28c), new Word64(0x550c7dc3, 0xd5ffb4e2),\n new Word64(0x72be5d74, 0xf27b896f), new Word64(0x80deb1fe, 0x3b1696b1),\n new Word64(0x9bdc06a7, 0x25c71235), new Word64(0xc19bf174, 0xcf692694),\n new Word64(0xe49b69c1, 0x9ef14ad2), new Word64(0xefbe4786, 0x384f25e3),\n new Word64(0x0fc19dc6, 0x8b8cd5b5), new Word64(0x240ca1cc, 0x77ac9c65),\n new Word64(0x2de92c6f, 0x592b0275), new Word64(0x4a7484aa, 0x6ea6e483),\n new Word64(0x5cb0a9dc, 0xbd41fbd4), new Word64(0x76f988da, 0x831153b5),\n new Word64(0x983e5152, 0xee66dfab), new Word64(0xa831c66d, 0x2db43210),\n new Word64(0xb00327c8, 0x98fb213f), new Word64(0xbf597fc7, 0xbeef0ee4),\n new Word64(0xc6e00bf3, 0x3da88fc2), new Word64(0xd5a79147, 0x930aa725),\n new Word64(0x06ca6351, 0xe003826f), new Word64(0x14292967, 0x0a0e6e70),\n new Word64(0x27b70a85, 0x46d22ffc), new Word64(0x2e1b2138, 0x5c26c926),\n new Word64(0x4d2c6dfc, 0x5ac42aed), new Word64(0x53380d13, 0x9d95b3df),\n new Word64(0x650a7354, 0x8baf63de), new Word64(0x766a0abb, 0x3c77b2a8),\n new Word64(0x81c2c92e, 0x47edaee6), new Word64(0x92722c85, 0x1482353b),\n new Word64(0xa2bfe8a1, 0x4cf10364), new Word64(0xa81a664b, 0xbc423001),\n new Word64(0xc24b8b70, 0xd0f89791), new Word64(0xc76c51a3, 0x0654be30),\n new Word64(0xd192e819, 0xd6ef5218), new Word64(0xd6990624, 0x5565a910),\n new Word64(0xf40e3585, 0x5771202a), new Word64(0x106aa070, 0x32bbd1b8),\n new Word64(0x19a4c116, 0xb8d2d0c8), new Word64(0x1e376c08, 0x5141ab53),\n new Word64(0x2748774c, 0xdf8eeb99), new Word64(0x34b0bcb5, 0xe19b48a8),\n new Word64(0x391c0cb3, 0xc5c95a63), new Word64(0x4ed8aa4a, 0xe3418acb),\n new Word64(0x5b9cca4f, 0x7763e373), new Word64(0x682e6ff3, 0xd6b2b8a3),\n new Word64(0x748f82ee, 0x5defb2fc), new Word64(0x78a5636f, 0x43172f60),\n new Word64(0x84c87814, 0xa1f0ab72), new Word64(0x8cc70208, 0x1a6439ec),\n new Word64(0x90befffa, 0x23631e28), new Word64(0xa4506ceb, 0xde82bde9),\n new Word64(0xbef9a3f7, 0xb2c67915), new Word64(0xc67178f2, 0xe372532b),\n new Word64(0xca273ece, 0xea26619c), new Word64(0xd186b8c7, 0x21c0c207),\n new Word64(0xeada7dd6, 0xcde0eb1e), new Word64(0xf57d4f7f, 0xee6ed178),\n new Word64(0x06f067aa, 0x72176fba), new Word64(0x0a637dc5, 0xa2c898a6),\n new Word64(0x113f9804, 0xbef90dae), new Word64(0x1b710b35, 0x131c471b),\n new Word64(0x28db77f5, 0x23047d84), new Word64(0x32caab7b, 0x40c72493),\n new Word64(0x3c9ebe0a, 0x15c9bebc), new Word64(0x431d67c4, 0x9c100d4c),\n new Word64(0x4cc5d4be, 0xcb3e42b6), new Word64(0x597f299c, 0xfc657e2a),\n new Word64(0x5fcb6fab, 0x3ad6faec), new Word64(0x6c44198c, 0x4a475817)];\n\n function hash(data, offset, length, mode384) {\n mode384 = !!mode384;\n // initial hash values\n var h0, h1, h2, h3, h4, h5, h6, h7;\n if (!mode384) {\n h0 = new Word64(0x6a09e667, 0xf3bcc908);\n h1 = new Word64(0xbb67ae85, 0x84caa73b);\n h2 = new Word64(0x3c6ef372, 0xfe94f82b);\n h3 = new Word64(0xa54ff53a, 0x5f1d36f1);\n h4 = new Word64(0x510e527f, 0xade682d1);\n h5 = new Word64(0x9b05688c, 0x2b3e6c1f);\n h6 = new Word64(0x1f83d9ab, 0xfb41bd6b);\n h7 = new Word64(0x5be0cd19, 0x137e2179);\n } else {\n // SHA384 is exactly the same\n // except with different starting values and a trimmed result\n h0 = new Word64(0xcbbb9d5d, 0xc1059ed8);\n h1 = new Word64(0x629a292a, 0x367cd507);\n h2 = new Word64(0x9159015a, 0x3070dd17);\n h3 = new Word64(0x152fecd8, 0xf70e5939);\n h4 = new Word64(0x67332667, 0xffc00b31);\n h5 = new Word64(0x8eb44a87, 0x68581511);\n h6 = new Word64(0xdb0c2e0d, 0x64f98fa7);\n h7 = new Word64(0x47b5481d, 0xbefa4fa4);\n }\n\n // pre-processing\n var paddedLength = Math.ceil((length + 17) / 128) * 128;\n var padded = new Uint8Array(paddedLength);\n var i, j, n;\n for (i = 0; i < length; ++i) {\n padded[i] = data[offset++];\n }\n padded[i++] = 0x80;\n n = paddedLength - 16;\n while (i < n) {\n padded[i++] = 0;\n }\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = 0;\n padded[i++] = (length >>> 29) & 0xFF;\n padded[i++] = (length >> 21) & 0xFF;\n padded[i++] = (length >> 13) & 0xFF;\n padded[i++] = (length >> 5) & 0xFF;\n padded[i++] = (length << 3) & 0xFF;\n\n var w = new Array(80);\n for (i = 0; i < 80; i++) {\n w[i] = new Word64(0, 0);\n }\n var a = new Word64(0, 0), b = new Word64(0, 0), c = new Word64(0, 0);\n var d = new Word64(0, 0), e = new Word64(0, 0), f = new Word64(0, 0);\n var g = new Word64(0, 0), h = new Word64(0, 0);\n var t1 = new Word64(0, 0), t2 = new Word64(0, 0);\n var tmp1 = new Word64(0, 0), tmp2 = new Word64(0, 0), tmp3;\n\n // for each 1024 bit block\n for (i = 0; i < paddedLength;) {\n for (j = 0; j < 16; ++j) {\n w[j].high = (padded[i] << 24) | (padded[i + 1] << 16) |\n (padded[i + 2] << 8) | (padded[i + 3]);\n w[j].low = (padded[i + 4]) << 24 | (padded[i + 5]) << 16 |\n (padded[i + 6]) << 8 | (padded[i + 7]);\n i += 8;\n }\n for (j = 16; j < 80; ++j) {\n tmp3 = w[j];\n littleSigmaPrime(tmp3, w[j - 2], tmp2);\n tmp3.add(w[j - 7]);\n littleSigma(tmp1, w[j - 15], tmp2);\n tmp3.add(tmp1);\n tmp3.add(w[j - 16]);\n }\n\n a.assign(h0); b.assign(h1); c.assign(h2); d.assign(h3);\n e.assign(h4); f.assign(h5); g.assign(h6); h.assign(h7);\n for (j = 0; j < 80; ++j) {\n t1.assign(h);\n sigmaPrime(tmp1, e, tmp2);\n t1.add(tmp1);\n ch(tmp1, e, f, g, tmp2);\n t1.add(tmp1);\n t1.add(k[j]);\n t1.add(w[j]);\n\n sigma(t2, a, tmp2);\n maj(tmp1, a, b, c, tmp2);\n t2.add(tmp1);\n\n tmp3 = h;\n h = g;\n g = f;\n f = e;\n d.add(t1);\n e = d;\n d = c;\n c = b;\n b = a;\n tmp3.assign(t1);\n tmp3.add(t2);\n a = tmp3;\n }\n h0.add(a);\n h1.add(b);\n h2.add(c);\n h3.add(d);\n h4.add(e);\n h5.add(f);\n h6.add(g);\n h7.add(h);\n }\n\n var result;\n if (!mode384) {\n result = new Uint8Array(64);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n h6.copyTo(result, 48);\n h7.copyTo(result, 56);\n } else {\n result = new Uint8Array(48);\n h0.copyTo(result, 0);\n h1.copyTo(result, 8);\n h2.copyTo(result, 16);\n h3.copyTo(result, 24);\n h4.copyTo(result, 32);\n h5.copyTo(result, 40);\n }\n return result;\n }\n\n return hash;\n})();\nvar calculateSHA384 = (function calculateSHA384Closure() {\n function hash(data, offset, length) {\n return calculateSHA512(data, offset, length, true);\n }\n\n return hash;\n})();\nvar NullCipher = (function NullCipherClosure() {\n function NullCipher() {\n }\n\n NullCipher.prototype = {\n decryptBlock: function NullCipher_decryptBlock(data) {\n return data;\n },\n };\n\n return NullCipher;\n})();\n\nvar AES128Cipher = (function AES128CipherClosure() {\n var rcon = new Uint8Array([\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,\n 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6,\n 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72,\n 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc,\n 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10,\n 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e,\n 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5,\n 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94,\n 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb, 0x8d, 0x01, 0x02,\n 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c, 0xd8, 0xab, 0x4d,\n 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a, 0xd4, 0xb3, 0x7d,\n 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd, 0x61, 0xc2, 0x9f,\n 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a, 0x74, 0xe8, 0xcb,\n 0x8d, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36, 0x6c,\n 0xd8, 0xab, 0x4d, 0x9a, 0x2f, 0x5e, 0xbc, 0x63, 0xc6, 0x97, 0x35, 0x6a,\n 0xd4, 0xb3, 0x7d, 0xfa, 0xef, 0xc5, 0x91, 0x39, 0x72, 0xe4, 0xd3, 0xbd,\n 0x61, 0xc2, 0x9f, 0x25, 0x4a, 0x94, 0x33, 0x66, 0xcc, 0x83, 0x1d, 0x3a,\n 0x74, 0xe8, 0xcb, 0x8d]);\n\n var s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16]);\n\n var inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d]);\n var mixCol = new Uint8Array(256);\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n mixCol[i] = i << 1;\n } else {\n mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n var mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n\n function expandKey128(cipherKey) {\n var b = 176, result = new Uint8Array(b);\n result.set(cipherKey);\n for (var j = 16, i = 1; j < b; ++i) {\n // RotWord\n var t1 = result[j - 3], t2 = result[j - 2],\n t3 = result[j - 1], t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 = t1 ^ rcon[i];\n for (var n = 0; n < 4; ++n) {\n result[j] = (t1 ^= result[j - 16]);\n j++;\n result[j] = (t2 ^= result[j - 16]);\n j++;\n result[j] = (t3 ^= result[j - 16]);\n j++;\n result[j] = (t4 ^= result[j - 16]);\n j++;\n }\n }\n return result;\n }\n\n function decrypt128(input, key) {\n var state = new Uint8Array(16);\n state.set(input);\n var i, j, k;\n var t, u, v;\n // AddRoundKey\n for (j = 0, k = 160; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (i = 9; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = inv_s[state[j]];\n }\n // AddRoundKey\n for (j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (j = 0; j < 16; j += 4) {\n var s0 = mix[state[j]], s1 = mix[state[j + 1]],\n s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];\n t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^\n (s3 >>> 24) ^ (s3 << 8));\n state[j] = (t >>> 24) & 0xFF;\n state[j + 1] = (t >> 16) & 0xFF;\n state[j + 2] = (t >> 8) & 0xFF;\n state[j + 3] = t & 0xFF;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n function encrypt128(input, key) {\n var t, u, v, k;\n var state = new Uint8Array(16);\n state.set(input);\n for (j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (i = 1; i < 10; i++) {\n // SubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (var j = 0; j < 16; j += 4) {\n var s0 = state[j + 0], s1 = state[j + 1];\n var s2 = state[j + 2], s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (j = 0, k = 160; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n return state;\n }\n\n function AES128Cipher(key) {\n this.key = expandKey128(key);\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n function decryptBlock2(data, finalize) {\n var i, j, ii, sourceLength = data.length,\n buffer = this.buffer, bufferLength = this.bufferPosition,\n result = [], iv = this.iv;\n for (i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n var plain = decrypt128(buffer, this.key);\n // xor-ing the IV vector to get plain text\n for (j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array([]);\n }\n // combining plain text blocks into one\n var outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n var lastBlock = result[result.length - 1];\n var psLen = lastBlock[15];\n if (psLen <= 16) {\n for (i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n var output = new Uint8Array(outputLength);\n for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n }\n\n AES128Cipher.prototype = {\n decryptBlock: function AES128Cipher_decryptBlock(data, finalize) {\n var i, sourceLength = data.length;\n var buffer = this.buffer, bufferLength = this.bufferPosition;\n // waiting for IV values -- they are at the start of the stream\n for (i = 0; bufferLength < 16 && i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) {\n // need more data\n this.bufferLength = bufferLength;\n return new Uint8Array([]);\n }\n this.iv = buffer;\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = decryptBlock2;\n return this.decryptBlock(data.subarray(16), finalize);\n },\n encrypt: function AES128Cipher_encrypt(data, iv) {\n var i, j, ii, sourceLength = data.length,\n buffer = this.buffer, bufferLength = this.bufferPosition,\n result = [];\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n for (j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n var cipher = encrypt128(buffer, this.key);\n iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array([]);\n }\n // combining plain text blocks into one\n var outputLength = 16 * result.length;\n var output = new Uint8Array(outputLength);\n for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n },\n };\n\n return AES128Cipher;\n})();\n\nvar AES256Cipher = (function AES256CipherClosure() {\n var s = new Uint8Array([\n 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b,\n 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,\n 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26,\n 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,\n 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2,\n 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,\n 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed,\n 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,\n 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f,\n 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,\n 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec,\n 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,\n 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14,\n 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,\n 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d,\n 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,\n 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f,\n 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,\n 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11,\n 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,\n 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f,\n 0xb0, 0x54, 0xbb, 0x16]);\n\n var inv_s = new Uint8Array([\n 0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e,\n 0x81, 0xf3, 0xd7, 0xfb, 0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87,\n 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, 0x54, 0x7b, 0x94, 0x32,\n 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e,\n 0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49,\n 0x6d, 0x8b, 0xd1, 0x25, 0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16,\n 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, 0x6c, 0x70, 0x48, 0x50,\n 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84,\n 0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05,\n 0xb8, 0xb3, 0x45, 0x06, 0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02,\n 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, 0x3a, 0x91, 0x11, 0x41,\n 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73,\n 0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8,\n 0x1c, 0x75, 0xdf, 0x6e, 0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89,\n 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, 0xfc, 0x56, 0x3e, 0x4b,\n 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4,\n 0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59,\n 0x27, 0x80, 0xec, 0x5f, 0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d,\n 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, 0xa0, 0xe0, 0x3b, 0x4d,\n 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61,\n 0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63,\n 0x55, 0x21, 0x0c, 0x7d]);\n\n var mixCol = new Uint8Array(256);\n for (var i = 0; i < 256; i++) {\n if (i < 128) {\n mixCol[i] = i << 1;\n } else {\n mixCol[i] = (i << 1) ^ 0x1b;\n }\n }\n var mix = new Uint32Array([\n 0x00000000, 0x0e090d0b, 0x1c121a16, 0x121b171d, 0x3824342c, 0x362d3927,\n 0x24362e3a, 0x2a3f2331, 0x70486858, 0x7e416553, 0x6c5a724e, 0x62537f45,\n 0x486c5c74, 0x4665517f, 0x547e4662, 0x5a774b69, 0xe090d0b0, 0xee99ddbb,\n 0xfc82caa6, 0xf28bc7ad, 0xd8b4e49c, 0xd6bde997, 0xc4a6fe8a, 0xcaaff381,\n 0x90d8b8e8, 0x9ed1b5e3, 0x8ccaa2fe, 0x82c3aff5, 0xa8fc8cc4, 0xa6f581cf,\n 0xb4ee96d2, 0xbae79bd9, 0xdb3bbb7b, 0xd532b670, 0xc729a16d, 0xc920ac66,\n 0xe31f8f57, 0xed16825c, 0xff0d9541, 0xf104984a, 0xab73d323, 0xa57ade28,\n 0xb761c935, 0xb968c43e, 0x9357e70f, 0x9d5eea04, 0x8f45fd19, 0x814cf012,\n 0x3bab6bcb, 0x35a266c0, 0x27b971dd, 0x29b07cd6, 0x038f5fe7, 0x0d8652ec,\n 0x1f9d45f1, 0x119448fa, 0x4be30393, 0x45ea0e98, 0x57f11985, 0x59f8148e,\n 0x73c737bf, 0x7dce3ab4, 0x6fd52da9, 0x61dc20a2, 0xad766df6, 0xa37f60fd,\n 0xb16477e0, 0xbf6d7aeb, 0x955259da, 0x9b5b54d1, 0x894043cc, 0x87494ec7,\n 0xdd3e05ae, 0xd33708a5, 0xc12c1fb8, 0xcf2512b3, 0xe51a3182, 0xeb133c89,\n 0xf9082b94, 0xf701269f, 0x4de6bd46, 0x43efb04d, 0x51f4a750, 0x5ffdaa5b,\n 0x75c2896a, 0x7bcb8461, 0x69d0937c, 0x67d99e77, 0x3daed51e, 0x33a7d815,\n 0x21bccf08, 0x2fb5c203, 0x058ae132, 0x0b83ec39, 0x1998fb24, 0x1791f62f,\n 0x764dd68d, 0x7844db86, 0x6a5fcc9b, 0x6456c190, 0x4e69e2a1, 0x4060efaa,\n 0x527bf8b7, 0x5c72f5bc, 0x0605bed5, 0x080cb3de, 0x1a17a4c3, 0x141ea9c8,\n 0x3e218af9, 0x302887f2, 0x223390ef, 0x2c3a9de4, 0x96dd063d, 0x98d40b36,\n 0x8acf1c2b, 0x84c61120, 0xaef93211, 0xa0f03f1a, 0xb2eb2807, 0xbce2250c,\n 0xe6956e65, 0xe89c636e, 0xfa877473, 0xf48e7978, 0xdeb15a49, 0xd0b85742,\n 0xc2a3405f, 0xccaa4d54, 0x41ecdaf7, 0x4fe5d7fc, 0x5dfec0e1, 0x53f7cdea,\n 0x79c8eedb, 0x77c1e3d0, 0x65daf4cd, 0x6bd3f9c6, 0x31a4b2af, 0x3fadbfa4,\n 0x2db6a8b9, 0x23bfa5b2, 0x09808683, 0x07898b88, 0x15929c95, 0x1b9b919e,\n 0xa17c0a47, 0xaf75074c, 0xbd6e1051, 0xb3671d5a, 0x99583e6b, 0x97513360,\n 0x854a247d, 0x8b432976, 0xd134621f, 0xdf3d6f14, 0xcd267809, 0xc32f7502,\n 0xe9105633, 0xe7195b38, 0xf5024c25, 0xfb0b412e, 0x9ad7618c, 0x94de6c87,\n 0x86c57b9a, 0x88cc7691, 0xa2f355a0, 0xacfa58ab, 0xbee14fb6, 0xb0e842bd,\n 0xea9f09d4, 0xe49604df, 0xf68d13c2, 0xf8841ec9, 0xd2bb3df8, 0xdcb230f3,\n 0xcea927ee, 0xc0a02ae5, 0x7a47b13c, 0x744ebc37, 0x6655ab2a, 0x685ca621,\n 0x42638510, 0x4c6a881b, 0x5e719f06, 0x5078920d, 0x0a0fd964, 0x0406d46f,\n 0x161dc372, 0x1814ce79, 0x322bed48, 0x3c22e043, 0x2e39f75e, 0x2030fa55,\n 0xec9ab701, 0xe293ba0a, 0xf088ad17, 0xfe81a01c, 0xd4be832d, 0xdab78e26,\n 0xc8ac993b, 0xc6a59430, 0x9cd2df59, 0x92dbd252, 0x80c0c54f, 0x8ec9c844,\n 0xa4f6eb75, 0xaaffe67e, 0xb8e4f163, 0xb6edfc68, 0x0c0a67b1, 0x02036aba,\n 0x10187da7, 0x1e1170ac, 0x342e539d, 0x3a275e96, 0x283c498b, 0x26354480,\n 0x7c420fe9, 0x724b02e2, 0x605015ff, 0x6e5918f4, 0x44663bc5, 0x4a6f36ce,\n 0x587421d3, 0x567d2cd8, 0x37a10c7a, 0x39a80171, 0x2bb3166c, 0x25ba1b67,\n 0x0f853856, 0x018c355d, 0x13972240, 0x1d9e2f4b, 0x47e96422, 0x49e06929,\n 0x5bfb7e34, 0x55f2733f, 0x7fcd500e, 0x71c45d05, 0x63df4a18, 0x6dd64713,\n 0xd731dcca, 0xd938d1c1, 0xcb23c6dc, 0xc52acbd7, 0xef15e8e6, 0xe11ce5ed,\n 0xf307f2f0, 0xfd0efffb, 0xa779b492, 0xa970b999, 0xbb6bae84, 0xb562a38f,\n 0x9f5d80be, 0x91548db5, 0x834f9aa8, 0x8d4697a3]);\n\n function expandKey256(cipherKey) {\n var b = 240, result = new Uint8Array(b);\n var r = 1;\n\n result.set(cipherKey);\n for (var j = 32, i = 1; j < b; ++i) {\n if (j % 32 === 16) {\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n } else if (j % 32 === 0) {\n // RotWord\n var t1 = result[j - 3], t2 = result[j - 2],\n t3 = result[j - 1], t4 = result[j - 4];\n // SubWord\n t1 = s[t1];\n t2 = s[t2];\n t3 = s[t3];\n t4 = s[t4];\n // Rcon\n t1 = t1 ^ r;\n if ((r <<= 1) >= 256) {\n r = (r ^ 0x1b) & 0xFF;\n }\n }\n\n for (var n = 0; n < 4; ++n) {\n result[j] = (t1 ^= result[j - 32]);\n j++;\n result[j] = (t2 ^= result[j - 32]);\n j++;\n result[j] = (t3 ^= result[j - 32]);\n j++;\n result[j] = (t4 ^= result[j - 32]);\n j++;\n }\n }\n return result;\n }\n\n function decrypt256(input, key) {\n var state = new Uint8Array(16);\n state.set(input);\n var i, j, k;\n var t, u, v;\n // AddRoundKey\n for (j = 0, k = 224; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n for (i = 13; i >= 1; --i) {\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n // InvSubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = inv_s[state[j]];\n }\n // AddRoundKey\n for (j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n // InvMixColumns\n for (j = 0; j < 16; j += 4) {\n var s0 = mix[state[j]], s1 = mix[state[j + 1]],\n s2 = mix[state[j + 2]], s3 = mix[state[j + 3]];\n t = (s0 ^ (s1 >>> 8) ^ (s1 << 24) ^ (s2 >>> 16) ^ (s2 << 16) ^\n (s3 >>> 24) ^ (s3 << 8));\n state[j] = (t >>> 24) & 0xFF;\n state[j + 1] = (t >> 16) & 0xFF;\n state[j + 2] = (t >> 8) & 0xFF;\n state[j + 3] = t & 0xFF;\n }\n }\n // InvShiftRows\n t = state[13];\n state[13] = state[9];\n state[9] = state[5];\n state[5] = state[1];\n state[1] = t;\n t = state[14];\n u = state[10];\n state[14] = state[6];\n state[10] = state[2];\n state[6] = t;\n state[2] = u;\n t = state[15];\n u = state[11];\n v = state[7];\n state[15] = state[3];\n state[11] = t;\n state[7] = u;\n state[3] = v;\n for (j = 0; j < 16; ++j) {\n // InvSubBytes\n state[j] = inv_s[state[j]];\n // AddRoundKey\n state[j] ^= key[j];\n }\n return state;\n }\n\n function encrypt256(input, key) {\n var t, u, v, k;\n var state = new Uint8Array(16);\n state.set(input);\n for (j = 0; j < 16; ++j) {\n // AddRoundKey\n state[j] ^= key[j];\n }\n\n for (i = 1; i < 14; i++) {\n // SubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // MixColumns\n for (var j = 0; j < 16; j += 4) {\n var s0 = state[j + 0], s1 = state[j + 1];\n var s2 = state[j + 2], s3 = state[j + 3];\n t = s0 ^ s1 ^ s2 ^ s3;\n state[j + 0] ^= t ^ mixCol[s0 ^ s1];\n state[j + 1] ^= t ^ mixCol[s1 ^ s2];\n state[j + 2] ^= t ^ mixCol[s2 ^ s3];\n state[j + 3] ^= t ^ mixCol[s3 ^ s0];\n }\n // AddRoundKey\n for (j = 0, k = i * 16; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n }\n\n // SubBytes\n for (j = 0; j < 16; ++j) {\n state[j] = s[state[j]];\n }\n // ShiftRows\n v = state[1];\n state[1] = state[5];\n state[5] = state[9];\n state[9] = state[13];\n state[13] = v;\n v = state[2];\n u = state[6];\n state[2] = state[10];\n state[6] = state[14];\n state[10] = v;\n state[14] = u;\n v = state[3];\n u = state[7];\n t = state[11];\n state[3] = state[15];\n state[7] = v;\n state[11] = u;\n state[15] = t;\n // AddRoundKey\n for (j = 0, k = 224; j < 16; ++j, ++k) {\n state[j] ^= key[k];\n }\n\n return state;\n\n }\n\n function AES256Cipher(key) {\n this.key = expandKey256(key);\n this.buffer = new Uint8Array(16);\n this.bufferPosition = 0;\n }\n\n function decryptBlock2(data, finalize) {\n var i, j, ii, sourceLength = data.length,\n buffer = this.buffer, bufferLength = this.bufferPosition,\n result = [], iv = this.iv;\n\n for (i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n // buffer is full, decrypting\n var plain = decrypt256(buffer, this.key);\n // xor-ing the IV vector to get plain text\n for (j = 0; j < 16; ++j) {\n plain[j] ^= iv[j];\n }\n iv = buffer;\n result.push(plain);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array([]);\n }\n // combining plain text blocks into one\n var outputLength = 16 * result.length;\n if (finalize) {\n // undo a padding that is described in RFC 2898\n var lastBlock = result[result.length - 1];\n var psLen = lastBlock[15];\n if (psLen <= 16) {\n for (i = 15, ii = 16 - psLen; i >= ii; --i) {\n if (lastBlock[i] !== psLen) {\n // Invalid padding, assume that the block has no padding.\n psLen = 0;\n break;\n }\n }\n outputLength -= psLen;\n result[result.length - 1] = lastBlock.subarray(0, 16 - psLen);\n }\n }\n var output = new Uint8Array(outputLength);\n for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n\n }\n\n AES256Cipher.prototype = {\n decryptBlock: function AES256Cipher_decryptBlock(data, finalize, iv) {\n var i, sourceLength = data.length;\n var buffer = this.buffer, bufferLength = this.bufferPosition;\n // if not supplied an IV wait for IV values\n // they are at the start of the stream\n if (iv) {\n this.iv = iv;\n } else {\n for (i = 0; bufferLength < 16 &&\n i < sourceLength; ++i, ++bufferLength) {\n buffer[bufferLength] = data[i];\n }\n if (bufferLength < 16) { // Need more data.\n this.bufferLength = bufferLength;\n return new Uint8Array([]);\n }\n this.iv = buffer;\n data = data.subarray(16);\n }\n this.buffer = new Uint8Array(16);\n this.bufferLength = 0;\n // starting decryption\n this.decryptBlock = decryptBlock2;\n return this.decryptBlock(data, finalize);\n },\n encrypt: function AES256Cipher_encrypt(data, iv) {\n var i, j, ii, sourceLength = data.length,\n buffer = this.buffer, bufferLength = this.bufferPosition,\n result = [];\n if (!iv) {\n iv = new Uint8Array(16);\n }\n for (i = 0; i < sourceLength; ++i) {\n buffer[bufferLength] = data[i];\n ++bufferLength;\n if (bufferLength < 16) {\n continue;\n }\n for (j = 0; j < 16; ++j) {\n buffer[j] ^= iv[j];\n }\n\n // buffer is full, encrypting\n var cipher = encrypt256(buffer, this.key);\n this.iv = cipher;\n result.push(cipher);\n buffer = new Uint8Array(16);\n bufferLength = 0;\n }\n // saving incomplete buffer\n this.buffer = buffer;\n this.bufferLength = bufferLength;\n this.iv = iv;\n if (result.length === 0) {\n return new Uint8Array([]);\n }\n // combining plain text blocks into one\n var outputLength = 16 * result.length;\n var output = new Uint8Array(outputLength);\n for (i = 0, j = 0, ii = result.length; i < ii; ++i, j += 16) {\n output.set(result[i], j);\n }\n return output;\n },\n };\n\n return AES256Cipher;\n})();\n\nvar PDF17 = (function PDF17Closure() {\n\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n\n function PDF17() {\n }\n\n PDF17.prototype = {\n checkOwnerPassword: function PDF17_checkOwnerPassword(password,\n ownerValidationSalt,\n userBytes,\n ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF17_checkUserPassword(password,\n userValidationSalt,\n userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculateSHA256(hashData, 0, hashData.length);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF17_getOwnerKey(password, ownerKeySalt, userBytes,\n ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption,\n false,\n new Uint8Array(16));\n\n },\n getUserKey: function PDF17_getUserKey(password, userKeySalt,\n userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n var key = calculateSHA256(hashData, 0, hashData.length);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption,\n false,\n new Uint8Array(16));\n },\n };\n return PDF17;\n})();\n\nvar PDF20 = (function PDF20Closure() {\n\n function concatArrays(array1, array2) {\n var t = new Uint8Array(array1.length + array2.length);\n t.set(array1, 0);\n t.set(array2, array1.length);\n return t;\n }\n\n function calculatePDF20Hash(password, input, userBytes) {\n // This refers to Algorithm 2.B as defined in ISO 32000-2.\n var k = calculateSHA256(input, 0, input.length).subarray(0, 32);\n var e = [0];\n var i = 0;\n while (i < 64 || e[e.length - 1] > i - 32) {\n var arrayLength = password.length + k.length + userBytes.length;\n\n var k1 = new Uint8Array(arrayLength * 64);\n var array = concatArrays(password, k);\n array = concatArrays(array, userBytes);\n for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {\n k1.set(array, pos);\n }\n // AES128 CBC NO PADDING with first 16 bytes of k as the key\n // and the second 16 as the iv.\n var cipher = new AES128Cipher(k.subarray(0, 16));\n e = cipher.encrypt(k1, k.subarray(16, 32));\n // Now we have to take the first 16 bytes of an unsigned big endian\n // integer and compute the remainder modulo 3. That is a fairly large\n // number and JavaScript isn't going to handle that well, so we're using\n // a trick that allows us to perform modulo math byte by byte.\n var remainder = 0;\n for (var z = 0; z < 16; z++) {\n remainder *= (256 % 3);\n remainder %= 3;\n remainder += ((e[z] >>> 0) % 3);\n remainder %= 3;\n }\n if (remainder === 0) {\n k = calculateSHA256(e, 0, e.length);\n } else if (remainder === 1) {\n k = calculateSHA384(e, 0, e.length);\n } else if (remainder === 2) {\n k = calculateSHA512(e, 0, e.length);\n }\n i++;\n }\n return k.subarray(0, 32);\n }\n\n function PDF20() {\n }\n\n function compareByteArrays(array1, array2) {\n if (array1.length !== array2.length) {\n return false;\n }\n for (var i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n }\n\n PDF20.prototype = {\n hash: function PDF20_hash(password, concatBytes, userBytes) {\n return calculatePDF20Hash(password, concatBytes, userBytes);\n },\n checkOwnerPassword: function PDF20_checkOwnerPassword(password,\n ownerValidationSalt,\n userBytes,\n ownerPassword) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerValidationSalt, password.length);\n hashData.set(userBytes, password.length + ownerValidationSalt.length);\n var result = calculatePDF20Hash(password, hashData, userBytes);\n return compareByteArrays(result, ownerPassword);\n },\n checkUserPassword: function PDF20_checkUserPassword(password,\n userValidationSalt,\n userPassword) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userValidationSalt, password.length);\n var result = calculatePDF20Hash(password, hashData, []);\n return compareByteArrays(result, userPassword);\n },\n getOwnerKey: function PDF20_getOwnerKey(password, ownerKeySalt, userBytes,\n ownerEncryption) {\n var hashData = new Uint8Array(password.length + 56);\n hashData.set(password, 0);\n hashData.set(ownerKeySalt, password.length);\n hashData.set(userBytes, password.length + ownerKeySalt.length);\n var key = calculatePDF20Hash(password, hashData, userBytes);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(ownerEncryption,\n false,\n new Uint8Array(16));\n\n },\n getUserKey: function PDF20_getUserKey(password, userKeySalt,\n userEncryption) {\n var hashData = new Uint8Array(password.length + 8);\n hashData.set(password, 0);\n hashData.set(userKeySalt, password.length);\n // `key` is the decryption key for the UE string.\n var key = calculatePDF20Hash(password, hashData, []);\n var cipher = new AES256Cipher(key);\n return cipher.decryptBlock(userEncryption,\n false,\n new Uint8Array(16));\n },\n };\n return PDF20;\n})();\n\nvar CipherTransform = (function CipherTransformClosure() {\n function CipherTransform(stringCipherConstructor, streamCipherConstructor) {\n this.StringCipherConstructor = stringCipherConstructor;\n this.StreamCipherConstructor = streamCipherConstructor;\n }\n\n CipherTransform.prototype = {\n createStream: function CipherTransform_createStream(stream, length) {\n var cipher = new this.StreamCipherConstructor();\n return new DecryptStream(stream, length,\n function cipherTransformDecryptStream(data, finalize) {\n return cipher.decryptBlock(data, finalize);\n }\n );\n },\n decryptString: function CipherTransform_decryptString(s) {\n var cipher = new this.StringCipherConstructor();\n var data = stringToBytes(s);\n data = cipher.decryptBlock(data, true);\n return bytesToString(data);\n },\n };\n return CipherTransform;\n})();\n\nvar CipherTransformFactory = (function CipherTransformFactoryClosure() {\n var defaultPasswordBytes = new Uint8Array([\n 0x28, 0xBF, 0x4E, 0x5E, 0x4E, 0x75, 0x8A, 0x41,\n 0x64, 0x00, 0x4E, 0x56, 0xFF, 0xFA, 0x01, 0x08,\n 0x2E, 0x2E, 0x00, 0xB6, 0xD0, 0x68, 0x3E, 0x80,\n 0x2F, 0x0C, 0xA9, 0xFE, 0x64, 0x53, 0x69, 0x7A]);\n\n function createEncryptionKey20(revision, password, ownerPassword,\n ownerValidationSalt, ownerKeySalt, uBytes,\n userPassword, userValidationSalt, userKeySalt,\n ownerEncryption, userEncryption, perms) {\n if (password) {\n var passwordLength = Math.min(127, password.length);\n password = password.subarray(0, passwordLength);\n } else {\n password = [];\n }\n var pdfAlgorithm;\n if (revision === 6) {\n pdfAlgorithm = new PDF20();\n } else {\n pdfAlgorithm = new PDF17();\n }\n\n if (pdfAlgorithm.checkUserPassword(password, userValidationSalt,\n userPassword)) {\n return pdfAlgorithm.getUserKey(password, userKeySalt, userEncryption);\n } else if (password.length && pdfAlgorithm.checkOwnerPassword(password,\n ownerValidationSalt,\n uBytes,\n ownerPassword)) {\n return pdfAlgorithm.getOwnerKey(password, ownerKeySalt, uBytes,\n ownerEncryption);\n }\n\n return null;\n }\n\n function prepareKeyData(fileId, password, ownerPassword, userPassword,\n flags, revision, keyLength, encryptMetadata) {\n var hashDataSize = 40 + ownerPassword.length + fileId.length;\n var hashData = new Uint8Array(hashDataSize), i = 0, j, n;\n if (password) {\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n // as now the padded password in the hashData[0..i]\n for (j = 0, n = ownerPassword.length; j < n; ++j) {\n hashData[i++] = ownerPassword[j];\n }\n hashData[i++] = flags & 0xFF;\n hashData[i++] = (flags >> 8) & 0xFF;\n hashData[i++] = (flags >> 16) & 0xFF;\n hashData[i++] = (flags >>> 24) & 0xFF;\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n if (revision >= 4 && !encryptMetadata) {\n hashData[i++] = 0xFF;\n hashData[i++] = 0xFF;\n hashData[i++] = 0xFF;\n hashData[i++] = 0xFF;\n }\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, keyLengthInBytes);\n }\n }\n var encryptionKey = hash.subarray(0, keyLengthInBytes);\n var cipher, checkData;\n\n if (revision >= 3) {\n for (i = 0; i < 32; ++i) {\n hashData[i] = defaultPasswordBytes[i];\n }\n for (j = 0, n = fileId.length; j < n; ++j) {\n hashData[i++] = fileId[j];\n }\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(calculateMD5(hashData, 0, i));\n n = encryptionKey.length;\n var derivedKey = new Uint8Array(n), k;\n for (j = 1; j <= 19; ++j) {\n for (k = 0; k < n; ++k) {\n derivedKey[k] = encryptionKey[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n checkData = cipher.encryptBlock(checkData);\n }\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n } else {\n cipher = new ARCFourCipher(encryptionKey);\n checkData = cipher.encryptBlock(defaultPasswordBytes);\n for (j = 0, n = checkData.length; j < n; ++j) {\n if (userPassword[j] !== checkData[j]) {\n return null;\n }\n }\n }\n return encryptionKey;\n }\n\n function decodeUserPassword(password, ownerPassword, revision, keyLength) {\n var hashData = new Uint8Array(32), i = 0, j, n;\n n = Math.min(32, password.length);\n for (; i < n; ++i) {\n hashData[i] = password[i];\n }\n j = 0;\n while (i < 32) {\n hashData[i++] = defaultPasswordBytes[j++];\n }\n var hash = calculateMD5(hashData, 0, i);\n var keyLengthInBytes = keyLength >> 3;\n if (revision >= 3) {\n for (j = 0; j < 50; ++j) {\n hash = calculateMD5(hash, 0, hash.length);\n }\n }\n\n var cipher, userPassword;\n if (revision >= 3) {\n userPassword = ownerPassword;\n var derivedKey = new Uint8Array(keyLengthInBytes), k;\n for (j = 19; j >= 0; j--) {\n for (k = 0; k < keyLengthInBytes; ++k) {\n derivedKey[k] = hash[k] ^ j;\n }\n cipher = new ARCFourCipher(derivedKey);\n userPassword = cipher.encryptBlock(userPassword);\n }\n } else {\n cipher = new ARCFourCipher(hash.subarray(0, keyLengthInBytes));\n userPassword = cipher.encryptBlock(ownerPassword);\n }\n return userPassword;\n }\n\n var identityName = Name.get('Identity');\n\n function CipherTransformFactory(dict, fileId, password) {\n var filter = dict.get('Filter');\n if (!isName(filter, 'Standard')) {\n throw new FormatError('unknown encryption method');\n }\n this.dict = dict;\n var algorithm = dict.get('V');\n if (!isInt(algorithm) ||\n (algorithm !== 1 && algorithm !== 2 && algorithm !== 4 &&\n algorithm !== 5)) {\n throw new FormatError('unsupported encryption algorithm');\n }\n this.algorithm = algorithm;\n var keyLength = dict.get('Length');\n if (!keyLength) {\n // Spec asks to rely on encryption dictionary's Length entry, however\n // some PDFs don't have it. Trying to recover.\n if (algorithm <= 3) {\n // For 1 and 2 it's fixed to 40-bit, for 3 40-bit is a minimal value.\n keyLength = 40;\n } else {\n // Trying to find default handler -- it usually has Length.\n var cfDict = dict.get('CF');\n var streamCryptoName = dict.get('StmF');\n if (isDict(cfDict) && isName(streamCryptoName)) {\n cfDict.suppressEncryption = true; // See comment below.\n var handlerDict = cfDict.get(streamCryptoName.name);\n keyLength = (handlerDict && handlerDict.get('Length')) || 128;\n if (keyLength < 40) {\n // Sometimes it's incorrect value of bits, generators specify bytes.\n keyLength <<= 3;\n }\n }\n }\n }\n if (!isInt(keyLength) ||\n keyLength < 40 || (keyLength % 8) !== 0) {\n throw new FormatError('invalid key length');\n }\n\n // prepare keys\n var ownerPassword = stringToBytes(dict.get('O')).subarray(0, 32);\n var userPassword = stringToBytes(dict.get('U')).subarray(0, 32);\n var flags = dict.get('P');\n var revision = dict.get('R');\n // meaningful when V is 4 or 5\n var encryptMetadata = ((algorithm === 4 || algorithm === 5) &&\n dict.get('EncryptMetadata') !== false);\n this.encryptMetadata = encryptMetadata;\n\n var fileIdBytes = stringToBytes(fileId);\n var passwordBytes;\n if (password) {\n if (revision === 6) {\n try {\n password = utf8StringToString(password);\n } catch (ex) {\n warn('CipherTransformFactory: ' +\n 'Unable to convert UTF8 encoded password.');\n }\n }\n passwordBytes = stringToBytes(password);\n }\n\n var encryptionKey;\n if (algorithm !== 5) {\n encryptionKey = prepareKeyData(fileIdBytes, passwordBytes,\n ownerPassword, userPassword, flags,\n revision, keyLength, encryptMetadata);\n } else {\n var ownerValidationSalt = stringToBytes(dict.get('O')).subarray(32, 40);\n var ownerKeySalt = stringToBytes(dict.get('O')).subarray(40, 48);\n var uBytes = stringToBytes(dict.get('U')).subarray(0, 48);\n var userValidationSalt = stringToBytes(dict.get('U')).subarray(32, 40);\n var userKeySalt = stringToBytes(dict.get('U')).subarray(40, 48);\n var ownerEncryption = stringToBytes(dict.get('OE'));\n var userEncryption = stringToBytes(dict.get('UE'));\n var perms = stringToBytes(dict.get('Perms'));\n encryptionKey =\n createEncryptionKey20(revision, passwordBytes,\n ownerPassword, ownerValidationSalt,\n ownerKeySalt, uBytes,\n userPassword, userValidationSalt,\n userKeySalt, ownerEncryption,\n userEncryption, perms);\n }\n if (!encryptionKey && !password) {\n throw new PasswordException('No password given',\n PasswordResponses.NEED_PASSWORD);\n } else if (!encryptionKey && password) {\n // Attempting use the password as an owner password\n var decodedPassword = decodeUserPassword(passwordBytes, ownerPassword,\n revision, keyLength);\n encryptionKey = prepareKeyData(fileIdBytes, decodedPassword,\n ownerPassword, userPassword, flags,\n revision, keyLength, encryptMetadata);\n }\n\n if (!encryptionKey) {\n throw new PasswordException('Incorrect Password',\n PasswordResponses.INCORRECT_PASSWORD);\n }\n\n this.encryptionKey = encryptionKey;\n\n if (algorithm >= 4) {\n var cf = dict.get('CF');\n if (isDict(cf)) {\n // The 'CF' dictionary itself should not be encrypted, and by setting\n // `suppressEncryption` we can prevent an infinite loop inside of\n // `XRef_fetchUncompressed` if the dictionary contains indirect objects\n // (fixes issue7665.pdf).\n cf.suppressEncryption = true;\n }\n this.cf = cf;\n this.stmf = dict.get('StmF') || identityName;\n this.strf = dict.get('StrF') || identityName;\n this.eff = dict.get('EFF') || this.stmf;\n }\n }\n\n function buildObjectKey(num, gen, encryptionKey, isAes) {\n var key = new Uint8Array(encryptionKey.length + 9), i, n;\n for (i = 0, n = encryptionKey.length; i < n; ++i) {\n key[i] = encryptionKey[i];\n }\n key[i++] = num & 0xFF;\n key[i++] = (num >> 8) & 0xFF;\n key[i++] = (num >> 16) & 0xFF;\n key[i++] = gen & 0xFF;\n key[i++] = (gen >> 8) & 0xFF;\n if (isAes) {\n key[i++] = 0x73;\n key[i++] = 0x41;\n key[i++] = 0x6C;\n key[i++] = 0x54;\n }\n var hash = calculateMD5(key, 0, i);\n return hash.subarray(0, Math.min(encryptionKey.length + 5, 16));\n }\n\n function buildCipherConstructor(cf, name, num, gen, key) {\n if (!isName(name)) {\n throw new FormatError('Invalid crypt filter name.');\n }\n var cryptFilter = cf.get(name.name);\n var cfm;\n if (cryptFilter !== null && cryptFilter !== undefined) {\n cfm = cryptFilter.get('CFM');\n }\n if (!cfm || cfm.name === 'None') {\n return function cipherTransformFactoryBuildCipherConstructorNone() {\n return new NullCipher();\n };\n }\n if (cfm.name === 'V2') {\n return function cipherTransformFactoryBuildCipherConstructorV2() {\n return new ARCFourCipher(buildObjectKey(num, gen, key, false));\n };\n }\n if (cfm.name === 'AESV2') {\n return function cipherTransformFactoryBuildCipherConstructorAESV2() {\n return new AES128Cipher(buildObjectKey(num, gen, key, true));\n };\n }\n if (cfm.name === 'AESV3') {\n return function cipherTransformFactoryBuildCipherConstructorAESV3() {\n return new AES256Cipher(key);\n };\n }\n throw new FormatError('Unknown crypto method');\n }\n\n CipherTransformFactory.prototype = {\n createCipherTransform:\n function CipherTransformFactory_createCipherTransform(num, gen) {\n if (this.algorithm === 4 || this.algorithm === 5) {\n return new CipherTransform(\n buildCipherConstructor(this.cf, this.stmf,\n num, gen, this.encryptionKey),\n buildCipherConstructor(this.cf, this.strf,\n num, gen, this.encryptionKey));\n }\n // algorithms 1 and 2\n var key = buildObjectKey(num, gen, this.encryptionKey, false);\n var cipherConstructor = function buildCipherCipherConstructor() {\n return new ARCFourCipher(key);\n };\n return new CipherTransform(cipherConstructor, cipherConstructor);\n },\n };\n\n return CipherTransformFactory;\n})();\n\nexport {\n AES128Cipher,\n AES256Cipher,\n ARCFourCipher,\n CipherTransformFactory,\n PDF17,\n PDF20,\n calculateMD5,\n calculateSHA256,\n calculateSHA384,\n calculateSHA512,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/crypto.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException, assert, CMapCompressionType, createPromiseCapability,\n FONT_IDENTITY_MATRIX, FormatError, getLookupTableFactory, IDENTITY_MATRIX,\n ImageKind, info, isArray, isNum, isString, NativeImageDecoding, OPS,\n TextRenderingMode, UNSUPPORTED_FEATURES, Util, warn\n} from '../shared/util';\nimport { CMapFactory, IdentityCMap } from './cmap';\nimport { DecodeStream, JpegStream, Stream } from './stream';\nimport {\n Dict, isCmd, isDict, isEOF, isName, isRef, isStream, Name\n} from './primitives';\nimport {\n ErrorFont, Font, FontFlags, getFontType, IdentityToUnicodeMap, ToUnicodeMap\n} from './fonts';\nimport {\n getEncoding, MacRomanEncoding, StandardEncoding, SymbolSetEncoding,\n WinAnsiEncoding, ZapfDingbatsEncoding\n} from './encodings';\nimport {\n getNormalizedUnicodes, getUnicodeForGlyph, reverseIfRtl\n} from './unicode';\nimport {\n getSerifFonts, getStdFontMap, getSymbolsFonts\n} from './standard_fonts';\nimport { getTilingPatternIR, Pattern } from './pattern';\nimport { isPDFFunction, PDFFunction } from './function';\nimport { Lexer, Parser } from './parser';\nimport { bidi } from './bidi';\nimport { ColorSpace } from './colorspace';\nimport { getGlyphsUnicode } from './glyphlist';\nimport { getMetrics } from './metrics';\nimport { MurmurHash3_64 } from './murmurhash3';\nimport { PDFImage } from './image';\n\nvar PartialEvaluator = (function PartialEvaluatorClosure() {\n const DefaultPartialEvaluatorOptions = {\n forceDataSchema: false,\n maxImageSize: -1,\n disableFontFace: false,\n nativeImageDecoderSupport: NativeImageDecoding.DECODE,\n ignoreErrors: false,\n };\n\n function NativeImageDecoder(xref, resources, handler, forceDataSchema) {\n this.xref = xref;\n this.resources = resources;\n this.handler = handler;\n this.forceDataSchema = forceDataSchema;\n }\n NativeImageDecoder.prototype = {\n canDecode(image) {\n return image instanceof JpegStream &&\n NativeImageDecoder.isDecodable(image, this.xref, this.resources);\n },\n decode(image) {\n // For natively supported JPEGs send them to the main thread for decoding.\n var dict = image.dict;\n var colorSpace = dict.get('ColorSpace', 'CS');\n colorSpace = ColorSpace.parse(colorSpace, this.xref, this.resources);\n var numComps = colorSpace.numComps;\n var decodePromise = this.handler.sendWithPromise('JpegDecode',\n [image.getIR(this.forceDataSchema), numComps]);\n return decodePromise.then(function (message) {\n var data = message.data;\n return new Stream(data, 0, data.length, image.dict);\n });\n },\n };\n /**\n * Checks if the image can be decoded and displayed by the browser without any\n * further processing such as color space conversions.\n */\n NativeImageDecoder.isSupported =\n function NativeImageDecoder_isSupported(image, xref, res) {\n var dict = image.dict;\n if (dict.has('DecodeParms') || dict.has('DP')) {\n return false;\n }\n var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res);\n return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') &&\n cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n };\n /**\n * Checks if the image can be decoded by the browser.\n */\n NativeImageDecoder.isDecodable =\n function NativeImageDecoder_isDecodable(image, xref, res) {\n var dict = image.dict;\n if (dict.has('DecodeParms') || dict.has('DP')) {\n return false;\n }\n var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res);\n return (cs.numComps === 1 || cs.numComps === 3) &&\n cs.isDefaultDecode(dict.getArray('Decode', 'D'));\n };\n\n function PartialEvaluator({ pdfManager, xref, handler, pageIndex, idFactory,\n fontCache, builtInCMapCache, options = null, }) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this.handler = handler;\n this.pageIndex = pageIndex;\n this.idFactory = idFactory;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.options = options || DefaultPartialEvaluatorOptions;\n\n this.fetchBuiltInCMap = (name) => {\n var cachedCMap = this.builtInCMapCache[name];\n if (cachedCMap) {\n return Promise.resolve(cachedCMap);\n }\n return this.handler.sendWithPromise('FetchBuiltInCMap', {\n name,\n }).then((data) => {\n if (data.compressionType !== CMapCompressionType.NONE) {\n // Given the size of uncompressed CMaps, only cache compressed ones.\n this.builtInCMapCache[name] = data;\n }\n return data;\n });\n };\n }\n\n // Trying to minimize Date.now() usage and check every 100 time\n var TIME_SLOT_DURATION_MS = 20;\n var CHECK_TIME_EVERY = 100;\n function TimeSlotManager() {\n this.reset();\n }\n TimeSlotManager.prototype = {\n check: function TimeSlotManager_check() {\n if (++this.checked < CHECK_TIME_EVERY) {\n return false;\n }\n this.checked = 0;\n return this.endTime <= Date.now();\n },\n reset: function TimeSlotManager_reset() {\n this.endTime = Date.now() + TIME_SLOT_DURATION_MS;\n this.checked = 0;\n },\n };\n\n // Convert PDF blend mode names to HTML5 blend mode names.\n function normalizeBlendMode(value) {\n if (!isName(value)) {\n return 'source-over';\n }\n switch (value.name) {\n case 'Normal':\n case 'Compatible':\n return 'source-over';\n case 'Multiply':\n return 'multiply';\n case 'Screen':\n return 'screen';\n case 'Overlay':\n return 'overlay';\n case 'Darken':\n return 'darken';\n case 'Lighten':\n return 'lighten';\n case 'ColorDodge':\n return 'color-dodge';\n case 'ColorBurn':\n return 'color-burn';\n case 'HardLight':\n return 'hard-light';\n case 'SoftLight':\n return 'soft-light';\n case 'Difference':\n return 'difference';\n case 'Exclusion':\n return 'exclusion';\n case 'Hue':\n return 'hue';\n case 'Saturation':\n return 'saturation';\n case 'Color':\n return 'color';\n case 'Luminosity':\n return 'luminosity';\n }\n warn('Unsupported blend mode: ' + value.name);\n return 'source-over';\n }\n\n var deferred = Promise.resolve();\n\n var TILING_PATTERN = 1, SHADING_PATTERN = 2;\n\n PartialEvaluator.prototype = {\n clone(newOptions = DefaultPartialEvaluatorOptions) {\n var newEvaluator = Object.create(this);\n newEvaluator.options = newOptions;\n return newEvaluator;\n },\n\n hasBlendModes: function PartialEvaluator_hasBlendModes(resources) {\n if (!isDict(resources)) {\n return false;\n }\n\n var processed = Object.create(null);\n if (resources.objId) {\n processed[resources.objId] = true;\n }\n\n var nodes = [resources], xref = this.xref;\n while (nodes.length) {\n var key, i, ii;\n var node = nodes.shift();\n // First check the current resources for blend modes.\n var graphicStates = node.get('ExtGState');\n if (isDict(graphicStates)) {\n var graphicStatesKeys = graphicStates.getKeys();\n for (i = 0, ii = graphicStatesKeys.length; i < ii; i++) {\n key = graphicStatesKeys[i];\n\n var graphicState = graphicStates.get(key);\n var bm = graphicState.get('BM');\n if (isName(bm) && bm.name !== 'Normal') {\n return true;\n }\n }\n }\n // Descend into the XObjects to look for more resources and blend modes.\n var xObjects = node.get('XObject');\n if (!isDict(xObjects)) {\n continue;\n }\n var xObjectsKeys = xObjects.getKeys();\n for (i = 0, ii = xObjectsKeys.length; i < ii; i++) {\n key = xObjectsKeys[i];\n\n var xObject = xObjects.getRaw(key);\n if (isRef(xObject)) {\n if (processed[xObject.toString()]) {\n // The XObject has already been processed, and by avoiding a\n // redundant `xref.fetch` we can *significantly* reduce the load\n // time for badly generated PDF files (fixes issue6961.pdf).\n continue;\n }\n xObject = xref.fetch(xObject);\n }\n if (!isStream(xObject)) {\n continue;\n }\n if (xObject.dict.objId) {\n if (processed[xObject.dict.objId]) {\n // stream has objId and is processed already\n continue;\n }\n processed[xObject.dict.objId] = true;\n }\n var xResources = xObject.dict.get('Resources');\n // Checking objId to detect an infinite loop.\n if (isDict(xResources) &&\n (!xResources.objId || !processed[xResources.objId])) {\n nodes.push(xResources);\n if (xResources.objId) {\n processed[xResources.objId] = true;\n }\n }\n }\n }\n return false;\n },\n\n buildFormXObject: function PartialEvaluator_buildFormXObject(resources,\n xobj, smask,\n operatorList,\n task,\n initialState) {\n var dict = xobj.dict;\n var matrix = dict.getArray('Matrix');\n var bbox = dict.getArray('BBox');\n var group = dict.get('Group');\n if (group) {\n var groupOptions = {\n matrix,\n bbox,\n smask,\n isolated: false,\n knockout: false,\n };\n\n var groupSubtype = group.get('S');\n var colorSpace;\n if (isName(groupSubtype, 'Transparency')) {\n groupOptions.isolated = (group.get('I') || false);\n groupOptions.knockout = (group.get('K') || false);\n colorSpace = (group.has('CS') ?\n ColorSpace.parse(group.get('CS'), this.xref, resources) : null);\n }\n\n if (smask && smask.backdrop) {\n colorSpace = colorSpace || ColorSpace.singletons.rgb;\n smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);\n }\n\n operatorList.addOp(OPS.beginGroup, [groupOptions]);\n }\n\n operatorList.addOp(OPS.paintFormXObjectBegin, [matrix, bbox]);\n\n return this.getOperatorList({\n stream: xobj,\n task,\n resources: dict.get('Resources') || resources,\n operatorList,\n initialState,\n }).then(function () {\n operatorList.addOp(OPS.paintFormXObjectEnd, []);\n\n if (group) {\n operatorList.addOp(OPS.endGroup, [groupOptions]);\n }\n });\n },\n\n buildPaintImageXObject:\n function PartialEvaluator_buildPaintImageXObject(resources, image,\n inline, operatorList,\n cacheKey, imageCache) {\n var dict = image.dict;\n var w = dict.get('Width', 'W');\n var h = dict.get('Height', 'H');\n\n if (!(w && isNum(w)) || !(h && isNum(h))) {\n warn('Image dimensions are missing, or not numbers.');\n return;\n }\n var maxImageSize = this.options.maxImageSize;\n if (maxImageSize !== -1 && w * h > maxImageSize) {\n warn('Image exceeded maximum allowed size and was removed.');\n return;\n }\n\n var imageMask = (dict.get('ImageMask', 'IM') || false);\n var imgData, args;\n if (imageMask) {\n // This depends on a tmpCanvas being filled with the\n // current fillStyle, such that processing the pixel\n // data can't be done here. Instead of creating a\n // complete PDFImage, only read the information needed\n // for later.\n\n var width = dict.get('Width', 'W');\n var height = dict.get('Height', 'H');\n var bitStrideLength = (width + 7) >> 3;\n var imgArray = image.getBytes(bitStrideLength * height);\n var decode = dict.getArray('Decode', 'D');\n var inverseDecode = (!!decode && decode[0] > 0);\n\n imgData = PDFImage.createMask(imgArray, width, height,\n image instanceof DecodeStream,\n inverseDecode);\n imgData.cached = true;\n args = [imgData];\n operatorList.addOp(OPS.paintImageMaskXObject, args);\n if (cacheKey) {\n imageCache[cacheKey] = {\n fn: OPS.paintImageMaskXObject,\n args,\n };\n }\n return;\n }\n\n var softMask = (dict.get('SMask', 'SM') || false);\n var mask = (dict.get('Mask') || false);\n\n var SMALL_IMAGE_DIMENSIONS = 200;\n // Inlining small images into the queue as RGB data\n if (inline && !softMask && !mask && !(image instanceof JpegStream) &&\n (w + h) < SMALL_IMAGE_DIMENSIONS) {\n var imageObj = new PDFImage(this.xref, resources, image,\n inline, null, null);\n // We force the use of RGBA_32BPP images here, because we can't handle\n // any other kind.\n imgData = imageObj.createImageData(/* forceRGBA = */ true);\n operatorList.addOp(OPS.paintInlineImageXObject, [imgData]);\n return;\n }\n\n var nativeImageDecoderSupport = this.options.nativeImageDecoderSupport;\n // If there is no imageMask, create the PDFImage and a lot\n // of image processing can be done here.\n var objId = 'img_' + this.idFactory.createObjId();\n operatorList.addDependency(objId);\n args = [objId, w, h];\n\n if (nativeImageDecoderSupport !== NativeImageDecoding.NONE &&\n !softMask && !mask && image instanceof JpegStream &&\n NativeImageDecoder.isSupported(image, this.xref, resources)) {\n // These JPEGs don't need any more processing so we can just send it.\n operatorList.addOp(OPS.paintJpegXObject, args);\n this.handler.send('obj', [objId, this.pageIndex, 'JpegStream',\n image.getIR(this.options.forceDataSchema)]);\n if (cacheKey) {\n imageCache[cacheKey] = {\n fn: OPS.paintJpegXObject,\n args,\n };\n }\n return;\n }\n\n // Creates native image decoder only if a JPEG image or mask is present.\n var nativeImageDecoder = null;\n if (nativeImageDecoderSupport === NativeImageDecoding.DECODE &&\n (image instanceof JpegStream || mask instanceof JpegStream ||\n softMask instanceof JpegStream)) {\n nativeImageDecoder = new NativeImageDecoder(this.xref, resources,\n this.handler, this.options.forceDataSchema);\n }\n\n PDFImage.buildImage(this.handler, this.xref, resources, image, inline,\n nativeImageDecoder).then((imageObj) => {\n var imgData = imageObj.createImageData(/* forceRGBA = */ false);\n this.handler.send('obj', [objId, this.pageIndex, 'Image', imgData],\n [imgData.data.buffer]);\n }).catch((reason) => {\n warn('Unable to decode image: ' + reason);\n this.handler.send('obj', [objId, this.pageIndex, 'Image', null]);\n });\n\n operatorList.addOp(OPS.paintImageXObject, args);\n if (cacheKey) {\n imageCache[cacheKey] = {\n fn: OPS.paintImageXObject,\n args,\n };\n }\n },\n\n handleSMask: function PartialEvaluator_handleSmask(smask, resources,\n operatorList, task,\n stateManager) {\n var smaskContent = smask.get('G');\n var smaskOptions = {\n subtype: smask.get('S').name,\n backdrop: smask.get('BC'),\n };\n\n // The SMask might have a alpha/luminosity value transfer function --\n // we will build a map of integer values in range 0..255 to be fast.\n var transferObj = smask.get('TR');\n if (isPDFFunction(transferObj)) {\n var transferFn = PDFFunction.parse(this.xref, transferObj);\n var transferMap = new Uint8Array(256);\n var tmp = new Float32Array(1);\n for (var i = 0; i < 256; i++) {\n tmp[0] = i / 255;\n transferFn(tmp, 0, tmp, 0);\n transferMap[i] = (tmp[0] * 255) | 0;\n }\n smaskOptions.transferMap = transferMap;\n }\n\n return this.buildFormXObject(resources, smaskContent, smaskOptions,\n operatorList, task,\n stateManager.state.clone());\n },\n\n handleTilingType(fn, args, resources, pattern, patternDict, operatorList,\n task) {\n // Create an IR of the pattern code.\n let tilingOpList = new OperatorList();\n // Merge the available resources, to prevent issues when the patternDict\n // is missing some /Resources entries (fixes issue6541.pdf).\n let resourcesArray = [patternDict.get('Resources'), resources];\n let patternResources = Dict.merge(this.xref, resourcesArray);\n\n return this.getOperatorList({\n stream: pattern,\n task,\n resources: patternResources,\n operatorList: tilingOpList,\n }).then(function() {\n return getTilingPatternIR({\n fnArray: tilingOpList.fnArray,\n argsArray: tilingOpList.argsArray,\n }, patternDict, args);\n }).then(function(tilingPatternIR) {\n // Add the dependencies to the parent operator list so they are\n // resolved before the sub operator list is executed synchronously.\n operatorList.addDependencies(tilingOpList.dependencies);\n operatorList.addOp(fn, tilingPatternIR);\n }, (reason) => {\n if (this.options.ignoreErrors) {\n // Error(s) in the TilingPattern -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.unknown, });\n warn(`handleTilingType - ignoring pattern: \"${reason}\".`);\n return;\n }\n throw reason;\n });\n },\n\n handleSetFont:\n function PartialEvaluator_handleSetFont(resources, fontArgs, fontRef,\n operatorList, task, state) {\n // TODO(mack): Not needed?\n var fontName;\n if (fontArgs) {\n fontArgs = fontArgs.slice();\n fontName = fontArgs[0].name;\n }\n\n return this.loadFont(fontName, fontRef, resources).then((translated) => {\n if (!translated.font.isType3Font) {\n return translated;\n }\n return translated.loadType3Data(this, resources, operatorList, task).\n then(function () {\n return translated;\n }).catch((reason) => {\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.font, });\n return new TranslatedFont('g_font_error',\n new ErrorFont('Type3 font load error: ' + reason), translated.font);\n });\n }).then((translated) => {\n state.font = translated.font;\n translated.send(this.handler);\n return translated.loadedName;\n });\n },\n\n handleText: function PartialEvaluator_handleText(chars, state) {\n var font = state.font;\n var glyphs = font.charsToGlyphs(chars);\n var isAddToPathSet = !!(state.textRenderingMode &\n TextRenderingMode.ADD_TO_PATH_FLAG);\n if (font.data && (isAddToPathSet || this.options.disableFontFace)) {\n var buildPath = (fontChar) => {\n if (!font.renderer.hasBuiltPath(fontChar)) {\n var path = font.renderer.getPathJs(fontChar);\n this.handler.send('commonobj', [\n font.loadedName + '_path_' + fontChar,\n 'FontPath',\n path\n ]);\n }\n };\n\n for (var i = 0, ii = glyphs.length; i < ii; i++) {\n var glyph = glyphs[i];\n buildPath(glyph.fontChar);\n\n // If the glyph has an accent we need to build a path for its\n // fontChar too, otherwise CanvasGraphics_paintChar will fail.\n var accent = glyph.accent;\n if (accent && accent.fontChar) {\n buildPath(accent.fontChar);\n }\n }\n }\n\n return glyphs;\n },\n\n setGState: function PartialEvaluator_setGState(resources, gState,\n operatorList, task,\n stateManager) {\n // This array holds the converted/processed state data.\n var gStateObj = [];\n var gStateKeys = gState.getKeys();\n var promise = Promise.resolve();\n for (var i = 0, ii = gStateKeys.length; i < ii; i++) {\n let key = gStateKeys[i];\n let value = gState.get(key);\n switch (key) {\n case 'Type':\n break;\n case 'LW':\n case 'LC':\n case 'LJ':\n case 'ML':\n case 'D':\n case 'RI':\n case 'FL':\n case 'CA':\n case 'ca':\n gStateObj.push([key, value]);\n break;\n case 'Font':\n promise = promise.then(() => {\n return this.handleSetFont(resources, null, value[0], operatorList,\n task, stateManager.state).\n then(function (loadedName) {\n operatorList.addDependency(loadedName);\n gStateObj.push([key, [loadedName, value[1]]]);\n });\n });\n break;\n case 'BM':\n gStateObj.push([key, normalizeBlendMode(value)]);\n break;\n case 'SMask':\n if (isName(value, 'None')) {\n gStateObj.push([key, false]);\n break;\n }\n if (isDict(value)) {\n promise = promise.then(() => {\n return this.handleSMask(value, resources, operatorList,\n task, stateManager);\n });\n gStateObj.push([key, true]);\n } else {\n warn('Unsupported SMask type');\n }\n\n break;\n // Only generate info log messages for the following since\n // they are unlikely to have a big impact on the rendering.\n case 'OP':\n case 'op':\n case 'OPM':\n case 'BG':\n case 'BG2':\n case 'UCR':\n case 'UCR2':\n case 'TR':\n case 'TR2':\n case 'HT':\n case 'SM':\n case 'SA':\n case 'AIS':\n case 'TK':\n // TODO implement these operators.\n info('graphic state operator ' + key);\n break;\n default:\n info('Unknown graphic state operator ' + key);\n break;\n }\n }\n return promise.then(function () {\n if (gStateObj.length > 0) {\n operatorList.addOp(OPS.setGState, [gStateObj]);\n }\n });\n },\n\n loadFont: function PartialEvaluator_loadFont(fontName, font, resources) {\n function errorFont() {\n return Promise.resolve(new TranslatedFont('g_font_error',\n new ErrorFont('Font ' + fontName + ' is not available'), font));\n }\n\n var fontRef, xref = this.xref;\n if (font) { // Loading by ref.\n if (!isRef(font)) {\n throw new Error('The \"font\" object should be a reference.');\n }\n fontRef = font;\n } else { // Loading by name.\n var fontRes = resources.get('Font');\n if (fontRes) {\n fontRef = fontRes.getRaw(fontName);\n } else {\n warn('fontRes not available');\n return errorFont();\n }\n }\n if (!fontRef) {\n warn('fontRef not available');\n return errorFont();\n }\n\n if (this.fontCache.has(fontRef)) {\n return this.fontCache.get(fontRef);\n }\n\n font = xref.fetchIfRef(fontRef);\n if (!isDict(font)) {\n return errorFont();\n }\n\n // We are holding `font.translated` references just for `fontRef`s that\n // are not actually `Ref`s, but rather `Dict`s. See explanation below.\n if (font.translated) {\n return font.translated;\n }\n\n var fontCapability = createPromiseCapability();\n\n var preEvaluatedFont = this.preEvaluateFont(font);\n var descriptor = preEvaluatedFont.descriptor;\n\n var fontRefIsRef = isRef(fontRef), fontID;\n if (fontRefIsRef) {\n fontID = fontRef.toString();\n }\n\n if (isDict(descriptor)) {\n if (!descriptor.fontAliases) {\n descriptor.fontAliases = Object.create(null);\n }\n\n var fontAliases = descriptor.fontAliases;\n var hash = preEvaluatedFont.hash;\n if (fontAliases[hash]) {\n var aliasFontRef = fontAliases[hash].aliasRef;\n if (fontRefIsRef && aliasFontRef &&\n this.fontCache.has(aliasFontRef)) {\n this.fontCache.putAlias(fontRef, aliasFontRef);\n return this.fontCache.get(fontRef);\n }\n } else {\n fontAliases[hash] = {\n fontID: Font.getFontID(),\n };\n }\n\n if (fontRefIsRef) {\n fontAliases[hash].aliasRef = fontRef;\n }\n fontID = fontAliases[hash].fontID;\n }\n\n // Workaround for bad PDF generators that reference fonts incorrectly,\n // where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).\n // In this case we should not put the font into `this.fontCache` (which is\n // a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.\n //\n // However, if we don't cache the font it's not possible to remove it\n // when `cleanup` is triggered from the API, which causes issues on\n // subsequent rendering operations (see issue7403.pdf).\n // A simple workaround would be to just not hold `font.translated`\n // references in this case, but this would force us to unnecessarily load\n // the same fonts over and over.\n //\n // Instead, we cheat a bit by attempting to use a modified `fontID` as a\n // key in `this.fontCache`, to allow the font to be cached.\n // NOTE: This works because `RefSetCache` calls `toString()` on provided\n // keys. Also, since `fontRef` is used when getting cached fonts,\n // we'll not accidentally match fonts cached with the `fontID`.\n if (fontRefIsRef) {\n this.fontCache.put(fontRef, fontCapability.promise);\n } else {\n if (!fontID) {\n fontID = this.idFactory.createObjId();\n }\n this.fontCache.put('id_' + fontID, fontCapability.promise);\n }\n assert(fontID, 'The \"fontID\" must be defined.');\n\n // Keep track of each font we translated so the caller can\n // load them asynchronously before calling display on a page.\n font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID;\n\n font.translated = fontCapability.promise;\n\n // TODO move promises into translate font\n var translatedPromise;\n try {\n translatedPromise = this.translateFont(preEvaluatedFont);\n } catch (e) {\n translatedPromise = Promise.reject(e);\n }\n\n translatedPromise.then(function (translatedFont) {\n if (translatedFont.fontType !== undefined) {\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[translatedFont.fontType] = true;\n }\n\n fontCapability.resolve(new TranslatedFont(font.loadedName,\n translatedFont, font));\n }).catch((reason) => {\n // TODO fontCapability.reject?\n // Error in the font data -- sending unsupported feature notification.\n this.handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.font, });\n\n try {\n // error, but it's still nice to have font type reported\n var descriptor = preEvaluatedFont.descriptor;\n var fontFile3 = descriptor && descriptor.get('FontFile3');\n var subtype = fontFile3 && fontFile3.get('Subtype');\n var fontType = getFontType(preEvaluatedFont.type,\n subtype && subtype.name);\n var xrefFontStats = xref.stats.fontTypes;\n xrefFontStats[fontType] = true;\n } catch (ex) { }\n\n fontCapability.resolve(new TranslatedFont(font.loadedName,\n new ErrorFont(reason instanceof Error ? reason.message : reason),\n font));\n });\n return fontCapability.promise;\n },\n\n buildPath: function PartialEvaluator_buildPath(operatorList, fn, args) {\n var lastIndex = operatorList.length - 1;\n if (!args) {\n args = [];\n }\n if (lastIndex < 0 ||\n operatorList.fnArray[lastIndex] !== OPS.constructPath) {\n operatorList.addOp(OPS.constructPath, [[fn], args]);\n } else {\n var opArgs = operatorList.argsArray[lastIndex];\n opArgs[0].push(fn);\n Array.prototype.push.apply(opArgs[1], args);\n }\n },\n\n handleColorN: function PartialEvaluator_handleColorN(operatorList, fn, args,\n cs, patterns,\n resources, task) {\n // compile tiling patterns\n var patternName = args[args.length - 1];\n // SCN/scn applies patterns along with normal colors\n var pattern;\n if (isName(patternName) &&\n (pattern = patterns.get(patternName.name))) {\n var dict = (isStream(pattern) ? pattern.dict : pattern);\n var typeNum = dict.get('PatternType');\n\n if (typeNum === TILING_PATTERN) {\n var color = cs.base ? cs.base.getRgb(args, 0) : null;\n return this.handleTilingType(fn, color, resources, pattern,\n dict, operatorList, task);\n } else if (typeNum === SHADING_PATTERN) {\n var shading = dict.get('Shading');\n var matrix = dict.getArray('Matrix');\n pattern = Pattern.parseShading(shading, matrix, this.xref, resources,\n this.handler);\n operatorList.addOp(fn, pattern.getIR());\n return Promise.resolve();\n }\n return Promise.reject(new Error('Unknown PatternType: ' + typeNum));\n }\n // TODO shall we fail here?\n operatorList.addOp(fn, args);\n return Promise.resolve();\n },\n\n getOperatorList({ stream, task, resources, operatorList,\n initialState = null, }) {\n // Ensure that `resources`/`initialState` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n initialState = initialState || new EvalState();\n\n if (!operatorList) {\n throw new Error('getOperatorList: missing \"operatorList\" parameter');\n }\n\n var self = this;\n var xref = this.xref;\n var imageCache = Object.create(null);\n\n var xobjs = (resources.get('XObject') || Dict.empty);\n var patterns = (resources.get('Pattern') || Dict.empty);\n var stateManager = new StateManager(initialState);\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n var timeSlotManager = new TimeSlotManager();\n\n function closePendingRestoreOPS(argument) {\n for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {\n operatorList.addOp(OPS.restore, []);\n }\n }\n\n return new Promise(function promiseBody(resolve, reject) {\n var next = function (promise) {\n promise.then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop, operation = {}, i, ii, cs;\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are used beyond this loop, so we\n // cannot reuse the same array on each iteration. Therefore we pass\n // in |null| as the initial value (see the comment on\n // EvaluatorPreprocessor_read() for why).\n operation.args = null;\n if (!(preprocessor.read(operation))) {\n break;\n }\n var args = operation.args;\n var fn = operation.fn;\n\n switch (fn | 0) {\n case OPS.paintXObject:\n // eagerly compile XForm objects\n var name = args[0].name;\n if (!name) {\n warn('XObject must be referred to by name.');\n continue;\n }\n if (imageCache[name] !== undefined) {\n operatorList.addOp(imageCache[name].fn, imageCache[name].args);\n args = null;\n continue;\n }\n\n var xobj = xobjs.get(name);\n if (xobj) {\n if (!isStream(xobj)) {\n throw new FormatError('XObject should be a stream');\n }\n\n var type = xobj.dict.get('Subtype');\n if (!isName(type)) {\n throw new FormatError('XObject should have a Name subtype');\n }\n\n if (type.name === 'Form') {\n stateManager.save();\n next(self.buildFormXObject(resources, xobj, null,\n operatorList, task,\n stateManager.state.clone()).\n then(function () {\n stateManager.restore();\n }));\n return;\n } else if (type.name === 'Image') {\n self.buildPaintImageXObject(resources, xobj, false,\n operatorList, name, imageCache);\n args = null;\n continue;\n } else if (type.name === 'PS') {\n // PostScript XObjects are unused when viewing documents.\n // See section 4.7.1 of Adobe's PDF reference.\n info('Ignored XObject subtype PS');\n continue;\n } else {\n throw new FormatError(\n `Unhandled XObject subtype ${type.name}`);\n }\n }\n break;\n case OPS.setFont:\n var fontSize = args[1];\n // eagerly collect all fonts\n next(self.handleSetFont(resources, args, null, operatorList,\n task, stateManager.state).\n then(function (loadedName) {\n operatorList.addDependency(loadedName);\n operatorList.addOp(OPS.setFont, [loadedName, fontSize]);\n }));\n return;\n case OPS.endInlineImage:\n var cacheKey = args[0].cacheKey;\n if (cacheKey) {\n var cacheEntry = imageCache[cacheKey];\n if (cacheEntry !== undefined) {\n operatorList.addOp(cacheEntry.fn, cacheEntry.args);\n args = null;\n continue;\n }\n }\n self.buildPaintImageXObject(resources, args[0], true,\n operatorList, cacheKey, imageCache);\n args = null;\n continue;\n case OPS.showText:\n args[0] = self.handleText(args[0], stateManager.state);\n break;\n case OPS.showSpacedText:\n var arr = args[0];\n var combinedGlyphs = [];\n var arrLength = arr.length;\n var state = stateManager.state;\n for (i = 0; i < arrLength; ++i) {\n var arrItem = arr[i];\n if (isString(arrItem)) {\n Array.prototype.push.apply(combinedGlyphs,\n self.handleText(arrItem, state));\n } else if (isNum(arrItem)) {\n combinedGlyphs.push(arrItem);\n }\n }\n args[0] = combinedGlyphs;\n fn = OPS.showText;\n break;\n case OPS.nextLineShowText:\n operatorList.addOp(OPS.nextLine);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.nextLineSetSpacingShowText:\n operatorList.addOp(OPS.nextLine);\n operatorList.addOp(OPS.setWordSpacing, [args.shift()]);\n operatorList.addOp(OPS.setCharSpacing, [args.shift()]);\n args[0] = self.handleText(args[0], stateManager.state);\n fn = OPS.showText;\n break;\n case OPS.setTextRenderingMode:\n stateManager.state.textRenderingMode = args[0];\n break;\n\n case OPS.setFillColorSpace:\n stateManager.state.fillColorSpace =\n ColorSpace.parse(args[0], xref, resources);\n continue;\n case OPS.setStrokeColorSpace:\n stateManager.state.strokeColorSpace =\n ColorSpace.parse(args[0], xref, resources);\n continue;\n case OPS.setFillColor:\n cs = stateManager.state.fillColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColor:\n cs = stateManager.state.strokeColorSpace;\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillGray:\n stateManager.state.fillColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeGray:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.gray;\n args = ColorSpace.singletons.gray.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillCMYKColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeCMYKColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.cmyk;\n args = ColorSpace.singletons.cmyk.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n case OPS.setFillRGBColor:\n stateManager.state.fillColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setStrokeRGBColor:\n stateManager.state.strokeColorSpace = ColorSpace.singletons.rgb;\n args = ColorSpace.singletons.rgb.getRgb(args, 0);\n break;\n case OPS.setFillColorN:\n cs = stateManager.state.fillColorSpace;\n if (cs.name === 'Pattern') {\n next(self.handleColorN(operatorList, OPS.setFillColorN, args,\n cs, patterns, resources, task));\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setFillRGBColor;\n break;\n case OPS.setStrokeColorN:\n cs = stateManager.state.strokeColorSpace;\n if (cs.name === 'Pattern') {\n next(self.handleColorN(operatorList, OPS.setStrokeColorN, args,\n cs, patterns, resources, task));\n return;\n }\n args = cs.getRgb(args, 0);\n fn = OPS.setStrokeRGBColor;\n break;\n\n case OPS.shadingFill:\n var shadingRes = resources.get('Shading');\n if (!shadingRes) {\n throw new FormatError('No shading resource found');\n }\n\n var shading = shadingRes.get(args[0].name);\n if (!shading) {\n throw new FormatError('No shading object found');\n }\n\n var shadingFill = Pattern.parseShading(shading, null, xref,\n resources, self.handler);\n var patternIR = shadingFill.getIR();\n args = [patternIR];\n fn = OPS.shadingFill;\n break;\n case OPS.setGState:\n var dictName = args[0];\n var extGState = resources.get('ExtGState');\n\n if (!isDict(extGState) || !extGState.has(dictName.name)) {\n break;\n }\n\n var gState = extGState.get(dictName.name);\n next(self.setGState(resources, gState, operatorList, task,\n stateManager));\n return;\n case OPS.moveTo:\n case OPS.lineTo:\n case OPS.curveTo:\n case OPS.curveTo2:\n case OPS.curveTo3:\n case OPS.closePath:\n self.buildPath(operatorList, fn, args);\n continue;\n case OPS.rectangle:\n self.buildPath(operatorList, fn, args);\n continue;\n case OPS.markPoint:\n case OPS.markPointProps:\n case OPS.beginMarkedContent:\n case OPS.beginMarkedContentProps:\n case OPS.endMarkedContent:\n case OPS.beginCompat:\n case OPS.endCompat:\n // Ignore operators where the corresponding handlers are known to\n // be no-op in CanvasGraphics (display/canvas.js). This prevents\n // serialization errors and is also a bit more efficient.\n // We could also try to serialize all objects in a general way,\n // e.g. as done in https://github.com/mozilla/pdf.js/pull/6266,\n // but doing so is meaningless without knowing the semantics.\n continue;\n default:\n // Note: Ignore the operator if it has `Dict` arguments, since\n // those are non-serializable, otherwise postMessage will throw\n // \"An object could not be cloned.\".\n if (args !== null) {\n for (i = 0, ii = args.length; i < ii; i++) {\n if (args[i] instanceof Dict) {\n break;\n }\n }\n if (i < ii) {\n warn('getOperatorList - ignoring operator: ' + fn);\n continue;\n }\n }\n }\n operatorList.addOp(fn, args);\n }\n if (stop) {\n next(deferred);\n return;\n }\n // Some PDFs don't close all restores inside object/form.\n // Closing those for them.\n closePendingRestoreOPS();\n resolve();\n }).catch((reason) => {\n if (this.options.ignoreErrors) {\n // Error(s) in the OperatorList -- sending unsupported feature\n // notification and allow rendering to continue.\n this.handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.unknown, });\n warn('getOperatorList - ignoring errors during task: ' + task.name);\n\n closePendingRestoreOPS();\n return;\n }\n throw reason;\n });\n },\n\n getTextContent({ stream, task, resources, stateManager = null,\n normalizeWhitespace = false, combineTextItems = false,\n sink, seenStyles = Object.create(null), }) {\n // Ensure that `resources`/`stateManager` is correctly initialized,\n // even if the provided parameter is e.g. `null`.\n resources = resources || Dict.empty;\n stateManager = stateManager || new StateManager(new TextState());\n\n var WhitespaceRegexp = /\\s/g;\n\n var textContent = {\n items: [],\n styles: Object.create(null),\n };\n var textContentItem = {\n initialized: false,\n str: [],\n width: 0,\n height: 0,\n vertical: false,\n lastAdvanceWidth: 0,\n lastAdvanceHeight: 0,\n textAdvanceScale: 0,\n spaceWidth: 0,\n fakeSpaceMin: Infinity,\n fakeMultiSpaceMin: Infinity,\n fakeMultiSpaceMax: -0,\n textRunBreakAllowed: false,\n transform: null,\n fontName: null,\n };\n var SPACE_FACTOR = 0.3;\n var MULTI_SPACE_FACTOR = 1.5;\n var MULTI_SPACE_FACTOR_MAX = 4;\n\n var self = this;\n var xref = this.xref;\n\n // The xobj is parsed iff it's needed, e.g. if there is a `DO` cmd.\n var xobjs = null;\n var skipEmptyXObjs = Object.create(null);\n\n var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);\n\n var textState;\n\n function ensureTextContentItem() {\n if (textContentItem.initialized) {\n return textContentItem;\n }\n var font = textState.font;\n if (!(font.loadedName in seenStyles)) {\n seenStyles[font.loadedName] = true;\n textContent.styles[font.loadedName] = {\n fontFamily: font.fallbackName,\n ascent: font.ascent,\n descent: font.descent,\n vertical: font.vertical,\n };\n }\n textContentItem.fontName = font.loadedName;\n\n // 9.4.4 Text Space Details\n var tsm = [textState.fontSize * textState.textHScale, 0,\n 0, textState.fontSize,\n 0, textState.textRise];\n\n if (font.isType3Font &&\n textState.fontMatrix !== FONT_IDENTITY_MATRIX &&\n textState.fontSize === 1) {\n var glyphHeight = font.bbox[3] - font.bbox[1];\n if (glyphHeight > 0) {\n glyphHeight = glyphHeight * textState.fontMatrix[3];\n tsm[3] *= glyphHeight;\n }\n }\n\n var trm = Util.transform(textState.ctm,\n Util.transform(textState.textMatrix, tsm));\n textContentItem.transform = trm;\n if (!font.vertical) {\n textContentItem.width = 0;\n textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);\n textContentItem.vertical = false;\n } else {\n textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);\n textContentItem.height = 0;\n textContentItem.vertical = true;\n }\n\n var a = textState.textLineMatrix[0];\n var b = textState.textLineMatrix[1];\n var scaleLineX = Math.sqrt(a * a + b * b);\n a = textState.ctm[0];\n b = textState.ctm[1];\n var scaleCtmX = Math.sqrt(a * a + b * b);\n textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;\n textContentItem.lastAdvanceWidth = 0;\n textContentItem.lastAdvanceHeight = 0;\n\n var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;\n if (spaceWidth) {\n textContentItem.spaceWidth = spaceWidth;\n textContentItem.fakeSpaceMin = spaceWidth * SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMin = spaceWidth * MULTI_SPACE_FACTOR;\n textContentItem.fakeMultiSpaceMax =\n spaceWidth * MULTI_SPACE_FACTOR_MAX;\n // It's okay for monospace fonts to fake as much space as needed.\n textContentItem.textRunBreakAllowed = !font.isMonospace;\n } else {\n textContentItem.spaceWidth = 0;\n textContentItem.fakeSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMin = Infinity;\n textContentItem.fakeMultiSpaceMax = 0;\n textContentItem.textRunBreakAllowed = false;\n }\n\n\n textContentItem.initialized = true;\n return textContentItem;\n }\n\n function replaceWhitespace(str) {\n // Replaces all whitespaces with standard spaces (0x20), to avoid\n // alignment issues between the textLayer and the canvas if the text\n // contains e.g. tabs (fixes issue6612.pdf).\n var i = 0, ii = str.length, code;\n while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7F) {\n i++;\n }\n return (i < ii ? str.replace(WhitespaceRegexp, ' ') : str);\n }\n\n function runBidiTransform(textChunk) {\n var str = textChunk.str.join('');\n var bidiResult = bidi(str, -1, textChunk.vertical);\n return {\n str: (normalizeWhitespace ? replaceWhitespace(bidiResult.str) :\n bidiResult.str),\n dir: bidiResult.dir,\n width: textChunk.width,\n height: textChunk.height,\n transform: textChunk.transform,\n fontName: textChunk.fontName,\n };\n }\n\n function handleSetFont(fontName, fontRef) {\n return self.loadFont(fontName, fontRef, resources).\n then(function (translated) {\n textState.font = translated.font;\n textState.fontMatrix = translated.font.fontMatrix ||\n FONT_IDENTITY_MATRIX;\n });\n }\n\n function buildTextContentItem(chars) {\n var font = textState.font;\n var textChunk = ensureTextContentItem();\n var width = 0;\n var height = 0;\n var glyphs = font.charsToGlyphs(chars);\n for (var i = 0; i < glyphs.length; i++) {\n var glyph = glyphs[i];\n var glyphWidth = null;\n if (font.vertical && glyph.vmetric) {\n glyphWidth = glyph.vmetric[0];\n } else {\n glyphWidth = glyph.width;\n }\n\n var glyphUnicode = glyph.unicode;\n var NormalizedUnicodes = getNormalizedUnicodes();\n if (NormalizedUnicodes[glyphUnicode] !== undefined) {\n glyphUnicode = NormalizedUnicodes[glyphUnicode];\n }\n glyphUnicode = reverseIfRtl(glyphUnicode);\n\n var charSpacing = textState.charSpacing;\n if (glyph.isSpace) {\n var wordSpacing = textState.wordSpacing;\n charSpacing += wordSpacing;\n if (wordSpacing > 0) {\n addFakeSpaces(wordSpacing, textChunk.str);\n }\n }\n\n var tx = 0;\n var ty = 0;\n if (!font.vertical) {\n var w0 = glyphWidth * textState.fontMatrix[0];\n tx = (w0 * textState.fontSize + charSpacing) *\n textState.textHScale;\n width += tx;\n } else {\n var w1 = glyphWidth * textState.fontMatrix[0];\n ty = w1 * textState.fontSize + charSpacing;\n height += ty;\n }\n textState.translateTextMatrix(tx, ty);\n\n textChunk.str.push(glyphUnicode);\n }\n\n if (!font.vertical) {\n textChunk.lastAdvanceWidth = width;\n textChunk.width += width;\n } else {\n textChunk.lastAdvanceHeight = height;\n textChunk.height += Math.abs(height);\n }\n\n return textChunk;\n }\n\n function addFakeSpaces(width, strBuf) {\n if (width < textContentItem.fakeSpaceMin) {\n return;\n }\n if (width < textContentItem.fakeMultiSpaceMin) {\n strBuf.push(' ');\n return;\n }\n var fakeSpaces = Math.round(width / textContentItem.spaceWidth);\n while (fakeSpaces-- > 0) {\n strBuf.push(' ');\n }\n }\n\n function flushTextContentItem() {\n if (!textContentItem.initialized) {\n return;\n }\n\n // Do final text scaling\n textContentItem.width *= textContentItem.textAdvanceScale;\n textContentItem.height *= textContentItem.textAdvanceScale;\n textContent.items.push(runBidiTransform(textContentItem));\n\n textContentItem.initialized = false;\n textContentItem.str.length = 0;\n }\n\n function enqueueChunk() {\n let length = textContent.items.length;\n if (length > 0) {\n sink.enqueue(textContent, length);\n textContent.items = [];\n textContent.styles = Object.create(null);\n }\n }\n\n var timeSlotManager = new TimeSlotManager();\n\n return new Promise(function promiseBody(resolve, reject) {\n let next = function (promise) {\n enqueueChunk();\n Promise.all([promise, sink.ready]).then(function () {\n try {\n promiseBody(resolve, reject);\n } catch (ex) {\n reject(ex);\n }\n }, reject);\n };\n task.ensureNotTerminated();\n timeSlotManager.reset();\n var stop, operation = {}, args = [];\n while (!(stop = timeSlotManager.check())) {\n // The arguments parsed by read() are not used beyond this loop, so\n // we can reuse the same array on every iteration, thus avoiding\n // unnecessary allocations.\n args.length = 0;\n operation.args = args;\n if (!(preprocessor.read(operation))) {\n break;\n }\n textState = stateManager.state;\n var fn = operation.fn;\n args = operation.args;\n var advance, diff;\n\n switch (fn | 0) {\n case OPS.setFont:\n // Optimization to ignore multiple identical Tf commands.\n var fontNameArg = args[0].name, fontSizeArg = args[1];\n if (textState.font && fontNameArg === textState.fontName &&\n fontSizeArg === textState.fontSize) {\n break;\n }\n\n flushTextContentItem();\n textState.fontName = fontNameArg;\n textState.fontSize = fontSizeArg;\n next(handleSetFont(fontNameArg, null));\n return;\n case OPS.setTextRise:\n flushTextContentItem();\n textState.textRise = args[0];\n break;\n case OPS.setHScale:\n flushTextContentItem();\n textState.textHScale = args[0] / 100;\n break;\n case OPS.setLeading:\n flushTextContentItem();\n textState.leading = args[0];\n break;\n case OPS.moveText:\n // Optimization to treat same line movement as advance\n var isSameTextLine = !textState.font ? false :\n ((textState.font.vertical ? args[0] : args[1]) === 0);\n advance = args[0] - args[1];\n if (combineTextItems &&\n isSameTextLine && textContentItem.initialized &&\n advance > 0 &&\n advance <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(args[0], args[1]);\n textContentItem.width +=\n (args[0] - textContentItem.lastAdvanceWidth);\n textContentItem.height +=\n (args[1] - textContentItem.lastAdvanceHeight);\n diff = (args[0] - textContentItem.lastAdvanceWidth) -\n (args[1] - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.setLeadingMoveText:\n flushTextContentItem();\n textState.leading = -args[1];\n textState.translateTextLineMatrix(args[0], args[1]);\n textState.textMatrix = textState.textLineMatrix.slice();\n break;\n case OPS.nextLine:\n flushTextContentItem();\n textState.carriageReturn();\n break;\n case OPS.setTextMatrix:\n // Optimization to treat same line movement as advance.\n advance = textState.calcTextLineMatrixAdvance(\n args[0], args[1], args[2], args[3], args[4], args[5]);\n if (combineTextItems &&\n advance !== null && textContentItem.initialized &&\n advance.value > 0 &&\n advance.value <= textContentItem.fakeMultiSpaceMax) {\n textState.translateTextLineMatrix(advance.width,\n advance.height);\n textContentItem.width +=\n (advance.width - textContentItem.lastAdvanceWidth);\n textContentItem.height +=\n (advance.height - textContentItem.lastAdvanceHeight);\n diff = (advance.width - textContentItem.lastAdvanceWidth) -\n (advance.height - textContentItem.lastAdvanceHeight);\n addFakeSpaces(diff, textContentItem.str);\n break;\n }\n\n flushTextContentItem();\n textState.setTextMatrix(args[0], args[1], args[2], args[3],\n args[4], args[5]);\n textState.setTextLineMatrix(args[0], args[1], args[2], args[3],\n args[4], args[5]);\n break;\n case OPS.setCharSpacing:\n textState.charSpacing = args[0];\n break;\n case OPS.setWordSpacing:\n textState.wordSpacing = args[0];\n break;\n case OPS.beginText:\n flushTextContentItem();\n textState.textMatrix = IDENTITY_MATRIX.slice();\n textState.textLineMatrix = IDENTITY_MATRIX.slice();\n break;\n case OPS.showSpacedText:\n var items = args[0];\n var offset;\n for (var j = 0, jj = items.length; j < jj; j++) {\n if (typeof items[j] === 'string') {\n buildTextContentItem(items[j]);\n } else if (isNum(items[j])) {\n ensureTextContentItem();\n\n // PDF Specification 5.3.2 states:\n // The number is expressed in thousandths of a unit of text\n // space.\n // This amount is subtracted from the current horizontal or\n // vertical coordinate, depending on the writing mode.\n // In the default coordinate system, a positive adjustment\n // has the effect of moving the next glyph painted either to\n // the left or down by the given amount.\n advance = items[j] * textState.fontSize / 1000;\n var breakTextRun = false;\n if (textState.font.vertical) {\n offset = advance;\n textState.translateTextMatrix(0, offset);\n breakTextRun = textContentItem.textRunBreakAllowed &&\n advance > textContentItem.fakeMultiSpaceMax;\n if (!breakTextRun) {\n // Value needs to be added to height to paint down.\n textContentItem.height += offset;\n }\n } else {\n advance = -advance;\n offset = advance * textState.textHScale;\n textState.translateTextMatrix(offset, 0);\n breakTextRun = textContentItem.textRunBreakAllowed &&\n advance > textContentItem.fakeMultiSpaceMax;\n if (!breakTextRun) {\n // Value needs to be subtracted from width to paint left.\n textContentItem.width += offset;\n }\n }\n if (breakTextRun) {\n flushTextContentItem();\n } else if (advance > 0) {\n addFakeSpaces(advance, textContentItem.str);\n }\n }\n }\n break;\n case OPS.showText:\n buildTextContentItem(args[0]);\n break;\n case OPS.nextLineShowText:\n flushTextContentItem();\n textState.carriageReturn();\n buildTextContentItem(args[0]);\n break;\n case OPS.nextLineSetSpacingShowText:\n flushTextContentItem();\n textState.wordSpacing = args[0];\n textState.charSpacing = args[1];\n textState.carriageReturn();\n buildTextContentItem(args[2]);\n break;\n case OPS.paintXObject:\n flushTextContentItem();\n if (!xobjs) {\n xobjs = (resources.get('XObject') || Dict.empty);\n }\n\n var name = args[0].name;\n if (name in skipEmptyXObjs) {\n break;\n }\n\n var xobj = xobjs.get(name);\n if (!xobj) {\n break;\n }\n if (!isStream(xobj)) {\n throw new FormatError('XObject should be a stream');\n }\n\n var type = xobj.dict.get('Subtype');\n if (!isName(type)) {\n throw new FormatError('XObject should have a Name subtype');\n }\n\n if (type.name !== 'Form') {\n skipEmptyXObjs[name] = true;\n break;\n }\n\n // Use a new `StateManager` to prevent incorrect positioning of\n // textItems *after* the Form XObject, since errors in the data\n // can otherwise prevent `restore` operators from being executed.\n // NOTE: This is only an issue when `options.ignoreErrors = true`.\n var currentState = stateManager.state.clone();\n var xObjStateManager = new StateManager(currentState);\n\n var matrix = xobj.dict.getArray('Matrix');\n if (isArray(matrix) && matrix.length === 6) {\n xObjStateManager.transform(matrix);\n }\n\n // Enqueue the `textContent` chunk before parsing the /Form\n // XObject.\n enqueueChunk();\n let sinkWrapper = {\n enqueueInvoked: false,\n\n enqueue(chunk, size) {\n this.enqueueInvoked = true;\n sink.enqueue(chunk, size);\n },\n\n get desiredSize() {\n return sink.desiredSize;\n },\n\n get ready() {\n return sink.ready;\n },\n };\n\n next(self.getTextContent({\n stream: xobj,\n task,\n resources: xobj.dict.get('Resources') || resources,\n stateManager: xObjStateManager,\n normalizeWhitespace,\n combineTextItems,\n sink: sinkWrapper,\n seenStyles,\n }).then(function() {\n if (!sinkWrapper.enqueueInvoked) {\n skipEmptyXObjs[name] = true;\n }\n }));\n return;\n case OPS.setGState:\n flushTextContentItem();\n var dictName = args[0];\n var extGState = resources.get('ExtGState');\n\n if (!isDict(extGState) || !isName(dictName)) {\n break;\n }\n var gState = extGState.get(dictName.name);\n if (!isDict(gState)) {\n break;\n }\n var gStateFont = gState.get('Font');\n if (gStateFont) {\n textState.fontName = null;\n textState.fontSize = gStateFont[1];\n next(handleSetFont(null, gStateFont[0]));\n return;\n }\n break;\n } // switch\n if (textContent.items.length >= sink.desiredSize) {\n // Wait for ready, if we reach highWaterMark.\n stop = true;\n break;\n }\n } // while\n if (stop) {\n next(deferred);\n return;\n }\n flushTextContentItem();\n enqueueChunk();\n resolve();\n }).catch((reason) => {\n if (reason instanceof AbortException) {\n return;\n }\n if (this.options.ignoreErrors) {\n // Error(s) in the TextContent -- allow text-extraction to continue.\n warn('getTextContent - ignoring errors during task: ' + task.name);\n\n flushTextContentItem();\n enqueueChunk();\n return;\n }\n throw reason;\n });\n },\n\n extractDataStructures:\n function PartialEvaluator_extractDataStructures(dict, baseDict,\n properties) {\n var xref = this.xref;\n // 9.10.2\n var toUnicode = (dict.get('ToUnicode') || baseDict.get('ToUnicode'));\n var toUnicodePromise = toUnicode ?\n this.readToUnicode(toUnicode) : Promise.resolve(undefined);\n\n if (properties.composite) {\n // CIDSystemInfo helps to match CID to glyphs\n var cidSystemInfo = dict.get('CIDSystemInfo');\n if (isDict(cidSystemInfo)) {\n properties.cidSystemInfo = {\n registry: cidSystemInfo.get('Registry'),\n ordering: cidSystemInfo.get('Ordering'),\n supplement: cidSystemInfo.get('Supplement'),\n };\n }\n\n var cidToGidMap = dict.get('CIDToGIDMap');\n if (isStream(cidToGidMap)) {\n properties.cidToGidMap = this.readCidToGidMap(cidToGidMap);\n }\n }\n\n // Based on 9.6.6 of the spec the encoding can come from multiple places\n // and depends on the font type. The base encoding and differences are\n // read here, but the encoding that is actually used is chosen during\n // glyph mapping in the font.\n // TODO: Loading the built in encoding in the font would allow the\n // differences to be merged in here not require us to hold on to it.\n var differences = [];\n var baseEncodingName = null;\n var encoding;\n if (dict.has('Encoding')) {\n encoding = dict.get('Encoding');\n if (isDict(encoding)) {\n baseEncodingName = encoding.get('BaseEncoding');\n baseEncodingName = (isName(baseEncodingName) ?\n baseEncodingName.name : null);\n // Load the differences between the base and original\n if (encoding.has('Differences')) {\n var diffEncoding = encoding.get('Differences');\n var index = 0;\n for (var j = 0, jj = diffEncoding.length; j < jj; j++) {\n var data = xref.fetchIfRef(diffEncoding[j]);\n if (isNum(data)) {\n index = data;\n } else if (isName(data)) {\n differences[index++] = data.name;\n } else {\n throw new FormatError(\n `Invalid entry in 'Differences' array: ${data}`);\n }\n }\n }\n } else if (isName(encoding)) {\n baseEncodingName = encoding.name;\n } else {\n throw new FormatError('Encoding is not a Name nor a Dict');\n }\n // According to table 114 if the encoding is a named encoding it must be\n // one of these predefined encodings.\n if ((baseEncodingName !== 'MacRomanEncoding' &&\n baseEncodingName !== 'MacExpertEncoding' &&\n baseEncodingName !== 'WinAnsiEncoding')) {\n baseEncodingName = null;\n }\n }\n\n if (baseEncodingName) {\n properties.defaultEncoding = getEncoding(baseEncodingName).slice();\n } else {\n var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n var isNonsymbolicFont = !!(properties.flags & FontFlags.Nonsymbolic);\n // According to \"Table 114\" in section \"9.6.6.1 General\" (under\n // \"9.6.6 Character Encoding\") of the PDF specification, a Nonsymbolic\n // font should use the `StandardEncoding` if no encoding is specified.\n encoding = StandardEncoding;\n if (properties.type === 'TrueType' && !isNonsymbolicFont) {\n encoding = WinAnsiEncoding;\n }\n // The Symbolic attribute can be misused for regular fonts\n // Heuristic: we have to check if the font is a standard one also\n if (isSymbolicFont) {\n encoding = MacRomanEncoding;\n if (!properties.file) {\n if (/Symbol/i.test(properties.name)) {\n encoding = SymbolSetEncoding;\n } else if (/Dingbats/i.test(properties.name)) {\n encoding = ZapfDingbatsEncoding;\n }\n }\n }\n properties.defaultEncoding = encoding;\n }\n\n properties.differences = differences;\n properties.baseEncodingName = baseEncodingName;\n properties.hasEncoding = !!baseEncodingName || differences.length > 0;\n properties.dict = dict;\n return toUnicodePromise.then((toUnicode) => {\n properties.toUnicode = toUnicode;\n return this.buildToUnicode(properties);\n }).then(function (toUnicode) {\n properties.toUnicode = toUnicode;\n return properties;\n });\n },\n\n /**\n * Builds a char code to unicode map based on section 9.10 of the spec.\n * @param {Object} properties Font properties object.\n * @return {Promise} A Promise that is resolved with a\n * {ToUnicodeMap|IdentityToUnicodeMap} object.\n */\n buildToUnicode: function PartialEvaluator_buildToUnicode(properties) {\n properties.hasIncludedToUnicodeMap =\n !!properties.toUnicode && properties.toUnicode.length > 0;\n // Section 9.10.2 Mapping Character Codes to Unicode Values\n if (properties.hasIncludedToUnicodeMap) {\n return Promise.resolve(properties.toUnicode);\n }\n // According to the spec if the font is a simple font we should only map\n // to unicode if the base encoding is MacRoman, MacExpert, or WinAnsi or\n // the differences array only contains adobe standard or symbol set names,\n // in pratice it seems better to always try to create a toUnicode\n // map based of the default encoding.\n var toUnicode, charcode, glyphName;\n if (!properties.composite /* is simple font */) {\n toUnicode = [];\n var encoding = properties.defaultEncoding.slice();\n var baseEncodingName = properties.baseEncodingName;\n // Merge in the differences array.\n var differences = properties.differences;\n for (charcode in differences) {\n glyphName = differences[charcode];\n if (glyphName === '.notdef') {\n // Skip .notdef to prevent rendering errors, e.g. boxes appearing\n // where there should be spaces (fixes issue5256.pdf).\n continue;\n }\n encoding[charcode] = glyphName;\n }\n var glyphsUnicodeMap = getGlyphsUnicode();\n for (charcode in encoding) {\n // a) Map the character code to a character name.\n glyphName = encoding[charcode];\n // b) Look up the character name in the Adobe Glyph List (see the\n // Bibliography) to obtain the corresponding Unicode value.\n if (glyphName === '') {\n continue;\n } else if (glyphsUnicodeMap[glyphName] === undefined) {\n // (undocumented) c) Few heuristics to recognize unknown glyphs\n // NOTE: Adobe Reader does not do this step, but OSX Preview does\n var code = 0;\n switch (glyphName[0]) {\n case 'G': // Gxx glyph\n if (glyphName.length === 3) {\n code = parseInt(glyphName.substr(1), 16);\n }\n break;\n case 'g': // g00xx glyph\n if (glyphName.length === 5) {\n code = parseInt(glyphName.substr(1), 16);\n }\n break;\n case 'C': // Cddd glyph\n case 'c': // cddd glyph\n if (glyphName.length >= 3) {\n code = +glyphName.substr(1);\n }\n break;\n default:\n // 'uniXXXX'/'uXXXX{XX}' glyphs\n var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n code = unicode;\n }\n }\n if (code) {\n // If |baseEncodingName| is one the predefined encodings,\n // and |code| equals |charcode|, using the glyph defined in the\n // baseEncoding seems to yield a better |toUnicode| mapping\n // (fixes issue 5070).\n if (baseEncodingName && code === +charcode) {\n var baseEncoding = getEncoding(baseEncodingName);\n if (baseEncoding && (glyphName = baseEncoding[charcode])) {\n toUnicode[charcode] =\n String.fromCharCode(glyphsUnicodeMap[glyphName]);\n continue;\n }\n }\n toUnicode[charcode] = String.fromCharCode(code);\n }\n continue;\n }\n toUnicode[charcode] =\n String.fromCharCode(glyphsUnicodeMap[glyphName]);\n }\n return Promise.resolve(new ToUnicodeMap(toUnicode));\n }\n // If the font is a composite font that uses one of the predefined CMaps\n // listed in Table 118 (except Identity–H and Identity–V) or whose\n // descendant CIDFont uses the Adobe-GB1, Adobe-CNS1, Adobe-Japan1, or\n // Adobe-Korea1 character collection:\n if (properties.composite && (\n (properties.cMap.builtInCMap &&\n !(properties.cMap instanceof IdentityCMap)) ||\n (properties.cidSystemInfo.registry === 'Adobe' &&\n (properties.cidSystemInfo.ordering === 'GB1' ||\n properties.cidSystemInfo.ordering === 'CNS1' ||\n properties.cidSystemInfo.ordering === 'Japan1' ||\n properties.cidSystemInfo.ordering === 'Korea1')))) {\n // Then:\n // a) Map the character code to a character identifier (CID) according\n // to the font’s CMap.\n // b) Obtain the registry and ordering of the character collection used\n // by the font’s CMap (for example, Adobe and Japan1) from its\n // CIDSystemInfo dictionary.\n var registry = properties.cidSystemInfo.registry;\n var ordering = properties.cidSystemInfo.ordering;\n // c) Construct a second CMap name by concatenating the registry and\n // ordering obtained in step (b) in the format registry–ordering–UCS2\n // (for example, Adobe–Japan1–UCS2).\n var ucs2CMapName = Name.get(registry + '-' + ordering + '-UCS2');\n // d) Obtain the CMap with the name constructed in step (c) (available\n // from the ASN Web site; see the Bibliography).\n return CMapFactory.create({\n encoding: ucs2CMapName,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null,\n }).then(function (ucs2CMap) {\n var cMap = properties.cMap;\n toUnicode = [];\n cMap.forEach(function(charcode, cid) {\n if (cid > 0xffff) {\n throw new FormatError('Max size of CID is 65,535');\n }\n // e) Map the CID obtained in step (a) according to the CMap\n // obtained in step (d), producing a Unicode value.\n var ucs2 = ucs2CMap.lookup(cid);\n if (ucs2) {\n toUnicode[charcode] =\n String.fromCharCode((ucs2.charCodeAt(0) << 8) +\n ucs2.charCodeAt(1));\n }\n });\n return new ToUnicodeMap(toUnicode);\n });\n }\n\n // The viewer's choice, just use an identity map.\n return Promise.resolve(new IdentityToUnicodeMap(properties.firstChar,\n properties.lastChar));\n },\n\n readToUnicode: function PartialEvaluator_readToUnicode(toUnicode) {\n var cmapObj = toUnicode;\n if (isName(cmapObj)) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xFFFF);\n }\n return new ToUnicodeMap(cmap.getMap());\n });\n } else if (isStream(cmapObj)) {\n return CMapFactory.create({\n encoding: cmapObj,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null,\n }).then(function (cmap) {\n if (cmap instanceof IdentityCMap) {\n return new IdentityToUnicodeMap(0, 0xFFFF);\n }\n var map = new Array(cmap.length);\n // Convert UTF-16BE\n // NOTE: cmap can be a sparse array, so use forEach instead of for(;;)\n // to iterate over all keys.\n cmap.forEach(function(charCode, token) {\n var str = [];\n for (var k = 0; k < token.length; k += 2) {\n var w1 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n if ((w1 & 0xF800) !== 0xD800) { // w1 < 0xD800 || w1 > 0xDFFF\n str.push(w1);\n continue;\n }\n k += 2;\n var w2 = (token.charCodeAt(k) << 8) | token.charCodeAt(k + 1);\n str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);\n }\n map[charCode] = String.fromCharCode.apply(String, str);\n });\n return new ToUnicodeMap(map);\n });\n }\n return Promise.resolve(null);\n },\n\n readCidToGidMap: function PartialEvaluator_readCidToGidMap(cidToGidStream) {\n // Extract the encoding from the CIDToGIDMap\n var glyphsData = cidToGidStream.getBytes();\n\n // Set encoding 0 to later verify the font has an encoding\n var result = [];\n for (var j = 0, jj = glyphsData.length; j < jj; j++) {\n var glyphID = (glyphsData[j++] << 8) | glyphsData[j];\n if (glyphID === 0) {\n continue;\n }\n var code = j >> 1;\n result[code] = glyphID;\n }\n return result;\n },\n\n extractWidths: function PartialEvaluator_extractWidths(dict, descriptor,\n properties) {\n var xref = this.xref;\n var glyphsWidths = [];\n var defaultWidth = 0;\n var glyphsVMetrics = [];\n var defaultVMetrics;\n var i, ii, j, jj, start, code, widths;\n if (properties.composite) {\n defaultWidth = dict.get('DW') || 1000;\n\n widths = dict.get('W');\n if (widths) {\n for (i = 0, ii = widths.length; i < ii; i++) {\n start = xref.fetchIfRef(widths[i++]);\n code = xref.fetchIfRef(widths[i]);\n if (isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsWidths[start++] = xref.fetchIfRef(code[j]);\n }\n } else {\n var width = xref.fetchIfRef(widths[++i]);\n for (j = start; j <= code; j++) {\n glyphsWidths[j] = width;\n }\n }\n }\n }\n\n if (properties.vertical) {\n var vmetrics = dict.getArray('DW2') || [880, -1000];\n defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];\n vmetrics = dict.get('W2');\n if (vmetrics) {\n for (i = 0, ii = vmetrics.length; i < ii; i++) {\n start = xref.fetchIfRef(vmetrics[i++]);\n code = xref.fetchIfRef(vmetrics[i]);\n if (isArray(code)) {\n for (j = 0, jj = code.length; j < jj; j++) {\n glyphsVMetrics[start++] = [\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j++]),\n xref.fetchIfRef(code[j])\n ];\n }\n } else {\n var vmetric = [\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i]),\n xref.fetchIfRef(vmetrics[++i])\n ];\n for (j = start; j <= code; j++) {\n glyphsVMetrics[j] = vmetric;\n }\n }\n }\n }\n }\n } else {\n var firstChar = properties.firstChar;\n widths = dict.get('Widths');\n if (widths) {\n j = firstChar;\n for (i = 0, ii = widths.length; i < ii; i++) {\n glyphsWidths[j++] = xref.fetchIfRef(widths[i]);\n }\n defaultWidth = (parseFloat(descriptor.get('MissingWidth')) || 0);\n } else {\n // Trying get the BaseFont metrics (see comment above).\n var baseFontName = dict.get('BaseFont');\n if (isName(baseFontName)) {\n var metrics = this.getBaseFontMetrics(baseFontName.name);\n\n glyphsWidths = this.buildCharCodeToWidth(metrics.widths,\n properties);\n defaultWidth = metrics.defaultWidth;\n }\n }\n }\n\n // Heuristic: detection of monospace font by checking all non-zero widths\n var isMonospace = true;\n var firstWidth = defaultWidth;\n for (var glyph in glyphsWidths) {\n var glyphWidth = glyphsWidths[glyph];\n if (!glyphWidth) {\n continue;\n }\n if (!firstWidth) {\n firstWidth = glyphWidth;\n continue;\n }\n if (firstWidth !== glyphWidth) {\n isMonospace = false;\n break;\n }\n }\n if (isMonospace) {\n properties.flags |= FontFlags.FixedPitch;\n }\n\n properties.defaultWidth = defaultWidth;\n properties.widths = glyphsWidths;\n properties.defaultVMetrics = defaultVMetrics;\n properties.vmetrics = glyphsVMetrics;\n },\n\n isSerifFont: function PartialEvaluator_isSerifFont(baseFontName) {\n // Simulating descriptor flags attribute\n var fontNameWoStyle = baseFontName.split('-')[0];\n return (fontNameWoStyle in getSerifFonts()) ||\n (fontNameWoStyle.search(/serif/gi) !== -1);\n },\n\n getBaseFontMetrics: function PartialEvaluator_getBaseFontMetrics(name) {\n var defaultWidth = 0;\n var widths = [];\n var monospace = false;\n var stdFontMap = getStdFontMap();\n var lookupName = (stdFontMap[name] || name);\n var Metrics = getMetrics();\n\n if (!(lookupName in Metrics)) {\n // Use default fonts for looking up font metrics if the passed\n // font is not a base font\n if (this.isSerifFont(name)) {\n lookupName = 'Times-Roman';\n } else {\n lookupName = 'Helvetica';\n }\n }\n var glyphWidths = Metrics[lookupName];\n\n if (isNum(glyphWidths)) {\n defaultWidth = glyphWidths;\n monospace = true;\n } else {\n widths = glyphWidths(); // expand lazy widths array\n }\n\n return {\n defaultWidth,\n monospace,\n widths,\n };\n },\n\n buildCharCodeToWidth:\n function PartialEvaluator_bulildCharCodeToWidth(widthsByGlyphName,\n properties) {\n var widths = Object.create(null);\n var differences = properties.differences;\n var encoding = properties.defaultEncoding;\n for (var charCode = 0; charCode < 256; charCode++) {\n if (charCode in differences &&\n widthsByGlyphName[differences[charCode]]) {\n widths[charCode] = widthsByGlyphName[differences[charCode]];\n continue;\n }\n if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {\n widths[charCode] = widthsByGlyphName[encoding[charCode]];\n continue;\n }\n }\n return widths;\n },\n\n preEvaluateFont: function PartialEvaluator_preEvaluateFont(dict) {\n var baseDict = dict;\n var type = dict.get('Subtype');\n if (!isName(type)) {\n throw new FormatError('invalid font Subtype');\n }\n\n var composite = false;\n var uint8array;\n if (type.name === 'Type0') {\n // If font is a composite\n // - get the descendant font\n // - set the type according to the descendant font\n // - get the FontDescriptor from the descendant font\n var df = dict.get('DescendantFonts');\n if (!df) {\n throw new FormatError('Descendant fonts are not specified');\n }\n dict = (isArray(df) ? this.xref.fetchIfRef(df[0]) : df);\n\n type = dict.get('Subtype');\n if (!isName(type)) {\n throw new FormatError('invalid font Subtype');\n }\n composite = true;\n }\n\n var descriptor = dict.get('FontDescriptor');\n if (descriptor) {\n var hash = new MurmurHash3_64();\n var encoding = baseDict.getRaw('Encoding');\n if (isName(encoding)) {\n hash.update(encoding.name);\n } else if (isRef(encoding)) {\n hash.update(encoding.toString());\n } else if (isDict(encoding)) {\n var keys = encoding.getKeys();\n for (var i = 0, ii = keys.length; i < ii; i++) {\n var entry = encoding.getRaw(keys[i]);\n if (isName(entry)) {\n hash.update(entry.name);\n } else if (isRef(entry)) {\n hash.update(entry.toString());\n } else if (isArray(entry)) {\n // 'Differences' array (fixes bug1157493.pdf).\n var diffLength = entry.length, diffBuf = new Array(diffLength);\n\n for (var j = 0; j < diffLength; j++) {\n var diffEntry = entry[j];\n if (isName(diffEntry)) {\n diffBuf[j] = diffEntry.name;\n } else if (isNum(diffEntry) || isRef(diffEntry)) {\n diffBuf[j] = diffEntry.toString();\n }\n }\n hash.update(diffBuf.join());\n }\n }\n }\n\n var toUnicode = dict.get('ToUnicode') || baseDict.get('ToUnicode');\n if (isStream(toUnicode)) {\n var stream = toUnicode.str || toUnicode;\n uint8array = stream.buffer ?\n new Uint8Array(stream.buffer.buffer, 0, stream.bufferLength) :\n new Uint8Array(stream.bytes.buffer,\n stream.start, stream.end - stream.start);\n hash.update(uint8array);\n\n } else if (isName(toUnicode)) {\n hash.update(toUnicode.name);\n }\n\n var widths = dict.get('Widths') || baseDict.get('Widths');\n if (widths) {\n uint8array = new Uint8Array(new Uint32Array(widths).buffer);\n hash.update(uint8array);\n }\n }\n\n return {\n descriptor,\n dict,\n baseDict,\n composite,\n type: type.name,\n hash: hash ? hash.hexdigest() : '',\n };\n },\n\n translateFont: function PartialEvaluator_translateFont(preEvaluatedFont) {\n var baseDict = preEvaluatedFont.baseDict;\n var dict = preEvaluatedFont.dict;\n var composite = preEvaluatedFont.composite;\n var descriptor = preEvaluatedFont.descriptor;\n var type = preEvaluatedFont.type;\n var maxCharIndex = (composite ? 0xFFFF : 0xFF);\n var properties;\n\n if (!descriptor) {\n if (type === 'Type3') {\n // FontDescriptor is only required for Type3 fonts when the document\n // is a tagged pdf. Create a barbebones one to get by.\n descriptor = new Dict(null);\n descriptor.set('FontName', Name.get(type));\n descriptor.set('FontBBox', dict.getArray('FontBBox'));\n } else {\n // Before PDF 1.5 if the font was one of the base 14 fonts, having a\n // FontDescriptor was not required.\n // This case is here for compatibility.\n var baseFontName = dict.get('BaseFont');\n if (!isName(baseFontName)) {\n throw new FormatError('Base font is not specified');\n }\n\n // Using base font name as a font name.\n baseFontName = baseFontName.name.replace(/[,_]/g, '-');\n var metrics = this.getBaseFontMetrics(baseFontName);\n\n // Simulating descriptor flags attribute\n var fontNameWoStyle = baseFontName.split('-')[0];\n var flags =\n (this.isSerifFont(fontNameWoStyle) ? FontFlags.Serif : 0) |\n (metrics.monospace ? FontFlags.FixedPitch : 0) |\n (getSymbolsFonts()[fontNameWoStyle] ? FontFlags.Symbolic :\n FontFlags.Nonsymbolic);\n\n properties = {\n type,\n name: baseFontName,\n widths: metrics.widths,\n defaultWidth: metrics.defaultWidth,\n flags,\n firstChar: 0,\n lastChar: maxCharIndex,\n };\n return this.extractDataStructures(dict, dict, properties).\n then((properties) => {\n properties.widths = this.buildCharCodeToWidth(metrics.widths,\n properties);\n return new Font(baseFontName, null, properties);\n });\n }\n }\n\n // According to the spec if 'FontDescriptor' is declared, 'FirstChar',\n // 'LastChar' and 'Widths' should exist too, but some PDF encoders seem\n // to ignore this rule when a variant of a standard font is used.\n // TODO Fill the width array depending on which of the base font this is\n // a variant.\n var firstChar = (dict.get('FirstChar') || 0);\n var lastChar = (dict.get('LastChar') || maxCharIndex);\n\n var fontName = descriptor.get('FontName');\n var baseFont = dict.get('BaseFont');\n // Some bad PDFs have a string as the font name.\n if (isString(fontName)) {\n fontName = Name.get(fontName);\n }\n if (isString(baseFont)) {\n baseFont = Name.get(baseFont);\n }\n\n if (type !== 'Type3') {\n var fontNameStr = fontName && fontName.name;\n var baseFontStr = baseFont && baseFont.name;\n if (fontNameStr !== baseFontStr) {\n info('The FontDescriptor\\'s FontName is \"' + fontNameStr +\n '\" but should be the same as the Font\\'s BaseFont \"' +\n baseFontStr + '\"');\n // Workaround for cases where e.g. fontNameStr = 'Arial' and\n // baseFontStr = 'Arial,Bold' (needed when no font file is embedded).\n if (fontNameStr && baseFontStr &&\n baseFontStr.indexOf(fontNameStr) === 0) {\n fontName = baseFont;\n }\n }\n }\n fontName = (fontName || baseFont);\n\n if (!isName(fontName)) {\n throw new FormatError('invalid font name');\n }\n\n var fontFile = descriptor.get('FontFile', 'FontFile2', 'FontFile3');\n if (fontFile) {\n if (fontFile.dict) {\n var subtype = fontFile.dict.get('Subtype');\n if (subtype) {\n subtype = subtype.name;\n }\n var length1 = fontFile.dict.get('Length1');\n var length2 = fontFile.dict.get('Length2');\n var length3 = fontFile.dict.get('Length3');\n }\n }\n\n properties = {\n type,\n name: fontName.name,\n subtype,\n file: fontFile,\n length1,\n length2,\n length3,\n loadedName: baseDict.loadedName,\n composite,\n wideChars: composite,\n fixedPitch: false,\n fontMatrix: (dict.getArray('FontMatrix') || FONT_IDENTITY_MATRIX),\n firstChar: firstChar || 0,\n lastChar: (lastChar || maxCharIndex),\n bbox: descriptor.getArray('FontBBox'),\n ascent: descriptor.get('Ascent'),\n descent: descriptor.get('Descent'),\n xHeight: descriptor.get('XHeight'),\n capHeight: descriptor.get('CapHeight'),\n flags: descriptor.get('Flags'),\n italicAngle: descriptor.get('ItalicAngle'),\n isType3Font: false,\n };\n\n var cMapPromise;\n if (composite) {\n var cidEncoding = baseDict.get('Encoding');\n if (isName(cidEncoding)) {\n properties.cidEncoding = cidEncoding.name;\n }\n cMapPromise = CMapFactory.create({\n encoding: cidEncoding,\n fetchBuiltInCMap: this.fetchBuiltInCMap,\n useCMap: null,\n }).then(function (cMap) {\n properties.cMap = cMap;\n properties.vertical = properties.cMap.vertical;\n });\n } else {\n cMapPromise = Promise.resolve(undefined);\n }\n\n return cMapPromise.then(() => {\n return this.extractDataStructures(dict, baseDict, properties);\n }).then((properties) => {\n this.extractWidths(dict, descriptor, properties);\n\n if (type === 'Type3') {\n properties.isType3Font = true;\n }\n return new Font(fontName.name, fontFile, properties);\n });\n },\n };\n\n return PartialEvaluator;\n})();\n\nvar TranslatedFont = (function TranslatedFontClosure() {\n function TranslatedFont(loadedName, font, dict) {\n this.loadedName = loadedName;\n this.font = font;\n this.dict = dict;\n this.type3Loaded = null;\n this.sent = false;\n }\n TranslatedFont.prototype = {\n send(handler) {\n if (this.sent) {\n return;\n }\n var fontData = this.font.exportData();\n handler.send('commonobj', [\n this.loadedName,\n 'Font',\n fontData\n ]);\n this.sent = true;\n },\n loadType3Data(evaluator, resources, parentOperatorList, task) {\n if (!this.font.isType3Font) {\n throw new Error('Must be a Type3 font.');\n }\n\n if (this.type3Loaded) {\n return this.type3Loaded;\n }\n // When parsing Type3 glyphs, always ignore them if there are errors.\n // Compared to the parsing of e.g. an entire page, it doesn't really\n // make sense to only be able to render a Type3 glyph partially.\n var type3Options = Object.create(evaluator.options);\n type3Options.ignoreErrors = false;\n var type3Evaluator = evaluator.clone(type3Options);\n\n var translatedFont = this.font;\n var loadCharProcsPromise = Promise.resolve();\n var charProcs = this.dict.get('CharProcs');\n var fontResources = this.dict.get('Resources') || resources;\n var charProcKeys = charProcs.getKeys();\n var charProcOperatorList = Object.create(null);\n\n for (var i = 0, n = charProcKeys.length; i < n; ++i) {\n let key = charProcKeys[i];\n loadCharProcsPromise = loadCharProcsPromise.then(function () {\n var glyphStream = charProcs.get(key);\n var operatorList = new OperatorList();\n return type3Evaluator.getOperatorList({\n stream: glyphStream,\n task,\n resources: fontResources,\n operatorList,\n }).then(function () {\n charProcOperatorList[key] = operatorList.getIR();\n\n // Add the dependencies to the parent operator list so they are\n // resolved before sub operator list is executed synchronously.\n parentOperatorList.addDependencies(operatorList.dependencies);\n }).catch(function(reason) {\n warn(`Type3 font resource \"${key}\" is not available.`);\n var operatorList = new OperatorList();\n charProcOperatorList[key] = operatorList.getIR();\n });\n });\n }\n this.type3Loaded = loadCharProcsPromise.then(function () {\n translatedFont.charProcOperatorList = charProcOperatorList;\n });\n return this.type3Loaded;\n },\n };\n return TranslatedFont;\n})();\n\nvar OperatorList = (function OperatorListClosure() {\n var CHUNK_SIZE = 1000;\n var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5; // close to chunk size\n\n function getTransfers(queue) {\n var transfers = [];\n var fnArray = queue.fnArray, argsArray = queue.argsArray;\n for (var i = 0, ii = queue.length; i < ii; i++) {\n switch (fnArray[i]) {\n case OPS.paintInlineImageXObject:\n case OPS.paintInlineImageXObjectGroup:\n case OPS.paintImageMaskXObject:\n var arg = argsArray[i][0]; // first param in imgData\n if (!arg.cached) {\n transfers.push(arg.data.buffer);\n }\n break;\n }\n }\n return transfers;\n }\n\n function OperatorList(intent, messageHandler, pageIndex) {\n this.messageHandler = messageHandler;\n this.fnArray = [];\n this.argsArray = [];\n this.dependencies = Object.create(null);\n this._totalLength = 0;\n this.pageIndex = pageIndex;\n this.intent = intent;\n }\n\n OperatorList.prototype = {\n get length() {\n return this.argsArray.length;\n },\n\n /**\n * @returns {number} The total length of the entire operator list,\n * since `this.length === 0` after flushing.\n */\n get totalLength() {\n return (this._totalLength + this.length);\n },\n\n addOp(fn, args) {\n this.fnArray.push(fn);\n this.argsArray.push(args);\n if (this.messageHandler) {\n if (this.fnArray.length >= CHUNK_SIZE) {\n this.flush();\n } else if (this.fnArray.length >= CHUNK_SIZE_ABOUT &&\n (fn === OPS.restore || fn === OPS.endText)) {\n // heuristic to flush on boundary of restore or endText\n this.flush();\n }\n }\n },\n\n addDependency(dependency) {\n if (dependency in this.dependencies) {\n return;\n }\n this.dependencies[dependency] = true;\n this.addOp(OPS.dependency, [dependency]);\n },\n\n addDependencies(dependencies) {\n for (var key in dependencies) {\n this.addDependency(key);\n }\n },\n\n addOpList(opList) {\n Util.extendObj(this.dependencies, opList.dependencies);\n for (var i = 0, ii = opList.length; i < ii; i++) {\n this.addOp(opList.fnArray[i], opList.argsArray[i]);\n }\n },\n\n getIR() {\n return {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n length: this.length,\n };\n },\n\n flush(lastChunk) {\n if (this.intent !== 'oplist') {\n new QueueOptimizer().optimize(this);\n }\n var transfers = getTransfers(this);\n var length = this.length;\n this._totalLength += length;\n\n this.messageHandler.send('RenderPageChunk', {\n operatorList: {\n fnArray: this.fnArray,\n argsArray: this.argsArray,\n lastChunk,\n length,\n },\n pageIndex: this.pageIndex,\n intent: this.intent,\n }, transfers);\n this.dependencies = Object.create(null);\n this.fnArray.length = 0;\n this.argsArray.length = 0;\n },\n };\n\n return OperatorList;\n})();\n\nvar StateManager = (function StateManagerClosure() {\n function StateManager(initialState) {\n this.state = initialState;\n this.stateStack = [];\n }\n StateManager.prototype = {\n save() {\n var old = this.state;\n this.stateStack.push(this.state);\n this.state = old.clone();\n },\n restore() {\n var prev = this.stateStack.pop();\n if (prev) {\n this.state = prev;\n }\n },\n transform(args) {\n this.state.ctm = Util.transform(this.state.ctm, args);\n },\n };\n return StateManager;\n})();\n\nvar TextState = (function TextStateClosure() {\n function TextState() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.fontName = null;\n this.fontSize = 0;\n this.font = null;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.textMatrix = IDENTITY_MATRIX.slice();\n this.textLineMatrix = IDENTITY_MATRIX.slice();\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.leading = 0;\n this.textHScale = 1;\n this.textRise = 0;\n }\n\n TextState.prototype = {\n setTextMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n var m = this.textMatrix;\n m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;\n },\n setTextLineMatrix: function TextState_setTextMatrix(a, b, c, d, e, f) {\n var m = this.textLineMatrix;\n m[0] = a; m[1] = b; m[2] = c; m[3] = d; m[4] = e; m[5] = f;\n },\n translateTextMatrix: function TextState_translateTextMatrix(x, y) {\n var m = this.textMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n },\n translateTextLineMatrix: function TextState_translateTextMatrix(x, y) {\n var m = this.textLineMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n },\n calcTextLineMatrixAdvance:\n function TextState_calcTextLineMatrixAdvance(a, b, c, d, e, f) {\n var font = this.font;\n if (!font) {\n return null;\n }\n var m = this.textLineMatrix;\n if (!(a === m[0] && b === m[1] && c === m[2] && d === m[3])) {\n return null;\n }\n var txDiff = e - m[4], tyDiff = f - m[5];\n if ((font.vertical && txDiff !== 0) || (!font.vertical && tyDiff !== 0)) {\n return null;\n }\n var tx, ty, denominator = a * d - b * c;\n if (font.vertical) {\n tx = -tyDiff * c / denominator;\n ty = tyDiff * a / denominator;\n } else {\n tx = txDiff * d / denominator;\n ty = -txDiff * b / denominator;\n }\n return { width: tx, height: ty, value: (font.vertical ? ty : tx), };\n },\n calcRenderMatrix: function TextState_calcRendeMatrix(ctm) {\n // 9.4.4 Text Space Details\n var tsm = [this.fontSize * this.textHScale, 0,\n 0, this.fontSize,\n 0, this.textRise];\n return Util.transform(ctm, Util.transform(this.textMatrix, tsm));\n },\n carriageReturn: function TextState_carriageReturn() {\n this.translateTextLineMatrix(0, -this.leading);\n this.textMatrix = this.textLineMatrix.slice();\n },\n clone: function TextState_clone() {\n var clone = Object.create(this);\n clone.textMatrix = this.textMatrix.slice();\n clone.textLineMatrix = this.textLineMatrix.slice();\n clone.fontMatrix = this.fontMatrix.slice();\n return clone;\n },\n };\n return TextState;\n})();\n\nvar EvalState = (function EvalStateClosure() {\n function EvalState() {\n this.ctm = new Float32Array(IDENTITY_MATRIX);\n this.font = null;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.fillColorSpace = ColorSpace.singletons.gray;\n this.strokeColorSpace = ColorSpace.singletons.gray;\n }\n EvalState.prototype = {\n clone: function CanvasExtraState_clone() {\n return Object.create(this);\n },\n };\n return EvalState;\n})();\n\nvar EvaluatorPreprocessor = (function EvaluatorPreprocessorClosure() {\n // Specifies properties for each command\n //\n // If variableArgs === true: [0, `numArgs`] expected\n // If variableArgs === false: exactly `numArgs` expected\n var getOPMap = getLookupTableFactory(function (t) {\n // Graphic state\n t['w'] = { id: OPS.setLineWidth, numArgs: 1, variableArgs: false, };\n t['J'] = { id: OPS.setLineCap, numArgs: 1, variableArgs: false, };\n t['j'] = { id: OPS.setLineJoin, numArgs: 1, variableArgs: false, };\n t['M'] = { id: OPS.setMiterLimit, numArgs: 1, variableArgs: false, };\n t['d'] = { id: OPS.setDash, numArgs: 2, variableArgs: false, };\n t['ri'] = { id: OPS.setRenderingIntent, numArgs: 1, variableArgs: false, };\n t['i'] = { id: OPS.setFlatness, numArgs: 1, variableArgs: false, };\n t['gs'] = { id: OPS.setGState, numArgs: 1, variableArgs: false, };\n t['q'] = { id: OPS.save, numArgs: 0, variableArgs: false, };\n t['Q'] = { id: OPS.restore, numArgs: 0, variableArgs: false, };\n t['cm'] = { id: OPS.transform, numArgs: 6, variableArgs: false, };\n\n // Path\n t['m'] = { id: OPS.moveTo, numArgs: 2, variableArgs: false, };\n t['l'] = { id: OPS.lineTo, numArgs: 2, variableArgs: false, };\n t['c'] = { id: OPS.curveTo, numArgs: 6, variableArgs: false, };\n t['v'] = { id: OPS.curveTo2, numArgs: 4, variableArgs: false, };\n t['y'] = { id: OPS.curveTo3, numArgs: 4, variableArgs: false, };\n t['h'] = { id: OPS.closePath, numArgs: 0, variableArgs: false, };\n t['re'] = { id: OPS.rectangle, numArgs: 4, variableArgs: false, };\n t['S'] = { id: OPS.stroke, numArgs: 0, variableArgs: false, };\n t['s'] = { id: OPS.closeStroke, numArgs: 0, variableArgs: false, };\n t['f'] = { id: OPS.fill, numArgs: 0, variableArgs: false, };\n t['F'] = { id: OPS.fill, numArgs: 0, variableArgs: false, };\n t['f*'] = { id: OPS.eoFill, numArgs: 0, variableArgs: false, };\n t['B'] = { id: OPS.fillStroke, numArgs: 0, variableArgs: false, };\n t['B*'] = { id: OPS.eoFillStroke, numArgs: 0, variableArgs: false, };\n t['b'] = { id: OPS.closeFillStroke, numArgs: 0, variableArgs: false, };\n t['b*'] = { id: OPS.closeEOFillStroke, numArgs: 0, variableArgs: false, };\n t['n'] = { id: OPS.endPath, numArgs: 0, variableArgs: false, };\n\n // Clipping\n t['W'] = { id: OPS.clip, numArgs: 0, variableArgs: false, };\n t['W*'] = { id: OPS.eoClip, numArgs: 0, variableArgs: false, };\n\n // Text\n t['BT'] = { id: OPS.beginText, numArgs: 0, variableArgs: false, };\n t['ET'] = { id: OPS.endText, numArgs: 0, variableArgs: false, };\n t['Tc'] = { id: OPS.setCharSpacing, numArgs: 1, variableArgs: false, };\n t['Tw'] = { id: OPS.setWordSpacing, numArgs: 1, variableArgs: false, };\n t['Tz'] = { id: OPS.setHScale, numArgs: 1, variableArgs: false, };\n t['TL'] = { id: OPS.setLeading, numArgs: 1, variableArgs: false, };\n t['Tf'] = { id: OPS.setFont, numArgs: 2, variableArgs: false, };\n t['Tr'] = { id: OPS.setTextRenderingMode, numArgs: 1,\n variableArgs: false, };\n t['Ts'] = { id: OPS.setTextRise, numArgs: 1, variableArgs: false, };\n t['Td'] = { id: OPS.moveText, numArgs: 2, variableArgs: false, };\n t['TD'] = { id: OPS.setLeadingMoveText, numArgs: 2, variableArgs: false, };\n t['Tm'] = { id: OPS.setTextMatrix, numArgs: 6, variableArgs: false, };\n t['T*'] = { id: OPS.nextLine, numArgs: 0, variableArgs: false, };\n t['Tj'] = { id: OPS.showText, numArgs: 1, variableArgs: false, };\n t['TJ'] = { id: OPS.showSpacedText, numArgs: 1, variableArgs: false, };\n t['\\''] = { id: OPS.nextLineShowText, numArgs: 1, variableArgs: false, };\n t['\"'] = { id: OPS.nextLineSetSpacingShowText, numArgs: 3,\n variableArgs: false, };\n\n // Type3 fonts\n t['d0'] = { id: OPS.setCharWidth, numArgs: 2, variableArgs: false, };\n t['d1'] = { id: OPS.setCharWidthAndBounds, numArgs: 6,\n variableArgs: false, };\n\n // Color\n t['CS'] = { id: OPS.setStrokeColorSpace, numArgs: 1, variableArgs: false, };\n t['cs'] = { id: OPS.setFillColorSpace, numArgs: 1, variableArgs: false, };\n t['SC'] = { id: OPS.setStrokeColor, numArgs: 4, variableArgs: true, };\n t['SCN'] = { id: OPS.setStrokeColorN, numArgs: 33, variableArgs: true, };\n t['sc'] = { id: OPS.setFillColor, numArgs: 4, variableArgs: true, };\n t['scn'] = { id: OPS.setFillColorN, numArgs: 33, variableArgs: true, };\n t['G'] = { id: OPS.setStrokeGray, numArgs: 1, variableArgs: false, };\n t['g'] = { id: OPS.setFillGray, numArgs: 1, variableArgs: false, };\n t['RG'] = { id: OPS.setStrokeRGBColor, numArgs: 3, variableArgs: false, };\n t['rg'] = { id: OPS.setFillRGBColor, numArgs: 3, variableArgs: false, };\n t['K'] = { id: OPS.setStrokeCMYKColor, numArgs: 4, variableArgs: false, };\n t['k'] = { id: OPS.setFillCMYKColor, numArgs: 4, variableArgs: false, };\n\n // Shading\n t['sh'] = { id: OPS.shadingFill, numArgs: 1, variableArgs: false, };\n\n // Images\n t['BI'] = { id: OPS.beginInlineImage, numArgs: 0, variableArgs: false, };\n t['ID'] = { id: OPS.beginImageData, numArgs: 0, variableArgs: false, };\n t['EI'] = { id: OPS.endInlineImage, numArgs: 1, variableArgs: false, };\n\n // XObjects\n t['Do'] = { id: OPS.paintXObject, numArgs: 1, variableArgs: false, };\n t['MP'] = { id: OPS.markPoint, numArgs: 1, variableArgs: false, };\n t['DP'] = { id: OPS.markPointProps, numArgs: 2, variableArgs: false, };\n t['BMC'] = { id: OPS.beginMarkedContent, numArgs: 1, variableArgs: false, };\n t['BDC'] = { id: OPS.beginMarkedContentProps, numArgs: 2,\n variableArgs: false, };\n t['EMC'] = { id: OPS.endMarkedContent, numArgs: 0, variableArgs: false, };\n\n // Compatibility\n t['BX'] = { id: OPS.beginCompat, numArgs: 0, variableArgs: false, };\n t['EX'] = { id: OPS.endCompat, numArgs: 0, variableArgs: false, };\n\n // (reserved partial commands for the lexer)\n t['BM'] = null;\n t['BD'] = null;\n t['true'] = null;\n t['fa'] = null;\n t['fal'] = null;\n t['fals'] = null;\n t['false'] = null;\n t['nu'] = null;\n t['nul'] = null;\n t['null'] = null;\n });\n\n function EvaluatorPreprocessor(stream, xref, stateManager) {\n this.opMap = getOPMap();\n // TODO(mduan): pass array of knownCommands rather than this.opMap\n // dictionary\n this.parser = new Parser(new Lexer(stream, this.opMap), false, xref);\n this.stateManager = stateManager;\n this.nonProcessedArgs = [];\n }\n\n EvaluatorPreprocessor.prototype = {\n get savedStatesDepth() {\n return this.stateManager.stateStack.length;\n },\n\n // |operation| is an object with two fields:\n //\n // - |fn| is an out param.\n //\n // - |args| is an inout param. On entry, it should have one of two values.\n //\n // - An empty array. This indicates that the caller is providing the\n // array in which the args will be stored in. The caller should use\n // this value if it can reuse a single array for each call to read().\n //\n // - |null|. This indicates that the caller needs this function to create\n // the array in which any args are stored in. If there are zero args,\n // this function will leave |operation.args| as |null| (thus avoiding\n // allocations that would occur if we used an empty array to represent\n // zero arguments). Otherwise, it will replace |null| with a new array\n // containing the arguments. The caller should use this value if it\n // cannot reuse an array for each call to read().\n //\n // These two modes are present because this function is very hot and so\n // avoiding allocations where possible is worthwhile.\n //\n read: function EvaluatorPreprocessor_read(operation) {\n var args = operation.args;\n while (true) {\n var obj = this.parser.getObj();\n if (isCmd(obj)) {\n var cmd = obj.cmd;\n // Check that the command is valid\n var opSpec = this.opMap[cmd];\n if (!opSpec) {\n warn('Unknown command \"' + cmd + '\"');\n continue;\n }\n\n var fn = opSpec.id;\n var numArgs = opSpec.numArgs;\n var argsLength = args !== null ? args.length : 0;\n\n if (!opSpec.variableArgs) {\n // Postscript commands can be nested, e.g. /F2 /GS2 gs 5.711 Tf\n if (argsLength !== numArgs) {\n var nonProcessedArgs = this.nonProcessedArgs;\n while (argsLength > numArgs) {\n nonProcessedArgs.push(args.shift());\n argsLength--;\n }\n while (argsLength < numArgs && nonProcessedArgs.length !== 0) {\n if (args === null) {\n args = [];\n }\n args.unshift(nonProcessedArgs.pop());\n argsLength++;\n }\n }\n\n if (argsLength < numArgs) {\n // If we receive too few arguments, it's not possible to execute\n // the command, hence we skip the command.\n warn('Skipping command ' + fn + ': expected ' + numArgs +\n ' args, but received ' + argsLength + ' args.');\n if (args !== null) {\n args.length = 0;\n }\n continue;\n }\n } else if (argsLength > numArgs) {\n info('Command ' + fn + ': expected [0,' + numArgs +\n '] args, but received ' + argsLength + ' args.');\n }\n\n // TODO figure out how to type-check vararg functions\n this.preprocessCommand(fn, args);\n\n operation.fn = fn;\n operation.args = args;\n return true;\n }\n if (isEOF(obj)) {\n return false; // no more commands\n }\n // argument\n if (obj !== null) {\n if (args === null) {\n args = [];\n }\n args.push(obj);\n if (args.length > 33) {\n throw new FormatError('Too many arguments');\n }\n }\n }\n },\n\n preprocessCommand:\n function EvaluatorPreprocessor_preprocessCommand(fn, args) {\n switch (fn | 0) {\n case OPS.save:\n this.stateManager.save();\n break;\n case OPS.restore:\n this.stateManager.restore();\n break;\n case OPS.transform:\n this.stateManager.transform(args);\n break;\n }\n },\n };\n return EvaluatorPreprocessor;\n})();\n\nvar QueueOptimizer = (function QueueOptimizerClosure() {\n function addState(parentState, pattern, fn) {\n var state = parentState;\n for (var i = 0, ii = pattern.length - 1; i < ii; i++) {\n var item = pattern[i];\n state = (state[item] || (state[item] = []));\n }\n state[pattern[pattern.length - 1]] = fn;\n }\n\n function handlePaintSolidColorImageMask(iFirstSave, count, fnArray,\n argsArray) {\n // Handles special case of mainly LaTeX documents which use image masks to\n // draw lines with the current fill style.\n // 'count' groups of (save, transform, paintImageMaskXObject, restore)+\n // have been found at iFirstSave.\n var iFirstPIMXO = iFirstSave + 2;\n for (var i = 0; i < count; i++) {\n var arg = argsArray[iFirstPIMXO + 4 * i];\n var imageMask = arg.length === 1 && arg[0];\n if (imageMask && imageMask.width === 1 && imageMask.height === 1 &&\n (!imageMask.data.length ||\n (imageMask.data.length === 1 && imageMask.data[0] === 0))) {\n fnArray[iFirstPIMXO + 4 * i] = OPS.paintSolidColorImageMask;\n continue;\n }\n break;\n }\n return count - i;\n }\n\n var InitialState = [];\n\n // This replaces (save, transform, paintInlineImageXObject, restore)+\n // sequences with one |paintInlineImageXObjectGroup| operation.\n addState(InitialState,\n [OPS.save, OPS.transform, OPS.paintInlineImageXObject, OPS.restore],\n function foundInlineImageGroup(context) {\n var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;\n var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;\n var MAX_WIDTH = 1000;\n var IMAGE_PADDING = 1;\n\n var fnArray = context.fnArray, argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIIXO = curr - 1;\n\n // Look for the quartets.\n var i = iFirstSave + 4;\n var ii = fnArray.length;\n while (i + 3 < ii) {\n if (fnArray[i] !== OPS.save ||\n fnArray[i + 1] !== OPS.transform ||\n fnArray[i + 2] !== OPS.paintInlineImageXObject ||\n fnArray[i + 3] !== OPS.restore) {\n break; // ops don't match\n }\n i += 4;\n }\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n var count = Math.min((i - iFirstSave) / 4,\n MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);\n if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {\n return i;\n }\n\n // assuming that heights of those image is too small (~1 pixel)\n // packing as much as possible by lines\n var maxX = 0;\n var map = [], maxLineHeight = 0;\n var currentX = IMAGE_PADDING, currentY = IMAGE_PADDING;\n var q;\n for (q = 0; q < count; q++) {\n var transform = argsArray[iFirstTransform + (q << 2)];\n var img = argsArray[iFirstPIIXO + (q << 2)][0];\n if (currentX + img.width > MAX_WIDTH) {\n // starting new line\n maxX = Math.max(maxX, currentX);\n currentY += maxLineHeight + 2 * IMAGE_PADDING;\n currentX = 0;\n maxLineHeight = 0;\n }\n map.push({\n transform,\n x: currentX, y: currentY,\n w: img.width, h: img.height,\n });\n currentX += img.width + 2 * IMAGE_PADDING;\n maxLineHeight = Math.max(maxLineHeight, img.height);\n }\n var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;\n var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;\n var imgData = new Uint8Array(imgWidth * imgHeight * 4);\n var imgRowSize = imgWidth << 2;\n for (q = 0; q < count; q++) {\n var data = argsArray[iFirstPIIXO + (q << 2)][0].data;\n // Copy image by lines and extends pixels into padding.\n var rowSize = map[q].w << 2;\n var dataOffset = 0;\n var offset = (map[q].x + map[q].y * imgWidth) << 2;\n imgData.set(data.subarray(0, rowSize), offset - imgRowSize);\n for (var k = 0, kk = map[q].h; k < kk; k++) {\n imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);\n dataOffset += rowSize;\n offset += imgRowSize;\n }\n imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);\n while (offset >= 0) {\n data[offset - 4] = data[offset];\n data[offset - 3] = data[offset + 1];\n data[offset - 2] = data[offset + 2];\n data[offset - 1] = data[offset + 3];\n data[offset + rowSize] = data[offset + rowSize - 4];\n data[offset + rowSize + 1] = data[offset + rowSize - 3];\n data[offset + rowSize + 2] = data[offset + rowSize - 2];\n data[offset + rowSize + 3] = data[offset + rowSize - 1];\n offset -= imgRowSize;\n }\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintInlineImageXObjectGroup);\n argsArray.splice(iFirstSave, count * 4,\n [{ width: imgWidth, height: imgHeight, kind: ImageKind.RGBA_32BPP,\n data: imgData, }, map]);\n\n return iFirstSave + 1;\n });\n\n // This replaces (save, transform, paintImageMaskXObject, restore)+\n // sequences with one |paintImageMaskXObjectGroup| or one\n // |paintImageMaskXObjectRepeat| operation.\n addState(InitialState,\n [OPS.save, OPS.transform, OPS.paintImageMaskXObject, OPS.restore],\n function foundImageMaskGroup(context) {\n var MIN_IMAGES_IN_MASKS_BLOCK = 10;\n var MAX_IMAGES_IN_MASKS_BLOCK = 100;\n var MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;\n\n var fnArray = context.fnArray, argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIMXO = curr - 1;\n\n // Look for the quartets.\n var i = iFirstSave + 4;\n var ii = fnArray.length;\n while (i + 3 < ii) {\n if (fnArray[i] !== OPS.save ||\n fnArray[i + 1] !== OPS.transform ||\n fnArray[i + 2] !== OPS.paintImageMaskXObject ||\n fnArray[i + 3] !== OPS.restore) {\n break; // ops don't match\n }\n i += 4;\n }\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n var count = (i - iFirstSave) / 4;\n count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray,\n argsArray);\n if (count < MIN_IMAGES_IN_MASKS_BLOCK) {\n return i;\n }\n\n var q;\n var isSameImage = false;\n var iTransform, transformArgs;\n var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];\n if (argsArray[iFirstTransform][1] === 0 &&\n argsArray[iFirstTransform][2] === 0) {\n isSameImage = true;\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n iTransform = iFirstTransform + 4;\n var iPIMXO = iFirstPIMXO + 4;\n for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {\n transformArgs = argsArray[iTransform];\n if (argsArray[iPIMXO][0] !== firstPIMXOArg0 ||\n transformArgs[0] !== firstTransformArg0 ||\n transformArgs[1] !== 0 ||\n transformArgs[2] !== 0 ||\n transformArgs[3] !== firstTransformArg3) {\n if (q < MIN_IMAGES_IN_MASKS_BLOCK) {\n isSameImage = false;\n } else {\n count = q;\n }\n break; // different image or transform\n }\n }\n }\n\n if (isSameImage) {\n count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);\n var positions = new Float32Array(count * 2);\n iTransform = iFirstTransform;\n for (q = 0; q < count; q++, iTransform += 4) {\n transformArgs = argsArray[iTransform];\n positions[(q << 1)] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4,\n [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);\n } else {\n count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);\n var images = [];\n for (q = 0; q < count; q++) {\n transformArgs = argsArray[iFirstTransform + (q << 2)];\n var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];\n images.push({ data: maskParams.data, width: maskParams.width,\n height: maskParams.height,\n transform: transformArgs, });\n }\n\n // Replace queue items.\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageMaskXObjectGroup);\n argsArray.splice(iFirstSave, count * 4, [images]);\n }\n\n return iFirstSave + 1;\n });\n\n // This replaces (save, transform, paintImageXObject, restore)+ sequences\n // with one paintImageXObjectRepeat operation, if the |transform| and\n // |paintImageXObjectRepeat| ops are appropriate.\n addState(InitialState,\n [OPS.save, OPS.transform, OPS.paintImageXObject, OPS.restore],\n function (context) {\n var MIN_IMAGES_IN_BLOCK = 3;\n var MAX_IMAGES_IN_BLOCK = 1000;\n\n var fnArray = context.fnArray, argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstSave = curr - 3;\n var iFirstTransform = curr - 2;\n var iFirstPIXO = curr - 1;\n var iFirstRestore = curr;\n\n if (argsArray[iFirstTransform][1] !== 0 ||\n argsArray[iFirstTransform][2] !== 0) {\n return iFirstRestore + 1; // transform has the wrong form\n }\n\n // Look for the quartets.\n var firstPIXOArg0 = argsArray[iFirstPIXO][0];\n var firstTransformArg0 = argsArray[iFirstTransform][0];\n var firstTransformArg3 = argsArray[iFirstTransform][3];\n var i = iFirstSave + 4;\n var ii = fnArray.length;\n while (i + 3 < ii) {\n if (fnArray[i] !== OPS.save ||\n fnArray[i + 1] !== OPS.transform ||\n fnArray[i + 2] !== OPS.paintImageXObject ||\n fnArray[i + 3] !== OPS.restore) {\n break; // ops don't match\n }\n if (argsArray[i + 1][0] !== firstTransformArg0 ||\n argsArray[i + 1][1] !== 0 ||\n argsArray[i + 1][2] !== 0 ||\n argsArray[i + 1][3] !== firstTransformArg3) {\n break; // transforms don't match\n }\n if (argsArray[i + 2][0] !== firstPIXOArg0) {\n break; // images don't match\n }\n i += 4;\n }\n\n // At this point, i is the index of the first op past the last valid\n // quartet.\n var count = Math.min((i - iFirstSave) / 4, MAX_IMAGES_IN_BLOCK);\n if (count < MIN_IMAGES_IN_BLOCK) {\n return i;\n }\n\n // Extract the (x,y) positions from all of the matching transforms.\n var positions = new Float32Array(count * 2);\n var iTransform = iFirstTransform;\n for (var q = 0; q < count; q++, iTransform += 4) {\n var transformArgs = argsArray[iTransform];\n positions[(q << 1)] = transformArgs[4];\n positions[(q << 1) + 1] = transformArgs[5];\n }\n\n // Replace queue items.\n var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3,\n positions];\n fnArray.splice(iFirstSave, count * 4, OPS.paintImageXObjectRepeat);\n argsArray.splice(iFirstSave, count * 4, args);\n\n return iFirstSave + 1;\n });\n\n // This replaces (beginText, setFont, setTextMatrix, showText, endText)+\n // sequences with (beginText, setFont, (setTextMatrix, showText)+, endText)+\n // sequences, if the font for each one is the same.\n addState(InitialState,\n [OPS.beginText, OPS.setFont, OPS.setTextMatrix, OPS.showText, OPS.endText],\n function (context) {\n var MIN_CHARS_IN_BLOCK = 3;\n var MAX_CHARS_IN_BLOCK = 1000;\n\n var fnArray = context.fnArray, argsArray = context.argsArray;\n var curr = context.iCurr;\n var iFirstBeginText = curr - 4;\n var iFirstSetFont = curr - 3;\n var iFirstSetTextMatrix = curr - 2;\n var iFirstShowText = curr - 1;\n var iFirstEndText = curr;\n\n // Look for the quintets.\n var firstSetFontArg0 = argsArray[iFirstSetFont][0];\n var firstSetFontArg1 = argsArray[iFirstSetFont][1];\n var i = iFirstBeginText + 5;\n var ii = fnArray.length;\n while (i + 4 < ii) {\n if (fnArray[i] !== OPS.beginText ||\n fnArray[i + 1] !== OPS.setFont ||\n fnArray[i + 2] !== OPS.setTextMatrix ||\n fnArray[i + 3] !== OPS.showText ||\n fnArray[i + 4] !== OPS.endText) {\n break; // ops don't match\n }\n if (argsArray[i + 1][0] !== firstSetFontArg0 ||\n argsArray[i + 1][1] !== firstSetFontArg1) {\n break; // fonts don't match\n }\n i += 5;\n }\n\n // At this point, i is the index of the first op past the last valid\n // quintet.\n var count = Math.min(((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);\n if (count < MIN_CHARS_IN_BLOCK) {\n return i;\n }\n\n // If the preceding quintet is (, setFont, setTextMatrix,\n // showText, endText), include that as well. (E.g. might be\n // |dependency|.)\n var iFirst = iFirstBeginText;\n if (iFirstBeginText >= 4 &&\n fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] &&\n fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] &&\n fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] &&\n fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] &&\n argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 &&\n argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {\n count++;\n iFirst -= 5;\n }\n\n // Remove (endText, beginText, setFont) trios.\n var iEndText = iFirst + 4;\n for (var q = 1; q < count; q++) {\n fnArray.splice(iEndText, 3);\n argsArray.splice(iEndText, 3);\n iEndText += 2;\n }\n\n return iEndText + 1;\n });\n\n function QueueOptimizer() {}\n\n QueueOptimizer.prototype = {\n optimize: function QueueOptimizer_optimize(queue) {\n var fnArray = queue.fnArray, argsArray = queue.argsArray;\n var context = {\n iCurr: 0,\n fnArray,\n argsArray,\n };\n var state;\n var i = 0, ii = fnArray.length;\n while (i < ii) {\n state = (state || InitialState)[fnArray[i]];\n if (typeof state === 'function') { // we found some handler\n context.iCurr = i;\n // state() returns the index of the first non-matching op (if we\n // didn't match) or the first op past the modified ops (if we did\n // match and replace).\n i = state(context);\n state = undefined; // reset the state machine\n ii = context.fnArray.length;\n } else {\n i++;\n }\n }\n },\n };\n return QueueOptimizer;\n})();\n\nexport {\n OperatorList,\n PartialEvaluator,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/evaluator.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n info, log2, readUint16, readUint32, warn\n} from '../shared/util';\nimport { ArithmeticDecoder } from './arithmetic_decoder';\n\nlet JpxError = (function JpxErrorClosure() {\n function JpxError(msg) {\n this.message = 'JPX error: ' + msg;\n }\n\n JpxError.prototype = new Error();\n JpxError.prototype.name = 'JpxError';\n JpxError.constructor = JpxError;\n\n return JpxError;\n})();\n\nvar JpxImage = (function JpxImageClosure() {\n // Table E.1\n var SubbandsGainLog2 = {\n 'LL': 0,\n 'LH': 1,\n 'HL': 1,\n 'HH': 2,\n };\n function JpxImage() {\n this.failOnCorruptedImage = false;\n }\n JpxImage.prototype = {\n parse: function JpxImage_parse(data) {\n\n var head = readUint16(data, 0);\n // No box header, immediate start of codestream (SOC)\n if (head === 0xFF4F) {\n this.parseCodestream(data, 0, data.length);\n return;\n }\n\n var position = 0, length = data.length;\n while (position < length) {\n var headerSize = 8;\n var lbox = readUint32(data, position);\n var tbox = readUint32(data, position + 4);\n position += headerSize;\n if (lbox === 1) {\n // XLBox: read UInt64 according to spec.\n // JavaScript's int precision of 53 bit should be sufficient here.\n lbox = readUint32(data, position) * 4294967296 +\n readUint32(data, position + 4);\n position += 8;\n headerSize += 8;\n }\n if (lbox === 0) {\n lbox = length - position + headerSize;\n }\n if (lbox < headerSize) {\n throw new JpxError('Invalid box field size');\n }\n var dataLength = lbox - headerSize;\n var jumpDataLength = true;\n switch (tbox) {\n case 0x6A703268: // 'jp2h'\n jumpDataLength = false; // parsing child boxes\n break;\n case 0x636F6C72: // 'colr'\n // Colorspaces are not used, the CS from the PDF is used.\n var method = data[position];\n if (method === 1) {\n // enumerated colorspace\n var colorspace = readUint32(data, position + 3);\n switch (colorspace) {\n case 16: // this indicates a sRGB colorspace\n case 17: // this indicates a grayscale colorspace\n case 18: // this indicates a YUV colorspace\n break;\n default:\n warn('Unknown colorspace ' + colorspace);\n break;\n }\n } else if (method === 2) {\n info('ICC profile not supported');\n }\n break;\n case 0x6A703263: // 'jp2c'\n this.parseCodestream(data, position, position + dataLength);\n break;\n case 0x6A502020: // 'jP\\024\\024'\n if (readUint32(data, position) !== 0x0d0a870a) {\n warn('Invalid JP2 signature');\n }\n break;\n // The following header types are valid but currently not used:\n case 0x6A501A1A: // 'jP\\032\\032'\n case 0x66747970: // 'ftyp'\n case 0x72726571: // 'rreq'\n case 0x72657320: // 'res '\n case 0x69686472: // 'ihdr'\n break;\n default:\n var headerType = String.fromCharCode((tbox >> 24) & 0xFF,\n (tbox >> 16) & 0xFF,\n (tbox >> 8) & 0xFF,\n tbox & 0xFF);\n warn('Unsupported header type ' + tbox + ' (' + headerType + ')');\n break;\n }\n if (jumpDataLength) {\n position += dataLength;\n }\n }\n },\n parseImageProperties: function JpxImage_parseImageProperties(stream) {\n var newByte = stream.getByte();\n while (newByte >= 0) {\n var oldByte = newByte;\n newByte = stream.getByte();\n var code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xFF51) {\n stream.skip(4);\n var Xsiz = stream.getInt32() >>> 0; // Byte 4\n var Ysiz = stream.getInt32() >>> 0; // Byte 8\n var XOsiz = stream.getInt32() >>> 0; // Byte 12\n var YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n var Csiz = stream.getUint16(); // Byte 36\n this.width = Xsiz - XOsiz;\n this.height = Ysiz - YOsiz;\n this.componentsCount = Csiz;\n // Results are always returned as Uint8Arrays\n this.bitsPerComponent = 8;\n return;\n }\n }\n throw new JpxError('No size marker found in JPX stream');\n },\n parseCodestream: function JpxImage_parseCodestream(data, start, end) {\n var context = {};\n var doNotRecover = false;\n try {\n var position = start;\n while (position + 1 < end) {\n var code = readUint16(data, position);\n position += 2;\n\n var length = 0, j, sqcd, spqcds, spqcdSize, scalarExpounded, tile;\n switch (code) {\n case 0xFF4F: // Start of codestream (SOC)\n context.mainHeader = true;\n break;\n case 0xFFD9: // End of codestream (EOC)\n break;\n case 0xFF51: // Image and tile size (SIZ)\n length = readUint16(data, position);\n var siz = {};\n siz.Xsiz = readUint32(data, position + 4);\n siz.Ysiz = readUint32(data, position + 8);\n siz.XOsiz = readUint32(data, position + 12);\n siz.YOsiz = readUint32(data, position + 16);\n siz.XTsiz = readUint32(data, position + 20);\n siz.YTsiz = readUint32(data, position + 24);\n siz.XTOsiz = readUint32(data, position + 28);\n siz.YTOsiz = readUint32(data, position + 32);\n var componentsCount = readUint16(data, position + 36);\n siz.Csiz = componentsCount;\n var components = [];\n j = position + 38;\n for (var i = 0; i < componentsCount; i++) {\n var component = {\n precision: (data[j] & 0x7F) + 1,\n isSigned: !!(data[j] & 0x80),\n XRsiz: data[j + 1],\n YRsiz: data[j + 1],\n };\n calculateComponentDimensions(component, siz);\n components.push(component);\n }\n context.SIZ = siz;\n context.components = components;\n calculateTileGrids(context, components);\n context.QCC = [];\n context.COC = [];\n break;\n case 0xFF5C: // Quantization default (QCD)\n length = readUint16(data, position);\n var qcd = {};\n j = position + 2;\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('Invalid SQcd value ' + sqcd);\n }\n qcd.noQuantization = (spqcdSize === 8);\n qcd.scalarExpounded = scalarExpounded;\n qcd.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < length + position) {\n var spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcd.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCD = qcd;\n } else {\n context.currentTile.QCD = qcd;\n context.currentTile.QCC = [];\n }\n break;\n case 0xFF5D: // Quantization component (QCC)\n length = readUint16(data, position);\n var qcc = {};\n j = position + 2;\n var cqcc;\n if (context.SIZ.Csiz < 257) {\n cqcc = data[j++];\n } else {\n cqcc = readUint16(data, j);\n j += 2;\n }\n sqcd = data[j++];\n switch (sqcd & 0x1F) {\n case 0:\n spqcdSize = 8;\n scalarExpounded = true;\n break;\n case 1:\n spqcdSize = 16;\n scalarExpounded = false;\n break;\n case 2:\n spqcdSize = 16;\n scalarExpounded = true;\n break;\n default:\n throw new Error('Invalid SQcd value ' + sqcd);\n }\n qcc.noQuantization = (spqcdSize === 8);\n qcc.scalarExpounded = scalarExpounded;\n qcc.guardBits = sqcd >> 5;\n spqcds = [];\n while (j < (length + position)) {\n spqcd = {};\n if (spqcdSize === 8) {\n spqcd.epsilon = data[j++] >> 3;\n spqcd.mu = 0;\n } else {\n spqcd.epsilon = data[j] >> 3;\n spqcd.mu = ((data[j] & 0x7) << 8) | data[j + 1];\n j += 2;\n }\n spqcds.push(spqcd);\n }\n qcc.SPqcds = spqcds;\n if (context.mainHeader) {\n context.QCC[cqcc] = qcc;\n } else {\n context.currentTile.QCC[cqcc] = qcc;\n }\n break;\n case 0xFF52: // Coding style default (COD)\n length = readUint16(data, position);\n var cod = {};\n j = position + 2;\n var scod = data[j++];\n cod.entropyCoderWithCustomPrecincts = !!(scod & 1);\n cod.sopMarkerUsed = !!(scod & 2);\n cod.ephMarkerUsed = !!(scod & 4);\n cod.progressionOrder = data[j++];\n cod.layersCount = readUint16(data, j);\n j += 2;\n cod.multipleComponentTransform = data[j++];\n\n cod.decompositionLevelsCount = data[j++];\n cod.xcb = (data[j++] & 0xF) + 2;\n cod.ycb = (data[j++] & 0xF) + 2;\n var blockStyle = data[j++];\n cod.selectiveArithmeticCodingBypass = !!(blockStyle & 1);\n cod.resetContextProbabilities = !!(blockStyle & 2);\n cod.terminationOnEachCodingPass = !!(blockStyle & 4);\n cod.verticalyStripe = !!(blockStyle & 8);\n cod.predictableTermination = !!(blockStyle & 16);\n cod.segmentationSymbolUsed = !!(blockStyle & 32);\n cod.reversibleTransformation = data[j++];\n if (cod.entropyCoderWithCustomPrecincts) {\n var precinctsSizes = [];\n while (j < length + position) {\n var precinctsSize = data[j++];\n precinctsSizes.push({\n PPx: precinctsSize & 0xF,\n PPy: precinctsSize >> 4,\n });\n }\n cod.precinctsSizes = precinctsSizes;\n }\n var unsupported = [];\n if (cod.selectiveArithmeticCodingBypass) {\n unsupported.push('selectiveArithmeticCodingBypass');\n }\n if (cod.resetContextProbabilities) {\n unsupported.push('resetContextProbabilities');\n }\n if (cod.terminationOnEachCodingPass) {\n unsupported.push('terminationOnEachCodingPass');\n }\n if (cod.verticalyStripe) {\n unsupported.push('verticalyStripe');\n }\n if (cod.predictableTermination) {\n unsupported.push('predictableTermination');\n }\n if (unsupported.length > 0) {\n doNotRecover = true;\n throw new Error('Unsupported COD options (' +\n unsupported.join(', ') + ')');\n }\n if (context.mainHeader) {\n context.COD = cod;\n } else {\n context.currentTile.COD = cod;\n context.currentTile.COC = [];\n }\n break;\n case 0xFF90: // Start of tile-part (SOT)\n length = readUint16(data, position);\n tile = {};\n tile.index = readUint16(data, position + 2);\n tile.length = readUint32(data, position + 4);\n tile.dataEnd = tile.length + position - 2;\n tile.partIndex = data[position + 8];\n tile.partsCount = data[position + 9];\n\n context.mainHeader = false;\n if (tile.partIndex === 0) {\n // reset component specific settings\n tile.COD = context.COD;\n tile.COC = context.COC.slice(0); // clone of the global COC\n tile.QCD = context.QCD;\n tile.QCC = context.QCC.slice(0); // clone of the global COC\n }\n context.currentTile = tile;\n break;\n case 0xFF93: // Start of data (SOD)\n tile = context.currentTile;\n if (tile.partIndex === 0) {\n initializeTile(context, tile.index);\n buildPackets(context);\n }\n\n // moving to the end of the data\n length = tile.dataEnd - position;\n parseTilePackets(context, data, position, length);\n break;\n case 0xFF55: // Tile-part lengths, main header (TLM)\n case 0xFF57: // Packet length, main header (PLM)\n case 0xFF58: // Packet length, tile-part header (PLT)\n case 0xFF64: // Comment (COM)\n length = readUint16(data, position);\n // skipping content\n break;\n case 0xFF53: // Coding style component (COC)\n throw new Error('Codestream code 0xFF53 (COC) is ' +\n 'not implemented');\n default:\n throw new Error('Unknown codestream code: ' + code.toString(16));\n }\n position += length;\n }\n } catch (e) {\n if (doNotRecover || this.failOnCorruptedImage) {\n throw new JpxError(e.message);\n } else {\n warn('JPX: Trying to recover from: ' + e.message);\n }\n }\n this.tiles = transformComponents(context);\n this.width = context.SIZ.Xsiz - context.SIZ.XOsiz;\n this.height = context.SIZ.Ysiz - context.SIZ.YOsiz;\n this.componentsCount = context.SIZ.Csiz;\n },\n };\n function calculateComponentDimensions(component, siz) {\n // Section B.2 Component mapping\n component.x0 = Math.ceil(siz.XOsiz / component.XRsiz);\n component.x1 = Math.ceil(siz.Xsiz / component.XRsiz);\n component.y0 = Math.ceil(siz.YOsiz / component.YRsiz);\n component.y1 = Math.ceil(siz.Ysiz / component.YRsiz);\n component.width = component.x1 - component.x0;\n component.height = component.y1 - component.y0;\n }\n function calculateTileGrids(context, components) {\n var siz = context.SIZ;\n // Section B.3 Division into tile and tile-components\n var tile, tiles = [];\n var numXtiles = Math.ceil((siz.Xsiz - siz.XTOsiz) / siz.XTsiz);\n var numYtiles = Math.ceil((siz.Ysiz - siz.YTOsiz) / siz.YTsiz);\n for (var q = 0; q < numYtiles; q++) {\n for (var p = 0; p < numXtiles; p++) {\n tile = {};\n tile.tx0 = Math.max(siz.XTOsiz + p * siz.XTsiz, siz.XOsiz);\n tile.ty0 = Math.max(siz.YTOsiz + q * siz.YTsiz, siz.YOsiz);\n tile.tx1 = Math.min(siz.XTOsiz + (p + 1) * siz.XTsiz, siz.Xsiz);\n tile.ty1 = Math.min(siz.YTOsiz + (q + 1) * siz.YTsiz, siz.Ysiz);\n tile.width = tile.tx1 - tile.tx0;\n tile.height = tile.ty1 - tile.ty0;\n tile.components = [];\n tiles.push(tile);\n }\n }\n context.tiles = tiles;\n\n var componentsCount = siz.Csiz;\n for (var i = 0, ii = componentsCount; i < ii; i++) {\n var component = components[i];\n for (var j = 0, jj = tiles.length; j < jj; j++) {\n var tileComponent = {};\n tile = tiles[j];\n tileComponent.tcx0 = Math.ceil(tile.tx0 / component.XRsiz);\n tileComponent.tcy0 = Math.ceil(tile.ty0 / component.YRsiz);\n tileComponent.tcx1 = Math.ceil(tile.tx1 / component.XRsiz);\n tileComponent.tcy1 = Math.ceil(tile.ty1 / component.YRsiz);\n tileComponent.width = tileComponent.tcx1 - tileComponent.tcx0;\n tileComponent.height = tileComponent.tcy1 - tileComponent.tcy0;\n tile.components[i] = tileComponent;\n }\n }\n }\n function getBlocksDimensions(context, component, r) {\n var codOrCoc = component.codingStyleParameters;\n var result = {};\n if (!codOrCoc.entropyCoderWithCustomPrecincts) {\n result.PPx = 15;\n result.PPy = 15;\n } else {\n result.PPx = codOrCoc.precinctsSizes[r].PPx;\n result.PPy = codOrCoc.precinctsSizes[r].PPy;\n }\n // calculate codeblock size as described in section B.7\n result.xcb_ = (r > 0 ? Math.min(codOrCoc.xcb, result.PPx - 1) :\n Math.min(codOrCoc.xcb, result.PPx));\n result.ycb_ = (r > 0 ? Math.min(codOrCoc.ycb, result.PPy - 1) :\n Math.min(codOrCoc.ycb, result.PPy));\n return result;\n }\n function buildPrecincts(context, resolution, dimensions) {\n // Section B.6 Division resolution to precincts\n var precinctWidth = 1 << dimensions.PPx;\n var precinctHeight = 1 << dimensions.PPy;\n // Jasper introduces codeblock groups for mapping each subband codeblocks\n // to precincts. Precinct partition divides a resolution according to width\n // and height parameters. The subband that belongs to the resolution level\n // has a different size than the level, unless it is the zero resolution.\n\n // From Jasper documentation: jpeg2000.pdf, section K: Tier-2 coding:\n // The precinct partitioning for a particular subband is derived from a\n // partitioning of its parent LL band (i.e., the LL band at the next higher\n // resolution level)... The LL band associated with each resolution level is\n // divided into precincts... Each of the resulting precinct regions is then\n // mapped into its child subbands (if any) at the next lower resolution\n // level. This is accomplished by using the coordinate transformation\n // (u, v) = (ceil(x/2), ceil(y/2)) where (x, y) and (u, v) are the\n // coordinates of a point in the LL band and child subband, respectively.\n var isZeroRes = resolution.resLevel === 0;\n var precinctWidthInSubband = 1 << (dimensions.PPx + (isZeroRes ? 0 : -1));\n var precinctHeightInSubband = 1 << (dimensions.PPy + (isZeroRes ? 0 : -1));\n var numprecinctswide = (resolution.trx1 > resolution.trx0 ?\n Math.ceil(resolution.trx1 / precinctWidth) -\n Math.floor(resolution.trx0 / precinctWidth) : 0);\n var numprecinctshigh = (resolution.try1 > resolution.try0 ?\n Math.ceil(resolution.try1 / precinctHeight) -\n Math.floor(resolution.try0 / precinctHeight) : 0);\n var numprecincts = numprecinctswide * numprecinctshigh;\n\n resolution.precinctParameters = {\n precinctWidth,\n precinctHeight,\n numprecinctswide,\n numprecinctshigh,\n numprecincts,\n precinctWidthInSubband,\n precinctHeightInSubband,\n };\n }\n function buildCodeblocks(context, subband, dimensions) {\n // Section B.7 Division sub-band into code-blocks\n var xcb_ = dimensions.xcb_;\n var ycb_ = dimensions.ycb_;\n var codeblockWidth = 1 << xcb_;\n var codeblockHeight = 1 << ycb_;\n var cbx0 = subband.tbx0 >> xcb_;\n var cby0 = subband.tby0 >> ycb_;\n var cbx1 = (subband.tbx1 + codeblockWidth - 1) >> xcb_;\n var cby1 = (subband.tby1 + codeblockHeight - 1) >> ycb_;\n var precinctParameters = subband.resolution.precinctParameters;\n var codeblocks = [];\n var precincts = [];\n var i, j, codeblock, precinctNumber;\n for (j = cby0; j < cby1; j++) {\n for (i = cbx0; i < cbx1; i++) {\n codeblock = {\n cbx: i,\n cby: j,\n tbx0: codeblockWidth * i,\n tby0: codeblockHeight * j,\n tbx1: codeblockWidth * (i + 1),\n tby1: codeblockHeight * (j + 1),\n };\n\n codeblock.tbx0_ = Math.max(subband.tbx0, codeblock.tbx0);\n codeblock.tby0_ = Math.max(subband.tby0, codeblock.tby0);\n codeblock.tbx1_ = Math.min(subband.tbx1, codeblock.tbx1);\n codeblock.tby1_ = Math.min(subband.tby1, codeblock.tby1);\n\n // Calculate precinct number for this codeblock, codeblock position\n // should be relative to its subband, use actual dimension and position\n // See comment about codeblock group width and height\n var pi = Math.floor((codeblock.tbx0_ - subband.tbx0) /\n precinctParameters.precinctWidthInSubband);\n var pj = Math.floor((codeblock.tby0_ - subband.tby0) /\n precinctParameters.precinctHeightInSubband);\n precinctNumber = pi + (pj * precinctParameters.numprecinctswide);\n\n codeblock.precinctNumber = precinctNumber;\n codeblock.subbandType = subband.type;\n codeblock.Lblock = 3;\n\n if (codeblock.tbx1_ <= codeblock.tbx0_ ||\n codeblock.tby1_ <= codeblock.tby0_) {\n continue;\n }\n codeblocks.push(codeblock);\n // building precinct for the sub-band\n var precinct = precincts[precinctNumber];\n if (precinct !== undefined) {\n if (i < precinct.cbxMin) {\n precinct.cbxMin = i;\n } else if (i > precinct.cbxMax) {\n precinct.cbxMax = i;\n }\n if (j < precinct.cbyMin) {\n precinct.cbxMin = j;\n } else if (j > precinct.cbyMax) {\n precinct.cbyMax = j;\n }\n } else {\n precincts[precinctNumber] = precinct = {\n cbxMin: i,\n cbyMin: j,\n cbxMax: i,\n cbyMax: j,\n };\n }\n codeblock.precinct = precinct;\n }\n }\n subband.codeblockParameters = {\n codeblockWidth: xcb_,\n codeblockHeight: ycb_,\n numcodeblockwide: cbx1 - cbx0 + 1,\n numcodeblockhigh: cby1 - cby0 + 1,\n };\n subband.codeblocks = codeblocks;\n subband.precincts = precincts;\n }\n function createPacket(resolution, precinctNumber, layerNumber) {\n var precinctCodeblocks = [];\n // Section B.10.8 Order of info in packet\n var subbands = resolution.subbands;\n // sub-bands already ordered in 'LL', 'HL', 'LH', and 'HH' sequence\n for (var i = 0, ii = subbands.length; i < ii; i++) {\n var subband = subbands[i];\n var codeblocks = subband.codeblocks;\n for (var j = 0, jj = codeblocks.length; j < jj; j++) {\n var codeblock = codeblocks[j];\n if (codeblock.precinctNumber !== precinctNumber) {\n continue;\n }\n precinctCodeblocks.push(codeblock);\n }\n }\n return {\n layerNumber,\n codeblocks: precinctCodeblocks,\n };\n }\n function LayerResolutionComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var l = 0, r = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.1 Layer-resolution-component-position\n for (; l < layersCount; l++) {\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n r = 0;\n }\n throw new JpxError('Out of packets');\n };\n }\n function ResolutionLayerComponentPositionIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var maxDecompositionLevelsCount = 0;\n for (var q = 0; q < componentsCount; q++) {\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n tile.components[q].codingStyleParameters.decompositionLevelsCount);\n }\n\n var r = 0, l = 0, i = 0, k = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.2 Resolution-layer-component-position\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; l < layersCount; l++) {\n for (; i < componentsCount; i++) {\n var component = tile.components[i];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n for (; k < numprecincts;) {\n var packet = createPacket(resolution, k, l);\n k++;\n return packet;\n }\n k = 0;\n }\n i = 0;\n }\n l = 0;\n }\n throw new JpxError('Out of packets');\n };\n }\n function ResolutionPositionComponentLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var l, r, c, p;\n var maxDecompositionLevelsCount = 0;\n for (c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n maxDecompositionLevelsCount = Math.max(maxDecompositionLevelsCount,\n component.codingStyleParameters.decompositionLevelsCount);\n }\n var maxNumPrecinctsInLevel = new Int32Array(\n maxDecompositionLevelsCount + 1);\n for (r = 0; r <= maxDecompositionLevelsCount; ++r) {\n var maxNumPrecincts = 0;\n for (c = 0; c < componentsCount; ++c) {\n var resolutions = tile.components[c].resolutions;\n if (r < resolutions.length) {\n maxNumPrecincts = Math.max(maxNumPrecincts,\n resolutions[r].precinctParameters.numprecincts);\n }\n }\n maxNumPrecinctsInLevel[r] = maxNumPrecincts;\n }\n l = 0;\n r = 0;\n c = 0;\n p = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.3 Resolution-position-component-layer\n for (; r <= maxDecompositionLevelsCount; r++) {\n for (; p < maxNumPrecinctsInLevel[r]; p++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n if (r > component.codingStyleParameters.decompositionLevelsCount) {\n continue;\n }\n var resolution = component.resolutions[r];\n var numprecincts = resolution.precinctParameters.numprecincts;\n if (p >= numprecincts) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, p, l);\n l++;\n return packet;\n }\n l = 0;\n }\n c = 0;\n }\n p = 0;\n }\n throw new JpxError('Out of packets');\n };\n }\n function PositionComponentResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var precinctsIterationSizes = precinctsSizes;\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.4 Position-component-resolution-layer\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale =\n precinctsSizes.components[c].resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n c = 0;\n }\n px = 0;\n }\n throw new JpxError('Out of packets');\n };\n }\n function ComponentPositionResolutionLayerIterator(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var layersCount = tile.codingStyleDefaultParameters.layersCount;\n var componentsCount = siz.Csiz;\n var precinctsSizes = getPrecinctSizesInImageScale(tile);\n var l = 0, r = 0, c = 0, px = 0, py = 0;\n\n this.nextPacket = function JpxImage_nextPacket() {\n // Section B.12.1.5 Component-position-resolution-layer\n for (; c < componentsCount; ++c) {\n var component = tile.components[c];\n var precinctsIterationSizes = precinctsSizes.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n for (; py < precinctsIterationSizes.maxNumHigh; py++) {\n for (; px < precinctsIterationSizes.maxNumWide; px++) {\n for (; r <= decompositionLevelsCount; r++) {\n var resolution = component.resolutions[r];\n var sizeInImageScale = precinctsIterationSizes.resolutions[r];\n var k = getPrecinctIndexIfExist(\n px,\n py,\n sizeInImageScale,\n precinctsIterationSizes,\n resolution);\n if (k === null) {\n continue;\n }\n for (; l < layersCount;) {\n var packet = createPacket(resolution, k, l);\n l++;\n return packet;\n }\n l = 0;\n }\n r = 0;\n }\n px = 0;\n }\n py = 0;\n }\n throw new JpxError('Out of packets');\n };\n }\n function getPrecinctIndexIfExist(\n pxIndex, pyIndex, sizeInImageScale, precinctIterationSizes, resolution) {\n var posX = pxIndex * precinctIterationSizes.minWidth;\n var posY = pyIndex * precinctIterationSizes.minHeight;\n if (posX % sizeInImageScale.width !== 0 ||\n posY % sizeInImageScale.height !== 0) {\n return null;\n }\n var startPrecinctRowIndex =\n (posY / sizeInImageScale.width) *\n resolution.precinctParameters.numprecinctswide;\n return (posX / sizeInImageScale.height) + startPrecinctRowIndex;\n }\n function getPrecinctSizesInImageScale(tile) {\n var componentsCount = tile.components.length;\n var minWidth = Number.MAX_VALUE;\n var minHeight = Number.MAX_VALUE;\n var maxNumWide = 0;\n var maxNumHigh = 0;\n var sizePerComponent = new Array(componentsCount);\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n var sizePerResolution = new Array(decompositionLevelsCount + 1);\n var minWidthCurrentComponent = Number.MAX_VALUE;\n var minHeightCurrentComponent = Number.MAX_VALUE;\n var maxNumWideCurrentComponent = 0;\n var maxNumHighCurrentComponent = 0;\n var scale = 1;\n for (var r = decompositionLevelsCount; r >= 0; --r) {\n var resolution = component.resolutions[r];\n var widthCurrentResolution =\n scale * resolution.precinctParameters.precinctWidth;\n var heightCurrentResolution =\n scale * resolution.precinctParameters.precinctHeight;\n minWidthCurrentComponent = Math.min(\n minWidthCurrentComponent,\n widthCurrentResolution);\n minHeightCurrentComponent = Math.min(\n minHeightCurrentComponent,\n heightCurrentResolution);\n maxNumWideCurrentComponent = Math.max(maxNumWideCurrentComponent,\n resolution.precinctParameters.numprecinctswide);\n maxNumHighCurrentComponent = Math.max(maxNumHighCurrentComponent,\n resolution.precinctParameters.numprecinctshigh);\n sizePerResolution[r] = {\n width: widthCurrentResolution,\n height: heightCurrentResolution,\n };\n scale <<= 1;\n }\n minWidth = Math.min(minWidth, minWidthCurrentComponent);\n minHeight = Math.min(minHeight, minHeightCurrentComponent);\n maxNumWide = Math.max(maxNumWide, maxNumWideCurrentComponent);\n maxNumHigh = Math.max(maxNumHigh, maxNumHighCurrentComponent);\n sizePerComponent[c] = {\n resolutions: sizePerResolution,\n minWidth: minWidthCurrentComponent,\n minHeight: minHeightCurrentComponent,\n maxNumWide: maxNumWideCurrentComponent,\n maxNumHigh: maxNumHighCurrentComponent,\n };\n }\n return {\n components: sizePerComponent,\n minWidth,\n minHeight,\n maxNumWide,\n maxNumHigh,\n };\n }\n function buildPackets(context) {\n var siz = context.SIZ;\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var componentsCount = siz.Csiz;\n // Creating resolutions and sub-bands for each component\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var decompositionLevelsCount =\n component.codingStyleParameters.decompositionLevelsCount;\n // Section B.5 Resolution levels and sub-bands\n var resolutions = [];\n var subbands = [];\n for (var r = 0; r <= decompositionLevelsCount; r++) {\n var blocksDimensions = getBlocksDimensions(context, component, r);\n var resolution = {};\n var scale = 1 << (decompositionLevelsCount - r);\n resolution.trx0 = Math.ceil(component.tcx0 / scale);\n resolution.try0 = Math.ceil(component.tcy0 / scale);\n resolution.trx1 = Math.ceil(component.tcx1 / scale);\n resolution.try1 = Math.ceil(component.tcy1 / scale);\n resolution.resLevel = r;\n buildPrecincts(context, resolution, blocksDimensions);\n resolutions.push(resolution);\n\n var subband;\n if (r === 0) {\n // one sub-band (LL) with last decomposition\n subband = {};\n subband.type = 'LL';\n subband.tbx0 = Math.ceil(component.tcx0 / scale);\n subband.tby0 = Math.ceil(component.tcy0 / scale);\n subband.tbx1 = Math.ceil(component.tcx1 / scale);\n subband.tby1 = Math.ceil(component.tcy1 / scale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolution.subbands = [subband];\n } else {\n var bscale = 1 << (decompositionLevelsCount - r + 1);\n var resolutionSubbands = [];\n // three sub-bands (HL, LH and HH) with rest of decompositions\n subband = {};\n subband.type = 'HL';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'LH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n subband = {};\n subband.type = 'HH';\n subband.tbx0 = Math.ceil(component.tcx0 / bscale - 0.5);\n subband.tby0 = Math.ceil(component.tcy0 / bscale - 0.5);\n subband.tbx1 = Math.ceil(component.tcx1 / bscale - 0.5);\n subband.tby1 = Math.ceil(component.tcy1 / bscale - 0.5);\n subband.resolution = resolution;\n buildCodeblocks(context, subband, blocksDimensions);\n subbands.push(subband);\n resolutionSubbands.push(subband);\n\n resolution.subbands = resolutionSubbands;\n }\n }\n component.resolutions = resolutions;\n component.subbands = subbands;\n }\n // Generate the packets sequence\n var progressionOrder = tile.codingStyleDefaultParameters.progressionOrder;\n switch (progressionOrder) {\n case 0:\n tile.packetsIterator =\n new LayerResolutionComponentPositionIterator(context);\n break;\n case 1:\n tile.packetsIterator =\n new ResolutionLayerComponentPositionIterator(context);\n break;\n case 2:\n tile.packetsIterator =\n new ResolutionPositionComponentLayerIterator(context);\n break;\n case 3:\n tile.packetsIterator =\n new PositionComponentResolutionLayerIterator(context);\n break;\n case 4:\n tile.packetsIterator =\n new ComponentPositionResolutionLayerIterator(context);\n break;\n default:\n throw new JpxError(`Unsupported progression order ${progressionOrder}`);\n }\n }\n function parseTilePackets(context, data, offset, dataLength) {\n var position = 0;\n var buffer, bufferSize = 0, skipNextBit = false;\n function readBits(count) {\n while (bufferSize < count) {\n var b = data[offset + position];\n position++;\n if (skipNextBit) {\n buffer = (buffer << 7) | b;\n bufferSize += 7;\n skipNextBit = false;\n } else {\n buffer = (buffer << 8) | b;\n bufferSize += 8;\n }\n if (b === 0xFF) {\n skipNextBit = true;\n }\n }\n bufferSize -= count;\n return (buffer >>> bufferSize) & ((1 << count) - 1);\n }\n function skipMarkerIfEqual(value) {\n if (data[offset + position - 1] === 0xFF &&\n data[offset + position] === value) {\n skipBytes(1);\n return true;\n } else if (data[offset + position] === 0xFF &&\n data[offset + position + 1] === value) {\n skipBytes(2);\n return true;\n }\n return false;\n }\n function skipBytes(count) {\n position += count;\n }\n function alignToByte() {\n bufferSize = 0;\n if (skipNextBit) {\n position++;\n skipNextBit = false;\n }\n }\n function readCodingpasses() {\n if (readBits(1) === 0) {\n return 1;\n }\n if (readBits(1) === 0) {\n return 2;\n }\n var value = readBits(2);\n if (value < 3) {\n return value + 3;\n }\n value = readBits(5);\n if (value < 31) {\n return value + 6;\n }\n value = readBits(7);\n return value + 37;\n }\n var tileIndex = context.currentTile.index;\n var tile = context.tiles[tileIndex];\n var sopMarkerUsed = context.COD.sopMarkerUsed;\n var ephMarkerUsed = context.COD.ephMarkerUsed;\n var packetsIterator = tile.packetsIterator;\n while (position < dataLength) {\n alignToByte();\n if (sopMarkerUsed && skipMarkerIfEqual(0x91)) {\n // Skip also marker segment length and packet sequence ID\n skipBytes(4);\n }\n var packet = packetsIterator.nextPacket();\n if (!readBits(1)) {\n continue;\n }\n var layerNumber = packet.layerNumber;\n var queue = [], codeblock;\n for (var i = 0, ii = packet.codeblocks.length; i < ii; i++) {\n codeblock = packet.codeblocks[i];\n var precinct = codeblock.precinct;\n var codeblockColumn = codeblock.cbx - precinct.cbxMin;\n var codeblockRow = codeblock.cby - precinct.cbyMin;\n var codeblockIncluded = false;\n var firstTimeInclusion = false;\n var valueReady;\n if (codeblock['included'] !== undefined) {\n codeblockIncluded = !!readBits(1);\n } else {\n // reading inclusion tree\n precinct = codeblock.precinct;\n var inclusionTree, zeroBitPlanesTree;\n if (precinct['inclusionTree'] !== undefined) {\n inclusionTree = precinct.inclusionTree;\n } else {\n // building inclusion and zero bit-planes trees\n var width = precinct.cbxMax - precinct.cbxMin + 1;\n var height = precinct.cbyMax - precinct.cbyMin + 1;\n inclusionTree = new InclusionTree(width, height, layerNumber);\n zeroBitPlanesTree = new TagTree(width, height);\n precinct.inclusionTree = inclusionTree;\n precinct.zeroBitPlanesTree = zeroBitPlanesTree;\n }\n\n if (inclusionTree.reset(codeblockColumn, codeblockRow, layerNumber)) {\n while (true) {\n if (readBits(1)) {\n valueReady = !inclusionTree.nextLevel();\n if (valueReady) {\n codeblock.included = true;\n codeblockIncluded = firstTimeInclusion = true;\n break;\n }\n } else {\n inclusionTree.incrementValue(layerNumber);\n break;\n }\n }\n }\n }\n if (!codeblockIncluded) {\n continue;\n }\n if (firstTimeInclusion) {\n zeroBitPlanesTree = precinct.zeroBitPlanesTree;\n zeroBitPlanesTree.reset(codeblockColumn, codeblockRow);\n while (true) {\n if (readBits(1)) {\n valueReady = !zeroBitPlanesTree.nextLevel();\n if (valueReady) {\n break;\n }\n } else {\n zeroBitPlanesTree.incrementValue();\n }\n }\n codeblock.zeroBitPlanes = zeroBitPlanesTree.value;\n }\n var codingpasses = readCodingpasses();\n while (readBits(1)) {\n codeblock.Lblock++;\n }\n var codingpassesLog2 = log2(codingpasses);\n // rounding down log2\n var bits = ((codingpasses < (1 << codingpassesLog2)) ?\n codingpassesLog2 - 1 : codingpassesLog2) + codeblock.Lblock;\n var codedDataLength = readBits(bits);\n queue.push({\n codeblock,\n codingpasses,\n dataLength: codedDataLength,\n });\n }\n alignToByte();\n if (ephMarkerUsed) {\n skipMarkerIfEqual(0x92);\n }\n while (queue.length > 0) {\n var packetItem = queue.shift();\n codeblock = packetItem.codeblock;\n if (codeblock['data'] === undefined) {\n codeblock.data = [];\n }\n codeblock.data.push({\n data,\n start: offset + position,\n end: offset + position + packetItem.dataLength,\n codingpasses: packetItem.codingpasses,\n });\n position += packetItem.dataLength;\n }\n }\n return position;\n }\n function copyCoefficients(coefficients, levelWidth, levelHeight, subband,\n delta, mb, reversible, segmentationSymbolUsed) {\n var x0 = subband.tbx0;\n var y0 = subband.tby0;\n var width = subband.tbx1 - subband.tbx0;\n var codeblocks = subband.codeblocks;\n var right = subband.type.charAt(0) === 'H' ? 1 : 0;\n var bottom = subband.type.charAt(1) === 'H' ? levelWidth : 0;\n\n for (var i = 0, ii = codeblocks.length; i < ii; ++i) {\n var codeblock = codeblocks[i];\n var blockWidth = codeblock.tbx1_ - codeblock.tbx0_;\n var blockHeight = codeblock.tby1_ - codeblock.tby0_;\n if (blockWidth === 0 || blockHeight === 0) {\n continue;\n }\n if (codeblock['data'] === undefined) {\n continue;\n }\n\n var bitModel, currentCodingpassType;\n bitModel = new BitModel(blockWidth, blockHeight, codeblock.subbandType,\n codeblock.zeroBitPlanes, mb);\n currentCodingpassType = 2; // first bit plane starts from cleanup\n\n // collect data\n var data = codeblock.data, totalLength = 0, codingpasses = 0;\n var j, jj, dataItem;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n totalLength += dataItem.end - dataItem.start;\n codingpasses += dataItem.codingpasses;\n }\n var encodedData = new Uint8Array(totalLength);\n var position = 0;\n for (j = 0, jj = data.length; j < jj; j++) {\n dataItem = data[j];\n var chunk = dataItem.data.subarray(dataItem.start, dataItem.end);\n encodedData.set(chunk, position);\n position += chunk.length;\n }\n // decoding the item\n var decoder = new ArithmeticDecoder(encodedData, 0, totalLength);\n bitModel.setDecoder(decoder);\n\n for (j = 0; j < codingpasses; j++) {\n switch (currentCodingpassType) {\n case 0:\n bitModel.runSignificancePropagationPass();\n break;\n case 1:\n bitModel.runMagnitudeRefinementPass();\n break;\n case 2:\n bitModel.runCleanupPass();\n if (segmentationSymbolUsed) {\n bitModel.checkSegmentationSymbol();\n }\n break;\n }\n currentCodingpassType = (currentCodingpassType + 1) % 3;\n }\n\n var offset = (codeblock.tbx0_ - x0) + (codeblock.tby0_ - y0) * width;\n var sign = bitModel.coefficentsSign;\n var magnitude = bitModel.coefficentsMagnitude;\n var bitsDecoded = bitModel.bitsDecoded;\n var magnitudeCorrection = reversible ? 0 : 0.5;\n var k, n, nb;\n position = 0;\n // Do the interleaving of Section F.3.3 here, so we do not need\n // to copy later. LL level is not interleaved, just copied.\n var interleave = (subband.type !== 'LL');\n for (j = 0; j < blockHeight; j++) {\n var row = (offset / width) | 0; // row in the non-interleaved subband\n var levelOffset = 2 * row * (levelWidth - width) + right + bottom;\n for (k = 0; k < blockWidth; k++) {\n n = magnitude[position];\n if (n !== 0) {\n n = (n + magnitudeCorrection) * delta;\n if (sign[position] !== 0) {\n n = -n;\n }\n nb = bitsDecoded[position];\n var pos = interleave ? (levelOffset + (offset << 1)) : offset;\n if (reversible && (nb >= mb)) {\n coefficients[pos] = n;\n } else {\n coefficients[pos] = n * (1 << (mb - nb));\n }\n }\n offset++;\n position++;\n }\n offset += width - blockWidth;\n }\n }\n }\n function transformTile(context, tile, c) {\n var component = tile.components[c];\n var codingStyleParameters = component.codingStyleParameters;\n var quantizationParameters = component.quantizationParameters;\n var decompositionLevelsCount =\n codingStyleParameters.decompositionLevelsCount;\n var spqcds = quantizationParameters.SPqcds;\n var scalarExpounded = quantizationParameters.scalarExpounded;\n var guardBits = quantizationParameters.guardBits;\n var segmentationSymbolUsed = codingStyleParameters.segmentationSymbolUsed;\n var precision = context.components[c].precision;\n\n var reversible = codingStyleParameters.reversibleTransformation;\n var transform = (reversible ? new ReversibleTransform() :\n new IrreversibleTransform());\n\n var subbandCoefficients = [];\n var b = 0;\n for (var i = 0; i <= decompositionLevelsCount; i++) {\n var resolution = component.resolutions[i];\n\n var width = resolution.trx1 - resolution.trx0;\n var height = resolution.try1 - resolution.try0;\n // Allocate space for the whole sublevel.\n var coefficients = new Float32Array(width * height);\n\n for (var j = 0, jj = resolution.subbands.length; j < jj; j++) {\n var mu, epsilon;\n if (!scalarExpounded) {\n // formula E-5\n mu = spqcds[0].mu;\n epsilon = spqcds[0].epsilon + (i > 0 ? 1 - i : 0);\n } else {\n mu = spqcds[b].mu;\n epsilon = spqcds[b].epsilon;\n b++;\n }\n\n var subband = resolution.subbands[j];\n var gainLog2 = SubbandsGainLog2[subband.type];\n\n // calculate quantization coefficient (Section E.1.1.1)\n var delta = (reversible ? 1 :\n Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048));\n var mb = (guardBits + epsilon - 1);\n\n // In the first resolution level, copyCoefficients will fill the\n // whole array with coefficients. In the succeeding passes,\n // copyCoefficients will consecutively fill in the values that belong\n // to the interleaved positions of the HL, LH, and HH coefficients.\n // The LL coefficients will then be interleaved in Transform.iterate().\n copyCoefficients(coefficients, width, height, subband, delta, mb,\n reversible, segmentationSymbolUsed);\n }\n subbandCoefficients.push({\n width,\n height,\n items: coefficients,\n });\n }\n\n var result = transform.calculate(subbandCoefficients,\n component.tcx0, component.tcy0);\n return {\n left: component.tcx0,\n top: component.tcy0,\n width: result.width,\n height: result.height,\n items: result.items,\n };\n }\n function transformComponents(context) {\n var siz = context.SIZ;\n var components = context.components;\n var componentsCount = siz.Csiz;\n var resultImages = [];\n for (var i = 0, ii = context.tiles.length; i < ii; i++) {\n var tile = context.tiles[i];\n var transformedTiles = [];\n var c;\n for (c = 0; c < componentsCount; c++) {\n transformedTiles[c] = transformTile(context, tile, c);\n }\n var tile0 = transformedTiles[0];\n var out = new Uint8Array(tile0.items.length * componentsCount);\n var result = {\n left: tile0.left,\n top: tile0.top,\n width: tile0.width,\n height: tile0.height,\n items: out,\n };\n\n // Section G.2.2 Inverse multi component transform\n var shift, offset, max, min, maxK;\n var pos = 0, j, jj, y0, y1, y2, r, g, b, k, val;\n if (tile.codingStyleDefaultParameters.multipleComponentTransform) {\n var fourComponents = componentsCount === 4;\n var y0items = transformedTiles[0].items;\n var y1items = transformedTiles[1].items;\n var y2items = transformedTiles[2].items;\n var y3items = fourComponents ? transformedTiles[3].items : null;\n\n // HACK: The multiple component transform formulas below assume that\n // all components have the same precision. With this in mind, we\n // compute shift and offset only once.\n shift = components[0].precision - 8;\n offset = (128 << shift) + 0.5;\n max = 255 * (1 << shift);\n maxK = max * 0.5;\n min = -maxK;\n\n var component0 = tile.components[0];\n var alpha01 = componentsCount - 3;\n jj = y0items.length;\n if (!component0.codingStyleParameters.reversibleTransformation) {\n // inverse irreversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n r = y0 + 1.402 * y2;\n g = y0 - 0.34413 * y1 - 0.71414 * y2;\n b = y0 + 1.772 * y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n } else {\n // inverse reversible multiple component transform\n for (j = 0; j < jj; j++, pos += alpha01) {\n y0 = y0items[j] + offset;\n y1 = y1items[j];\n y2 = y2items[j];\n g = y0 - ((y2 + y1) >> 2);\n r = g + y2;\n b = g + y1;\n out[pos++] = r <= 0 ? 0 : r >= max ? 255 : r >> shift;\n out[pos++] = g <= 0 ? 0 : g >= max ? 255 : g >> shift;\n out[pos++] = b <= 0 ? 0 : b >= max ? 255 : b >> shift;\n }\n }\n if (fourComponents) {\n for (j = 0, pos = 3; j < jj; j++, pos += 4) {\n k = y3items[j];\n out[pos] = k <= min ? 0 : k >= maxK ? 255 : (k + offset) >> shift;\n }\n }\n } else { // no multi-component transform\n for (c = 0; c < componentsCount; c++) {\n var items = transformedTiles[c].items;\n shift = components[c].precision - 8;\n offset = (128 << shift) + 0.5;\n max = (127.5 * (1 << shift));\n min = -max;\n for (pos = c, j = 0, jj = items.length; j < jj; j++) {\n val = items[j];\n out[pos] = val <= min ? 0 :\n val >= max ? 255 : (val + offset) >> shift;\n pos += componentsCount;\n }\n }\n }\n resultImages.push(result);\n }\n return resultImages;\n }\n function initializeTile(context, tileIndex) {\n var siz = context.SIZ;\n var componentsCount = siz.Csiz;\n var tile = context.tiles[tileIndex];\n for (var c = 0; c < componentsCount; c++) {\n var component = tile.components[c];\n var qcdOrQcc = (context.currentTile.QCC[c] !== undefined ?\n context.currentTile.QCC[c] : context.currentTile.QCD);\n component.quantizationParameters = qcdOrQcc;\n var codOrCoc = (context.currentTile.COC[c] !== undefined ?\n context.currentTile.COC[c] : context.currentTile.COD);\n component.codingStyleParameters = codOrCoc;\n }\n tile.codingStyleDefaultParameters = context.currentTile.COD;\n }\n\n // Section B.10.2 Tag trees\n var TagTree = (function TagTreeClosure() {\n function TagTree(width, height) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var level = {\n width,\n height,\n items: [],\n };\n this.levels.push(level);\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n TagTree.prototype = {\n reset: function TagTree_reset(i, j) {\n var currentLevel = 0, value = 0, level;\n while (currentLevel < this.levels.length) {\n level = this.levels[currentLevel];\n var index = i + j * level.width;\n if (level.items[index] !== undefined) {\n value = level.items[index];\n break;\n }\n level.index = index;\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n currentLevel--;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n this.currentLevel = currentLevel;\n delete this.value;\n },\n incrementValue: function TagTree_incrementValue() {\n var level = this.levels[this.currentLevel];\n level.items[level.index]++;\n },\n nextLevel: function TagTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n currentLevel--;\n if (currentLevel < 0) {\n this.value = value;\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n },\n };\n return TagTree;\n })();\n\n var InclusionTree = (function InclusionTreeClosure() {\n function InclusionTree(width, height, defaultValue) {\n var levelsLength = log2(Math.max(width, height)) + 1;\n this.levels = [];\n for (var i = 0; i < levelsLength; i++) {\n var items = new Uint8Array(width * height);\n for (var j = 0, jj = items.length; j < jj; j++) {\n items[j] = defaultValue;\n }\n\n var level = {\n width,\n height,\n items,\n };\n this.levels.push(level);\n\n width = Math.ceil(width / 2);\n height = Math.ceil(height / 2);\n }\n }\n InclusionTree.prototype = {\n reset: function InclusionTree_reset(i, j, stopValue) {\n var currentLevel = 0;\n while (currentLevel < this.levels.length) {\n var level = this.levels[currentLevel];\n var index = i + j * level.width;\n level.index = index;\n var value = level.items[index];\n\n if (value === 0xFF) {\n break;\n }\n\n if (value > stopValue) {\n this.currentLevel = currentLevel;\n // already know about this one, propagating the value to top levels\n this.propagateValues();\n return false;\n }\n\n i >>= 1;\n j >>= 1;\n currentLevel++;\n }\n this.currentLevel = currentLevel - 1;\n return true;\n },\n incrementValue: function InclusionTree_incrementValue(stopValue) {\n var level = this.levels[this.currentLevel];\n level.items[level.index] = stopValue + 1;\n this.propagateValues();\n },\n propagateValues: function InclusionTree_propagateValues() {\n var levelIndex = this.currentLevel;\n var level = this.levels[levelIndex];\n var currentValue = level.items[level.index];\n while (--levelIndex >= 0) {\n level = this.levels[levelIndex];\n level.items[level.index] = currentValue;\n }\n },\n nextLevel: function InclusionTree_nextLevel() {\n var currentLevel = this.currentLevel;\n var level = this.levels[currentLevel];\n var value = level.items[level.index];\n level.items[level.index] = 0xFF;\n currentLevel--;\n if (currentLevel < 0) {\n return false;\n }\n\n this.currentLevel = currentLevel;\n level = this.levels[currentLevel];\n level.items[level.index] = value;\n return true;\n },\n };\n return InclusionTree;\n })();\n\n // Section D. Coefficient bit modeling\n var BitModel = (function BitModelClosure() {\n var UNIFORM_CONTEXT = 17;\n var RUNLENGTH_CONTEXT = 18;\n // Table D-1\n // The index is binary presentation: 0dddvvhh, ddd - sum of Di (0..4),\n // vv - sum of Vi (0..2), and hh - sum of Hi (0..2)\n var LLAndLHContextsLabel = new Uint8Array([\n 0, 5, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 1, 6, 8, 0, 3, 7, 8, 0, 4,\n 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6,\n 8, 0, 3, 7, 8, 0, 4, 7, 8, 0, 0, 0, 0, 0, 2, 6, 8, 0, 3, 7, 8, 0, 4, 7, 8\n ]);\n var HLContextLabel = new Uint8Array([\n 0, 3, 4, 0, 5, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 1, 3, 4, 0, 6, 7, 7, 0, 8,\n 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3,\n 4, 0, 6, 7, 7, 0, 8, 8, 8, 0, 0, 0, 0, 0, 2, 3, 4, 0, 6, 7, 7, 0, 8, 8, 8\n ]);\n var HHContextLabel = new Uint8Array([\n 0, 1, 2, 0, 1, 2, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 3, 4, 5, 0, 4, 5, 5, 0, 5,\n 5, 5, 0, 0, 0, 0, 0, 6, 7, 7, 0, 7, 7, 7, 0, 7, 7, 7, 0, 0, 0, 0, 0, 8, 8,\n 8, 0, 8, 8, 8, 0, 8, 8, 8, 0, 0, 0, 0, 0, 8, 8, 8, 0, 8, 8, 8, 0, 8, 8, 8\n ]);\n\n function BitModel(width, height, subband, zeroBitPlanes, mb) {\n this.width = width;\n this.height = height;\n\n this.contextLabelTable = (subband === 'HH' ? HHContextLabel :\n (subband === 'HL' ? HLContextLabel : LLAndLHContextsLabel));\n\n var coefficientCount = width * height;\n\n // coefficients outside the encoding region treated as insignificant\n // add border state cells for significanceState\n this.neighborsSignificance = new Uint8Array(coefficientCount);\n this.coefficentsSign = new Uint8Array(coefficientCount);\n this.coefficentsMagnitude = mb > 14 ? new Uint32Array(coefficientCount) :\n mb > 6 ? new Uint16Array(coefficientCount) :\n new Uint8Array(coefficientCount);\n this.processingFlags = new Uint8Array(coefficientCount);\n\n var bitsDecoded = new Uint8Array(coefficientCount);\n if (zeroBitPlanes !== 0) {\n for (var i = 0; i < coefficientCount; i++) {\n bitsDecoded[i] = zeroBitPlanes;\n }\n }\n this.bitsDecoded = bitsDecoded;\n\n this.reset();\n }\n\n BitModel.prototype = {\n setDecoder: function BitModel_setDecoder(decoder) {\n this.decoder = decoder;\n },\n reset: function BitModel_reset() {\n // We have 17 contexts that are accessed via context labels,\n // plus the uniform and runlength context.\n this.contexts = new Int8Array(19);\n\n // Contexts are packed into 1 byte:\n // highest 7 bits carry the index, lowest bit carries mps\n this.contexts[0] = (4 << 1) | 0;\n this.contexts[UNIFORM_CONTEXT] = (46 << 1) | 0;\n this.contexts[RUNLENGTH_CONTEXT] = (3 << 1) | 0;\n },\n setNeighborsSignificance:\n function BitModel_setNeighborsSignificance(row, column, index) {\n var neighborsSignificance = this.neighborsSignificance;\n var width = this.width, height = this.height;\n var left = (column > 0);\n var right = (column + 1 < width);\n var i;\n\n if (row > 0) {\n i = index - width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (row + 1 < height) {\n i = index + width;\n if (left) {\n neighborsSignificance[i - 1] += 0x10;\n }\n if (right) {\n neighborsSignificance[i + 1] += 0x10;\n }\n neighborsSignificance[i] += 0x04;\n }\n\n if (left) {\n neighborsSignificance[index - 1] += 0x01;\n }\n if (right) {\n neighborsSignificance[index + 1] += 0x01;\n }\n neighborsSignificance[index] |= 0x80;\n },\n runSignificancePropagationPass:\n function BitModel_runSignificancePropagationPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var neighborsSignificance = this.neighborsSignificance;\n var processingFlags = this.processingFlags;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processedInverseMask = ~1;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n\n for (var i0 = 0; i0 < height; i0 += 4) {\n for (var j = 0; j < width; j++) {\n var index = i0 * width + j;\n for (var i1 = 0; i1 < 4; i1++, index += width) {\n var i = i0 + i1;\n if (i >= height) {\n break;\n }\n // clear processed flag first\n processingFlags[index] &= processedInverseMask;\n\n if (coefficentsMagnitude[index] ||\n !neighborsSignificance[index]) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision) {\n var sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n decodeSignBit: function BitModel_decodeSignBit(row, column, index) {\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contribution, sign0, sign1, significance1;\n var contextLabel, decoded;\n\n // calculate horizontal contribution\n significance1 = (column > 0 && coefficentsMagnitude[index - 1] !== 0);\n if (column + 1 < width && coefficentsMagnitude[index + 1] !== 0) {\n sign1 = coefficentsSign[index + 1];\n if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign1 - sign0;\n } else {\n contribution = 1 - sign1 - sign1;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - 1];\n contribution = 1 - sign0 - sign0;\n } else {\n contribution = 0;\n }\n var horizontalContribution = 3 * contribution;\n\n // calculate vertical contribution and combine with the horizontal\n significance1 = (row > 0 && coefficentsMagnitude[index - width] !== 0);\n if (row + 1 < height && coefficentsMagnitude[index + width] !== 0) {\n sign1 = coefficentsSign[index + width];\n if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign1 - sign0 + horizontalContribution;\n } else {\n contribution = 1 - sign1 - sign1 + horizontalContribution;\n }\n } else if (significance1) {\n sign0 = coefficentsSign[index - width];\n contribution = 1 - sign0 - sign0 + horizontalContribution;\n } else {\n contribution = horizontalContribution;\n }\n\n if (contribution >= 0) {\n contextLabel = 9 + contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel);\n } else {\n contextLabel = 9 - contribution;\n decoded = this.decoder.readBit(this.contexts, contextLabel) ^ 1;\n }\n return decoded;\n },\n runMagnitudeRefinementPass:\n function BitModel_runMagnitudeRefinementPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var neighborsSignificance = this.neighborsSignificance;\n var contexts = this.contexts;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var length = width * height;\n var width4 = width * 4;\n\n for (var index0 = 0, indexNext; index0 < length; index0 = indexNext) {\n indexNext = Math.min(length, index0 + width4);\n for (var j = 0; j < width; j++) {\n for (var index = index0 + j; index < indexNext; index += width) {\n\n // significant but not those that have just become\n if (!coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = 16;\n if ((processingFlags[index] & firstMagnitudeBitMask) !== 0) {\n processingFlags[index] ^= firstMagnitudeBitMask;\n // first refinement\n var significance = neighborsSignificance[index] & 127;\n contextLabel = significance === 0 ? 15 : 14;\n }\n\n var bit = decoder.readBit(contexts, contextLabel);\n coefficentsMagnitude[index] =\n (coefficentsMagnitude[index] << 1) | bit;\n bitsDecoded[index]++;\n processingFlags[index] |= processedMask;\n }\n }\n }\n },\n runCleanupPass: function BitModel_runCleanupPass() {\n var decoder = this.decoder;\n var width = this.width, height = this.height;\n var neighborsSignificance = this.neighborsSignificance;\n var coefficentsMagnitude = this.coefficentsMagnitude;\n var coefficentsSign = this.coefficentsSign;\n var contexts = this.contexts;\n var labels = this.contextLabelTable;\n var bitsDecoded = this.bitsDecoded;\n var processingFlags = this.processingFlags;\n var processedMask = 1;\n var firstMagnitudeBitMask = 2;\n var oneRowDown = width;\n var twoRowsDown = width * 2;\n var threeRowsDown = width * 3;\n var iNext;\n for (var i0 = 0; i0 < height; i0 = iNext) {\n iNext = Math.min(i0 + 4, height);\n var indexBase = i0 * width;\n var checkAllEmpty = i0 + 3 < height;\n for (var j = 0; j < width; j++) {\n var index0 = indexBase + j;\n // using the property: labels[neighborsSignificance[index]] === 0\n // when neighborsSignificance[index] === 0\n var allEmpty = (checkAllEmpty &&\n processingFlags[index0] === 0 &&\n processingFlags[index0 + oneRowDown] === 0 &&\n processingFlags[index0 + twoRowsDown] === 0 &&\n processingFlags[index0 + threeRowsDown] === 0 &&\n neighborsSignificance[index0] === 0 &&\n neighborsSignificance[index0 + oneRowDown] === 0 &&\n neighborsSignificance[index0 + twoRowsDown] === 0 &&\n neighborsSignificance[index0 + threeRowsDown] === 0);\n var i1 = 0, index = index0;\n var i = i0, sign;\n if (allEmpty) {\n var hasSignificantCoefficent =\n decoder.readBit(contexts, RUNLENGTH_CONTEXT);\n if (!hasSignificantCoefficent) {\n bitsDecoded[index0]++;\n bitsDecoded[index0 + oneRowDown]++;\n bitsDecoded[index0 + twoRowsDown]++;\n bitsDecoded[index0 + threeRowsDown]++;\n continue; // next column\n }\n i1 = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (i1 !== 0) {\n i = i0 + i1;\n index += i1 * width;\n }\n\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n\n index = index0;\n for (var i2 = i0; i2 <= i; i2++, index += width) {\n bitsDecoded[index]++;\n }\n\n i1++;\n }\n for (i = i0 + i1; i < iNext; i++, index += width) {\n if (coefficentsMagnitude[index] ||\n (processingFlags[index] & processedMask) !== 0) {\n continue;\n }\n\n var contextLabel = labels[neighborsSignificance[index]];\n var decision = decoder.readBit(contexts, contextLabel);\n if (decision === 1) {\n sign = this.decodeSignBit(i, j, index);\n coefficentsSign[index] = sign;\n coefficentsMagnitude[index] = 1;\n this.setNeighborsSignificance(i, j, index);\n processingFlags[index] |= firstMagnitudeBitMask;\n }\n bitsDecoded[index]++;\n }\n }\n }\n },\n checkSegmentationSymbol: function BitModel_checkSegmentationSymbol() {\n var decoder = this.decoder;\n var contexts = this.contexts;\n var symbol = (decoder.readBit(contexts, UNIFORM_CONTEXT) << 3) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 2) |\n (decoder.readBit(contexts, UNIFORM_CONTEXT) << 1) |\n decoder.readBit(contexts, UNIFORM_CONTEXT);\n if (symbol !== 0xA) {\n throw new JpxError('Invalid segmentation symbol');\n }\n },\n };\n\n return BitModel;\n })();\n\n // Section F, Discrete wavelet transformation\n var Transform = (function TransformClosure() {\n function Transform() {}\n\n Transform.prototype.calculate =\n function transformCalculate(subbands, u0, v0) {\n var ll = subbands[0];\n for (var i = 1, ii = subbands.length; i < ii; i++) {\n ll = this.iterate(ll, subbands[i], u0, v0);\n }\n return ll;\n };\n Transform.prototype.extend = function extend(buffer, offset, size) {\n // Section F.3.7 extending... using max extension of 4\n var i1 = offset - 1, j1 = offset + 1;\n var i2 = offset + size - 2, j2 = offset + size;\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1--] = buffer[j1++];\n buffer[j2++] = buffer[i2--];\n buffer[i1] = buffer[j1];\n buffer[j2] = buffer[i2];\n };\n Transform.prototype.iterate = function Transform_iterate(ll, hl_lh_hh,\n u0, v0) {\n var llWidth = ll.width, llHeight = ll.height, llItems = ll.items;\n var width = hl_lh_hh.width;\n var height = hl_lh_hh.height;\n var items = hl_lh_hh.items;\n var i, j, k, l, u, v;\n\n // Interleave LL according to Section F.3.3\n for (k = 0, i = 0; i < llHeight; i++) {\n l = i * 2 * width;\n for (j = 0; j < llWidth; j++, k++, l += 2) {\n items[l] = llItems[k];\n }\n }\n // The LL band is not needed anymore.\n llItems = ll.items = null;\n\n var bufferPadding = 4;\n var rowBuffer = new Float32Array(width + 2 * bufferPadding);\n\n // Section F.3.4 HOR_SR\n if (width === 1) {\n // if width = 1, when u0 even keep items as is, when odd divide by 2\n if ((u0 & 1) !== 0) {\n for (v = 0, k = 0; v < height; v++, k += width) {\n items[k] *= 0.5;\n }\n }\n } else {\n for (v = 0, k = 0; v < height; v++, k += width) {\n rowBuffer.set(items.subarray(k, k + width), bufferPadding);\n\n this.extend(rowBuffer, bufferPadding, width);\n this.filter(rowBuffer, bufferPadding, width);\n\n items.set(\n rowBuffer.subarray(bufferPadding, bufferPadding + width),\n k);\n }\n }\n\n // Accesses to the items array can take long, because it may not fit into\n // CPU cache and has to be fetched from main memory. Since subsequent\n // accesses to the items array are not local when reading columns, we\n // have a cache miss every time. To reduce cache misses, get up to\n // 'numBuffers' items at a time and store them into the individual\n // buffers. The colBuffers should be small enough to fit into CPU cache.\n var numBuffers = 16;\n var colBuffers = [];\n for (i = 0; i < numBuffers; i++) {\n colBuffers.push(new Float32Array(height + 2 * bufferPadding));\n }\n var b, currentBuffer = 0;\n ll = bufferPadding + height;\n\n // Section F.3.5 VER_SR\n if (height === 1) {\n // if height = 1, when v0 even keep items as is, when odd divide by 2\n if ((v0 & 1) !== 0) {\n for (u = 0; u < width; u++) {\n items[u] *= 0.5;\n }\n }\n } else {\n for (u = 0; u < width; u++) {\n // if we ran out of buffers, copy several image columns at once\n if (currentBuffer === 0) {\n numBuffers = Math.min(width - u, numBuffers);\n for (k = u, l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n colBuffers[b][l] = items[k + b];\n }\n }\n currentBuffer = numBuffers;\n }\n\n currentBuffer--;\n var buffer = colBuffers[currentBuffer];\n this.extend(buffer, bufferPadding, height);\n this.filter(buffer, bufferPadding, height);\n\n // If this is last buffer in this group of buffers, flush all buffers.\n if (currentBuffer === 0) {\n k = u - numBuffers + 1;\n for (l = bufferPadding; l < ll; k += width, l++) {\n for (b = 0; b < numBuffers; b++) {\n items[k + b] = colBuffers[b][l];\n }\n }\n }\n }\n }\n\n return {\n width,\n height,\n items,\n };\n };\n return Transform;\n })();\n\n // Section 3.8.2 Irreversible 9-7 filter\n var IrreversibleTransform = (function IrreversibleTransformClosure() {\n function IrreversibleTransform() {\n Transform.call(this);\n }\n\n IrreversibleTransform.prototype = Object.create(Transform.prototype);\n IrreversibleTransform.prototype.filter =\n function irreversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n, current, next;\n\n var alpha = -1.586134342059924;\n var beta = -0.052980118572961;\n var gamma = 0.882911075530934;\n var delta = 0.443506852043971;\n var K = 1.230174104914001;\n var K_ = 1 / K;\n\n // step 1 is combined with step 3\n\n // step 2\n j = offset - 3;\n for (n = len + 4; n--; j += 2) {\n x[j] *= K_;\n }\n\n // step 1 & 3\n j = offset - 2;\n current = delta * x[j - 1];\n for (n = len + 3; n--; j += 2) {\n next = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n if (n--) {\n j += 2;\n current = delta * x[j + 1];\n x[j] = K * x[j] - current - next;\n } else {\n break;\n }\n }\n\n // step 4\n j = offset - 1;\n current = gamma * x[j - 1];\n for (n = len + 2; n--; j += 2) {\n next = gamma * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = gamma * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 5\n j = offset;\n current = beta * x[j - 1];\n for (n = len + 1; n--; j += 2) {\n next = beta * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = beta * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n\n // step 6\n if (len !== 0) {\n j = offset + 1;\n current = alpha * x[j - 1];\n for (n = len; n--; j += 2) {\n next = alpha * x[j + 1];\n x[j] -= current + next;\n if (n--) {\n j += 2;\n current = alpha * x[j + 1];\n x[j] -= current + next;\n } else {\n break;\n }\n }\n }\n };\n\n return IrreversibleTransform;\n })();\n\n // Section 3.8.1 Reversible 5-3 filter\n var ReversibleTransform = (function ReversibleTransformClosure() {\n function ReversibleTransform() {\n Transform.call(this);\n }\n\n ReversibleTransform.prototype = Object.create(Transform.prototype);\n ReversibleTransform.prototype.filter =\n function reversibleTransformFilter(x, offset, length) {\n var len = length >> 1;\n offset = offset | 0;\n var j, n;\n\n for (j = offset, n = len + 1; n--; j += 2) {\n x[j] -= (x[j - 1] + x[j + 1] + 2) >> 2;\n }\n\n for (j = offset + 1, n = len; n--; j += 2) {\n x[j] += (x[j - 1] + x[j + 1]) >> 1;\n }\n };\n\n return ReversibleTransform;\n })();\n\n return JpxImage;\n})();\n\nexport {\n JpxImage,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/jpx.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString, createPromiseCapability, createValidAbsoluteUrl, FormatError,\n info, InvalidPDFException, isArray, isBool, isInt, isString,\n MissingDataException, shadow, stringToPDFString, stringToUTF8String, Util,\n warn, XRefParseException\n} from '../shared/util';\nimport {\n Dict, isCmd, isDict, isName, isRef, isRefsEqual, isStream, Ref, RefSet,\n RefSetCache\n} from './primitives';\nimport { Lexer, Parser } from './parser';\nimport { ChunkedStream } from './chunked_stream';\nimport { CipherTransformFactory } from './crypto';\nimport { ColorSpace } from './colorspace';\n\nvar Catalog = (function CatalogClosure() {\n function Catalog(pdfManager, xref, pageFactory) {\n this.pdfManager = pdfManager;\n this.xref = xref;\n this.catDict = xref.getCatalogObj();\n if (!isDict(this.catDict)) {\n throw new FormatError('catalog object is not a dictionary');\n }\n\n this.fontCache = new RefSetCache();\n this.builtInCMapCache = Object.create(null);\n this.pageKidsCountCache = new RefSetCache();\n // TODO refactor to move getPage() to the PDFDocument.\n this.pageFactory = pageFactory;\n this.pagePromises = [];\n }\n\n Catalog.prototype = {\n get metadata() {\n var streamRef = this.catDict.getRaw('Metadata');\n if (!isRef(streamRef)) {\n return shadow(this, 'metadata', null);\n }\n\n var encryptMetadata = (!this.xref.encrypt ? false :\n this.xref.encrypt.encryptMetadata);\n\n var stream = this.xref.fetch(streamRef, !encryptMetadata);\n var metadata;\n if (stream && isDict(stream.dict)) {\n var type = stream.dict.get('Type');\n var subtype = stream.dict.get('Subtype');\n\n if (isName(type, 'Metadata') && isName(subtype, 'XML')) {\n // XXX: This should examine the charset the XML document defines,\n // however since there are currently no real means to decode\n // arbitrary charsets, let's just hope that the author of the PDF\n // was reasonable enough to stick with the XML default charset,\n // which is UTF-8.\n try {\n metadata = stringToUTF8String(bytesToString(stream.getBytes()));\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info('Skipping invalid metadata.');\n }\n }\n }\n\n return shadow(this, 'metadata', metadata);\n },\n get toplevelPagesDict() {\n var pagesObj = this.catDict.get('Pages');\n if (!isDict(pagesObj)) {\n throw new FormatError('invalid top-level pages dictionary');\n }\n // shadow the prototype getter\n return shadow(this, 'toplevelPagesDict', pagesObj);\n },\n get documentOutline() {\n var obj = null;\n try {\n obj = this.readDocumentOutline();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn('Unable to read document outline');\n }\n return shadow(this, 'documentOutline', obj);\n },\n readDocumentOutline: function Catalog_readDocumentOutline() {\n var obj = this.catDict.get('Outlines');\n if (!isDict(obj)) {\n return null;\n }\n obj = obj.getRaw('First');\n if (!isRef(obj)) {\n return null;\n }\n var root = { items: [], };\n var queue = [{ obj, parent: root, }];\n // To avoid recursion, keep track of the already processed items.\n var processed = new RefSet();\n processed.put(obj);\n var xref = this.xref, blackColor = new Uint8Array(3);\n\n while (queue.length > 0) {\n var i = queue.shift();\n var outlineDict = xref.fetchIfRef(i.obj);\n if (outlineDict === null) {\n continue;\n }\n if (!outlineDict.has('Title')) {\n throw new FormatError('Invalid outline item');\n }\n\n var data = { url: null, dest: null, };\n Catalog.parseDestDictionary({\n destDict: outlineDict,\n resultObj: data,\n docBaseUrl: this.pdfManager.docBaseUrl,\n });\n var title = outlineDict.get('Title');\n var flags = outlineDict.get('F') || 0;\n\n var color = outlineDict.getArray('C'), rgbColor = blackColor;\n // We only need to parse the color when it's valid, and non-default.\n if (isArray(color) && color.length === 3 &&\n (color[0] !== 0 || color[1] !== 0 || color[2] !== 0)) {\n rgbColor = ColorSpace.singletons.rgb.getRgb(color, 0);\n }\n var outlineItem = {\n dest: data.dest,\n url: data.url,\n unsafeUrl: data.unsafeUrl,\n newWindow: data.newWindow,\n title: stringToPDFString(title),\n color: rgbColor,\n count: outlineDict.get('Count'),\n bold: !!(flags & 2),\n italic: !!(flags & 1),\n items: [],\n };\n i.parent.items.push(outlineItem);\n obj = outlineDict.getRaw('First');\n if (isRef(obj) && !processed.has(obj)) {\n queue.push({ obj, parent: outlineItem, });\n processed.put(obj);\n }\n obj = outlineDict.getRaw('Next');\n if (isRef(obj) && !processed.has(obj)) {\n queue.push({ obj, parent: i.parent, });\n processed.put(obj);\n }\n }\n return (root.items.length > 0 ? root.items : null);\n },\n get numPages() {\n var obj = this.toplevelPagesDict.get('Count');\n if (!isInt(obj)) {\n throw new FormatError(\n 'page count in top level pages object is not an integer');\n }\n // shadow the prototype getter\n return shadow(this, 'numPages', obj);\n },\n get destinations() {\n function fetchDestination(dest) {\n return isDict(dest) ? dest.get('D') : dest;\n }\n\n var xref = this.xref;\n var dests = {}, nameTreeRef, nameDictionaryRef;\n var obj = this.catDict.get('Names');\n if (obj && obj.has('Dests')) {\n nameTreeRef = obj.getRaw('Dests');\n } else if (this.catDict.has('Dests')) {\n nameDictionaryRef = this.catDict.get('Dests');\n }\n\n if (nameDictionaryRef) {\n // reading simple destination dictionary\n obj = nameDictionaryRef;\n obj.forEach(function catalogForEach(key, value) {\n if (!value) {\n return;\n }\n dests[key] = fetchDestination(value);\n });\n }\n if (nameTreeRef) {\n var nameTree = new NameTree(nameTreeRef, xref);\n var names = nameTree.getAll();\n for (var name in names) {\n dests[name] = fetchDestination(names[name]);\n }\n }\n return shadow(this, 'destinations', dests);\n },\n getDestination: function Catalog_getDestination(destinationId) {\n function fetchDestination(dest) {\n return isDict(dest) ? dest.get('D') : dest;\n }\n\n var xref = this.xref;\n var dest = null, nameTreeRef, nameDictionaryRef;\n var obj = this.catDict.get('Names');\n if (obj && obj.has('Dests')) {\n nameTreeRef = obj.getRaw('Dests');\n } else if (this.catDict.has('Dests')) {\n nameDictionaryRef = this.catDict.get('Dests');\n }\n\n if (nameDictionaryRef) { // Simple destination dictionary.\n var value = nameDictionaryRef.get(destinationId);\n if (value) {\n dest = fetchDestination(value);\n }\n }\n if (nameTreeRef) {\n var nameTree = new NameTree(nameTreeRef, xref);\n dest = fetchDestination(nameTree.get(destinationId));\n }\n return dest;\n },\n\n get pageLabels() {\n var obj = null;\n try {\n obj = this.readPageLabels();\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn('Unable to read page labels.');\n }\n return shadow(this, 'pageLabels', obj);\n },\n readPageLabels: function Catalog_readPageLabels() {\n var obj = this.catDict.getRaw('PageLabels');\n if (!obj) {\n return null;\n }\n var pageLabels = new Array(this.numPages);\n var style = null;\n var prefix = '';\n\n var numberTree = new NumberTree(obj, this.xref);\n var nums = numberTree.getAll();\n var currentLabel = '', currentIndex = 1;\n\n for (var i = 0, ii = this.numPages; i < ii; i++) {\n if (i in nums) {\n var labelDict = nums[i];\n if (!isDict(labelDict)) {\n throw new FormatError('The PageLabel is not a dictionary.');\n }\n\n var type = labelDict.get('Type');\n if (type && !isName(type, 'PageLabel')) {\n throw new FormatError('Invalid type in PageLabel dictionary.');\n }\n\n var s = labelDict.get('S');\n if (s && !isName(s)) {\n throw new FormatError('Invalid style in PageLabel dictionary.');\n }\n style = s ? s.name : null;\n\n var p = labelDict.get('P');\n if (p && !isString(p)) {\n throw new FormatError('Invalid prefix in PageLabel dictionary.');\n }\n prefix = p ? stringToPDFString(p) : '';\n\n var st = labelDict.get('St');\n if (st && !(isInt(st) && st >= 1)) {\n throw new FormatError('Invalid start in PageLabel dictionary.');\n }\n currentIndex = st || 1;\n }\n\n switch (style) {\n case 'D':\n currentLabel = currentIndex;\n break;\n case 'R':\n case 'r':\n currentLabel = Util.toRoman(currentIndex, style === 'r');\n break;\n case 'A':\n case 'a':\n var LIMIT = 26; // Use only the characters A--Z, or a--z.\n var A_UPPER_CASE = 0x41, A_LOWER_CASE = 0x61;\n\n var baseCharCode = (style === 'a' ? A_LOWER_CASE : A_UPPER_CASE);\n var letterIndex = currentIndex - 1;\n var character = String.fromCharCode(baseCharCode +\n (letterIndex % LIMIT));\n var charBuf = [];\n for (var j = 0, jj = (letterIndex / LIMIT) | 0; j <= jj; j++) {\n charBuf.push(character);\n }\n currentLabel = charBuf.join('');\n break;\n default:\n if (style) {\n throw new FormatError(\n `Invalid style \"${style}\" in PageLabel dictionary.`);\n }\n }\n pageLabels[i] = prefix + currentLabel;\n\n currentLabel = '';\n currentIndex++;\n }\n return pageLabels;\n },\n\n get pageMode() {\n let obj = this.catDict.get('PageMode');\n let pageMode = 'UseNone'; // Default value.\n\n if (isName(obj)) {\n switch (obj.name) {\n case 'UseNone':\n case 'UseOutlines':\n case 'UseThumbs':\n case 'FullScreen':\n case 'UseOC':\n case 'UseAttachments':\n pageMode = obj.name;\n }\n }\n return shadow(this, 'pageMode', pageMode);\n },\n\n get attachments() {\n var xref = this.xref;\n var attachments = null, nameTreeRef;\n var obj = this.catDict.get('Names');\n if (obj) {\n nameTreeRef = obj.getRaw('EmbeddedFiles');\n }\n\n if (nameTreeRef) {\n var nameTree = new NameTree(nameTreeRef, xref);\n var names = nameTree.getAll();\n for (var name in names) {\n var fs = new FileSpec(names[name], xref);\n if (!attachments) {\n attachments = Object.create(null);\n }\n attachments[stringToPDFString(name)] = fs.serializable;\n }\n }\n return shadow(this, 'attachments', attachments);\n },\n get javaScript() {\n var xref = this.xref;\n var obj = this.catDict.get('Names');\n\n var javaScript = [];\n function appendIfJavaScriptDict(jsDict) {\n var type = jsDict.get('S');\n if (!isName(type, 'JavaScript')) {\n return;\n }\n var js = jsDict.get('JS');\n if (isStream(js)) {\n js = bytesToString(js.getBytes());\n } else if (!isString(js)) {\n return;\n }\n javaScript.push(stringToPDFString(js));\n }\n if (obj && obj.has('JavaScript')) {\n var nameTree = new NameTree(obj.getRaw('JavaScript'), xref);\n var names = nameTree.getAll();\n for (var name in names) {\n // We don't really use the JavaScript right now. This code is\n // defensive so we don't cause errors on document load.\n var jsDict = names[name];\n if (isDict(jsDict)) {\n appendIfJavaScriptDict(jsDict);\n }\n }\n }\n\n // Append OpenAction actions to javaScript array\n var openactionDict = this.catDict.get('OpenAction');\n if (isDict(openactionDict, 'Action')) {\n var actionType = openactionDict.get('S');\n if (isName(actionType, 'Named')) {\n // The named Print action is not a part of the PDF 1.7 specification,\n // but is supported by many PDF readers/writers (including Adobe's).\n var action = openactionDict.get('N');\n if (isName(action, 'Print')) {\n javaScript.push('print({});');\n }\n } else {\n appendIfJavaScriptDict(openactionDict);\n }\n }\n\n return shadow(this, 'javaScript', javaScript);\n },\n\n cleanup: function Catalog_cleanup() {\n this.pageKidsCountCache.clear();\n\n var promises = [];\n this.fontCache.forEach(function (promise) {\n promises.push(promise);\n });\n return Promise.all(promises).then((translatedFonts) => {\n for (var i = 0, ii = translatedFonts.length; i < ii; i++) {\n var font = translatedFonts[i].dict;\n delete font.translated;\n }\n this.fontCache.clear();\n this.builtInCMapCache = Object.create(null);\n });\n },\n\n getPage: function Catalog_getPage(pageIndex) {\n if (!(pageIndex in this.pagePromises)) {\n this.pagePromises[pageIndex] = this.getPageDict(pageIndex).then(\n ([dict, ref]) => {\n return this.pageFactory.createPage(pageIndex, dict, ref,\n this.fontCache,\n this.builtInCMapCache);\n });\n }\n return this.pagePromises[pageIndex];\n },\n\n getPageDict: function Catalog_getPageDict(pageIndex) {\n var capability = createPromiseCapability();\n var nodesToVisit = [this.catDict.getRaw('Pages')];\n var count, currentPageIndex = 0;\n var xref = this.xref, pageKidsCountCache = this.pageKidsCountCache;\n\n function next() {\n while (nodesToVisit.length) {\n var currentNode = nodesToVisit.pop();\n\n if (isRef(currentNode)) {\n count = pageKidsCountCache.get(currentNode);\n // Skip nodes where the page can't be.\n if (count > 0 && currentPageIndex + count < pageIndex) {\n currentPageIndex += count;\n continue;\n }\n\n xref.fetchAsync(currentNode).then(function (obj) {\n if (isDict(obj, 'Page') || (isDict(obj) && !obj.has('Kids'))) {\n if (pageIndex === currentPageIndex) {\n // Cache the Page reference, since it can *greatly* improve\n // performance by reducing redundant lookups in long documents\n // where all nodes are found at *one* level of the tree.\n if (currentNode && !pageKidsCountCache.has(currentNode)) {\n pageKidsCountCache.put(currentNode, 1);\n }\n capability.resolve([obj, currentNode]);\n } else {\n currentPageIndex++;\n next();\n }\n return;\n }\n nodesToVisit.push(obj);\n next();\n }, capability.reject);\n return;\n }\n\n // Must be a child page dictionary.\n if (!isDict(currentNode)) {\n capability.reject(new FormatError(\n 'page dictionary kid reference points to wrong type of object'));\n return;\n }\n\n count = currentNode.get('Count');\n // Cache the Kids count, since it can reduce redundant lookups in long\n // documents where all nodes are found at *one* level of the tree.\n var objId = currentNode.objId;\n if (objId && !pageKidsCountCache.has(objId)) {\n pageKidsCountCache.put(objId, count);\n }\n // Skip nodes where the page can't be.\n if (currentPageIndex + count <= pageIndex) {\n currentPageIndex += count;\n continue;\n }\n\n var kids = currentNode.get('Kids');\n if (!isArray(kids)) {\n capability.reject(new FormatError(\n 'page dictionary kids object is not an array'));\n return;\n }\n\n // Always check all `Kids` nodes, to avoid getting stuck in an empty\n // node further down in the tree (see issue5644.pdf, issue8088.pdf),\n // and to ensure that we actually find the correct `Page` dict.\n for (var last = kids.length - 1; last >= 0; last--) {\n nodesToVisit.push(kids[last]);\n }\n }\n capability.reject(new Error('Page index ' + pageIndex + ' not found.'));\n }\n next();\n return capability.promise;\n },\n\n getPageIndex: function Catalog_getPageIndex(pageRef) {\n // The page tree nodes have the count of all the leaves below them. To get\n // how many pages are before we just have to walk up the tree and keep\n // adding the count of siblings to the left of the node.\n var xref = this.xref;\n function pagesBeforeRef(kidRef) {\n var total = 0;\n var parentRef;\n return xref.fetchAsync(kidRef).then(function (node) {\n if (isRefsEqual(kidRef, pageRef) && !isDict(node, 'Page') &&\n !(isDict(node) && !node.has('Type') && node.has('Contents'))) {\n throw new FormatError(\n 'The reference does not point to a /Page Dict.');\n }\n if (!node) {\n return null;\n }\n if (!isDict(node)) {\n throw new FormatError('node must be a Dict.');\n }\n parentRef = node.getRaw('Parent');\n return node.getAsync('Parent');\n }).then(function (parent) {\n if (!parent) {\n return null;\n }\n if (!isDict(parent)) {\n throw new FormatError('parent must be a Dict.');\n }\n return parent.getAsync('Kids');\n }).then(function (kids) {\n if (!kids) {\n return null;\n }\n var kidPromises = [];\n var found = false;\n for (var i = 0; i < kids.length; i++) {\n var kid = kids[i];\n if (!isRef(kid)) {\n throw new FormatError('kid must be a Ref.');\n }\n if (kid.num === kidRef.num) {\n found = true;\n break;\n }\n kidPromises.push(xref.fetchAsync(kid).then(function (kid) {\n if (kid.has('Count')) {\n var count = kid.get('Count');\n total += count;\n } else { // page leaf node\n total++;\n }\n }));\n }\n if (!found) {\n throw new FormatError('kid ref not found in parents kids');\n }\n return Promise.all(kidPromises).then(function () {\n return [total, parentRef];\n });\n });\n }\n\n var total = 0;\n function next(ref) {\n return pagesBeforeRef(ref).then(function (args) {\n if (!args) {\n return total;\n }\n var count = args[0];\n var parentRef = args[1];\n total += count;\n return next(parentRef);\n });\n }\n\n return next(pageRef);\n },\n };\n\n /**\n * @typedef ParseDestDictionaryParameters\n * @property {Dict} destDict - The dictionary containing the destination.\n * @property {Object} resultObj - The object where the parsed destination\n * properties will be placed.\n * @property {string} docBaseUrl - (optional) The document base URL that is\n * used when attempting to recover valid absolute URLs from relative ones.\n */\n\n /**\n * Helper function used to parse the contents of destination dictionaries.\n * @param {ParseDestDictionaryParameters} params\n */\n Catalog.parseDestDictionary = function Catalog_parseDestDictionary(params) {\n // Lets URLs beginning with 'www.' default to using the 'http://' protocol.\n function addDefaultProtocolToUrl(url) {\n if (url.indexOf('www.') === 0) {\n return ('http://' + url);\n }\n return url;\n }\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding, see Bugzilla 1122280.\n function tryConvertUrlEncoding(url) {\n try {\n return stringToUTF8String(url);\n } catch (e) {\n return url;\n }\n }\n\n var destDict = params.destDict;\n if (!isDict(destDict)) {\n warn('Catalog_parseDestDictionary: \"destDict\" must be a dictionary.');\n return;\n }\n var resultObj = params.resultObj;\n if (typeof resultObj !== 'object') {\n warn('Catalog_parseDestDictionary: \"resultObj\" must be an object.');\n return;\n }\n var docBaseUrl = params.docBaseUrl || null;\n\n var action = destDict.get('A'), url, dest;\n if (isDict(action)) {\n var linkType = action.get('S').name;\n switch (linkType) {\n case 'URI':\n url = action.get('URI');\n if (isName(url)) {\n // Some bad PDFs do not put parentheses around relative URLs.\n url = '/' + url.name;\n } else if (isString(url)) {\n url = addDefaultProtocolToUrl(url);\n }\n // TODO: pdf spec mentions urls can be relative to a Base\n // entry in the dictionary.\n break;\n\n case 'GoTo':\n dest = action.get('D');\n break;\n\n case 'Launch':\n // We neither want, nor can, support arbitrary 'Launch' actions.\n // However, in practice they are mostly used for linking to other PDF\n // files, which we thus attempt to support (utilizing `docBaseUrl`).\n /* falls through */\n\n case 'GoToR':\n var urlDict = action.get('F');\n if (isDict(urlDict)) {\n // We assume that we found a FileSpec dictionary\n // and fetch the URL without checking any further.\n url = urlDict.get('F') || null;\n } else if (isString(urlDict)) {\n url = urlDict;\n }\n\n // NOTE: the destination is relative to the *remote* document.\n var remoteDest = action.get('D');\n if (remoteDest) {\n if (isName(remoteDest)) {\n remoteDest = remoteDest.name;\n }\n if (isString(url)) {\n let baseUrl = url.split('#')[0];\n if (isString(remoteDest)) {\n url = baseUrl + '#' + remoteDest;\n } else if (isArray(remoteDest)) {\n url = baseUrl + '#' + JSON.stringify(remoteDest);\n }\n }\n }\n // The 'NewWindow' property, equal to `LinkTarget.BLANK`.\n var newWindow = action.get('NewWindow');\n if (isBool(newWindow)) {\n resultObj.newWindow = newWindow;\n }\n break;\n\n case 'Named':\n var namedAction = action.get('N');\n if (isName(namedAction)) {\n resultObj.action = namedAction.name;\n }\n break;\n\n case 'JavaScript':\n var jsAction = action.get('JS'), js;\n if (isStream(jsAction)) {\n js = bytesToString(jsAction.getBytes());\n } else if (isString(jsAction)) {\n js = jsAction;\n }\n\n if (js) {\n // Attempt to recover valid URLs from 'JS' entries with certain\n // white-listed formats, e.g.\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n var URL_OPEN_METHODS = [\n 'app.launchURL',\n 'window.open'\n ];\n var regex = new RegExp(\n '^\\\\s*(' + URL_OPEN_METHODS.join('|').split('.').join('\\\\.') +\n ')\\\\((?:\\'|\\\")([^\\'\\\"]*)(?:\\'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))', 'i');\n\n var jsUrl = regex.exec(stringToPDFString(js));\n if (jsUrl && jsUrl[2]) {\n url = jsUrl[2];\n\n if (jsUrl[3] === 'true' && jsUrl[1] === 'app.launchURL') {\n resultObj.newWindow = true;\n }\n break;\n }\n }\n /* falls through */\n default:\n warn('Catalog_parseDestDictionary: Unrecognized link type \"' +\n linkType + '\".');\n break;\n }\n } else if (destDict.has('Dest')) { // Simple destination link.\n dest = destDict.get('Dest');\n }\n\n if (isString(url)) {\n url = tryConvertUrlEncoding(url);\n var absoluteUrl = createValidAbsoluteUrl(url, docBaseUrl);\n if (absoluteUrl) {\n resultObj.url = absoluteUrl.href;\n }\n resultObj.unsafeUrl = url;\n }\n if (dest) {\n if (isName(dest)) {\n dest = dest.name;\n }\n if (isString(dest) || isArray(dest)) {\n resultObj.dest = dest;\n }\n }\n };\n\n return Catalog;\n})();\n\nvar XRef = (function XRefClosure() {\n function XRef(stream, pdfManager) {\n this.stream = stream;\n this.pdfManager = pdfManager;\n this.entries = [];\n this.xrefstms = Object.create(null);\n // prepare the XRef cache\n this.cache = [];\n this.stats = {\n streamTypes: [],\n fontTypes: [],\n };\n }\n\n XRef.prototype = {\n setStartXRef: function XRef_setStartXRef(startXRef) {\n // Store the starting positions of xref tables as we process them\n // so we can recover from missing data errors\n this.startXRefQueue = [startXRef];\n },\n\n parse: function XRef_parse(recoveryMode) {\n var trailerDict;\n if (!recoveryMode) {\n trailerDict = this.readXRef();\n } else {\n warn('Indexing all PDF objects');\n trailerDict = this.indexObjects();\n }\n trailerDict.assignXref(this);\n this.trailer = trailerDict;\n var encrypt = trailerDict.get('Encrypt');\n if (isDict(encrypt)) {\n var ids = trailerDict.get('ID');\n var fileId = (ids && ids.length) ? ids[0] : '';\n // The 'Encrypt' dictionary itself should not be encrypted, and by\n // setting `suppressEncryption` we can prevent an infinite loop inside\n // of `XRef_fetchUncompressed` if the dictionary contains indirect\n // objects (fixes issue7665.pdf).\n encrypt.suppressEncryption = true;\n this.encrypt = new CipherTransformFactory(encrypt, fileId,\n this.pdfManager.password);\n }\n\n // get the root dictionary (catalog) object\n if (!(this.root = trailerDict.get('Root'))) {\n throw new FormatError('Invalid root reference');\n }\n },\n\n processXRefTable: function XRef_processXRefTable(parser) {\n if (!('tableState' in this)) {\n // Stores state of the table as we process it so we can resume\n // from middle of table in case of missing data error\n this.tableState = {\n entryNum: 0,\n streamPos: parser.lexer.stream.pos,\n parserBuf1: parser.buf1,\n parserBuf2: parser.buf2,\n };\n }\n\n var obj = this.readXRefTable(parser);\n\n // Sanity check\n if (!isCmd(obj, 'trailer')) {\n throw new FormatError(\n 'Invalid XRef table: could not find trailer dictionary');\n }\n // Read trailer dictionary, e.g.\n // trailer\n // << /Size 22\n // /Root 20R\n // /Info 10R\n // /ID [ <81b14aafa313db63dbd6f981e49f94f4> ]\n // >>\n // The parser goes through the entire stream << ... >> and provides\n // a getter interface for the key-value table\n var dict = parser.getObj();\n\n // The pdflib PDF generator can generate a nested trailer dictionary\n if (!isDict(dict) && dict.dict) {\n dict = dict.dict;\n }\n if (!isDict(dict)) {\n throw new FormatError(\n 'Invalid XRef table: could not parse trailer dictionary');\n }\n delete this.tableState;\n\n return dict;\n },\n\n readXRefTable: function XRef_readXRefTable(parser) {\n // Example of cross-reference table:\n // xref\n // 0 1 <-- subsection header (first obj #, obj count)\n // 0000000000 65535 f <-- actual object (offset, generation #, f/n)\n // 23 2 <-- subsection header ... and so on ...\n // 0000025518 00002 n\n // 0000025635 00000 n\n // trailer\n // ...\n\n var stream = parser.lexer.stream;\n var tableState = this.tableState;\n stream.pos = tableState.streamPos;\n parser.buf1 = tableState.parserBuf1;\n parser.buf2 = tableState.parserBuf2;\n\n // Outer loop is over subsection headers\n var obj;\n\n while (true) {\n if (!('firstEntryNum' in tableState) || !('entryCount' in tableState)) {\n if (isCmd(obj = parser.getObj(), 'trailer')) {\n break;\n }\n tableState.firstEntryNum = obj;\n tableState.entryCount = parser.getObj();\n }\n\n var first = tableState.firstEntryNum;\n var count = tableState.entryCount;\n if (!isInt(first) || !isInt(count)) {\n throw new FormatError(\n 'Invalid XRef table: wrong types in subsection header');\n }\n // Inner loop is over objects themselves\n for (var i = tableState.entryNum; i < count; i++) {\n tableState.streamPos = stream.pos;\n tableState.entryNum = i;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n\n var entry = {};\n entry.offset = parser.getObj();\n entry.gen = parser.getObj();\n var type = parser.getObj();\n\n if (isCmd(type, 'f')) {\n entry.free = true;\n } else if (isCmd(type, 'n')) {\n entry.uncompressed = true;\n }\n\n // Validate entry obj\n if (!isInt(entry.offset) || !isInt(entry.gen) ||\n !(entry.free || entry.uncompressed)) {\n throw new FormatError(\n `Invalid entry in XRef subsection: ${first}, ${count}`);\n }\n\n // The first xref table entry, i.e. obj 0, should be free. Attempting\n // to adjust an incorrect first obj # (fixes issue 3248 and 7229).\n if (i === 0 && entry.free && first === 1) {\n first = 0;\n }\n\n if (!this.entries[i + first]) {\n this.entries[i + first] = entry;\n }\n }\n\n tableState.entryNum = 0;\n tableState.streamPos = stream.pos;\n tableState.parserBuf1 = parser.buf1;\n tableState.parserBuf2 = parser.buf2;\n delete tableState.firstEntryNum;\n delete tableState.entryCount;\n }\n\n // Sanity check: as per spec, first object must be free\n if (this.entries[0] && !this.entries[0].free) {\n throw new FormatError(\n 'Invalid XRef table: unexpected first object');\n }\n return obj;\n },\n\n processXRefStream: function XRef_processXRefStream(stream) {\n if (!('streamState' in this)) {\n // Stores state of the stream as we process it so we can resume\n // from middle of stream in case of missing data error\n var streamParameters = stream.dict;\n var byteWidths = streamParameters.get('W');\n var range = streamParameters.get('Index');\n if (!range) {\n range = [0, streamParameters.get('Size')];\n }\n\n this.streamState = {\n entryRanges: range,\n byteWidths,\n entryNum: 0,\n streamPos: stream.pos,\n };\n }\n this.readXRefStream(stream);\n delete this.streamState;\n\n return stream.dict;\n },\n\n readXRefStream: function XRef_readXRefStream(stream) {\n var i, j;\n var streamState = this.streamState;\n stream.pos = streamState.streamPos;\n\n var byteWidths = streamState.byteWidths;\n var typeFieldWidth = byteWidths[0];\n var offsetFieldWidth = byteWidths[1];\n var generationFieldWidth = byteWidths[2];\n\n var entryRanges = streamState.entryRanges;\n while (entryRanges.length > 0) {\n var first = entryRanges[0];\n var n = entryRanges[1];\n\n if (!isInt(first) || !isInt(n)) {\n throw new FormatError(\n `Invalid XRef range fields: ${first}, ${n}`);\n }\n if (!isInt(typeFieldWidth) || !isInt(offsetFieldWidth) ||\n !isInt(generationFieldWidth)) {\n throw new FormatError(\n `Invalid XRef entry fields length: ${first}, ${n}`);\n }\n for (i = streamState.entryNum; i < n; ++i) {\n streamState.entryNum = i;\n streamState.streamPos = stream.pos;\n\n var type = 0, offset = 0, generation = 0;\n for (j = 0; j < typeFieldWidth; ++j) {\n type = (type << 8) | stream.getByte();\n }\n // if type field is absent, its default value is 1\n if (typeFieldWidth === 0) {\n type = 1;\n }\n for (j = 0; j < offsetFieldWidth; ++j) {\n offset = (offset << 8) | stream.getByte();\n }\n for (j = 0; j < generationFieldWidth; ++j) {\n generation = (generation << 8) | stream.getByte();\n }\n var entry = {};\n entry.offset = offset;\n entry.gen = generation;\n switch (type) {\n case 0:\n entry.free = true;\n break;\n case 1:\n entry.uncompressed = true;\n break;\n case 2:\n break;\n default:\n throw new FormatError(`Invalid XRef entry type: ${type}`);\n }\n if (!this.entries[first + i]) {\n this.entries[first + i] = entry;\n }\n }\n\n streamState.entryNum = 0;\n streamState.streamPos = stream.pos;\n entryRanges.splice(0, 2);\n }\n },\n\n indexObjects: function XRef_indexObjects() {\n // Simple scan through the PDF content to find objects,\n // trailers and XRef streams.\n var TAB = 0x9, LF = 0xA, CR = 0xD, SPACE = 0x20;\n var PERCENT = 0x25, LT = 0x3C;\n\n function readToken(data, offset) {\n var token = '', ch = data[offset];\n while (ch !== LF && ch !== CR && ch !== LT) {\n if (++offset >= data.length) {\n break;\n }\n token += String.fromCharCode(ch);\n ch = data[offset];\n }\n return token;\n }\n function skipUntil(data, offset, what) {\n var length = what.length, dataLength = data.length;\n var skipped = 0;\n // finding byte sequence\n while (offset < dataLength) {\n var i = 0;\n while (i < length && data[offset + i] === what[i]) {\n ++i;\n }\n if (i >= length) {\n break; // sequence found\n }\n offset++;\n skipped++;\n }\n return skipped;\n }\n var objRegExp = /^(\\d+)\\s+(\\d+)\\s+obj\\b/;\n var trailerBytes = new Uint8Array([116, 114, 97, 105, 108, 101, 114]);\n var startxrefBytes = new Uint8Array([115, 116, 97, 114, 116, 120, 114,\n 101, 102]);\n var endobjBytes = new Uint8Array([101, 110, 100, 111, 98, 106]);\n var xrefBytes = new Uint8Array([47, 88, 82, 101, 102]);\n\n // Clear out any existing entries, since they may be bogus.\n this.entries.length = 0;\n\n var stream = this.stream;\n stream.pos = 0;\n var buffer = stream.getBytes();\n var position = stream.start, length = buffer.length;\n var trailers = [], xrefStms = [];\n while (position < length) {\n var ch = buffer[position];\n if (ch === TAB || ch === LF || ch === CR || ch === SPACE) {\n ++position;\n continue;\n }\n if (ch === PERCENT) { // %-comment\n do {\n ++position;\n if (position >= length) {\n break;\n }\n ch = buffer[position];\n } while (ch !== LF && ch !== CR);\n continue;\n }\n var token = readToken(buffer, position);\n var m;\n if (token.indexOf('xref') === 0 &&\n (token.length === 4 || /\\s/.test(token[4]))) {\n position += skipUntil(buffer, position, trailerBytes);\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else if ((m = objRegExp.exec(token))) {\n if (typeof this.entries[m[1]] === 'undefined') {\n this.entries[m[1]] = {\n offset: position - stream.start,\n gen: m[2] | 0,\n uncompressed: true,\n };\n }\n var contentLength = skipUntil(buffer, position, endobjBytes) + 7;\n var content = buffer.subarray(position, position + contentLength);\n\n // checking XRef stream suspect\n // (it shall have '/XRef' and next char is not a letter)\n var xrefTagOffset = skipUntil(content, 0, xrefBytes);\n if (xrefTagOffset < contentLength &&\n content[xrefTagOffset + 5] < 64) {\n xrefStms.push(position - stream.start);\n this.xrefstms[position - stream.start] = 1; // Avoid recursion\n }\n\n position += contentLength;\n } else if (token.indexOf('trailer') === 0 &&\n (token.length === 7 || /\\s/.test(token[7]))) {\n trailers.push(position);\n position += skipUntil(buffer, position, startxrefBytes);\n } else {\n position += token.length + 1;\n }\n }\n // reading XRef streams\n var i, ii;\n for (i = 0, ii = xrefStms.length; i < ii; ++i) {\n this.startXRefQueue.push(xrefStms[i]);\n this.readXRef(/* recoveryMode */ true);\n }\n // finding main trailer\n var dict;\n for (i = 0, ii = trailers.length; i < ii; ++i) {\n stream.pos = trailers[i];\n var parser = new Parser(new Lexer(stream), /* allowStreams = */ true,\n /* xref = */ this, /* recoveryMode = */ true);\n var obj = parser.getObj();\n if (!isCmd(obj, 'trailer')) {\n continue;\n }\n // read the trailer dictionary\n dict = parser.getObj();\n if (!isDict(dict)) {\n continue;\n }\n // taking the first one with 'ID'\n if (dict.has('ID')) {\n return dict;\n }\n }\n // no tailer with 'ID', taking last one (if exists)\n if (dict) {\n return dict;\n }\n // nothing helps\n throw new InvalidPDFException('Invalid PDF structure');\n },\n\n readXRef: function XRef_readXRef(recoveryMode) {\n var stream = this.stream;\n\n try {\n while (this.startXRefQueue.length) {\n var startXRef = this.startXRefQueue[0];\n\n stream.pos = startXRef + stream.start;\n\n var parser = new Parser(new Lexer(stream), true, this);\n var obj = parser.getObj();\n var dict;\n\n // Get dictionary\n if (isCmd(obj, 'xref')) {\n // Parse end-of-file XRef\n dict = this.processXRefTable(parser);\n if (!this.topDict) {\n this.topDict = dict;\n }\n\n // Recursively get other XRefs 'XRefStm', if any\n obj = dict.get('XRefStm');\n if (isInt(obj)) {\n var pos = obj;\n // ignore previously loaded xref streams\n // (possible infinite recursion)\n if (!(pos in this.xrefstms)) {\n this.xrefstms[pos] = 1;\n this.startXRefQueue.push(pos);\n }\n }\n } else if (isInt(obj)) {\n // Parse in-stream XRef\n if (!isInt(parser.getObj()) ||\n !isCmd(parser.getObj(), 'obj') ||\n !isStream(obj = parser.getObj())) {\n throw new FormatError('Invalid XRef stream');\n }\n dict = this.processXRefStream(obj);\n if (!this.topDict) {\n this.topDict = dict;\n }\n if (!dict) {\n throw new FormatError('Failed to read XRef stream');\n }\n } else {\n throw new FormatError('Invalid XRef stream header');\n }\n\n // Recursively get previous dictionary, if any\n obj = dict.get('Prev');\n if (isInt(obj)) {\n this.startXRefQueue.push(obj);\n } else if (isRef(obj)) {\n // The spec says Prev must not be a reference, i.e. \"/Prev NNN\"\n // This is a fallback for non-compliant PDFs, i.e. \"/Prev NNN 0 R\"\n this.startXRefQueue.push(obj.num);\n }\n\n this.startXRefQueue.shift();\n }\n\n return this.topDict;\n } catch (e) {\n if (e instanceof MissingDataException) {\n throw e;\n }\n info('(while reading XRef): ' + e);\n }\n\n if (recoveryMode) {\n return;\n }\n throw new XRefParseException();\n },\n\n getEntry: function XRef_getEntry(i) {\n var xrefEntry = this.entries[i];\n if (xrefEntry && !xrefEntry.free && xrefEntry.offset) {\n return xrefEntry;\n }\n return null;\n },\n\n fetchIfRef: function XRef_fetchIfRef(obj, suppressEncryption) {\n if (!isRef(obj)) {\n return obj;\n }\n return this.fetch(obj, suppressEncryption);\n },\n\n fetch: function XRef_fetch(ref, suppressEncryption) {\n if (!isRef(ref)) {\n throw new Error('ref object is not a reference');\n }\n var num = ref.num;\n if (num in this.cache) {\n var cacheEntry = this.cache[num];\n // In documents with Object Streams, it's possible that cached `Dict`s\n // have not been assigned an `objId` yet (see e.g. issue3115r.pdf).\n if (cacheEntry instanceof Dict && !cacheEntry.objId) {\n cacheEntry.objId = ref.toString();\n }\n return cacheEntry;\n }\n\n var xrefEntry = this.getEntry(num);\n\n // the referenced entry can be free\n if (xrefEntry === null) {\n return (this.cache[num] = null);\n }\n\n if (xrefEntry.uncompressed) {\n xrefEntry = this.fetchUncompressed(ref, xrefEntry, suppressEncryption);\n } else {\n xrefEntry = this.fetchCompressed(xrefEntry, suppressEncryption);\n }\n if (isDict(xrefEntry)) {\n xrefEntry.objId = ref.toString();\n } else if (isStream(xrefEntry)) {\n xrefEntry.dict.objId = ref.toString();\n }\n return xrefEntry;\n },\n\n fetchUncompressed: function XRef_fetchUncompressed(ref, xrefEntry,\n suppressEncryption) {\n var gen = ref.gen;\n var num = ref.num;\n if (xrefEntry.gen !== gen) {\n throw new FormatError('inconsistent generation in XRef');\n }\n var stream = this.stream.makeSubStream(xrefEntry.offset +\n this.stream.start);\n var parser = new Parser(new Lexer(stream), true, this);\n var obj1 = parser.getObj();\n var obj2 = parser.getObj();\n var obj3 = parser.getObj();\n if (!isInt(obj1) || parseInt(obj1, 10) !== num ||\n !isInt(obj2) || parseInt(obj2, 10) !== gen ||\n !isCmd(obj3)) {\n throw new FormatError('bad XRef entry');\n }\n if (!isCmd(obj3, 'obj')) {\n // some bad PDFs use \"obj1234\" and really mean 1234\n if (obj3.cmd.indexOf('obj') === 0) {\n num = parseInt(obj3.cmd.substring(3), 10);\n if (!isNaN(num)) {\n return num;\n }\n }\n throw new FormatError('bad XRef entry');\n }\n if (this.encrypt && !suppressEncryption) {\n xrefEntry = parser.getObj(this.encrypt.createCipherTransform(num, gen));\n } else {\n xrefEntry = parser.getObj();\n }\n if (!isStream(xrefEntry)) {\n this.cache[num] = xrefEntry;\n }\n return xrefEntry;\n },\n\n fetchCompressed: function XRef_fetchCompressed(xrefEntry,\n suppressEncryption) {\n var tableOffset = xrefEntry.offset;\n var stream = this.fetch(new Ref(tableOffset, 0));\n if (!isStream(stream)) {\n throw new FormatError('bad ObjStm stream');\n }\n var first = stream.dict.get('First');\n var n = stream.dict.get('N');\n if (!isInt(first) || !isInt(n)) {\n throw new FormatError(\n 'invalid first and n parameters for ObjStm stream');\n }\n var parser = new Parser(new Lexer(stream), false, this);\n parser.allowStreams = true;\n var i, entries = [], num, nums = [];\n // read the object numbers to populate cache\n for (i = 0; i < n; ++i) {\n num = parser.getObj();\n if (!isInt(num)) {\n throw new FormatError(\n `invalid object number in the ObjStm stream: ${num}`);\n }\n nums.push(num);\n var offset = parser.getObj();\n if (!isInt(offset)) {\n throw new FormatError(\n `invalid object offset in the ObjStm stream: ${offset}`);\n }\n }\n // read stream objects for cache\n for (i = 0; i < n; ++i) {\n entries.push(parser.getObj());\n // The ObjStm should not contain 'endobj'. If it's present, skip over it\n // to support corrupt PDFs (fixes issue 5241, bug 898610, bug 1037816).\n if (isCmd(parser.buf1, 'endobj')) {\n parser.shift();\n }\n num = nums[i];\n var entry = this.entries[num];\n if (entry && entry.offset === tableOffset && entry.gen === i) {\n this.cache[num] = entries[i];\n }\n }\n xrefEntry = entries[xrefEntry.gen];\n if (xrefEntry === undefined) {\n throw new FormatError('bad XRef entry for compressed object');\n }\n return xrefEntry;\n },\n\n fetchIfRefAsync: function XRef_fetchIfRefAsync(obj, suppressEncryption) {\n if (!isRef(obj)) {\n return Promise.resolve(obj);\n }\n return this.fetchAsync(obj, suppressEncryption);\n },\n\n fetchAsync: function XRef_fetchAsync(ref, suppressEncryption) {\n var streamManager = this.stream.manager;\n var xref = this;\n return new Promise(function tryFetch(resolve, reject) {\n try {\n resolve(xref.fetch(ref, suppressEncryption));\n } catch (e) {\n if (e instanceof MissingDataException) {\n streamManager.requestRange(e.begin, e.end).then(function () {\n tryFetch(resolve, reject);\n }, reject);\n return;\n }\n reject(e);\n }\n });\n },\n\n getCatalogObj: function XRef_getCatalogObj() {\n return this.root;\n },\n };\n\n return XRef;\n})();\n\n/**\n * A NameTree/NumberTree is like a Dict but has some advantageous properties,\n * see the specification (7.9.6 and 7.9.7) for additional details.\n * TODO: implement all the Dict functions and make this more efficient.\n */\nvar NameOrNumberTree = (function NameOrNumberTreeClosure() {\n function NameOrNumberTree(root, xref) {\n throw new Error('Cannot initialize NameOrNumberTree.');\n }\n\n NameOrNumberTree.prototype = {\n getAll: function NameOrNumberTree_getAll() {\n var dict = Object.create(null);\n if (!this.root) {\n return dict;\n }\n var xref = this.xref;\n // Reading Name/Number tree.\n var processed = new RefSet();\n processed.put(this.root);\n var queue = [this.root];\n while (queue.length > 0) {\n var i, n;\n var obj = xref.fetchIfRef(queue.shift());\n if (!isDict(obj)) {\n continue;\n }\n if (obj.has('Kids')) {\n var kids = obj.get('Kids');\n for (i = 0, n = kids.length; i < n; i++) {\n var kid = kids[i];\n if (processed.has(kid)) {\n throw new FormatError(`Duplicate entry in \"${this._type}\" tree.`);\n }\n queue.push(kid);\n processed.put(kid);\n }\n continue;\n }\n var entries = obj.get(this._type);\n if (isArray(entries)) {\n for (i = 0, n = entries.length; i < n; i += 2) {\n dict[xref.fetchIfRef(entries[i])] = xref.fetchIfRef(entries[i + 1]);\n }\n }\n }\n return dict;\n },\n\n get: function NameOrNumberTree_get(key) {\n if (!this.root) {\n return null;\n }\n\n var xref = this.xref;\n var kidsOrEntries = xref.fetchIfRef(this.root);\n var loopCount = 0;\n var MAX_LEVELS = 10;\n var l, r, m;\n\n // Perform a binary search to quickly find the entry that\n // contains the key we are looking for.\n while (kidsOrEntries.has('Kids')) {\n if (++loopCount > MAX_LEVELS) {\n warn('Search depth limit reached for \"' + this._type + '\" tree.');\n return null;\n }\n\n var kids = kidsOrEntries.get('Kids');\n if (!isArray(kids)) {\n return null;\n }\n\n l = 0;\n r = kids.length - 1;\n while (l <= r) {\n m = (l + r) >> 1;\n var kid = xref.fetchIfRef(kids[m]);\n var limits = kid.get('Limits');\n\n if (key < xref.fetchIfRef(limits[0])) {\n r = m - 1;\n } else if (key > xref.fetchIfRef(limits[1])) {\n l = m + 1;\n } else {\n kidsOrEntries = xref.fetchIfRef(kids[m]);\n break;\n }\n }\n if (l > r) {\n return null;\n }\n }\n\n // If we get here, then we have found the right entry. Now go through the\n // entries in the dictionary until we find the key we're looking for.\n var entries = kidsOrEntries.get(this._type);\n if (isArray(entries)) {\n // Perform a binary search to reduce the lookup time.\n l = 0;\n r = entries.length - 2;\n while (l <= r) {\n // Check only even indices (0, 2, 4, ...) because the\n // odd indices contain the actual data.\n m = (l + r) & ~1;\n var currentKey = xref.fetchIfRef(entries[m]);\n if (key < currentKey) {\n r = m - 2;\n } else if (key > currentKey) {\n l = m + 2;\n } else {\n return xref.fetchIfRef(entries[m + 1]);\n }\n }\n }\n return null;\n },\n };\n return NameOrNumberTree;\n})();\n\nvar NameTree = (function NameTreeClosure() {\n function NameTree(root, xref) {\n this.root = root;\n this.xref = xref;\n this._type = 'Names';\n }\n\n Util.inherit(NameTree, NameOrNumberTree, {});\n\n return NameTree;\n})();\n\nvar NumberTree = (function NumberTreeClosure() {\n function NumberTree(root, xref) {\n this.root = root;\n this.xref = xref;\n this._type = 'Nums';\n }\n\n Util.inherit(NumberTree, NameOrNumberTree, {});\n\n return NumberTree;\n})();\n\n/**\n * \"A PDF file can refer to the contents of another file by using a File\n * Specification (PDF 1.1)\", see the spec (7.11) for more details.\n * NOTE: Only embedded files are supported (as part of the attachments support)\n * TODO: support the 'URL' file system (with caching if !/V), portable\n * collections attributes and related files (/RF)\n */\nvar FileSpec = (function FileSpecClosure() {\n function FileSpec(root, xref) {\n if (!root || !isDict(root)) {\n return;\n }\n this.xref = xref;\n this.root = root;\n if (root.has('FS')) {\n this.fs = root.get('FS');\n }\n this.description = root.has('Desc') ?\n stringToPDFString(root.get('Desc')) :\n '';\n if (root.has('RF')) {\n warn('Related file specifications are not supported');\n }\n this.contentAvailable = true;\n if (!root.has('EF')) {\n this.contentAvailable = false;\n warn('Non-embedded file specifications are not supported');\n }\n }\n\n function pickPlatformItem(dict) {\n // Look for the filename in this order:\n // UF, F, Unix, Mac, DOS\n if (dict.has('UF')) {\n return dict.get('UF');\n } else if (dict.has('F')) {\n return dict.get('F');\n } else if (dict.has('Unix')) {\n return dict.get('Unix');\n } else if (dict.has('Mac')) {\n return dict.get('Mac');\n } else if (dict.has('DOS')) {\n return dict.get('DOS');\n }\n return null;\n }\n\n FileSpec.prototype = {\n get filename() {\n if (!this._filename && this.root) {\n var filename = pickPlatformItem(this.root) || 'unnamed';\n this._filename = stringToPDFString(filename).\n replace(/\\\\\\\\/g, '\\\\').\n replace(/\\\\\\//g, '/').\n replace(/\\\\/g, '/');\n }\n return this._filename;\n },\n get content() {\n if (!this.contentAvailable) {\n return null;\n }\n if (!this.contentRef && this.root) {\n this.contentRef = pickPlatformItem(this.root.get('EF'));\n }\n var content = null;\n if (this.contentRef) {\n var xref = this.xref;\n var fileObj = xref.fetchIfRef(this.contentRef);\n if (fileObj && isStream(fileObj)) {\n content = fileObj.getBytes();\n } else {\n warn('Embedded file specification points to non-existing/invalid ' +\n 'content');\n }\n } else {\n warn('Embedded file specification does not have a content');\n }\n return content;\n },\n get serializable() {\n return {\n filename: this.filename,\n content: this.content,\n };\n },\n };\n return FileSpec;\n})();\n\n/**\n * A helper for loading missing data in `Dict` graphs. It traverses the graph\n * depth first and queues up any objects that have missing data. Once it has\n * has traversed as many objects that are available it attempts to bundle the\n * missing data requests and then resume from the nodes that weren't ready.\n *\n * NOTE: It provides protection from circular references by keeping track of\n * loaded references. However, you must be careful not to load any graphs\n * that have references to the catalog or other pages since that will cause the\n * entire PDF document object graph to be traversed.\n */\nlet ObjectLoader = (function() {\n function mayHaveChildren(value) {\n return isRef(value) || isDict(value) || isArray(value) || isStream(value);\n }\n\n function addChildren(node, nodesToVisit) {\n if (isDict(node) || isStream(node)) {\n let dict = isDict(node) ? node : node.dict;\n let dictKeys = dict.getKeys();\n for (let i = 0, ii = dictKeys.length; i < ii; i++) {\n let rawValue = dict.getRaw(dictKeys[i]);\n if (mayHaveChildren(rawValue)) {\n nodesToVisit.push(rawValue);\n }\n }\n } else if (isArray(node)) {\n for (let i = 0, ii = node.length; i < ii; i++) {\n let value = node[i];\n if (mayHaveChildren(value)) {\n nodesToVisit.push(value);\n }\n }\n }\n }\n\n function ObjectLoader(dict, keys, xref) {\n this.dict = dict;\n this.keys = keys;\n this.xref = xref;\n this.refSet = null;\n this.capability = null;\n }\n\n ObjectLoader.prototype = {\n load() {\n this.capability = createPromiseCapability();\n // Don't walk the graph if all the data is already loaded.\n if (!(this.xref.stream instanceof ChunkedStream) ||\n this.xref.stream.getMissingChunks().length === 0) {\n this.capability.resolve();\n return this.capability.promise;\n }\n\n let { keys, dict, } = this;\n this.refSet = new RefSet();\n // Setup the initial nodes to visit.\n let nodesToVisit = [];\n for (let i = 0, ii = keys.length; i < ii; i++) {\n let rawValue = dict.getRaw(keys[i]);\n // Skip nodes that are guaranteed to be empty.\n if (rawValue !== undefined) {\n nodesToVisit.push(rawValue);\n }\n }\n\n this._walk(nodesToVisit);\n return this.capability.promise;\n },\n\n _walk(nodesToVisit) {\n let nodesToRevisit = [];\n let pendingRequests = [];\n // DFS walk of the object graph.\n while (nodesToVisit.length) {\n let currentNode = nodesToVisit.pop();\n\n // Only references or chunked streams can cause missing data exceptions.\n if (isRef(currentNode)) {\n // Skip nodes that have already been visited.\n if (this.refSet.has(currentNode)) {\n continue;\n }\n try {\n this.refSet.put(currentNode);\n currentNode = this.xref.fetch(currentNode);\n } catch (ex) {\n if (!(ex instanceof MissingDataException)) {\n throw ex;\n }\n nodesToRevisit.push(currentNode);\n pendingRequests.push({ begin: ex.begin, end: ex.end, });\n }\n }\n if (currentNode && currentNode.getBaseStreams) {\n let baseStreams = currentNode.getBaseStreams();\n let foundMissingData = false;\n for (let i = 0, ii = baseStreams.length; i < ii; i++) {\n let stream = baseStreams[i];\n if (stream.getMissingChunks && stream.getMissingChunks().length) {\n foundMissingData = true;\n pendingRequests.push({ begin: stream.start, end: stream.end, });\n }\n }\n if (foundMissingData) {\n nodesToRevisit.push(currentNode);\n }\n }\n\n addChildren(currentNode, nodesToVisit);\n }\n\n if (pendingRequests.length) {\n this.xref.stream.manager.requestRanges(pendingRequests).then(() => {\n for (let i = 0, ii = nodesToRevisit.length; i < ii; i++) {\n let node = nodesToRevisit[i];\n // Remove any reference nodes from the current `RefSet` so they\n // aren't skipped when we revist them.\n if (isRef(node)) {\n this.refSet.remove(node);\n }\n }\n this._walk(nodesToRevisit);\n }, this.capability.reject);\n return;\n }\n // Everything is loaded.\n this.refSet = null;\n this.capability.resolve();\n },\n };\n\n return ObjectLoader;\n})();\n\nexport {\n Catalog,\n ObjectLoader,\n XRef,\n FileSpec,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/obj.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from '../shared/util';\n\n/**\n * Hold a map of decoded fonts and of the standard fourteen Type1\n * fonts and their acronyms.\n */\nvar getStdFontMap = getLookupTableFactory(function (t) {\n t['ArialNarrow'] = 'Helvetica';\n t['ArialNarrow-Bold'] = 'Helvetica-Bold';\n t['ArialNarrow-BoldItalic'] = 'Helvetica-BoldOblique';\n t['ArialNarrow-Italic'] = 'Helvetica-Oblique';\n t['ArialBlack'] = 'Helvetica';\n t['ArialBlack-Bold'] = 'Helvetica-Bold';\n t['ArialBlack-BoldItalic'] = 'Helvetica-BoldOblique';\n t['ArialBlack-Italic'] = 'Helvetica-Oblique';\n t['Arial-Black'] = 'Helvetica';\n t['Arial-Black-Bold'] = 'Helvetica-Bold';\n t['Arial-Black-BoldItalic'] = 'Helvetica-BoldOblique';\n t['Arial-Black-Italic'] = 'Helvetica-Oblique';\n t['Arial'] = 'Helvetica';\n t['Arial-Bold'] = 'Helvetica-Bold';\n t['Arial-BoldItalic'] = 'Helvetica-BoldOblique';\n t['Arial-Italic'] = 'Helvetica-Oblique';\n t['Arial-BoldItalicMT'] = 'Helvetica-BoldOblique';\n t['Arial-BoldMT'] = 'Helvetica-Bold';\n t['Arial-ItalicMT'] = 'Helvetica-Oblique';\n t['ArialMT'] = 'Helvetica';\n t['Courier-Bold'] = 'Courier-Bold';\n t['Courier-BoldItalic'] = 'Courier-BoldOblique';\n t['Courier-Italic'] = 'Courier-Oblique';\n t['CourierNew'] = 'Courier';\n t['CourierNew-Bold'] = 'Courier-Bold';\n t['CourierNew-BoldItalic'] = 'Courier-BoldOblique';\n t['CourierNew-Italic'] = 'Courier-Oblique';\n t['CourierNewPS-BoldItalicMT'] = 'Courier-BoldOblique';\n t['CourierNewPS-BoldMT'] = 'Courier-Bold';\n t['CourierNewPS-ItalicMT'] = 'Courier-Oblique';\n t['CourierNewPSMT'] = 'Courier';\n t['Helvetica'] = 'Helvetica';\n t['Helvetica-Bold'] = 'Helvetica-Bold';\n t['Helvetica-BoldItalic'] = 'Helvetica-BoldOblique';\n t['Helvetica-BoldOblique'] = 'Helvetica-BoldOblique';\n t['Helvetica-Italic'] = 'Helvetica-Oblique';\n t['Helvetica-Oblique'] = 'Helvetica-Oblique';\n t['SegoeUISymbol'] = 'Helvetica';\n t['Symbol-Bold'] = 'Symbol';\n t['Symbol-BoldItalic'] = 'Symbol';\n t['Symbol-Italic'] = 'Symbol';\n t['TimesNewRoman'] = 'Times-Roman';\n t['TimesNewRoman-Bold'] = 'Times-Bold';\n t['TimesNewRoman-BoldItalic'] = 'Times-BoldItalic';\n t['TimesNewRoman-Italic'] = 'Times-Italic';\n t['TimesNewRomanPS'] = 'Times-Roman';\n t['TimesNewRomanPS-Bold'] = 'Times-Bold';\n t['TimesNewRomanPS-BoldItalic'] = 'Times-BoldItalic';\n t['TimesNewRomanPS-BoldItalicMT'] = 'Times-BoldItalic';\n t['TimesNewRomanPS-BoldMT'] = 'Times-Bold';\n t['TimesNewRomanPS-Italic'] = 'Times-Italic';\n t['TimesNewRomanPS-ItalicMT'] = 'Times-Italic';\n t['TimesNewRomanPSMT'] = 'Times-Roman';\n t['TimesNewRomanPSMT-Bold'] = 'Times-Bold';\n t['TimesNewRomanPSMT-BoldItalic'] = 'Times-BoldItalic';\n t['TimesNewRomanPSMT-Italic'] = 'Times-Italic';\n});\n\n/**\n * Holds the map of the non-standard fonts that might be included as\n * a standard fonts without glyph data.\n */\nvar getNonStdFontMap = getLookupTableFactory(function (t) {\n t['CenturyGothic'] = 'Helvetica';\n t['CenturyGothic-Bold'] = 'Helvetica-Bold';\n t['CenturyGothic-BoldItalic'] = 'Helvetica-BoldOblique';\n t['CenturyGothic-Italic'] = 'Helvetica-Oblique';\n t['ComicSansMS'] = 'Comic Sans MS';\n t['ComicSansMS-Bold'] = 'Comic Sans MS-Bold';\n t['ComicSansMS-BoldItalic'] = 'Comic Sans MS-BoldItalic';\n t['ComicSansMS-Italic'] = 'Comic Sans MS-Italic';\n t['LucidaConsole'] = 'Courier';\n t['LucidaConsole-Bold'] = 'Courier-Bold';\n t['LucidaConsole-BoldItalic'] = 'Courier-BoldOblique';\n t['LucidaConsole-Italic'] = 'Courier-Oblique';\n t['MS-Gothic'] = 'MS Gothic';\n t['MS-Gothic-Bold'] = 'MS Gothic-Bold';\n t['MS-Gothic-BoldItalic'] = 'MS Gothic-BoldItalic';\n t['MS-Gothic-Italic'] = 'MS Gothic-Italic';\n t['MS-Mincho'] = 'MS Mincho';\n t['MS-Mincho-Bold'] = 'MS Mincho-Bold';\n t['MS-Mincho-BoldItalic'] = 'MS Mincho-BoldItalic';\n t['MS-Mincho-Italic'] = 'MS Mincho-Italic';\n t['MS-PGothic'] = 'MS PGothic';\n t['MS-PGothic-Bold'] = 'MS PGothic-Bold';\n t['MS-PGothic-BoldItalic'] = 'MS PGothic-BoldItalic';\n t['MS-PGothic-Italic'] = 'MS PGothic-Italic';\n t['MS-PMincho'] = 'MS PMincho';\n t['MS-PMincho-Bold'] = 'MS PMincho-Bold';\n t['MS-PMincho-BoldItalic'] = 'MS PMincho-BoldItalic';\n t['MS-PMincho-Italic'] = 'MS PMincho-Italic';\n t['NuptialScript'] = 'Times-Italic';\n t['Wingdings'] = 'ZapfDingbats';\n});\n\nvar getSerifFonts = getLookupTableFactory(function (t) {\n t['Adobe Jenson'] = true;\n t['Adobe Text'] = true;\n t['Albertus'] = true;\n t['Aldus'] = true;\n t['Alexandria'] = true;\n t['Algerian'] = true;\n t['American Typewriter'] = true;\n t['Antiqua'] = true;\n t['Apex'] = true;\n t['Arno'] = true;\n t['Aster'] = true;\n t['Aurora'] = true;\n t['Baskerville'] = true;\n t['Bell'] = true;\n t['Bembo'] = true;\n t['Bembo Schoolbook'] = true;\n t['Benguiat'] = true;\n t['Berkeley Old Style'] = true;\n t['Bernhard Modern'] = true;\n t['Berthold City'] = true;\n t['Bodoni'] = true;\n t['Bauer Bodoni'] = true;\n t['Book Antiqua'] = true;\n t['Bookman'] = true;\n t['Bordeaux Roman'] = true;\n t['Californian FB'] = true;\n t['Calisto'] = true;\n t['Calvert'] = true;\n t['Capitals'] = true;\n t['Cambria'] = true;\n t['Cartier'] = true;\n t['Caslon'] = true;\n t['Catull'] = true;\n t['Centaur'] = true;\n t['Century Old Style'] = true;\n t['Century Schoolbook'] = true;\n t['Chaparral'] = true;\n t['Charis SIL'] = true;\n t['Cheltenham'] = true;\n t['Cholla Slab'] = true;\n t['Clarendon'] = true;\n t['Clearface'] = true;\n t['Cochin'] = true;\n t['Colonna'] = true;\n t['Computer Modern'] = true;\n t['Concrete Roman'] = true;\n t['Constantia'] = true;\n t['Cooper Black'] = true;\n t['Corona'] = true;\n t['Ecotype'] = true;\n t['Egyptienne'] = true;\n t['Elephant'] = true;\n t['Excelsior'] = true;\n t['Fairfield'] = true;\n t['FF Scala'] = true;\n t['Folkard'] = true;\n t['Footlight'] = true;\n t['FreeSerif'] = true;\n t['Friz Quadrata'] = true;\n t['Garamond'] = true;\n t['Gentium'] = true;\n t['Georgia'] = true;\n t['Gloucester'] = true;\n t['Goudy Old Style'] = true;\n t['Goudy Schoolbook'] = true;\n t['Goudy Pro Font'] = true;\n t['Granjon'] = true;\n t['Guardian Egyptian'] = true;\n t['Heather'] = true;\n t['Hercules'] = true;\n t['High Tower Text'] = true;\n t['Hiroshige'] = true;\n t['Hoefler Text'] = true;\n t['Humana Serif'] = true;\n t['Imprint'] = true;\n t['Ionic No. 5'] = true;\n t['Janson'] = true;\n t['Joanna'] = true;\n t['Korinna'] = true;\n t['Lexicon'] = true;\n t['Liberation Serif'] = true;\n t['Linux Libertine'] = true;\n t['Literaturnaya'] = true;\n t['Lucida'] = true;\n t['Lucida Bright'] = true;\n t['Melior'] = true;\n t['Memphis'] = true;\n t['Miller'] = true;\n t['Minion'] = true;\n t['Modern'] = true;\n t['Mona Lisa'] = true;\n t['Mrs Eaves'] = true;\n t['MS Serif'] = true;\n t['Museo Slab'] = true;\n t['New York'] = true;\n t['Nimbus Roman'] = true;\n t['NPS Rawlinson Roadway'] = true;\n t['NuptialScript'] = true;\n t['Palatino'] = true;\n t['Perpetua'] = true;\n t['Plantin'] = true;\n t['Plantin Schoolbook'] = true;\n t['Playbill'] = true;\n t['Poor Richard'] = true;\n t['Rawlinson Roadway'] = true;\n t['Renault'] = true;\n t['Requiem'] = true;\n t['Rockwell'] = true;\n t['Roman'] = true;\n t['Rotis Serif'] = true;\n t['Sabon'] = true;\n t['Scala'] = true;\n t['Seagull'] = true;\n t['Sistina'] = true;\n t['Souvenir'] = true;\n t['STIX'] = true;\n t['Stone Informal'] = true;\n t['Stone Serif'] = true;\n t['Sylfaen'] = true;\n t['Times'] = true;\n t['Trajan'] = true;\n t['Trinité'] = true;\n t['Trump Mediaeval'] = true;\n t['Utopia'] = true;\n t['Vale Type'] = true;\n t['Bitstream Vera'] = true;\n t['Vera Serif'] = true;\n t['Versailles'] = true;\n t['Wanted'] = true;\n t['Weiss'] = true;\n t['Wide Latin'] = true;\n t['Windsor'] = true;\n t['XITS'] = true;\n});\n\nvar getSymbolsFonts = getLookupTableFactory(function (t) {\n t['Dingbats'] = true;\n t['Symbol'] = true;\n t['ZapfDingbats'] = true;\n});\n\n// Glyph map for well-known standard fonts. Sometimes Ghostscript uses CID\n// fonts, but does not embed the CID to GID mapping. The mapping is incomplete\n// for all glyphs, but common for some set of the standard fonts.\nvar getGlyphMapForStandardFonts = getLookupTableFactory(function (t) {\n t[2] = 10; t[3] = 32; t[4] = 33; t[5] = 34; t[6] = 35; t[7] = 36; t[8] = 37;\n t[9] = 38; t[10] = 39; t[11] = 40; t[12] = 41; t[13] = 42; t[14] = 43;\n t[15] = 44; t[16] = 45; t[17] = 46; t[18] = 47; t[19] = 48; t[20] = 49;\n t[21] = 50; t[22] = 51; t[23] = 52; t[24] = 53; t[25] = 54; t[26] = 55;\n t[27] = 56; t[28] = 57; t[29] = 58; t[30] = 894; t[31] = 60; t[32] = 61;\n t[33] = 62; t[34] = 63; t[35] = 64; t[36] = 65; t[37] = 66; t[38] = 67;\n t[39] = 68; t[40] = 69; t[41] = 70; t[42] = 71; t[43] = 72; t[44] = 73;\n t[45] = 74; t[46] = 75; t[47] = 76; t[48] = 77; t[49] = 78; t[50] = 79;\n t[51] = 80; t[52] = 81; t[53] = 82; t[54] = 83; t[55] = 84; t[56] = 85;\n t[57] = 86; t[58] = 87; t[59] = 88; t[60] = 89; t[61] = 90; t[62] = 91;\n t[63] = 92; t[64] = 93; t[65] = 94; t[66] = 95; t[67] = 96; t[68] = 97;\n t[69] = 98; t[70] = 99; t[71] = 100; t[72] = 101; t[73] = 102; t[74] = 103;\n t[75] = 104; t[76] = 105; t[77] = 106; t[78] = 107; t[79] = 108;\n t[80] = 109; t[81] = 110; t[82] = 111; t[83] = 112; t[84] = 113;\n t[85] = 114; t[86] = 115; t[87] = 116; t[88] = 117; t[89] = 118;\n t[90] = 119; t[91] = 120; t[92] = 121; t[93] = 122; t[94] = 123;\n t[95] = 124; t[96] = 125; t[97] = 126; t[98] = 196; t[99] = 197;\n t[100] = 199; t[101] = 201; t[102] = 209; t[103] = 214; t[104] = 220;\n t[105] = 225; t[106] = 224; t[107] = 226; t[108] = 228; t[109] = 227;\n t[110] = 229; t[111] = 231; t[112] = 233; t[113] = 232; t[114] = 234;\n t[115] = 235; t[116] = 237; t[117] = 236; t[118] = 238; t[119] = 239;\n t[120] = 241; t[121] = 243; t[122] = 242; t[123] = 244; t[124] = 246;\n t[125] = 245; t[126] = 250; t[127] = 249; t[128] = 251; t[129] = 252;\n t[130] = 8224; t[131] = 176; t[132] = 162; t[133] = 163; t[134] = 167;\n t[135] = 8226; t[136] = 182; t[137] = 223; t[138] = 174; t[139] = 169;\n t[140] = 8482; t[141] = 180; t[142] = 168; t[143] = 8800; t[144] = 198;\n t[145] = 216; t[146] = 8734; t[147] = 177; t[148] = 8804; t[149] = 8805;\n t[150] = 165; t[151] = 181; t[152] = 8706; t[153] = 8721; t[154] = 8719;\n t[156] = 8747; t[157] = 170; t[158] = 186; t[159] = 8486; t[160] = 230;\n t[161] = 248; t[162] = 191; t[163] = 161; t[164] = 172; t[165] = 8730;\n t[166] = 402; t[167] = 8776; t[168] = 8710; t[169] = 171; t[170] = 187;\n t[171] = 8230; t[210] = 218; t[223] = 711; t[224] = 321; t[225] = 322;\n t[227] = 353; t[229] = 382; t[234] = 253; t[252] = 263; t[253] = 268;\n t[254] = 269; t[258] = 258; t[260] = 260; t[261] = 261; t[265] = 280;\n t[266] = 281; t[268] = 283; t[269] = 313; t[275] = 323; t[276] = 324;\n t[278] = 328; t[284] = 345; t[285] = 346; t[286] = 347; t[292] = 367;\n t[295] = 377; t[296] = 378; t[298] = 380; t[305] = 963; t[306] = 964;\n t[307] = 966; t[308] = 8215; t[309] = 8252; t[310] = 8319; t[311] = 8359;\n t[312] = 8592; t[313] = 8593; t[337] = 9552; t[493] = 1039;\n t[494] = 1040; t[705] = 1524; t[706] = 8362; t[710] = 64288; t[711] = 64298;\n t[759] = 1617; t[761] = 1776; t[763] = 1778; t[775] = 1652; t[777] = 1764;\n t[778] = 1780; t[779] = 1781; t[780] = 1782; t[782] = 771; t[783] = 64726;\n t[786] = 8363; t[788] = 8532; t[790] = 768; t[791] = 769; t[792] = 768;\n t[795] = 803; t[797] = 64336; t[798] = 64337; t[799] = 64342;\n t[800] = 64343; t[801] = 64344; t[802] = 64345; t[803] = 64362;\n t[804] = 64363; t[805] = 64364; t[2424] = 7821; t[2425] = 7822;\n t[2426] = 7823; t[2427] = 7824; t[2428] = 7825; t[2429] = 7826;\n t[2430] = 7827; t[2433] = 7682; t[2678] = 8045; t[2679] = 8046;\n t[2830] = 1552; t[2838] = 686; t[2840] = 751; t[2842] = 753; t[2843] = 754;\n t[2844] = 755; t[2846] = 757; t[2856] = 767; t[2857] = 848; t[2858] = 849;\n t[2862] = 853; t[2863] = 854; t[2864] = 855; t[2865] = 861; t[2866] = 862;\n t[2906] = 7460; t[2908] = 7462; t[2909] = 7463; t[2910] = 7464;\n t[2912] = 7466; t[2913] = 7467; t[2914] = 7468; t[2916] = 7470;\n t[2917] = 7471; t[2918] = 7472; t[2920] = 7474; t[2921] = 7475;\n t[2922] = 7476; t[2924] = 7478; t[2925] = 7479; t[2926] = 7480;\n t[2928] = 7482; t[2929] = 7483; t[2930] = 7484; t[2932] = 7486;\n t[2933] = 7487; t[2934] = 7488; t[2936] = 7490; t[2937] = 7491;\n t[2938] = 7492; t[2940] = 7494; t[2941] = 7495; t[2942] = 7496;\n t[2944] = 7498; t[2946] = 7500; t[2948] = 7502; t[2950] = 7504;\n t[2951] = 7505; t[2952] = 7506; t[2954] = 7508; t[2955] = 7509;\n t[2956] = 7510; t[2958] = 7512; t[2959] = 7513; t[2960] = 7514;\n t[2962] = 7516; t[2963] = 7517; t[2964] = 7518; t[2966] = 7520;\n t[2967] = 7521; t[2968] = 7522; t[2970] = 7524; t[2971] = 7525;\n t[2972] = 7526; t[2974] = 7528; t[2975] = 7529; t[2976] = 7530;\n t[2978] = 1537; t[2979] = 1538; t[2980] = 1539; t[2982] = 1549;\n t[2983] = 1551; t[2984] = 1552; t[2986] = 1554; t[2987] = 1555;\n t[2988] = 1556; t[2990] = 1623; t[2991] = 1624; t[2995] = 1775;\n t[2999] = 1791; t[3002] = 64290; t[3003] = 64291; t[3004] = 64292;\n t[3006] = 64294; t[3007] = 64295; t[3008] = 64296; t[3011] = 1900;\n t[3014] = 8223; t[3015] = 8244; t[3017] = 7532; t[3018] = 7533;\n t[3019] = 7534; t[3075] = 7590; t[3076] = 7591; t[3079] = 7594;\n t[3080] = 7595; t[3083] = 7598; t[3084] = 7599; t[3087] = 7602;\n t[3088] = 7603; t[3091] = 7606; t[3092] = 7607; t[3095] = 7610;\n t[3096] = 7611; t[3099] = 7614; t[3100] = 7615; t[3103] = 7618;\n t[3104] = 7619; t[3107] = 8337; t[3108] = 8338; t[3116] = 1884;\n t[3119] = 1885; t[3120] = 1885; t[3123] = 1886; t[3124] = 1886;\n t[3127] = 1887; t[3128] = 1887; t[3131] = 1888; t[3132] = 1888;\n t[3135] = 1889; t[3136] = 1889; t[3139] = 1890; t[3140] = 1890;\n t[3143] = 1891; t[3144] = 1891; t[3147] = 1892; t[3148] = 1892;\n t[3153] = 580; t[3154] = 581; t[3157] = 584; t[3158] = 585; t[3161] = 588;\n t[3162] = 589; t[3165] = 891; t[3166] = 892; t[3169] = 1274; t[3170] = 1275;\n t[3173] = 1278; t[3174] = 1279; t[3181] = 7622; t[3182] = 7623;\n t[3282] = 11799; t[3316] = 578; t[3379] = 42785; t[3393] = 1159;\n t[3416] = 8377;\n});\n\n// The glyph map for ArialBlack differs slightly from the glyph map used for\n// other well-known standard fonts. Hence we use this (incomplete) CID to GID\n// mapping to adjust the glyph map for non-embedded ArialBlack fonts.\nvar getSupplementalGlyphMapForArialBlack =\n getLookupTableFactory(function (t) {\n t[227] = 322; t[264] = 261; t[291] = 346;\n});\n\nexport {\n getStdFontMap,\n getNonStdFontMap,\n getSerifFonts,\n getSymbolsFonts,\n getGlyphMapForStandardFonts,\n getSupplementalGlyphMapForArialBlack,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/standard_fonts.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n arrayByteLength, arraysToBytes, assert, createPromiseCapability, info,\n InvalidPDFException, isNodeJS, MessageHandler, MissingPDFException,\n PasswordException, setVerbosityLevel, UnexpectedResponseException,\n UnknownErrorException, UNSUPPORTED_FEATURES, warn, XRefParseException\n} from '../shared/util';\nimport { LocalPdfManager, NetworkPdfManager } from './pdf_manager';\nimport { Ref } from './primitives';\n\nvar WorkerTask = (function WorkerTaskClosure() {\n function WorkerTask(name) {\n this.name = name;\n this.terminated = false;\n this._capability = createPromiseCapability();\n }\n\n WorkerTask.prototype = {\n get finished() {\n return this._capability.promise;\n },\n\n finish() {\n this._capability.resolve();\n },\n\n terminate() {\n this.terminated = true;\n },\n\n ensureNotTerminated() {\n if (this.terminated) {\n throw new Error('Worker task was terminated');\n }\n },\n };\n\n return WorkerTask;\n})();\n\nif (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n/**\n * Interface that represents PDF data transport. If possible, it allows\n * progressively load entire or fragment of the PDF binary data.\n *\n * @interface\n */\nfunction IPDFStream() {} // eslint-disable-line no-inner-declarations\nIPDFStream.prototype = {\n /**\n * Gets a reader for the entire PDF data.\n * @returns {IPDFStreamReader}\n */\n getFullReader() {\n return null;\n },\n\n /**\n * Gets a reader for the range of the PDF data.\n * @param {number} begin - the start offset of the data.\n * @param {number} end - the end offset of the data.\n * @returns {IPDFStreamRangeReader}\n */\n getRangeReader(begin, end) {\n return null;\n },\n\n /**\n * Cancels all opened reader and closes all their opened requests.\n * @param {Object} reason - the reason for cancelling\n */\n cancelAllRequests(reason) {},\n};\n\n/**\n * Interface for a PDF binary data reader.\n *\n * @interface\n */\nfunction IPDFStreamReader() {} // eslint-disable-line no-inner-declarations\nIPDFStreamReader.prototype = {\n /**\n * Gets a promise that is resolved when the headers and other metadata of\n * the PDF data stream are available.\n * @returns {Promise}\n */\n get headersReady() {\n return null;\n },\n\n /**\n * Gets PDF binary data length. It is defined after the headersReady promise\n * is resolved.\n * @returns {number} The data length (or 0 if unknown).\n */\n get contentLength() {\n return 0;\n },\n\n /**\n * Gets ability of the stream to handle range requests. It is defined after\n * the headersReady promise is resolved. Rejected when the reader is cancelled\n * or an error occurs.\n * @returns {boolean}\n */\n get isRangeSupported() {\n return false;\n },\n\n /**\n * Gets ability of the stream to progressively load binary data. It is defined\n * after the headersReady promise is resolved.\n * @returns {boolean}\n */\n get isStreamingSupported() {\n return false;\n },\n\n /**\n * Requests a chunk of the binary data. The method returns the promise, which\n * is resolved into object with properties \"value\" and \"done\". If the done\n * is set to true, then the stream has reached its end, otherwise the value\n * contains binary data. Cancelled requests will be resolved with the done is\n * set to true.\n * @returns {Promise}\n */\n read() {},\n\n /**\n * Cancels all pending read requests and closes the stream.\n * @param {Object} reason\n */\n cancel(reason) {},\n\n /**\n * Sets or gets the progress callback. The callback can be useful when the\n * isStreamingSupported property of the object is defined as false.\n * The callback is called with one parameter: an object with the loaded and\n * total properties.\n */\n onProgress: null,\n};\n\n/**\n * Interface for a PDF binary data fragment reader.\n *\n * @interface\n */\nfunction IPDFStreamRangeReader() {} // eslint-disable-line no-inner-declarations\nIPDFStreamRangeReader.prototype = {\n /**\n * Gets ability of the stream to progressively load binary data.\n * @returns {boolean}\n */\n get isStreamingSupported() {\n return false;\n },\n\n /**\n * Requests a chunk of the binary data. The method returns the promise, which\n * is resolved into object with properties \"value\" and \"done\". If the done\n * is set to true, then the stream has reached its end, otherwise the value\n * contains binary data. Cancelled requests will be resolved with the done is\n * set to true.\n * @returns {Promise}\n */\n read() {},\n\n /**\n * Cancels all pending read requests and closes the stream.\n * @param {Object} reason\n */\n cancel(reason) {},\n\n /**\n * Sets or gets the progress callback. The callback can be useful when the\n * isStreamingSupported property of the object is defined as false.\n * The callback is called with one parameter: an object with the loaded\n * property.\n */\n onProgress: null,\n};\n}\n\n/** @implements {IPDFStream} */\nvar PDFWorkerStream = (function PDFWorkerStreamClosure() {\n function PDFWorkerStream(msgHandler) {\n this._msgHandler = msgHandler;\n this._contentLength = null;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n PDFWorkerStream.prototype = {\n getFullReader() {\n assert(!this._fullRequestReader);\n this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);\n return this._fullRequestReader;\n },\n\n getRangeReader(begin, end) {\n let reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);\n this._rangeRequestReaders.push(reader);\n return reader;\n },\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n let readers = this._rangeRequestReaders.slice(0);\n readers.forEach(function (reader) {\n reader.cancel(reason);\n });\n },\n };\n\n /** @implements {IPDFStreamReader} */\n function PDFWorkerStreamReader(msgHandler) {\n this._msgHandler = msgHandler;\n\n this._contentLength = null;\n this._isRangeSupported = false;\n this._isStreamingSupported = false;\n\n let readableStream = this._msgHandler.sendWithStream('GetReader');\n\n this._reader = readableStream.getReader();\n\n this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').\n then((data) => {\n this._isStreamingSupported = data.isStreamingSupported;\n this._isRangeSupported = data.isRangeSupported;\n this._contentLength = data.contentLength;\n });\n }\n PDFWorkerStreamReader.prototype = {\n get headersReady() {\n return this._headersReady;\n },\n\n get contentLength() {\n return this._contentLength;\n },\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n },\n\n get isRangeSupported() {\n return this._isRangeSupported;\n },\n\n read() {\n return this._reader.read().then(function({ value, done, }) {\n if (done) {\n return { value: undefined, done: true, };\n }\n // `value` is wrapped into Uint8Array, we need to\n // unwrap it to ArrayBuffer for further processing.\n return { value: value.buffer, done: false, };\n });\n },\n\n cancel(reason) {\n this._reader.cancel(reason);\n },\n };\n\n /** @implements {IPDFStreamRangeReader} */\n function PDFWorkerStreamRangeReader(begin, end, msgHandler) {\n this._msgHandler = msgHandler;\n this.onProgress = null;\n\n let readableStream = this._msgHandler.sendWithStream('GetRangeReader',\n { begin, end, });\n\n this._reader = readableStream.getReader();\n }\n PDFWorkerStreamRangeReader.prototype = {\n get isStreamingSupported() {\n return false;\n },\n\n read() {\n return this._reader.read().then(function({ value, done, }) {\n if (done) {\n return { value: undefined, done: true, };\n }\n return { value: value.buffer, done: false, };\n });\n },\n\n cancel(reason) {\n this._reader.cancel(reason);\n },\n };\n\n return PDFWorkerStream;\n})();\n\nvar WorkerMessageHandler = {\n setup(handler, port) {\n var testMessageProcessed = false;\n handler.on('test', function wphSetupTest(data) {\n if (testMessageProcessed) {\n return; // we already processed 'test' message once\n }\n testMessageProcessed = true;\n\n // check if Uint8Array can be sent to worker\n if (!(data instanceof Uint8Array)) {\n handler.send('test', 'main', false);\n return;\n }\n // making sure postMessage transfers are working\n var supportTransfers = data[0] === 255;\n handler.postMessageTransfers = supportTransfers;\n // check if the response property is supported by xhr\n var xhr = new XMLHttpRequest();\n var responseExists = 'response' in xhr;\n // check if the property is actually implemented\n try {\n xhr.responseType; // eslint-disable-line no-unused-expressions\n } catch (e) {\n responseExists = false;\n }\n if (!responseExists) {\n handler.send('test', false);\n return;\n }\n handler.send('test', {\n supportTypedArray: true,\n supportTransfers,\n });\n });\n\n handler.on('configure', function wphConfigure(data) {\n setVerbosityLevel(data.verbosity);\n });\n\n handler.on('GetDocRequest', function wphSetupDoc(data) {\n return WorkerMessageHandler.createDocumentHandler(data, port);\n });\n },\n createDocumentHandler(docParams, port) {\n // This context is actually holds references on pdfManager and handler,\n // until the latter is destroyed.\n var pdfManager;\n var terminated = false;\n var cancelXHRs = null;\n var WorkerTasks = [];\n\n var docId = docParams.docId;\n var docBaseUrl = docParams.docBaseUrl;\n var workerHandlerName = docParams.docId + '_worker';\n var handler = new MessageHandler(workerHandlerName, docId, port);\n\n // Ensure that postMessage transfers are correctly enabled/disabled,\n // to prevent \"DataCloneError\" in older versions of IE (see issue 6957).\n handler.postMessageTransfers = docParams.postMessageTransfers;\n\n function ensureNotTerminated() {\n if (terminated) {\n throw new Error('Worker was terminated');\n }\n }\n\n function startWorkerTask(task) {\n WorkerTasks.push(task);\n }\n\n function finishWorkerTask(task) {\n task.finish();\n var i = WorkerTasks.indexOf(task);\n WorkerTasks.splice(i, 1);\n }\n\n function loadDocument(recoveryMode) {\n var loadDocumentCapability = createPromiseCapability();\n\n var parseSuccess = function parseSuccess() {\n var numPagesPromise = pdfManager.ensureDoc('numPages');\n var fingerprintPromise = pdfManager.ensureDoc('fingerprint');\n var encryptedPromise = pdfManager.ensureXRef('encrypt');\n Promise.all([numPagesPromise, fingerprintPromise,\n encryptedPromise]).then(function onDocReady(results) {\n var doc = {\n numPages: results[0],\n fingerprint: results[1],\n encrypted: !!results[2],\n };\n loadDocumentCapability.resolve(doc);\n },\n parseFailure);\n };\n\n var parseFailure = function parseFailure(e) {\n loadDocumentCapability.reject(e);\n };\n\n pdfManager.ensureDoc('checkHeader', []).then(function() {\n pdfManager.ensureDoc('parseStartXRef', []).then(function() {\n pdfManager.ensureDoc('parse', [recoveryMode]).then(\n parseSuccess, parseFailure);\n }, parseFailure);\n }, parseFailure);\n\n return loadDocumentCapability.promise;\n }\n\n function getPdfManager(data, evaluatorOptions) {\n var pdfManagerCapability = createPromiseCapability();\n var pdfManager;\n\n var source = data.source;\n if (source.data) {\n try {\n pdfManager = new LocalPdfManager(docId, source.data, source.password,\n evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(pdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n return pdfManagerCapability.promise;\n }\n\n var pdfStream, cachedChunks = [];\n try {\n pdfStream = new PDFWorkerStream(handler);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n return pdfManagerCapability.promise;\n }\n\n var fullRequest = pdfStream.getFullReader();\n fullRequest.headersReady.then(function () {\n if (!fullRequest.isRangeSupported) {\n return;\n }\n\n // We don't need auto-fetch when streaming is enabled.\n var disableAutoFetch = source.disableAutoFetch ||\n fullRequest.isStreamingSupported;\n pdfManager = new NetworkPdfManager(docId, pdfStream, {\n msgHandler: handler,\n url: source.url,\n password: source.password,\n length: fullRequest.contentLength,\n disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n }, evaluatorOptions, docBaseUrl);\n // There may be a chance that `pdfManager` is not initialized\n // for first few runs of `readchunk` block of code. Be sure\n // to send all cached chunks, if any, to chunked_stream via\n // pdf_manager.\n for (let i = 0; i < cachedChunks.length; i++) {\n pdfManager.sendProgressiveData(cachedChunks[i]);\n }\n\n cachedChunks = [];\n pdfManagerCapability.resolve(pdfManager);\n cancelXHRs = null;\n }).catch(function (reason) {\n pdfManagerCapability.reject(reason);\n cancelXHRs = null;\n });\n\n var loaded = 0;\n var flushChunks = function () {\n var pdfFile = arraysToBytes(cachedChunks);\n if (source.length && pdfFile.length !== source.length) {\n warn('reported HTTP length is different from actual');\n }\n // the data is array, instantiating directly from it\n try {\n pdfManager = new LocalPdfManager(docId, pdfFile, source.password,\n evaluatorOptions, docBaseUrl);\n pdfManagerCapability.resolve(pdfManager);\n } catch (ex) {\n pdfManagerCapability.reject(ex);\n }\n cachedChunks = [];\n };\n var readPromise = new Promise(function (resolve, reject) {\n var readChunk = function (chunk) {\n try {\n ensureNotTerminated();\n if (chunk.done) {\n if (!pdfManager) {\n flushChunks();\n }\n cancelXHRs = null;\n return;\n }\n\n var data = chunk.value;\n loaded += arrayByteLength(data);\n if (!fullRequest.isStreamingSupported) {\n handler.send('DocProgress', {\n loaded,\n total: Math.max(loaded, fullRequest.contentLength || 0),\n });\n }\n\n if (pdfManager) {\n pdfManager.sendProgressiveData(data);\n } else {\n cachedChunks.push(data);\n }\n\n fullRequest.read().then(readChunk, reject);\n } catch (e) {\n reject(e);\n }\n };\n fullRequest.read().then(readChunk, reject);\n });\n readPromise.catch(function (e) {\n pdfManagerCapability.reject(e);\n cancelXHRs = null;\n });\n\n cancelXHRs = function () {\n pdfStream.cancelAllRequests('abort');\n };\n\n return pdfManagerCapability.promise;\n }\n\n function setupDoc(data) {\n function onSuccess(doc) {\n ensureNotTerminated();\n handler.send('GetDoc', { pdfInfo: doc, });\n }\n\n function onFailure(e) {\n ensureNotTerminated();\n\n if (e instanceof PasswordException) {\n var task = new WorkerTask('PasswordException: response ' + e.code);\n startWorkerTask(task);\n\n handler.sendWithPromise('PasswordRequest', e).then(function (data) {\n finishWorkerTask(task);\n pdfManager.updatePassword(data.password);\n pdfManagerReady();\n }).catch(function (ex) {\n finishWorkerTask(task);\n handler.send('PasswordException', ex);\n }.bind(null, e));\n } else if (e instanceof InvalidPDFException) {\n handler.send('InvalidPDF', e);\n } else if (e instanceof MissingPDFException) {\n handler.send('MissingPDF', e);\n } else if (e instanceof UnexpectedResponseException) {\n handler.send('UnexpectedResponse', e);\n } else {\n handler.send('UnknownError',\n new UnknownErrorException(e.message, e.toString()));\n }\n }\n\n function pdfManagerReady() {\n ensureNotTerminated();\n\n loadDocument(false).then(onSuccess, function loadFailure(ex) {\n ensureNotTerminated();\n\n // Try again with recoveryMode == true\n if (!(ex instanceof XRefParseException)) {\n onFailure(ex);\n return;\n }\n pdfManager.requestLoadedStream();\n pdfManager.onLoadedStream().then(function() {\n ensureNotTerminated();\n\n loadDocument(true).then(onSuccess, onFailure);\n });\n }, onFailure);\n }\n\n ensureNotTerminated();\n\n var evaluatorOptions = {\n forceDataSchema: data.disableCreateObjectURL,\n maxImageSize: data.maxImageSize === undefined ? -1 : data.maxImageSize,\n disableFontFace: data.disableFontFace,\n nativeImageDecoderSupport: data.nativeImageDecoderSupport,\n ignoreErrors: data.ignoreErrors,\n };\n\n getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {\n if (terminated) {\n // We were in a process of setting up the manager, but it got\n // terminated in the middle.\n newPdfManager.terminate();\n throw new Error('Worker was terminated');\n }\n\n pdfManager = newPdfManager;\n handler.send('PDFManagerReady', null);\n pdfManager.onLoadedStream().then(function(stream) {\n handler.send('DataLoaded', { length: stream.bytes.byteLength, });\n });\n }).then(pdfManagerReady, onFailure);\n }\n\n handler.on('GetPage', function wphSetupGetPage(data) {\n return pdfManager.getPage(data.pageIndex).then(function(page) {\n var rotatePromise = pdfManager.ensure(page, 'rotate');\n var refPromise = pdfManager.ensure(page, 'ref');\n var userUnitPromise = pdfManager.ensure(page, 'userUnit');\n var viewPromise = pdfManager.ensure(page, 'view');\n\n return Promise.all([\n rotatePromise, refPromise, userUnitPromise, viewPromise\n ]).then(function(results) {\n return {\n rotate: results[0],\n ref: results[1],\n userUnit: results[2],\n view: results[3],\n };\n });\n });\n });\n\n handler.on('GetPageIndex', function wphSetupGetPageIndex(data) {\n var ref = new Ref(data.ref.num, data.ref.gen);\n var catalog = pdfManager.pdfDocument.catalog;\n return catalog.getPageIndex(ref);\n });\n\n handler.on('GetDestinations',\n function wphSetupGetDestinations(data) {\n return pdfManager.ensureCatalog('destinations');\n }\n );\n\n handler.on('GetDestination',\n function wphSetupGetDestination(data) {\n return pdfManager.ensureCatalog('getDestination', [data.id]);\n }\n );\n\n handler.on('GetPageLabels',\n function wphSetupGetPageLabels(data) {\n return pdfManager.ensureCatalog('pageLabels');\n }\n );\n\n handler.on('GetPageMode', function wphSetupGetPageMode(data) {\n return pdfManager.ensureCatalog('pageMode');\n });\n\n handler.on('GetAttachments',\n function wphSetupGetAttachments(data) {\n return pdfManager.ensureCatalog('attachments');\n }\n );\n\n handler.on('GetJavaScript',\n function wphSetupGetJavaScript(data) {\n return pdfManager.ensureCatalog('javaScript');\n }\n );\n\n handler.on('GetOutline',\n function wphSetupGetOutline(data) {\n return pdfManager.ensureCatalog('documentOutline');\n }\n );\n\n handler.on('GetMetadata',\n function wphSetupGetMetadata(data) {\n return Promise.all([pdfManager.ensureDoc('documentInfo'),\n pdfManager.ensureCatalog('metadata')]);\n }\n );\n\n handler.on('GetData', function wphSetupGetData(data) {\n pdfManager.requestLoadedStream();\n return pdfManager.onLoadedStream().then(function(stream) {\n return stream.bytes;\n });\n });\n\n handler.on('GetStats',\n function wphSetupGetStats(data) {\n return pdfManager.pdfDocument.xref.stats;\n }\n );\n\n handler.on('GetAnnotations', function wphSetupGetAnnotations(data) {\n return pdfManager.getPage(data.pageIndex).then(function(page) {\n return pdfManager.ensure(page, 'getAnnotationsData', [data.intent]);\n });\n });\n\n handler.on('RenderPageRequest', function wphSetupRenderPage(data) {\n var pageIndex = data.pageIndex;\n pdfManager.getPage(pageIndex).then(function(page) {\n var task = new WorkerTask('RenderPageRequest: page ' + pageIndex);\n startWorkerTask(task);\n\n var pageNum = pageIndex + 1;\n var start = Date.now();\n // Pre compile the pdf page and fetch the fonts/images.\n page.getOperatorList({\n handler,\n task,\n intent: data.intent,\n renderInteractiveForms: data.renderInteractiveForms,\n }).then(function(operatorList) {\n finishWorkerTask(task);\n\n info('page=' + pageNum + ' - getOperatorList: time=' +\n (Date.now() - start) + 'ms, len=' + operatorList.totalLength);\n }, function(e) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n\n // For compatibility with older behavior, generating unknown\n // unsupported feature notification on errors.\n handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.unknown, });\n\n var minimumStackMessage =\n 'worker.js: while trying to getPage() and getOperatorList()';\n\n var wrappedException;\n\n // Turn the error into an obj that can be serialized\n if (typeof e === 'string') {\n wrappedException = {\n message: e,\n stack: minimumStackMessage,\n };\n } else if (typeof e === 'object') {\n wrappedException = {\n message: e.message || e.toString(),\n stack: e.stack || minimumStackMessage,\n };\n } else {\n wrappedException = {\n message: 'Unknown exception type: ' + (typeof e),\n stack: minimumStackMessage,\n };\n }\n\n handler.send('PageError', {\n pageNum,\n error: wrappedException,\n intent: data.intent,\n });\n });\n });\n }, this);\n\n handler.on('GetTextContent', function wphExtractText(data, sink) {\n var pageIndex = data.pageIndex;\n sink.onPull = function (desiredSize) { };\n sink.onCancel = function (reason) { };\n\n pdfManager.getPage(pageIndex).then(function(page) {\n var task = new WorkerTask('GetTextContent: page ' + pageIndex);\n startWorkerTask(task);\n\n var pageNum = pageIndex + 1;\n var start = Date.now();\n page.extractTextContent({\n handler,\n task,\n sink,\n normalizeWhitespace: data.normalizeWhitespace,\n combineTextItems: data.combineTextItems,\n }).then(function() {\n finishWorkerTask(task);\n\n info('text indexing: page=' + pageNum + ' - time=' +\n (Date.now() - start) + 'ms');\n sink.close();\n }, function (reason) {\n finishWorkerTask(task);\n if (task.terminated) {\n return; // ignoring errors from the terminated thread\n }\n sink.error(reason);\n throw reason;\n });\n });\n });\n\n handler.on('Cleanup', function wphCleanup(data) {\n return pdfManager.cleanup();\n });\n\n handler.on('Terminate', function wphTerminate(data) {\n terminated = true;\n if (pdfManager) {\n pdfManager.terminate();\n pdfManager = null;\n }\n if (cancelXHRs) {\n cancelXHRs();\n }\n\n var waitOn = [];\n WorkerTasks.forEach(function (task) {\n waitOn.push(task.finished);\n task.terminate();\n });\n\n return Promise.all(waitOn).then(function () {\n // Notice that even if we destroying handler, resolved response promise\n // must be sent back.\n handler.destroy();\n handler = null;\n });\n });\n\n handler.on('Ready', function wphReady(data) {\n setupDoc(docParams);\n docParams = null; // we don't need docParams anymore -- saving memory.\n });\n return workerHandlerName;\n },\n initializeFromPort(port) {\n var handler = new MessageHandler('worker', 'main', port);\n WorkerMessageHandler.setup(handler, port);\n handler.send('ready', null);\n },\n};\n\nfunction isMessagePort(maybePort) {\n return typeof maybePort.postMessage === 'function' &&\n ('onmessage' in maybePort);\n}\n\n// Worker thread (and not node.js)?\nif (typeof window === 'undefined' && !isNodeJS() &&\n typeof self !== 'undefined' && isMessagePort(self)) {\n WorkerMessageHandler.initializeFromPort(self);\n}\n\nexport {\n WorkerTask,\n WorkerMessageHandler,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/worker.js","/*\n * To the extent possible under law, the authors have dedicated all copyright\n * and related and neighboring rights to this software to the public\n * domain worldwide. This software is distributed without any warranty.\n *\n * You should have received a copy of the CC0 Public Domain Dedication along\n * with this software. If not, see https://creativecommons.org/publicdomain/zero/1.0/.\n */\n\n(function(e, a) { for(var i in a) e[i] = a[i]; }(exports, /******/ (function(modules) { // webpackBootstrap\n/******/ // The module cache\n/******/ var installedModules = {};\n/******/\n/******/ // The require function\n/******/ function __w_pdfjs_require__(moduleId) {\n/******/\n/******/ // Check if module is in cache\n/******/ if(installedModules[moduleId])\n/******/ return installedModules[moduleId].exports;\n/******/\n/******/ // Create a new module (and put it into the cache)\n/******/ var module = installedModules[moduleId] = {\n/******/ i: moduleId,\n/******/ l: false,\n/******/ exports: {}\n/******/ };\n/******/\n/******/ // Execute the module function\n/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);\n/******/\n/******/ // Flag the module as loaded\n/******/ module.l = true;\n/******/\n/******/ // Return the exports of the module\n/******/ return module.exports;\n/******/ }\n/******/\n/******/\n/******/ // expose the modules object (__webpack_modules__)\n/******/ __w_pdfjs_require__.m = modules;\n/******/\n/******/ // expose the module cache\n/******/ __w_pdfjs_require__.c = installedModules;\n/******/\n/******/ // identity function for calling harmony imports with the correct context\n/******/ __w_pdfjs_require__.i = function(value) { return value; };\n/******/\n/******/ // define getter function for harmony exports\n/******/ __w_pdfjs_require__.d = function(exports, name, getter) {\n/******/ if(!__w_pdfjs_require__.o(exports, name)) {\n/******/ Object.defineProperty(exports, name, {\n/******/ configurable: false,\n/******/ enumerable: true,\n/******/ get: getter\n/******/ });\n/******/ }\n/******/ };\n/******/\n/******/ // getDefaultExport function for compatibility with non-harmony modules\n/******/ __w_pdfjs_require__.n = function(module) {\n/******/ var getter = module && module.__esModule ?\n/******/ function getDefault() { return module['default']; } :\n/******/ function getModuleExports() { return module; };\n/******/ __w_pdfjs_require__.d(getter, 'a', getter);\n/******/ return getter;\n/******/ };\n/******/\n/******/ // Object.prototype.hasOwnProperty.call\n/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ // __webpack_public_path__\n/******/ __w_pdfjs_require__.p = \"\";\n/******/\n/******/ // Load entry module and return exports\n/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nfunction IsPropertyKey(argument) {\n return typeof argument === 'string' || (typeof argument === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n}\n\nexports.typeIsObject = function (x) {\n return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x !== null || typeof x === 'function';\n};\n\nexports.createDataProperty = function (o, p, v) {\n assert(exports.typeIsObject(o));\n Object.defineProperty(o, p, { value: v, writable: true, enumerable: true, configurable: true });\n};\n\nexports.createArrayFromList = function (elements) {\n // We use arrays to represent lists, so this is basically a no-op.\n // Do a slice though just in case we happen to depend on the unique-ness.\n return elements.slice();\n};\n\nexports.ArrayBufferCopy = function (dest, destOffset, src, srcOffset, n) {\n new Uint8Array(dest).set(new Uint8Array(src, srcOffset, n), destOffset);\n};\n\nexports.CreateIterResultObject = function (value, done) {\n assert(typeof done === 'boolean');\n var obj = {};\n Object.defineProperty(obj, 'value', { value: value, enumerable: true, writable: true, configurable: true });\n Object.defineProperty(obj, 'done', { value: done, enumerable: true, writable: true, configurable: true });\n return obj;\n};\n\nexports.IsFiniteNonNegativeNumber = function (v) {\n if (Number.isNaN(v)) {\n return false;\n }\n if (v === Infinity) {\n return false;\n }\n if (v < 0) {\n return false;\n }\n\n return true;\n};\n\nfunction Call(F, V, args) {\n if (typeof F !== 'function') {\n throw new TypeError('Argument is not a function');\n }\n\n return Function.prototype.apply.call(F, V, args);\n}\n\nexports.InvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n\n var method = O[P];\n if (method === undefined) {\n return undefined;\n }\n\n return Call(method, O, args);\n};\n\nexports.PromiseInvokeOrNoop = function (O, P, args) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n try {\n return Promise.resolve(exports.InvokeOrNoop(O, P, args));\n } catch (returnValueE) {\n return Promise.reject(returnValueE);\n }\n};\n\nexports.PromiseInvokeOrPerformFallback = function (O, P, args, F, argsF) {\n assert(O !== undefined);\n assert(IsPropertyKey(P));\n assert(Array.isArray(args));\n assert(Array.isArray(argsF));\n\n var method = void 0;\n try {\n method = O[P];\n } catch (methodE) {\n return Promise.reject(methodE);\n }\n\n if (method === undefined) {\n return F.apply(null, argsF);\n }\n\n try {\n return Promise.resolve(Call(method, O, args));\n } catch (e) {\n return Promise.reject(e);\n }\n};\n\n// Not implemented correctly\nexports.TransferArrayBuffer = function (O) {\n return O.slice();\n};\n\nexports.ValidateAndNormalizeHighWaterMark = function (highWaterMark) {\n highWaterMark = Number(highWaterMark);\n if (Number.isNaN(highWaterMark) || highWaterMark < 0) {\n throw new RangeError('highWaterMark property of a queuing strategy must be non-negative and non-NaN');\n }\n\n return highWaterMark;\n};\n\nexports.ValidateAndNormalizeQueuingStrategy = function (size, highWaterMark) {\n if (size !== undefined && typeof size !== 'function') {\n throw new TypeError('size property of a queuing strategy must be a function');\n }\n\n highWaterMark = exports.ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n return { size: size, highWaterMark: highWaterMark };\n};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nfunction rethrowAssertionErrorRejection(e) {\n // Used throughout the reference implementation, as `.catch(rethrowAssertionErrorRejection)`, to ensure any errors\n // get shown. There are places in the spec where we do promise transformations and purposefully ignore or don't\n // expect any errors, but assertion errors are always problematic.\n if (e && e.constructor === AssertionError) {\n setTimeout(function () {\n throw e;\n }, 0);\n }\n};\n\nfunction AssertionError(message) {\n this.name = 'AssertionError';\n this.message = message || '';\n this.stack = new Error().stack;\n}\nAssertionError.prototype = Object.create(Error.prototype);\nAssertionError.prototype.constructor = AssertionError;\n\nfunction assert(value, message) {\n if (!value) {\n throw new AssertionError(message);\n }\n}\n\nmodule.exports = {\n rethrowAssertionErrorRejection: rethrowAssertionErrorRejection,\n AssertionError: AssertionError,\n assert: assert\n};\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n typeIsObject = _require.typeIsObject;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert,\n rethrowAssertionErrorRejection = _require2.rethrowAssertionErrorRejection;\n\nvar _require3 = __w_pdfjs_require__(3),\n DequeueValue = _require3.DequeueValue,\n EnqueueValueWithSize = _require3.EnqueueValueWithSize,\n PeekQueueValue = _require3.PeekQueueValue,\n ResetQueue = _require3.ResetQueue;\n\nvar WritableStream = function () {\n function WritableStream() {\n var underlyingSink = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n _ref$highWaterMark = _ref.highWaterMark,\n highWaterMark = _ref$highWaterMark === undefined ? 1 : _ref$highWaterMark;\n\n _classCallCheck(this, WritableStream);\n\n this._state = 'writable';\n\n // The error that will be reported by new method calls once the state becomes errored. Only set when [[state]] is\n // 'erroring' or 'errored'. May be set to an undefined value.\n this._storedError = undefined;\n\n this._writer = undefined;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._writableStreamController = undefined;\n\n // This queue is placed here instead of the writer class in order to allow for passing a writer to the next data\n // producer without waiting for the queued writes to finish.\n this._writeRequests = [];\n\n // Write requests are removed from _writeRequests when write() is called on the underlying sink. This prevents\n // them from being erroneously rejected on error. If a write() call is in-flight, the request is stored here.\n this._inFlightWriteRequest = undefined;\n\n // The promise that was returned from writer.close(). Stored here because it may be fulfilled after the writer\n // has been detached.\n this._closeRequest = undefined;\n\n // Close request is removed from _closeRequest when close() is called on the underlying sink. This prevents it\n // from being erroneously rejected on error. If a close() call is in-flight, the request is stored here.\n this._inFlightCloseRequest = undefined;\n\n // The promise that was returned from writer.abort(). This may also be fulfilled after the writer has detached.\n this._pendingAbortRequest = undefined;\n\n // The backpressure signal set by the controller.\n this._backpressure = false;\n\n var type = underlyingSink.type;\n\n if (type !== undefined) {\n throw new RangeError('Invalid type is specified');\n }\n\n this._writableStreamController = new WritableStreamDefaultController(this, underlyingSink, size, highWaterMark);\n this._writableStreamController.__startSteps();\n }\n\n _createClass(WritableStream, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('abort'));\n }\n\n if (IsWritableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot abort a stream that already has a writer'));\n }\n\n return WritableStreamAbort(this, reason);\n }\n }, {\n key: 'getWriter',\n value: function getWriter() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('getWriter');\n }\n\n return AcquireWritableStreamDefaultWriter(this);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsWritableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsWritableStreamLocked(this);\n }\n }]);\n\n return WritableStream;\n}();\n\nmodule.exports = {\n AcquireWritableStreamDefaultWriter: AcquireWritableStreamDefaultWriter,\n IsWritableStream: IsWritableStream,\n IsWritableStreamLocked: IsWritableStreamLocked,\n WritableStream: WritableStream,\n WritableStreamAbort: WritableStreamAbort,\n WritableStreamDefaultControllerError: WritableStreamDefaultControllerError,\n WritableStreamDefaultWriterCloseWithErrorPropagation: WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease: WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite: WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight: WritableStreamCloseQueuedOrInFlight\n};\n\n// Abstract operations for the WritableStream.\n\nfunction AcquireWritableStreamDefaultWriter(stream) {\n return new WritableStreamDefaultWriter(stream);\n}\n\nfunction IsWritableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_writableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsWritableStreamLocked(stream) {\n assert(IsWritableStream(stream) === true, 'IsWritableStreamLocked should only be used on known writable streams');\n\n if (stream._writer === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamAbort(stream, reason) {\n var state = stream._state;\n if (state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n var error = new TypeError('Requested to abort');\n if (stream._pendingAbortRequest !== undefined) {\n return Promise.reject(error);\n }\n\n assert(state === 'writable' || state === 'erroring', 'state must be writable or erroring');\n\n var wasAlreadyErroring = false;\n if (state === 'erroring') {\n wasAlreadyErroring = true;\n // reason will not be used, so don't keep a reference to it.\n reason = undefined;\n }\n\n var promise = new Promise(function (resolve, reject) {\n stream._pendingAbortRequest = {\n _resolve: resolve,\n _reject: reject,\n _reason: reason,\n _wasAlreadyErroring: wasAlreadyErroring\n };\n });\n\n if (wasAlreadyErroring === false) {\n WritableStreamStartErroring(stream, error);\n }\n\n return promise;\n}\n\n// WritableStream API exposed for controllers.\n\nfunction WritableStreamAddWriteRequest(stream) {\n assert(IsWritableStreamLocked(stream) === true);\n assert(stream._state === 'writable');\n\n var promise = new Promise(function (resolve, reject) {\n var writeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._writeRequests.push(writeRequest);\n });\n\n return promise;\n}\n\nfunction WritableStreamDealWithRejection(stream, error) {\n var state = stream._state;\n\n if (state === 'writable') {\n WritableStreamStartErroring(stream, error);\n return;\n }\n\n assert(state === 'erroring');\n WritableStreamFinishErroring(stream);\n}\n\nfunction WritableStreamStartErroring(stream, reason) {\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n assert(stream._state === 'writable', 'state must be writable');\n\n var controller = stream._writableStreamController;\n assert(controller !== undefined, 'controller must not be undefined');\n\n stream._state = 'erroring';\n stream._storedError = reason;\n var writer = stream._writer;\n if (writer !== undefined) {\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, reason);\n }\n\n if (WritableStreamHasOperationMarkedInFlight(stream) === false && controller._started === true) {\n WritableStreamFinishErroring(stream);\n }\n}\n\nfunction WritableStreamFinishErroring(stream) {\n assert(stream._state === 'erroring', 'stream._state === erroring');\n assert(WritableStreamHasOperationMarkedInFlight(stream) === false, 'WritableStreamHasOperationMarkedInFlight(stream) === false');\n stream._state = 'errored';\n stream._writableStreamController.__errorSteps();\n\n var storedError = stream._storedError;\n for (var i = 0; i < stream._writeRequests.length; i++) {\n var writeRequest = stream._writeRequests[i];\n writeRequest._reject(storedError);\n }\n stream._writeRequests = [];\n\n if (stream._pendingAbortRequest === undefined) {\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var abortRequest = stream._pendingAbortRequest;\n stream._pendingAbortRequest = undefined;\n\n if (abortRequest._wasAlreadyErroring === true) {\n abortRequest._reject(storedError);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n return;\n }\n\n var promise = stream._writableStreamController.__abortSteps(abortRequest._reason);\n promise.then(function () {\n abortRequest._resolve();\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n }, function (reason) {\n abortRequest._reject(reason);\n WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream);\n });\n}\n\nfunction WritableStreamFinishInFlightWrite(stream) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._resolve(undefined);\n stream._inFlightWriteRequest = undefined;\n}\n\nfunction WritableStreamFinishInFlightWriteWithError(stream, error) {\n assert(stream._inFlightWriteRequest !== undefined);\n stream._inFlightWriteRequest._reject(error);\n stream._inFlightWriteRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n WritableStreamDealWithRejection(stream, error);\n}\n\nfunction WritableStreamFinishInFlightClose(stream) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._resolve(undefined);\n stream._inFlightCloseRequest = undefined;\n\n var state = stream._state;\n\n assert(state === 'writable' || state === 'erroring');\n\n if (state === 'erroring') {\n // The error was too late to do anything, so it is ignored.\n stream._storedError = undefined;\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._resolve();\n stream._pendingAbortRequest = undefined;\n }\n }\n\n stream._state = 'closed';\n\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseResolve(writer);\n }\n\n assert(stream._pendingAbortRequest === undefined, 'stream._pendingAbortRequest === undefined');\n assert(stream._storedError === undefined, 'stream._storedError === undefined');\n}\n\nfunction WritableStreamFinishInFlightCloseWithError(stream, error) {\n assert(stream._inFlightCloseRequest !== undefined);\n stream._inFlightCloseRequest._reject(error);\n stream._inFlightCloseRequest = undefined;\n\n assert(stream._state === 'writable' || stream._state === 'erroring');\n\n // Never execute sink abort() after sink close().\n if (stream._pendingAbortRequest !== undefined) {\n stream._pendingAbortRequest._reject(error);\n stream._pendingAbortRequest = undefined;\n }\n WritableStreamDealWithRejection(stream, error);\n}\n\n// TODO(ricea): Fix alphabetical order.\nfunction WritableStreamCloseQueuedOrInFlight(stream) {\n if (stream._closeRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamHasOperationMarkedInFlight(stream) {\n if (stream._inFlightWriteRequest === undefined && stream._inFlightCloseRequest === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamMarkCloseRequestInFlight(stream) {\n assert(stream._inFlightCloseRequest === undefined);\n assert(stream._closeRequest !== undefined);\n stream._inFlightCloseRequest = stream._closeRequest;\n stream._closeRequest = undefined;\n}\n\nfunction WritableStreamMarkFirstWriteRequestInFlight(stream) {\n assert(stream._inFlightWriteRequest === undefined, 'there must be no pending write request');\n assert(stream._writeRequests.length !== 0, 'writeRequests must not be empty');\n stream._inFlightWriteRequest = stream._writeRequests.shift();\n}\n\nfunction WritableStreamRejectCloseAndClosedPromiseIfNeeded(stream) {\n assert(stream._state === 'errored', '_stream_.[[state]] is `\"errored\"`');\n if (stream._closeRequest !== undefined) {\n assert(stream._inFlightCloseRequest === undefined);\n\n stream._closeRequest._reject(stream._storedError);\n stream._closeRequest = undefined;\n }\n var writer = stream._writer;\n if (writer !== undefined) {\n defaultWriterClosedPromiseReject(writer, stream._storedError);\n writer._closedPromise.catch(function () {});\n }\n}\n\nfunction WritableStreamUpdateBackpressure(stream, backpressure) {\n assert(stream._state === 'writable');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var writer = stream._writer;\n if (writer !== undefined && backpressure !== stream._backpressure) {\n if (backpressure === true) {\n defaultWriterReadyPromiseReset(writer);\n } else {\n assert(backpressure === false);\n\n defaultWriterReadyPromiseResolve(writer);\n }\n }\n\n stream._backpressure = backpressure;\n}\n\nvar WritableStreamDefaultWriter = function () {\n function WritableStreamDefaultWriter(stream) {\n _classCallCheck(this, WritableStreamDefaultWriter);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultWriter can only be constructed with a WritableStream instance');\n }\n if (IsWritableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive writing by another writer');\n }\n\n this._ownerWritableStream = stream;\n stream._writer = this;\n\n var state = stream._state;\n\n if (state === 'writable') {\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._backpressure === true) {\n defaultWriterReadyPromiseInitialize(this);\n } else {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n }\n\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'erroring') {\n defaultWriterReadyPromiseInitializeAsRejected(this, stream._storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitialize(this);\n } else if (state === 'closed') {\n defaultWriterReadyPromiseInitializeAsResolved(this);\n defaultWriterClosedPromiseInitializeAsResolved(this);\n } else {\n assert(state === 'errored', 'state must be errored');\n\n var storedError = stream._storedError;\n defaultWriterReadyPromiseInitializeAsRejected(this, storedError);\n this._readyPromise.catch(function () {});\n defaultWriterClosedPromiseInitializeAsRejected(this, storedError);\n this._closedPromise.catch(function () {});\n }\n }\n\n _createClass(WritableStreamDefaultWriter, [{\n key: 'abort',\n value: function abort(reason) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('abort'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('abort'));\n }\n\n return WritableStreamDefaultWriterAbort(this, reason);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('close'));\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return Promise.reject(defaultWriterLockException('close'));\n }\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === true) {\n return Promise.reject(new TypeError('cannot close an already-closing stream'));\n }\n\n return WritableStreamDefaultWriterClose(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('releaseLock');\n }\n\n var stream = this._ownerWritableStream;\n\n if (stream === undefined) {\n return;\n }\n\n assert(stream._writer !== undefined);\n\n WritableStreamDefaultWriterRelease(this);\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('write'));\n }\n\n if (this._ownerWritableStream === undefined) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n return WritableStreamDefaultWriterWrite(this, chunk);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n throw defaultWriterBrandCheckException('desiredSize');\n }\n\n if (this._ownerWritableStream === undefined) {\n throw defaultWriterLockException('desiredSize');\n }\n\n return WritableStreamDefaultWriterGetDesiredSize(this);\n }\n }, {\n key: 'ready',\n get: function get() {\n if (IsWritableStreamDefaultWriter(this) === false) {\n return Promise.reject(defaultWriterBrandCheckException('ready'));\n }\n\n return this._readyPromise;\n }\n }]);\n\n return WritableStreamDefaultWriter;\n}();\n\n// Abstract operations for the WritableStreamDefaultWriter.\n\nfunction IsWritableStreamDefaultWriter(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_ownerWritableStream')) {\n return false;\n }\n\n return true;\n}\n\n// A client of WritableStreamDefaultWriter may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultWriterAbort(writer, reason) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n return WritableStreamAbort(stream, reason);\n}\n\nfunction WritableStreamDefaultWriterClose(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return Promise.reject(new TypeError('The stream (in ' + state + ' state) is not in the writable state and cannot be closed'));\n }\n\n assert(state === 'writable' || state === 'erroring');\n assert(WritableStreamCloseQueuedOrInFlight(stream) === false);\n\n var promise = new Promise(function (resolve, reject) {\n var closeRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._closeRequest = closeRequest;\n });\n\n if (stream._backpressure === true && state === 'writable') {\n defaultWriterReadyPromiseResolve(writer);\n }\n\n WritableStreamDefaultControllerClose(stream._writableStreamController);\n\n return promise;\n}\n\nfunction WritableStreamDefaultWriterCloseWithErrorPropagation(writer) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var state = stream._state;\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.resolve();\n }\n\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable' || state === 'erroring');\n\n return WritableStreamDefaultWriterClose(writer);\n}\n\nfunction WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, error) {\n if (writer._closedPromiseState === 'pending') {\n defaultWriterClosedPromiseReject(writer, error);\n } else {\n defaultWriterClosedPromiseResetToRejected(writer, error);\n }\n writer._closedPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, error) {\n if (writer._readyPromiseState === 'pending') {\n defaultWriterReadyPromiseReject(writer, error);\n } else {\n defaultWriterReadyPromiseResetToRejected(writer, error);\n }\n writer._readyPromise.catch(function () {});\n}\n\nfunction WritableStreamDefaultWriterGetDesiredSize(writer) {\n var stream = writer._ownerWritableStream;\n var state = stream._state;\n\n if (state === 'errored' || state === 'erroring') {\n return null;\n }\n\n if (state === 'closed') {\n return 0;\n }\n\n return WritableStreamDefaultControllerGetDesiredSize(stream._writableStreamController);\n}\n\nfunction WritableStreamDefaultWriterRelease(writer) {\n var stream = writer._ownerWritableStream;\n assert(stream !== undefined);\n assert(stream._writer === writer);\n\n var releasedError = new TypeError('Writer was released and can no longer be used to monitor the stream\\'s closedness');\n\n WritableStreamDefaultWriterEnsureReadyPromiseRejected(writer, releasedError);\n\n // The state transitions to \"errored\" before the sink abort() method runs, but the writer.closed promise is not\n // rejected until afterwards. This means that simply testing state will not work.\n WritableStreamDefaultWriterEnsureClosedPromiseRejected(writer, releasedError);\n\n stream._writer = undefined;\n writer._ownerWritableStream = undefined;\n}\n\nfunction WritableStreamDefaultWriterWrite(writer, chunk) {\n var stream = writer._ownerWritableStream;\n\n assert(stream !== undefined);\n\n var controller = stream._writableStreamController;\n\n var chunkSize = WritableStreamDefaultControllerGetChunkSize(controller, chunk);\n\n if (stream !== writer._ownerWritableStream) {\n return Promise.reject(defaultWriterLockException('write to'));\n }\n\n var state = stream._state;\n if (state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n if (WritableStreamCloseQueuedOrInFlight(stream) === true || state === 'closed') {\n return Promise.reject(new TypeError('The stream is closing or closed and cannot be written to'));\n }\n if (state === 'erroring') {\n return Promise.reject(stream._storedError);\n }\n\n assert(state === 'writable');\n\n var promise = WritableStreamAddWriteRequest(stream);\n\n WritableStreamDefaultControllerWrite(controller, chunk, chunkSize);\n\n return promise;\n}\n\nvar WritableStreamDefaultController = function () {\n function WritableStreamDefaultController(stream, underlyingSink, size, highWaterMark) {\n _classCallCheck(this, WritableStreamDefaultController);\n\n if (IsWritableStream(stream) === false) {\n throw new TypeError('WritableStreamDefaultController can only be constructed with a WritableStream instance');\n }\n\n if (stream._writableStreamController !== undefined) {\n throw new TypeError('WritableStreamDefaultController instances can only be created by the WritableStream constructor');\n }\n\n this._controlledWritableStream = stream;\n\n this._underlyingSink = underlyingSink;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var backpressure = WritableStreamDefaultControllerGetBackpressure(this);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n _createClass(WritableStreamDefaultController, [{\n key: 'error',\n value: function error(e) {\n if (IsWritableStreamDefaultController(this) === false) {\n throw new TypeError('WritableStreamDefaultController.prototype.error can only be used on a WritableStreamDefaultController');\n }\n var state = this._controlledWritableStream._state;\n if (state !== 'writable') {\n // The stream is closed, errored or will be soon. The sink can't do anything useful if it gets an error here, so\n // just treat it as a no-op.\n return;\n }\n\n WritableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__abortSteps',\n value: function __abortSteps(reason) {\n return PromiseInvokeOrNoop(this._underlyingSink, 'abort', [reason]);\n }\n }, {\n key: '__errorSteps',\n value: function __errorSteps() {\n ResetQueue(this);\n }\n }, {\n key: '__startSteps',\n value: function __startSteps() {\n var _this = this;\n\n var startResult = InvokeOrNoop(this._underlyingSink, 'start', [this]);\n var stream = this._controlledWritableStream;\n\n Promise.resolve(startResult).then(function () {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(_this);\n }, function (r) {\n assert(stream._state === 'writable' || stream._state === 'erroring');\n _this._started = true;\n WritableStreamDealWithRejection(stream, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n }]);\n\n return WritableStreamDefaultController;\n}();\n\n// Abstract operations implementing interface required by the WritableStream.\n\nfunction WritableStreamDefaultControllerClose(controller) {\n EnqueueValueWithSize(controller, 'close', 0);\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\nfunction WritableStreamDefaultControllerGetChunkSize(controller, chunk) {\n var strategySize = controller._strategySize;\n\n if (strategySize === undefined) {\n return 1;\n }\n\n try {\n return strategySize(chunk);\n } catch (chunkSizeE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n return 1;\n }\n}\n\nfunction WritableStreamDefaultControllerGetDesiredSize(controller) {\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction WritableStreamDefaultControllerWrite(controller, chunk, chunkSize) {\n var writeRecord = { chunk: chunk };\n\n try {\n EnqueueValueWithSize(controller, writeRecord, chunkSize);\n } catch (enqueueE) {\n WritableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n return;\n }\n\n var stream = controller._controlledWritableStream;\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && stream._state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n}\n\n// Abstract operations for the WritableStreamDefaultController.\n\nfunction IsWritableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSink')) {\n return false;\n }\n\n return true;\n}\n\nfunction WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) {\n var stream = controller._controlledWritableStream;\n\n if (controller._started === false) {\n return;\n }\n\n if (stream._inFlightWriteRequest !== undefined) {\n return;\n }\n\n var state = stream._state;\n if (state === 'closed' || state === 'errored') {\n return;\n }\n if (state === 'erroring') {\n WritableStreamFinishErroring(stream);\n return;\n }\n\n if (controller._queue.length === 0) {\n return;\n }\n\n var writeRecord = PeekQueueValue(controller);\n if (writeRecord === 'close') {\n WritableStreamDefaultControllerProcessClose(controller);\n } else {\n WritableStreamDefaultControllerProcessWrite(controller, writeRecord.chunk);\n }\n}\n\nfunction WritableStreamDefaultControllerErrorIfNeeded(controller, error) {\n if (controller._controlledWritableStream._state === 'writable') {\n WritableStreamDefaultControllerError(controller, error);\n }\n}\n\nfunction WritableStreamDefaultControllerProcessClose(controller) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkCloseRequestInFlight(stream);\n\n DequeueValue(controller);\n assert(controller._queue.length === 0, 'queue must be empty once the final write record is dequeued');\n\n var sinkClosePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'close', []);\n sinkClosePromise.then(function () {\n WritableStreamFinishInFlightClose(stream);\n }, function (reason) {\n WritableStreamFinishInFlightCloseWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerProcessWrite(controller, chunk) {\n var stream = controller._controlledWritableStream;\n\n WritableStreamMarkFirstWriteRequestInFlight(stream);\n\n var sinkWritePromise = PromiseInvokeOrNoop(controller._underlyingSink, 'write', [chunk, controller]);\n sinkWritePromise.then(function () {\n WritableStreamFinishInFlightWrite(stream);\n\n var state = stream._state;\n assert(state === 'writable' || state === 'erroring');\n\n DequeueValue(controller);\n\n if (WritableStreamCloseQueuedOrInFlight(stream) === false && state === 'writable') {\n var backpressure = WritableStreamDefaultControllerGetBackpressure(controller);\n WritableStreamUpdateBackpressure(stream, backpressure);\n }\n\n WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller);\n }, function (reason) {\n WritableStreamFinishInFlightWriteWithError(stream, reason);\n }).catch(rethrowAssertionErrorRejection);\n}\n\nfunction WritableStreamDefaultControllerGetBackpressure(controller) {\n var desiredSize = WritableStreamDefaultControllerGetDesiredSize(controller);\n return desiredSize <= 0;\n}\n\n// A client of WritableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction WritableStreamDefaultControllerError(controller, error) {\n var stream = controller._controlledWritableStream;\n\n assert(stream._state === 'writable');\n\n WritableStreamStartErroring(stream, error);\n}\n\n// Helper functions for the WritableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('WritableStream.prototype.' + name + ' can only be used on a WritableStream');\n}\n\n// Helper functions for the WritableStreamDefaultWriter.\n\nfunction defaultWriterBrandCheckException(name) {\n return new TypeError('WritableStreamDefaultWriter.prototype.' + name + ' can only be used on a WritableStreamDefaultWriter');\n}\n\nfunction defaultWriterLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released writer');\n}\n\nfunction defaultWriterClosedPromiseInitialize(writer) {\n writer._closedPromise = new Promise(function (resolve, reject) {\n writer._closedPromise_resolve = resolve;\n writer._closedPromise_reject = reject;\n writer._closedPromiseState = 'pending';\n });\n}\n\nfunction defaultWriterClosedPromiseInitializeAsRejected(writer, reason) {\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseInitializeAsResolved(writer) {\n writer._closedPromise = Promise.resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterClosedPromiseReject(writer, reason) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_reject(reason);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResetToRejected(writer, reason) {\n assert(writer._closedPromise_resolve === undefined, 'writer._closedPromise_resolve === undefined');\n assert(writer._closedPromise_reject === undefined, 'writer._closedPromise_reject === undefined');\n assert(writer._closedPromiseState !== 'pending', 'writer._closedPromiseState is not pending');\n\n writer._closedPromise = Promise.reject(reason);\n writer._closedPromiseState = 'rejected';\n}\n\nfunction defaultWriterClosedPromiseResolve(writer) {\n assert(writer._closedPromise_resolve !== undefined, 'writer._closedPromise_resolve !== undefined');\n assert(writer._closedPromise_reject !== undefined, 'writer._closedPromise_reject !== undefined');\n assert(writer._closedPromiseState === 'pending', 'writer._closedPromiseState is pending');\n\n writer._closedPromise_resolve(undefined);\n writer._closedPromise_resolve = undefined;\n writer._closedPromise_reject = undefined;\n writer._closedPromiseState = 'resolved';\n}\n\nfunction defaultWriterReadyPromiseInitialize(writer) {\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsRejected(writer, reason) {\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseInitializeAsResolved(writer) {\n writer._readyPromise = Promise.resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\nfunction defaultWriterReadyPromiseReject(writer, reason) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_reject(reason);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseReset(writer) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = new Promise(function (resolve, reject) {\n writer._readyPromise_resolve = resolve;\n writer._readyPromise_reject = reject;\n });\n writer._readyPromiseState = 'pending';\n}\n\nfunction defaultWriterReadyPromiseResetToRejected(writer, reason) {\n assert(writer._readyPromise_resolve === undefined, 'writer._readyPromise_resolve === undefined');\n assert(writer._readyPromise_reject === undefined, 'writer._readyPromise_reject === undefined');\n\n writer._readyPromise = Promise.reject(reason);\n writer._readyPromiseState = 'rejected';\n}\n\nfunction defaultWriterReadyPromiseResolve(writer) {\n assert(writer._readyPromise_resolve !== undefined, 'writer._readyPromise_resolve !== undefined');\n assert(writer._readyPromise_reject !== undefined, 'writer._readyPromise_reject !== undefined');\n\n writer._readyPromise_resolve(undefined);\n writer._readyPromise_resolve = undefined;\n writer._readyPromise_reject = undefined;\n writer._readyPromiseState = 'fulfilled';\n}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _require = __w_pdfjs_require__(0),\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber;\n\nvar _require2 = __w_pdfjs_require__(1),\n assert = _require2.assert;\n\nexports.DequeueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: DequeueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never dequeue from an empty queue.');\n\n var pair = container._queue.shift();\n container._queueTotalSize -= pair.size;\n if (container._queueTotalSize < 0) {\n container._queueTotalSize = 0;\n }\n\n return pair.value;\n};\n\nexports.EnqueueValueWithSize = function (container, value, size) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: EnqueueValueWithSize should only be used on containers with [[queue]] and ' + '[[queueTotalSize]].');\n\n size = Number(size);\n if (!IsFiniteNonNegativeNumber(size)) {\n throw new RangeError('Size must be a finite, non-NaN, non-negative number.');\n }\n\n container._queue.push({ value: value, size: size });\n container._queueTotalSize += size;\n};\n\nexports.PeekQueueValue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: PeekQueueValue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n assert(container._queue.length > 0, 'Spec-level failure: should never peek at an empty queue.');\n\n var pair = container._queue[0];\n return pair.value;\n};\n\nexports.ResetQueue = function (container) {\n assert('_queue' in container && '_queueTotalSize' in container, 'Spec-level failure: ResetQueue should only be used on containers with [[queue]] and [[queueTotalSize]].');\n\n container._queue = [];\n container._queueTotalSize = 0;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(0),\n ArrayBufferCopy = _require.ArrayBufferCopy,\n CreateIterResultObject = _require.CreateIterResultObject,\n IsFiniteNonNegativeNumber = _require.IsFiniteNonNegativeNumber,\n InvokeOrNoop = _require.InvokeOrNoop,\n PromiseInvokeOrNoop = _require.PromiseInvokeOrNoop,\n TransferArrayBuffer = _require.TransferArrayBuffer,\n ValidateAndNormalizeQueuingStrategy = _require.ValidateAndNormalizeQueuingStrategy,\n ValidateAndNormalizeHighWaterMark = _require.ValidateAndNormalizeHighWaterMark;\n\nvar _require2 = __w_pdfjs_require__(0),\n createArrayFromList = _require2.createArrayFromList,\n createDataProperty = _require2.createDataProperty,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(1),\n assert = _require3.assert,\n rethrowAssertionErrorRejection = _require3.rethrowAssertionErrorRejection;\n\nvar _require4 = __w_pdfjs_require__(3),\n DequeueValue = _require4.DequeueValue,\n EnqueueValueWithSize = _require4.EnqueueValueWithSize,\n ResetQueue = _require4.ResetQueue;\n\nvar _require5 = __w_pdfjs_require__(2),\n AcquireWritableStreamDefaultWriter = _require5.AcquireWritableStreamDefaultWriter,\n IsWritableStream = _require5.IsWritableStream,\n IsWritableStreamLocked = _require5.IsWritableStreamLocked,\n WritableStreamAbort = _require5.WritableStreamAbort,\n WritableStreamDefaultWriterCloseWithErrorPropagation = _require5.WritableStreamDefaultWriterCloseWithErrorPropagation,\n WritableStreamDefaultWriterRelease = _require5.WritableStreamDefaultWriterRelease,\n WritableStreamDefaultWriterWrite = _require5.WritableStreamDefaultWriterWrite,\n WritableStreamCloseQueuedOrInFlight = _require5.WritableStreamCloseQueuedOrInFlight;\n\nvar ReadableStream = function () {\n function ReadableStream() {\n var underlyingSource = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n size = _ref.size,\n highWaterMark = _ref.highWaterMark;\n\n _classCallCheck(this, ReadableStream);\n\n // Exposed to controllers.\n this._state = 'readable';\n\n this._reader = undefined;\n this._storedError = undefined;\n\n this._disturbed = false;\n\n // Initialize to undefined first because the constructor of the controller checks this\n // variable to validate the caller.\n this._readableStreamController = undefined;\n var type = underlyingSource.type;\n var typeString = String(type);\n if (typeString === 'bytes') {\n if (highWaterMark === undefined) {\n highWaterMark = 0;\n }\n this._readableStreamController = new ReadableByteStreamController(this, underlyingSource, highWaterMark);\n } else if (type === undefined) {\n if (highWaterMark === undefined) {\n highWaterMark = 1;\n }\n this._readableStreamController = new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark);\n } else {\n throw new RangeError('Invalid type is specified');\n }\n }\n\n _createClass(ReadableStream, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('cancel'));\n }\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('Cannot cancel a stream that already has a reader'));\n }\n\n return ReadableStreamCancel(this, reason);\n }\n }, {\n key: 'getReader',\n value: function getReader() {\n var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n mode = _ref2.mode;\n\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('getReader');\n }\n\n if (mode === undefined) {\n return AcquireReadableStreamDefaultReader(this);\n }\n\n mode = String(mode);\n\n if (mode === 'byob') {\n return AcquireReadableStreamBYOBReader(this);\n }\n\n throw new RangeError('Invalid mode is specified');\n }\n }, {\n key: 'pipeThrough',\n value: function pipeThrough(_ref3, options) {\n var writable = _ref3.writable,\n readable = _ref3.readable;\n\n var promise = this.pipeTo(writable, options);\n\n ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise);\n\n return readable;\n }\n }, {\n key: 'pipeTo',\n value: function pipeTo(dest) {\n var _this = this;\n\n var _ref4 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n preventClose = _ref4.preventClose,\n preventAbort = _ref4.preventAbort,\n preventCancel = _ref4.preventCancel;\n\n if (IsReadableStream(this) === false) {\n return Promise.reject(streamBrandCheckException('pipeTo'));\n }\n if (IsWritableStream(dest) === false) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo\\'s first argument must be a WritableStream'));\n }\n\n preventClose = Boolean(preventClose);\n preventAbort = Boolean(preventAbort);\n preventCancel = Boolean(preventCancel);\n\n if (IsReadableStreamLocked(this) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked ReadableStream'));\n }\n if (IsWritableStreamLocked(dest) === true) {\n return Promise.reject(new TypeError('ReadableStream.prototype.pipeTo cannot be used on a locked WritableStream'));\n }\n\n var reader = AcquireReadableStreamDefaultReader(this);\n var writer = AcquireWritableStreamDefaultWriter(dest);\n\n var shuttingDown = false;\n\n // This is used to keep track of the spec's requirement that we wait for ongoing writes during shutdown.\n var currentWrite = Promise.resolve();\n\n return new Promise(function (resolve, reject) {\n // Using reader and writer, read all chunks from this and write them to dest\n // - Backpressure must be enforced\n // - Shutdown must stop all activity\n function pipeLoop() {\n currentWrite = Promise.resolve();\n\n if (shuttingDown === true) {\n return Promise.resolve();\n }\n\n return writer._readyPromise.then(function () {\n return ReadableStreamDefaultReaderRead(reader).then(function (_ref5) {\n var value = _ref5.value,\n done = _ref5.done;\n\n if (done === true) {\n return;\n }\n\n currentWrite = WritableStreamDefaultWriterWrite(writer, value).catch(function () {});\n });\n }).then(pipeLoop);\n }\n\n // Errors must be propagated forward\n isOrBecomesErrored(_this, reader._closedPromise, function (storedError) {\n if (preventAbort === false) {\n shutdownWithAction(function () {\n return WritableStreamAbort(dest, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Errors must be propagated backward\n isOrBecomesErrored(dest, writer._closedPromise, function (storedError) {\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, storedError);\n }, true, storedError);\n } else {\n shutdown(true, storedError);\n }\n });\n\n // Closing must be propagated forward\n isOrBecomesClosed(_this, reader._closedPromise, function () {\n if (preventClose === false) {\n shutdownWithAction(function () {\n return WritableStreamDefaultWriterCloseWithErrorPropagation(writer);\n });\n } else {\n shutdown();\n }\n });\n\n // Closing must be propagated backward\n if (WritableStreamCloseQueuedOrInFlight(dest) === true || dest._state === 'closed') {\n var destClosed = new TypeError('the destination writable stream closed before all data could be piped to it');\n\n if (preventCancel === false) {\n shutdownWithAction(function () {\n return ReadableStreamCancel(_this, destClosed);\n }, true, destClosed);\n } else {\n shutdown(true, destClosed);\n }\n }\n\n pipeLoop().catch(function (err) {\n currentWrite = Promise.resolve();\n rethrowAssertionErrorRejection(err);\n });\n\n function waitForWritesToFinish() {\n // Another write may have started while we were waiting on this currentWrite, so we have to be sure to wait\n // for that too.\n var oldCurrentWrite = currentWrite;\n return currentWrite.then(function () {\n return oldCurrentWrite !== currentWrite ? waitForWritesToFinish() : undefined;\n });\n }\n\n function isOrBecomesErrored(stream, promise, action) {\n if (stream._state === 'errored') {\n action(stream._storedError);\n } else {\n promise.catch(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function isOrBecomesClosed(stream, promise, action) {\n if (stream._state === 'closed') {\n action();\n } else {\n promise.then(action).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdownWithAction(action, originalIsError, originalError) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(doTheRest);\n } else {\n doTheRest();\n }\n\n function doTheRest() {\n action().then(function () {\n return finalize(originalIsError, originalError);\n }, function (newError) {\n return finalize(true, newError);\n }).catch(rethrowAssertionErrorRejection);\n }\n }\n\n function shutdown(isError, error) {\n if (shuttingDown === true) {\n return;\n }\n shuttingDown = true;\n\n if (dest._state === 'writable' && WritableStreamCloseQueuedOrInFlight(dest) === false) {\n waitForWritesToFinish().then(function () {\n return finalize(isError, error);\n }).catch(rethrowAssertionErrorRejection);\n } else {\n finalize(isError, error);\n }\n }\n\n function finalize(isError, error) {\n WritableStreamDefaultWriterRelease(writer);\n ReadableStreamReaderGenericRelease(reader);\n\n if (isError) {\n reject(error);\n } else {\n resolve(undefined);\n }\n }\n });\n }\n }, {\n key: 'tee',\n value: function tee() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('tee');\n }\n\n var branches = ReadableStreamTee(this, false);\n return createArrayFromList(branches);\n }\n }, {\n key: 'locked',\n get: function get() {\n if (IsReadableStream(this) === false) {\n throw streamBrandCheckException('locked');\n }\n\n return IsReadableStreamLocked(this);\n }\n }]);\n\n return ReadableStream;\n}();\n\nmodule.exports = {\n ReadableStream: ReadableStream,\n IsReadableStreamDisturbed: IsReadableStreamDisturbed,\n ReadableStreamDefaultControllerClose: ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue: ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError: ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize: ReadableStreamDefaultControllerGetDesiredSize\n};\n\n// Abstract operations for the ReadableStream.\n\nfunction AcquireReadableStreamBYOBReader(stream) {\n return new ReadableStreamBYOBReader(stream);\n}\n\nfunction AcquireReadableStreamDefaultReader(stream) {\n return new ReadableStreamDefaultReader(stream);\n}\n\nfunction IsReadableStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readableStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDisturbed(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamDisturbed should only be used on known readable streams');\n\n return stream._disturbed;\n}\n\nfunction IsReadableStreamLocked(stream) {\n assert(IsReadableStream(stream) === true, 'IsReadableStreamLocked should only be used on known readable streams');\n\n if (stream._reader === undefined) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamTee(stream, cloneForBranch2) {\n assert(IsReadableStream(stream) === true);\n assert(typeof cloneForBranch2 === 'boolean');\n\n var reader = AcquireReadableStreamDefaultReader(stream);\n\n var teeState = {\n closedOrErrored: false,\n canceled1: false,\n canceled2: false,\n reason1: undefined,\n reason2: undefined\n };\n teeState.promise = new Promise(function (resolve) {\n teeState._resolve = resolve;\n });\n\n var pull = create_ReadableStreamTeePullFunction();\n pull._reader = reader;\n pull._teeState = teeState;\n pull._cloneForBranch2 = cloneForBranch2;\n\n var cancel1 = create_ReadableStreamTeeBranch1CancelFunction();\n cancel1._stream = stream;\n cancel1._teeState = teeState;\n\n var cancel2 = create_ReadableStreamTeeBranch2CancelFunction();\n cancel2._stream = stream;\n cancel2._teeState = teeState;\n\n var underlyingSource1 = Object.create(Object.prototype);\n createDataProperty(underlyingSource1, 'pull', pull);\n createDataProperty(underlyingSource1, 'cancel', cancel1);\n var branch1Stream = new ReadableStream(underlyingSource1);\n\n var underlyingSource2 = Object.create(Object.prototype);\n createDataProperty(underlyingSource2, 'pull', pull);\n createDataProperty(underlyingSource2, 'cancel', cancel2);\n var branch2Stream = new ReadableStream(underlyingSource2);\n\n pull._branch1 = branch1Stream._readableStreamController;\n pull._branch2 = branch2Stream._readableStreamController;\n\n reader._closedPromise.catch(function (r) {\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n ReadableStreamDefaultControllerError(pull._branch1, r);\n ReadableStreamDefaultControllerError(pull._branch2, r);\n teeState.closedOrErrored = true;\n });\n\n return [branch1Stream, branch2Stream];\n}\n\nfunction create_ReadableStreamTeePullFunction() {\n function f() {\n var reader = f._reader,\n branch1 = f._branch1,\n branch2 = f._branch2,\n teeState = f._teeState;\n\n\n return ReadableStreamDefaultReaderRead(reader).then(function (result) {\n assert(typeIsObject(result));\n var value = result.value;\n var done = result.done;\n assert(typeof done === 'boolean');\n\n if (done === true && teeState.closedOrErrored === false) {\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerClose(branch1);\n }\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerClose(branch2);\n }\n teeState.closedOrErrored = true;\n }\n\n if (teeState.closedOrErrored === true) {\n return;\n }\n\n var value1 = value;\n var value2 = value;\n\n // There is no way to access the cloning code right now in the reference implementation.\n // If we add one then we'll need an implementation for serializable objects.\n // if (teeState.canceled2 === false && cloneForBranch2 === true) {\n // value2 = StructuredDeserialize(StructuredSerialize(value2));\n // }\n\n if (teeState.canceled1 === false) {\n ReadableStreamDefaultControllerEnqueue(branch1, value1);\n }\n\n if (teeState.canceled2 === false) {\n ReadableStreamDefaultControllerEnqueue(branch2, value2);\n }\n });\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch1CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled1 = true;\n teeState.reason1 = reason;\n if (teeState.canceled2 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\nfunction create_ReadableStreamTeeBranch2CancelFunction() {\n function f(reason) {\n var stream = f._stream,\n teeState = f._teeState;\n\n\n teeState.canceled2 = true;\n teeState.reason2 = reason;\n if (teeState.canceled1 === true) {\n var compositeReason = createArrayFromList([teeState.reason1, teeState.reason2]);\n var cancelResult = ReadableStreamCancel(stream, compositeReason);\n teeState._resolve(cancelResult);\n }\n return teeState.promise;\n }\n return f;\n}\n\n// ReadableStream API exposed for controllers.\n\nfunction ReadableStreamAddReadIntoRequest(stream) {\n assert(IsReadableStreamBYOBReader(stream._reader) === true);\n assert(stream._state === 'readable' || stream._state === 'closed');\n\n var promise = new Promise(function (resolve, reject) {\n var readIntoRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readIntoRequests.push(readIntoRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamAddReadRequest(stream) {\n assert(IsReadableStreamDefaultReader(stream._reader) === true);\n assert(stream._state === 'readable');\n\n var promise = new Promise(function (resolve, reject) {\n var readRequest = {\n _resolve: resolve,\n _reject: reject\n };\n\n stream._reader._readRequests.push(readRequest);\n });\n\n return promise;\n}\n\nfunction ReadableStreamCancel(stream, reason) {\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(undefined);\n }\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n ReadableStreamClose(stream);\n\n var sourceCancelPromise = stream._readableStreamController.__cancelSteps(reason);\n return sourceCancelPromise.then(function () {\n return undefined;\n });\n}\n\nfunction ReadableStreamClose(stream) {\n assert(stream._state === 'readable');\n\n stream._state = 'closed';\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var _resolve = reader._readRequests[i]._resolve;\n\n _resolve(CreateIterResultObject(undefined, true));\n }\n reader._readRequests = [];\n }\n\n defaultReaderClosedPromiseResolve(reader);\n\n return undefined;\n}\n\nfunction ReadableStreamError(stream, e) {\n assert(IsReadableStream(stream) === true, 'stream must be ReadableStream');\n assert(stream._state === 'readable', 'state must be readable');\n\n stream._state = 'errored';\n stream._storedError = e;\n\n var reader = stream._reader;\n\n if (reader === undefined) {\n return undefined;\n }\n\n if (IsReadableStreamDefaultReader(reader) === true) {\n for (var i = 0; i < reader._readRequests.length; i++) {\n var readRequest = reader._readRequests[i];\n readRequest._reject(e);\n }\n\n reader._readRequests = [];\n } else {\n assert(IsReadableStreamBYOBReader(reader), 'reader must be ReadableStreamBYOBReader');\n\n for (var _i = 0; _i < reader._readIntoRequests.length; _i++) {\n var readIntoRequest = reader._readIntoRequests[_i];\n readIntoRequest._reject(e);\n }\n\n reader._readIntoRequests = [];\n }\n\n defaultReaderClosedPromiseReject(reader, e);\n reader._closedPromise.catch(function () {});\n}\n\nfunction ReadableStreamFulfillReadIntoRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readIntoRequests.length > 0);\n\n var readIntoRequest = reader._readIntoRequests.shift();\n readIntoRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamFulfillReadRequest(stream, chunk, done) {\n var reader = stream._reader;\n\n assert(reader._readRequests.length > 0);\n\n var readRequest = reader._readRequests.shift();\n readRequest._resolve(CreateIterResultObject(chunk, done));\n}\n\nfunction ReadableStreamGetNumReadIntoRequests(stream) {\n return stream._reader._readIntoRequests.length;\n}\n\nfunction ReadableStreamGetNumReadRequests(stream) {\n return stream._reader._readRequests.length;\n}\n\nfunction ReadableStreamHasBYOBReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamBYOBReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamHasDefaultReader(stream) {\n var reader = stream._reader;\n\n if (reader === undefined) {\n return false;\n }\n\n if (IsReadableStreamDefaultReader(reader) === false) {\n return false;\n }\n\n return true;\n}\n\n// Readers\n\nvar ReadableStreamDefaultReader = function () {\n function ReadableStreamDefaultReader(stream) {\n _classCallCheck(this, ReadableStreamDefaultReader);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultReader can only be constructed with a ReadableStream instance');\n }\n if (IsReadableStreamLocked(stream) === true) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readRequests = [];\n }\n\n _createClass(ReadableStreamDefaultReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n return ReadableStreamDefaultReaderRead(this);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (IsReadableStreamDefaultReader(this) === false) {\n throw defaultReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (IsReadableStreamDefaultReader(this) === false) {\n return Promise.reject(defaultReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamDefaultReader;\n}();\n\nvar ReadableStreamBYOBReader = function () {\n function ReadableStreamBYOBReader(stream) {\n _classCallCheck(this, ReadableStreamBYOBReader);\n\n if (!IsReadableStream(stream)) {\n throw new TypeError('ReadableStreamBYOBReader can only be constructed with a ReadableStream instance given a ' + 'byte source');\n }\n if (IsReadableByteStreamController(stream._readableStreamController) === false) {\n throw new TypeError('Cannot construct a ReadableStreamBYOBReader for a stream not constructed with a byte ' + 'source');\n }\n if (IsReadableStreamLocked(stream)) {\n throw new TypeError('This stream has already been locked for exclusive reading by another reader');\n }\n\n ReadableStreamReaderGenericInitialize(this, stream);\n\n this._readIntoRequests = [];\n }\n\n _createClass(ReadableStreamBYOBReader, [{\n key: 'cancel',\n value: function cancel(reason) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('cancel'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('cancel'));\n }\n\n return ReadableStreamReaderGenericCancel(this, reason);\n }\n }, {\n key: 'read',\n value: function read(view) {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('read'));\n }\n\n if (this._ownerReadableStream === undefined) {\n return Promise.reject(readerLockException('read from'));\n }\n\n if (!ArrayBuffer.isView(view)) {\n return Promise.reject(new TypeError('view must be an array buffer view'));\n }\n\n if (view.byteLength === 0) {\n return Promise.reject(new TypeError('view must have non-zero byteLength'));\n }\n\n return ReadableStreamBYOBReaderRead(this, view);\n }\n }, {\n key: 'releaseLock',\n value: function releaseLock() {\n if (!IsReadableStreamBYOBReader(this)) {\n throw byobReaderBrandCheckException('releaseLock');\n }\n\n if (this._ownerReadableStream === undefined) {\n return;\n }\n\n if (this._readIntoRequests.length > 0) {\n throw new TypeError('Tried to release a reader lock when that reader has pending read() calls un-settled');\n }\n\n ReadableStreamReaderGenericRelease(this);\n }\n }, {\n key: 'closed',\n get: function get() {\n if (!IsReadableStreamBYOBReader(this)) {\n return Promise.reject(byobReaderBrandCheckException('closed'));\n }\n\n return this._closedPromise;\n }\n }]);\n\n return ReadableStreamBYOBReader;\n}();\n\n// Abstract operations for the readers.\n\nfunction IsReadableStreamBYOBReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readIntoRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamDefaultReader(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_readRequests')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamReaderGenericInitialize(reader, stream) {\n reader._ownerReadableStream = stream;\n stream._reader = reader;\n\n if (stream._state === 'readable') {\n defaultReaderClosedPromiseInitialize(reader);\n } else if (stream._state === 'closed') {\n defaultReaderClosedPromiseInitializeAsResolved(reader);\n } else {\n assert(stream._state === 'errored', 'state must be errored');\n\n defaultReaderClosedPromiseInitializeAsRejected(reader, stream._storedError);\n reader._closedPromise.catch(function () {});\n }\n}\n\n// A client of ReadableStreamDefaultReader and ReadableStreamBYOBReader may use these functions directly to bypass state\n// check.\n\nfunction ReadableStreamReaderGenericCancel(reader, reason) {\n var stream = reader._ownerReadableStream;\n assert(stream !== undefined);\n return ReadableStreamCancel(stream, reason);\n}\n\nfunction ReadableStreamReaderGenericRelease(reader) {\n assert(reader._ownerReadableStream !== undefined);\n assert(reader._ownerReadableStream._reader === reader);\n\n if (reader._ownerReadableStream._state === 'readable') {\n defaultReaderClosedPromiseReject(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n } else {\n defaultReaderClosedPromiseResetToRejected(reader, new TypeError('Reader was released and can no longer be used to monitor the stream\\'s closedness'));\n }\n reader._closedPromise.catch(function () {});\n\n reader._ownerReadableStream._reader = undefined;\n reader._ownerReadableStream = undefined;\n}\n\nfunction ReadableStreamBYOBReaderRead(reader, view) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n // Controllers must implement this.\n return ReadableByteStreamControllerPullInto(stream._readableStreamController, view);\n}\n\nfunction ReadableStreamDefaultReaderRead(reader) {\n var stream = reader._ownerReadableStream;\n\n assert(stream !== undefined);\n\n stream._disturbed = true;\n\n if (stream._state === 'closed') {\n return Promise.resolve(CreateIterResultObject(undefined, true));\n }\n\n if (stream._state === 'errored') {\n return Promise.reject(stream._storedError);\n }\n\n assert(stream._state === 'readable');\n\n return stream._readableStreamController.__pullSteps();\n}\n\n// Controllers\n\nvar ReadableStreamDefaultController = function () {\n function ReadableStreamDefaultController(stream, underlyingSource, size, highWaterMark) {\n _classCallCheck(this, ReadableStreamDefaultController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableStreamDefaultController can only be constructed with a ReadableStream instance');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableStreamDefaultController instances can only be created by the ReadableStream constructor');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingSource = underlyingSource;\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = undefined;\n this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._started = false;\n this._closeRequested = false;\n this._pullAgain = false;\n this._pulling = false;\n\n var normalizedStrategy = ValidateAndNormalizeQueuingStrategy(size, highWaterMark);\n this._strategySize = normalizedStrategy.size;\n this._strategyHWM = normalizedStrategy.highWaterMark;\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }, function (r) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, r);\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableStreamDefaultController, [{\n key: 'close',\n value: function close() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableStreamDefaultControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n return ReadableStreamDefaultControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableStreamDefaultControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n ResetQueue(this);\n return PromiseInvokeOrNoop(this._underlyingSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n\n if (this._queue.length > 0) {\n var chunk = DequeueValue(this);\n\n if (this._closeRequested === true && this._queue.length === 0) {\n ReadableStreamClose(stream);\n } else {\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n }\n\n return Promise.resolve(CreateIterResultObject(chunk, false));\n }\n\n var pendingPromise = ReadableStreamAddReadRequest(stream);\n ReadableStreamDefaultControllerCallPullIfNeeded(this);\n return pendingPromise;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n return ReadableStreamDefaultControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableStreamDefaultController;\n}();\n\n// Abstract operations for the ReadableStreamDefaultController.\n\nfunction IsReadableStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableStreamDefaultControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n return ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n }\n return undefined;\n }, function (e) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, e);\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed' || stream._state === 'errored') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n if (desiredSize > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableStreamDefaultController may use these functions directly to bypass state check.\n\nfunction ReadableStreamDefaultControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n controller._closeRequested = true;\n\n if (controller._queue.length === 0) {\n ReadableStreamClose(stream);\n }\n}\n\nfunction ReadableStreamDefaultControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n ReadableStreamFulfillReadRequest(stream, chunk, false);\n } else {\n var chunkSize = 1;\n\n if (controller._strategySize !== undefined) {\n var strategySize = controller._strategySize;\n try {\n chunkSize = strategySize(chunk);\n } catch (chunkSizeE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, chunkSizeE);\n throw chunkSizeE;\n }\n }\n\n try {\n EnqueueValueWithSize(controller, chunk, chunkSize);\n } catch (enqueueE) {\n ReadableStreamDefaultControllerErrorIfNeeded(controller, enqueueE);\n throw enqueueE;\n }\n }\n\n ReadableStreamDefaultControllerCallPullIfNeeded(controller);\n\n return undefined;\n}\n\nfunction ReadableStreamDefaultControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ResetQueue(controller);\n\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableStreamDefaultControllerErrorIfNeeded(controller, e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableStreamDefaultControllerError(controller, e);\n }\n}\n\nfunction ReadableStreamDefaultControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nvar ReadableStreamBYOBRequest = function () {\n function ReadableStreamBYOBRequest(controller, view) {\n _classCallCheck(this, ReadableStreamBYOBRequest);\n\n this._associatedReadableByteStreamController = controller;\n this._view = view;\n }\n\n _createClass(ReadableStreamBYOBRequest, [{\n key: 'respond',\n value: function respond(bytesWritten) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n ReadableByteStreamControllerRespond(this._associatedReadableByteStreamController, bytesWritten);\n }\n }, {\n key: 'respondWithNewView',\n value: function respondWithNewView(view) {\n if (IsReadableStreamBYOBRequest(this) === false) {\n throw byobRequestBrandCheckException('respond');\n }\n\n if (this._associatedReadableByteStreamController === undefined) {\n throw new TypeError('This BYOB request has been invalidated');\n }\n\n if (!ArrayBuffer.isView(view)) {\n throw new TypeError('You can only respond with array buffer views');\n }\n\n ReadableByteStreamControllerRespondWithNewView(this._associatedReadableByteStreamController, view);\n }\n }, {\n key: 'view',\n get: function get() {\n return this._view;\n }\n }]);\n\n return ReadableStreamBYOBRequest;\n}();\n\nvar ReadableByteStreamController = function () {\n function ReadableByteStreamController(stream, underlyingByteSource, highWaterMark) {\n _classCallCheck(this, ReadableByteStreamController);\n\n if (IsReadableStream(stream) === false) {\n throw new TypeError('ReadableByteStreamController can only be constructed with a ReadableStream instance given ' + 'a byte source');\n }\n\n if (stream._readableStreamController !== undefined) {\n throw new TypeError('ReadableByteStreamController instances can only be created by the ReadableStream constructor given a byte ' + 'source');\n }\n\n this._controlledReadableStream = stream;\n\n this._underlyingByteSource = underlyingByteSource;\n\n this._pullAgain = false;\n this._pulling = false;\n\n ReadableByteStreamControllerClearPendingPullIntos(this);\n\n // Need to set the slots so that the assert doesn't fire. In the spec the slots already exist implicitly.\n this._queue = this._queueTotalSize = undefined;\n ResetQueue(this);\n\n this._closeRequested = false;\n this._started = false;\n\n this._strategyHWM = ValidateAndNormalizeHighWaterMark(highWaterMark);\n\n var autoAllocateChunkSize = underlyingByteSource.autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n if (Number.isInteger(autoAllocateChunkSize) === false || autoAllocateChunkSize <= 0) {\n throw new RangeError('autoAllocateChunkSize must be a positive integer');\n }\n }\n this._autoAllocateChunkSize = autoAllocateChunkSize;\n\n this._pendingPullIntos = [];\n\n var controller = this;\n\n var startResult = InvokeOrNoop(underlyingByteSource, 'start', [this]);\n Promise.resolve(startResult).then(function () {\n controller._started = true;\n\n assert(controller._pulling === false);\n assert(controller._pullAgain === false);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }, function (r) {\n if (stream._state === 'readable') {\n ReadableByteStreamControllerError(controller, r);\n }\n }).catch(rethrowAssertionErrorRejection);\n }\n\n _createClass(ReadableByteStreamController, [{\n key: 'close',\n value: function close() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('close');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('The stream has already been closed; do not close it again!');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be closed');\n }\n\n ReadableByteStreamControllerClose(this);\n }\n }, {\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('enqueue');\n }\n\n if (this._closeRequested === true) {\n throw new TypeError('stream is closed or draining');\n }\n\n var state = this._controlledReadableStream._state;\n if (state !== 'readable') {\n throw new TypeError('The stream (in ' + state + ' state) is not in the readable state and cannot be enqueued to');\n }\n\n if (!ArrayBuffer.isView(chunk)) {\n throw new TypeError('You can only enqueue array buffer views when using a ReadableByteStreamController');\n }\n\n ReadableByteStreamControllerEnqueue(this, chunk);\n }\n }, {\n key: 'error',\n value: function error(e) {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('error');\n }\n\n var stream = this._controlledReadableStream;\n if (stream._state !== 'readable') {\n throw new TypeError('The stream is ' + stream._state + ' and so cannot be errored');\n }\n\n ReadableByteStreamControllerError(this, e);\n }\n }, {\n key: '__cancelSteps',\n value: function __cancelSteps(reason) {\n if (this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n firstDescriptor.bytesFilled = 0;\n }\n\n ResetQueue(this);\n\n return PromiseInvokeOrNoop(this._underlyingByteSource, 'cancel', [reason]);\n }\n }, {\n key: '__pullSteps',\n value: function __pullSteps() {\n var stream = this._controlledReadableStream;\n assert(ReadableStreamHasDefaultReader(stream) === true);\n\n if (this._queueTotalSize > 0) {\n assert(ReadableStreamGetNumReadRequests(stream) === 0);\n\n var entry = this._queue.shift();\n this._queueTotalSize -= entry.byteLength;\n\n ReadableByteStreamControllerHandleQueueDrain(this);\n\n var view = void 0;\n try {\n view = new Uint8Array(entry.buffer, entry.byteOffset, entry.byteLength);\n } catch (viewE) {\n return Promise.reject(viewE);\n }\n\n return Promise.resolve(CreateIterResultObject(view, false));\n }\n\n var autoAllocateChunkSize = this._autoAllocateChunkSize;\n if (autoAllocateChunkSize !== undefined) {\n var buffer = void 0;\n try {\n buffer = new ArrayBuffer(autoAllocateChunkSize);\n } catch (bufferE) {\n return Promise.reject(bufferE);\n }\n\n var pullIntoDescriptor = {\n buffer: buffer,\n byteOffset: 0,\n byteLength: autoAllocateChunkSize,\n bytesFilled: 0,\n elementSize: 1,\n ctor: Uint8Array,\n readerType: 'default'\n };\n\n this._pendingPullIntos.push(pullIntoDescriptor);\n }\n\n var promise = ReadableStreamAddReadRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(this);\n\n return promise;\n }\n }, {\n key: 'byobRequest',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('byobRequest');\n }\n\n if (this._byobRequest === undefined && this._pendingPullIntos.length > 0) {\n var firstDescriptor = this._pendingPullIntos[0];\n var view = new Uint8Array(firstDescriptor.buffer, firstDescriptor.byteOffset + firstDescriptor.bytesFilled, firstDescriptor.byteLength - firstDescriptor.bytesFilled);\n\n this._byobRequest = new ReadableStreamBYOBRequest(this, view);\n }\n\n return this._byobRequest;\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsReadableByteStreamController(this) === false) {\n throw byteStreamControllerBrandCheckException('desiredSize');\n }\n\n return ReadableByteStreamControllerGetDesiredSize(this);\n }\n }]);\n\n return ReadableByteStreamController;\n}();\n\n// Abstract operations for the ReadableByteStreamController.\n\nfunction IsReadableByteStreamController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_underlyingByteSource')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsReadableStreamBYOBRequest(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_associatedReadableByteStreamController')) {\n return false;\n }\n\n return true;\n}\n\nfunction ReadableByteStreamControllerCallPullIfNeeded(controller) {\n var shouldPull = ReadableByteStreamControllerShouldCallPull(controller);\n if (shouldPull === false) {\n return undefined;\n }\n\n if (controller._pulling === true) {\n controller._pullAgain = true;\n return undefined;\n }\n\n assert(controller._pullAgain === false);\n\n controller._pulling = true;\n\n // TODO: Test controller argument\n var pullPromise = PromiseInvokeOrNoop(controller._underlyingByteSource, 'pull', [controller]);\n pullPromise.then(function () {\n controller._pulling = false;\n\n if (controller._pullAgain === true) {\n controller._pullAgain = false;\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n }, function (e) {\n if (controller._controlledReadableStream._state === 'readable') {\n ReadableByteStreamControllerError(controller, e);\n }\n }).catch(rethrowAssertionErrorRejection);\n\n return undefined;\n}\n\nfunction ReadableByteStreamControllerClearPendingPullIntos(controller) {\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n controller._pendingPullIntos = [];\n}\n\nfunction ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor) {\n assert(stream._state !== 'errored', 'state must not be errored');\n\n var done = false;\n if (stream._state === 'closed') {\n assert(pullIntoDescriptor.bytesFilled === 0);\n done = true;\n }\n\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n if (pullIntoDescriptor.readerType === 'default') {\n ReadableStreamFulfillReadRequest(stream, filledView, done);\n } else {\n assert(pullIntoDescriptor.readerType === 'byob');\n ReadableStreamFulfillReadIntoRequest(stream, filledView, done);\n }\n}\n\nfunction ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor) {\n var bytesFilled = pullIntoDescriptor.bytesFilled;\n var elementSize = pullIntoDescriptor.elementSize;\n\n assert(bytesFilled <= pullIntoDescriptor.byteLength);\n assert(bytesFilled % elementSize === 0);\n\n return new pullIntoDescriptor.ctor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, bytesFilled / elementSize);\n}\n\nfunction ReadableByteStreamControllerEnqueueChunkToQueue(controller, buffer, byteOffset, byteLength) {\n controller._queue.push({ buffer: buffer, byteOffset: byteOffset, byteLength: byteLength });\n controller._queueTotalSize += byteLength;\n}\n\nfunction ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) {\n var elementSize = pullIntoDescriptor.elementSize;\n\n var currentAlignedBytes = pullIntoDescriptor.bytesFilled - pullIntoDescriptor.bytesFilled % elementSize;\n\n var maxBytesToCopy = Math.min(controller._queueTotalSize, pullIntoDescriptor.byteLength - pullIntoDescriptor.bytesFilled);\n var maxBytesFilled = pullIntoDescriptor.bytesFilled + maxBytesToCopy;\n var maxAlignedBytes = maxBytesFilled - maxBytesFilled % elementSize;\n\n var totalBytesToCopyRemaining = maxBytesToCopy;\n var ready = false;\n if (maxAlignedBytes > currentAlignedBytes) {\n totalBytesToCopyRemaining = maxAlignedBytes - pullIntoDescriptor.bytesFilled;\n ready = true;\n }\n\n var queue = controller._queue;\n\n while (totalBytesToCopyRemaining > 0) {\n var headOfQueue = queue[0];\n\n var bytesToCopy = Math.min(totalBytesToCopyRemaining, headOfQueue.byteLength);\n\n var destStart = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n ArrayBufferCopy(pullIntoDescriptor.buffer, destStart, headOfQueue.buffer, headOfQueue.byteOffset, bytesToCopy);\n\n if (headOfQueue.byteLength === bytesToCopy) {\n queue.shift();\n } else {\n headOfQueue.byteOffset += bytesToCopy;\n headOfQueue.byteLength -= bytesToCopy;\n }\n controller._queueTotalSize -= bytesToCopy;\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesToCopy, pullIntoDescriptor);\n\n totalBytesToCopyRemaining -= bytesToCopy;\n }\n\n if (ready === false) {\n assert(controller._queueTotalSize === 0, 'queue must be empty');\n assert(pullIntoDescriptor.bytesFilled > 0);\n assert(pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize);\n }\n\n return ready;\n}\n\nfunction ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, size, pullIntoDescriptor) {\n assert(controller._pendingPullIntos.length === 0 || controller._pendingPullIntos[0] === pullIntoDescriptor);\n\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n pullIntoDescriptor.bytesFilled += size;\n}\n\nfunction ReadableByteStreamControllerHandleQueueDrain(controller) {\n assert(controller._controlledReadableStream._state === 'readable');\n\n if (controller._queueTotalSize === 0 && controller._closeRequested === true) {\n ReadableStreamClose(controller._controlledReadableStream);\n } else {\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n }\n}\n\nfunction ReadableByteStreamControllerInvalidateBYOBRequest(controller) {\n if (controller._byobRequest === undefined) {\n return;\n }\n\n controller._byobRequest._associatedReadableByteStreamController = undefined;\n controller._byobRequest._view = undefined;\n controller._byobRequest = undefined;\n}\n\nfunction ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller) {\n assert(controller._closeRequested === false);\n\n while (controller._pendingPullIntos.length > 0) {\n if (controller._queueTotalSize === 0) {\n return;\n }\n\n var pullIntoDescriptor = controller._pendingPullIntos[0];\n\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerPullInto(controller, view) {\n var stream = controller._controlledReadableStream;\n\n var elementSize = 1;\n if (view.constructor !== DataView) {\n elementSize = view.constructor.BYTES_PER_ELEMENT;\n }\n\n var ctor = view.constructor;\n\n var pullIntoDescriptor = {\n buffer: view.buffer,\n byteOffset: view.byteOffset,\n byteLength: view.byteLength,\n bytesFilled: 0,\n elementSize: elementSize,\n ctor: ctor,\n readerType: 'byob'\n };\n\n if (controller._pendingPullIntos.length > 0) {\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n // No ReadableByteStreamControllerCallPullIfNeeded() call since:\n // - No change happens on desiredSize\n // - The source has already been notified of that there's at least 1 pending read(view)\n\n return ReadableStreamAddReadIntoRequest(stream);\n }\n\n if (stream._state === 'closed') {\n var emptyView = new view.constructor(pullIntoDescriptor.buffer, pullIntoDescriptor.byteOffset, 0);\n return Promise.resolve(CreateIterResultObject(emptyView, true));\n }\n\n if (controller._queueTotalSize > 0) {\n if (ReadableByteStreamControllerFillPullIntoDescriptorFromQueue(controller, pullIntoDescriptor) === true) {\n var filledView = ReadableByteStreamControllerConvertPullIntoDescriptor(pullIntoDescriptor);\n\n ReadableByteStreamControllerHandleQueueDrain(controller);\n\n return Promise.resolve(CreateIterResultObject(filledView, false));\n }\n\n if (controller._closeRequested === true) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n return Promise.reject(e);\n }\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n controller._pendingPullIntos.push(pullIntoDescriptor);\n\n var promise = ReadableStreamAddReadIntoRequest(stream);\n\n ReadableByteStreamControllerCallPullIfNeeded(controller);\n\n return promise;\n}\n\nfunction ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor) {\n firstDescriptor.buffer = TransferArrayBuffer(firstDescriptor.buffer);\n\n assert(firstDescriptor.bytesFilled === 0, 'bytesFilled must be 0');\n\n var stream = controller._controlledReadableStream;\n if (ReadableStreamHasBYOBReader(stream) === true) {\n while (ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n var pullIntoDescriptor = ReadableByteStreamControllerShiftPendingPullInto(controller);\n ReadableByteStreamControllerCommitPullIntoDescriptor(stream, pullIntoDescriptor);\n }\n }\n}\n\nfunction ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, pullIntoDescriptor) {\n if (pullIntoDescriptor.bytesFilled + bytesWritten > pullIntoDescriptor.byteLength) {\n throw new RangeError('bytesWritten out of range');\n }\n\n ReadableByteStreamControllerFillHeadPullIntoDescriptor(controller, bytesWritten, pullIntoDescriptor);\n\n if (pullIntoDescriptor.bytesFilled < pullIntoDescriptor.elementSize) {\n // TODO: Figure out whether we should detach the buffer or not here.\n return;\n }\n\n ReadableByteStreamControllerShiftPendingPullInto(controller);\n\n var remainderSize = pullIntoDescriptor.bytesFilled % pullIntoDescriptor.elementSize;\n if (remainderSize > 0) {\n var end = pullIntoDescriptor.byteOffset + pullIntoDescriptor.bytesFilled;\n var remainder = pullIntoDescriptor.buffer.slice(end - remainderSize, end);\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, remainder, 0, remainder.byteLength);\n }\n\n pullIntoDescriptor.buffer = TransferArrayBuffer(pullIntoDescriptor.buffer);\n pullIntoDescriptor.bytesFilled -= remainderSize;\n ReadableByteStreamControllerCommitPullIntoDescriptor(controller._controlledReadableStream, pullIntoDescriptor);\n\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n}\n\nfunction ReadableByteStreamControllerRespondInternal(controller, bytesWritten) {\n var firstDescriptor = controller._pendingPullIntos[0];\n\n var stream = controller._controlledReadableStream;\n\n if (stream._state === 'closed') {\n if (bytesWritten !== 0) {\n throw new TypeError('bytesWritten must be 0 when calling respond() on a closed stream');\n }\n\n ReadableByteStreamControllerRespondInClosedState(controller, firstDescriptor);\n } else {\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerRespondInReadableState(controller, bytesWritten, firstDescriptor);\n }\n}\n\nfunction ReadableByteStreamControllerShiftPendingPullInto(controller) {\n var descriptor = controller._pendingPullIntos.shift();\n ReadableByteStreamControllerInvalidateBYOBRequest(controller);\n return descriptor;\n}\n\nfunction ReadableByteStreamControllerShouldCallPull(controller) {\n var stream = controller._controlledReadableStream;\n\n if (stream._state !== 'readable') {\n return false;\n }\n\n if (controller._closeRequested === true) {\n return false;\n }\n\n if (controller._started === false) {\n return false;\n }\n\n if (ReadableStreamHasDefaultReader(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableStreamHasBYOBReader(stream) === true && ReadableStreamGetNumReadIntoRequests(stream) > 0) {\n return true;\n }\n\n if (ReadableByteStreamControllerGetDesiredSize(controller) > 0) {\n return true;\n }\n\n return false;\n}\n\n// A client of ReadableByteStreamController may use these functions directly to bypass state check.\n\nfunction ReadableByteStreamControllerClose(controller) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n if (controller._queueTotalSize > 0) {\n controller._closeRequested = true;\n\n return;\n }\n\n if (controller._pendingPullIntos.length > 0) {\n var firstPendingPullInto = controller._pendingPullIntos[0];\n if (firstPendingPullInto.bytesFilled > 0) {\n var e = new TypeError('Insufficient bytes to fill elements in the given buffer');\n ReadableByteStreamControllerError(controller, e);\n\n throw e;\n }\n }\n\n ReadableStreamClose(stream);\n}\n\nfunction ReadableByteStreamControllerEnqueue(controller, chunk) {\n var stream = controller._controlledReadableStream;\n\n assert(controller._closeRequested === false);\n assert(stream._state === 'readable');\n\n var buffer = chunk.buffer;\n var byteOffset = chunk.byteOffset;\n var byteLength = chunk.byteLength;\n var transferredBuffer = TransferArrayBuffer(buffer);\n\n if (ReadableStreamHasDefaultReader(stream) === true) {\n if (ReadableStreamGetNumReadRequests(stream) === 0) {\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n } else {\n assert(controller._queue.length === 0);\n\n var transferredView = new Uint8Array(transferredBuffer, byteOffset, byteLength);\n ReadableStreamFulfillReadRequest(stream, transferredView, false);\n }\n } else if (ReadableStreamHasBYOBReader(stream) === true) {\n // TODO: Ideally in this branch detaching should happen only if the buffer is not consumed fully.\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n ReadableByteStreamControllerProcessPullIntoDescriptorsUsingQueue(controller);\n } else {\n assert(IsReadableStreamLocked(stream) === false, 'stream must not be locked');\n ReadableByteStreamControllerEnqueueChunkToQueue(controller, transferredBuffer, byteOffset, byteLength);\n }\n}\n\nfunction ReadableByteStreamControllerError(controller, e) {\n var stream = controller._controlledReadableStream;\n\n assert(stream._state === 'readable');\n\n ReadableByteStreamControllerClearPendingPullIntos(controller);\n\n ResetQueue(controller);\n ReadableStreamError(stream, e);\n}\n\nfunction ReadableByteStreamControllerGetDesiredSize(controller) {\n var stream = controller._controlledReadableStream;\n var state = stream._state;\n\n if (state === 'errored') {\n return null;\n }\n if (state === 'closed') {\n return 0;\n }\n\n return controller._strategyHWM - controller._queueTotalSize;\n}\n\nfunction ReadableByteStreamControllerRespond(controller, bytesWritten) {\n bytesWritten = Number(bytesWritten);\n if (IsFiniteNonNegativeNumber(bytesWritten) === false) {\n throw new RangeError('bytesWritten must be a finite');\n }\n\n assert(controller._pendingPullIntos.length > 0);\n\n ReadableByteStreamControllerRespondInternal(controller, bytesWritten);\n}\n\nfunction ReadableByteStreamControllerRespondWithNewView(controller, view) {\n assert(controller._pendingPullIntos.length > 0);\n\n var firstDescriptor = controller._pendingPullIntos[0];\n\n if (firstDescriptor.byteOffset + firstDescriptor.bytesFilled !== view.byteOffset) {\n throw new RangeError('The region specified by view does not match byobRequest');\n }\n if (firstDescriptor.byteLength !== view.byteLength) {\n throw new RangeError('The buffer of view has different capacity than byobRequest');\n }\n\n firstDescriptor.buffer = view.buffer;\n\n ReadableByteStreamControllerRespondInternal(controller, view.byteLength);\n}\n\n// Helper functions for the ReadableStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('ReadableStream.prototype.' + name + ' can only be used on a ReadableStream');\n}\n\n// Helper functions for the readers.\n\nfunction readerLockException(name) {\n return new TypeError('Cannot ' + name + ' a stream using a released reader');\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction defaultReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultReader.prototype.' + name + ' can only be used on a ReadableStreamDefaultReader');\n}\n\nfunction defaultReaderClosedPromiseInitialize(reader) {\n reader._closedPromise = new Promise(function (resolve, reject) {\n reader._closedPromise_resolve = resolve;\n reader._closedPromise_reject = reject;\n });\n}\n\nfunction defaultReaderClosedPromiseInitializeAsRejected(reader, reason) {\n reader._closedPromise = Promise.reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseInitializeAsResolved(reader) {\n reader._closedPromise = Promise.resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseReject(reader, reason) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_reject(reason);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\nfunction defaultReaderClosedPromiseResetToRejected(reader, reason) {\n assert(reader._closedPromise_resolve === undefined);\n assert(reader._closedPromise_reject === undefined);\n\n reader._closedPromise = Promise.reject(reason);\n}\n\nfunction defaultReaderClosedPromiseResolve(reader) {\n assert(reader._closedPromise_resolve !== undefined);\n assert(reader._closedPromise_reject !== undefined);\n\n reader._closedPromise_resolve(undefined);\n reader._closedPromise_resolve = undefined;\n reader._closedPromise_reject = undefined;\n}\n\n// Helper functions for the ReadableStreamDefaultReader.\n\nfunction byobReaderBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBReader.prototype.' + name + ' can only be used on a ReadableStreamBYOBReader');\n}\n\n// Helper functions for the ReadableStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('ReadableStreamDefaultController.prototype.' + name + ' can only be used on a ReadableStreamDefaultController');\n}\n\n// Helper functions for the ReadableStreamBYOBRequest.\n\nfunction byobRequestBrandCheckException(name) {\n return new TypeError('ReadableStreamBYOBRequest.prototype.' + name + ' can only be used on a ReadableStreamBYOBRequest');\n}\n\n// Helper functions for the ReadableByteStreamController.\n\nfunction byteStreamControllerBrandCheckException(name) {\n return new TypeError('ReadableByteStreamController.prototype.' + name + ' can only be used on a ReadableByteStreamController');\n}\n\n// Helper function for ReadableStream pipeThrough\n\nfunction ifIsObjectAndHasAPromiseIsHandledInternalSlotSetPromiseIsHandledToTrue(promise) {\n try {\n // This relies on the brand-check that is enforced by Promise.prototype.then(). As with the rest of the reference\n // implementation, it doesn't attempt to do the right thing if someone has modified the global environment.\n Promise.prototype.then.call(promise, undefined, function () {});\n } catch (e) {\n // The brand check failed, therefore the internal slot is not present and there's nothing further to do.\n }\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar transformStream = __w_pdfjs_require__(6);\nvar readableStream = __w_pdfjs_require__(4);\nvar writableStream = __w_pdfjs_require__(2);\n\nexports.TransformStream = transformStream.TransformStream;\nexports.ReadableStream = readableStream.ReadableStream;\nexports.IsReadableStreamDisturbed = readableStream.IsReadableStreamDisturbed;\nexports.ReadableStreamDefaultControllerClose = readableStream.ReadableStreamDefaultControllerClose;\nexports.ReadableStreamDefaultControllerEnqueue = readableStream.ReadableStreamDefaultControllerEnqueue;\nexports.ReadableStreamDefaultControllerError = readableStream.ReadableStreamDefaultControllerError;\nexports.ReadableStreamDefaultControllerGetDesiredSize = readableStream.ReadableStreamDefaultControllerGetDesiredSize;\nexports.AcquireWritableStreamDefaultWriter = writableStream.AcquireWritableStreamDefaultWriter;\nexports.IsWritableStream = writableStream.IsWritableStream;\nexports.IsWritableStreamLocked = writableStream.IsWritableStreamLocked;\nexports.WritableStream = writableStream.WritableStream;\nexports.WritableStreamAbort = writableStream.WritableStreamAbort;\nexports.WritableStreamDefaultControllerError = writableStream.WritableStreamDefaultControllerError;\nexports.WritableStreamDefaultWriterCloseWithErrorPropagation = writableStream.WritableStreamDefaultWriterCloseWithErrorPropagation;\nexports.WritableStreamDefaultWriterRelease = writableStream.WritableStreamDefaultWriterRelease;\nexports.WritableStreamDefaultWriterWrite = writableStream.WritableStreamDefaultWriterWrite;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\n\"use strict\";\n\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = __w_pdfjs_require__(1),\n assert = _require.assert;\n\nvar _require2 = __w_pdfjs_require__(0),\n InvokeOrNoop = _require2.InvokeOrNoop,\n PromiseInvokeOrPerformFallback = _require2.PromiseInvokeOrPerformFallback,\n PromiseInvokeOrNoop = _require2.PromiseInvokeOrNoop,\n typeIsObject = _require2.typeIsObject;\n\nvar _require3 = __w_pdfjs_require__(4),\n ReadableStream = _require3.ReadableStream,\n ReadableStreamDefaultControllerClose = _require3.ReadableStreamDefaultControllerClose,\n ReadableStreamDefaultControllerEnqueue = _require3.ReadableStreamDefaultControllerEnqueue,\n ReadableStreamDefaultControllerError = _require3.ReadableStreamDefaultControllerError,\n ReadableStreamDefaultControllerGetDesiredSize = _require3.ReadableStreamDefaultControllerGetDesiredSize;\n\nvar _require4 = __w_pdfjs_require__(2),\n WritableStream = _require4.WritableStream,\n WritableStreamDefaultControllerError = _require4.WritableStreamDefaultControllerError;\n\n// Methods on the transform stream controller object\n\nfunction TransformStreamCloseReadable(transformStream) {\n // console.log('TransformStreamCloseReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n TransformStreamCloseReadableInternal(transformStream);\n}\n\nfunction TransformStreamEnqueueToReadable(transformStream, chunk) {\n // console.log('TransformStreamEnqueueToReadable()');\n\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n if (transformStream._readableClosed === true) {\n throw new TypeError('Readable side is already closed');\n }\n\n // We throttle transformer.transform invocation based on the backpressure of the ReadableStream, but we still\n // accept TransformStreamEnqueueToReadable() calls.\n\n var controller = transformStream._readableController;\n\n try {\n ReadableStreamDefaultControllerEnqueue(controller, chunk);\n } catch (e) {\n // This happens when readableStrategy.size() throws.\n // The ReadableStream has already errored itself.\n transformStream._readableClosed = true;\n TransformStreamErrorIfNeeded(transformStream, e);\n\n throw transformStream._storedError;\n }\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller);\n var maybeBackpressure = desiredSize <= 0;\n\n if (maybeBackpressure === true && transformStream._backpressure === false) {\n // This allows pull() again. When desiredSize is 0, it's possible that a pull() will happen immediately (but\n // asynchronously) after this because of pending read()s and set _backpressure back to false.\n //\n // If pull() could be called from inside enqueue(), then this logic would be wrong. This cannot happen\n // because there is always a promise pending from start() or pull() when _backpressure is false.\n TransformStreamSetBackpressure(transformStream, true);\n }\n}\n\nfunction TransformStreamError(transformStream, e) {\n if (transformStream._errored === true) {\n throw new TypeError('TransformStream is already errored');\n }\n\n TransformStreamErrorInternal(transformStream, e);\n}\n\n// Abstract operations.\n\nfunction TransformStreamCloseReadableInternal(transformStream) {\n assert(transformStream._errored === false);\n assert(transformStream._readableClosed === false);\n\n try {\n ReadableStreamDefaultControllerClose(transformStream._readableController);\n } catch (e) {\n assert(false);\n }\n\n transformStream._readableClosed = true;\n}\n\nfunction TransformStreamErrorIfNeeded(transformStream, e) {\n if (transformStream._errored === false) {\n TransformStreamErrorInternal(transformStream, e);\n }\n}\n\nfunction TransformStreamErrorInternal(transformStream, e) {\n // console.log('TransformStreamErrorInternal()');\n\n assert(transformStream._errored === false);\n\n transformStream._errored = true;\n transformStream._storedError = e;\n\n if (transformStream._writableDone === false) {\n WritableStreamDefaultControllerError(transformStream._writableController, e);\n }\n if (transformStream._readableClosed === false) {\n ReadableStreamDefaultControllerError(transformStream._readableController, e);\n }\n}\n\n// Used for preventing the next write() call on TransformStreamSink until there\n// is no longer backpressure.\nfunction TransformStreamReadableReadyPromise(transformStream) {\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === false) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === true, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n}\n\nfunction TransformStreamSetBackpressure(transformStream, backpressure) {\n // console.log(`TransformStreamSetBackpressure(${backpressure})`);\n\n // Passes also when called during construction.\n assert(transformStream._backpressure !== backpressure, 'TransformStreamSetBackpressure() should be called only when backpressure is changed');\n\n if (transformStream._backpressureChangePromise !== undefined) {\n // The fulfillment value is just for a sanity check.\n transformStream._backpressureChangePromise_resolve(backpressure);\n }\n\n transformStream._backpressureChangePromise = new Promise(function (resolve) {\n transformStream._backpressureChangePromise_resolve = resolve;\n });\n\n transformStream._backpressureChangePromise.then(function (resolution) {\n assert(resolution !== backpressure, '_backpressureChangePromise should be fulfilled only when backpressure is changed');\n });\n\n transformStream._backpressure = backpressure;\n}\n\nfunction TransformStreamDefaultTransform(chunk, transformStreamController) {\n var transformStream = transformStreamController._controlledTransformStream;\n TransformStreamEnqueueToReadable(transformStream, chunk);\n return Promise.resolve();\n}\n\nfunction TransformStreamTransform(transformStream, chunk) {\n // console.log('TransformStreamTransform()');\n\n assert(transformStream._errored === false);\n assert(transformStream._transforming === false);\n assert(transformStream._backpressure === false);\n\n transformStream._transforming = true;\n\n var transformer = transformStream._transformer;\n var controller = transformStream._transformStreamController;\n\n var transformPromise = PromiseInvokeOrPerformFallback(transformer, 'transform', [chunk, controller], TransformStreamDefaultTransform, [chunk, controller]);\n\n return transformPromise.then(function () {\n transformStream._transforming = false;\n\n return TransformStreamReadableReadyPromise(transformStream);\n }, function (e) {\n TransformStreamErrorIfNeeded(transformStream, e);\n return Promise.reject(e);\n });\n}\n\nfunction IsTransformStreamDefaultController(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_controlledTransformStream')) {\n return false;\n }\n\n return true;\n}\n\nfunction IsTransformStream(x) {\n if (!typeIsObject(x)) {\n return false;\n }\n\n if (!Object.prototype.hasOwnProperty.call(x, '_transformStreamController')) {\n return false;\n }\n\n return true;\n}\n\nvar TransformStreamSink = function () {\n function TransformStreamSink(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSink);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSink, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._writableController = c;\n\n return this._startPromise.then(function () {\n return TransformStreamReadableReadyPromise(transformStream);\n });\n }\n }, {\n key: 'write',\n value: function write(chunk) {\n // console.log('TransformStreamSink.write()');\n\n var transformStream = this._transformStream;\n\n return TransformStreamTransform(transformStream, chunk);\n }\n }, {\n key: 'abort',\n value: function abort() {\n var transformStream = this._transformStream;\n transformStream._writableDone = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Writable side aborted'));\n }\n }, {\n key: 'close',\n value: function close() {\n // console.log('TransformStreamSink.close()');\n\n var transformStream = this._transformStream;\n\n assert(transformStream._transforming === false);\n\n transformStream._writableDone = true;\n\n var flushPromise = PromiseInvokeOrNoop(transformStream._transformer, 'flush', [transformStream._transformStreamController]);\n // Return a promise that is fulfilled with undefined on success.\n return flushPromise.then(function () {\n if (transformStream._errored === true) {\n return Promise.reject(transformStream._storedError);\n }\n if (transformStream._readableClosed === false) {\n TransformStreamCloseReadableInternal(transformStream);\n }\n return Promise.resolve();\n }).catch(function (r) {\n TransformStreamErrorIfNeeded(transformStream, r);\n return Promise.reject(transformStream._storedError);\n });\n }\n }]);\n\n return TransformStreamSink;\n}();\n\nvar TransformStreamSource = function () {\n function TransformStreamSource(transformStream, startPromise) {\n _classCallCheck(this, TransformStreamSource);\n\n this._transformStream = transformStream;\n this._startPromise = startPromise;\n }\n\n _createClass(TransformStreamSource, [{\n key: 'start',\n value: function start(c) {\n var transformStream = this._transformStream;\n\n transformStream._readableController = c;\n\n return this._startPromise.then(function () {\n // Prevent the first pull() call until there is backpressure.\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n if (transformStream._backpressure === true) {\n return Promise.resolve();\n }\n\n assert(transformStream._backpressure === false, '_backpressure should have been initialized');\n\n return transformStream._backpressureChangePromise;\n });\n }\n }, {\n key: 'pull',\n value: function pull() {\n // console.log('TransformStreamSource.pull()');\n\n var transformStream = this._transformStream;\n\n // Invariant. Enforced by the promises returned by start() and pull().\n assert(transformStream._backpressure === true, 'pull() should be never called while _backpressure is false');\n\n assert(transformStream._backpressureChangePromise !== undefined, '_backpressureChangePromise should have been initialized');\n\n TransformStreamSetBackpressure(transformStream, false);\n\n // Prevent the next pull() call until there is backpressure.\n return transformStream._backpressureChangePromise;\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n var transformStream = this._transformStream;\n transformStream._readableClosed = true;\n TransformStreamErrorInternal(transformStream, new TypeError('Readable side canceled'));\n }\n }]);\n\n return TransformStreamSource;\n}();\n\nvar TransformStreamDefaultController = function () {\n function TransformStreamDefaultController(transformStream) {\n _classCallCheck(this, TransformStreamDefaultController);\n\n if (IsTransformStream(transformStream) === false) {\n throw new TypeError('TransformStreamDefaultController can only be ' + 'constructed with a TransformStream instance');\n }\n\n if (transformStream._transformStreamController !== undefined) {\n throw new TypeError('TransformStreamDefaultController instances can ' + 'only be created by the TransformStream constructor');\n }\n\n this._controlledTransformStream = transformStream;\n }\n\n _createClass(TransformStreamDefaultController, [{\n key: 'enqueue',\n value: function enqueue(chunk) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('enqueue');\n }\n\n TransformStreamEnqueueToReadable(this._controlledTransformStream, chunk);\n }\n }, {\n key: 'close',\n value: function close() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('close');\n }\n\n TransformStreamCloseReadable(this._controlledTransformStream);\n }\n }, {\n key: 'error',\n value: function error(reason) {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('error');\n }\n\n TransformStreamError(this._controlledTransformStream, reason);\n }\n }, {\n key: 'desiredSize',\n get: function get() {\n if (IsTransformStreamDefaultController(this) === false) {\n throw defaultControllerBrandCheckException('desiredSize');\n }\n\n var transformStream = this._controlledTransformStream;\n var readableController = transformStream._readableController;\n\n return ReadableStreamDefaultControllerGetDesiredSize(readableController);\n }\n }]);\n\n return TransformStreamDefaultController;\n}();\n\nvar TransformStream = function () {\n function TransformStream() {\n var transformer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, TransformStream);\n\n this._transformer = transformer;\n var readableStrategy = transformer.readableStrategy,\n writableStrategy = transformer.writableStrategy;\n\n\n this._transforming = false;\n this._errored = false;\n this._storedError = undefined;\n\n this._writableController = undefined;\n this._readableController = undefined;\n this._transformStreamController = undefined;\n\n this._writableDone = false;\n this._readableClosed = false;\n\n this._backpressure = undefined;\n this._backpressureChangePromise = undefined;\n this._backpressureChangePromise_resolve = undefined;\n\n this._transformStreamController = new TransformStreamDefaultController(this);\n\n var startPromise_resolve = void 0;\n var startPromise = new Promise(function (resolve) {\n startPromise_resolve = resolve;\n });\n\n var source = new TransformStreamSource(this, startPromise);\n\n this._readable = new ReadableStream(source, readableStrategy);\n\n var sink = new TransformStreamSink(this, startPromise);\n\n this._writable = new WritableStream(sink, writableStrategy);\n\n assert(this._writableController !== undefined);\n assert(this._readableController !== undefined);\n\n var desiredSize = ReadableStreamDefaultControllerGetDesiredSize(this._readableController);\n // Set _backpressure based on desiredSize. As there is no read() at this point, we can just interpret\n // desiredSize being non-positive as backpressure.\n TransformStreamSetBackpressure(this, desiredSize <= 0);\n\n var transformStream = this;\n var startResult = InvokeOrNoop(transformer, 'start', [transformStream._transformStreamController]);\n startPromise_resolve(startResult);\n startPromise.catch(function (e) {\n // The underlyingSink and underlyingSource will error the readable and writable ends on their own.\n if (transformStream._errored === false) {\n transformStream._errored = true;\n transformStream._storedError = e;\n }\n });\n }\n\n _createClass(TransformStream, [{\n key: 'readable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('readable');\n }\n\n return this._readable;\n }\n }, {\n key: 'writable',\n get: function get() {\n if (IsTransformStream(this) === false) {\n throw streamBrandCheckException('writable');\n }\n\n return this._writable;\n }\n }]);\n\n return TransformStream;\n}();\n\nmodule.exports = { TransformStream: TransformStream };\n\n// Helper functions for the TransformStreamDefaultController.\n\nfunction defaultControllerBrandCheckException(name) {\n return new TypeError('TransformStreamDefaultController.prototype.' + name + ' can only be used on a TransformStreamDefaultController');\n}\n\n// Helper functions for the TransformStream.\n\nfunction streamBrandCheckException(name) {\n return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __w_pdfjs_require__) {\n\nmodule.exports = __w_pdfjs_require__(5);\n\n\n/***/ })\n/******/ ])));\n\n\n// WEBPACK FOOTER //\n// external/streams/streams-lib.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationBorderStyleType, AnnotationFieldFlag, AnnotationFlag,\n AnnotationType, isArray, isInt, OPS, stringToBytes, stringToPDFString, Util,\n warn\n} from '../shared/util';\nimport { Catalog, FileSpec, ObjectLoader } from './obj';\nimport { Dict, isDict, isName, isRef, isStream } from './primitives';\nimport { ColorSpace } from './colorspace';\nimport { OperatorList } from './evaluator';\nimport { Stream } from './stream';\n\n/**\n * @class\n * @alias AnnotationFactory\n */\nfunction AnnotationFactory() {}\nAnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ {\n /**\n * @param {XRef} xref\n * @param {Object} ref\n * @param {PDFManager} pdfManager\n * @param {Object} idFactory\n * @returns {Annotation}\n */\n create: function AnnotationFactory_create(xref, ref, pdfManager, idFactory) {\n var dict = xref.fetchIfRef(ref);\n if (!isDict(dict)) {\n return;\n }\n var id = isRef(ref) ? ref.toString() : 'annot_' + idFactory.createObjId();\n\n // Determine the annotation's subtype.\n var subtype = dict.get('Subtype');\n subtype = isName(subtype) ? subtype.name : null;\n\n // Return the right annotation object based on the subtype and field type.\n var parameters = {\n xref,\n dict,\n ref: isRef(ref) ? ref : null,\n subtype,\n id,\n pdfManager,\n };\n\n switch (subtype) {\n case 'Link':\n return new LinkAnnotation(parameters);\n\n case 'Text':\n return new TextAnnotation(parameters);\n\n case 'Widget':\n var fieldType = Util.getInheritableProperty(dict, 'FT');\n fieldType = isName(fieldType) ? fieldType.name : null;\n\n switch (fieldType) {\n case 'Tx':\n return new TextWidgetAnnotation(parameters);\n case 'Btn':\n return new ButtonWidgetAnnotation(parameters);\n case 'Ch':\n return new ChoiceWidgetAnnotation(parameters);\n }\n warn('Unimplemented widget field type \"' + fieldType + '\", ' +\n 'falling back to base field type.');\n return new WidgetAnnotation(parameters);\n\n case 'Popup':\n return new PopupAnnotation(parameters);\n\n case 'Line':\n return new LineAnnotation(parameters);\n\n case 'Highlight':\n return new HighlightAnnotation(parameters);\n\n case 'Underline':\n return new UnderlineAnnotation(parameters);\n\n case 'Squiggly':\n return new SquigglyAnnotation(parameters);\n\n case 'StrikeOut':\n return new StrikeOutAnnotation(parameters);\n\n case 'FileAttachment':\n return new FileAttachmentAnnotation(parameters);\n\n default:\n if (!subtype) {\n warn('Annotation is missing the required /Subtype.');\n } else {\n warn('Unimplemented annotation type \"' + subtype + '\", ' +\n 'falling back to base annotation.');\n }\n return new Annotation(parameters);\n }\n },\n};\n\nvar Annotation = (function AnnotationClosure() {\n // 12.5.5: Algorithm: Appearance streams\n function getTransformMatrix(rect, bbox, matrix) {\n var bounds = Util.getAxialAlignedBoundingBox(bbox, matrix);\n var minX = bounds[0];\n var minY = bounds[1];\n var maxX = bounds[2];\n var maxY = bounds[3];\n\n if (minX === maxX || minY === maxY) {\n // From real-life file, bbox was [0, 0, 0, 0]. In this case,\n // just apply the transform for rect\n return [1, 0, 0, 1, rect[0], rect[1]];\n }\n\n var xRatio = (rect[2] - rect[0]) / (maxX - minX);\n var yRatio = (rect[3] - rect[1]) / (maxY - minY);\n return [\n xRatio,\n 0,\n 0,\n yRatio,\n rect[0] - minX * xRatio,\n rect[1] - minY * yRatio\n ];\n }\n\n function Annotation(params) {\n var dict = params.dict;\n\n this.setFlags(dict.get('F'));\n this.setRectangle(dict.getArray('Rect'));\n this.setColor(dict.getArray('C'));\n this.setBorderStyle(dict);\n this.setAppearance(dict);\n\n // Expose public properties using a data object.\n this.data = {};\n this.data.id = params.id;\n this.data.subtype = params.subtype;\n this.data.annotationFlags = this.flags;\n this.data.rect = this.rectangle;\n this.data.color = this.color;\n this.data.borderStyle = this.borderStyle;\n this.data.hasAppearance = !!this.appearance;\n }\n\n Annotation.prototype = {\n /**\n * @private\n */\n _hasFlag: function Annotation_hasFlag(flags, flag) {\n return !!(flags & flag);\n },\n\n /**\n * @private\n */\n _isViewable: function Annotation_isViewable(flags) {\n return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.HIDDEN) &&\n !this._hasFlag(flags, AnnotationFlag.NOVIEW);\n },\n\n /**\n * @private\n */\n _isPrintable: function AnnotationFlag_isPrintable(flags) {\n return this._hasFlag(flags, AnnotationFlag.PRINT) &&\n !this._hasFlag(flags, AnnotationFlag.INVISIBLE) &&\n !this._hasFlag(flags, AnnotationFlag.HIDDEN);\n },\n\n /**\n * @return {boolean}\n */\n get viewable() {\n if (this.flags === 0) {\n return true;\n }\n return this._isViewable(this.flags);\n },\n\n /**\n * @return {boolean}\n */\n get printable() {\n if (this.flags === 0) {\n return false;\n }\n return this._isPrintable(this.flags);\n },\n\n /**\n * Set the flags.\n *\n * @public\n * @memberof Annotation\n * @param {number} flags - Unsigned 32-bit integer specifying annotation\n * characteristics\n * @see {@link shared/util.js}\n */\n setFlags: function Annotation_setFlags(flags) {\n this.flags = (isInt(flags) && flags > 0) ? flags : 0;\n },\n\n /**\n * Check if a provided flag is set.\n *\n * @public\n * @memberof Annotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * characteristic\n * @return {boolean}\n * @see {@link shared/util.js}\n */\n hasFlag: function Annotation_hasFlag(flag) {\n return this._hasFlag(this.flags, flag);\n },\n\n /**\n * Set the rectangle.\n *\n * @public\n * @memberof Annotation\n * @param {Array} rectangle - The rectangle array with exactly four entries\n */\n setRectangle: function Annotation_setRectangle(rectangle) {\n if (isArray(rectangle) && rectangle.length === 4) {\n this.rectangle = Util.normalizeRect(rectangle);\n } else {\n this.rectangle = [0, 0, 0, 0];\n }\n },\n\n /**\n * Set the color and take care of color space conversion.\n *\n * @public\n * @memberof Annotation\n * @param {Array} color - The color array containing either 0\n * (transparent), 1 (grayscale), 3 (RGB) or\n * 4 (CMYK) elements\n */\n setColor: function Annotation_setColor(color) {\n var rgbColor = new Uint8Array(3); // Black in RGB color space (default)\n if (!isArray(color)) {\n this.color = rgbColor;\n return;\n }\n\n switch (color.length) {\n case 0: // Transparent, which we indicate with a null value\n this.color = null;\n break;\n\n case 1: // Convert grayscale to RGB\n ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);\n this.color = rgbColor;\n break;\n\n case 3: // Convert RGB percentages to RGB\n ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);\n this.color = rgbColor;\n break;\n\n case 4: // Convert CMYK to RGB\n ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);\n this.color = rgbColor;\n break;\n\n default:\n this.color = rgbColor;\n break;\n }\n },\n\n /**\n * Set the border style (as AnnotationBorderStyle object).\n *\n * @public\n * @memberof Annotation\n * @param {Dict} borderStyle - The border style dictionary\n */\n setBorderStyle: function Annotation_setBorderStyle(borderStyle) {\n this.borderStyle = new AnnotationBorderStyle();\n if (!isDict(borderStyle)) {\n return;\n }\n if (borderStyle.has('BS')) {\n var dict = borderStyle.get('BS');\n var dictType = dict.get('Type');\n\n if (!dictType || isName(dictType, 'Border')) {\n this.borderStyle.setWidth(dict.get('W'));\n this.borderStyle.setStyle(dict.get('S'));\n this.borderStyle.setDashArray(dict.getArray('D'));\n }\n } else if (borderStyle.has('Border')) {\n var array = borderStyle.getArray('Border');\n if (isArray(array) && array.length >= 3) {\n this.borderStyle.setHorizontalCornerRadius(array[0]);\n this.borderStyle.setVerticalCornerRadius(array[1]);\n this.borderStyle.setWidth(array[2]);\n\n if (array.length === 4) { // Dash array available\n this.borderStyle.setDashArray(array[3]);\n }\n }\n } else {\n // There are no border entries in the dictionary. According to the\n // specification, we should draw a solid border of width 1 in that\n // case, but Adobe Reader did not implement that part of the\n // specification and instead draws no border at all, so we do the same.\n // See also https://github.com/mozilla/pdf.js/issues/6179.\n this.borderStyle.setWidth(0);\n }\n },\n\n /**\n * Set the (normal) appearance.\n *\n * @public\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n setAppearance: function Annotation_setAppearance(dict) {\n this.appearance = null;\n\n var appearanceStates = dict.get('AP');\n if (!isDict(appearanceStates)) {\n return;\n }\n\n // In case the normal appearance is a stream, then it is used directly.\n var normalAppearanceState = appearanceStates.get('N');\n if (isStream(normalAppearanceState)) {\n this.appearance = normalAppearanceState;\n return;\n }\n if (!isDict(normalAppearanceState)) {\n return;\n }\n\n // In case the normal appearance is a dictionary, the `AS` entry provides\n // the key of the stream in this dictionary.\n var as = dict.get('AS');\n if (!isName(as) || !normalAppearanceState.has(as.name)) {\n return;\n }\n this.appearance = normalAppearanceState.get(as.name);\n },\n\n /**\n * Prepare the annotation for working with a popup in the display layer.\n *\n * @private\n * @memberof Annotation\n * @param {Dict} dict - The annotation's data dictionary\n */\n _preparePopup: function Annotation_preparePopup(dict) {\n if (!dict.has('C')) {\n // Fall back to the default background color.\n this.data.color = null;\n }\n\n this.data.hasPopup = dict.has('Popup');\n this.data.title = stringToPDFString(dict.get('T') || '');\n this.data.contents = stringToPDFString(dict.get('Contents') || '');\n },\n\n loadResources: function Annotation_loadResources(keys) {\n return this.appearance.dict.getAsync('Resources').then((resources) => {\n if (!resources) {\n return;\n }\n let objectLoader = new ObjectLoader(resources, keys, resources.xref);\n\n return objectLoader.load().then(function() {\n return resources;\n });\n });\n },\n\n getOperatorList: function Annotation_getOperatorList(evaluator, task,\n renderForms) {\n if (!this.appearance) {\n return Promise.resolve(new OperatorList());\n }\n\n var data = this.data;\n var appearanceDict = this.appearance.dict;\n var resourcesPromise = this.loadResources([\n 'ExtGState',\n 'ColorSpace',\n 'Pattern',\n 'Shading',\n 'XObject',\n 'Font'\n // ProcSet\n // Properties\n ]);\n var bbox = appearanceDict.getArray('BBox') || [0, 0, 1, 1];\n var matrix = appearanceDict.getArray('Matrix') || [1, 0, 0, 1, 0, 0];\n var transform = getTransformMatrix(data.rect, bbox, matrix);\n\n return resourcesPromise.then((resources) => {\n var opList = new OperatorList();\n opList.addOp(OPS.beginAnnotation, [data.rect, transform, matrix]);\n return evaluator.getOperatorList({\n stream: this.appearance,\n task,\n resources,\n operatorList: opList,\n }).then(() => {\n opList.addOp(OPS.endAnnotation, []);\n this.appearance.reset();\n return opList;\n });\n });\n },\n };\n\n return Annotation;\n})();\n\n/**\n * Contains all data regarding an annotation's border style.\n *\n * @class\n */\nvar AnnotationBorderStyle = (function AnnotationBorderStyleClosure() {\n /**\n * @constructor\n * @private\n */\n function AnnotationBorderStyle() {\n this.width = 1;\n this.style = AnnotationBorderStyleType.SOLID;\n this.dashArray = [3];\n this.horizontalCornerRadius = 0;\n this.verticalCornerRadius = 0;\n }\n\n AnnotationBorderStyle.prototype = {\n /**\n * Set the width.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {integer} width - The width\n */\n setWidth: function AnnotationBorderStyle_setWidth(width) {\n if (width === (width | 0)) {\n this.width = width;\n }\n },\n\n /**\n * Set the style.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Object} style - The style object\n * @see {@link shared/util.js}\n */\n setStyle: function AnnotationBorderStyle_setStyle(style) {\n if (!style) {\n return;\n }\n switch (style.name) {\n case 'S':\n this.style = AnnotationBorderStyleType.SOLID;\n break;\n\n case 'D':\n this.style = AnnotationBorderStyleType.DASHED;\n break;\n\n case 'B':\n this.style = AnnotationBorderStyleType.BEVELED;\n break;\n\n case 'I':\n this.style = AnnotationBorderStyleType.INSET;\n break;\n\n case 'U':\n this.style = AnnotationBorderStyleType.UNDERLINE;\n break;\n\n default:\n break;\n }\n },\n\n /**\n * Set the dash array.\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {Array} dashArray - The dash array with at least one element\n */\n setDashArray: function AnnotationBorderStyle_setDashArray(dashArray) {\n // We validate the dash array, but we do not use it because CSS does not\n // allow us to change spacing of dashes. For more information, visit\n // http://www.w3.org/TR/css3-background/#the-border-style.\n if (isArray(dashArray) && dashArray.length > 0) {\n // According to the PDF specification: the elements in a dashArray\n // shall be numbers that are nonnegative and not all equal to zero.\n var isValid = true;\n var allZeros = true;\n for (var i = 0, len = dashArray.length; i < len; i++) {\n var element = dashArray[i];\n var validNumber = (+element >= 0);\n if (!validNumber) {\n isValid = false;\n break;\n } else if (element > 0) {\n allZeros = false;\n }\n }\n if (isValid && !allZeros) {\n this.dashArray = dashArray;\n } else {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n } else if (dashArray) {\n this.width = 0; // Adobe behavior when the array is invalid.\n }\n },\n\n /**\n * Set the horizontal corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {integer} radius - The horizontal corner radius\n */\n setHorizontalCornerRadius:\n function AnnotationBorderStyle_setHorizontalCornerRadius(radius) {\n if (radius === (radius | 0)) {\n this.horizontalCornerRadius = radius;\n }\n },\n\n /**\n * Set the vertical corner radius (from a Border dictionary).\n *\n * @public\n * @memberof AnnotationBorderStyle\n * @param {integer} radius - The vertical corner radius\n */\n setVerticalCornerRadius:\n function AnnotationBorderStyle_setVerticalCornerRadius(radius) {\n if (radius === (radius | 0)) {\n this.verticalCornerRadius = radius;\n }\n },\n };\n\n return AnnotationBorderStyle;\n})();\n\nvar WidgetAnnotation = (function WidgetAnnotationClosure() {\n function WidgetAnnotation(params) {\n Annotation.call(this, params);\n\n var dict = params.dict;\n var data = this.data;\n\n data.annotationType = AnnotationType.WIDGET;\n data.fieldName = this._constructFieldName(dict);\n data.fieldValue = Util.getInheritableProperty(dict, 'V',\n /* getArray = */ true);\n data.alternativeText = stringToPDFString(dict.get('TU') || '');\n data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || '';\n var fieldType = Util.getInheritableProperty(dict, 'FT');\n data.fieldType = isName(fieldType) ? fieldType.name : null;\n this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty;\n\n data.fieldFlags = Util.getInheritableProperty(dict, 'Ff');\n if (!isInt(data.fieldFlags) || data.fieldFlags < 0) {\n data.fieldFlags = 0;\n }\n\n data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY);\n\n // Hide signatures because we cannot validate them.\n if (data.fieldType === 'Sig') {\n // this.setFlags(AnnotationFlag.HIDDEN);\n }\n }\n\n Util.inherit(WidgetAnnotation, Annotation, {\n /**\n * Construct the (fully qualified) field name from the (partial) field\n * names of the field and its ancestors.\n *\n * @private\n * @memberof WidgetAnnotation\n * @param {Dict} dict - Complete widget annotation dictionary\n * @return {string}\n */\n _constructFieldName: function WidgetAnnotation_constructFieldName(dict) {\n // Both the `Parent` and `T` fields are optional. While at least one of\n // them should be provided, bad PDF generators may fail to do so.\n if (!dict.has('T') && !dict.has('Parent')) {\n warn('Unknown field name, falling back to empty field name.');\n return '';\n }\n\n // If no parent exists, the partial and fully qualified names are equal.\n if (!dict.has('Parent')) {\n return stringToPDFString(dict.get('T'));\n }\n\n // Form the fully qualified field name by appending the partial name to\n // the parent's fully qualified name, separated by a period.\n var fieldName = [];\n if (dict.has('T')) {\n fieldName.unshift(stringToPDFString(dict.get('T')));\n }\n\n var loopDict = dict;\n while (loopDict.has('Parent')) {\n loopDict = loopDict.get('Parent');\n if (!isDict(loopDict)) {\n // Even though it is not allowed according to the PDF specification,\n // bad PDF generators may provide a `Parent` entry that is not a\n // dictionary, but `null` for example (issue 8143).\n break;\n }\n\n if (loopDict.has('T')) {\n fieldName.unshift(stringToPDFString(loopDict.get('T')));\n }\n }\n return fieldName.join('.');\n },\n\n /**\n * Check if a provided field flag is set.\n *\n * @public\n * @memberof WidgetAnnotation\n * @param {number} flag - Hexadecimal representation for an annotation\n * field characteristic\n * @return {boolean}\n * @see {@link shared/util.js}\n */\n hasFieldFlag: function WidgetAnnotation_hasFieldFlag(flag) {\n return !!(this.data.fieldFlags & flag);\n },\n });\n\n return WidgetAnnotation;\n})();\n\nvar TextWidgetAnnotation = (function TextWidgetAnnotationClosure() {\n function TextWidgetAnnotation(params) {\n WidgetAnnotation.call(this, params);\n\n // The field value is always a string.\n this.data.fieldValue = stringToPDFString(this.data.fieldValue || '');\n\n // Determine the alignment of text in the field.\n var alignment = Util.getInheritableProperty(params.dict, 'Q');\n if (!isInt(alignment) || alignment < 0 || alignment > 2) {\n alignment = null;\n }\n this.data.textAlignment = alignment;\n\n // Determine the maximum length of text in the field.\n var maximumLength = Util.getInheritableProperty(params.dict, 'MaxLen');\n if (!isInt(maximumLength) || maximumLength < 0) {\n maximumLength = null;\n }\n this.data.maxLen = maximumLength;\n\n // Process field flags for the display layer.\n this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE);\n this.data.comb = this.hasFieldFlag(AnnotationFieldFlag.COMB) &&\n !this.hasFieldFlag(AnnotationFieldFlag.MULTILINE) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PASSWORD) &&\n !this.hasFieldFlag(AnnotationFieldFlag.FILESELECT) &&\n this.data.maxLen !== null;\n }\n\n Util.inherit(TextWidgetAnnotation, WidgetAnnotation, {\n getOperatorList:\n function TextWidgetAnnotation_getOperatorList(evaluator, task,\n renderForms) {\n var operatorList = new OperatorList();\n\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms) {\n return Promise.resolve(operatorList);\n }\n\n if (this.appearance) {\n return Annotation.prototype.getOperatorList.call(this, evaluator, task,\n renderForms);\n }\n\n // Even if there is an appearance stream, ignore it. This is the\n // behaviour used by Adobe Reader.\n if (!this.data.defaultAppearance) {\n return Promise.resolve(operatorList);\n }\n\n var stream = new Stream(stringToBytes(this.data.defaultAppearance));\n return evaluator.getOperatorList({\n stream,\n task,\n resources: this.fieldResources,\n operatorList,\n }).then(function () {\n return operatorList;\n });\n },\n });\n\n return TextWidgetAnnotation;\n})();\n\nvar ButtonWidgetAnnotation = (function ButtonWidgetAnnotationClosure() {\n function ButtonWidgetAnnotation(params) {\n WidgetAnnotation.call(this, params);\n\n this.data.checkBox = !this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n if (this.data.checkBox) {\n if (!isName(this.data.fieldValue)) {\n return;\n }\n this.data.fieldValue = this.data.fieldValue.name;\n }\n\n this.data.radioButton = this.hasFieldFlag(AnnotationFieldFlag.RADIO) &&\n !this.hasFieldFlag(AnnotationFieldFlag.PUSHBUTTON);\n if (this.data.radioButton) {\n this.data.fieldValue = this.data.buttonValue = null;\n\n // The parent field's `V` entry holds a `Name` object with the appearance\n // state of whichever child field is currently in the \"on\" state.\n var fieldParent = params.dict.get('Parent');\n if (isDict(fieldParent) && fieldParent.has('V')) {\n var fieldParentValue = fieldParent.get('V');\n if (isName(fieldParentValue)) {\n this.data.fieldValue = fieldParentValue.name;\n }\n }\n\n // The button's value corresponds to its appearance state.\n var appearanceStates = params.dict.get('AP');\n if (!isDict(appearanceStates)) {\n return;\n }\n var normalAppearanceState = appearanceStates.get('N');\n if (!isDict(normalAppearanceState)) {\n return;\n }\n var keys = normalAppearanceState.getKeys();\n for (var i = 0, ii = keys.length; i < ii; i++) {\n if (keys[i] !== 'Off') {\n this.data.buttonValue = keys[i];\n break;\n }\n }\n }\n }\n\n Util.inherit(ButtonWidgetAnnotation, WidgetAnnotation, {\n getOperatorList:\n function ButtonWidgetAnnotation_getOperatorList(evaluator, task,\n renderForms) {\n var operatorList = new OperatorList();\n\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms) {\n return Promise.resolve(operatorList);\n }\n\n if (this.appearance) {\n return Annotation.prototype.getOperatorList.call(this, evaluator, task,\n renderForms);\n }\n return Promise.resolve(operatorList);\n },\n });\n\n return ButtonWidgetAnnotation;\n})();\n\nvar ChoiceWidgetAnnotation = (function ChoiceWidgetAnnotationClosure() {\n function ChoiceWidgetAnnotation(params) {\n WidgetAnnotation.call(this, params);\n\n // Determine the options. The options array may consist of strings or\n // arrays. If the array consists of arrays, then the first element of\n // each array is the export value and the second element of each array is\n // the display value. If the array consists of strings, then these\n // represent both the export and display value. In this case, we convert\n // it to an array of arrays as well for convenience in the display layer.\n // Note that the specification does not state that the `Opt` field is\n // inheritable, but in practice PDF generators do make annotations\n // inherit the options from a parent annotation (issue 8094).\n this.data.options = [];\n\n var options = Util.getInheritableProperty(params.dict, 'Opt');\n if (isArray(options)) {\n var xref = params.xref;\n for (var i = 0, ii = options.length; i < ii; i++) {\n var option = xref.fetchIfRef(options[i]);\n var isOptionArray = isArray(option);\n\n this.data.options[i] = {\n exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,\n displayValue: isOptionArray ? xref.fetchIfRef(option[1]) : option,\n };\n }\n }\n\n // Determine the field value. In this case, it may be a string or an\n // array of strings. For convenience in the display layer, convert the\n // string to an array of one string as well.\n if (!isArray(this.data.fieldValue)) {\n this.data.fieldValue = [this.data.fieldValue];\n }\n\n // Process field flags for the display layer.\n this.data.combo = this.hasFieldFlag(AnnotationFieldFlag.COMBO);\n this.data.multiSelect = this.hasFieldFlag(AnnotationFieldFlag.MULTISELECT);\n }\n\n Util.inherit(ChoiceWidgetAnnotation, WidgetAnnotation, {\n getOperatorList:\n function ChoiceWidgetAnnotation_getOperatorList(evaluator, task,\n renderForms) {\n var operatorList = new OperatorList();\n\n // Do not render form elements on the canvas when interactive forms are\n // enabled. The display layer is responsible for rendering them instead.\n if (renderForms) {\n return Promise.resolve(operatorList);\n }\n\n return Annotation.prototype.getOperatorList.call(this, evaluator, task,\n renderForms);\n },\n });\n\n return ChoiceWidgetAnnotation;\n})();\n\nvar TextAnnotation = (function TextAnnotationClosure() {\n var DEFAULT_ICON_SIZE = 22; // px\n\n function TextAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.TEXT;\n\n if (this.data.hasAppearance) {\n this.data.name = 'NoIcon';\n } else {\n this.data.rect[1] = this.data.rect[3] - DEFAULT_ICON_SIZE;\n this.data.rect[2] = this.data.rect[0] + DEFAULT_ICON_SIZE;\n this.data.name = parameters.dict.has('Name') ?\n parameters.dict.get('Name').name : 'Note';\n }\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(TextAnnotation, Annotation, {});\n\n return TextAnnotation;\n})();\n\nvar LinkAnnotation = (function LinkAnnotationClosure() {\n function LinkAnnotation(params) {\n Annotation.call(this, params);\n\n var data = this.data;\n data.annotationType = AnnotationType.LINK;\n\n Catalog.parseDestDictionary({\n destDict: params.dict,\n resultObj: data,\n docBaseUrl: params.pdfManager.docBaseUrl,\n });\n }\n\n Util.inherit(LinkAnnotation, Annotation, {});\n\n return LinkAnnotation;\n})();\n\nvar PopupAnnotation = (function PopupAnnotationClosure() {\n function PopupAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.POPUP;\n\n var dict = parameters.dict;\n var parentItem = dict.get('Parent');\n if (!parentItem) {\n warn('Popup annotation has a missing or invalid parent annotation.');\n return;\n }\n\n var parentSubtype = parentItem.get('Subtype');\n this.data.parentType = isName(parentSubtype) ? parentSubtype.name : null;\n this.data.parentId = dict.getRaw('Parent').toString();\n this.data.title = stringToPDFString(parentItem.get('T') || '');\n this.data.contents = stringToPDFString(parentItem.get('Contents') || '');\n\n if (!parentItem.has('C')) {\n // Fall back to the default background color.\n this.data.color = null;\n } else {\n this.setColor(parentItem.getArray('C'));\n this.data.color = this.color;\n }\n\n // If the Popup annotation is not viewable, but the parent annotation is,\n // that is most likely a bug. Fallback to inherit the flags from the parent\n // annotation (this is consistent with the behaviour in Adobe Reader).\n if (!this.viewable) {\n var parentFlags = parentItem.get('F');\n if (this._isViewable(parentFlags)) {\n this.setFlags(parentFlags);\n }\n }\n }\n\n Util.inherit(PopupAnnotation, Annotation, {});\n\n return PopupAnnotation;\n})();\n\nvar LineAnnotation = (function LineAnnotationClosure() {\n function LineAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.LINE;\n\n var dict = parameters.dict;\n this.data.lineCoordinates = Util.normalizeRect(dict.getArray('L'));\n this._preparePopup(dict);\n }\n\n Util.inherit(LineAnnotation, Annotation, {});\n\n return LineAnnotation;\n})();\n\nvar HighlightAnnotation = (function HighlightAnnotationClosure() {\n function HighlightAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.HIGHLIGHT;\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(HighlightAnnotation, Annotation, {});\n\n return HighlightAnnotation;\n})();\n\nvar UnderlineAnnotation = (function UnderlineAnnotationClosure() {\n function UnderlineAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.UNDERLINE;\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(UnderlineAnnotation, Annotation, {});\n\n return UnderlineAnnotation;\n})();\n\nvar SquigglyAnnotation = (function SquigglyAnnotationClosure() {\n function SquigglyAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.SQUIGGLY;\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(SquigglyAnnotation, Annotation, {});\n\n return SquigglyAnnotation;\n})();\n\nvar StrikeOutAnnotation = (function StrikeOutAnnotationClosure() {\n function StrikeOutAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n this.data.annotationType = AnnotationType.STRIKEOUT;\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(StrikeOutAnnotation, Annotation, {});\n\n return StrikeOutAnnotation;\n})();\n\nvar FileAttachmentAnnotation = (function FileAttachmentAnnotationClosure() {\n function FileAttachmentAnnotation(parameters) {\n Annotation.call(this, parameters);\n\n var file = new FileSpec(parameters.dict.get('FS'), parameters.xref);\n\n this.data.annotationType = AnnotationType.FILEATTACHMENT;\n this.data.file = file.serializable;\n this._preparePopup(parameters.dict);\n }\n\n Util.inherit(FileAttachmentAnnotation, Annotation, {});\n\n return FileAttachmentAnnotation;\n})();\n\nexport {\n Annotation,\n AnnotationBorderStyle,\n AnnotationFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/annotation.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { warn } from '../shared/util';\n\n// Character types for symbols from 0000 to 00FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar baseTypes = [\n 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'S', 'B', 'S',\n 'WS', 'B', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',\n 'BN', 'BN', 'BN', 'BN', 'B', 'B', 'B', 'S', 'WS', 'ON', 'ON', 'ET',\n 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'ON', 'ES', 'CS', 'ES', 'CS', 'CS',\n 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'CS', 'ON',\n 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'ON', 'ON', 'ON', 'ON',\n 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'B', 'BN', 'BN', 'BN', 'BN', 'BN',\n 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN',\n 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'BN', 'CS', 'ON', 'ET',\n 'ET', 'ET', 'ET', 'ON', 'ON', 'ON', 'ON', 'L', 'ON', 'ON', 'BN', 'ON',\n 'ON', 'ET', 'ET', 'EN', 'EN', 'ON', 'L', 'ON', 'ON', 'ON', 'EN', 'L',\n 'ON', 'ON', 'ON', 'ON', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L',\n 'L', 'L', 'L', 'L', 'L', 'ON', 'L', 'L', 'L', 'L', 'L', 'L', 'L', 'L'\n];\n\n// Character types for symbols from 0600 to 06FF.\n// Source: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt\n// Note that 061D does not exist in the Unicode standard (see\n// http://unicode.org/charts/PDF/U0600.pdf), so we replace it with an\n// empty string and issue a warning if we encounter this character. The\n// empty string is required to properly index the items after it.\nvar arabicTypes = [\n 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'ON', 'ON', 'AL', 'ET', 'ET', 'AL',\n 'CS', 'AL', 'ON', 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', '', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM',\n 'NSM', 'NSM', 'NSM', 'NSM', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN', 'AN',\n 'AN', 'AN', 'AN', 'ET', 'AN', 'AN', 'AL', 'AL', 'AL', 'NSM', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL',\n 'AL', 'AL', 'AL', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AN',\n 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'NSM', 'NSM',\n 'ON', 'NSM', 'NSM', 'NSM', 'NSM', 'AL', 'AL', 'EN', 'EN', 'EN', 'EN',\n 'EN', 'EN', 'EN', 'EN', 'EN', 'EN', 'AL', 'AL', 'AL', 'AL', 'AL', 'AL'\n];\n\nfunction isOdd(i) {\n return (i & 1) !== 0;\n}\n\nfunction isEven(i) {\n return (i & 1) === 0;\n}\n\nfunction findUnequal(arr, start, value) {\n for (var j = start, jj = arr.length; j < jj; ++j) {\n if (arr[j] !== value) {\n return j;\n }\n }\n return j;\n}\n\nfunction setValues(arr, start, end, value) {\n for (var j = start; j < end; ++j) {\n arr[j] = value;\n }\n}\n\nfunction reverseValues(arr, start, end) {\n for (var i = start, j = end - 1; i < j; ++i, --j) {\n var temp = arr[i];\n arr[i] = arr[j];\n arr[j] = temp;\n }\n}\n\nfunction createBidiText(str, isLTR, vertical) {\n return {\n str,\n dir: (vertical ? 'ttb' : (isLTR ? 'ltr' : 'rtl')),\n };\n}\n\n// These are used in bidi(), which is called frequently. We re-use them on\n// each call to avoid unnecessary allocations.\nvar chars = [];\nvar types = [];\n\nfunction bidi(str, startLevel, vertical) {\n var isLTR = true;\n var strLength = str.length;\n if (strLength === 0 || vertical) {\n return createBidiText(str, isLTR, vertical);\n }\n\n // Get types and fill arrays\n chars.length = strLength;\n types.length = strLength;\n var numBidi = 0;\n\n var i, ii;\n for (i = 0; i < strLength; ++i) {\n chars[i] = str.charAt(i);\n\n var charCode = str.charCodeAt(i);\n var charType = 'L';\n if (charCode <= 0x00ff) {\n charType = baseTypes[charCode];\n } else if (0x0590 <= charCode && charCode <= 0x05f4) {\n charType = 'R';\n } else if (0x0600 <= charCode && charCode <= 0x06ff) {\n charType = arabicTypes[charCode & 0xff];\n if (!charType) {\n warn('Bidi: invalid Unicode character ' + charCode.toString(16));\n }\n } else if (0x0700 <= charCode && charCode <= 0x08AC) {\n charType = 'AL';\n }\n if (charType === 'R' || charType === 'AL' || charType === 'AN') {\n numBidi++;\n }\n types[i] = charType;\n }\n\n // Detect the bidi method\n // - If there are no rtl characters then no bidi needed\n // - If less than 30% chars are rtl then string is primarily ltr\n // - If more than 30% chars are rtl then string is primarily rtl\n if (numBidi === 0) {\n isLTR = true;\n return createBidiText(str, isLTR);\n }\n\n if (startLevel === -1) {\n if ((numBidi / strLength) < 0.3) {\n isLTR = true;\n startLevel = 0;\n } else {\n isLTR = false;\n startLevel = 1;\n }\n }\n\n var levels = [];\n for (i = 0; i < strLength; ++i) {\n levels[i] = startLevel;\n }\n\n /*\n X1-X10: skip most of this, since we are NOT doing the embeddings.\n */\n var e = (isOdd(startLevel) ? 'R' : 'L');\n var sor = e;\n var eor = sor;\n\n /*\n W1. Examine each non-spacing mark (NSM) in the level run, and change the\n type of the NSM to the type of the previous character. If the NSM is at the\n start of the level run, it will get the type of sor.\n */\n var lastType = sor;\n for (i = 0; i < strLength; ++i) {\n if (types[i] === 'NSM') {\n types[i] = lastType;\n } else {\n lastType = types[i];\n }\n }\n\n /*\n W2. Search backwards from each instance of a European number until the\n first strong type (R, L, AL, or sor) is found. If an AL is found, change\n the type of the European number to Arabic number.\n */\n lastType = sor;\n var t;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === 'EN') {\n types[i] = (lastType === 'AL') ? 'AN' : 'EN';\n } else if (t === 'R' || t === 'L' || t === 'AL') {\n lastType = t;\n }\n }\n\n /*\n W3. Change all ALs to R.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === 'AL') {\n types[i] = 'R';\n }\n }\n\n /*\n W4. A single European separator between two European numbers changes to a\n European number. A single common separator between two numbers of the same\n type changes to that type:\n */\n for (i = 1; i < strLength - 1; ++i) {\n if (types[i] === 'ES' && types[i - 1] === 'EN' && types[i + 1] === 'EN') {\n types[i] = 'EN';\n }\n if (types[i] === 'CS' &&\n (types[i - 1] === 'EN' || types[i - 1] === 'AN') &&\n types[i + 1] === types[i - 1]) {\n types[i] = types[i - 1];\n }\n }\n\n /*\n W5. A sequence of European terminators adjacent to European numbers changes\n to all European numbers:\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === 'EN') {\n // do before\n var j;\n for (j = i - 1; j >= 0; --j) {\n if (types[j] !== 'ET') {\n break;\n }\n types[j] = 'EN';\n }\n // do after\n for (j = i + 1; j < strLength; ++j) {\n if (types[j] !== 'ET') {\n break;\n }\n types[j] = 'EN';\n }\n }\n }\n\n /*\n W6. Otherwise, separators and terminators change to Other Neutral:\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === 'WS' || t === 'ES' || t === 'ET' || t === 'CS') {\n types[i] = 'ON';\n }\n }\n\n /*\n W7. Search backwards from each instance of a European number until the\n first strong type (R, L, or sor) is found. If an L is found, then change\n the type of the European number to L.\n */\n lastType = sor;\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (t === 'EN') {\n types[i] = ((lastType === 'L') ? 'L' : 'EN');\n } else if (t === 'R' || t === 'L') {\n lastType = t;\n }\n }\n\n /*\n N1. A sequence of neutrals takes the direction of the surrounding strong\n text if the text on both sides has the same direction. European and Arabic\n numbers are treated as though they were R. Start-of-level-run (sor) and\n end-of-level-run (eor) are used at level run boundaries.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === 'ON') {\n var end = findUnequal(types, i + 1, 'ON');\n var before = sor;\n if (i > 0) {\n before = types[i - 1];\n }\n\n var after = eor;\n if (end + 1 < strLength) {\n after = types[end + 1];\n }\n if (before !== 'L') {\n before = 'R';\n }\n if (after !== 'L') {\n after = 'R';\n }\n if (before === after) {\n setValues(types, i, end, before);\n }\n i = end - 1; // reset to end (-1 so next iteration is ok)\n }\n }\n\n /*\n N2. Any remaining neutrals take the embedding direction.\n */\n for (i = 0; i < strLength; ++i) {\n if (types[i] === 'ON') {\n types[i] = e;\n }\n }\n\n /*\n I1. For all characters with an even (left-to-right) embedding direction,\n those of type R go up one level and those of type AN or EN go up two\n levels.\n I2. For all characters with an odd (right-to-left) embedding direction,\n those of type L, EN or AN go up one level.\n */\n for (i = 0; i < strLength; ++i) {\n t = types[i];\n if (isEven(levels[i])) {\n if (t === 'R') {\n levels[i] += 1;\n } else if (t === 'AN' || t === 'EN') {\n levels[i] += 2;\n }\n } else { // isOdd\n if (t === 'L' || t === 'AN' || t === 'EN') {\n levels[i] += 1;\n }\n }\n }\n\n /*\n L1. On each line, reset the embedding level of the following characters to\n the paragraph embedding level:\n\n segment separators,\n paragraph separators,\n any sequence of whitespace characters preceding a segment separator or\n paragraph separator, and any sequence of white space characters at the end\n of the line.\n */\n\n // don't bother as text is only single line\n\n /*\n L2. From the highest level found in the text to the lowest odd level on\n each line, reverse any contiguous sequence of characters that are at that\n level or higher.\n */\n\n // find highest level & lowest odd level\n var highestLevel = -1;\n var lowestOddLevel = 99;\n var level;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n level = levels[i];\n if (highestLevel < level) {\n highestLevel = level;\n }\n if (lowestOddLevel > level && isOdd(level)) {\n lowestOddLevel = level;\n }\n }\n\n // now reverse between those limits\n for (level = highestLevel; level >= lowestOddLevel; --level) {\n // find segments to reverse\n var start = -1;\n for (i = 0, ii = levels.length; i < ii; ++i) {\n if (levels[i] < level) {\n if (start >= 0) {\n reverseValues(chars, start, i);\n start = -1;\n }\n } else if (start < 0) {\n start = i;\n }\n }\n if (start >= 0) {\n reverseValues(chars, start, levels.length);\n }\n }\n\n /*\n L3. Combining marks applied to a right-to-left base character will at this\n point precede their base character. If the rendering engine expects them to\n follow the base characters in the final display process, then the ordering\n of the marks and the base character must be reversed.\n */\n\n // don't bother for now\n\n /*\n L4. A character that possesses the mirrored property as specified by\n Section 4.7, Mirrored, must be depicted by a mirrored glyph if the resolved\n directionality of that character is R.\n */\n\n // don't mirror as characters are already mirrored in the pdf\n\n // Finally, return string\n for (i = 0, ii = chars.length; i < ii; ++i) {\n var ch = chars[i];\n if (ch === '<' || ch === '>') {\n chars[i] = '';\n }\n }\n return createBidiText(chars.join(''), isLTR);\n}\n\nexport {\n bidi,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/bidi.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nvar ISOAdobeCharset = [\n '.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar',\n 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright',\n 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero',\n 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question',\n 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',\n 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',\n 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore',\n 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l',\n 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',\n 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent',\n 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency',\n 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft',\n 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl',\n 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase',\n 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis',\n 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde',\n 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla',\n 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine',\n 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash',\n 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu',\n 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter',\n 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior',\n 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright',\n 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde',\n 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute',\n 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex',\n 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex',\n 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute',\n 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla',\n 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex',\n 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis',\n 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis',\n 'ugrave', 'yacute', 'ydieresis', 'zcaron'\n];\n\nvar ExpertCharset = [\n '.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle',\n 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior',\n 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma',\n 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle',\n 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle',\n 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle',\n 'colon', 'semicolon', 'commasuperior', 'threequartersemdash',\n 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior',\n 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall',\n 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall',\n 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall',\n 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall',\n 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary',\n 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle',\n 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall',\n 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall',\n 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall',\n 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters',\n 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall',\n 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall',\n 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall',\n 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall',\n 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall',\n 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall',\n 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall',\n 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall',\n 'Ydieresissmall'\n];\n\nvar ExpertSubsetCharset = [\n '.notdef', 'space', 'dollaroldstyle', 'dollarsuperior',\n 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader',\n 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction',\n 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle',\n 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle',\n 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior',\n 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior',\n 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior',\n 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior',\n 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior',\n 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted',\n 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter',\n 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths',\n 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior',\n 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior',\n 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior',\n 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior',\n 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior',\n 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior',\n 'periodinferior', 'commainferior'\n];\n\nexport {\n ISOAdobeCharset,\n ExpertCharset,\n ExpertSubsetCharset,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/charsets.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CMapCompressionType, FormatError, isInt, isString, MissingDataException, Util,\n warn\n} from '../shared/util';\nimport { isCmd, isEOF, isName, isStream } from './primitives';\nimport { Lexer } from './parser';\nimport { Stream } from './stream';\n\nvar BUILT_IN_CMAPS = [\n// << Start unicode maps.\n'Adobe-GB1-UCS2',\n'Adobe-CNS1-UCS2',\n'Adobe-Japan1-UCS2',\n'Adobe-Korea1-UCS2',\n// >> End unicode maps.\n'78-EUC-H',\n'78-EUC-V',\n'78-H',\n'78-RKSJ-H',\n'78-RKSJ-V',\n'78-V',\n'78ms-RKSJ-H',\n'78ms-RKSJ-V',\n'83pv-RKSJ-H',\n'90ms-RKSJ-H',\n'90ms-RKSJ-V',\n'90msp-RKSJ-H',\n'90msp-RKSJ-V',\n'90pv-RKSJ-H',\n'90pv-RKSJ-V',\n'Add-H',\n'Add-RKSJ-H',\n'Add-RKSJ-V',\n'Add-V',\n'Adobe-CNS1-0',\n'Adobe-CNS1-1',\n'Adobe-CNS1-2',\n'Adobe-CNS1-3',\n'Adobe-CNS1-4',\n'Adobe-CNS1-5',\n'Adobe-CNS1-6',\n'Adobe-GB1-0',\n'Adobe-GB1-1',\n'Adobe-GB1-2',\n'Adobe-GB1-3',\n'Adobe-GB1-4',\n'Adobe-GB1-5',\n'Adobe-Japan1-0',\n'Adobe-Japan1-1',\n'Adobe-Japan1-2',\n'Adobe-Japan1-3',\n'Adobe-Japan1-4',\n'Adobe-Japan1-5',\n'Adobe-Japan1-6',\n'Adobe-Korea1-0',\n'Adobe-Korea1-1',\n'Adobe-Korea1-2',\n'B5-H',\n'B5-V',\n'B5pc-H',\n'B5pc-V',\n'CNS-EUC-H',\n'CNS-EUC-V',\n'CNS1-H',\n'CNS1-V',\n'CNS2-H',\n'CNS2-V',\n'ETHK-B5-H',\n'ETHK-B5-V',\n'ETen-B5-H',\n'ETen-B5-V',\n'ETenms-B5-H',\n'ETenms-B5-V',\n'EUC-H',\n'EUC-V',\n'Ext-H',\n'Ext-RKSJ-H',\n'Ext-RKSJ-V',\n'Ext-V',\n'GB-EUC-H',\n'GB-EUC-V',\n'GB-H',\n'GB-V',\n'GBK-EUC-H',\n'GBK-EUC-V',\n'GBK2K-H',\n'GBK2K-V',\n'GBKp-EUC-H',\n'GBKp-EUC-V',\n'GBT-EUC-H',\n'GBT-EUC-V',\n'GBT-H',\n'GBT-V',\n'GBTpc-EUC-H',\n'GBTpc-EUC-V',\n'GBpc-EUC-H',\n'GBpc-EUC-V',\n'H',\n'HKdla-B5-H',\n'HKdla-B5-V',\n'HKdlb-B5-H',\n'HKdlb-B5-V',\n'HKgccs-B5-H',\n'HKgccs-B5-V',\n'HKm314-B5-H',\n'HKm314-B5-V',\n'HKm471-B5-H',\n'HKm471-B5-V',\n'HKscs-B5-H',\n'HKscs-B5-V',\n'Hankaku',\n'Hiragana',\n'KSC-EUC-H',\n'KSC-EUC-V',\n'KSC-H',\n'KSC-Johab-H',\n'KSC-Johab-V',\n'KSC-V',\n'KSCms-UHC-H',\n'KSCms-UHC-HW-H',\n'KSCms-UHC-HW-V',\n'KSCms-UHC-V',\n'KSCpc-EUC-H',\n'KSCpc-EUC-V',\n'Katakana',\n'NWP-H',\n'NWP-V',\n'RKSJ-H',\n'RKSJ-V',\n'Roman',\n'UniCNS-UCS2-H',\n'UniCNS-UCS2-V',\n'UniCNS-UTF16-H',\n'UniCNS-UTF16-V',\n'UniCNS-UTF32-H',\n'UniCNS-UTF32-V',\n'UniCNS-UTF8-H',\n'UniCNS-UTF8-V',\n'UniGB-UCS2-H',\n'UniGB-UCS2-V',\n'UniGB-UTF16-H',\n'UniGB-UTF16-V',\n'UniGB-UTF32-H',\n'UniGB-UTF32-V',\n'UniGB-UTF8-H',\n'UniGB-UTF8-V',\n'UniJIS-UCS2-H',\n'UniJIS-UCS2-HW-H',\n'UniJIS-UCS2-HW-V',\n'UniJIS-UCS2-V',\n'UniJIS-UTF16-H',\n'UniJIS-UTF16-V',\n'UniJIS-UTF32-H',\n'UniJIS-UTF32-V',\n'UniJIS-UTF8-H',\n'UniJIS-UTF8-V',\n'UniJIS2004-UTF16-H',\n'UniJIS2004-UTF16-V',\n'UniJIS2004-UTF32-H',\n'UniJIS2004-UTF32-V',\n'UniJIS2004-UTF8-H',\n'UniJIS2004-UTF8-V',\n'UniJISPro-UCS2-HW-V',\n'UniJISPro-UCS2-V',\n'UniJISPro-UTF8-V',\n'UniJISX0213-UTF32-H',\n'UniJISX0213-UTF32-V',\n'UniJISX02132004-UTF32-H',\n'UniJISX02132004-UTF32-V',\n'UniKS-UCS2-H',\n'UniKS-UCS2-V',\n'UniKS-UTF16-H',\n'UniKS-UTF16-V',\n'UniKS-UTF32-H',\n'UniKS-UTF32-V',\n'UniKS-UTF8-H',\n'UniKS-UTF8-V',\n'V',\n'WP-Symbol'];\n\n// CMap, not to be confused with TrueType's cmap.\nvar CMap = (function CMapClosure() {\n function CMap(builtInCMap) {\n // Codespace ranges are stored as follows:\n // [[1BytePairs], [2BytePairs], [3BytePairs], [4BytePairs]]\n // where nBytePairs are ranges e.g. [low1, high1, low2, high2, ...]\n this.codespaceRanges = [[], [], [], []];\n this.numCodespaceRanges = 0;\n // Map entries have one of two forms.\n // - cid chars are 16-bit unsigned integers, stored as integers.\n // - bf chars are variable-length byte sequences, stored as strings, with\n // one byte per character.\n this._map = [];\n this.name = '';\n this.vertical = false;\n this.useCMap = null;\n this.builtInCMap = builtInCMap;\n }\n CMap.prototype = {\n addCodespaceRange(n, low, high) {\n this.codespaceRanges[n - 1].push(low, high);\n this.numCodespaceRanges++;\n },\n\n mapCidRange(low, high, dstLow) {\n while (low <= high) {\n this._map[low++] = dstLow++;\n }\n },\n\n mapBfRange(low, high, dstLow) {\n var lastByte = dstLow.length - 1;\n while (low <= high) {\n this._map[low++] = dstLow;\n // Only the last byte has to be incremented.\n dstLow = dstLow.substr(0, lastByte) +\n String.fromCharCode(dstLow.charCodeAt(lastByte) + 1);\n }\n },\n\n mapBfRangeToArray(low, high, array) {\n var i = 0, ii = array.length;\n while (low <= high && i < ii) {\n this._map[low] = array[i++];\n ++low;\n }\n },\n\n // This is used for both bf and cid chars.\n mapOne(src, dst) {\n this._map[src] = dst;\n },\n\n lookup(code) {\n return this._map[code];\n },\n\n contains(code) {\n return this._map[code] !== undefined;\n },\n\n forEach(callback) {\n // Most maps have fewer than 65536 entries, and for those we use normal\n // array iteration. But really sparse tables are possible -- e.g. with\n // indices in the *billions*. For such tables we use for..in, which isn't\n // ideal because it stringifies the indices for all present elements, but\n // it does avoid iterating over every undefined entry.\n let map = this._map;\n let length = map.length;\n if (length <= 0x10000) {\n for (let i = 0; i < length; i++) {\n if (map[i] !== undefined) {\n callback(i, map[i]);\n }\n }\n } else {\n for (let i in map) {\n callback(i, map[i]);\n }\n }\n },\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n let map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (let charCode in map) {\n if (map[charCode] === value) {\n return (charCode | 0);\n }\n }\n return -1;\n },\n\n getMap() {\n return this._map;\n },\n\n readCharCode(str, offset, out) {\n var c = 0;\n var codespaceRanges = this.codespaceRanges;\n var codespaceRangesLen = this.codespaceRanges.length;\n // 9.7.6.2 CMap Mapping\n // The code length is at most 4.\n for (var n = 0; n < codespaceRangesLen; n++) {\n c = ((c << 8) | str.charCodeAt(offset + n)) >>> 0;\n // Check each codespace range to see if it falls within.\n var codespaceRange = codespaceRanges[n];\n for (var k = 0, kk = codespaceRange.length; k < kk;) {\n var low = codespaceRange[k++];\n var high = codespaceRange[k++];\n if (c >= low && c <= high) {\n out.charcode = c;\n out.length = n + 1;\n return;\n }\n }\n }\n out.charcode = 0;\n out.length = 1;\n },\n\n get length() {\n return this._map.length;\n },\n\n get isIdentityCMap() {\n if (!(this.name === 'Identity-H' || this.name === 'Identity-V')) {\n return false;\n }\n if (this._map.length !== 0x10000) {\n return false;\n }\n for (var i = 0; i < 0x10000; i++) {\n if (this._map[i] !== i) {\n return false;\n }\n }\n return true;\n },\n };\n return CMap;\n})();\n\n// A special case of CMap, where the _map array implicitly has a length of\n// 65536 and each element is equal to its index.\nvar IdentityCMap = (function IdentityCMapClosure() {\n function IdentityCMap(vertical, n) {\n CMap.call(this);\n this.vertical = vertical;\n this.addCodespaceRange(n, 0, 0xffff);\n }\n Util.inherit(IdentityCMap, CMap, {});\n\n IdentityCMap.prototype = {\n addCodespaceRange: CMap.prototype.addCodespaceRange,\n\n mapCidRange(low, high, dstLow) {\n throw new Error('should not call mapCidRange');\n },\n\n mapBfRange(low, high, dstLow) {\n throw new Error('should not call mapBfRange');\n },\n\n mapBfRangeToArray(low, high, array) {\n throw new Error('should not call mapBfRangeToArray');\n },\n\n mapOne(src, dst) {\n throw new Error('should not call mapCidOne');\n },\n\n lookup(code) {\n return (isInt(code) && code <= 0xffff) ? code : undefined;\n },\n\n contains(code) {\n return isInt(code) && code <= 0xffff;\n },\n\n forEach(callback) {\n for (var i = 0; i <= 0xffff; i++) {\n callback(i, i);\n }\n },\n\n charCodeOf(value) {\n return (isInt(value) && value <= 0xffff) ? value : -1;\n },\n\n getMap() {\n // Sometimes identity maps must be instantiated, but it's rare.\n var map = new Array(0x10000);\n for (var i = 0; i <= 0xffff; i++) {\n map[i] = i;\n }\n return map;\n },\n\n readCharCode: CMap.prototype.readCharCode,\n\n get length() {\n return 0x10000;\n },\n\n get isIdentityCMap() {\n throw new Error('should not access .isIdentityCMap');\n },\n };\n\n return IdentityCMap;\n})();\n\nvar BinaryCMapReader = (function BinaryCMapReaderClosure() {\n function hexToInt(a, size) {\n var n = 0;\n for (var i = 0; i <= size; i++) {\n n = (n << 8) | a[i];\n }\n return n >>> 0;\n }\n\n function hexToStr(a, size) {\n // This code is hot. Special-case some common values to avoid creating an\n // object with subarray().\n if (size === 1) {\n return String.fromCharCode(a[0], a[1]);\n }\n if (size === 3) {\n return String.fromCharCode(a[0], a[1], a[2], a[3]);\n }\n return String.fromCharCode.apply(null, a.subarray(0, size + 1));\n }\n\n function addHex(a, b, size) {\n var c = 0;\n for (var i = size; i >= 0; i--) {\n c += a[i] + b[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n function incHex(a, size) {\n var c = 1;\n for (var i = size; i >= 0 && c > 0; i--) {\n c += a[i];\n a[i] = c & 255;\n c >>= 8;\n }\n }\n\n var MAX_NUM_SIZE = 16;\n var MAX_ENCODED_NUM_SIZE = 19; // ceil(MAX_NUM_SIZE * 7 / 8)\n\n function BinaryCMapStream(data) {\n this.buffer = data;\n this.pos = 0;\n this.end = data.length;\n this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);\n }\n\n BinaryCMapStream.prototype = {\n readByte() {\n if (this.pos >= this.end) {\n return -1;\n }\n return this.buffer[this.pos++];\n },\n readNumber() {\n var n = 0;\n var last;\n do {\n var b = this.readByte();\n if (b < 0) {\n throw new FormatError('unexpected EOF in bcmap');\n }\n last = !(b & 0x80);\n n = (n << 7) | (b & 0x7F);\n } while (!last);\n return n;\n },\n readSigned() {\n var n = this.readNumber();\n return (n & 1) ? ~(n >>> 1) : n >>> 1;\n },\n readHex(num, size) {\n num.set(this.buffer.subarray(this.pos,\n this.pos + size + 1));\n this.pos += size + 1;\n },\n readHexNumber(num, size) {\n var last;\n var stack = this.tmpBuf, sp = 0;\n do {\n var b = this.readByte();\n if (b < 0) {\n throw new FormatError('unexpected EOF in bcmap');\n }\n last = !(b & 0x80);\n stack[sp++] = b & 0x7F;\n } while (!last);\n var i = size, buffer = 0, bufferSize = 0;\n while (i >= 0) {\n while (bufferSize < 8 && stack.length > 0) {\n buffer = (stack[--sp] << bufferSize) | buffer;\n bufferSize += 7;\n }\n num[i] = buffer & 255;\n i--;\n buffer >>= 8;\n bufferSize -= 8;\n }\n },\n readHexSigned(num, size) {\n this.readHexNumber(num, size);\n var sign = num[size] & 1 ? 255 : 0;\n var c = 0;\n for (var i = 0; i <= size; i++) {\n c = ((c & 1) << 8) | num[i];\n num[i] = (c >> 1) ^ sign;\n }\n },\n readString() {\n var len = this.readNumber();\n var s = '';\n for (var i = 0; i < len; i++) {\n s += String.fromCharCode(this.readNumber());\n }\n return s;\n },\n };\n\n function processBinaryCMap(data, cMap, extend) {\n return new Promise(function (resolve, reject) {\n var stream = new BinaryCMapStream(data);\n var header = stream.readByte();\n cMap.vertical = !!(header & 1);\n\n var useCMap = null;\n var start = new Uint8Array(MAX_NUM_SIZE);\n var end = new Uint8Array(MAX_NUM_SIZE);\n var char = new Uint8Array(MAX_NUM_SIZE);\n var charCode = new Uint8Array(MAX_NUM_SIZE);\n var tmp = new Uint8Array(MAX_NUM_SIZE);\n var code;\n\n var b;\n while ((b = stream.readByte()) >= 0) {\n var type = b >> 5;\n if (type === 7) { // metadata, e.g. comment or usecmap\n switch (b & 0x1F) {\n case 0:\n stream.readString(); // skipping comment\n break;\n case 1:\n useCMap = stream.readString();\n break;\n }\n continue;\n }\n var sequence = !!(b & 0x10);\n var dataSize = b & 15;\n\n if (dataSize + 1 > MAX_NUM_SIZE) {\n throw new Error('processBinaryCMap: Invalid dataSize.');\n }\n\n var ucs2DataSize = 1;\n var subitemsCount = stream.readNumber();\n var i;\n switch (type) {\n case 0: // codespacerange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),\n hexToInt(end, dataSize));\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n cMap.addCodespaceRange(dataSize + 1, hexToInt(start, dataSize),\n hexToInt(end, dataSize));\n }\n break;\n case 1: // notdefrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n // undefined range, skipping\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n // nop\n }\n break;\n case 2: // cidchar\n stream.readHex(char, dataSize);\n code = stream.readNumber();\n cMap.mapOne(hexToInt(char, dataSize), code);\n for (i = 1; i < subitemsCount; i++) {\n incHex(char, dataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, dataSize);\n addHex(char, tmp, dataSize);\n }\n code = stream.readSigned() + (code + 1);\n cMap.mapOne(hexToInt(char, dataSize), code);\n }\n break;\n case 3: // cidrange\n stream.readHex(start, dataSize);\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize), hexToInt(end, dataSize),\n code);\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, dataSize);\n if (!sequence) {\n stream.readHexNumber(start, dataSize);\n addHex(start, end, dataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, dataSize);\n addHex(end, start, dataSize);\n code = stream.readNumber();\n cMap.mapCidRange(hexToInt(start, dataSize),\n hexToInt(end, dataSize), code);\n }\n break;\n case 4: // bfchar\n stream.readHex(char, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize));\n for (i = 1; i < subitemsCount; i++) {\n incHex(char, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(tmp, ucs2DataSize);\n addHex(char, tmp, ucs2DataSize);\n }\n incHex(charCode, dataSize);\n stream.readHexSigned(tmp, dataSize);\n addHex(charCode, tmp, dataSize);\n cMap.mapOne(hexToInt(char, ucs2DataSize),\n hexToStr(charCode, dataSize));\n }\n break;\n case 5: // bfrange\n stream.readHex(start, ucs2DataSize);\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize));\n for (i = 1; i < subitemsCount; i++) {\n incHex(end, ucs2DataSize);\n if (!sequence) {\n stream.readHexNumber(start, ucs2DataSize);\n addHex(start, end, ucs2DataSize);\n } else {\n start.set(end);\n }\n stream.readHexNumber(end, ucs2DataSize);\n addHex(end, start, ucs2DataSize);\n stream.readHex(charCode, dataSize);\n cMap.mapBfRange(hexToInt(start, ucs2DataSize),\n hexToInt(end, ucs2DataSize),\n hexToStr(charCode, dataSize));\n }\n break;\n default:\n reject(new Error('processBinaryCMap: Unknown type: ' + type));\n return;\n }\n }\n\n if (useCMap) {\n resolve(extend(useCMap));\n return;\n }\n resolve(cMap);\n });\n }\n\n function BinaryCMapReader() {}\n\n BinaryCMapReader.prototype = {\n process: processBinaryCMap,\n };\n\n return BinaryCMapReader;\n})();\n\nvar CMapFactory = (function CMapFactoryClosure() {\n function strToInt(str) {\n var a = 0;\n for (var i = 0; i < str.length; i++) {\n a = (a << 8) | str.charCodeAt(i);\n }\n return a >>> 0;\n }\n\n function expectString(obj) {\n if (!isString(obj)) {\n throw new FormatError('Malformed CMap: expected string.');\n }\n }\n\n function expectInt(obj) {\n if (!isInt(obj)) {\n throw new FormatError('Malformed CMap: expected int.');\n }\n }\n\n function parseBfChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n }\n if (isCmd(obj, 'endbfchar')) {\n return;\n }\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n // TODO are /dstName used?\n expectString(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseBfRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n }\n if (isCmd(obj, 'endbfrange')) {\n return;\n }\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n if (isInt(obj) || isString(obj)) {\n var dstLow = isInt(obj) ? String.fromCharCode(obj) : obj;\n cMap.mapBfRange(low, high, dstLow);\n } else if (isCmd(obj, '[')) {\n obj = lexer.getObj();\n var array = [];\n while (!isCmd(obj, ']') && !isEOF(obj)) {\n array.push(obj);\n obj = lexer.getObj();\n }\n cMap.mapBfRangeToArray(low, high, array);\n } else {\n break;\n }\n }\n throw new FormatError('Invalid bf range.');\n }\n\n function parseCidChar(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n }\n if (isCmd(obj, 'endcidchar')) {\n return;\n }\n expectString(obj);\n var src = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dst = obj;\n cMap.mapOne(src, dst);\n }\n }\n\n function parseCidRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n }\n if (isCmd(obj, 'endcidrange')) {\n return;\n }\n expectString(obj);\n var low = strToInt(obj);\n obj = lexer.getObj();\n expectString(obj);\n var high = strToInt(obj);\n obj = lexer.getObj();\n expectInt(obj);\n var dstLow = obj;\n cMap.mapCidRange(low, high, dstLow);\n }\n }\n\n function parseCodespaceRange(cMap, lexer) {\n while (true) {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n }\n if (isCmd(obj, 'endcodespacerange')) {\n return;\n }\n if (!isString(obj)) {\n break;\n }\n var low = strToInt(obj);\n obj = lexer.getObj();\n if (!isString(obj)) {\n break;\n }\n var high = strToInt(obj);\n cMap.addCodespaceRange(obj.length, low, high);\n }\n throw new FormatError('Invalid codespace range.');\n }\n\n function parseWMode(cMap, lexer) {\n var obj = lexer.getObj();\n if (isInt(obj)) {\n cMap.vertical = !!obj;\n }\n }\n\n function parseCMapName(cMap, lexer) {\n var obj = lexer.getObj();\n if (isName(obj) && isString(obj.name)) {\n cMap.name = obj.name;\n }\n }\n\n function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {\n var previous;\n var embededUseCMap;\n objLoop: while (true) {\n try {\n var obj = lexer.getObj();\n if (isEOF(obj)) {\n break;\n } else if (isName(obj)) {\n if (obj.name === 'WMode') {\n parseWMode(cMap, lexer);\n } else if (obj.name === 'CMapName') {\n parseCMapName(cMap, lexer);\n }\n previous = obj;\n } else if (isCmd(obj)) {\n switch (obj.cmd) {\n case 'endcmap':\n break objLoop;\n case 'usecmap':\n if (isName(previous)) {\n embededUseCMap = previous.name;\n }\n break;\n case 'begincodespacerange':\n parseCodespaceRange(cMap, lexer);\n break;\n case 'beginbfchar':\n parseBfChar(cMap, lexer);\n break;\n case 'begincidchar':\n parseCidChar(cMap, lexer);\n break;\n case 'beginbfrange':\n parseBfRange(cMap, lexer);\n break;\n case 'begincidrange':\n parseCidRange(cMap, lexer);\n break;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn('Invalid cMap data: ' + ex);\n continue;\n }\n }\n\n if (!useCMap && embededUseCMap) {\n // Load the usecmap definition from the file only if there wasn't one\n // specified.\n useCMap = embededUseCMap;\n }\n if (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n }\n return Promise.resolve(cMap);\n }\n\n function extendCMap(cMap, fetchBuiltInCMap, useCMap) {\n return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function(newCMap) {\n cMap.useCMap = newCMap;\n // If there aren't any code space ranges defined clone all the parent ones\n // into this cMap.\n if (cMap.numCodespaceRanges === 0) {\n var useCodespaceRanges = cMap.useCMap.codespaceRanges;\n for (var i = 0; i < useCodespaceRanges.length; i++) {\n cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();\n }\n cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;\n }\n // Merge the map into the current one, making sure not to override\n // any previously defined entries.\n cMap.useCMap.forEach(function(key, value) {\n if (!cMap.contains(key)) {\n cMap.mapOne(key, cMap.useCMap.lookup(key));\n }\n });\n\n return cMap;\n });\n }\n\n function createBuiltInCMap(name, fetchBuiltInCMap) {\n if (name === 'Identity-H') {\n return Promise.resolve(new IdentityCMap(false, 2));\n } else if (name === 'Identity-V') {\n return Promise.resolve(new IdentityCMap(true, 2));\n }\n if (BUILT_IN_CMAPS.indexOf(name) === -1) {\n return Promise.reject(new Error('Unknown CMap name: ' + name));\n }\n if (!fetchBuiltInCMap) {\n return Promise.reject(new Error(\n 'Built-in CMap parameters are not provided.'));\n }\n\n return fetchBuiltInCMap(name).then(function (data) {\n var cMapData = data.cMapData, compressionType = data.compressionType;\n var cMap = new CMap(true);\n\n if (compressionType === CMapCompressionType.BINARY) {\n return new BinaryCMapReader().process(cMapData, cMap,\n function (useCMap) {\n return extendCMap(cMap, fetchBuiltInCMap, useCMap);\n });\n }\n if (compressionType === CMapCompressionType.NONE) {\n var lexer = new Lexer(new Stream(cMapData));\n return parseCMap(cMap, lexer, fetchBuiltInCMap, null);\n }\n return Promise.reject(new Error(\n 'TODO: Only BINARY/NONE CMap compression is currently supported.'));\n });\n }\n\n return {\n create(params) {\n var encoding = params.encoding;\n var fetchBuiltInCMap = params.fetchBuiltInCMap;\n var useCMap = params.useCMap;\n\n if (isName(encoding)) {\n return createBuiltInCMap(encoding.name, fetchBuiltInCMap);\n } else if (isStream(encoding)) {\n var cMap = new CMap();\n var lexer = new Lexer(encoding);\n return parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap).then(\n function (parsedCMap) {\n if (parsedCMap.isIdentityCMap) {\n return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);\n }\n return parsedCMap;\n });\n }\n return Promise.reject(new Error('Encoding required.'));\n },\n };\n})();\n\nexport {\n CMap,\n IdentityCMap,\n CMapFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/cmap.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Catalog, ObjectLoader, XRef } from './obj';\nimport { Dict, isDict, isName, isStream } from './primitives';\nimport {\n info, isArray, isArrayBuffer, isNum, isSpace, isString, MissingDataException,\n OPS, shadow, stringToBytes, stringToPDFString, Util, warn\n} from '../shared/util';\nimport { NullStream, Stream, StreamsSequenceStream } from './stream';\nimport { OperatorList, PartialEvaluator } from './evaluator';\nimport { AnnotationFactory } from './annotation';\nimport { calculateMD5 } from './crypto';\nimport { Linearization } from './parser';\n\nvar Page = (function PageClosure() {\n\n var DEFAULT_USER_UNIT = 1.0;\n var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];\n\n function isAnnotationRenderable(annotation, intent) {\n return (intent === 'display' && annotation.viewable) ||\n (intent === 'print' && annotation.printable);\n }\n\n function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache,\n builtInCMapCache) {\n this.pdfManager = pdfManager;\n this.pageIndex = pageIndex;\n this.pageDict = pageDict;\n this.xref = xref;\n this.ref = ref;\n this.fontCache = fontCache;\n this.builtInCMapCache = builtInCMapCache;\n this.evaluatorOptions = pdfManager.evaluatorOptions;\n this.resourcesPromise = null;\n\n var uniquePrefix = 'p' + this.pageIndex + '_';\n var idCounters = {\n obj: 0,\n };\n this.idFactory = {\n createObjId() {\n return uniquePrefix + (++idCounters.obj);\n },\n };\n }\n\n Page.prototype = {\n getPageProp: function Page_getPageProp(key) {\n return this.pageDict.get(key);\n },\n\n getInheritedPageProp: function Page_getInheritedPageProp(key, getArray) {\n var dict = this.pageDict, valueArray = null, loopCount = 0;\n var MAX_LOOP_COUNT = 100;\n getArray = getArray || false;\n // Always walk up the entire parent chain, to be able to find\n // e.g. \\Resources placed on multiple levels of the tree.\n while (dict) {\n var value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (!valueArray) {\n valueArray = [];\n }\n valueArray.push(value);\n }\n if (++loopCount > MAX_LOOP_COUNT) {\n warn('getInheritedPageProp: maximum loop count exceeded for ' + key);\n return valueArray ? valueArray[0] : undefined;\n }\n dict = dict.get('Parent');\n }\n if (!valueArray) {\n return undefined;\n }\n if (valueArray.length === 1 || !isDict(valueArray[0])) {\n return valueArray[0];\n }\n return Dict.merge(this.xref, valueArray);\n },\n\n get content() {\n return this.getPageProp('Contents');\n },\n\n get resources() {\n // For robustness: The spec states that a \\Resources entry has to be\n // present, but can be empty. Some document omit it still, in this case\n // we return an empty dictionary.\n return shadow(this, 'resources',\n this.getInheritedPageProp('Resources') || Dict.empty);\n },\n\n get mediaBox() {\n var mediaBox = this.getInheritedPageProp('MediaBox', true);\n // Reset invalid media box to letter size.\n if (!isArray(mediaBox) || mediaBox.length !== 4) {\n return shadow(this, 'mediaBox', LETTER_SIZE_MEDIABOX);\n }\n return shadow(this, 'mediaBox', mediaBox);\n },\n\n get cropBox() {\n var cropBox = this.getInheritedPageProp('CropBox', true);\n // Reset invalid crop box to media box.\n if (!isArray(cropBox) || cropBox.length !== 4) {\n return shadow(this, 'cropBox', this.mediaBox);\n }\n return shadow(this, 'cropBox', cropBox);\n },\n\n get userUnit() {\n var obj = this.getPageProp('UserUnit');\n if (!isNum(obj) || obj <= 0) {\n obj = DEFAULT_USER_UNIT;\n }\n return shadow(this, 'userUnit', obj);\n },\n\n get view() {\n // From the spec, 6th ed., p.963:\n // \"The crop, bleed, trim, and art boxes should not ordinarily\n // extend beyond the boundaries of the media box. If they do, they are\n // effectively reduced to their intersection with the media box.\"\n var mediaBox = this.mediaBox, cropBox = this.cropBox;\n if (mediaBox === cropBox) {\n return shadow(this, 'view', mediaBox);\n }\n var intersection = Util.intersect(cropBox, mediaBox);\n return shadow(this, 'view', intersection || mediaBox);\n },\n\n get rotate() {\n var rotate = this.getInheritedPageProp('Rotate') || 0;\n // Normalize rotation so it's a multiple of 90 and between 0 and 270\n if (rotate % 90 !== 0) {\n rotate = 0;\n } else if (rotate >= 360) {\n rotate = rotate % 360;\n } else if (rotate < 0) {\n // The spec doesn't cover negatives, assume its counterclockwise\n // rotation. The following is the other implementation of modulo.\n rotate = ((rotate % 360) + 360) % 360;\n }\n return shadow(this, 'rotate', rotate);\n },\n\n getContentStream: function Page_getContentStream() {\n var content = this.content;\n var stream;\n if (isArray(content)) {\n // fetching items\n var xref = this.xref;\n var i, n = content.length;\n var streams = [];\n for (i = 0; i < n; ++i) {\n streams.push(xref.fetchIfRef(content[i]));\n }\n stream = new StreamsSequenceStream(streams);\n } else if (isStream(content)) {\n stream = content;\n } else {\n // replacing non-existent page content with empty one\n stream = new NullStream();\n }\n return stream;\n },\n\n loadResources: function Page_loadResources(keys) {\n if (!this.resourcesPromise) {\n // TODO: add async getInheritedPageProp and remove this.\n this.resourcesPromise = this.pdfManager.ensure(this, 'resources');\n }\n return this.resourcesPromise.then(() => {\n let objectLoader = new ObjectLoader(this.resources, keys, this.xref);\n\n return objectLoader.load();\n });\n },\n\n getOperatorList({ handler, task, intent, renderInteractiveForms, }) {\n var contentStreamPromise = this.pdfManager.ensure(this,\n 'getContentStream');\n var resourcesPromise = this.loadResources([\n 'ExtGState',\n 'ColorSpace',\n 'Pattern',\n 'Shading',\n 'XObject',\n 'Font'\n // ProcSet\n // Properties\n ]);\n\n var partialEvaluator = new PartialEvaluator({\n pdfManager: this.pdfManager,\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this.idFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n options: this.evaluatorOptions,\n });\n\n var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n var pageListPromise = dataPromises.then(([contentStream]) => {\n var opList = new OperatorList(intent, handler, this.pageIndex);\n\n handler.send('StartRenderPage', {\n transparency: partialEvaluator.hasBlendModes(this.resources),\n pageIndex: this.pageIndex,\n intent,\n });\n return partialEvaluator.getOperatorList({\n stream: contentStream,\n task,\n resources: this.resources,\n operatorList: opList,\n }).then(function () {\n return opList;\n });\n });\n\n // Fetch the page's annotations and add their operator lists to the\n // page's operator list to render them.\n var annotationsPromise = this.pdfManager.ensure(this, 'annotations');\n return Promise.all([pageListPromise, annotationsPromise]).then(\n function ([pageOpList, annotations]) {\n if (annotations.length === 0) {\n pageOpList.flush(true);\n return pageOpList;\n }\n\n // Collect the operator list promises for the annotations. Each promise\n // is resolved with the complete operator list for a single annotation.\n var i, ii, opListPromises = [];\n for (i = 0, ii = annotations.length; i < ii; i++) {\n if (isAnnotationRenderable(annotations[i], intent)) {\n opListPromises.push(annotations[i].getOperatorList(\n partialEvaluator, task, renderInteractiveForms));\n }\n }\n\n return Promise.all(opListPromises).then(function(opLists) {\n pageOpList.addOp(OPS.beginAnnotations, []);\n for (i = 0, ii = opLists.length; i < ii; i++) {\n pageOpList.addOpList(opLists[i]);\n }\n pageOpList.addOp(OPS.endAnnotations, []);\n\n pageOpList.flush(true);\n return pageOpList;\n });\n });\n },\n\n extractTextContent({ handler, task, normalizeWhitespace,\n sink, combineTextItems, }) {\n var contentStreamPromise = this.pdfManager.ensure(this,\n 'getContentStream');\n var resourcesPromise = this.loadResources([\n 'ExtGState',\n 'XObject',\n 'Font'\n ]);\n\n var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);\n return dataPromises.then(([contentStream]) => {\n var partialEvaluator = new PartialEvaluator({\n pdfManager: this.pdfManager,\n xref: this.xref,\n handler,\n pageIndex: this.pageIndex,\n idFactory: this.idFactory,\n fontCache: this.fontCache,\n builtInCMapCache: this.builtInCMapCache,\n options: this.evaluatorOptions,\n });\n\n return partialEvaluator.getTextContent({\n stream: contentStream,\n task,\n resources: this.resources,\n normalizeWhitespace,\n combineTextItems,\n sink,\n });\n });\n },\n\n getAnnotationsData: function Page_getAnnotationsData(intent) {\n var annotations = this.annotations;\n var annotationsData = [];\n for (var i = 0, n = annotations.length; i < n; ++i) {\n if (!intent || isAnnotationRenderable(annotations[i], intent)) {\n annotationsData.push(annotations[i].data);\n }\n }\n return annotationsData;\n },\n\n get annotations() {\n var annotations = [];\n var annotationRefs = this.getInheritedPageProp('Annots') || [];\n var annotationFactory = new AnnotationFactory();\n for (var i = 0, n = annotationRefs.length; i < n; ++i) {\n var annotationRef = annotationRefs[i];\n var annotation = annotationFactory.create(this.xref, annotationRef,\n this.pdfManager,\n this.idFactory);\n if (annotation) {\n annotations.push(annotation);\n }\n }\n return shadow(this, 'annotations', annotations);\n },\n };\n\n return Page;\n})();\n\n/**\n * The `PDFDocument` holds all the data of the PDF file. Compared to the\n * `PDFDoc`, this one doesn't have any job management code.\n * Right now there exists one PDFDocument on the main thread + one object\n * for each worker. If there is no worker support enabled, there are two\n * `PDFDocument` objects on the main thread created.\n */\nvar PDFDocument = (function PDFDocumentClosure() {\n var FINGERPRINT_FIRST_BYTES = 1024;\n var EMPTY_FINGERPRINT = '\\x00\\x00\\x00\\x00\\x00\\x00\\x00' +\n '\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00';\n\n function PDFDocument(pdfManager, arg) {\n var stream;\n if (isStream(arg)) {\n stream = arg;\n } else if (isArrayBuffer(arg)) {\n stream = new Stream(arg);\n } else {\n throw new Error('PDFDocument: Unknown argument type');\n }\n if (stream.length <= 0) {\n throw new Error('PDFDocument: stream must have data');\n }\n\n this.pdfManager = pdfManager;\n this.stream = stream;\n this.xref = new XRef(stream, pdfManager);\n }\n\n function find(stream, needle, limit, backwards) {\n var pos = stream.pos;\n var end = stream.end;\n var strBuf = [];\n if (pos + limit > end) {\n limit = end - pos;\n }\n for (var n = 0; n < limit; ++n) {\n strBuf.push(String.fromCharCode(stream.getByte()));\n }\n var str = strBuf.join('');\n stream.pos = pos;\n var index = backwards ? str.lastIndexOf(needle) : str.indexOf(needle);\n if (index === -1) {\n return false; /* not found */\n }\n stream.pos += index;\n return true; /* found */\n }\n\n var DocumentInfoValidators = {\n get entries() {\n // Lazily build this since all the validation functions below are not\n // defined until after this file loads.\n return shadow(this, 'entries', {\n Title: isString,\n Author: isString,\n Subject: isString,\n Keywords: isString,\n Creator: isString,\n Producer: isString,\n CreationDate: isString,\n ModDate: isString,\n Trapped: isName,\n });\n },\n };\n\n PDFDocument.prototype = {\n parse: function PDFDocument_parse(recoveryMode) {\n this.setup(recoveryMode);\n var version = this.catalog.catDict.get('Version');\n if (isName(version)) {\n this.pdfFormatVersion = version.name;\n }\n try {\n // checking if AcroForm is present\n this.acroForm = this.catalog.catDict.get('AcroForm');\n if (this.acroForm) {\n this.xfa = this.acroForm.get('XFA');\n var fields = this.acroForm.get('Fields');\n if ((!fields || !isArray(fields) || fields.length === 0) &&\n !this.xfa) {\n // no fields and no XFA -- not a form (?)\n this.acroForm = null;\n }\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n info('Something wrong with AcroForm entry');\n this.acroForm = null;\n }\n },\n\n get linearization() {\n var linearization = null;\n if (this.stream.length) {\n try {\n linearization = Linearization.create(this.stream);\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info(err);\n }\n }\n // shadow the prototype getter with a data property\n return shadow(this, 'linearization', linearization);\n },\n get startXRef() {\n var stream = this.stream;\n var startXRef = 0;\n var linearization = this.linearization;\n if (linearization) {\n // Find end of first obj.\n stream.reset();\n if (find(stream, 'endobj', 1024)) {\n startXRef = stream.pos + 6;\n }\n } else {\n // Find startxref by jumping backward from the end of the file.\n var step = 1024;\n var found = false, pos = stream.end;\n while (!found && pos > 0) {\n pos -= step - 'startxref'.length;\n if (pos < 0) {\n pos = 0;\n }\n stream.pos = pos;\n found = find(stream, 'startxref', step, true);\n }\n if (found) {\n stream.skip(9);\n var ch;\n do {\n ch = stream.getByte();\n } while (isSpace(ch));\n var str = '';\n while (ch >= 0x20 && ch <= 0x39) { // < '9'\n str += String.fromCharCode(ch);\n ch = stream.getByte();\n }\n startXRef = parseInt(str, 10);\n if (isNaN(startXRef)) {\n startXRef = 0;\n }\n }\n }\n // shadow the prototype getter with a data property\n return shadow(this, 'startXRef', startXRef);\n },\n get mainXRefEntriesOffset() {\n var mainXRefEntriesOffset = 0;\n var linearization = this.linearization;\n if (linearization) {\n mainXRefEntriesOffset = linearization.mainXRefEntriesOffset;\n }\n // shadow the prototype getter with a data property\n return shadow(this, 'mainXRefEntriesOffset', mainXRefEntriesOffset);\n },\n // Find the header, remove leading garbage and setup the stream\n // starting from the header.\n checkHeader: function PDFDocument_checkHeader() {\n var stream = this.stream;\n stream.reset();\n if (find(stream, '%PDF-', 1024)) {\n // Found the header, trim off any garbage before it.\n stream.moveStart();\n // Reading file format version\n var MAX_VERSION_LENGTH = 12;\n var version = '', ch;\n while ((ch = stream.getByte()) > 0x20) { // SPACE\n if (version.length >= MAX_VERSION_LENGTH) {\n break;\n }\n version += String.fromCharCode(ch);\n }\n if (!this.pdfFormatVersion) {\n // removing \"%PDF-\"-prefix\n this.pdfFormatVersion = version.substring(5);\n }\n return;\n }\n // May not be a PDF file, continue anyway.\n },\n parseStartXRef: function PDFDocument_parseStartXRef() {\n var startXRef = this.startXRef;\n this.xref.setStartXRef(startXRef);\n },\n setup: function PDFDocument_setup(recoveryMode) {\n this.xref.parse(recoveryMode);\n var pageFactory = {\n createPage: (pageIndex, dict, ref, fontCache, builtInCMapCache) => {\n return new Page(this.pdfManager, this.xref, pageIndex, dict, ref,\n fontCache, builtInCMapCache);\n },\n };\n this.catalog = new Catalog(this.pdfManager, this.xref, pageFactory);\n },\n get numPages() {\n var linearization = this.linearization;\n var num = linearization ? linearization.numPages : this.catalog.numPages;\n // shadow the prototype getter\n return shadow(this, 'numPages', num);\n },\n get documentInfo() {\n var docInfo = {\n PDFFormatVersion: this.pdfFormatVersion,\n IsAcroFormPresent: !!this.acroForm,\n IsXFAPresent: !!this.xfa,\n };\n var infoDict;\n try {\n infoDict = this.xref.trailer.get('Info');\n } catch (err) {\n if (err instanceof MissingDataException) {\n throw err;\n }\n info('The document information dictionary is invalid.');\n }\n if (infoDict) {\n var validEntries = DocumentInfoValidators.entries;\n // Only fill the document info with valid entries from the spec.\n for (var key in validEntries) {\n if (infoDict.has(key)) {\n var value = infoDict.get(key);\n // Make sure the value conforms to the spec.\n if (validEntries[key](value)) {\n docInfo[key] = (typeof value !== 'string' ?\n value : stringToPDFString(value));\n } else {\n info('Bad value in document info for \"' + key + '\"');\n }\n }\n }\n }\n return shadow(this, 'documentInfo', docInfo);\n },\n get fingerprint() {\n var xref = this.xref, hash, fileID = '';\n var idArray = xref.trailer.get('ID');\n\n if (idArray && isArray(idArray) && idArray[0] && isString(idArray[0]) &&\n idArray[0] !== EMPTY_FINGERPRINT) {\n hash = stringToBytes(idArray[0]);\n } else {\n if (this.stream.ensureRange) {\n this.stream.ensureRange(0,\n Math.min(FINGERPRINT_FIRST_BYTES, this.stream.end));\n }\n hash = calculateMD5(this.stream.bytes.subarray(0,\n FINGERPRINT_FIRST_BYTES), 0, FINGERPRINT_FIRST_BYTES);\n }\n\n for (var i = 0, n = hash.length; i < n; i++) {\n var hex = hash[i].toString(16);\n fileID += hex.length === 1 ? '0' + hex : hex;\n }\n\n return shadow(this, 'fingerprint', fileID);\n },\n\n getPage: function PDFDocument_getPage(pageIndex) {\n return this.catalog.getPage(pageIndex);\n },\n\n cleanup: function PDFDocument_cleanup() {\n return this.catalog.cleanup();\n },\n };\n\n return PDFDocument;\n})();\n\nexport {\n Page,\n PDFDocument,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/document.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bytesToString, FormatError, Util } from '../shared/util';\nimport { CFFParser } from './cff_parser';\nimport { getGlyphsUnicode } from './glyphlist';\nimport { StandardEncoding } from './encodings';\nimport { Stream } from './stream';\n\nvar FontRendererFactory = (function FontRendererFactoryClosure() {\n function getLong(data, offset) {\n return (data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3];\n }\n\n function getUshort(data, offset) {\n return (data[offset] << 8) | data[offset + 1];\n }\n\n function parseCmap(data, start, end) {\n var offset = (getUshort(data, start + 2) === 1 ?\n getLong(data, start + 8) : getLong(data, start + 16));\n var format = getUshort(data, start + offset);\n var ranges, p, i;\n if (format === 4) {\n getUshort(data, start + offset + 2); // length\n var segCount = getUshort(data, start + offset + 6) >> 1;\n p = start + offset + 14;\n ranges = [];\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i] = { end: getUshort(data, p), };\n }\n p += 2;\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].start = getUshort(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n ranges[i].idDelta = getUshort(data, p);\n }\n for (i = 0; i < segCount; i++, p += 2) {\n var idOffset = getUshort(data, p);\n if (idOffset === 0) {\n continue;\n }\n ranges[i].ids = [];\n for (var j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {\n ranges[i].ids[j] = getUshort(data, p + idOffset);\n idOffset += 2;\n }\n }\n return ranges;\n } else if (format === 12) {\n getLong(data, start + offset + 4); // length\n var groups = getLong(data, start + offset + 12);\n p = start + offset + 16;\n ranges = [];\n for (i = 0; i < groups; i++) {\n ranges.push({\n start: getLong(data, p),\n end: getLong(data, p + 4),\n idDelta: getLong(data, p + 8) - getLong(data, p),\n });\n p += 12;\n }\n return ranges;\n }\n throw new FormatError(`unsupported cmap: ${format}`);\n }\n\n function parseCff(data, start, end, seacAnalysisEnabled) {\n var properties = {};\n var parser = new CFFParser(new Stream(data, start, end - start),\n properties, seacAnalysisEnabled);\n var cff = parser.parse();\n return {\n glyphs: cff.charStrings.objects,\n subrs: (cff.topDict.privateDict && cff.topDict.privateDict.subrsIndex &&\n cff.topDict.privateDict.subrsIndex.objects),\n gsubrs: cff.globalSubrIndex && cff.globalSubrIndex.objects,\n };\n }\n\n function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {\n var itemSize, itemDecode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3];\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n }\n var glyphs = [];\n var startOffset = itemDecode(loca, 0);\n for (var j = itemSize; j < loca.length; j += itemSize) {\n var endOffset = itemDecode(loca, j);\n glyphs.push(glyf.subarray(startOffset, endOffset));\n startOffset = endOffset;\n }\n return glyphs;\n }\n\n function lookupCmap(ranges, unicode) {\n var code = unicode.charCodeAt(0), gid = 0;\n var l = 0, r = ranges.length - 1;\n while (l < r) {\n var c = (l + r + 1) >> 1;\n if (code < ranges[c].start) {\n r = c - 1;\n } else {\n l = c;\n }\n }\n if (ranges[l].start <= code && code <= ranges[l].end) {\n gid = (ranges[l].idDelta + (ranges[l].ids ?\n ranges[l].ids[code - ranges[l].start] : code)) & 0xFFFF;\n }\n return {\n charCode: code,\n glyphId: gid,\n };\n }\n\n function compileGlyf(code, cmds, font) {\n function moveTo(x, y) {\n cmds.push({ cmd: 'moveTo', args: [x, y], });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: 'lineTo', args: [x, y], });\n }\n function quadraticCurveTo(xa, ya, x, y) {\n cmds.push({ cmd: 'quadraticCurveTo', args: [xa, ya, x, y], });\n }\n\n var i = 0;\n var numberOfContours = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n var flags;\n var x = 0, y = 0;\n i += 10;\n if (numberOfContours < 0) {\n // composite glyph\n do {\n flags = (code[i] << 8) | code[i + 1];\n var glyphIndex = (code[i + 2] << 8) | code[i + 3];\n i += 4;\n var arg1, arg2;\n if ((flags & 0x01)) {\n arg1 = ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n arg2 = ((code[i + 2] << 24) | (code[i + 3] << 16)) >> 16;\n i += 4;\n } else {\n arg1 = code[i++]; arg2 = code[i++];\n }\n if ((flags & 0x02)) {\n x = arg1;\n y = arg2;\n } else {\n x = 0; y = 0; // TODO \"they are points\" ?\n }\n var scaleX = 1, scaleY = 1, scale01 = 0, scale10 = 0;\n if ((flags & 0x08)) {\n scaleX =\n scaleY = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n i += 2;\n } else if ((flags & 0x40)) {\n scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n scaleY = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n i += 4;\n } else if ((flags & 0x80)) {\n scaleX = ((code[i] << 24) | (code[i + 1] << 16)) / 1073741824;\n scale01 = ((code[i + 2] << 24) | (code[i + 3] << 16)) / 1073741824;\n scale10 = ((code[i + 4] << 24) | (code[i + 5] << 16)) / 1073741824;\n scaleY = ((code[i + 6] << 24) | (code[i + 7] << 16)) / 1073741824;\n i += 8;\n }\n var subglyph = font.glyphs[glyphIndex];\n if (subglyph) {\n cmds.push({ cmd: 'save', });\n cmds.push({ cmd: 'transform',\n args: [scaleX, scale01, scale10, scaleY, x, y], });\n compileGlyf(subglyph, cmds, font);\n cmds.push({ cmd: 'restore', });\n }\n } while ((flags & 0x20));\n } else {\n // simple glyph\n var endPtsOfContours = [];\n var j, jj;\n for (j = 0; j < numberOfContours; j++) {\n endPtsOfContours.push((code[i] << 8) | code[i + 1]);\n i += 2;\n }\n var instructionLength = (code[i] << 8) | code[i + 1];\n i += 2 + instructionLength; // skipping the instructions\n var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;\n var points = [];\n while (points.length < numberOfPoints) {\n flags = code[i++];\n var repeat = 1;\n if ((flags & 0x08)) {\n repeat += code[i++];\n }\n while (repeat-- > 0) {\n points.push({ flags, });\n }\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x12) {\n case 0x00:\n x += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n i += 2;\n break;\n case 0x02:\n x -= code[i++];\n break;\n case 0x12:\n x += code[i++];\n break;\n }\n points[j].x = x;\n }\n for (j = 0; j < numberOfPoints; j++) {\n switch (points[j].flags & 0x24) {\n case 0x00:\n y += ((code[i] << 24) | (code[i + 1] << 16)) >> 16;\n i += 2;\n break;\n case 0x04:\n y -= code[i++];\n break;\n case 0x24:\n y += code[i++];\n break;\n }\n points[j].y = y;\n }\n\n var startPoint = 0;\n for (i = 0; i < numberOfContours; i++) {\n var endPoint = endPtsOfContours[i];\n // contours might have implicit points, which is located in the middle\n // between two neighboring off-curve points\n var contour = points.slice(startPoint, endPoint + 1);\n if ((contour[0].flags & 1)) {\n contour.push(contour[0]); // using start point at the contour end\n } else if ((contour[contour.length - 1].flags & 1)) {\n // first is off-curve point, trying to use one from the end\n contour.unshift(contour[contour.length - 1]);\n } else {\n // start and end are off-curve points, creating implicit one\n var p = {\n flags: 1,\n x: (contour[0].x + contour[contour.length - 1].x) / 2,\n y: (contour[0].y + contour[contour.length - 1].y) / 2,\n };\n contour.unshift(p);\n contour.push(p);\n }\n moveTo(contour[0].x, contour[0].y);\n for (j = 1, jj = contour.length; j < jj; j++) {\n if ((contour[j].flags & 1)) {\n lineTo(contour[j].x, contour[j].y);\n } else if ((contour[j + 1].flags & 1)) {\n quadraticCurveTo(contour[j].x, contour[j].y,\n contour[j + 1].x, contour[j + 1].y);\n j++;\n } else {\n quadraticCurveTo(contour[j].x, contour[j].y,\n (contour[j].x + contour[j + 1].x) / 2,\n (contour[j].y + contour[j + 1].y) / 2);\n }\n }\n startPoint = endPoint + 1;\n }\n }\n }\n\n function compileCharString(code, cmds, font) {\n var stack = [];\n var x = 0, y = 0;\n var stems = 0;\n\n function moveTo(x, y) {\n cmds.push({ cmd: 'moveTo', args: [x, y], });\n }\n function lineTo(x, y) {\n cmds.push({ cmd: 'lineTo', args: [x, y], });\n }\n function bezierCurveTo(x1, y1, x2, y2, x, y) {\n cmds.push({ cmd: 'bezierCurveTo', args: [x1, y1, x2, y2, x, y], });\n }\n\n function parse(code) {\n var i = 0;\n while (i < code.length) {\n var stackClean = false;\n var v = code[i++];\n var xa, xb, ya, yb, y1, y2, y3, n, subrCode;\n switch (v) {\n case 1: // hstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 3: // vstem\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 4: // vmoveto\n y += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 5: // rlineto\n while (stack.length > 0) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 6: // hlineto\n while (stack.length > 0) {\n x += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n y += stack.shift();\n lineTo(x, y);\n }\n break;\n case 7: // vlineto\n while (stack.length > 0) {\n y += stack.shift();\n lineTo(x, y);\n if (stack.length === 0) {\n break;\n }\n x += stack.shift();\n lineTo(x, y);\n }\n break;\n case 8: // rrcurveto\n while (stack.length > 0) {\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 10: // callsubr\n n = stack.pop() + font.subrsBias;\n subrCode = font.subrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 11: // return\n return;\n case 12:\n v = code[i++];\n switch (v) {\n case 34: // flex\n xa = x + stack.shift();\n xb = xa + stack.shift(); y1 = y + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y, xb, y1, x, y1);\n xa = x + stack.shift();\n xb = xa + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y, x, y);\n break;\n case 35: // flex\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n stack.pop(); // fd\n break;\n case 36: // hflex1\n xa = x + stack.shift(); y1 = y + stack.shift();\n xb = xa + stack.shift(); y2 = y1 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y1, xb, y2, x, y2);\n xa = x + stack.shift();\n xb = xa + stack.shift(); y3 = y2 + stack.shift();\n x = xb + stack.shift();\n bezierCurveTo(xa, y2, xb, y3, x, y);\n break;\n case 37: // flex1\n var x0 = x, y0 = y;\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb; y = yb;\n if (Math.abs(x - x0) > Math.abs(y - y0)) {\n x += stack.shift();\n } else {\n y += stack.shift();\n }\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n default:\n throw new FormatError(`unknown operator: 12 ${v}`);\n }\n break;\n case 14: // endchar\n if (stack.length >= 4) {\n var achar = stack.pop();\n var bchar = stack.pop();\n y = stack.pop();\n x = stack.pop();\n cmds.push({ cmd: 'save', });\n cmds.push({ cmd: 'translate', args: [x, y], });\n var cmap = lookupCmap(font.cmap, String.fromCharCode(\n font.glyphNameMap[StandardEncoding[achar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font);\n cmds.push({ cmd: 'restore', });\n\n cmap = lookupCmap(font.cmap, String.fromCharCode(\n font.glyphNameMap[StandardEncoding[bchar]]));\n compileCharString(font.glyphs[cmap.glyphId], cmds, font);\n }\n return;\n case 18: // hstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 19: // hintmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 20: // cntrmask\n stems += stack.length >> 1;\n i += (stems + 7) >> 3;\n stackClean = true;\n break;\n case 21: // rmoveto\n y += stack.pop();\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 22: // hmoveto\n x += stack.pop();\n moveTo(x, y);\n stackClean = true;\n break;\n case 23: // vstemhm\n stems += stack.length >> 1;\n stackClean = true;\n break;\n case 24: // rcurveline\n while (stack.length > 2) {\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n break;\n case 25: // rlinecurve\n while (stack.length > 6) {\n x += stack.shift();\n y += stack.shift();\n lineTo(x, y);\n }\n xa = x + stack.shift(); ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n break;\n case 26: // vvcurveto\n if (stack.length % 2) {\n x += stack.shift();\n }\n while (stack.length > 0) {\n xa = x; ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb; y = yb + stack.shift();\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 27: // hhcurveto\n if (stack.length % 2) {\n y += stack.shift();\n }\n while (stack.length > 0) {\n xa = x + stack.shift(); ya = y;\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift(); y = yb;\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 28:\n stack.push(((code[i] << 24) | (code[i + 1] << 16)) >> 16);\n i += 2;\n break;\n case 29: // callgsubr\n n = stack.pop() + font.gsubrsBias;\n subrCode = font.gsubrs[n];\n if (subrCode) {\n parse(subrCode);\n }\n break;\n case 30: // vhcurveto\n while (stack.length > 0) {\n xa = x; ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x + stack.shift(); ya = y;\n xb = xa + stack.shift(); yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n case 31: // hvcurveto\n while (stack.length > 0) {\n xa = x + stack.shift(); ya = y;\n xb = xa + stack.shift(); yb = ya + stack.shift();\n y = yb + stack.shift();\n x = xb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n if (stack.length === 0) {\n break;\n }\n\n xa = x; ya = y + stack.shift();\n xb = xa + stack.shift(); yb = ya + stack.shift();\n x = xb + stack.shift();\n y = yb + (stack.length === 1 ? stack.shift() : 0);\n bezierCurveTo(xa, ya, xb, yb, x, y);\n }\n break;\n default:\n if (v < 32) {\n throw new FormatError(`unknown operator: ${v}`);\n }\n if (v < 247) {\n stack.push(v - 139);\n } else if (v < 251) {\n stack.push((v - 247) * 256 + code[i++] + 108);\n } else if (v < 255) {\n stack.push(-(v - 251) * 256 - code[i++] - 108);\n } else {\n stack.push(((code[i] << 24) | (code[i + 1] << 16) |\n (code[i + 2] << 8) | code[i + 3]) / 65536);\n i += 4;\n }\n break;\n }\n if (stackClean) {\n stack.length = 0;\n }\n }\n }\n parse(code);\n }\n\n var noop = '';\n\n function CompiledFont(fontMatrix) {\n this.compiledGlyphs = Object.create(null);\n this.compiledCharCodeToGlyphId = Object.create(null);\n this.fontMatrix = fontMatrix;\n }\n CompiledFont.prototype = {\n getPathJs(unicode) {\n var cmap = lookupCmap(this.cmap, unicode);\n var fn = this.compiledGlyphs[cmap.glyphId];\n if (!fn) {\n fn = this.compileGlyph(this.glyphs[cmap.glyphId]);\n this.compiledGlyphs[cmap.glyphId] = fn;\n }\n if (this.compiledCharCodeToGlyphId[cmap.charCode] === undefined) {\n this.compiledCharCodeToGlyphId[cmap.charCode] = cmap.glyphId;\n }\n return fn;\n },\n\n compileGlyph(code) {\n if (!code || code.length === 0 || code[0] === 14) {\n return noop;\n }\n\n var cmds = [];\n cmds.push({ cmd: 'save', });\n cmds.push({ cmd: 'transform', args: this.fontMatrix.slice(), });\n cmds.push({ cmd: 'scale', args: ['size', '-size'], });\n\n this.compileGlyphImpl(code, cmds);\n\n cmds.push({ cmd: 'restore', });\n\n return cmds;\n },\n\n compileGlyphImpl() {\n throw new Error('Children classes should implement this.');\n },\n\n hasBuiltPath(unicode) {\n var cmap = lookupCmap(this.cmap, unicode);\n return (this.compiledGlyphs[cmap.glyphId] !== undefined &&\n this.compiledCharCodeToGlyphId[cmap.charCode] !== undefined);\n },\n };\n\n function TrueTypeCompiled(glyphs, cmap, fontMatrix) {\n fontMatrix = fontMatrix || [0.000488, 0, 0, 0.000488, 0, 0];\n CompiledFont.call(this, fontMatrix);\n\n this.glyphs = glyphs;\n this.cmap = cmap;\n }\n\n Util.inherit(TrueTypeCompiled, CompiledFont, {\n compileGlyphImpl(code, cmds) {\n compileGlyf(code, cmds, this);\n },\n });\n\n function Type2Compiled(cffInfo, cmap, fontMatrix, glyphNameMap) {\n fontMatrix = fontMatrix || [0.001, 0, 0, 0.001, 0, 0];\n CompiledFont.call(this, fontMatrix);\n\n this.glyphs = cffInfo.glyphs;\n this.gsubrs = cffInfo.gsubrs || [];\n this.subrs = cffInfo.subrs || [];\n this.cmap = cmap;\n this.glyphNameMap = glyphNameMap || getGlyphsUnicode();\n\n this.gsubrsBias = (this.gsubrs.length < 1240 ?\n 107 : (this.gsubrs.length < 33900 ? 1131 : 32768));\n this.subrsBias = (this.subrs.length < 1240 ?\n 107 : (this.subrs.length < 33900 ? 1131 : 32768));\n }\n\n Util.inherit(Type2Compiled, CompiledFont, {\n compileGlyphImpl(code, cmds) {\n compileCharString(code, cmds, this);\n },\n });\n\n\n return {\n create: function FontRendererFactory_create(font, seacAnalysisEnabled) {\n var data = new Uint8Array(font.data);\n var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;\n var numTables = getUshort(data, 4);\n for (var i = 0, p = 12; i < numTables; i++, p += 16) {\n var tag = bytesToString(data.subarray(p, p + 4));\n var offset = getLong(data, p + 8);\n var length = getLong(data, p + 12);\n switch (tag) {\n case 'cmap':\n cmap = parseCmap(data, offset, offset + length);\n break;\n case 'glyf':\n glyf = data.subarray(offset, offset + length);\n break;\n case 'loca':\n loca = data.subarray(offset, offset + length);\n break;\n case 'head':\n unitsPerEm = getUshort(data, offset + 18);\n indexToLocFormat = getUshort(data, offset + 50);\n break;\n case 'CFF ':\n cff = parseCff(data, offset, offset + length, seacAnalysisEnabled);\n break;\n }\n }\n\n if (glyf) {\n var fontMatrix = (!unitsPerEm ? font.fontMatrix :\n [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0]);\n return new TrueTypeCompiled(\n parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);\n }\n return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);\n },\n };\n})();\n\nexport {\n FontRendererFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/font_renderer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n bytesToString, FONT_IDENTITY_MATRIX, FontType, FormatError, info, isArray,\n isInt, isNum, isSpace, MissingDataException, readUint32, shadow, string32,\n warn\n} from '../shared/util';\nimport {\n CFF, CFFCharset, CFFCompiler, CFFHeader, CFFIndex, CFFParser, CFFPrivateDict,\n CFFStandardStrings, CFFStrings, CFFTopDict\n} from './cff_parser';\nimport { getDingbatsGlyphsUnicode, getGlyphsUnicode } from './glyphlist';\nimport {\n getEncoding, MacRomanEncoding, StandardEncoding, SymbolSetEncoding,\n ZapfDingbatsEncoding\n} from './encodings';\nimport {\n getGlyphMapForStandardFonts, getNonStdFontMap, getStdFontMap,\n getSupplementalGlyphMapForArialBlack\n} from './standard_fonts';\nimport {\n getUnicodeForGlyph, getUnicodeRangeFor, mapSpecialUnicodeValues\n} from './unicode';\nimport { FontRendererFactory } from './font_renderer';\nimport { Stream } from './stream';\nimport { Type1Parser } from './type1_parser';\n\n// Unicode Private Use Area\nvar PRIVATE_USE_OFFSET_START = 0xE000;\nvar PRIVATE_USE_OFFSET_END = 0xF8FF;\nvar SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false;\n\n// PDF Glyph Space Units are one Thousandth of a TextSpace Unit\n// except for Type 3 fonts\nvar PDF_GLYPH_SPACE_UNITS = 1000;\n\n// Accented charactars are not displayed properly on Windows, using this flag\n// to control analysis of seac charstrings.\nvar SEAC_ANALYSIS_ENABLED = false;\n\nvar FontFlags = {\n FixedPitch: 1,\n Serif: 2,\n Symbolic: 4,\n Script: 8,\n Nonsymbolic: 32,\n Italic: 64,\n AllCap: 65536,\n SmallCap: 131072,\n ForceBold: 262144,\n};\n\nvar MacStandardGlyphOrdering = [\n '.notdef', '.null', 'nonmarkingreturn', 'space', 'exclam', 'quotedbl',\n 'numbersign', 'dollar', 'percent', 'ampersand', 'quotesingle', 'parenleft',\n 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash',\n 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight',\n 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at',\n 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',\n 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft',\n 'backslash', 'bracketright', 'asciicircum', 'underscore', 'grave', 'a', 'b',\n 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',\n 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright',\n 'asciitilde', 'Adieresis', 'Aring', 'Ccedilla', 'Eacute', 'Ntilde',\n 'Odieresis', 'Udieresis', 'aacute', 'agrave', 'acircumflex', 'adieresis',\n 'atilde', 'aring', 'ccedilla', 'eacute', 'egrave', 'ecircumflex', 'edieresis',\n 'iacute', 'igrave', 'icircumflex', 'idieresis', 'ntilde', 'oacute', 'ograve',\n 'ocircumflex', 'odieresis', 'otilde', 'uacute', 'ugrave', 'ucircumflex',\n 'udieresis', 'dagger', 'degree', 'cent', 'sterling', 'section', 'bullet',\n 'paragraph', 'germandbls', 'registered', 'copyright', 'trademark', 'acute',\n 'dieresis', 'notequal', 'AE', 'Oslash', 'infinity', 'plusminus', 'lessequal',\n 'greaterequal', 'yen', 'mu', 'partialdiff', 'summation', 'product', 'pi',\n 'integral', 'ordfeminine', 'ordmasculine', 'Omega', 'ae', 'oslash',\n 'questiondown', 'exclamdown', 'logicalnot', 'radical', 'florin',\n 'approxequal', 'Delta', 'guillemotleft', 'guillemotright', 'ellipsis',\n 'nonbreakingspace', 'Agrave', 'Atilde', 'Otilde', 'OE', 'oe', 'endash',\n 'emdash', 'quotedblleft', 'quotedblright', 'quoteleft', 'quoteright',\n 'divide', 'lozenge', 'ydieresis', 'Ydieresis', 'fraction', 'currency',\n 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'daggerdbl', 'periodcentered',\n 'quotesinglbase', 'quotedblbase', 'perthousand', 'Acircumflex',\n 'Ecircumflex', 'Aacute', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex',\n 'Idieresis', 'Igrave', 'Oacute', 'Ocircumflex', 'apple', 'Ograve', 'Uacute',\n 'Ucircumflex', 'Ugrave', 'dotlessi', 'circumflex', 'tilde', 'macron',\n 'breve', 'dotaccent', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron',\n 'Lslash', 'lslash', 'Scaron', 'scaron', 'Zcaron', 'zcaron', 'brokenbar',\n 'Eth', 'eth', 'Yacute', 'yacute', 'Thorn', 'thorn', 'minus', 'multiply',\n 'onesuperior', 'twosuperior', 'threesuperior', 'onehalf', 'onequarter',\n 'threequarters', 'franc', 'Gbreve', 'gbreve', 'Idotaccent', 'Scedilla',\n 'scedilla', 'Cacute', 'cacute', 'Ccaron', 'ccaron', 'dcroat'];\n\nfunction adjustWidths(properties) {\n if (!properties.fontMatrix) {\n return;\n }\n if (properties.fontMatrix[0] === FONT_IDENTITY_MATRIX[0]) {\n return;\n }\n // adjusting width to fontMatrix scale\n var scale = 0.001 / properties.fontMatrix[0];\n var glyphsWidths = properties.widths;\n for (var glyph in glyphsWidths) {\n glyphsWidths[glyph] *= scale;\n }\n properties.defaultWidth *= scale;\n}\n\nfunction adjustToUnicode(properties, builtInEncoding) {\n if (properties.hasIncludedToUnicodeMap) {\n return; // The font dictionary has a `ToUnicode` entry.\n }\n if (properties.hasEncoding) {\n return; // The font dictionary has an `Encoding` entry.\n }\n if (builtInEncoding === properties.defaultEncoding) {\n return; // No point in trying to adjust `toUnicode` if the encodings match.\n }\n if (properties.toUnicode instanceof IdentityToUnicodeMap) {\n return;\n }\n var toUnicode = [], glyphsUnicodeMap = getGlyphsUnicode();\n for (var charCode in builtInEncoding) {\n var glyphName = builtInEncoding[charCode];\n var unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n toUnicode[charCode] = String.fromCharCode(unicode);\n }\n }\n properties.toUnicode.amend(toUnicode);\n}\n\nfunction getFontType(type, subtype) {\n switch (type) {\n case 'Type1':\n return subtype === 'Type1C' ? FontType.TYPE1C : FontType.TYPE1;\n case 'CIDFontType0':\n return subtype === 'CIDFontType0C' ? FontType.CIDFONTTYPE0C :\n FontType.CIDFONTTYPE0;\n case 'OpenType':\n return FontType.OPENTYPE;\n case 'TrueType':\n return FontType.TRUETYPE;\n case 'CIDFontType2':\n return FontType.CIDFONTTYPE2;\n case 'MMType1':\n return FontType.MMTYPE1;\n case 'Type0':\n return FontType.TYPE0;\n default:\n return FontType.UNKNOWN;\n }\n}\n\n// Some bad PDF generators, e.g. Scribus PDF, include glyph names\n// in a 'uniXXXX' format -- attempting to recover proper ones.\nfunction recoverGlyphName(name, glyphsUnicodeMap) {\n if (glyphsUnicodeMap[name] !== undefined) {\n return name;\n }\n // The glyph name is non-standard, trying to recover.\n var unicode = getUnicodeForGlyph(name, glyphsUnicodeMap);\n if (unicode !== -1) {\n for (var key in glyphsUnicodeMap) {\n if (glyphsUnicodeMap[key] === unicode) {\n return key;\n }\n }\n }\n info('Unable to recover a standard glyph name for: ' + name);\n return name;\n}\n\nvar Glyph = (function GlyphClosure() {\n function Glyph(fontChar, unicode, accent, width, vmetric, operatorListId,\n isSpace, isInFont) {\n this.fontChar = fontChar;\n this.unicode = unicode;\n this.accent = accent;\n this.width = width;\n this.vmetric = vmetric;\n this.operatorListId = operatorListId;\n this.isSpace = isSpace;\n this.isInFont = isInFont;\n }\n\n Glyph.prototype.matchesForCache = function(fontChar, unicode, accent, width,\n vmetric, operatorListId, isSpace,\n isInFont) {\n return this.fontChar === fontChar &&\n this.unicode === unicode &&\n this.accent === accent &&\n this.width === width &&\n this.vmetric === vmetric &&\n this.operatorListId === operatorListId &&\n this.isSpace === isSpace &&\n this.isInFont === isInFont;\n };\n\n return Glyph;\n})();\n\nvar ToUnicodeMap = (function ToUnicodeMapClosure() {\n function ToUnicodeMap(cmap) {\n // The elements of this._map can be integers or strings, depending on how\n // |cmap| was created.\n this._map = cmap;\n }\n\n ToUnicodeMap.prototype = {\n get length() {\n return this._map.length;\n },\n\n forEach(callback) {\n for (var charCode in this._map) {\n callback(charCode, this._map[charCode].charCodeAt(0));\n }\n },\n\n has(i) {\n return this._map[i] !== undefined;\n },\n\n get(i) {\n return this._map[i];\n },\n\n charCodeOf(value) {\n // `Array.prototype.indexOf` is *extremely* inefficient for arrays which\n // are both very sparse and very large (see issue8372.pdf).\n let map = this._map;\n if (map.length <= 0x10000) {\n return map.indexOf(value);\n }\n for (let charCode in map) {\n if (map[charCode] === value) {\n return (charCode | 0);\n }\n }\n return -1;\n },\n\n amend(map) {\n for (var charCode in map) {\n this._map[charCode] = map[charCode];\n }\n },\n };\n\n return ToUnicodeMap;\n})();\n\nvar IdentityToUnicodeMap = (function IdentityToUnicodeMapClosure() {\n function IdentityToUnicodeMap(firstChar, lastChar) {\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n }\n\n IdentityToUnicodeMap.prototype = {\n get length() {\n return (this.lastChar + 1) - this.firstChar;\n },\n\n forEach(callback) {\n for (var i = this.firstChar, ii = this.lastChar; i <= ii; i++) {\n callback(i, i);\n }\n },\n\n has(i) {\n return this.firstChar <= i && i <= this.lastChar;\n },\n\n get(i) {\n if (this.firstChar <= i && i <= this.lastChar) {\n return String.fromCharCode(i);\n }\n return undefined;\n },\n\n charCodeOf(v) {\n return (isInt(v) && v >= this.firstChar && v <= this.lastChar) ? v : -1;\n },\n\n amend(map) {\n throw new Error('Should not call amend()');\n },\n };\n\n return IdentityToUnicodeMap;\n})();\n\nvar OpenTypeFileBuilder = (function OpenTypeFileBuilderClosure() {\n function writeInt16(dest, offset, num) {\n dest[offset] = (num >> 8) & 0xFF;\n dest[offset + 1] = num & 0xFF;\n }\n\n function writeInt32(dest, offset, num) {\n dest[offset] = (num >> 24) & 0xFF;\n dest[offset + 1] = (num >> 16) & 0xFF;\n dest[offset + 2] = (num >> 8) & 0xFF;\n dest[offset + 3] = num & 0xFF;\n }\n\n function writeData(dest, offset, data) {\n var i, ii;\n if (data instanceof Uint8Array) {\n dest.set(data, offset);\n } else if (typeof data === 'string') {\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data.charCodeAt(i) & 0xFF;\n }\n } else {\n // treating everything else as array\n for (i = 0, ii = data.length; i < ii; i++) {\n dest[offset++] = data[i] & 0xFF;\n }\n }\n }\n\n function OpenTypeFileBuilder(sfnt) {\n this.sfnt = sfnt;\n this.tables = Object.create(null);\n }\n\n OpenTypeFileBuilder.getSearchParams =\n function OpenTypeFileBuilder_getSearchParams(entriesCount, entrySize) {\n var maxPower2 = 1, log2 = 0;\n while ((maxPower2 ^ entriesCount) > maxPower2) {\n maxPower2 <<= 1;\n log2++;\n }\n var searchRange = maxPower2 * entrySize;\n return {\n range: searchRange,\n entry: log2,\n rangeShift: entrySize * entriesCount - searchRange,\n };\n };\n\n var OTF_HEADER_SIZE = 12;\n var OTF_TABLE_ENTRY_SIZE = 16;\n\n OpenTypeFileBuilder.prototype = {\n toArray: function OpenTypeFileBuilder_toArray() {\n var sfnt = this.sfnt;\n\n // Tables needs to be written by ascendant alphabetic order\n var tables = this.tables;\n var tablesNames = Object.keys(tables);\n tablesNames.sort();\n var numTables = tablesNames.length;\n\n var i, j, jj, table, tableName;\n // layout the tables data\n var offset = OTF_HEADER_SIZE + numTables * OTF_TABLE_ENTRY_SIZE;\n var tableOffsets = [offset];\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n var paddedLength = ((table.length + 3) & ~3) >>> 0;\n offset += paddedLength;\n tableOffsets.push(offset);\n }\n\n var file = new Uint8Array(offset);\n // write the table data first (mostly for checksum)\n for (i = 0; i < numTables; i++) {\n table = tables[tablesNames[i]];\n writeData(file, tableOffsets[i], table);\n }\n\n // sfnt version (4 bytes)\n if (sfnt === 'true') {\n // Windows hates the Mac TrueType sfnt version number\n sfnt = string32(0x00010000);\n }\n file[0] = sfnt.charCodeAt(0) & 0xFF;\n file[1] = sfnt.charCodeAt(1) & 0xFF;\n file[2] = sfnt.charCodeAt(2) & 0xFF;\n file[3] = sfnt.charCodeAt(3) & 0xFF;\n\n // numTables (2 bytes)\n writeInt16(file, 4, numTables);\n\n var searchParams = OpenTypeFileBuilder.getSearchParams(numTables, 16);\n\n // searchRange (2 bytes)\n writeInt16(file, 6, searchParams.range);\n // entrySelector (2 bytes)\n writeInt16(file, 8, searchParams.entry);\n // rangeShift (2 bytes)\n writeInt16(file, 10, searchParams.rangeShift);\n\n offset = OTF_HEADER_SIZE;\n // writing table entries\n for (i = 0; i < numTables; i++) {\n tableName = tablesNames[i];\n file[offset] = tableName.charCodeAt(0) & 0xFF;\n file[offset + 1] = tableName.charCodeAt(1) & 0xFF;\n file[offset + 2] = tableName.charCodeAt(2) & 0xFF;\n file[offset + 3] = tableName.charCodeAt(3) & 0xFF;\n\n // checksum\n var checksum = 0;\n for (j = tableOffsets[i], jj = tableOffsets[i + 1]; j < jj; j += 4) {\n var quad = readUint32(file, j);\n checksum = (checksum + quad) >>> 0;\n }\n writeInt32(file, offset + 4, checksum);\n\n // offset\n writeInt32(file, offset + 8, tableOffsets[i]);\n // length\n writeInt32(file, offset + 12, tables[tableName].length);\n\n offset += OTF_TABLE_ENTRY_SIZE;\n }\n return file;\n },\n\n addTable: function OpenTypeFileBuilder_addTable(tag, data) {\n if (tag in this.tables) {\n throw new Error('Table ' + tag + ' already exists');\n }\n this.tables[tag] = data;\n },\n };\n\n return OpenTypeFileBuilder;\n})();\n\n// Problematic Unicode characters in the fonts that needs to be moved to avoid\n// issues when they are painted on the canvas, e.g. complex-script shaping or\n// control/whitespace characters. The ranges are listed in pairs: the first item\n// is a code of the first problematic code, the second one is the next\n// non-problematic code. The ranges must be in sorted order.\nvar ProblematicCharRanges = new Int32Array([\n // Control characters.\n 0x0000, 0x0020,\n 0x007F, 0x00A1,\n 0x00AD, 0x00AE,\n // Chars that is used in complex-script shaping.\n 0x0600, 0x0780,\n 0x08A0, 0x10A0,\n 0x1780, 0x1800,\n 0x1C00, 0x1C50,\n // General punctuation chars.\n 0x2000, 0x2010,\n 0x2011, 0x2012,\n 0x2028, 0x2030,\n 0x205F, 0x2070,\n 0x25CC, 0x25CD,\n 0x3000, 0x3001,\n 0x3164, 0x3165,\n // Chars that is used in complex-script shaping.\n 0xAA60, 0xAA80,\n // Specials Unicode block.\n 0xFFF0, 0x10000\n]);\n\n/**\n * 'Font' is the class the outside world should use, it encapsulate all the font\n * decoding logics whatever type it is (assuming the font type is supported).\n *\n * For example to read a Type1 font and to attach it to the document:\n * var type1Font = new Font(\"MyFontName\", binaryFile, propertiesObject);\n * type1Font.bind();\n */\nvar Font = (function FontClosure() {\n function Font(name, file, properties) {\n var charCode;\n\n this.name = name;\n this.loadedName = properties.loadedName;\n this.isType3Font = properties.isType3Font;\n this.sizes = [];\n this.missingFile = false;\n\n this.glyphCache = Object.create(null);\n\n this.isSerifFont = !!(properties.flags & FontFlags.Serif);\n this.isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n this.isMonospace = !!(properties.flags & FontFlags.FixedPitch);\n\n var type = properties.type;\n var subtype = properties.subtype;\n this.type = type;\n this.subtype = subtype;\n\n this.fallbackName = (this.isMonospace ? 'monospace' :\n (this.isSerifFont ? 'serif' : 'sans-serif'));\n\n this.differences = properties.differences;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.composite = properties.composite;\n this.wideChars = properties.wideChars;\n this.cMap = properties.cMap;\n this.ascent = properties.ascent / PDF_GLYPH_SPACE_UNITS;\n this.descent = properties.descent / PDF_GLYPH_SPACE_UNITS;\n this.fontMatrix = properties.fontMatrix;\n this.bbox = properties.bbox;\n this.defaultEncoding = properties.defaultEncoding;\n\n this.toUnicode = properties.toUnicode;\n\n this.toFontChar = [];\n\n if (properties.type === 'Type3') {\n for (charCode = 0; charCode < 256; charCode++) {\n this.toFontChar[charCode] = (this.differences[charCode] ||\n properties.defaultEncoding[charCode]);\n }\n this.fontType = FontType.TYPE3;\n return;\n }\n\n this.cidEncoding = properties.cidEncoding;\n this.vertical = properties.vertical;\n if (this.vertical) {\n this.vmetrics = properties.vmetrics;\n this.defaultVMetrics = properties.defaultVMetrics;\n }\n\n if (!file || file.isEmpty) {\n if (file) {\n // Some bad PDF generators will include empty font files,\n // attempting to recover by assuming that no file exists.\n warn('Font file is empty in \"' + name + '\" (' + this.loadedName + ')');\n }\n this.fallbackToSystemFont();\n return;\n }\n\n // Some fonts might use wrong font types for Type1C or CIDFontType0C\n if (subtype === 'Type1C') {\n if (type !== 'Type1' && type !== 'MMType1') {\n // Some TrueType fonts by mistake claim Type1C\n if (isTrueTypeFile(file)) {\n subtype = 'TrueType';\n } else {\n type = 'Type1';\n }\n } else if (isOpenTypeFile(file)) {\n // Sometimes the type/subtype can be a complete lie (see issue7598.pdf).\n subtype = 'OpenType';\n }\n }\n if (subtype === 'CIDFontType0C' && type !== 'CIDFontType0') {\n type = 'CIDFontType0';\n }\n // Some CIDFontType0C fonts by mistake claim CIDFontType0.\n if (type === 'CIDFontType0') {\n if (isType1File(file)) {\n subtype = 'CIDFontType0';\n } else if (isOpenTypeFile(file)) {\n // Sometimes the type/subtype can be a complete lie (see issue6782.pdf).\n subtype = 'OpenType';\n } else {\n subtype = 'CIDFontType0C';\n }\n }\n if (subtype === 'OpenType' && type !== 'OpenType') {\n type = 'OpenType';\n }\n\n try {\n var data;\n switch (type) {\n case 'MMType1':\n info('MMType1 font (' + name + '), falling back to Type1.');\n /* falls through */\n case 'Type1':\n case 'CIDFontType0':\n this.mimetype = 'font/opentype';\n\n var cff = (subtype === 'Type1C' || subtype === 'CIDFontType0C') ?\n new CFFFont(file, properties) :\n new Type1Font(name, file, properties);\n\n adjustWidths(properties);\n\n // Wrap the CFF data inside an OTF font file\n data = this.convert(name, cff, properties);\n break;\n\n case 'OpenType':\n case 'TrueType':\n case 'CIDFontType2':\n this.mimetype = 'font/opentype';\n\n // Repair the TrueType file. It is can be damaged in the point of\n // view of the sanitizer\n data = this.checkAndRepair(name, file, properties);\n if (this.isOpenType) {\n adjustWidths(properties);\n\n type = 'OpenType';\n }\n break;\n\n default:\n throw new FormatError(`Font ${type} is not supported`);\n }\n } catch (e) {\n if (!(e instanceof FormatError)) {\n throw e;\n }\n warn(e);\n this.fallbackToSystemFont();\n return;\n }\n\n this.data = data;\n this.fontType = getFontType(type, subtype);\n\n // Transfer some properties again that could change during font conversion\n this.fontMatrix = properties.fontMatrix;\n this.widths = properties.widths;\n this.defaultWidth = properties.defaultWidth;\n this.toUnicode = properties.toUnicode;\n this.encoding = properties.baseEncoding;\n this.seacMap = properties.seacMap;\n\n this.loading = true;\n }\n\n Font.getFontID = (function () {\n var ID = 1;\n return function Font_getFontID() {\n return String(ID++);\n };\n })();\n\n function int16(b0, b1) {\n return (b0 << 8) + b1;\n }\n\n function signedInt16(b0, b1) {\n var value = (b0 << 8) + b1;\n return value & (1 << 15) ? value - 0x10000 : value;\n }\n\n function int32(b0, b1, b2, b3) {\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n function string16(value) {\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n }\n\n function safeString16(value) {\n // clamp value to the 16-bit int range\n value = (value > 0x7FFF ? 0x7FFF : (value < -0x8000 ? -0x8000 : value));\n return String.fromCharCode((value >> 8) & 0xff, value & 0xff);\n }\n\n function isTrueTypeFile(file) {\n var header = file.peekBytes(4);\n return readUint32(header, 0) === 0x00010000;\n }\n\n function isOpenTypeFile(file) {\n var header = file.peekBytes(4);\n return bytesToString(header) === 'OTTO';\n }\n\n function isType1File(file) {\n var header = file.peekBytes(2);\n // All Type1 font programs must begin with the comment '%!' (0x25 + 0x21).\n if (header[0] === 0x25 && header[1] === 0x21) {\n return true;\n }\n // ... obviously some fonts violate that part of the specification,\n // please refer to the comment in |Type1Font| below.\n if (header[0] === 0x80 && header[1] === 0x01) { // pfb file header.\n return true;\n }\n return false;\n }\n\n function buildToFontChar(encoding, glyphsUnicodeMap, differences) {\n var toFontChar = [], unicode;\n for (var i = 0, ii = encoding.length; i < ii; i++) {\n unicode = getUnicodeForGlyph(encoding[i], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[i] = unicode;\n }\n }\n for (var charCode in differences) {\n unicode = getUnicodeForGlyph(differences[charCode], glyphsUnicodeMap);\n if (unicode !== -1) {\n toFontChar[+charCode] = unicode;\n }\n }\n return toFontChar;\n }\n\n /**\n * Helper function for `adjustMapping`.\n * @return {boolean}\n */\n function isProblematicUnicodeLocation(code) {\n // Using binary search to find a range start.\n var i = 0, j = ProblematicCharRanges.length - 1;\n while (i < j) {\n var c = (i + j + 1) >> 1;\n if (code < ProblematicCharRanges[c]) {\n j = c - 1;\n } else {\n i = c;\n }\n }\n // Even index means code in problematic range.\n return !(i & 1);\n }\n\n /**\n * Rebuilds the char code to glyph ID map by trying to replace the char codes\n * with their unicode value. It also moves char codes that are in known\n * problematic locations.\n * @return {Object} Two properties:\n * 'toFontChar' - maps original char codes(the value that will be read\n * from commands such as show text) to the char codes that will be used in the\n * font that we build\n * 'charCodeToGlyphId' - maps the new font char codes to glyph ids\n */\n function adjustMapping(charCodeToGlyphId, properties, missingGlyphs) {\n var toUnicode = properties.toUnicode;\n var isSymbolic = !!(properties.flags & FontFlags.Symbolic);\n var isIdentityUnicode =\n properties.toUnicode instanceof IdentityToUnicodeMap;\n var newMap = Object.create(null);\n var toFontChar = [];\n var usedFontCharCodes = [];\n var nextAvailableFontCharCode = PRIVATE_USE_OFFSET_START;\n for (var originalCharCode in charCodeToGlyphId) {\n originalCharCode |= 0;\n var glyphId = charCodeToGlyphId[originalCharCode];\n // For missing glyphs don't create the mappings so the glyph isn't\n // drawn.\n if (missingGlyphs[glyphId]) {\n continue;\n }\n var fontCharCode = originalCharCode;\n // First try to map the value to a unicode position if a non identity map\n // was created.\n var hasUnicodeValue = false;\n if (!isIdentityUnicode && toUnicode.has(originalCharCode)) {\n hasUnicodeValue = true;\n var unicode = toUnicode.get(fontCharCode);\n // TODO: Try to map ligatures to the correct spot.\n if (unicode.length === 1) {\n fontCharCode = unicode.charCodeAt(0);\n }\n }\n // Try to move control characters, special characters and already mapped\n // characters to the private use area since they will not be drawn by\n // canvas if left in their current position. Also, move characters if the\n // font was symbolic and there is only an identity unicode map since the\n // characters probably aren't in the correct position (fixes an issue\n // with firefox and thuluthfont).\n if ((usedFontCharCodes[fontCharCode] !== undefined ||\n isProblematicUnicodeLocation(fontCharCode) ||\n (isSymbolic && !hasUnicodeValue))) {\n // Loop to try and find a free spot in the private use area.\n do {\n if (nextAvailableFontCharCode > PRIVATE_USE_OFFSET_END) {\n warn('Ran out of space in font private use area.');\n break;\n }\n fontCharCode = nextAvailableFontCharCode++;\n\n if (SKIP_PRIVATE_USE_RANGE_F000_TO_F01F && fontCharCode === 0xF000) {\n fontCharCode = 0xF020;\n nextAvailableFontCharCode = fontCharCode + 1;\n }\n\n } while (usedFontCharCodes[fontCharCode] !== undefined);\n }\n\n newMap[fontCharCode] = glyphId;\n toFontChar[originalCharCode] = fontCharCode;\n usedFontCharCodes[fontCharCode] = true;\n }\n return {\n toFontChar,\n charCodeToGlyphId: newMap,\n nextAvailableFontCharCode,\n };\n }\n\n function getRanges(glyphs, numGlyphs) {\n // Array.sort() sorts by characters, not numerically, so convert to an\n // array of characters.\n var codes = [];\n for (var charCode in glyphs) {\n // Remove an invalid glyph ID mappings to make OTS happy.\n if (glyphs[charCode] >= numGlyphs) {\n continue;\n }\n codes.push({ fontCharCode: charCode | 0, glyphId: glyphs[charCode], });\n }\n // Some fonts have zero glyphs and are used only for text selection, but\n // there needs to be at least one to build a valid cmap table.\n if (codes.length === 0) {\n codes.push({ fontCharCode: 0, glyphId: 0, });\n }\n codes.sort(function fontGetRangesSort(a, b) {\n return a.fontCharCode - b.fontCharCode;\n });\n\n // Split the sorted codes into ranges.\n var ranges = [];\n var length = codes.length;\n for (var n = 0; n < length; ) { // eslint-disable-line space-in-parens\n var start = codes[n].fontCharCode;\n var codeIndices = [codes[n].glyphId];\n ++n;\n var end = start;\n while (n < length && end + 1 === codes[n].fontCharCode) {\n codeIndices.push(codes[n].glyphId);\n ++end;\n ++n;\n if (end === 0xFFFF) {\n break;\n }\n }\n ranges.push([start, end, codeIndices]);\n }\n\n return ranges;\n }\n\n function createCmapTable(glyphs, numGlyphs) {\n var ranges = getRanges(glyphs, numGlyphs);\n var numTables = ranges[ranges.length - 1][1] > 0xFFFF ? 2 : 1;\n var cmap = '\\x00\\x00' + // version\n string16(numTables) + // numTables\n '\\x00\\x03' + // platformID\n '\\x00\\x01' + // encodingID\n string32(4 + numTables * 8); // start of the table record\n\n var i, ii, j, jj;\n for (i = ranges.length - 1; i >= 0; --i) {\n if (ranges[i][0] <= 0xFFFF) {\n break;\n }\n }\n var bmpLength = i + 1;\n\n if (ranges[i][0] < 0xFFFF && ranges[i][1] === 0xFFFF) {\n ranges[i][1] = 0xFFFE;\n }\n var trailingRangesCount = ranges[i][1] < 0xFFFF ? 1 : 0;\n var segCount = bmpLength + trailingRangesCount;\n var searchParams = OpenTypeFileBuilder.getSearchParams(segCount, 2);\n\n // Fill up the 4 parallel arrays describing the segments.\n var startCount = '';\n var endCount = '';\n var idDeltas = '';\n var idRangeOffsets = '';\n var glyphsIds = '';\n var bias = 0;\n\n var range, start, end, codes;\n for (i = 0, ii = bmpLength; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n end = range[1];\n startCount += string16(start);\n endCount += string16(end);\n codes = range[2];\n var contiguous = true;\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n contiguous = false;\n break;\n }\n }\n if (!contiguous) {\n var offset = (segCount - i) * 2 + bias * 2;\n bias += (end - start + 1);\n\n idDeltas += string16(0);\n idRangeOffsets += string16(offset);\n\n for (j = 0, jj = codes.length; j < jj; ++j) {\n glyphsIds += string16(codes[j]);\n }\n } else {\n var startCode = codes[0];\n\n idDeltas += string16((startCode - start) & 0xFFFF);\n idRangeOffsets += string16(0);\n }\n }\n\n if (trailingRangesCount > 0) {\n endCount += '\\xFF\\xFF';\n startCount += '\\xFF\\xFF';\n idDeltas += '\\x00\\x01';\n idRangeOffsets += '\\x00\\x00';\n }\n\n var format314 = '\\x00\\x00' + // language\n string16(2 * segCount) +\n string16(searchParams.range) +\n string16(searchParams.entry) +\n string16(searchParams.rangeShift) +\n endCount + '\\x00\\x00' + startCount +\n idDeltas + idRangeOffsets + glyphsIds;\n\n var format31012 = '';\n var header31012 = '';\n if (numTables > 1) {\n cmap += '\\x00\\x03' + // platformID\n '\\x00\\x0A' + // encodingID\n string32(4 + numTables * 8 +\n 4 + format314.length); // start of the table record\n format31012 = '';\n for (i = 0, ii = ranges.length; i < ii; i++) {\n range = ranges[i];\n start = range[0];\n codes = range[2];\n var code = codes[0];\n for (j = 1, jj = codes.length; j < jj; ++j) {\n if (codes[j] !== codes[j - 1] + 1) {\n end = range[0] + j - 1;\n format31012 += string32(start) + // startCharCode\n string32(end) + // endCharCode\n string32(code); // startGlyphID\n start = end + 1;\n code = codes[j];\n }\n }\n format31012 += string32(start) + // startCharCode\n string32(range[1]) + // endCharCode\n string32(code); // startGlyphID\n }\n header31012 = '\\x00\\x0C' + // format\n '\\x00\\x00' + // reserved\n string32(format31012.length + 16) + // length\n '\\x00\\x00\\x00\\x00' + // language\n string32(format31012.length / 12); // nGroups\n }\n\n return cmap + '\\x00\\x04' + // format\n string16(format314.length + 4) + // length\n format314 + header31012 + format31012;\n }\n\n function validateOS2Table(os2) {\n var stream = new Stream(os2.data);\n var version = stream.getUint16();\n // TODO verify all OS/2 tables fields, but currently we validate only those\n // that give us issues\n stream.getBytes(60); // skipping type, misc sizes, panose, unicode ranges\n var selection = stream.getUint16();\n if (version < 4 && (selection & 0x0300)) {\n return false;\n }\n var firstChar = stream.getUint16();\n var lastChar = stream.getUint16();\n if (firstChar > lastChar) {\n return false;\n }\n stream.getBytes(6); // skipping sTypoAscender/Descender/LineGap\n var usWinAscent = stream.getUint16();\n if (usWinAscent === 0) { // makes font unreadable by windows\n return false;\n }\n\n // OS/2 appears to be valid, resetting some fields\n os2.data[8] = os2.data[9] = 0; // IE rejects fonts if fsType != 0\n return true;\n }\n\n function createOS2Table(properties, charstrings, override) {\n override = override || {\n unitsPerEm: 0,\n yMax: 0,\n yMin: 0,\n ascent: 0,\n descent: 0,\n };\n\n var ulUnicodeRange1 = 0;\n var ulUnicodeRange2 = 0;\n var ulUnicodeRange3 = 0;\n var ulUnicodeRange4 = 0;\n\n var firstCharIndex = null;\n var lastCharIndex = 0;\n\n if (charstrings) {\n for (var code in charstrings) {\n code |= 0;\n if (firstCharIndex > code || !firstCharIndex) {\n firstCharIndex = code;\n }\n if (lastCharIndex < code) {\n lastCharIndex = code;\n }\n\n var position = getUnicodeRangeFor(code);\n if (position < 32) {\n ulUnicodeRange1 |= 1 << position;\n } else if (position < 64) {\n ulUnicodeRange2 |= 1 << position - 32;\n } else if (position < 96) {\n ulUnicodeRange3 |= 1 << position - 64;\n } else if (position < 123) {\n ulUnicodeRange4 |= 1 << position - 96;\n } else {\n throw new FormatError(\n 'Unicode ranges Bits > 123 are reserved for internal usage');\n }\n }\n } else {\n // TODO\n firstCharIndex = 0;\n lastCharIndex = 255;\n }\n\n var bbox = properties.bbox || [0, 0, 0, 0];\n var unitsPerEm = (override.unitsPerEm ||\n 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0]);\n\n // if the font units differ to the PDF glyph space units\n // then scale up the values\n var scale = (properties.ascentScaled ? 1.0 :\n unitsPerEm / PDF_GLYPH_SPACE_UNITS);\n\n var typoAscent = (override.ascent ||\n Math.round(scale * (properties.ascent || bbox[3])));\n var typoDescent = (override.descent ||\n Math.round(scale * (properties.descent || bbox[1])));\n if (typoDescent > 0 && properties.descent > 0 && bbox[1] < 0) {\n typoDescent = -typoDescent; // fixing incorrect descent\n }\n var winAscent = override.yMax || typoAscent;\n var winDescent = -override.yMin || -typoDescent;\n\n return '\\x00\\x03' + // version\n '\\x02\\x24' + // xAvgCharWidth\n '\\x01\\xF4' + // usWeightClass\n '\\x00\\x05' + // usWidthClass\n '\\x00\\x00' + // fstype (0 to let the font loads via font-face on IE)\n '\\x02\\x8A' + // ySubscriptXSize\n '\\x02\\xBB' + // ySubscriptYSize\n '\\x00\\x00' + // ySubscriptXOffset\n '\\x00\\x8C' + // ySubscriptYOffset\n '\\x02\\x8A' + // ySuperScriptXSize\n '\\x02\\xBB' + // ySuperScriptYSize\n '\\x00\\x00' + // ySuperScriptXOffset\n '\\x01\\xDF' + // ySuperScriptYOffset\n '\\x00\\x31' + // yStrikeOutSize\n '\\x01\\x02' + // yStrikeOutPosition\n '\\x00\\x00' + // sFamilyClass\n '\\x00\\x00\\x06' +\n String.fromCharCode(properties.fixedPitch ? 0x09 : 0x00) +\n '\\x00\\x00\\x00\\x00\\x00\\x00' + // Panose\n string32(ulUnicodeRange1) + // ulUnicodeRange1 (Bits 0-31)\n string32(ulUnicodeRange2) + // ulUnicodeRange2 (Bits 32-63)\n string32(ulUnicodeRange3) + // ulUnicodeRange3 (Bits 64-95)\n string32(ulUnicodeRange4) + // ulUnicodeRange4 (Bits 96-127)\n '\\x2A\\x32\\x31\\x2A' + // achVendID\n string16(properties.italicAngle ? 1 : 0) + // fsSelection\n string16(firstCharIndex ||\n properties.firstChar) + // usFirstCharIndex\n string16(lastCharIndex || properties.lastChar) + // usLastCharIndex\n string16(typoAscent) + // sTypoAscender\n string16(typoDescent) + // sTypoDescender\n '\\x00\\x64' + // sTypoLineGap (7%-10% of the unitsPerEM value)\n string16(winAscent) + // usWinAscent\n string16(winDescent) + // usWinDescent\n '\\x00\\x00\\x00\\x00' + // ulCodePageRange1 (Bits 0-31)\n '\\x00\\x00\\x00\\x00' + // ulCodePageRange2 (Bits 32-63)\n string16(properties.xHeight) + // sxHeight\n string16(properties.capHeight) + // sCapHeight\n string16(0) + // usDefaultChar\n string16(firstCharIndex || properties.firstChar) + // usBreakChar\n '\\x00\\x03'; // usMaxContext\n }\n\n function createPostTable(properties) {\n var angle = Math.floor(properties.italicAngle * (Math.pow(2, 16)));\n return ('\\x00\\x03\\x00\\x00' + // Version number\n string32(angle) + // italicAngle\n '\\x00\\x00' + // underlinePosition\n '\\x00\\x00' + // underlineThickness\n string32(properties.fixedPitch) + // isFixedPitch\n '\\x00\\x00\\x00\\x00' + // minMemType42\n '\\x00\\x00\\x00\\x00' + // maxMemType42\n '\\x00\\x00\\x00\\x00' + // minMemType1\n '\\x00\\x00\\x00\\x00'); // maxMemType1\n }\n\n function createNameTable(name, proto) {\n if (!proto) {\n proto = [[], []]; // no strings and unicode strings\n }\n\n var strings = [\n proto[0][0] || 'Original licence', // 0.Copyright\n proto[0][1] || name, // 1.Font family\n proto[0][2] || 'Unknown', // 2.Font subfamily (font weight)\n proto[0][3] || 'uniqueID', // 3.Unique ID\n proto[0][4] || name, // 4.Full font name\n proto[0][5] || 'Version 0.11', // 5.Version\n proto[0][6] || '', // 6.Postscript name\n proto[0][7] || 'Unknown', // 7.Trademark\n proto[0][8] || 'Unknown', // 8.Manufacturer\n proto[0][9] || 'Unknown' // 9.Designer\n ];\n\n // Mac want 1-byte per character strings while Windows want\n // 2-bytes per character, so duplicate the names table\n var stringsUnicode = [];\n var i, ii, j, jj, str;\n for (i = 0, ii = strings.length; i < ii; i++) {\n str = proto[1][i] || strings[i];\n\n var strBufUnicode = [];\n for (j = 0, jj = str.length; j < jj; j++) {\n strBufUnicode.push(string16(str.charCodeAt(j)));\n }\n stringsUnicode.push(strBufUnicode.join(''));\n }\n\n var names = [strings, stringsUnicode];\n var platforms = ['\\x00\\x01', '\\x00\\x03'];\n var encodings = ['\\x00\\x00', '\\x00\\x01'];\n var languages = ['\\x00\\x00', '\\x04\\x09'];\n\n var namesRecordCount = strings.length * platforms.length;\n var nameTable =\n '\\x00\\x00' + // format\n string16(namesRecordCount) + // Number of names Record\n string16(namesRecordCount * 12 + 6); // Storage\n\n // Build the name records field\n var strOffset = 0;\n for (i = 0, ii = platforms.length; i < ii; i++) {\n var strs = names[i];\n for (j = 0, jj = strs.length; j < jj; j++) {\n str = strs[j];\n var nameRecord =\n platforms[i] + // platform ID\n encodings[i] + // encoding ID\n languages[i] + // language ID\n string16(j) + // name ID\n string16(str.length) +\n string16(strOffset);\n nameTable += nameRecord;\n strOffset += str.length;\n }\n }\n\n nameTable += strings.join('') + stringsUnicode.join('');\n return nameTable;\n }\n\n Font.prototype = {\n name: null,\n font: null,\n mimetype: null,\n encoding: null,\n get renderer() {\n var renderer = FontRendererFactory.create(this, SEAC_ANALYSIS_ENABLED);\n return shadow(this, 'renderer', renderer);\n },\n\n exportData: function Font_exportData() {\n // TODO remove enumerating of the properties, e.g. hardcode exact names.\n var data = {};\n for (var i in this) {\n if (this.hasOwnProperty(i)) {\n data[i] = this[i];\n }\n }\n return data;\n },\n\n fallbackToSystemFont: function Font_fallbackToSystemFont() {\n this.missingFile = true;\n var charCode, unicode;\n // The file data is not specified. Trying to fix the font name\n // to be used with the canvas.font.\n var name = this.name;\n var type = this.type;\n var subtype = this.subtype;\n var fontName = name.replace(/[,_]/g, '-');\n var stdFontMap = getStdFontMap(), nonStdFontMap = getNonStdFontMap();\n var isStandardFont = !!stdFontMap[fontName] ||\n !!(nonStdFontMap[fontName] && stdFontMap[nonStdFontMap[fontName]]);\n fontName = stdFontMap[fontName] || nonStdFontMap[fontName] || fontName;\n\n this.bold = (fontName.search(/bold/gi) !== -1);\n this.italic = ((fontName.search(/oblique/gi) !== -1) ||\n (fontName.search(/italic/gi) !== -1));\n\n // Use 'name' instead of 'fontName' here because the original\n // name ArialBlack for example will be replaced by Helvetica.\n this.black = (name.search(/Black/g) !== -1);\n\n // if at least one width is present, remeasure all chars when exists\n this.remeasure = Object.keys(this.widths).length > 0;\n if (isStandardFont && type === 'CIDFontType2' &&\n this.cidEncoding.indexOf('Identity-') === 0) {\n var GlyphMapForStandardFonts = getGlyphMapForStandardFonts();\n // Standard fonts might be embedded as CID font without glyph mapping.\n // Building one based on GlyphMapForStandardFonts.\n var map = [];\n for (charCode in GlyphMapForStandardFonts) {\n map[+charCode] = GlyphMapForStandardFonts[charCode];\n }\n if (/Arial-?Black/i.test(name)) {\n var SupplementalGlyphMapForArialBlack =\n getSupplementalGlyphMapForArialBlack();\n for (charCode in SupplementalGlyphMapForArialBlack) {\n map[+charCode] = SupplementalGlyphMapForArialBlack[charCode];\n }\n }\n var isIdentityUnicode = this.toUnicode instanceof IdentityToUnicodeMap;\n if (!isIdentityUnicode) {\n this.toUnicode.forEach(function(charCode, unicodeCharCode) {\n map[+charCode] = unicodeCharCode;\n });\n }\n this.toFontChar = map;\n this.toUnicode = new ToUnicodeMap(map);\n } else if (/Symbol/i.test(fontName)) {\n this.toFontChar = buildToFontChar(SymbolSetEncoding, getGlyphsUnicode(),\n this.differences);\n } else if (/Dingbats/i.test(fontName)) {\n if (/Wingdings/i.test(name)) {\n warn('Non-embedded Wingdings font, falling back to ZapfDingbats.');\n }\n this.toFontChar = buildToFontChar(ZapfDingbatsEncoding,\n getDingbatsGlyphsUnicode(),\n this.differences);\n } else if (isStandardFont) {\n this.toFontChar = buildToFontChar(this.defaultEncoding,\n getGlyphsUnicode(),\n this.differences);\n } else {\n var glyphsUnicodeMap = getGlyphsUnicode();\n this.toUnicode.forEach((charCode, unicodeCharCode) => {\n if (!this.composite) {\n var glyphName = (this.differences[charCode] ||\n this.defaultEncoding[charCode]);\n unicode = getUnicodeForGlyph(glyphName, glyphsUnicodeMap);\n if (unicode !== -1) {\n unicodeCharCode = unicode;\n }\n }\n this.toFontChar[charCode] = unicodeCharCode;\n });\n }\n this.loadedName = fontName.split('-')[0];\n this.loading = false;\n this.fontType = getFontType(type, subtype);\n },\n\n checkAndRepair: function Font_checkAndRepair(name, font, properties) {\n function readTableEntry(file) {\n var tag = bytesToString(file.getBytes(4));\n\n var checksum = file.getInt32() >>> 0;\n var offset = file.getInt32() >>> 0;\n var length = file.getInt32() >>> 0;\n\n // Read the table associated data\n var previousPosition = file.pos;\n file.pos = file.start ? file.start : 0;\n file.skip(offset);\n var data = file.getBytes(length);\n file.pos = previousPosition;\n\n if (tag === 'head') {\n // clearing checksum adjustment\n data[8] = data[9] = data[10] = data[11] = 0;\n data[17] |= 0x20; // Set font optimized for cleartype flag.\n }\n\n return {\n tag,\n checksum,\n length,\n offset,\n data,\n };\n }\n\n function readOpenTypeHeader(ttf) {\n return {\n version: bytesToString(ttf.getBytes(4)),\n numTables: ttf.getUint16(),\n searchRange: ttf.getUint16(),\n entrySelector: ttf.getUint16(),\n rangeShift: ttf.getUint16(),\n };\n }\n\n /**\n * Read the appropriate subtable from the cmap according to 9.6.6.4 from\n * PDF spec\n */\n function readCmapTable(cmap, font, isSymbolicFont, hasEncoding) {\n if (!cmap) {\n warn('No cmap table available.');\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n var segment;\n var start = (font.start ? font.start : 0) + cmap.offset;\n font.pos = start;\n\n font.getUint16(); // version\n var numTables = font.getUint16();\n\n var potentialTable;\n var canBreak = false;\n // There's an order of preference in terms of which cmap subtable to\n // use:\n // - non-symbolic fonts the preference is a 3,1 table then a 1,0 table\n // - symbolic fonts the preference is a 3,0 table then a 1,0 table\n // The following takes advantage of the fact that the tables are sorted\n // to work.\n for (var i = 0; i < numTables; i++) {\n var platformId = font.getUint16();\n var encodingId = font.getUint16();\n var offset = font.getInt32() >>> 0;\n var useTable = false;\n\n // Sometimes there are multiple of the same type of table. Default\n // to choosing the first table and skip the rest.\n if (potentialTable && potentialTable.platformId === platformId &&\n potentialTable.encodingId === encodingId) {\n continue;\n }\n\n if (platformId === 0 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 1 && encodingId === 0) {\n useTable = true;\n // Continue the loop since there still may be a higher priority\n // table.\n } else if (platformId === 3 && encodingId === 1 &&\n (hasEncoding || !potentialTable)) {\n useTable = true;\n if (!isSymbolicFont) {\n canBreak = true;\n }\n } else if (isSymbolicFont && platformId === 3 && encodingId === 0) {\n useTable = true;\n canBreak = true;\n }\n\n if (useTable) {\n potentialTable = {\n platformId,\n encodingId,\n offset,\n };\n }\n if (canBreak) {\n break;\n }\n }\n\n if (potentialTable) {\n font.pos = start + potentialTable.offset;\n }\n if (!potentialTable || font.peekByte() === -1) {\n warn('Could not find a preferred cmap table.');\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n var format = font.getUint16();\n font.getUint16(); // length\n font.getUint16(); // language\n\n var hasShortCmap = false;\n var mappings = [];\n var j, glyphId;\n\n // TODO(mack): refactor this cmap subtable reading logic out\n if (format === 0) {\n for (j = 0; j < 256; j++) {\n var index = font.getByte();\n if (!index) {\n continue;\n }\n mappings.push({\n charCode: j,\n glyphId: index,\n });\n }\n hasShortCmap = true;\n } else if (format === 4) {\n // re-creating the table in format 4 since the encoding\n // might be changed\n var segCount = (font.getUint16() >> 1);\n font.getBytes(6); // skipping range fields\n var segIndex, segments = [];\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments.push({ end: font.getUint16(), });\n }\n font.getUint16();\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].start = font.getUint16();\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segments[segIndex].delta = font.getUint16();\n }\n\n var offsetsCount = 0;\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n var rangeOffset = font.getUint16();\n if (!rangeOffset) {\n segment.offsetIndex = -1;\n continue;\n }\n\n var offsetIndex = (rangeOffset >> 1) - (segCount - segIndex);\n segment.offsetIndex = offsetIndex;\n offsetsCount = Math.max(offsetsCount, offsetIndex +\n segment.end - segment.start + 1);\n }\n\n var offsets = [];\n for (j = 0; j < offsetsCount; j++) {\n offsets.push(font.getUint16());\n }\n\n for (segIndex = 0; segIndex < segCount; segIndex++) {\n segment = segments[segIndex];\n start = segment.start;\n var end = segment.end;\n var delta = segment.delta;\n offsetIndex = segment.offsetIndex;\n\n for (j = start; j <= end; j++) {\n if (j === 0xFFFF) {\n continue;\n }\n\n glyphId = (offsetIndex < 0 ?\n j : offsets[offsetIndex + j - start]);\n glyphId = (glyphId + delta) & 0xFFFF;\n mappings.push({\n charCode: j,\n glyphId,\n });\n }\n }\n } else if (format === 6) {\n // Format 6 is a 2-bytes dense mapping, which means the font data\n // lives glue together even if they are pretty far in the unicode\n // table. (This looks weird, so I can have missed something), this\n // works on Linux but seems to fails on Mac so let's rewrite the\n // cmap table to a 3-1-4 style\n var firstCode = font.getUint16();\n var entryCount = font.getUint16();\n\n for (j = 0; j < entryCount; j++) {\n glyphId = font.getUint16();\n var charCode = firstCode + j;\n\n mappings.push({\n charCode,\n glyphId,\n });\n }\n } else {\n warn('cmap table has unsupported format: ' + format);\n return {\n platformId: -1,\n encodingId: -1,\n mappings: [],\n hasShortCmap: false,\n };\n }\n\n // removing duplicate entries\n mappings.sort(function (a, b) {\n return a.charCode - b.charCode;\n });\n for (i = 1; i < mappings.length; i++) {\n if (mappings[i - 1].charCode === mappings[i].charCode) {\n mappings.splice(i, 1);\n i--;\n }\n }\n\n return {\n platformId: potentialTable.platformId,\n encodingId: potentialTable.encodingId,\n mappings,\n hasShortCmap,\n };\n }\n\n function sanitizeMetrics(font, header, metrics, numGlyphs) {\n if (!header) {\n if (metrics) {\n metrics.data = null;\n }\n return;\n }\n\n font.pos = (font.start ? font.start : 0) + header.offset;\n font.pos += header.length - 2;\n var numOfMetrics = font.getUint16();\n\n if (numOfMetrics > numGlyphs) {\n info('The numOfMetrics (' + numOfMetrics + ') should not be ' +\n 'greater than the numGlyphs (' + numGlyphs + ')');\n // Reduce numOfMetrics if it is greater than numGlyphs\n numOfMetrics = numGlyphs;\n header.data[34] = (numOfMetrics & 0xff00) >> 8;\n header.data[35] = numOfMetrics & 0x00ff;\n }\n\n var numOfSidebearings = numGlyphs - numOfMetrics;\n var numMissing = numOfSidebearings -\n ((metrics.length - numOfMetrics * 4) >> 1);\n\n if (numMissing > 0) {\n // For each missing glyph, we set both the width and lsb to 0 (zero).\n // Since we need to add two properties for each glyph, this explains\n // the use of |numMissing * 2| when initializing the typed array.\n var entries = new Uint8Array(metrics.length + numMissing * 2);\n entries.set(metrics.data);\n metrics.data = entries;\n }\n }\n\n function sanitizeGlyph(source, sourceStart, sourceEnd, dest, destStart,\n hintsValid) {\n if (sourceEnd - sourceStart <= 12) {\n // glyph with data less than 12 is invalid one\n return 0;\n }\n var glyf = source.subarray(sourceStart, sourceEnd);\n var contoursCount = (glyf[0] << 8) | glyf[1];\n if (contoursCount & 0x8000) {\n // complex glyph, writing as is\n dest.set(glyf, destStart);\n return glyf.length;\n }\n\n var i, j = 10, flagsCount = 0;\n for (i = 0; i < contoursCount; i++) {\n var endPoint = (glyf[j] << 8) | glyf[j + 1];\n flagsCount = endPoint + 1;\n j += 2;\n }\n // skipping instructions\n var instructionsStart = j;\n var instructionsLength = (glyf[j] << 8) | glyf[j + 1];\n j += 2 + instructionsLength;\n var instructionsEnd = j;\n // validating flags\n var coordinatesLength = 0;\n for (i = 0; i < flagsCount; i++) {\n var flag = glyf[j++];\n if (flag & 0xC0) {\n // reserved flags must be zero, cleaning up\n glyf[j - 1] = flag & 0x3F;\n }\n var xyLength = ((flag & 2) ? 1 : (flag & 16) ? 0 : 2) +\n ((flag & 4) ? 1 : (flag & 32) ? 0 : 2);\n coordinatesLength += xyLength;\n if (flag & 8) {\n var repeat = glyf[j++];\n i += repeat;\n coordinatesLength += repeat * xyLength;\n }\n }\n // glyph without coordinates will be rejected\n if (coordinatesLength === 0) {\n return 0;\n }\n var glyphDataLength = j + coordinatesLength;\n if (glyphDataLength > glyf.length) {\n // not enough data for coordinates\n return 0;\n }\n if (!hintsValid && instructionsLength > 0) {\n dest.set(glyf.subarray(0, instructionsStart), destStart);\n dest.set([0, 0], destStart + instructionsStart);\n dest.set(glyf.subarray(instructionsEnd, glyphDataLength),\n destStart + instructionsStart + 2);\n glyphDataLength -= instructionsLength;\n if (glyf.length - glyphDataLength > 3) {\n glyphDataLength = (glyphDataLength + 3) & ~3;\n }\n return glyphDataLength;\n }\n if (glyf.length - glyphDataLength > 3) {\n // truncating and aligning to 4 bytes the long glyph data\n glyphDataLength = (glyphDataLength + 3) & ~3;\n dest.set(glyf.subarray(0, glyphDataLength), destStart);\n return glyphDataLength;\n }\n // glyph data is fine\n dest.set(glyf, destStart);\n return glyf.length;\n }\n\n function sanitizeHead(head, numGlyphs, locaLength) {\n var data = head.data;\n\n // Validate version:\n // Should always be 0x00010000\n var version = int32(data[0], data[1], data[2], data[3]);\n if (version >> 16 !== 1) {\n info('Attempting to fix invalid version in head table: ' + version);\n data[0] = 0;\n data[1] = 1;\n data[2] = 0;\n data[3] = 0;\n }\n\n var indexToLocFormat = int16(data[50], data[51]);\n if (indexToLocFormat < 0 || indexToLocFormat > 1) {\n info('Attempting to fix invalid indexToLocFormat in head table: ' +\n indexToLocFormat);\n\n // The value of indexToLocFormat should be 0 if the loca table\n // consists of short offsets, and should be 1 if the loca table\n // consists of long offsets.\n //\n // The number of entries in the loca table should be numGlyphs + 1.\n //\n // Using this information, we can work backwards to deduce if the\n // size of each offset in the loca table, and thus figure out the\n // appropriate value for indexToLocFormat.\n\n var numGlyphsPlusOne = numGlyphs + 1;\n if (locaLength === numGlyphsPlusOne << 1) {\n // 0x0000 indicates the loca table consists of short offsets\n data[50] = 0;\n data[51] = 0;\n } else if (locaLength === numGlyphsPlusOne << 2) {\n // 0x0001 indicates the loca table consists of long offsets\n data[50] = 0;\n data[51] = 1;\n } else {\n throw new FormatError('Could not fix indexToLocFormat: ' +\n indexToLocFormat);\n }\n }\n }\n\n function sanitizeGlyphLocations(loca, glyf, numGlyphs,\n isGlyphLocationsLong, hintsValid,\n dupFirstEntry) {\n var itemSize, itemDecode, itemEncode;\n if (isGlyphLocationsLong) {\n itemSize = 4;\n itemDecode = function fontItemDecodeLong(data, offset) {\n return (data[offset] << 24) | (data[offset + 1] << 16) |\n (data[offset + 2] << 8) | data[offset + 3];\n };\n itemEncode = function fontItemEncodeLong(data, offset, value) {\n data[offset] = (value >>> 24) & 0xFF;\n data[offset + 1] = (value >> 16) & 0xFF;\n data[offset + 2] = (value >> 8) & 0xFF;\n data[offset + 3] = value & 0xFF;\n };\n } else {\n itemSize = 2;\n itemDecode = function fontItemDecode(data, offset) {\n return (data[offset] << 9) | (data[offset + 1] << 1);\n };\n itemEncode = function fontItemEncode(data, offset, value) {\n data[offset] = (value >> 9) & 0xFF;\n data[offset + 1] = (value >> 1) & 0xFF;\n };\n }\n var locaData = loca.data;\n var locaDataSize = itemSize * (1 + numGlyphs);\n // is loca.data too short or long?\n if (locaData.length !== locaDataSize) {\n locaData = new Uint8Array(locaDataSize);\n locaData.set(loca.data.subarray(0, locaDataSize));\n loca.data = locaData;\n }\n // removing the invalid glyphs\n var oldGlyfData = glyf.data;\n var oldGlyfDataLength = oldGlyfData.length;\n var newGlyfData = new Uint8Array(oldGlyfDataLength);\n var startOffset = itemDecode(locaData, 0);\n var writeOffset = 0;\n var missingGlyphData = Object.create(null);\n itemEncode(locaData, 0, writeOffset);\n var i, j;\n // When called with dupFirstEntry the number of glyphs has already been\n // increased but there isn't data yet for the duplicated glyph.\n var locaCount = dupFirstEntry ? numGlyphs - 1 : numGlyphs;\n for (i = 0, j = itemSize; i < locaCount; i++, j += itemSize) {\n var endOffset = itemDecode(locaData, j);\n if (endOffset > oldGlyfDataLength &&\n ((oldGlyfDataLength + 3) & ~3) === endOffset) {\n // Aspose breaks fonts by aligning the glyphs to the qword, but not\n // the glyf table size, which makes last glyph out of range.\n endOffset = oldGlyfDataLength;\n }\n if (endOffset > oldGlyfDataLength) {\n // glyph end offset points outside glyf data, rejecting the glyph\n startOffset = endOffset;\n }\n\n var newLength = sanitizeGlyph(oldGlyfData, startOffset, endOffset,\n newGlyfData, writeOffset, hintsValid);\n if (newLength === 0) {\n missingGlyphData[i] = true;\n }\n writeOffset += newLength;\n itemEncode(locaData, j, writeOffset);\n startOffset = endOffset;\n }\n\n if (writeOffset === 0) {\n // glyf table cannot be empty -- redoing the glyf and loca tables\n // to have single glyph with one point\n var simpleGlyph = new Uint8Array(\n [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0]);\n for (i = 0, j = itemSize; i < numGlyphs; i++, j += itemSize) {\n itemEncode(locaData, j, simpleGlyph.length);\n }\n glyf.data = simpleGlyph;\n return missingGlyphData;\n }\n\n if (dupFirstEntry) {\n var firstEntryLength = itemDecode(locaData, itemSize);\n if (newGlyfData.length > firstEntryLength + writeOffset) {\n glyf.data = newGlyfData.subarray(0, firstEntryLength + writeOffset);\n } else {\n glyf.data = new Uint8Array(firstEntryLength + writeOffset);\n glyf.data.set(newGlyfData.subarray(0, writeOffset));\n }\n glyf.data.set(newGlyfData.subarray(0, firstEntryLength), writeOffset);\n itemEncode(loca.data, locaData.length - itemSize,\n writeOffset + firstEntryLength);\n } else {\n glyf.data = newGlyfData.subarray(0, writeOffset);\n }\n return missingGlyphData;\n }\n\n function readPostScriptTable(post, properties, maxpNumGlyphs) {\n var start = (font.start ? font.start : 0) + post.offset;\n font.pos = start;\n\n var length = post.length, end = start + length;\n var version = font.getInt32();\n // skip rest to the tables\n font.getBytes(28);\n\n var glyphNames;\n var valid = true;\n var i;\n\n switch (version) {\n case 0x00010000:\n glyphNames = MacStandardGlyphOrdering;\n break;\n case 0x00020000:\n var numGlyphs = font.getUint16();\n if (numGlyphs !== maxpNumGlyphs) {\n valid = false;\n break;\n }\n var glyphNameIndexes = [];\n for (i = 0; i < numGlyphs; ++i) {\n var index = font.getUint16();\n if (index >= 32768) {\n valid = false;\n break;\n }\n glyphNameIndexes.push(index);\n }\n if (!valid) {\n break;\n }\n var customNames = [];\n var strBuf = [];\n while (font.pos < end) {\n var stringLength = font.getByte();\n strBuf.length = stringLength;\n for (i = 0; i < stringLength; ++i) {\n strBuf[i] = String.fromCharCode(font.getByte());\n }\n customNames.push(strBuf.join(''));\n }\n glyphNames = [];\n for (i = 0; i < numGlyphs; ++i) {\n var j = glyphNameIndexes[i];\n if (j < 258) {\n glyphNames.push(MacStandardGlyphOrdering[j]);\n continue;\n }\n glyphNames.push(customNames[j - 258]);\n }\n break;\n case 0x00030000:\n break;\n default:\n warn('Unknown/unsupported post table version ' + version);\n valid = false;\n if (properties.defaultEncoding) {\n glyphNames = properties.defaultEncoding;\n }\n break;\n }\n properties.glyphNames = glyphNames;\n return valid;\n }\n\n function readNameTable(nameTable) {\n var start = (font.start ? font.start : 0) + nameTable.offset;\n font.pos = start;\n\n var names = [[], []];\n var length = nameTable.length, end = start + length;\n var format = font.getUint16();\n var FORMAT_0_HEADER_LENGTH = 6;\n if (format !== 0 || length < FORMAT_0_HEADER_LENGTH) {\n // unsupported name table format or table \"too\" small\n return names;\n }\n var numRecords = font.getUint16();\n var stringsStart = font.getUint16();\n var records = [];\n var NAME_RECORD_LENGTH = 12;\n var i, ii;\n\n for (i = 0; i < numRecords &&\n font.pos + NAME_RECORD_LENGTH <= end; i++) {\n var r = {\n platform: font.getUint16(),\n encoding: font.getUint16(),\n language: font.getUint16(),\n name: font.getUint16(),\n length: font.getUint16(),\n offset: font.getUint16(),\n };\n // using only Macintosh and Windows platform/encoding names\n if ((r.platform === 1 && r.encoding === 0 && r.language === 0) ||\n (r.platform === 3 && r.encoding === 1 && r.language === 0x409)) {\n records.push(r);\n }\n }\n for (i = 0, ii = records.length; i < ii; i++) {\n var record = records[i];\n if (record.length <= 0) {\n continue; // Nothing to process, ignoring.\n }\n var pos = start + stringsStart + record.offset;\n if (pos + record.length > end) {\n continue; // outside of name table, ignoring\n }\n font.pos = pos;\n var nameIndex = record.name;\n if (record.encoding) {\n // unicode\n var str = '';\n for (var j = 0, jj = record.length; j < jj; j += 2) {\n str += String.fromCharCode(font.getUint16());\n }\n names[1][nameIndex] = str;\n } else {\n names[0][nameIndex] = bytesToString(font.getBytes(record.length));\n }\n }\n return names;\n }\n\n var TTOpsStackDeltas = [\n 0, 0, 0, 0, 0, 0, 0, 0, -2, -2, -2, -2, 0, 0, -2, -5,\n -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, -1, -1,\n 1, -1, -999, 0, 1, 0, -1, -2, 0, -1, -2, -1, -1, 0, -1, -1,\n 0, 0, -999, -999, -1, -1, -1, -1, -2, -999, -2, -2, -999, 0, -2, -2,\n 0, 0, -2, 0, -2, 0, 0, 0, -2, -1, -1, 1, 1, 0, 0, -1,\n -1, -1, -1, -1, -1, -1, 0, 0, -1, 0, -1, -1, 0, -999, -1, -1,\n -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n -2, -999, -999, -999, -999, -999, -1, -1, -2, -2, 0, 0, 0, 0, -1, -1,\n -999, -2, -2, 0, 0, -1, -2, -2, 0, 0, 0, -1, -1, -1, -2];\n // 0xC0-DF == -1 and 0xE0-FF == -2\n\n function sanitizeTTProgram(table, ttContext) {\n var data = table.data;\n var i = 0, j, n, b, funcId, pc, lastEndf = 0, lastDeff = 0;\n var stack = [];\n var callstack = [];\n var functionsCalled = [];\n var tooComplexToFollowFunctions =\n ttContext.tooComplexToFollowFunctions;\n var inFDEF = false, ifLevel = 0, inELSE = 0;\n for (var ii = data.length; i < ii;) {\n var op = data[i++];\n // The TrueType instruction set docs can be found at\n // https://developer.apple.com/fonts/TTRefMan/RM05/Chap5.html\n if (op === 0x40) { // NPUSHB - pushes n bytes\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if (op === 0x41) { // NPUSHW - pushes n words\n n = data[i++];\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if ((op & 0xF8) === 0xB0) { // PUSHB - pushes bytes\n n = op - 0xB0 + 1;\n if (inFDEF || inELSE) {\n i += n;\n } else {\n for (j = 0; j < n; j++) {\n stack.push(data[i++]);\n }\n }\n } else if ((op & 0xF8) === 0xB8) { // PUSHW - pushes words\n n = op - 0xB8 + 1;\n if (inFDEF || inELSE) {\n i += n * 2;\n } else {\n for (j = 0; j < n; j++) {\n b = data[i++];\n stack.push((b << 8) | data[i++]);\n }\n }\n } else if (op === 0x2B && !tooComplexToFollowFunctions) { // CALL\n if (!inFDEF && !inELSE) {\n // collecting inforamtion about which functions are used\n funcId = stack[stack.length - 1];\n ttContext.functionsUsed[funcId] = true;\n if (funcId in ttContext.functionsStackDeltas) {\n stack.length += ttContext.functionsStackDeltas[funcId];\n } else if (funcId in ttContext.functionsDefined &&\n functionsCalled.indexOf(funcId) < 0) {\n callstack.push({ data, i, stackTop: stack.length - 1, });\n functionsCalled.push(funcId);\n pc = ttContext.functionsDefined[funcId];\n if (!pc) {\n warn('TT: CALL non-existent function');\n ttContext.hintsValid = false;\n return;\n }\n data = pc.data;\n i = pc.i;\n }\n }\n } else if (op === 0x2C && !tooComplexToFollowFunctions) { // FDEF\n if (inFDEF || inELSE) {\n warn('TT: nested FDEFs not allowed');\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // collecting inforamtion about which functions are defined\n lastDeff = i;\n funcId = stack.pop();\n ttContext.functionsDefined[funcId] = { data, i, };\n } else if (op === 0x2D) { // ENDF - end of function\n if (inFDEF) {\n inFDEF = false;\n lastEndf = i;\n } else {\n pc = callstack.pop();\n if (!pc) {\n warn('TT: ENDF bad stack');\n ttContext.hintsValid = false;\n return;\n }\n funcId = functionsCalled.pop();\n data = pc.data;\n i = pc.i;\n ttContext.functionsStackDeltas[funcId] =\n stack.length - pc.stackTop;\n }\n } else if (op === 0x89) { // IDEF - instruction definition\n if (inFDEF || inELSE) {\n warn('TT: nested IDEFs not allowed');\n tooComplexToFollowFunctions = true;\n }\n inFDEF = true;\n // recording it as a function to track ENDF\n lastDeff = i;\n } else if (op === 0x58) { // IF\n ++ifLevel;\n } else if (op === 0x1B) { // ELSE\n inELSE = ifLevel;\n } else if (op === 0x59) { // EIF\n if (inELSE === ifLevel) {\n inELSE = 0;\n }\n --ifLevel;\n } else if (op === 0x1C) { // JMPR\n if (!inFDEF && !inELSE) {\n var offset = stack[stack.length - 1];\n // only jumping forward to prevent infinite loop\n if (offset > 0) {\n i += offset - 1;\n }\n }\n }\n // Adjusting stack not extactly, but just enough to get function id\n if (!inFDEF && !inELSE) {\n var stackDelta = op <= 0x8E ? TTOpsStackDeltas[op] :\n op >= 0xC0 && op <= 0xDF ? -1 : op >= 0xE0 ? -2 : 0;\n if (op >= 0x71 && op <= 0x75) {\n n = stack.pop();\n if (!isNaN(n)) {\n stackDelta = -n * 2;\n }\n }\n while (stackDelta < 0 && stack.length > 0) {\n stack.pop();\n stackDelta++;\n }\n while (stackDelta > 0) {\n stack.push(NaN); // pushing any number into stack\n stackDelta--;\n }\n }\n }\n ttContext.tooComplexToFollowFunctions = tooComplexToFollowFunctions;\n var content = [data];\n if (i > data.length) {\n content.push(new Uint8Array(i - data.length));\n }\n if (lastDeff > lastEndf) {\n warn('TT: complementing a missing function tail');\n // new function definition started, but not finished\n // complete function by [CLEAR, ENDF]\n content.push(new Uint8Array([0x22, 0x2D]));\n }\n foldTTTable(table, content);\n }\n\n function checkInvalidFunctions(ttContext, maxFunctionDefs) {\n if (ttContext.tooComplexToFollowFunctions) {\n return;\n }\n if (ttContext.functionsDefined.length > maxFunctionDefs) {\n warn('TT: more functions defined than expected');\n ttContext.hintsValid = false;\n return;\n }\n for (var j = 0, jj = ttContext.functionsUsed.length; j < jj; j++) {\n if (j > maxFunctionDefs) {\n warn('TT: invalid function id: ' + j);\n ttContext.hintsValid = false;\n return;\n }\n if (ttContext.functionsUsed[j] && !ttContext.functionsDefined[j]) {\n warn('TT: undefined function: ' + j);\n ttContext.hintsValid = false;\n return;\n }\n }\n }\n\n function foldTTTable(table, content) {\n if (content.length > 1) {\n // concatenating the content items\n var newLength = 0;\n var j, jj;\n for (j = 0, jj = content.length; j < jj; j++) {\n newLength += content[j].length;\n }\n newLength = (newLength + 3) & ~3;\n var result = new Uint8Array(newLength);\n var pos = 0;\n for (j = 0, jj = content.length; j < jj; j++) {\n result.set(content[j], pos);\n pos += content[j].length;\n }\n table.data = result;\n table.length = newLength;\n }\n }\n\n function sanitizeTTPrograms(fpgm, prep, cvt, maxFunctionDefs) {\n var ttContext = {\n functionsDefined: [],\n functionsUsed: [],\n functionsStackDeltas: [],\n tooComplexToFollowFunctions: false,\n hintsValid: true,\n };\n if (fpgm) {\n sanitizeTTProgram(fpgm, ttContext);\n }\n if (prep) {\n sanitizeTTProgram(prep, ttContext);\n }\n if (fpgm) {\n checkInvalidFunctions(ttContext, maxFunctionDefs);\n }\n if (cvt && (cvt.length & 1)) {\n var cvtData = new Uint8Array(cvt.length + 1);\n cvtData.set(cvt.data);\n cvt.data = cvtData;\n }\n return ttContext.hintsValid;\n }\n\n // The following steps modify the original font data, making copy\n font = new Stream(new Uint8Array(font.getBytes()));\n\n var VALID_TABLES = ['OS/2', 'cmap', 'head', 'hhea', 'hmtx', 'maxp',\n 'name', 'post', 'loca', 'glyf', 'fpgm', 'prep', 'cvt ', 'CFF '];\n\n var header = readOpenTypeHeader(font);\n var numTables = header.numTables;\n var cff, cffFile;\n\n var tables = Object.create(null);\n tables['OS/2'] = null;\n tables['cmap'] = null;\n tables['head'] = null;\n tables['hhea'] = null;\n tables['hmtx'] = null;\n tables['maxp'] = null;\n tables['name'] = null;\n tables['post'] = null;\n\n var table;\n for (var i = 0; i < numTables; i++) {\n table = readTableEntry(font);\n if (VALID_TABLES.indexOf(table.tag) < 0) {\n continue; // skipping table if it's not a required or optional table\n }\n if (table.length === 0) {\n continue; // skipping empty tables\n }\n tables[table.tag] = table;\n }\n\n var isTrueType = !tables['CFF '];\n if (!isTrueType) {\n // OpenType font (skip composite fonts with non-default CID to GID map).\n if ((header.version === 'OTTO' &&\n !(properties.composite && properties.cidToGidMap)) ||\n !tables['head'] || !tables['hhea'] || !tables['maxp'] ||\n !tables['post']) {\n // No major tables: throwing everything at `CFFFont`.\n cffFile = new Stream(tables['CFF '].data);\n cff = new CFFFont(cffFile, properties);\n\n adjustWidths(properties);\n\n return this.convert(name, cff, properties);\n }\n\n delete tables['glyf'];\n delete tables['loca'];\n delete tables['fpgm'];\n delete tables['prep'];\n delete tables['cvt '];\n this.isOpenType = true;\n } else {\n if (!tables['loca']) {\n throw new FormatError('Required \"loca\" table is not found');\n }\n if (!tables['glyf']) {\n warn('Required \"glyf\" table is not found -- trying to recover.');\n // Note: We use `sanitizeGlyphLocations` to add dummy glyf data below.\n tables['glyf'] = {\n tag: 'glyf',\n data: new Uint8Array(0),\n };\n }\n this.isOpenType = false;\n }\n\n if (!tables['maxp']) {\n throw new FormatError('Required \"maxp\" table is not found');\n }\n\n font.pos = (font.start || 0) + tables['maxp'].offset;\n var version = font.getInt32();\n var numGlyphs = font.getUint16();\n var maxFunctionDefs = 0;\n if (version >= 0x00010000 && tables['maxp'].length >= 22) {\n // maxZones can be invalid\n font.pos += 8;\n var maxZones = font.getUint16();\n if (maxZones > 2) { // reset to 2 if font has invalid maxZones\n tables['maxp'].data[14] = 0;\n tables['maxp'].data[15] = 2;\n }\n font.pos += 4;\n maxFunctionDefs = font.getUint16();\n }\n\n var dupFirstEntry = false;\n if (properties.type === 'CIDFontType2' && properties.toUnicode &&\n properties.toUnicode.get(0) > '\\u0000') {\n // oracle's defect (see 3427), duplicating first entry\n dupFirstEntry = true;\n numGlyphs++;\n tables['maxp'].data[4] = numGlyphs >> 8;\n tables['maxp'].data[5] = numGlyphs & 255;\n }\n\n var hintsValid = sanitizeTTPrograms(tables['fpgm'], tables['prep'],\n tables['cvt '], maxFunctionDefs);\n if (!hintsValid) {\n delete tables['fpgm'];\n delete tables['prep'];\n delete tables['cvt '];\n }\n\n // Ensure the hmtx table contains the advance width and\n // sidebearings information for numGlyphs in the maxp table\n sanitizeMetrics(font, tables['hhea'], tables['hmtx'], numGlyphs);\n\n if (!tables['head']) {\n throw new FormatError('Required \"head\" table is not found');\n }\n\n sanitizeHead(tables['head'], numGlyphs,\n isTrueType ? tables['loca'].length : 0);\n\n var missingGlyphs = Object.create(null);\n if (isTrueType) {\n var isGlyphLocationsLong = int16(tables['head'].data[50],\n tables['head'].data[51]);\n missingGlyphs = sanitizeGlyphLocations(tables['loca'], tables['glyf'],\n numGlyphs, isGlyphLocationsLong,\n hintsValid, dupFirstEntry);\n }\n\n if (!tables['hhea']) {\n throw new FormatError('Required \"hhea\" table is not found');\n }\n\n // Sanitizer reduces the glyph advanceWidth to the maxAdvanceWidth\n // Sometimes it's 0. That needs to be fixed\n if (tables['hhea'].data[10] === 0 && tables['hhea'].data[11] === 0) {\n tables['hhea'].data[10] = 0xFF;\n tables['hhea'].data[11] = 0xFF;\n }\n\n // Extract some more font properties from the OpenType head and\n // hhea tables; yMin and descent value are always negative.\n var metricsOverride = {\n unitsPerEm: int16(tables['head'].data[18], tables['head'].data[19]),\n yMax: int16(tables['head'].data[42], tables['head'].data[43]),\n yMin: signedInt16(tables['head'].data[38], tables['head'].data[39]),\n ascent: int16(tables['hhea'].data[4], tables['hhea'].data[5]),\n descent: signedInt16(tables['hhea'].data[6], tables['hhea'].data[7]),\n };\n\n // PDF FontDescriptor metrics lie -- using data from actual font.\n this.ascent = metricsOverride.ascent / metricsOverride.unitsPerEm;\n this.descent = metricsOverride.descent / metricsOverride.unitsPerEm;\n\n // The 'post' table has glyphs names.\n if (tables['post']) {\n var valid = readPostScriptTable(tables['post'], properties, numGlyphs);\n if (!valid) {\n tables['post'] = null;\n }\n }\n\n var charCodeToGlyphId = [], charCode;\n\n // Helper function to try to skip mapping of empty glyphs.\n function hasGlyph(glyphId) {\n return !missingGlyphs[glyphId];\n }\n\n if (properties.composite) {\n var cidToGidMap = properties.cidToGidMap || [];\n var isCidToGidMapEmpty = cidToGidMap.length === 0;\n\n properties.cMap.forEach(function(charCode, cid) {\n if (cid > 0xffff) {\n throw new FormatError('Max size of CID is 65,535');\n }\n var glyphId = -1;\n if (isCidToGidMapEmpty) {\n glyphId = cid;\n } else if (cidToGidMap[cid] !== undefined) {\n glyphId = cidToGidMap[cid];\n }\n\n if (glyphId >= 0 && glyphId < numGlyphs && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n }\n });\n if (dupFirstEntry && (isCidToGidMapEmpty || !charCodeToGlyphId[0])) {\n // We don't duplicate the first entry in the `charCodeToGlyphId` map\n // if the font has a `CIDToGIDMap` which has already mapped the first\n // entry to a non-zero `glyphId` (fixes issue7544.pdf).\n charCodeToGlyphId[0] = numGlyphs - 1;\n }\n } else {\n // Most of the following logic in this code branch is based on the\n // 9.6.6.4 of the PDF spec.\n var cmapTable = readCmapTable(tables['cmap'], font, this.isSymbolicFont,\n properties.hasEncoding);\n var cmapPlatformId = cmapTable.platformId;\n var cmapEncodingId = cmapTable.encodingId;\n var cmapMappings = cmapTable.mappings;\n var cmapMappingsLength = cmapMappings.length;\n\n // The spec seems to imply that if the font is symbolic the encoding\n // should be ignored, this doesn't appear to work for 'preistabelle.pdf'\n // where the the font is symbolic and it has an encoding.\n if (properties.hasEncoding &&\n (cmapPlatformId === 3 && cmapEncodingId === 1 ||\n cmapPlatformId === 1 && cmapEncodingId === 0) ||\n (cmapPlatformId === -1 && cmapEncodingId === -1 && // Temporary hack\n !!getEncoding(properties.baseEncodingName))) { // Temporary hack\n // When no preferred cmap table was found and |baseEncodingName| is\n // one of the predefined encodings, we seem to obtain a better\n // |charCodeToGlyphId| map from the code below (fixes bug 1057544).\n // TODO: Note that this is a hack which should be removed as soon as\n // we have proper support for more exotic cmap tables.\n\n var baseEncoding = [];\n if (properties.baseEncodingName === 'MacRomanEncoding' ||\n properties.baseEncodingName === 'WinAnsiEncoding') {\n baseEncoding = getEncoding(properties.baseEncodingName);\n }\n var glyphsUnicodeMap = getGlyphsUnicode();\n for (charCode = 0; charCode < 256; charCode++) {\n var glyphName, standardGlyphName;\n if (this.differences && charCode in this.differences) {\n glyphName = this.differences[charCode];\n } else if (charCode in baseEncoding &&\n baseEncoding[charCode] !== '') {\n glyphName = baseEncoding[charCode];\n } else {\n glyphName = StandardEncoding[charCode];\n }\n if (!glyphName) {\n continue;\n }\n // Ensure that non-standard glyph names are resolved to valid ones.\n standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n\n var unicodeOrCharCode;\n if (cmapPlatformId === 3 && cmapEncodingId === 1) {\n unicodeOrCharCode = glyphsUnicodeMap[standardGlyphName];\n } else if (cmapPlatformId === 1 && cmapEncodingId === 0) {\n // TODO: the encoding needs to be updated with mac os table.\n unicodeOrCharCode = MacRomanEncoding.indexOf(standardGlyphName);\n }\n\n var found = false;\n for (i = 0; i < cmapMappingsLength; ++i) {\n if (cmapMappings[i].charCode !== unicodeOrCharCode) {\n continue;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n found = true;\n break;\n }\n if (!found && properties.glyphNames) {\n // Try to map using the post table.\n var glyphId = properties.glyphNames.indexOf(glyphName);\n // The post table ought to use the same kind of glyph names as the\n // `differences` array, but check the standard ones as a fallback.\n if (glyphId === -1 && standardGlyphName !== glyphName) {\n glyphId = properties.glyphNames.indexOf(standardGlyphName);\n }\n if (glyphId > 0 && hasGlyph(glyphId)) {\n charCodeToGlyphId[charCode] = glyphId;\n found = true;\n }\n }\n }\n } else if (cmapPlatformId === 0 && cmapEncodingId === 0) {\n // Default Unicode semantics, use the charcodes as is.\n for (i = 0; i < cmapMappingsLength; ++i) {\n charCodeToGlyphId[cmapMappings[i].charCode] =\n cmapMappings[i].glyphId;\n }\n } else {\n // When there is only a (1, 0) cmap table, the char code is a single\n // byte and it is used directly as the char code.\n\n // When a (3, 0) cmap table is present, it is used instead but the\n // spec has special rules for char codes in the range of 0xF000 to\n // 0xF0FF and it says the (3, 0) table should map the values from\n // the (1, 0) table by prepending 0xF0 to the char codes. To reverse\n // this, the upper bits of the char code are cleared, but only for the\n // special range since some PDFs have char codes outside of this range\n // (e.g. 0x2013) which when masked would overwrite other values in the\n // cmap.\n for (i = 0; i < cmapMappingsLength; ++i) {\n charCode = cmapMappings[i].charCode;\n if (cmapPlatformId === 3 &&\n charCode >= 0xF000 && charCode <= 0xF0FF) {\n charCode &= 0xFF;\n }\n charCodeToGlyphId[charCode] = cmapMappings[i].glyphId;\n }\n }\n }\n\n if (charCodeToGlyphId.length === 0) {\n // defines at least one glyph\n charCodeToGlyphId[0] = 0;\n }\n\n // Converting glyphs and ids into font's cmap table\n var newMapping = adjustMapping(charCodeToGlyphId, properties,\n missingGlyphs);\n this.toFontChar = newMapping.toFontChar;\n tables['cmap'] = {\n tag: 'cmap',\n data: createCmapTable(newMapping.charCodeToGlyphId, numGlyphs),\n };\n\n if (!tables['OS/2'] || !validateOS2Table(tables['OS/2'])) {\n tables['OS/2'] = {\n tag: 'OS/2',\n data: createOS2Table(properties, newMapping.charCodeToGlyphId,\n metricsOverride),\n };\n }\n\n // Rewrite the 'post' table if needed\n if (!tables['post']) {\n tables['post'] = {\n tag: 'post',\n data: createPostTable(properties),\n };\n }\n\n if (!isTrueType) {\n try {\n // Trying to repair CFF file\n cffFile = new Stream(tables['CFF '].data);\n var parser = new CFFParser(cffFile, properties,\n SEAC_ANALYSIS_ENABLED);\n cff = parser.parse();\n var compiler = new CFFCompiler(cff);\n tables['CFF '].data = compiler.compile();\n } catch (e) {\n warn('Failed to compile font ' + properties.loadedName);\n }\n }\n\n // Re-creating 'name' table\n if (!tables['name']) {\n tables['name'] = {\n tag: 'name',\n data: createNameTable(this.name),\n };\n } else {\n // ... using existing 'name' table as prototype\n var namePrototype = readNameTable(tables['name']);\n tables['name'].data = createNameTable(name, namePrototype);\n }\n\n var builder = new OpenTypeFileBuilder(header.version);\n for (var tableTag in tables) {\n builder.addTable(tableTag, tables[tableTag].data);\n }\n return builder.toArray();\n },\n\n convert: function Font_convert(fontName, font, properties) {\n // TODO: Check the charstring widths to determine this.\n properties.fixedPitch = false;\n\n if (properties.builtInEncoding) {\n // For Type1 fonts that do not include either `ToUnicode` or `Encoding`\n // data, attempt to use the `builtInEncoding` to improve text selection.\n adjustToUnicode(properties, properties.builtInEncoding);\n }\n\n var mapping = font.getGlyphMapping(properties);\n var newMapping = adjustMapping(mapping, properties, Object.create(null));\n this.toFontChar = newMapping.toFontChar;\n var numGlyphs = font.numGlyphs;\n\n function getCharCodes(charCodeToGlyphId, glyphId) {\n var charCodes = null;\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n if (!charCodes) {\n charCodes = [];\n }\n charCodes.push(charCode | 0);\n }\n }\n return charCodes;\n }\n\n function createCharCode(charCodeToGlyphId, glyphId) {\n for (var charCode in charCodeToGlyphId) {\n if (glyphId === charCodeToGlyphId[charCode]) {\n return charCode | 0;\n }\n }\n newMapping.charCodeToGlyphId[newMapping.nextAvailableFontCharCode] =\n glyphId;\n return newMapping.nextAvailableFontCharCode++;\n }\n\n var seacs = font.seacs;\n if (SEAC_ANALYSIS_ENABLED && seacs && seacs.length) {\n var matrix = properties.fontMatrix || FONT_IDENTITY_MATRIX;\n var charset = font.getCharset();\n var seacMap = Object.create(null);\n for (var glyphId in seacs) {\n glyphId |= 0;\n var seac = seacs[glyphId];\n var baseGlyphName = StandardEncoding[seac[2]];\n var accentGlyphName = StandardEncoding[seac[3]];\n var baseGlyphId = charset.indexOf(baseGlyphName);\n var accentGlyphId = charset.indexOf(accentGlyphName);\n if (baseGlyphId < 0 || accentGlyphId < 0) {\n continue;\n }\n var accentOffset = {\n x: seac[0] * matrix[0] + seac[1] * matrix[2] + matrix[4],\n y: seac[0] * matrix[1] + seac[1] * matrix[3] + matrix[5],\n };\n\n var charCodes = getCharCodes(mapping, glyphId);\n if (!charCodes) {\n // There's no point in mapping it if the char code was never mapped\n // to begin with.\n continue;\n }\n for (var i = 0, ii = charCodes.length; i < ii; i++) {\n var charCode = charCodes[i];\n // Find a fontCharCode that maps to the base and accent glyphs.\n // If one doesn't exists, create it.\n var charCodeToGlyphId = newMapping.charCodeToGlyphId;\n var baseFontCharCode = createCharCode(charCodeToGlyphId,\n baseGlyphId);\n var accentFontCharCode = createCharCode(charCodeToGlyphId,\n accentGlyphId);\n seacMap[charCode] = {\n baseFontCharCode,\n accentFontCharCode,\n accentOffset,\n };\n }\n }\n properties.seacMap = seacMap;\n }\n\n var unitsPerEm = 1 / (properties.fontMatrix || FONT_IDENTITY_MATRIX)[0];\n\n var builder = new OpenTypeFileBuilder('\\x4F\\x54\\x54\\x4F');\n // PostScript Font Program\n builder.addTable('CFF ', font.data);\n // OS/2 and Windows Specific metrics\n builder.addTable('OS/2', createOS2Table(properties,\n newMapping.charCodeToGlyphId));\n // Character to glyphs mapping\n builder.addTable('cmap', createCmapTable(newMapping.charCodeToGlyphId,\n numGlyphs));\n // Font header\n builder.addTable('head',\n '\\x00\\x01\\x00\\x00' + // Version number\n '\\x00\\x00\\x10\\x00' + // fontRevision\n '\\x00\\x00\\x00\\x00' + // checksumAdjustement\n '\\x5F\\x0F\\x3C\\xF5' + // magicNumber\n '\\x00\\x00' + // Flags\n safeString16(unitsPerEm) + // unitsPerEM\n '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + // creation date\n '\\x00\\x00\\x00\\x00\\x9e\\x0b\\x7e\\x27' + // modifification date\n '\\x00\\x00' + // xMin\n safeString16(properties.descent) + // yMin\n '\\x0F\\xFF' + // xMax\n safeString16(properties.ascent) + // yMax\n string16(properties.italicAngle ? 2 : 0) + // macStyle\n '\\x00\\x11' + // lowestRecPPEM\n '\\x00\\x00' + // fontDirectionHint\n '\\x00\\x00' + // indexToLocFormat\n '\\x00\\x00'); // glyphDataFormat\n\n // Horizontal header\n builder.addTable('hhea',\n '\\x00\\x01\\x00\\x00' + // Version number\n safeString16(properties.ascent) + // Typographic Ascent\n safeString16(properties.descent) + // Typographic Descent\n '\\x00\\x00' + // Line Gap\n '\\xFF\\xFF' + // advanceWidthMax\n '\\x00\\x00' + // minLeftSidebearing\n '\\x00\\x00' + // minRightSidebearing\n '\\x00\\x00' + // xMaxExtent\n safeString16(properties.capHeight) + // caretSlopeRise\n safeString16(Math.tan(properties.italicAngle) *\n properties.xHeight) + // caretSlopeRun\n '\\x00\\x00' + // caretOffset\n '\\x00\\x00' + // -reserved-\n '\\x00\\x00' + // -reserved-\n '\\x00\\x00' + // -reserved-\n '\\x00\\x00' + // -reserved-\n '\\x00\\x00' + // metricDataFormat\n string16(numGlyphs)); // Number of HMetrics\n\n // Horizontal metrics\n builder.addTable('hmtx', (function fontFieldsHmtx() {\n var charstrings = font.charstrings;\n var cffWidths = font.cff ? font.cff.widths : null;\n var hmtx = '\\x00\\x00\\x00\\x00'; // Fake .notdef\n for (var i = 1, ii = numGlyphs; i < ii; i++) {\n var width = 0;\n if (charstrings) {\n var charstring = charstrings[i - 1];\n width = 'width' in charstring ? charstring.width : 0;\n } else if (cffWidths) {\n width = Math.ceil(cffWidths[i] || 0);\n }\n hmtx += string16(width) + string16(0);\n }\n return hmtx;\n })());\n\n // Maximum profile\n builder.addTable('maxp',\n '\\x00\\x00\\x50\\x00' + // Version number\n string16(numGlyphs)); // Num of glyphs\n\n // Naming tables\n builder.addTable('name', createNameTable(fontName));\n\n // PostScript information\n builder.addTable('post', createPostTable(properties));\n\n return builder.toArray();\n },\n\n get spaceWidth() {\n if ('_shadowWidth' in this) {\n return this._shadowWidth;\n }\n\n // trying to estimate space character width\n var possibleSpaceReplacements = ['space', 'minus', 'one', 'i', 'I'];\n var width;\n for (var i = 0, ii = possibleSpaceReplacements.length; i < ii; i++) {\n var glyphName = possibleSpaceReplacements[i];\n // if possible, getting width by glyph name\n if (glyphName in this.widths) {\n width = this.widths[glyphName];\n break;\n }\n var glyphsUnicodeMap = getGlyphsUnicode();\n var glyphUnicode = glyphsUnicodeMap[glyphName];\n // finding the charcode via unicodeToCID map\n var charcode = 0;\n if (this.composite) {\n if (this.cMap.contains(glyphUnicode)) {\n charcode = this.cMap.lookup(glyphUnicode);\n }\n }\n // ... via toUnicode map\n if (!charcode && this.toUnicode) {\n charcode = this.toUnicode.charCodeOf(glyphUnicode);\n }\n // setting it to unicode if negative or undefined\n if (charcode <= 0) {\n charcode = glyphUnicode;\n }\n // trying to get width via charcode\n width = this.widths[charcode];\n if (width) {\n break; // the non-zero width found\n }\n }\n width = width || this.defaultWidth;\n // Do not shadow the property here. See discussion:\n // https://github.com/mozilla/pdf.js/pull/2127#discussion_r1662280\n this._shadowWidth = width;\n return width;\n },\n\n charToGlyph: function Font_charToGlyph(charcode, isSpace) {\n var fontCharCode, width, operatorListId;\n\n var widthCode = charcode;\n if (this.cMap && this.cMap.contains(charcode)) {\n widthCode = this.cMap.lookup(charcode);\n }\n width = this.widths[widthCode];\n width = isNum(width) ? width : this.defaultWidth;\n var vmetric = this.vmetrics && this.vmetrics[widthCode];\n\n var unicode = this.toUnicode.get(charcode) || charcode;\n if (typeof unicode === 'number') {\n unicode = String.fromCharCode(unicode);\n }\n\n var isInFont = charcode in this.toFontChar;\n // First try the toFontChar map, if it's not there then try falling\n // back to the char code.\n fontCharCode = this.toFontChar[charcode] || charcode;\n if (this.missingFile) {\n fontCharCode = mapSpecialUnicodeValues(fontCharCode);\n }\n\n if (this.isType3Font) {\n // Font char code in this case is actually a glyph name.\n operatorListId = fontCharCode;\n }\n\n var accent = null;\n if (this.seacMap && this.seacMap[charcode]) {\n isInFont = true;\n var seac = this.seacMap[charcode];\n fontCharCode = seac.baseFontCharCode;\n accent = {\n fontChar: String.fromCharCode(seac.accentFontCharCode),\n offset: seac.accentOffset,\n };\n }\n\n var fontChar = String.fromCharCode(fontCharCode);\n\n var glyph = this.glyphCache[charcode];\n if (!glyph ||\n !glyph.matchesForCache(fontChar, unicode, accent, width, vmetric,\n operatorListId, isSpace, isInFont)) {\n glyph = new Glyph(fontChar, unicode, accent, width, vmetric,\n operatorListId, isSpace, isInFont);\n this.glyphCache[charcode] = glyph;\n }\n return glyph;\n },\n\n charsToGlyphs: function Font_charsToGlyphs(chars) {\n var charsCache = this.charsCache;\n var glyphs, glyph, charcode;\n\n // if we translated this string before, just grab it from the cache\n if (charsCache) {\n glyphs = charsCache[chars];\n if (glyphs) {\n return glyphs;\n }\n }\n\n // lazily create the translation cache\n if (!charsCache) {\n charsCache = this.charsCache = Object.create(null);\n }\n\n glyphs = [];\n var charsCacheKey = chars;\n var i = 0, ii;\n\n if (this.cMap) {\n // composite fonts have multi-byte strings convert the string from\n // single-byte to multi-byte\n var c = Object.create(null);\n while (i < chars.length) {\n this.cMap.readCharCode(chars, i, c);\n charcode = c.charcode;\n var length = c.length;\n i += length;\n // Space is char with code 0x20 and length 1 in multiple-byte codes.\n var isSpace = length === 1 && chars.charCodeAt(i - 1) === 0x20;\n glyph = this.charToGlyph(charcode, isSpace);\n glyphs.push(glyph);\n }\n } else {\n for (i = 0, ii = chars.length; i < ii; ++i) {\n charcode = chars.charCodeAt(i);\n glyph = this.charToGlyph(charcode, charcode === 0x20);\n glyphs.push(glyph);\n }\n }\n\n // Enter the translated string into the cache\n return (charsCache[charsCacheKey] = glyphs);\n },\n };\n\n return Font;\n})();\n\nvar ErrorFont = (function ErrorFontClosure() {\n function ErrorFont(error) {\n this.error = error;\n this.loadedName = 'g_font_error';\n this.loading = false;\n }\n\n ErrorFont.prototype = {\n charsToGlyphs: function ErrorFont_charsToGlyphs() {\n return [];\n },\n exportData: function ErrorFont_exportData() {\n return { error: this.error, };\n },\n };\n\n return ErrorFont;\n})();\n\n/**\n * Shared logic for building a char code to glyph id mapping for Type1 and\n * simple CFF fonts. See section 9.6.6.2 of the spec.\n * @param {Object} properties Font properties object.\n * @param {Object} builtInEncoding The encoding contained within the actual font\n * data.\n * @param {Array} glyphNames Array of glyph names where the index is the\n * glyph ID.\n * @returns {Object} A char code to glyph ID map.\n */\nfunction type1FontGlyphMapping(properties, builtInEncoding, glyphNames) {\n var charCodeToGlyphId = Object.create(null);\n var glyphId, charCode, baseEncoding;\n var isSymbolicFont = !!(properties.flags & FontFlags.Symbolic);\n\n if (properties.baseEncodingName) {\n // If a valid base encoding name was used, the mapping is initialized with\n // that.\n baseEncoding = getEncoding(properties.baseEncodingName);\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n } else if (isSymbolicFont) {\n // For a symbolic font the encoding should be the fonts built-in encoding.\n for (charCode in builtInEncoding) {\n charCodeToGlyphId[charCode] = builtInEncoding[charCode];\n }\n } else {\n // For non-symbolic fonts that don't have a base encoding the standard\n // encoding should be used.\n baseEncoding = StandardEncoding;\n for (charCode = 0; charCode < baseEncoding.length; charCode++) {\n glyphId = glyphNames.indexOf(baseEncoding[charCode]);\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n\n // Lastly, merge in the differences.\n var differences = properties.differences, glyphsUnicodeMap;\n if (differences) {\n for (charCode in differences) {\n var glyphName = differences[charCode];\n glyphId = glyphNames.indexOf(glyphName);\n\n if (glyphId === -1) {\n if (!glyphsUnicodeMap) {\n glyphsUnicodeMap = getGlyphsUnicode();\n }\n var standardGlyphName = recoverGlyphName(glyphName, glyphsUnicodeMap);\n if (standardGlyphName !== glyphName) {\n glyphId = glyphNames.indexOf(standardGlyphName);\n }\n }\n if (glyphId >= 0) {\n charCodeToGlyphId[charCode] = glyphId;\n } else {\n charCodeToGlyphId[charCode] = 0; // notdef\n }\n }\n }\n return charCodeToGlyphId;\n}\n\n// Type1Font is also a CIDFontType0.\nvar Type1Font = (function Type1FontClosure() {\n function findBlock(streamBytes, signature, startIndex) {\n var streamBytesLength = streamBytes.length;\n var signatureLength = signature.length;\n var scanLength = streamBytesLength - signatureLength;\n\n var i = startIndex, j, found = false;\n while (i < scanLength) {\n j = 0;\n while (j < signatureLength && streamBytes[i + j] === signature[j]) {\n j++;\n }\n if (j >= signatureLength) { // `signature` found, skip over whitespace.\n i += j;\n while (i < streamBytesLength && isSpace(streamBytes[i])) {\n i++;\n }\n found = true;\n break;\n }\n i++;\n }\n return {\n found,\n length: i,\n };\n }\n\n function getHeaderBlock(stream, suggestedLength) {\n var EEXEC_SIGNATURE = [0x65, 0x65, 0x78, 0x65, 0x63];\n\n var streamStartPos = stream.pos; // Save the initial stream position.\n var headerBytes, headerBytesLength, block;\n try {\n headerBytes = stream.getBytes(suggestedLength);\n headerBytesLength = headerBytes.length;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n // Ignore errors if the `suggestedLength` is huge enough that a Uint8Array\n // cannot hold the result of `getBytes`, and fallback to simply checking\n // the entire stream (fixes issue3928.pdf).\n }\n\n if (headerBytesLength === suggestedLength) {\n // Most of the time `suggestedLength` is correct, so to speed things up we\n // initially only check the last few bytes to see if the header was found.\n // Otherwise we (potentially) check the entire stream to prevent errors in\n // `Type1Parser` (fixes issue5686.pdf).\n block = findBlock(headerBytes, EEXEC_SIGNATURE,\n suggestedLength - 2 * EEXEC_SIGNATURE.length);\n\n if (block.found && block.length === suggestedLength) {\n return {\n stream: new Stream(headerBytes),\n length: suggestedLength,\n };\n }\n }\n warn('Invalid \"Length1\" property in Type1 font -- trying to recover.');\n stream.pos = streamStartPos; // Reset the stream position.\n\n var SCAN_BLOCK_LENGTH = 2048;\n var actualLength;\n while (true) {\n var scanBytes = stream.peekBytes(SCAN_BLOCK_LENGTH);\n block = findBlock(scanBytes, EEXEC_SIGNATURE, 0);\n\n if (block.length === 0) {\n break;\n }\n stream.pos += block.length; // Update the stream position.\n\n if (block.found) {\n actualLength = stream.pos - streamStartPos;\n break;\n }\n }\n stream.pos = streamStartPos; // Reset the stream position.\n\n if (actualLength) {\n return {\n stream: new Stream(stream.getBytes(actualLength)),\n length: actualLength,\n };\n }\n warn('Unable to recover \"Length1\" property in Type1 font -- using as is.');\n return {\n stream: new Stream(stream.getBytes(suggestedLength)),\n length: suggestedLength,\n };\n }\n\n function getEexecBlock(stream, suggestedLength) {\n // We should ideally parse the eexec block to ensure that `suggestedLength`\n // is correct, so we don't truncate the block data if it's too small.\n // However, this would also require checking if the fixed-content portion\n // exists (using the 'Length3' property), and ensuring that it's valid.\n //\n // Given that `suggestedLength` almost always is correct, all the validation\n // would require a great deal of unnecessary parsing for most fonts.\n // To save time, we always fetch the entire stream instead, which also avoid\n // issues if `suggestedLength` is huge (see comment in `getHeaderBlock`).\n //\n // NOTE: This means that the function can include the fixed-content portion\n // in the returned eexec block. In practice this does *not* seem to matter,\n // since `Type1Parser_extractFontProgram` will skip over any non-commands.\n var eexecBytes = stream.getBytes();\n return {\n stream: new Stream(eexecBytes),\n length: eexecBytes.length,\n };\n }\n\n function Type1Font(name, file, properties) {\n // Some bad generators embed pfb file as is, we have to strip 6-byte header.\n // Also, length1 and length2 might be off by 6 bytes as well.\n // http://www.math.ubc.ca/~cass/piscript/type1.pdf\n var PFB_HEADER_SIZE = 6;\n var headerBlockLength = properties.length1;\n var eexecBlockLength = properties.length2;\n var pfbHeader = file.peekBytes(PFB_HEADER_SIZE);\n var pfbHeaderPresent = pfbHeader[0] === 0x80 && pfbHeader[1] === 0x01;\n if (pfbHeaderPresent) {\n file.skip(PFB_HEADER_SIZE);\n headerBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) | pfbHeader[2];\n }\n\n // Get the data block containing glyphs and subrs information\n var headerBlock = getHeaderBlock(file, headerBlockLength);\n headerBlockLength = headerBlock.length;\n var headerBlockParser = new Type1Parser(headerBlock.stream, false,\n SEAC_ANALYSIS_ENABLED);\n headerBlockParser.extractFontHeader(properties);\n\n if (pfbHeaderPresent) {\n pfbHeader = file.getBytes(PFB_HEADER_SIZE);\n eexecBlockLength = (pfbHeader[5] << 24) | (pfbHeader[4] << 16) |\n (pfbHeader[3] << 8) | pfbHeader[2];\n }\n\n // Decrypt the data blocks and retrieve it's content\n var eexecBlock = getEexecBlock(file, eexecBlockLength);\n eexecBlockLength = eexecBlock.length;\n var eexecBlockParser = new Type1Parser(eexecBlock.stream, true,\n SEAC_ANALYSIS_ENABLED);\n var data = eexecBlockParser.extractFontProgram();\n for (var info in data.properties) {\n properties[info] = data.properties[info];\n }\n\n var charstrings = data.charstrings;\n var type2Charstrings = this.getType2Charstrings(charstrings);\n var subrs = this.getType2Subrs(data.subrs);\n\n this.charstrings = charstrings;\n this.data = this.wrap(name, type2Charstrings, this.charstrings,\n subrs, properties);\n this.seacs = this.getSeacs(data.charstrings);\n }\n\n Type1Font.prototype = {\n get numGlyphs() {\n return this.charstrings.length + 1;\n },\n\n getCharset: function Type1Font_getCharset() {\n var charset = ['.notdef'];\n var charstrings = this.charstrings;\n for (var glyphId = 0; glyphId < charstrings.length; glyphId++) {\n charset.push(charstrings[glyphId].glyphName);\n }\n return charset;\n },\n\n getGlyphMapping: function Type1Font_getGlyphMapping(properties) {\n var charstrings = this.charstrings;\n var glyphNames = ['.notdef'], glyphId;\n for (glyphId = 0; glyphId < charstrings.length; glyphId++) {\n glyphNames.push(charstrings[glyphId].glyphName);\n }\n var encoding = properties.builtInEncoding;\n if (encoding) {\n var builtInEncoding = Object.create(null);\n for (var charCode in encoding) {\n glyphId = glyphNames.indexOf(encoding[charCode]);\n if (glyphId >= 0) {\n builtInEncoding[charCode] = glyphId;\n }\n }\n }\n\n return type1FontGlyphMapping(properties, builtInEncoding, glyphNames);\n },\n\n getSeacs: function Type1Font_getSeacs(charstrings) {\n var i, ii;\n var seacMap = [];\n for (i = 0, ii = charstrings.length; i < ii; i++) {\n var charstring = charstrings[i];\n if (charstring.seac) {\n // Offset by 1 for .notdef\n seacMap[i + 1] = charstring.seac;\n }\n }\n return seacMap;\n },\n\n getType2Charstrings: function Type1Font_getType2Charstrings(\n type1Charstrings) {\n var type2Charstrings = [];\n for (var i = 0, ii = type1Charstrings.length; i < ii; i++) {\n type2Charstrings.push(type1Charstrings[i].charstring);\n }\n return type2Charstrings;\n },\n\n getType2Subrs: function Type1Font_getType2Subrs(type1Subrs) {\n var bias = 0;\n var count = type1Subrs.length;\n if (count < 1133) {\n bias = 107;\n } else if (count < 33769) {\n bias = 1131;\n } else {\n bias = 32768;\n }\n\n // Add a bunch of empty subrs to deal with the Type2 bias\n var type2Subrs = [];\n var i;\n for (i = 0; i < bias; i++) {\n type2Subrs.push([0x0B]);\n }\n\n for (i = 0; i < count; i++) {\n type2Subrs.push(type1Subrs[i]);\n }\n\n return type2Subrs;\n },\n\n wrap: function Type1Font_wrap(name, glyphs, charstrings, subrs,\n properties) {\n var cff = new CFF();\n cff.header = new CFFHeader(1, 0, 4, 4);\n\n cff.names = [name];\n\n var topDict = new CFFTopDict();\n // CFF strings IDs 0...390 are predefined names, so refering\n // to entries in our own String INDEX starts at SID 391.\n topDict.setByName('version', 391);\n topDict.setByName('Notice', 392);\n topDict.setByName('FullName', 393);\n topDict.setByName('FamilyName', 394);\n topDict.setByName('Weight', 395);\n topDict.setByName('Encoding', null); // placeholder\n topDict.setByName('FontMatrix', properties.fontMatrix);\n topDict.setByName('FontBBox', properties.bbox);\n topDict.setByName('charset', null); // placeholder\n topDict.setByName('CharStrings', null); // placeholder\n topDict.setByName('Private', null); // placeholder\n cff.topDict = topDict;\n\n var strings = new CFFStrings();\n strings.add('Version 0.11'); // Version\n strings.add('See original notice'); // Notice\n strings.add(name); // FullName\n strings.add(name); // FamilyName\n strings.add('Medium'); // Weight\n cff.strings = strings;\n\n cff.globalSubrIndex = new CFFIndex();\n\n var count = glyphs.length;\n var charsetArray = [0];\n var i, ii;\n for (i = 0; i < count; i++) {\n var index = CFFStandardStrings.indexOf(charstrings[i].glyphName);\n // TODO: Insert the string and correctly map it. Previously it was\n // thought mapping names that aren't in the standard strings to .notdef\n // was fine, however in issue818 when mapping them all to .notdef the\n // adieresis glyph no longer worked.\n if (index === -1) {\n index = 0;\n }\n charsetArray.push((index >> 8) & 0xff, index & 0xff);\n }\n cff.charset = new CFFCharset(false, 0, [], charsetArray);\n\n var charStringsIndex = new CFFIndex();\n charStringsIndex.add([0x8B, 0x0E]); // .notdef\n for (i = 0; i < count; i++) {\n var glyph = glyphs[i];\n // If the CharString outline is empty, replace it with .notdef to\n // prevent OTS from rejecting the font (fixes bug1252420.pdf).\n if (glyph.length === 0) {\n charStringsIndex.add([0x8B, 0x0E]); // .notdef\n continue;\n }\n charStringsIndex.add(glyph);\n }\n cff.charStrings = charStringsIndex;\n\n var privateDict = new CFFPrivateDict();\n privateDict.setByName('Subrs', null); // placeholder\n var fields = [\n 'BlueValues',\n 'OtherBlues',\n 'FamilyBlues',\n 'FamilyOtherBlues',\n 'StemSnapH',\n 'StemSnapV',\n 'BlueShift',\n 'BlueFuzz',\n 'BlueScale',\n 'LanguageGroup',\n 'ExpansionFactor',\n 'ForceBold',\n 'StdHW',\n 'StdVW'\n ];\n for (i = 0, ii = fields.length; i < ii; i++) {\n var field = fields[i];\n if (!(field in properties.privateData)) {\n continue;\n }\n var value = properties.privateData[field];\n if (isArray(value)) {\n // All of the private dictionary array data in CFF must be stored as\n // \"delta-encoded\" numbers.\n for (var j = value.length - 1; j > 0; j--) {\n value[j] -= value[j - 1]; // ... difference from previous value\n }\n }\n privateDict.setByName(field, value);\n }\n cff.topDict.privateDict = privateDict;\n\n var subrIndex = new CFFIndex();\n for (i = 0, ii = subrs.length; i < ii; i++) {\n subrIndex.add(subrs[i]);\n }\n privateDict.subrsIndex = subrIndex;\n\n var compiler = new CFFCompiler(cff);\n return compiler.compile();\n },\n };\n\n return Type1Font;\n})();\n\nvar CFFFont = (function CFFFontClosure() {\n function CFFFont(file, properties) {\n this.properties = properties;\n\n var parser = new CFFParser(file, properties, SEAC_ANALYSIS_ENABLED);\n this.cff = parser.parse();\n var compiler = new CFFCompiler(this.cff);\n this.seacs = this.cff.seacs;\n try {\n this.data = compiler.compile();\n } catch (e) {\n warn('Failed to compile font ' + properties.loadedName);\n // There may have just been an issue with the compiler, set the data\n // anyway and hope the font loaded.\n this.data = file;\n }\n }\n\n CFFFont.prototype = {\n get numGlyphs() {\n return this.cff.charStrings.count;\n },\n getCharset: function CFFFont_getCharset() {\n return this.cff.charset.charset;\n },\n getGlyphMapping: function CFFFont_getGlyphMapping() {\n var cff = this.cff;\n var properties = this.properties;\n var charsets = cff.charset.charset;\n var charCodeToGlyphId;\n var glyphId;\n\n if (properties.composite) {\n charCodeToGlyphId = Object.create(null);\n if (cff.isCIDFont) {\n // If the font is actually a CID font then we should use the charset\n // to map CIDs to GIDs.\n for (glyphId = 0; glyphId < charsets.length; glyphId++) {\n var cid = charsets[glyphId];\n var charCode = properties.cMap.charCodeOf(cid);\n charCodeToGlyphId[charCode] = glyphId;\n }\n } else {\n // If it is NOT actually a CID font then CIDs should be mapped\n // directly to GIDs.\n for (glyphId = 0; glyphId < cff.charStrings.count; glyphId++) {\n charCodeToGlyphId[glyphId] = glyphId;\n }\n }\n return charCodeToGlyphId;\n }\n\n var encoding = cff.encoding ? cff.encoding.encoding : null;\n charCodeToGlyphId = type1FontGlyphMapping(properties, encoding, charsets);\n return charCodeToGlyphId;\n },\n };\n\n return CFFFont;\n})();\n\n// Workaround for seac on Windows.\n(function checkSeacSupport() {\n if (typeof navigator !== 'undefined' && /Windows/.test(navigator.userAgent)) {\n SEAC_ANALYSIS_ENABLED = true;\n }\n})();\n\n// Workaround for Private Use Area characters in Chrome on Windows\n// http://code.google.com/p/chromium/issues/detail?id=122465\n// https://github.com/mozilla/pdf.js/issues/1689\n(function checkChromeWindows() {\n if (typeof navigator !== 'undefined' &&\n /Windows.*Chrome/.test(navigator.userAgent)) {\n SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = true;\n }\n})();\n\nexport {\n SEAC_ANALYSIS_ENABLED,\n PRIVATE_USE_OFFSET_START,\n PRIVATE_USE_OFFSET_END,\n ErrorFont,\n Font,\n FontFlags,\n ToUnicodeMap,\n IdentityToUnicodeMap,\n ProblematicCharRanges,\n getFontType,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/fonts.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert, FormatError, ImageKind, info, isArray, warn\n} from '../shared/util';\nimport { DecodeStream, JpegStream } from './stream';\nimport { isStream, Name } from './primitives';\nimport { ColorSpace } from './colorspace';\nimport { JpxImage } from './jpx';\n\nvar PDFImage = (function PDFImageClosure() {\n /**\n * Decodes the image using native decoder if possible. Resolves the promise\n * when the image data is ready.\n */\n function handleImageData(image, nativeDecoder) {\n if (nativeDecoder && nativeDecoder.canDecode(image)) {\n return nativeDecoder.decode(image);\n }\n return Promise.resolve(image);\n }\n\n /**\n * Decode and clamp a value. The formula is different from the spec because we\n * don't decode to float range [0,1], we decode it in the [0,max] range.\n */\n function decodeAndClamp(value, addend, coefficient, max) {\n value = addend + value * coefficient;\n // Clamp the value to the range\n return (value < 0 ? 0 : (value > max ? max : value));\n }\n\n /**\n * Resizes an image mask with 1 component.\n * @param {TypedArray} src - The source buffer.\n * @param {Number} bpc - Number of bits per component.\n * @param {Number} w1 - Original width.\n * @param {Number} h1 - Original height.\n * @param {Number} w2 - New width.\n * @param {Number} h2 - New height.\n * @returns {TypedArray} The resized image mask buffer.\n */\n function resizeImageMask(src, bpc, w1, h1, w2, h2) {\n var length = w2 * h2;\n var dest = (bpc <= 8 ? new Uint8Array(length) :\n (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));\n var xRatio = w1 / w2;\n var yRatio = h1 / h2;\n var i, j, py, newIndex = 0, oldIndex;\n var xScaled = new Uint16Array(w2);\n var w1Scanline = w1;\n\n for (i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n for (i = 0; i < h2; i++) {\n py = Math.floor(i * yRatio) * w1Scanline;\n for (j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex];\n }\n }\n return dest;\n }\n\n function PDFImage(xref, res, image, inline, smask, mask, isMask) {\n this.image = image;\n var dict = image.dict;\n if (dict.has('Filter')) {\n var filter = dict.get('Filter').name;\n if (filter === 'JPXDecode') {\n var jpxImage = new JpxImage();\n jpxImage.parseImageProperties(image.stream);\n image.stream.reset();\n image.bitsPerComponent = jpxImage.bitsPerComponent;\n image.numComps = jpxImage.componentsCount;\n } else if (filter === 'JBIG2Decode') {\n image.bitsPerComponent = 1;\n image.numComps = 1;\n }\n }\n // TODO cache rendered images?\n\n this.width = dict.get('Width', 'W');\n this.height = dict.get('Height', 'H');\n\n if (this.width < 1 || this.height < 1) {\n throw new FormatError(`Invalid image width: ${this.width} or ` +\n `height: ${this.height}`);\n }\n\n this.interpolate = dict.get('Interpolate', 'I') || false;\n this.imageMask = dict.get('ImageMask', 'IM') || false;\n this.matte = dict.get('Matte') || false;\n\n var bitsPerComponent = image.bitsPerComponent;\n if (!bitsPerComponent) {\n bitsPerComponent = dict.get('BitsPerComponent', 'BPC');\n if (!bitsPerComponent) {\n if (this.imageMask) {\n bitsPerComponent = 1;\n } else {\n throw new FormatError(\n `Bits per component missing in image: ${this.imageMask}`);\n }\n }\n }\n this.bpc = bitsPerComponent;\n\n if (!this.imageMask) {\n var colorSpace = dict.get('ColorSpace', 'CS');\n if (!colorSpace) {\n info('JPX images (which do not require color spaces)');\n switch (image.numComps) {\n case 1:\n colorSpace = Name.get('DeviceGray');\n break;\n case 3:\n colorSpace = Name.get('DeviceRGB');\n break;\n case 4:\n colorSpace = Name.get('DeviceCMYK');\n break;\n default:\n throw new Error(`JPX images with ${this.numComps} ` +\n 'color components not supported.');\n }\n }\n this.colorSpace = ColorSpace.parse(colorSpace, xref, res);\n this.numComps = this.colorSpace.numComps;\n }\n\n this.decode = dict.getArray('Decode', 'D');\n this.needsDecode = false;\n if (this.decode &&\n ((this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode)) ||\n (isMask && !ColorSpace.isDefaultDecode(this.decode, 1)))) {\n this.needsDecode = true;\n // Do some preprocessing to avoid more math.\n var max = (1 << bitsPerComponent) - 1;\n this.decodeCoefficients = [];\n this.decodeAddends = [];\n for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {\n var dmin = this.decode[i];\n var dmax = this.decode[i + 1];\n this.decodeCoefficients[j] = dmax - dmin;\n this.decodeAddends[j] = max * dmin;\n }\n }\n\n if (smask) {\n this.smask = new PDFImage(xref, res, smask, false);\n } else if (mask) {\n if (isStream(mask)) {\n var maskDict = mask.dict, imageMask = maskDict.get('ImageMask', 'IM');\n if (!imageMask) {\n warn('Ignoring /Mask in image without /ImageMask.');\n } else {\n this.mask = new PDFImage(xref, res, mask, false, null, null, true);\n }\n } else {\n // Color key mask (just an array).\n this.mask = mask;\n }\n }\n }\n /**\n * Handles processing of image data and returns the Promise that is resolved\n * with a PDFImage when the image is ready to be used.\n */\n PDFImage.buildImage = function PDFImage_buildImage(handler, xref,\n res, image, inline,\n nativeDecoder) {\n var imagePromise = handleImageData(image, nativeDecoder);\n var smaskPromise;\n var maskPromise;\n\n var smask = image.dict.get('SMask');\n var mask = image.dict.get('Mask');\n\n if (smask) {\n smaskPromise = handleImageData(smask, nativeDecoder);\n maskPromise = Promise.resolve(null);\n } else {\n smaskPromise = Promise.resolve(null);\n if (mask) {\n if (isStream(mask)) {\n maskPromise = handleImageData(mask, nativeDecoder);\n } else if (isArray(mask)) {\n maskPromise = Promise.resolve(mask);\n } else {\n warn('Unsupported mask format.');\n maskPromise = Promise.resolve(null);\n }\n } else {\n maskPromise = Promise.resolve(null);\n }\n }\n return Promise.all([imagePromise, smaskPromise, maskPromise]).then(\n function(results) {\n var imageData = results[0];\n var smaskData = results[1];\n var maskData = results[2];\n return new PDFImage(xref, res, imageData, inline, smaskData, maskData);\n });\n };\n\n PDFImage.createMask =\n function PDFImage_createMask(imgArray, width, height,\n imageIsFromDecodeStream, inverseDecode) {\n\n // |imgArray| might not contain full data for every pixel of the mask, so\n // we need to distinguish between |computedLength| and |actualLength|.\n // In particular, if inverseDecode is true, then the array we return must\n // have a length of |computedLength|.\n\n var computedLength = ((width + 7) >> 3) * height;\n var actualLength = imgArray.byteLength;\n var haveFullData = computedLength === actualLength;\n var data, i;\n\n if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {\n // imgArray came from a DecodeStream and its data is in an appropriate\n // form, so we can just transfer it.\n data = imgArray;\n } else if (!inverseDecode) {\n data = new Uint8Array(actualLength);\n data.set(imgArray);\n } else {\n data = new Uint8Array(computedLength);\n data.set(imgArray);\n for (i = actualLength; i < computedLength; i++) {\n data[i] = 0xff;\n }\n }\n\n // If necessary, invert the original mask data (but not any extra we might\n // have added above). It's safe to modify the array -- whether it's the\n // original or a copy, we're about to transfer it anyway, so nothing else\n // in this thread can be relying on its contents.\n if (inverseDecode) {\n for (i = 0; i < actualLength; i++) {\n data[i] = ~data[i];\n }\n }\n\n return { data, width, height, };\n };\n\n PDFImage.prototype = {\n get drawWidth() {\n return Math.max(this.width,\n this.smask && this.smask.width || 0,\n this.mask && this.mask.width || 0);\n },\n\n get drawHeight() {\n return Math.max(this.height,\n this.smask && this.smask.height || 0,\n this.mask && this.mask.height || 0);\n },\n\n decodeBuffer: function PDFImage_decodeBuffer(buffer) {\n var bpc = this.bpc;\n var numComps = this.numComps;\n\n var decodeAddends = this.decodeAddends;\n var decodeCoefficients = this.decodeCoefficients;\n var max = (1 << bpc) - 1;\n var i, ii;\n\n if (bpc === 1) {\n // If the buffer needed decode that means it just needs to be inverted.\n for (i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = +!(buffer[i]);\n }\n return;\n }\n var index = 0;\n for (i = 0, ii = this.width * this.height; i < ii; i++) {\n for (var j = 0; j < numComps; j++) {\n buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j],\n decodeCoefficients[j], max);\n index++;\n }\n }\n },\n\n getComponents: function PDFImage_getComponents(buffer) {\n var bpc = this.bpc;\n\n // This image doesn't require any extra work.\n if (bpc === 8) {\n return buffer;\n }\n\n var width = this.width;\n var height = this.height;\n var numComps = this.numComps;\n\n var length = width * height * numComps;\n var bufferPos = 0;\n var output = (bpc <= 8 ? new Uint8Array(length) :\n (bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length)));\n var rowComps = width * numComps;\n\n var max = (1 << bpc) - 1;\n var i = 0, ii, buf;\n\n if (bpc === 1) {\n // Optimization for reading 1 bpc images.\n var mask, loop1End, loop2End;\n for (var j = 0; j < height; j++) {\n loop1End = i + (rowComps & ~7);\n loop2End = i + rowComps;\n\n // unroll loop for all full bytes\n while (i < loop1End) {\n buf = buffer[bufferPos++];\n output[i] = (buf >> 7) & 1;\n output[i + 1] = (buf >> 6) & 1;\n output[i + 2] = (buf >> 5) & 1;\n output[i + 3] = (buf >> 4) & 1;\n output[i + 4] = (buf >> 3) & 1;\n output[i + 5] = (buf >> 2) & 1;\n output[i + 6] = (buf >> 1) & 1;\n output[i + 7] = buf & 1;\n i += 8;\n }\n\n // handle remaining bits\n if (i < loop2End) {\n buf = buffer[bufferPos++];\n mask = 128;\n while (i < loop2End) {\n output[i++] = +!!(buf & mask);\n mask >>= 1;\n }\n }\n }\n } else {\n // The general case that handles all other bpc values.\n var bits = 0;\n buf = 0;\n for (i = 0, ii = length; i < ii; ++i) {\n if (i % rowComps === 0) {\n buf = 0;\n bits = 0;\n }\n\n while (bits < bpc) {\n buf = (buf << 8) | buffer[bufferPos++];\n bits += 8;\n }\n\n var remainingBits = bits - bpc;\n var value = buf >> remainingBits;\n output[i] = (value < 0 ? 0 : (value > max ? max : value));\n buf = buf & ((1 << remainingBits) - 1);\n bits = remainingBits;\n }\n }\n return output;\n },\n\n fillOpacity: function PDFImage_fillOpacity(rgbaBuf, width, height,\n actualHeight, image) {\n var smask = this.smask;\n var mask = this.mask;\n var alphaBuf, sw, sh, i, ii, j;\n\n if (smask) {\n sw = smask.width;\n sh = smask.height;\n alphaBuf = new Uint8Array(sw * sh);\n smask.fillGrayBuffer(alphaBuf);\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh,\n width, height);\n }\n } else if (mask) {\n if (mask instanceof PDFImage) {\n sw = mask.width;\n sh = mask.height;\n alphaBuf = new Uint8Array(sw * sh);\n mask.numComps = 1;\n mask.fillGrayBuffer(alphaBuf);\n\n // Need to invert values in rgbaBuf\n for (i = 0, ii = sw * sh; i < ii; ++i) {\n alphaBuf[i] = 255 - alphaBuf[i];\n }\n\n if (sw !== width || sh !== height) {\n alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh,\n width, height);\n }\n } else if (isArray(mask)) {\n // Color key mask: if any of the components are outside the range\n // then they should be painted.\n alphaBuf = new Uint8Array(width * height);\n var numComps = this.numComps;\n for (i = 0, ii = width * height; i < ii; ++i) {\n var opacity = 0;\n var imageOffset = i * numComps;\n for (j = 0; j < numComps; ++j) {\n var color = image[imageOffset + j];\n var maskOffset = j * 2;\n if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {\n opacity = 255;\n break;\n }\n }\n alphaBuf[i] = opacity;\n }\n } else {\n throw new FormatError('Unknown mask format.');\n }\n }\n\n if (alphaBuf) {\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = alphaBuf[i];\n }\n } else {\n // No mask.\n for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {\n rgbaBuf[j] = 255;\n }\n }\n },\n\n undoPreblend: function PDFImage_undoPreblend(buffer, width, height) {\n var matte = this.smask && this.smask.matte;\n if (!matte) {\n return;\n }\n var matteRgb = this.colorSpace.getRgb(matte, 0);\n var matteR = matteRgb[0];\n var matteG = matteRgb[1];\n var matteB = matteRgb[2];\n var length = width * height * 4;\n var r, g, b;\n for (var i = 0; i < length; i += 4) {\n var alpha = buffer[i + 3];\n if (alpha === 0) {\n // according formula we have to get Infinity in all components\n // making it white (typical paper color) should be okay\n buffer[i] = 255;\n buffer[i + 1] = 255;\n buffer[i + 2] = 255;\n continue;\n }\n var k = 255 / alpha;\n r = (buffer[i] - matteR) * k + matteR;\n g = (buffer[i + 1] - matteG) * k + matteG;\n b = (buffer[i + 2] - matteB) * k + matteB;\n buffer[i] = r <= 0 ? 0 : r >= 255 ? 255 : r | 0;\n buffer[i + 1] = g <= 0 ? 0 : g >= 255 ? 255 : g | 0;\n buffer[i + 2] = b <= 0 ? 0 : b >= 255 ? 255 : b | 0;\n }\n },\n\n createImageData: function PDFImage_createImageData(forceRGBA) {\n var drawWidth = this.drawWidth;\n var drawHeight = this.drawHeight;\n var imgData = { // other fields are filled in below\n width: drawWidth,\n height: drawHeight,\n };\n\n var numComps = this.numComps;\n var originalWidth = this.width;\n var originalHeight = this.height;\n var bpc = this.bpc;\n\n // Rows start at byte boundary.\n var rowBytes = (originalWidth * numComps * bpc + 7) >> 3;\n var imgArray;\n\n if (!forceRGBA) {\n // If it is a 1-bit-per-pixel grayscale (i.e. black-and-white) image\n // without any complications, we pass a same-sized copy to the main\n // thread rather than expanding by 32x to RGBA form. This saves *lots*\n // of memory for many scanned documents. It's also much faster.\n //\n // Similarly, if it is a 24-bit-per pixel RGB image without any\n // complications, we avoid expanding by 1.333x to RGBA form.\n var kind;\n if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {\n kind = ImageKind.GRAYSCALE_1BPP;\n } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 &&\n !this.needsDecode) {\n kind = ImageKind.RGB_24BPP;\n }\n if (kind && !this.smask && !this.mask &&\n drawWidth === originalWidth && drawHeight === originalHeight) {\n imgData.kind = kind;\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // If imgArray came from a DecodeStream, we're safe to transfer it\n // (and thus detach its underlying buffer) because it will constitute\n // the entire DecodeStream's data. But if it came from a Stream, we\n // need to copy it because it'll only be a portion of the Stream's\n // data, and the rest will be read later on.\n if (this.image instanceof DecodeStream) {\n imgData.data = imgArray;\n } else {\n var newArray = new Uint8Array(imgArray.length);\n newArray.set(imgArray);\n imgData.data = newArray;\n }\n if (this.needsDecode) {\n // Invert the buffer (which must be grayscale if we reached here).\n assert(kind === ImageKind.GRAYSCALE_1BPP);\n var buffer = imgData.data;\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] ^= 0xff;\n }\n }\n return imgData;\n }\n if (this.image instanceof JpegStream && !this.smask && !this.mask &&\n (this.colorSpace.name === 'DeviceGray' ||\n this.colorSpace.name === 'DeviceRGB' ||\n this.colorSpace.name === 'DeviceCMYK')) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = this.getImageBytes(originalHeight * rowBytes,\n drawWidth, drawHeight, true);\n return imgData;\n }\n }\n\n imgArray = this.getImageBytes(originalHeight * rowBytes);\n // imgArray can be incomplete (e.g. after CCITT fax encoding).\n var actualHeight = 0 | (imgArray.length / rowBytes *\n drawHeight / originalHeight);\n\n var comps = this.getComponents(imgArray);\n\n // If opacity data is present, use RGBA_32BPP form. Otherwise, use the\n // more compact RGB_24BPP form if allowable.\n var alpha01, maybeUndoPreblend;\n if (!forceRGBA && !this.smask && !this.mask) {\n imgData.kind = ImageKind.RGB_24BPP;\n imgData.data = new Uint8Array(drawWidth * drawHeight * 3);\n alpha01 = 0;\n maybeUndoPreblend = false;\n } else {\n imgData.kind = ImageKind.RGBA_32BPP;\n imgData.data = new Uint8Array(drawWidth * drawHeight * 4);\n alpha01 = 1;\n maybeUndoPreblend = true;\n\n // Color key masking (opacity) must be performed before decoding.\n this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight,\n comps);\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight,\n drawWidth, drawHeight, actualHeight, bpc, comps,\n alpha01);\n if (maybeUndoPreblend) {\n this.undoPreblend(imgData.data, drawWidth, actualHeight);\n }\n\n return imgData;\n },\n\n fillGrayBuffer: function PDFImage_fillGrayBuffer(buffer) {\n var numComps = this.numComps;\n if (numComps !== 1) {\n throw new FormatError(\n `Reading gray scale from a color image: ${numComps}`);\n }\n\n var width = this.width;\n var height = this.height;\n var bpc = this.bpc;\n\n // rows start at byte boundary\n var rowBytes = (width * numComps * bpc + 7) >> 3;\n var imgArray = this.getImageBytes(height * rowBytes);\n\n var comps = this.getComponents(imgArray);\n var i, length;\n\n if (bpc === 1) {\n // inline decoding (= inversion) for 1 bpc images\n length = width * height;\n if (this.needsDecode) {\n // invert and scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (comps[i] - 1) & 255;\n }\n } else {\n // scale to {0, 255}\n for (i = 0; i < length; ++i) {\n buffer[i] = (-comps[i]) & 255;\n }\n }\n return;\n }\n\n if (this.needsDecode) {\n this.decodeBuffer(comps);\n }\n length = width * height;\n // we aren't using a colorspace so we need to scale the value\n var scale = 255 / ((1 << bpc) - 1);\n for (i = 0; i < length; ++i) {\n buffer[i] = (scale * comps[i]) | 0;\n }\n },\n\n getImageBytes: function PDFImage_getImageBytes(length,\n drawWidth, drawHeight,\n forceRGB) {\n this.image.reset();\n this.image.drawWidth = drawWidth || this.width;\n this.image.drawHeight = drawHeight || this.height;\n this.image.forceRGB = !!forceRGB;\n return this.image.getBytes(length);\n },\n };\n return PDFImage;\n})();\n\nexport {\n PDFImage,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/image.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n log2, readInt8, readUint16, readUint32, shadow\n} from '../shared/util';\nimport { ArithmeticDecoder } from './arithmetic_decoder';\n\nlet Jbig2Error = (function Jbig2ErrorClosure() {\n function Jbig2Error(msg) {\n this.message = 'JBIG2 error: ' + msg;\n }\n\n Jbig2Error.prototype = new Error();\n Jbig2Error.prototype.name = 'Jbig2Error';\n Jbig2Error.constructor = Jbig2Error;\n\n return Jbig2Error;\n})();\n\nvar Jbig2Image = (function Jbig2ImageClosure() {\n // Utility data structures\n function ContextCache() {}\n\n ContextCache.prototype = {\n getContexts(id) {\n if (id in this) {\n return this[id];\n }\n return (this[id] = new Int8Array(1 << 16));\n },\n };\n\n function DecodingContext(data, start, end) {\n this.data = data;\n this.start = start;\n this.end = end;\n }\n\n DecodingContext.prototype = {\n get decoder() {\n var decoder = new ArithmeticDecoder(this.data, this.start, this.end);\n return shadow(this, 'decoder', decoder);\n },\n get contextCache() {\n var cache = new ContextCache();\n return shadow(this, 'contextCache', cache);\n },\n };\n\n // Annex A. Arithmetic Integer Decoding Procedure\n // A.2 Procedure for decoding values\n function decodeInteger(contextCache, procedure, decoder) {\n var contexts = contextCache.getContexts(procedure);\n var prev = 1;\n\n function readBits(length) {\n var v = 0;\n for (var i = 0; i < length; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = (prev < 256 ? (prev << 1) | bit :\n (((prev << 1) | bit) & 511) | 256);\n v = (v << 1) | bit;\n }\n return v >>> 0;\n }\n\n var sign = readBits(1);\n var value = readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(1) ?\n (readBits(32) + 4436) :\n readBits(12) + 340) :\n readBits(8) + 84) :\n readBits(6) + 20) :\n readBits(4) + 4) :\n readBits(2);\n return (sign === 0 ? value : (value > 0 ? -value : null));\n }\n\n // A.3 The IAID decoding procedure\n function decodeIAID(contextCache, decoder, codeLength) {\n var contexts = contextCache.getContexts('IAID');\n\n var prev = 1;\n for (var i = 0; i < codeLength; i++) {\n var bit = decoder.readBit(contexts, prev);\n prev = (prev << 1) | bit;\n }\n if (codeLength < 31) {\n return prev & ((1 << codeLength) - 1);\n }\n return prev & 0x7FFFFFFF;\n }\n\n // 7.3 Segment types\n var SegmentTypes = [\n 'SymbolDictionary', null, null, null, 'IntermediateTextRegion', null,\n 'ImmediateTextRegion', 'ImmediateLosslessTextRegion', null, null, null,\n null, null, null, null, null, 'patternDictionary', null, null, null,\n 'IntermediateHalftoneRegion', null, 'ImmediateHalftoneRegion',\n 'ImmediateLosslessHalftoneRegion', null, null, null, null, null, null, null,\n null, null, null, null, null, 'IntermediateGenericRegion', null,\n 'ImmediateGenericRegion', 'ImmediateLosslessGenericRegion',\n 'IntermediateGenericRefinementRegion', null,\n 'ImmediateGenericRefinementRegion',\n 'ImmediateLosslessGenericRefinementRegion', null, null, null, null,\n 'PageInformation', 'EndOfPage', 'EndOfStripe', 'EndOfFile', 'Profiles',\n 'Tables', null, null, null, null, null, null, null, null,\n 'Extension'\n ];\n\n var CodingTemplates = [\n [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: -2, y: -1, },\n { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, }, { x: 2, y: -1, },\n { x: -4, y: 0, }, { x: -3, y: 0, }, { x: -2, y: 0, }, { x: -1, y: 0, }],\n [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: 2, y: -2, },\n { x: -2, y: -1, }, { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, },\n { x: 2, y: -1, }, { x: -3, y: 0, }, { x: -2, y: 0, }, { x: -1, y: 0, }],\n [{ x: -1, y: -2, }, { x: 0, y: -2, }, { x: 1, y: -2, }, { x: -2, y: -1, },\n { x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, }, { x: -2, y: 0, },\n { x: -1, y: 0, }],\n [{ x: -3, y: -1, }, { x: -2, y: -1, }, { x: -1, y: -1, }, { x: 0, y: -1, },\n { x: 1, y: -1, }, { x: -4, y: 0, }, { x: -3, y: 0, }, { x: -2, y: 0, },\n { x: -1, y: 0, }]\n ];\n\n var RefinementTemplates = [\n {\n coding: [{ x: 0, y: -1, }, { x: 1, y: -1, }, { x: -1, y: 0, }],\n reference: [{ x: 0, y: -1, }, { x: 1, y: -1, }, { x: -1, y: 0, },\n { x: 0, y: 0, }, { x: 1, y: 0, }, { x: -1, y: 1, },\n { x: 0, y: 1, }, { x: 1, y: 1, }],\n },\n {\n coding: [{ x: -1, y: -1, }, { x: 0, y: -1, }, { x: 1, y: -1, },\n { x: -1, y: 0, }],\n reference: [{ x: 0, y: -1, }, { x: -1, y: 0, }, { x: 0, y: 0, },\n { x: 1, y: 0, }, { x: 0, y: 1, }, { x: 1, y: 1, }],\n }\n ];\n\n // See 6.2.5.7 Decoding the bitmap.\n var ReusedContexts = [\n 0x9B25, // 10011 0110010 0101\n 0x0795, // 0011 110010 101\n 0x00E5, // 001 11001 01\n 0x0195 // 011001 0101\n ];\n\n var RefinementReusedContexts = [\n 0x0020, // '000' + '0' (coding) + '00010000' + '0' (reference)\n 0x0008 // '0000' + '001000'\n ];\n\n function decodeBitmapTemplate0(width, height, decodingContext) {\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts('GB');\n var contextLabel, i, j, pixel, row, row1, row2, bitmap = [];\n\n // ...ooooo....\n // ..ooooooo... Context template for current pixel (X)\n // .ooooX...... (concatenate values of 'o'-pixels to get contextLabel)\n var OLD_PIXEL_MASK = 0x7BF7; // 01111 0111111 0111\n\n for (i = 0; i < height; i++) {\n row = bitmap[i] = new Uint8Array(width);\n row1 = (i < 1) ? row : bitmap[i - 1];\n row2 = (i < 2) ? row : bitmap[i - 2];\n\n // At the beginning of each row:\n // Fill contextLabel with pixels that are above/right of (X)\n contextLabel = (row2[0] << 13) | (row2[1] << 12) | (row2[2] << 11) |\n (row1[0] << 7) | (row1[1] << 6) | (row1[2] << 5) |\n (row1[3] << 4);\n\n for (j = 0; j < width; j++) {\n row[j] = pixel = decoder.readBit(contexts, contextLabel);\n\n // At each pixel: Clear contextLabel pixels that are shifted\n // out of the context, then add new ones.\n contextLabel = ((contextLabel & OLD_PIXEL_MASK) << 1) |\n (j + 3 < width ? row2[j + 3] << 11 : 0) |\n (j + 4 < width ? row1[j + 4] << 4 : 0) | pixel;\n }\n }\n\n return bitmap;\n }\n\n // 6.2 Generic Region Decoding Procedure\n function decodeBitmap(mmr, width, height, templateIndex, prediction, skip, at,\n decodingContext) {\n if (mmr) {\n throw new Jbig2Error('MMR encoding is not supported');\n }\n\n // Use optimized version for the most common case\n if (templateIndex === 0 && !skip && !prediction && at.length === 4 &&\n at[0].x === 3 && at[0].y === -1 && at[1].x === -3 && at[1].y === -1 &&\n at[2].x === 2 && at[2].y === -2 && at[3].x === -2 && at[3].y === -2) {\n return decodeBitmapTemplate0(width, height, decodingContext);\n }\n\n var useskip = !!skip;\n var template = CodingTemplates[templateIndex].concat(at);\n\n // Sorting is non-standard, and it is not required. But sorting increases\n // the number of template bits that can be reused from the previous\n // contextLabel in the main loop.\n template.sort(function (a, b) {\n return (a.y - b.y) || (a.x - b.x);\n });\n\n var templateLength = template.length;\n var templateX = new Int8Array(templateLength);\n var templateY = new Int8Array(templateLength);\n var changingTemplateEntries = [];\n var reuseMask = 0, minX = 0, maxX = 0, minY = 0;\n var c, k;\n\n for (k = 0; k < templateLength; k++) {\n templateX[k] = template[k].x;\n templateY[k] = template[k].y;\n minX = Math.min(minX, template[k].x);\n maxX = Math.max(maxX, template[k].x);\n minY = Math.min(minY, template[k].y);\n // Check if the template pixel appears in two consecutive context labels,\n // so it can be reused. Otherwise, we add it to the list of changing\n // template entries.\n if (k < templateLength - 1 &&\n template[k].y === template[k + 1].y &&\n template[k].x === template[k + 1].x - 1) {\n reuseMask |= 1 << (templateLength - 1 - k);\n } else {\n changingTemplateEntries.push(k);\n }\n }\n var changingEntriesLength = changingTemplateEntries.length;\n\n var changingTemplateX = new Int8Array(changingEntriesLength);\n var changingTemplateY = new Int8Array(changingEntriesLength);\n var changingTemplateBit = new Uint16Array(changingEntriesLength);\n for (c = 0; c < changingEntriesLength; c++) {\n k = changingTemplateEntries[c];\n changingTemplateX[c] = template[k].x;\n changingTemplateY[c] = template[k].y;\n changingTemplateBit[c] = 1 << (templateLength - 1 - k);\n }\n\n // Get the safe bounding box edges from the width, height, minX, maxX, minY\n var sbb_left = -minX;\n var sbb_top = -minY;\n var sbb_right = width - maxX;\n\n var pseudoPixelContext = ReusedContexts[templateIndex];\n var row = new Uint8Array(width);\n var bitmap = [];\n\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts('GB');\n\n var ltp = 0, j, i0, j0, contextLabel = 0, bit, shift;\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n bitmap.push(row); // duplicate previous row\n continue;\n }\n }\n row = new Uint8Array(row);\n bitmap.push(row);\n for (j = 0; j < width; j++) {\n if (useskip && skip[i][j]) {\n row[j] = 0;\n continue;\n }\n // Are we in the middle of a scanline, so we can reuse contextLabel\n // bits?\n if (j >= sbb_left && j < sbb_right && i >= sbb_top) {\n // If yes, we can just shift the bits that are reusable and only\n // fetch the remaining ones.\n contextLabel = (contextLabel << 1) & reuseMask;\n for (k = 0; k < changingEntriesLength; k++) {\n i0 = i + changingTemplateY[k];\n j0 = j + changingTemplateX[k];\n bit = bitmap[i0][j0];\n if (bit) {\n bit = changingTemplateBit[k];\n contextLabel |= bit;\n }\n }\n } else {\n // compute the contextLabel from scratch\n contextLabel = 0;\n shift = templateLength - 1;\n for (k = 0; k < templateLength; k++, shift--) {\n j0 = j + templateX[k];\n if (j0 >= 0 && j0 < width) {\n i0 = i + templateY[k];\n if (i0 >= 0) {\n bit = bitmap[i0][j0];\n if (bit) {\n contextLabel |= bit << shift;\n }\n }\n }\n }\n }\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n return bitmap;\n }\n\n // 6.3.2 Generic Refinement Region Decoding Procedure\n function decodeRefinement(width, height, templateIndex, referenceBitmap,\n offsetX, offsetY, prediction, at,\n decodingContext) {\n var codingTemplate = RefinementTemplates[templateIndex].coding;\n if (templateIndex === 0) {\n codingTemplate = codingTemplate.concat([at[0]]);\n }\n var codingTemplateLength = codingTemplate.length;\n var codingTemplateX = new Int32Array(codingTemplateLength);\n var codingTemplateY = new Int32Array(codingTemplateLength);\n var k;\n for (k = 0; k < codingTemplateLength; k++) {\n codingTemplateX[k] = codingTemplate[k].x;\n codingTemplateY[k] = codingTemplate[k].y;\n }\n\n var referenceTemplate = RefinementTemplates[templateIndex].reference;\n if (templateIndex === 0) {\n referenceTemplate = referenceTemplate.concat([at[1]]);\n }\n var referenceTemplateLength = referenceTemplate.length;\n var referenceTemplateX = new Int32Array(referenceTemplateLength);\n var referenceTemplateY = new Int32Array(referenceTemplateLength);\n for (k = 0; k < referenceTemplateLength; k++) {\n referenceTemplateX[k] = referenceTemplate[k].x;\n referenceTemplateY[k] = referenceTemplate[k].y;\n }\n var referenceWidth = referenceBitmap[0].length;\n var referenceHeight = referenceBitmap.length;\n\n var pseudoPixelContext = RefinementReusedContexts[templateIndex];\n var bitmap = [];\n\n var decoder = decodingContext.decoder;\n var contexts = decodingContext.contextCache.getContexts('GR');\n\n var ltp = 0;\n for (var i = 0; i < height; i++) {\n if (prediction) {\n var sltp = decoder.readBit(contexts, pseudoPixelContext);\n ltp ^= sltp;\n if (ltp) {\n throw new Jbig2Error('prediction is not supported');\n }\n }\n var row = new Uint8Array(width);\n bitmap.push(row);\n for (var j = 0; j < width; j++) {\n var i0, j0;\n var contextLabel = 0;\n for (k = 0; k < codingTemplateLength; k++) {\n i0 = i + codingTemplateY[k];\n j0 = j + codingTemplateX[k];\n if (i0 < 0 || j0 < 0 || j0 >= width) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | bitmap[i0][j0];\n }\n }\n for (k = 0; k < referenceTemplateLength; k++) {\n i0 = i + referenceTemplateY[k] - offsetY;\n j0 = j + referenceTemplateX[k] - offsetX;\n if (i0 < 0 || i0 >= referenceHeight || j0 < 0 ||\n j0 >= referenceWidth) {\n contextLabel <<= 1; // out of bound pixel\n } else {\n contextLabel = (contextLabel << 1) | referenceBitmap[i0][j0];\n }\n }\n var pixel = decoder.readBit(contexts, contextLabel);\n row[j] = pixel;\n }\n }\n\n return bitmap;\n }\n\n // 6.5.5 Decoding the symbol dictionary\n function decodeSymbolDictionary(huffman, refinement, symbols,\n numberOfNewSymbols, numberOfExportedSymbols,\n huffmanTables, templateIndex, at,\n refinementTemplateIndex, refinementAt,\n decodingContext) {\n if (huffman) {\n throw new Jbig2Error('huffman is not supported');\n }\n\n var newSymbols = [];\n var currentHeight = 0;\n var symbolCodeLength = log2(symbols.length + numberOfNewSymbols);\n\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n\n while (newSymbols.length < numberOfNewSymbols) {\n var deltaHeight = decodeInteger(contextCache, 'IADH', decoder); // 6.5.6\n currentHeight += deltaHeight;\n var currentWidth = 0;\n while (true) {\n var deltaWidth = decodeInteger(contextCache, 'IADW', decoder); // 6.5.7\n if (deltaWidth === null) {\n break; // OOB\n }\n currentWidth += deltaWidth;\n var bitmap;\n if (refinement) {\n // 6.5.8.2 Refinement/aggregate-coded symbol bitmap\n var numberOfInstances = decodeInteger(contextCache, 'IAAI', decoder);\n if (numberOfInstances > 1) {\n bitmap = decodeTextRegion(huffman, refinement,\n currentWidth, currentHeight, 0,\n numberOfInstances, 1, // strip size\n symbols.concat(newSymbols),\n symbolCodeLength,\n 0, // transposed\n 0, // ds offset\n 1, // top left 7.4.3.1.1\n 0, // OR operator\n huffmanTables,\n refinementTemplateIndex, refinementAt,\n decodingContext);\n } else {\n var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3\n var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4\n var symbol = (symbolId < symbols.length ? symbols[symbolId] :\n newSymbols[symbolId - symbols.length]);\n bitmap = decodeRefinement(currentWidth, currentHeight,\n refinementTemplateIndex, symbol, rdx, rdy, false, refinementAt,\n decodingContext);\n }\n } else {\n // 6.5.8.1 Direct-coded symbol bitmap\n bitmap = decodeBitmap(false, currentWidth, currentHeight,\n templateIndex, false, null, at, decodingContext);\n }\n newSymbols.push(bitmap);\n }\n }\n // 6.5.10 Exported symbols\n var exportedSymbols = [];\n var flags = [], currentFlag = false;\n var totalSymbolsLength = symbols.length + numberOfNewSymbols;\n while (flags.length < totalSymbolsLength) {\n var runLength = decodeInteger(contextCache, 'IAEX', decoder);\n while (runLength--) {\n flags.push(currentFlag);\n }\n currentFlag = !currentFlag;\n }\n for (var i = 0, ii = symbols.length; i < ii; i++) {\n if (flags[i]) {\n exportedSymbols.push(symbols[i]);\n }\n }\n for (var j = 0; j < numberOfNewSymbols; i++, j++) {\n if (flags[i]) {\n exportedSymbols.push(newSymbols[j]);\n }\n }\n return exportedSymbols;\n }\n\n function decodeTextRegion(huffman, refinement, width, height,\n defaultPixelValue, numberOfSymbolInstances,\n stripSize, inputSymbols, symbolCodeLength,\n transposed, dsOffset, referenceCorner,\n combinationOperator, huffmanTables,\n refinementTemplateIndex, refinementAt,\n decodingContext) {\n if (huffman) {\n throw new Jbig2Error('huffman is not supported');\n }\n\n // Prepare bitmap\n var bitmap = [];\n var i, row;\n for (i = 0; i < height; i++) {\n row = new Uint8Array(width);\n if (defaultPixelValue) {\n for (var j = 0; j < width; j++) {\n row[j] = defaultPixelValue;\n }\n }\n bitmap.push(row);\n }\n\n var decoder = decodingContext.decoder;\n var contextCache = decodingContext.contextCache;\n var stripT = -decodeInteger(contextCache, 'IADT', decoder); // 6.4.6\n var firstS = 0;\n i = 0;\n while (i < numberOfSymbolInstances) {\n var deltaT = decodeInteger(contextCache, 'IADT', decoder); // 6.4.6\n stripT += deltaT;\n\n var deltaFirstS = decodeInteger(contextCache, 'IAFS', decoder); // 6.4.7\n firstS += deltaFirstS;\n var currentS = firstS;\n do {\n var currentT = (stripSize === 1 ? 0 :\n decodeInteger(contextCache, 'IAIT', decoder)); // 6.4.9\n var t = stripSize * stripT + currentT;\n var symbolId = decodeIAID(contextCache, decoder, symbolCodeLength);\n var applyRefinement = (refinement &&\n decodeInteger(contextCache, 'IARI', decoder));\n var symbolBitmap = inputSymbols[symbolId];\n var symbolWidth = symbolBitmap[0].length;\n var symbolHeight = symbolBitmap.length;\n if (applyRefinement) {\n var rdw = decodeInteger(contextCache, 'IARDW', decoder); // 6.4.11.1\n var rdh = decodeInteger(contextCache, 'IARDH', decoder); // 6.4.11.2\n var rdx = decodeInteger(contextCache, 'IARDX', decoder); // 6.4.11.3\n var rdy = decodeInteger(contextCache, 'IARDY', decoder); // 6.4.11.4\n symbolWidth += rdw;\n symbolHeight += rdh;\n symbolBitmap = decodeRefinement(symbolWidth, symbolHeight,\n refinementTemplateIndex, symbolBitmap, (rdw >> 1) + rdx,\n (rdh >> 1) + rdy, false, refinementAt,\n decodingContext);\n }\n var offsetT = t - ((referenceCorner & 1) ? 0 : symbolHeight);\n var offsetS = currentS - ((referenceCorner & 2) ? symbolWidth : 0);\n var s2, t2, symbolRow;\n if (transposed) {\n // Place Symbol Bitmap from T1,S1\n for (s2 = 0; s2 < symbolHeight; s2++) {\n row = bitmap[offsetS + s2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[s2];\n // To ignore Parts of Symbol bitmap which goes\n // outside bitmap region\n var maxWidth = Math.min(width - offsetT, symbolWidth);\n switch (combinationOperator) {\n case 0: // OR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] |= symbolRow[t2];\n }\n break;\n case 2: // XOR\n for (t2 = 0; t2 < maxWidth; t2++) {\n row[offsetT + t2] ^= symbolRow[t2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`);\n }\n }\n currentS += symbolHeight - 1;\n } else {\n for (t2 = 0; t2 < symbolHeight; t2++) {\n row = bitmap[offsetT + t2];\n if (!row) {\n continue;\n }\n symbolRow = symbolBitmap[t2];\n switch (combinationOperator) {\n case 0: // OR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] |= symbolRow[s2];\n }\n break;\n case 2: // XOR\n for (s2 = 0; s2 < symbolWidth; s2++) {\n row[offsetS + s2] ^= symbolRow[s2];\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`);\n }\n }\n currentS += symbolWidth - 1;\n }\n i++;\n var deltaS = decodeInteger(contextCache, 'IADS', decoder); // 6.4.8\n if (deltaS === null) {\n break; // OOB\n }\n currentS += deltaS + dsOffset;\n } while (true);\n }\n return bitmap;\n }\n\n function readSegmentHeader(data, start) {\n var segmentHeader = {};\n segmentHeader.number = readUint32(data, start);\n var flags = data[start + 4];\n var segmentType = flags & 0x3F;\n if (!SegmentTypes[segmentType]) {\n throw new Jbig2Error('invalid segment type: ' + segmentType);\n }\n segmentHeader.type = segmentType;\n segmentHeader.typeName = SegmentTypes[segmentType];\n segmentHeader.deferredNonRetain = !!(flags & 0x80);\n\n var pageAssociationFieldSize = !!(flags & 0x40);\n var referredFlags = data[start + 5];\n var referredToCount = (referredFlags >> 5) & 7;\n var retainBits = [referredFlags & 31];\n var position = start + 6;\n if (referredFlags === 7) {\n referredToCount = readUint32(data, position - 1) & 0x1FFFFFFF;\n position += 3;\n var bytes = (referredToCount + 7) >> 3;\n retainBits[0] = data[position++];\n while (--bytes > 0) {\n retainBits.push(data[position++]);\n }\n } else if (referredFlags === 5 || referredFlags === 6) {\n throw new Jbig2Error('invalid referred-to flags');\n }\n\n segmentHeader.retainBits = retainBits;\n var referredToSegmentNumberSize = (segmentHeader.number <= 256 ? 1 :\n (segmentHeader.number <= 65536 ? 2 : 4));\n var referredTo = [];\n var i, ii;\n for (i = 0; i < referredToCount; i++) {\n var number = (referredToSegmentNumberSize === 1 ? data[position] :\n (referredToSegmentNumberSize === 2 ? readUint16(data, position) :\n readUint32(data, position)));\n referredTo.push(number);\n position += referredToSegmentNumberSize;\n }\n segmentHeader.referredTo = referredTo;\n if (!pageAssociationFieldSize) {\n segmentHeader.pageAssociation = data[position++];\n } else {\n segmentHeader.pageAssociation = readUint32(data, position);\n position += 4;\n }\n segmentHeader.length = readUint32(data, position);\n position += 4;\n\n if (segmentHeader.length === 0xFFFFFFFF) {\n // 7.2.7 Segment data length, unknown segment length\n if (segmentType === 38) { // ImmediateGenericRegion\n var genericRegionInfo = readRegionSegmentInformation(data, position);\n var genericRegionSegmentFlags = data[position +\n RegionSegmentInformationFieldLength];\n var genericRegionMmr = !!(genericRegionSegmentFlags & 1);\n // searching for the segment end\n var searchPatternLength = 6;\n var searchPattern = new Uint8Array(searchPatternLength);\n if (!genericRegionMmr) {\n searchPattern[0] = 0xFF;\n searchPattern[1] = 0xAC;\n }\n searchPattern[2] = (genericRegionInfo.height >>> 24) & 0xFF;\n searchPattern[3] = (genericRegionInfo.height >> 16) & 0xFF;\n searchPattern[4] = (genericRegionInfo.height >> 8) & 0xFF;\n searchPattern[5] = genericRegionInfo.height & 0xFF;\n for (i = position, ii = data.length; i < ii; i++) {\n var j = 0;\n while (j < searchPatternLength && searchPattern[j] === data[i + j]) {\n j++;\n }\n if (j === searchPatternLength) {\n segmentHeader.length = i + searchPatternLength;\n break;\n }\n }\n if (segmentHeader.length === 0xFFFFFFFF) {\n throw new Jbig2Error('segment end was not found');\n }\n } else {\n throw new Jbig2Error('invalid unknown segment length');\n }\n }\n segmentHeader.headerEnd = position;\n return segmentHeader;\n }\n\n function readSegments(header, data, start, end) {\n var segments = [];\n var position = start;\n while (position < end) {\n var segmentHeader = readSegmentHeader(data, position);\n position = segmentHeader.headerEnd;\n var segment = {\n header: segmentHeader,\n data,\n };\n if (!header.randomAccess) {\n segment.start = position;\n position += segmentHeader.length;\n segment.end = position;\n }\n segments.push(segment);\n if (segmentHeader.type === 51) {\n break; // end of file is found\n }\n }\n if (header.randomAccess) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n segments[i].start = position;\n position += segments[i].header.length;\n segments[i].end = position;\n }\n }\n return segments;\n }\n\n // 7.4.1 Region segment information field\n function readRegionSegmentInformation(data, start) {\n return {\n width: readUint32(data, start),\n height: readUint32(data, start + 4),\n x: readUint32(data, start + 8),\n y: readUint32(data, start + 12),\n combinationOperator: data[start + 16] & 7,\n };\n }\n var RegionSegmentInformationFieldLength = 17;\n\n function processSegment(segment, visitor) {\n var header = segment.header;\n\n var data = segment.data, position = segment.start, end = segment.end;\n var args, at, i, atLength;\n switch (header.type) {\n case 0: // SymbolDictionary\n // 7.4.2 Symbol dictionary segment syntax\n var dictionary = {};\n var dictionaryFlags = readUint16(data, position); // 7.4.2.1.1\n dictionary.huffman = !!(dictionaryFlags & 1);\n dictionary.refinement = !!(dictionaryFlags & 2);\n dictionary.huffmanDHSelector = (dictionaryFlags >> 2) & 3;\n dictionary.huffmanDWSelector = (dictionaryFlags >> 4) & 3;\n dictionary.bitmapSizeSelector = (dictionaryFlags >> 6) & 1;\n dictionary.aggregationInstancesSelector = (dictionaryFlags >> 7) & 1;\n dictionary.bitmapCodingContextUsed = !!(dictionaryFlags & 256);\n dictionary.bitmapCodingContextRetained = !!(dictionaryFlags & 512);\n dictionary.template = (dictionaryFlags >> 10) & 3;\n dictionary.refinementTemplate = (dictionaryFlags >> 12) & 1;\n position += 2;\n if (!dictionary.huffman) {\n atLength = dictionary.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.at = at;\n }\n if (dictionary.refinement && !dictionary.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n dictionary.refinementAt = at;\n }\n dictionary.numberOfExportedSymbols = readUint32(data, position);\n position += 4;\n dictionary.numberOfNewSymbols = readUint32(data, position);\n position += 4;\n args = [dictionary, header.number, header.referredTo,\n data, position, end];\n break;\n case 6: // ImmediateTextRegion\n case 7: // ImmediateLosslessTextRegion\n var textRegion = {};\n textRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var textRegionSegmentFlags = readUint16(data, position);\n position += 2;\n textRegion.huffman = !!(textRegionSegmentFlags & 1);\n textRegion.refinement = !!(textRegionSegmentFlags & 2);\n textRegion.stripSize = 1 << ((textRegionSegmentFlags >> 2) & 3);\n textRegion.referenceCorner = (textRegionSegmentFlags >> 4) & 3;\n textRegion.transposed = !!(textRegionSegmentFlags & 64);\n textRegion.combinationOperator = (textRegionSegmentFlags >> 7) & 3;\n textRegion.defaultPixelValue = (textRegionSegmentFlags >> 9) & 1;\n textRegion.dsOffset = (textRegionSegmentFlags << 17) >> 27;\n textRegion.refinementTemplate = (textRegionSegmentFlags >> 15) & 1;\n if (textRegion.huffman) {\n var textRegionHuffmanFlags = readUint16(data, position);\n position += 2;\n textRegion.huffmanFS = (textRegionHuffmanFlags) & 3;\n textRegion.huffmanDS = (textRegionHuffmanFlags >> 2) & 3;\n textRegion.huffmanDT = (textRegionHuffmanFlags >> 4) & 3;\n textRegion.huffmanRefinementDW = (textRegionHuffmanFlags >> 6) & 3;\n textRegion.huffmanRefinementDH = (textRegionHuffmanFlags >> 8) & 3;\n textRegion.huffmanRefinementDX = (textRegionHuffmanFlags >> 10) & 3;\n textRegion.huffmanRefinementDY = (textRegionHuffmanFlags >> 12) & 3;\n textRegion.huffmanRefinementSizeSelector =\n !!(textRegionHuffmanFlags & 14);\n }\n if (textRegion.refinement && !textRegion.refinementTemplate) {\n at = [];\n for (i = 0; i < 2; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n textRegion.refinementAt = at;\n }\n textRegion.numberOfSymbolInstances = readUint32(data, position);\n position += 4;\n // TODO 7.4.3.1.7 Symbol ID Huffman table decoding\n if (textRegion.huffman) {\n throw new Jbig2Error('huffman is not supported');\n }\n args = [textRegion, header.referredTo, data, position, end];\n break;\n case 38: // ImmediateGenericRegion\n case 39: // ImmediateLosslessGenericRegion\n var genericRegion = {};\n genericRegion.info = readRegionSegmentInformation(data, position);\n position += RegionSegmentInformationFieldLength;\n var genericRegionSegmentFlags = data[position++];\n genericRegion.mmr = !!(genericRegionSegmentFlags & 1);\n genericRegion.template = (genericRegionSegmentFlags >> 1) & 3;\n genericRegion.prediction = !!(genericRegionSegmentFlags & 8);\n if (!genericRegion.mmr) {\n atLength = genericRegion.template === 0 ? 4 : 1;\n at = [];\n for (i = 0; i < atLength; i++) {\n at.push({\n x: readInt8(data, position),\n y: readInt8(data, position + 1),\n });\n position += 2;\n }\n genericRegion.at = at;\n }\n args = [genericRegion, data, position, end];\n break;\n case 48: // PageInformation\n var pageInfo = {\n width: readUint32(data, position),\n height: readUint32(data, position + 4),\n resolutionX: readUint32(data, position + 8),\n resolutionY: readUint32(data, position + 12),\n };\n if (pageInfo.height === 0xFFFFFFFF) {\n delete pageInfo.height;\n }\n var pageSegmentFlags = data[position + 16];\n readUint16(data, position + 17); // pageStripingInformation\n pageInfo.lossless = !!(pageSegmentFlags & 1);\n pageInfo.refinement = !!(pageSegmentFlags & 2);\n pageInfo.defaultPixelValue = (pageSegmentFlags >> 2) & 1;\n pageInfo.combinationOperator = (pageSegmentFlags >> 3) & 3;\n pageInfo.requiresBuffer = !!(pageSegmentFlags & 32);\n pageInfo.combinationOperatorOverride = !!(pageSegmentFlags & 64);\n args = [pageInfo];\n break;\n case 49: // EndOfPage\n break;\n case 50: // EndOfStripe\n break;\n case 51: // EndOfFile\n break;\n case 62: // 7.4.15 defines 2 extension types which\n // are comments and can be ignored.\n break;\n default:\n throw new Jbig2Error(`segment type ${header.typeName}(${header.type})` +\n ' is not implemented');\n }\n var callbackName = 'on' + header.typeName;\n if (callbackName in visitor) {\n visitor[callbackName].apply(visitor, args);\n }\n }\n\n function processSegments(segments, visitor) {\n for (var i = 0, ii = segments.length; i < ii; i++) {\n processSegment(segments[i], visitor);\n }\n }\n\n function parseJbig2(data, start, end) { // eslint-disable-line no-unused-vars\n var position = start;\n if (data[position] !== 0x97 || data[position + 1] !== 0x4A ||\n data[position + 2] !== 0x42 || data[position + 3] !== 0x32 ||\n data[position + 4] !== 0x0D || data[position + 5] !== 0x0A ||\n data[position + 6] !== 0x1A || data[position + 7] !== 0x0A) {\n throw new Jbig2Error('invalid header');\n }\n var header = {};\n position += 8;\n var flags = data[position++];\n header.randomAccess = !(flags & 1);\n if (!(flags & 2)) {\n header.numberOfPages = readUint32(data, position);\n position += 4;\n }\n readSegments(header, data, position, end); // segments\n throw new Error('Not implemented');\n // processSegments(segments, new SimpleSegmentVisitor());\n }\n\n function parseJbig2Chunks(chunks) {\n var visitor = new SimpleSegmentVisitor();\n for (var i = 0, ii = chunks.length; i < ii; i++) {\n var chunk = chunks[i];\n var segments = readSegments({}, chunk.data, chunk.start, chunk.end);\n processSegments(segments, visitor);\n }\n return visitor.buffer;\n }\n\n function SimpleSegmentVisitor() {}\n\n SimpleSegmentVisitor.prototype = {\n onPageInformation: function SimpleSegmentVisitor_onPageInformation(info) {\n this.currentPageInfo = info;\n var rowSize = (info.width + 7) >> 3;\n var buffer = new Uint8Array(rowSize * info.height);\n // The contents of ArrayBuffers are initialized to 0.\n // Fill the buffer with 0xFF only if info.defaultPixelValue is set\n if (info.defaultPixelValue) {\n for (var i = 0, ii = buffer.length; i < ii; i++) {\n buffer[i] = 0xFF;\n }\n }\n this.buffer = buffer;\n },\n drawBitmap: function SimpleSegmentVisitor_drawBitmap(regionInfo, bitmap) {\n var pageInfo = this.currentPageInfo;\n var width = regionInfo.width, height = regionInfo.height;\n var rowSize = (pageInfo.width + 7) >> 3;\n var combinationOperator = pageInfo.combinationOperatorOverride ?\n regionInfo.combinationOperator : pageInfo.combinationOperator;\n var buffer = this.buffer;\n var mask0 = 128 >> (regionInfo.x & 7);\n var offset0 = regionInfo.y * rowSize + (regionInfo.x >> 3);\n var i, j, mask, offset;\n switch (combinationOperator) {\n case 0: // OR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] |= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n case 2: // XOR\n for (i = 0; i < height; i++) {\n mask = mask0;\n offset = offset0;\n for (j = 0; j < width; j++) {\n if (bitmap[i][j]) {\n buffer[offset] ^= mask;\n }\n mask >>= 1;\n if (!mask) {\n mask = 128;\n offset++;\n }\n }\n offset0 += rowSize;\n }\n break;\n default:\n throw new Jbig2Error(\n `operator ${combinationOperator} is not supported`);\n }\n },\n onImmediateGenericRegion:\n function SimpleSegmentVisitor_onImmediateGenericRegion(region, data,\n start, end) {\n var regionInfo = region.info;\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeBitmap(region.mmr, regionInfo.width, regionInfo.height,\n region.template, region.prediction, null,\n region.at, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessGenericRegion:\n function SimpleSegmentVisitor_onImmediateLosslessGenericRegion() {\n this.onImmediateGenericRegion.apply(this, arguments);\n },\n onSymbolDictionary:\n function SimpleSegmentVisitor_onSymbolDictionary(dictionary,\n currentSegment,\n referredSegments,\n data, start, end) {\n var huffmanTables;\n if (dictionary.huffman) {\n throw new Jbig2Error('huffman is not supported');\n }\n\n // Combines exported symbols from all referred segments\n var symbols = this.symbols;\n if (!symbols) {\n this.symbols = symbols = {};\n }\n\n var inputSymbols = [];\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]);\n }\n\n var decodingContext = new DecodingContext(data, start, end);\n symbols[currentSegment] = decodeSymbolDictionary(dictionary.huffman,\n dictionary.refinement, inputSymbols, dictionary.numberOfNewSymbols,\n dictionary.numberOfExportedSymbols, huffmanTables,\n dictionary.template, dictionary.at,\n dictionary.refinementTemplate, dictionary.refinementAt,\n decodingContext);\n },\n onImmediateTextRegion:\n function SimpleSegmentVisitor_onImmediateTextRegion(region,\n referredSegments,\n data, start, end) {\n var regionInfo = region.info;\n var huffmanTables;\n\n // Combines exported symbols from all referred segments\n var symbols = this.symbols;\n var inputSymbols = [];\n for (var i = 0, ii = referredSegments.length; i < ii; i++) {\n inputSymbols = inputSymbols.concat(symbols[referredSegments[i]]);\n }\n var symbolCodeLength = log2(inputSymbols.length);\n\n var decodingContext = new DecodingContext(data, start, end);\n var bitmap = decodeTextRegion(region.huffman, region.refinement,\n regionInfo.width, regionInfo.height, region.defaultPixelValue,\n region.numberOfSymbolInstances, region.stripSize, inputSymbols,\n symbolCodeLength, region.transposed, region.dsOffset,\n region.referenceCorner, region.combinationOperator, huffmanTables,\n region.refinementTemplate, region.refinementAt, decodingContext);\n this.drawBitmap(regionInfo, bitmap);\n },\n onImmediateLosslessTextRegion:\n function SimpleSegmentVisitor_onImmediateLosslessTextRegion() {\n this.onImmediateTextRegion.apply(this, arguments);\n },\n };\n\n function Jbig2Image() {}\n\n Jbig2Image.prototype = {\n parseChunks: function Jbig2Image_parseChunks(chunks) {\n return parseJbig2Chunks(chunks);\n },\n };\n\n return Jbig2Image;\n})();\n\nexport {\n Jbig2Image,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/jbig2.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the 'License');\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an 'AS IS' BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-spaces */\n\nimport { warn } from '../shared/util';\n\nlet JpegError = (function JpegErrorClosure() {\n function JpegError(msg) {\n this.message = 'JPEG error: ' + msg;\n }\n\n JpegError.prototype = new Error();\n JpegError.prototype.name = 'JpegError';\n JpegError.constructor = JpegError;\n\n return JpegError;\n})();\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\nvar JpegImage = (function JpegImageClosure() {\n var dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n ]);\n\n var dctCos1 = 4017; // cos(pi/16)\n var dctSin1 = 799; // sin(pi/16)\n var dctCos3 = 3406; // cos(3*pi/16)\n var dctSin3 = 2276; // sin(3*pi/16)\n var dctCos6 = 1567; // cos(6*pi/16)\n var dctSin6 = 3784; // sin(6*pi/16)\n var dctSqrt2 = 5793; // sqrt(2)\n var dctSqrt1d2 = 2896; // sqrt(2) / 2\n\n function JpegImage() {\n this.decodeTransform = null;\n this.colorTransform = -1;\n }\n\n function buildHuffmanTable(codeLengths, values) {\n var k = 0, code = [], i, j, length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n code.push({ children: [], index: 0, });\n var p = code[0], q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push(q = { children: [], index: 0, });\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push(q = { children: [], index: 0, });\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n }\n\n function getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n }\n\n function decodeScan(data, offset, frame, components, resetInterval,\n spectralStart, spectralEnd, successivePrev, successive) {\n var mcusPerLine = frame.mcusPerLine;\n var progressive = frame.progressive;\n\n var startOffset = offset, bitsData = 0, bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xFF) {\n var nextByte = data[offset++];\n if (nextByte) {\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`);\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n var node = tree;\n while (true) {\n node = node[readBit()];\n if (typeof node === 'number') {\n return node;\n }\n if (typeof node !== 'object') {\n throw new JpegError('invalid huffman sequence');\n }\n }\n }\n\n function receive(length) {\n var n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n var n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[offset] = (component.pred += diff);\n var k = 1;\n while (k < 64) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, offset) {\n var t = decodeHuffman(component.huffmanTableDC);\n var diff = t === 0 ? 0 : (receiveAndExtend(t) << successive);\n component.blockData[offset] = (component.pred += diff);\n }\n\n function decodeDCSuccessive(component, offset) {\n component.blockData[offset] |= readBit() << successive;\n }\n\n var eobrun = 0;\n function decodeACFirst(component, offset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n var k = spectralStart, e = spectralEnd;\n while (k <= e) {\n var rs = decodeHuffman(component.huffmanTableAC);\n var s = rs & 15, r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n var z = dctZigZag[k];\n component.blockData[offset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n var successiveACState = 0, successiveACNextValue;\n function decodeACSuccessive(component, offset) {\n var k = spectralStart;\n var e = spectralEnd;\n var r = 0;\n var s;\n var rs;\n while (k <= e) {\n var z = dctZigZag[k];\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError('invalid ACn encoding');\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n } else {\n component.blockData[offset + z] =\n successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offset + z]) {\n component.blockData[offset + z] += (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n function decodeMcu(component, decode, mcu, row, col) {\n var mcuRow = (mcu / mcusPerLine) | 0;\n var mcuCol = mcu % mcusPerLine;\n var blockRow = mcuRow * component.v + row;\n var blockCol = mcuCol * component.h + col;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n function decodeBlock(component, decode, mcu) {\n var blockRow = (mcu / component.blocksPerLine) | 0;\n var blockCol = mcu % component.blocksPerLine;\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, offset);\n }\n\n var componentsLength = components.length;\n var component, i, j, k, n;\n var decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n var mcu = 0, fileMarker;\n var mcuExpected;\n if (componentsLength === 1) {\n mcuExpected = components[0].blocksPerLine * components[0].blocksPerColumn;\n } else {\n mcuExpected = mcusPerLine * frame.mcusPerColumn;\n }\n\n var h, v;\n while (mcu < mcuExpected) {\n // reset interval stuff\n var mcuToRead = resetInterval ?\n Math.min(mcuExpected - mcu, resetInterval) : mcuExpected;\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, offset);\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip past\n // those to attempt to find a valid marker (fixes issue4090.pdf).\n if (fileMarker && fileMarker.invalid) {\n warn('decodeScan - unexpected MCU data, next marker is: ' +\n fileMarker.invalid);\n offset = fileMarker.offset;\n }\n var marker = fileMarker && fileMarker.marker;\n if (!marker || marker <= 0xFF00) {\n throw new JpegError('marker was not found');\n }\n\n if (marker >= 0xFFD0 && marker <= 0xFFD7) { // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n fileMarker = findNextFileMarker(data, offset);\n // Some images include more Scan blocks than expected, skip past those and\n // attempt to find the next valid marker (fixes issue8182.pdf).\n if (fileMarker && fileMarker.invalid) {\n warn('decodeScan - unexpected Scan data, next marker is: ' +\n fileMarker.invalid);\n offset = fileMarker.offset;\n }\n\n return offset - startOffset;\n }\n\n // A port of poppler's IDCT method which in turn is taken from:\n // Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n // 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n // IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n // 988-991.\n function quantizeAndInverse(component, blockBufferOffset, p) {\n var qt = component.quantizationTable, blockData = component.blockData;\n var v0, v1, v2, v3, v4, v5, v6, v7;\n var p0, p1, p2, p3, p4, p5, p6, p7;\n var t;\n\n if (!qt) {\n throw new JpegError('missing required Quantization Table.');\n }\n\n // inverse DCT on rows\n for (var row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (var col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // convert to 8 bit\n t = (t < -2040) ? 0 : (t >= 2024) ? 255 : (t + 2056) >> 4;\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // convert to 8-bit integers\n p0 = (p0 < 16) ? 0 : (p0 >= 4080) ? 255 : p0 >> 4;\n p1 = (p1 < 16) ? 0 : (p1 >= 4080) ? 255 : p1 >> 4;\n p2 = (p2 < 16) ? 0 : (p2 >= 4080) ? 255 : p2 >> 4;\n p3 = (p3 < 16) ? 0 : (p3 >= 4080) ? 255 : p3 >> 4;\n p4 = (p4 < 16) ? 0 : (p4 >= 4080) ? 255 : p4 >> 4;\n p5 = (p5 < 16) ? 0 : (p5 >= 4080) ? 255 : p5 >> 4;\n p6 = (p6 < 16) ? 0 : (p6 >= 4080) ? 255 : p6 >> 4;\n p7 = (p7 < 16) ? 0 : (p7 >= 4080) ? 255 : p7 >> 4;\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n }\n\n function buildComponentData(frame, component) {\n var blocksPerLine = component.blocksPerLine;\n var blocksPerColumn = component.blocksPerColumn;\n var computationBuffer = new Int16Array(64);\n\n for (var blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (var blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n var offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n }\n\n function clamp0to255(a) {\n return a <= 0 ? 0 : a >= 255 ? 255 : a;\n }\n\n function findNextFileMarker(data, currentPos, startPos) {\n function peekUint16(pos) {\n return (data[pos] << 8) | data[pos + 1];\n }\n\n var maxPos = data.length - 1;\n var newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n var currentMarker = peekUint16(currentPos);\n if (currentMarker >= 0xFFC0 && currentMarker <= 0xFFFE) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n var newMarker = peekUint16(newPos);\n while (!(newMarker >= 0xFFC0 && newMarker <= 0xFFFE)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = peekUint16(newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n }\n\n JpegImage.prototype = {\n parse: function parse(data) {\n\n function readUint16() {\n var value = (data[offset] << 8) | data[offset + 1];\n offset += 2;\n return value;\n }\n\n function readDataBlock() {\n var length = readUint16();\n var endOffset = offset + length - 2;\n\n var fileMarker = findNextFileMarker(data, endOffset, offset);\n if (fileMarker && fileMarker.invalid) {\n warn('readDataBlock - incorrect length, next marker is: ' +\n fileMarker.invalid);\n endOffset = fileMarker.offset;\n }\n\n var array = data.subarray(offset, endOffset);\n offset += array.length;\n return array;\n }\n\n function prepareComponents(frame) {\n var mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n var mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (var i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n var blocksPerLine = Math.ceil(Math.ceil(frame.samplesPerLine / 8) *\n component.h / frame.maxH);\n var blocksPerColumn = Math.ceil(Math.ceil(frame.scanLines / 8) *\n component.v / frame.maxV);\n var blocksPerLineForMcu = mcusPerLine * component.h;\n var blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n var blocksBufferSize = 64 * blocksPerColumnForMcu *\n (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n }\n\n var offset = 0;\n var jfif = null;\n var adobe = null;\n var frame, resetInterval;\n var quantizationTables = [];\n var huffmanTablesAC = [], huffmanTablesDC = [];\n var fileMarker = readUint16();\n if (fileMarker !== 0xFFD8) { // SOI (Start of Image)\n throw new JpegError('SOI not found');\n }\n\n fileMarker = readUint16();\n while (fileMarker !== 0xFFD9) { // EOI (End of image)\n var i, j, l;\n switch (fileMarker) {\n case 0xFFE0: // APP0 (Application Specific)\n case 0xFFE1: // APP1\n case 0xFFE2: // APP2\n case 0xFFE3: // APP3\n case 0xFFE4: // APP4\n case 0xFFE5: // APP5\n case 0xFFE6: // APP6\n case 0xFFE7: // APP7\n case 0xFFE8: // APP8\n case 0xFFE9: // APP9\n case 0xFFEA: // APP10\n case 0xFFEB: // APP11\n case 0xFFEC: // APP12\n case 0xFFED: // APP13\n case 0xFFEE: // APP14\n case 0xFFEF: // APP15\n case 0xFFFE: // COM (Comment)\n var appData = readDataBlock();\n\n if (fileMarker === 0xFFE0) {\n if (appData[0] === 0x4A && appData[1] === 0x46 &&\n appData[2] === 0x49 && appData[3] === 0x46 &&\n appData[4] === 0) { // 'JFIF\\x00'\n jfif = {\n version: { major: appData[5], minor: appData[6], },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(14, 14 +\n 3 * appData[12] * appData[13]),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xFFEE) {\n if (appData[0] === 0x41 && appData[1] === 0x64 &&\n appData[2] === 0x6F && appData[3] === 0x62 &&\n appData[4] === 0x65) { // 'Adobe'\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xFFDB: // DQT (Define Quantization Tables)\n var quantizationTablesLength = readUint16();\n var quantizationTablesEnd = quantizationTablesLength + offset - 2;\n var z;\n while (offset < quantizationTablesEnd) {\n var quantizationTableSpec = data[offset++];\n var tableData = new Uint16Array(64);\n if ((quantizationTableSpec >> 4) === 0) { // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if ((quantizationTableSpec >> 4) === 1) { // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = readUint16();\n }\n } else {\n throw new JpegError('DQT - invalid table spec');\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xFFC0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xFFC1: // SOF1 (Start of Frame, Extended DCT)\n case 0xFFC2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError('Only single frame JPEGs supported');\n }\n readUint16(); // skip data length\n frame = {};\n frame.extended = (fileMarker === 0xFFC1);\n frame.progressive = (fileMarker === 0xFFC2);\n frame.precision = data[offset++];\n frame.scanLines = readUint16();\n frame.samplesPerLine = readUint16();\n frame.components = [];\n frame.componentIds = {};\n var componentsCount = data[offset++], componentId;\n var maxH = 0, maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n componentId = data[offset];\n var h = data[offset + 1] >> 4;\n var v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n var qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xFFC4: // DHT (Define Huffman Tables)\n var huffmanLength = readUint16();\n for (i = 2; i < huffmanLength;) {\n var huffmanTableSpec = data[offset++];\n var codeLengths = new Uint8Array(16);\n var codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += (codeLengths[j] = data[offset]);\n }\n var huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n ((huffmanTableSpec >> 4) === 0 ?\n huffmanTablesDC : huffmanTablesAC)[huffmanTableSpec & 15] =\n buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xFFDD: // DRI (Define Restart Interval)\n readUint16(); // skip data length\n resetInterval = readUint16();\n break;\n\n case 0xFFDA: // SOS (Start of Scan)\n readUint16(); // scanLength\n var selectorsCount = data[offset++];\n var components = [], component;\n for (i = 0; i < selectorsCount; i++) {\n var componentIndex = frame.componentIds[data[offset++]];\n component = frame.components[componentIndex];\n var tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n var spectralStart = data[offset++];\n var spectralEnd = data[offset++];\n var successiveApproximation = data[offset++];\n var processed = decodeScan(data, offset,\n frame, components, resetInterval,\n spectralStart, spectralEnd,\n successiveApproximation >> 4, successiveApproximation & 15);\n offset += processed;\n break;\n\n case 0xFFFF: // Fill bytes\n if (data[offset] !== 0xFF) { // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n if (data[offset - 3] === 0xFF &&\n data[offset - 2] >= 0xC0 && data[offset - 2] <= 0xFE) {\n // could be incorrect encoding -- last 0xFF byte of the previous\n // block was eaten by the encoder\n offset -= 3;\n break;\n }\n throw new JpegError('unknown marker ' + fileMarker.toString(16));\n }\n fileMarker = readUint16();\n }\n\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (i = 0; i < frame.components.length; i++) {\n component = frame.components[i];\n\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n var quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n },\n\n _getLinearizedBlockData: function getLinearizedBlockData(width, height) {\n var scaleX = this.width / width, scaleY = this.height / height;\n\n var component, componentScaleX, componentScaleY, blocksPerScanline;\n var x, y, i, j, k;\n var index;\n var offset = 0;\n var output;\n var numComponents = this.components.length;\n var dataLength = width * height * numComponents;\n var data = new Uint8Array(dataLength);\n var xScaleBlockOffset = new Uint32Array(width);\n var mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // precalculate the xScaleBlockOffset\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = blocksPerScanline * (j & mask3LSB) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n var transform = this.decodeTransform;\n if (transform) {\n for (i = 0; i < dataLength;) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n return data;\n },\n\n _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this.colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this.colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n },\n\n _convertYccToRgb: function convertYccToRgb(data) {\n var Y, Cb, Cr;\n for (var i = 0, length = data.length; i < length; i += 3) {\n Y = data[i ];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i ] = clamp0to255(Y - 179.456 + 1.402 * Cr);\n data[i + 1] = clamp0to255(Y + 135.459 - 0.344 * Cb - 0.714 * Cr);\n data[i + 2] = clamp0to255(Y - 226.816 + 1.772 * Cb);\n }\n return data;\n },\n\n _convertYcckToRgb: function convertYcckToRgb(data) {\n var Y, Cb, Cr, k;\n var offset = 0;\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n k = data[i + 3];\n\n var r = -122.67195406894 +\n Cb * (-6.60635669420364e-5 * Cb + 0.000437130475926232 * Cr -\n 5.4080610064599e-5 * Y + 0.00048449797120281 * k -\n 0.154362151871126) +\n Cr * (-0.000957964378445773 * Cr + 0.000817076911346625 * Y -\n 0.00477271405408747 * k + 1.53380253221734) +\n Y * (0.000961250184130688 * Y - 0.00266257332283933 * k +\n 0.48357088451265) +\n k * (-0.000336197177618394 * k + 0.484791561490776);\n\n var g = 107.268039397724 +\n Cb * (2.19927104525741e-5 * Cb - 0.000640992018297945 * Cr +\n 0.000659397001245577 * Y + 0.000426105652938837 * k -\n 0.176491792462875) +\n Cr * (-0.000778269941513683 * Cr + 0.00130872261408275 * Y +\n 0.000770482631801132 * k - 0.151051492775562) +\n Y * (0.00126935368114843 * Y - 0.00265090189010898 * k +\n 0.25802910206845) +\n k * (-0.000318913117588328 * k - 0.213742400323665);\n\n var b = -20.810012546947 +\n Cb * (-0.000570115196973677 * Cb - 2.63409051004589e-5 * Cr +\n 0.0020741088115012 * Y - 0.00288260236853442 * k +\n 0.814272968359295) +\n Cr * (-1.53496057440975e-5 * Cr - 0.000132689043961446 * Y +\n 0.000560833691242812 * k - 0.195152027534049) +\n Y * (0.00174418132927582 * Y - 0.00255243321439347 * k +\n 0.116935020465145) +\n k * (-0.000343531996510555 * k + 0.24165260232407);\n\n data[offset++] = clamp0to255(r);\n data[offset++] = clamp0to255(g);\n data[offset++] = clamp0to255(b);\n }\n return data;\n },\n\n _convertYcckToCmyk: function convertYcckToCmyk(data) {\n var Y, Cb, Cr;\n for (var i = 0, length = data.length; i < length; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i ] = clamp0to255(434.456 - Y - 1.402 * Cr);\n data[i + 1] = clamp0to255(119.541 - Y + 0.344 * Cb + 0.714 * Cr);\n data[i + 2] = clamp0to255(481.816 - Y - 1.772 * Cb);\n // K in data[i + 3] is unchanged\n }\n return data;\n },\n\n _convertCmykToRgb: function convertCmykToRgb(data) {\n var c, m, y, k;\n var offset = 0;\n var min = -255 * 255 * 255;\n var scale = 1 / 255 / 255;\n for (var i = 0, length = data.length; i < length; i += 4) {\n c = data[i];\n m = data[i + 1];\n y = data[i + 2];\n k = data[i + 3];\n\n var r =\n c * (-4.387332384609988 * c + 54.48615194189176 * m +\n 18.82290502165302 * y + 212.25662451639585 * k -\n 72734.4411664936) +\n m * (1.7149763477362134 * m - 5.6096736904047315 * y -\n 17.873870861415444 * k - 1401.7366389350734) +\n y * (-2.5217340131683033 * y - 21.248923337353073 * k +\n 4465.541406466231) -\n k * (21.86122147463605 * k + 48317.86113160301);\n var g =\n c * (8.841041422036149 * c + 60.118027045597366 * m +\n 6.871425592049007 * y + 31.159100130055922 * k -\n 20220.756542821975) +\n m * (-15.310361306967817 * m + 17.575251261109482 * y +\n 131.35250912493976 * k - 48691.05921601825) +\n y * (4.444339102852739 * y + 9.8632861493405 * k -\n 6341.191035517494) -\n k * (20.737325471181034 * k + 47890.15695978492);\n var b =\n c * (0.8842522430003296 * c + 8.078677503112928 * m +\n 30.89978309703729 * y - 0.23883238689178934 * k -\n 3616.812083916688) +\n m * (10.49593273432072 * m + 63.02378494754052 * y +\n 50.606957656360734 * k - 28620.90484698408) +\n y * (0.03296041114873217 * y + 115.60384449646641 * k -\n 49363.43385999684) -\n k * (22.33816807309886 * k + 45932.16563550634);\n\n data[offset++] = r >= 0 ? 255 : r <= min ? 0 : 255 + r * scale | 0;\n data[offset++] = g >= 0 ? 255 : g <= min ? 0 : 255 + g * scale | 0;\n data[offset++] = b >= 0 ? 255 : b <= min ? 0 : 255 + b * scale | 0;\n }\n return data;\n },\n\n getData: function getData(width, height, forceRGBoutput) {\n if (this.numComponents > 4) {\n throw new JpegError('Unsupported color mode');\n }\n // type of data: Uint8Array(width * height * numComponents)\n var data = this._getLinearizedBlockData(width, height);\n\n if (this.numComponents === 1 && forceRGBoutput) {\n var dataLength = data.length;\n var rgbData = new Uint8Array(dataLength * 3);\n var offset = 0;\n for (var i = 0; i < dataLength; i++) {\n var grayColor = data[i];\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n rgbData[offset++] = grayColor;\n }\n return rgbData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded()) {\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded()) {\n if (forceRGBoutput) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGBoutput) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n },\n };\n\n return JpegImage;\n})();\n\nexport {\n JpegImage,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/jpg.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getLookupTableFactory } from '../shared/util';\n\n// The Metrics object contains glyph widths (in glyph space units).\n// As per PDF spec, for most fonts (Type 3 being an exception) a glyph\n// space unit corresponds to 1/1000th of text space unit.\nvar getMetrics = getLookupTableFactory(function (t) {\n t['Courier'] = 600;\n t['Courier-Bold'] = 600;\n t['Courier-BoldOblique'] = 600;\n t['Courier-Oblique'] = 600;\n t['Helvetica'] = getLookupTableFactory(function (t) {\n t['space'] = 278;\n t['exclam'] = 278;\n t['quotedbl'] = 355;\n t['numbersign'] = 556;\n t['dollar'] = 556;\n t['percent'] = 889;\n t['ampersand'] = 667;\n t['quoteright'] = 222;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 389;\n t['plus'] = 584;\n t['comma'] = 278;\n t['hyphen'] = 333;\n t['period'] = 278;\n t['slash'] = 278;\n t['zero'] = 556;\n t['one'] = 556;\n t['two'] = 556;\n t['three'] = 556;\n t['four'] = 556;\n t['five'] = 556;\n t['six'] = 556;\n t['seven'] = 556;\n t['eight'] = 556;\n t['nine'] = 556;\n t['colon'] = 278;\n t['semicolon'] = 278;\n t['less'] = 584;\n t['equal'] = 584;\n t['greater'] = 584;\n t['question'] = 556;\n t['at'] = 1015;\n t['A'] = 667;\n t['B'] = 667;\n t['C'] = 722;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 611;\n t['G'] = 778;\n t['H'] = 722;\n t['I'] = 278;\n t['J'] = 500;\n t['K'] = 667;\n t['L'] = 556;\n t['M'] = 833;\n t['N'] = 722;\n t['O'] = 778;\n t['P'] = 667;\n t['Q'] = 778;\n t['R'] = 722;\n t['S'] = 667;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 667;\n t['W'] = 944;\n t['X'] = 667;\n t['Y'] = 667;\n t['Z'] = 611;\n t['bracketleft'] = 278;\n t['backslash'] = 278;\n t['bracketright'] = 278;\n t['asciicircum'] = 469;\n t['underscore'] = 556;\n t['quoteleft'] = 222;\n t['a'] = 556;\n t['b'] = 556;\n t['c'] = 500;\n t['d'] = 556;\n t['e'] = 556;\n t['f'] = 278;\n t['g'] = 556;\n t['h'] = 556;\n t['i'] = 222;\n t['j'] = 222;\n t['k'] = 500;\n t['l'] = 222;\n t['m'] = 833;\n t['n'] = 556;\n t['o'] = 556;\n t['p'] = 556;\n t['q'] = 556;\n t['r'] = 333;\n t['s'] = 500;\n t['t'] = 278;\n t['u'] = 556;\n t['v'] = 500;\n t['w'] = 722;\n t['x'] = 500;\n t['y'] = 500;\n t['z'] = 500;\n t['braceleft'] = 334;\n t['bar'] = 260;\n t['braceright'] = 334;\n t['asciitilde'] = 584;\n t['exclamdown'] = 333;\n t['cent'] = 556;\n t['sterling'] = 556;\n t['fraction'] = 167;\n t['yen'] = 556;\n t['florin'] = 556;\n t['section'] = 556;\n t['currency'] = 556;\n t['quotesingle'] = 191;\n t['quotedblleft'] = 333;\n t['guillemotleft'] = 556;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 500;\n t['fl'] = 500;\n t['endash'] = 556;\n t['dagger'] = 556;\n t['daggerdbl'] = 556;\n t['periodcentered'] = 278;\n t['paragraph'] = 537;\n t['bullet'] = 350;\n t['quotesinglbase'] = 222;\n t['quotedblbase'] = 333;\n t['quotedblright'] = 333;\n t['guillemotright'] = 556;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 611;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 1000;\n t['ordfeminine'] = 370;\n t['Lslash'] = 556;\n t['Oslash'] = 778;\n t['OE'] = 1000;\n t['ordmasculine'] = 365;\n t['ae'] = 889;\n t['dotlessi'] = 278;\n t['lslash'] = 222;\n t['oslash'] = 611;\n t['oe'] = 944;\n t['germandbls'] = 611;\n t['Idieresis'] = 278;\n t['eacute'] = 556;\n t['abreve'] = 556;\n t['uhungarumlaut'] = 556;\n t['ecaron'] = 556;\n t['Ydieresis'] = 667;\n t['divide'] = 584;\n t['Yacute'] = 667;\n t['Acircumflex'] = 667;\n t['aacute'] = 556;\n t['Ucircumflex'] = 722;\n t['yacute'] = 500;\n t['scommaaccent'] = 500;\n t['ecircumflex'] = 556;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 556;\n t['Uacute'] = 722;\n t['uogonek'] = 556;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 737;\n t['Emacron'] = 667;\n t['ccaron'] = 500;\n t['aring'] = 556;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 222;\n t['agrave'] = 556;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 722;\n t['atilde'] = 556;\n t['Edotaccent'] = 667;\n t['scaron'] = 500;\n t['scedilla'] = 500;\n t['iacute'] = 278;\n t['lozenge'] = 471;\n t['Rcaron'] = 722;\n t['Gcommaaccent'] = 778;\n t['ucircumflex'] = 556;\n t['acircumflex'] = 556;\n t['Amacron'] = 667;\n t['rcaron'] = 333;\n t['ccedilla'] = 500;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 667;\n t['Omacron'] = 778;\n t['Racute'] = 722;\n t['Sacute'] = 667;\n t['dcaron'] = 643;\n t['Umacron'] = 722;\n t['uring'] = 556;\n t['threesuperior'] = 333;\n t['Ograve'] = 778;\n t['Agrave'] = 667;\n t['Abreve'] = 667;\n t['multiply'] = 584;\n t['uacute'] = 556;\n t['Tcaron'] = 611;\n t['partialdiff'] = 476;\n t['ydieresis'] = 500;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 556;\n t['edieresis'] = 556;\n t['cacute'] = 500;\n t['nacute'] = 556;\n t['umacron'] = 556;\n t['Ncaron'] = 722;\n t['Iacute'] = 278;\n t['plusminus'] = 584;\n t['brokenbar'] = 260;\n t['registered'] = 737;\n t['Gbreve'] = 778;\n t['Idotaccent'] = 278;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 333;\n t['omacron'] = 556;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 722;\n t['lcommaaccent'] = 222;\n t['tcaron'] = 317;\n t['eogonek'] = 556;\n t['Uogonek'] = 722;\n t['Aacute'] = 667;\n t['Adieresis'] = 667;\n t['egrave'] = 556;\n t['zacute'] = 500;\n t['iogonek'] = 222;\n t['Oacute'] = 778;\n t['oacute'] = 556;\n t['amacron'] = 556;\n t['sacute'] = 500;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 778;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 556;\n t['twosuperior'] = 333;\n t['Odieresis'] = 778;\n t['mu'] = 556;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 556;\n t['Eogonek'] = 667;\n t['dcroat'] = 556;\n t['threequarters'] = 834;\n t['Scedilla'] = 667;\n t['lcaron'] = 299;\n t['Kcommaaccent'] = 667;\n t['Lacute'] = 556;\n t['trademark'] = 1000;\n t['edotaccent'] = 556;\n t['Igrave'] = 278;\n t['Imacron'] = 278;\n t['Lcaron'] = 556;\n t['onehalf'] = 834;\n t['lessequal'] = 549;\n t['ocircumflex'] = 556;\n t['ntilde'] = 556;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 556;\n t['gbreve'] = 556;\n t['onequarter'] = 834;\n t['Scaron'] = 667;\n t['Scommaaccent'] = 667;\n t['Ohungarumlaut'] = 778;\n t['degree'] = 400;\n t['ograve'] = 556;\n t['Ccaron'] = 722;\n t['ugrave'] = 556;\n t['radical'] = 453;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 333;\n t['Ntilde'] = 722;\n t['otilde'] = 556;\n t['Rcommaaccent'] = 722;\n t['Lcommaaccent'] = 556;\n t['Atilde'] = 667;\n t['Aogonek'] = 667;\n t['Aring'] = 667;\n t['Otilde'] = 778;\n t['zdotaccent'] = 500;\n t['Ecaron'] = 667;\n t['Iogonek'] = 278;\n t['kcommaaccent'] = 500;\n t['minus'] = 584;\n t['Icircumflex'] = 278;\n t['ncaron'] = 556;\n t['tcommaaccent'] = 278;\n t['logicalnot'] = 584;\n t['odieresis'] = 556;\n t['udieresis'] = 556;\n t['notequal'] = 549;\n t['gcommaaccent'] = 556;\n t['eth'] = 556;\n t['zcaron'] = 500;\n t['ncommaaccent'] = 556;\n t['onesuperior'] = 333;\n t['imacron'] = 278;\n t['Euro'] = 556;\n });\n t['Helvetica-Bold'] = getLookupTableFactory(function (t) {\n t['space'] = 278;\n t['exclam'] = 333;\n t['quotedbl'] = 474;\n t['numbersign'] = 556;\n t['dollar'] = 556;\n t['percent'] = 889;\n t['ampersand'] = 722;\n t['quoteright'] = 278;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 389;\n t['plus'] = 584;\n t['comma'] = 278;\n t['hyphen'] = 333;\n t['period'] = 278;\n t['slash'] = 278;\n t['zero'] = 556;\n t['one'] = 556;\n t['two'] = 556;\n t['three'] = 556;\n t['four'] = 556;\n t['five'] = 556;\n t['six'] = 556;\n t['seven'] = 556;\n t['eight'] = 556;\n t['nine'] = 556;\n t['colon'] = 333;\n t['semicolon'] = 333;\n t['less'] = 584;\n t['equal'] = 584;\n t['greater'] = 584;\n t['question'] = 611;\n t['at'] = 975;\n t['A'] = 722;\n t['B'] = 722;\n t['C'] = 722;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 611;\n t['G'] = 778;\n t['H'] = 722;\n t['I'] = 278;\n t['J'] = 556;\n t['K'] = 722;\n t['L'] = 611;\n t['M'] = 833;\n t['N'] = 722;\n t['O'] = 778;\n t['P'] = 667;\n t['Q'] = 778;\n t['R'] = 722;\n t['S'] = 667;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 667;\n t['W'] = 944;\n t['X'] = 667;\n t['Y'] = 667;\n t['Z'] = 611;\n t['bracketleft'] = 333;\n t['backslash'] = 278;\n t['bracketright'] = 333;\n t['asciicircum'] = 584;\n t['underscore'] = 556;\n t['quoteleft'] = 278;\n t['a'] = 556;\n t['b'] = 611;\n t['c'] = 556;\n t['d'] = 611;\n t['e'] = 556;\n t['f'] = 333;\n t['g'] = 611;\n t['h'] = 611;\n t['i'] = 278;\n t['j'] = 278;\n t['k'] = 556;\n t['l'] = 278;\n t['m'] = 889;\n t['n'] = 611;\n t['o'] = 611;\n t['p'] = 611;\n t['q'] = 611;\n t['r'] = 389;\n t['s'] = 556;\n t['t'] = 333;\n t['u'] = 611;\n t['v'] = 556;\n t['w'] = 778;\n t['x'] = 556;\n t['y'] = 556;\n t['z'] = 500;\n t['braceleft'] = 389;\n t['bar'] = 280;\n t['braceright'] = 389;\n t['asciitilde'] = 584;\n t['exclamdown'] = 333;\n t['cent'] = 556;\n t['sterling'] = 556;\n t['fraction'] = 167;\n t['yen'] = 556;\n t['florin'] = 556;\n t['section'] = 556;\n t['currency'] = 556;\n t['quotesingle'] = 238;\n t['quotedblleft'] = 500;\n t['guillemotleft'] = 556;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 611;\n t['fl'] = 611;\n t['endash'] = 556;\n t['dagger'] = 556;\n t['daggerdbl'] = 556;\n t['periodcentered'] = 278;\n t['paragraph'] = 556;\n t['bullet'] = 350;\n t['quotesinglbase'] = 278;\n t['quotedblbase'] = 500;\n t['quotedblright'] = 500;\n t['guillemotright'] = 556;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 611;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 1000;\n t['ordfeminine'] = 370;\n t['Lslash'] = 611;\n t['Oslash'] = 778;\n t['OE'] = 1000;\n t['ordmasculine'] = 365;\n t['ae'] = 889;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 611;\n t['oe'] = 944;\n t['germandbls'] = 611;\n t['Idieresis'] = 278;\n t['eacute'] = 556;\n t['abreve'] = 556;\n t['uhungarumlaut'] = 611;\n t['ecaron'] = 556;\n t['Ydieresis'] = 667;\n t['divide'] = 584;\n t['Yacute'] = 667;\n t['Acircumflex'] = 722;\n t['aacute'] = 556;\n t['Ucircumflex'] = 722;\n t['yacute'] = 556;\n t['scommaaccent'] = 556;\n t['ecircumflex'] = 556;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 556;\n t['Uacute'] = 722;\n t['uogonek'] = 611;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 737;\n t['Emacron'] = 667;\n t['ccaron'] = 556;\n t['aring'] = 556;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 278;\n t['agrave'] = 556;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 722;\n t['atilde'] = 556;\n t['Edotaccent'] = 667;\n t['scaron'] = 556;\n t['scedilla'] = 556;\n t['iacute'] = 278;\n t['lozenge'] = 494;\n t['Rcaron'] = 722;\n t['Gcommaaccent'] = 778;\n t['ucircumflex'] = 611;\n t['acircumflex'] = 556;\n t['Amacron'] = 722;\n t['rcaron'] = 389;\n t['ccedilla'] = 556;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 667;\n t['Omacron'] = 778;\n t['Racute'] = 722;\n t['Sacute'] = 667;\n t['dcaron'] = 743;\n t['Umacron'] = 722;\n t['uring'] = 611;\n t['threesuperior'] = 333;\n t['Ograve'] = 778;\n t['Agrave'] = 722;\n t['Abreve'] = 722;\n t['multiply'] = 584;\n t['uacute'] = 611;\n t['Tcaron'] = 611;\n t['partialdiff'] = 494;\n t['ydieresis'] = 556;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 556;\n t['edieresis'] = 556;\n t['cacute'] = 556;\n t['nacute'] = 611;\n t['umacron'] = 611;\n t['Ncaron'] = 722;\n t['Iacute'] = 278;\n t['plusminus'] = 584;\n t['brokenbar'] = 280;\n t['registered'] = 737;\n t['Gbreve'] = 778;\n t['Idotaccent'] = 278;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 389;\n t['omacron'] = 611;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 722;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 389;\n t['eogonek'] = 556;\n t['Uogonek'] = 722;\n t['Aacute'] = 722;\n t['Adieresis'] = 722;\n t['egrave'] = 556;\n t['zacute'] = 500;\n t['iogonek'] = 278;\n t['Oacute'] = 778;\n t['oacute'] = 611;\n t['amacron'] = 556;\n t['sacute'] = 556;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 778;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 611;\n t['twosuperior'] = 333;\n t['Odieresis'] = 778;\n t['mu'] = 611;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 611;\n t['Eogonek'] = 667;\n t['dcroat'] = 611;\n t['threequarters'] = 834;\n t['Scedilla'] = 667;\n t['lcaron'] = 400;\n t['Kcommaaccent'] = 722;\n t['Lacute'] = 611;\n t['trademark'] = 1000;\n t['edotaccent'] = 556;\n t['Igrave'] = 278;\n t['Imacron'] = 278;\n t['Lcaron'] = 611;\n t['onehalf'] = 834;\n t['lessequal'] = 549;\n t['ocircumflex'] = 611;\n t['ntilde'] = 611;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 556;\n t['gbreve'] = 611;\n t['onequarter'] = 834;\n t['Scaron'] = 667;\n t['Scommaaccent'] = 667;\n t['Ohungarumlaut'] = 778;\n t['degree'] = 400;\n t['ograve'] = 611;\n t['Ccaron'] = 722;\n t['ugrave'] = 611;\n t['radical'] = 549;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 389;\n t['Ntilde'] = 722;\n t['otilde'] = 611;\n t['Rcommaaccent'] = 722;\n t['Lcommaaccent'] = 611;\n t['Atilde'] = 722;\n t['Aogonek'] = 722;\n t['Aring'] = 722;\n t['Otilde'] = 778;\n t['zdotaccent'] = 500;\n t['Ecaron'] = 667;\n t['Iogonek'] = 278;\n t['kcommaaccent'] = 556;\n t['minus'] = 584;\n t['Icircumflex'] = 278;\n t['ncaron'] = 611;\n t['tcommaaccent'] = 333;\n t['logicalnot'] = 584;\n t['odieresis'] = 611;\n t['udieresis'] = 611;\n t['notequal'] = 549;\n t['gcommaaccent'] = 611;\n t['eth'] = 611;\n t['zcaron'] = 500;\n t['ncommaaccent'] = 611;\n t['onesuperior'] = 333;\n t['imacron'] = 278;\n t['Euro'] = 556;\n });\n t['Helvetica-BoldOblique'] = getLookupTableFactory(function (t) {\n t['space'] = 278;\n t['exclam'] = 333;\n t['quotedbl'] = 474;\n t['numbersign'] = 556;\n t['dollar'] = 556;\n t['percent'] = 889;\n t['ampersand'] = 722;\n t['quoteright'] = 278;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 389;\n t['plus'] = 584;\n t['comma'] = 278;\n t['hyphen'] = 333;\n t['period'] = 278;\n t['slash'] = 278;\n t['zero'] = 556;\n t['one'] = 556;\n t['two'] = 556;\n t['three'] = 556;\n t['four'] = 556;\n t['five'] = 556;\n t['six'] = 556;\n t['seven'] = 556;\n t['eight'] = 556;\n t['nine'] = 556;\n t['colon'] = 333;\n t['semicolon'] = 333;\n t['less'] = 584;\n t['equal'] = 584;\n t['greater'] = 584;\n t['question'] = 611;\n t['at'] = 975;\n t['A'] = 722;\n t['B'] = 722;\n t['C'] = 722;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 611;\n t['G'] = 778;\n t['H'] = 722;\n t['I'] = 278;\n t['J'] = 556;\n t['K'] = 722;\n t['L'] = 611;\n t['M'] = 833;\n t['N'] = 722;\n t['O'] = 778;\n t['P'] = 667;\n t['Q'] = 778;\n t['R'] = 722;\n t['S'] = 667;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 667;\n t['W'] = 944;\n t['X'] = 667;\n t['Y'] = 667;\n t['Z'] = 611;\n t['bracketleft'] = 333;\n t['backslash'] = 278;\n t['bracketright'] = 333;\n t['asciicircum'] = 584;\n t['underscore'] = 556;\n t['quoteleft'] = 278;\n t['a'] = 556;\n t['b'] = 611;\n t['c'] = 556;\n t['d'] = 611;\n t['e'] = 556;\n t['f'] = 333;\n t['g'] = 611;\n t['h'] = 611;\n t['i'] = 278;\n t['j'] = 278;\n t['k'] = 556;\n t['l'] = 278;\n t['m'] = 889;\n t['n'] = 611;\n t['o'] = 611;\n t['p'] = 611;\n t['q'] = 611;\n t['r'] = 389;\n t['s'] = 556;\n t['t'] = 333;\n t['u'] = 611;\n t['v'] = 556;\n t['w'] = 778;\n t['x'] = 556;\n t['y'] = 556;\n t['z'] = 500;\n t['braceleft'] = 389;\n t['bar'] = 280;\n t['braceright'] = 389;\n t['asciitilde'] = 584;\n t['exclamdown'] = 333;\n t['cent'] = 556;\n t['sterling'] = 556;\n t['fraction'] = 167;\n t['yen'] = 556;\n t['florin'] = 556;\n t['section'] = 556;\n t['currency'] = 556;\n t['quotesingle'] = 238;\n t['quotedblleft'] = 500;\n t['guillemotleft'] = 556;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 611;\n t['fl'] = 611;\n t['endash'] = 556;\n t['dagger'] = 556;\n t['daggerdbl'] = 556;\n t['periodcentered'] = 278;\n t['paragraph'] = 556;\n t['bullet'] = 350;\n t['quotesinglbase'] = 278;\n t['quotedblbase'] = 500;\n t['quotedblright'] = 500;\n t['guillemotright'] = 556;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 611;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 1000;\n t['ordfeminine'] = 370;\n t['Lslash'] = 611;\n t['Oslash'] = 778;\n t['OE'] = 1000;\n t['ordmasculine'] = 365;\n t['ae'] = 889;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 611;\n t['oe'] = 944;\n t['germandbls'] = 611;\n t['Idieresis'] = 278;\n t['eacute'] = 556;\n t['abreve'] = 556;\n t['uhungarumlaut'] = 611;\n t['ecaron'] = 556;\n t['Ydieresis'] = 667;\n t['divide'] = 584;\n t['Yacute'] = 667;\n t['Acircumflex'] = 722;\n t['aacute'] = 556;\n t['Ucircumflex'] = 722;\n t['yacute'] = 556;\n t['scommaaccent'] = 556;\n t['ecircumflex'] = 556;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 556;\n t['Uacute'] = 722;\n t['uogonek'] = 611;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 737;\n t['Emacron'] = 667;\n t['ccaron'] = 556;\n t['aring'] = 556;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 278;\n t['agrave'] = 556;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 722;\n t['atilde'] = 556;\n t['Edotaccent'] = 667;\n t['scaron'] = 556;\n t['scedilla'] = 556;\n t['iacute'] = 278;\n t['lozenge'] = 494;\n t['Rcaron'] = 722;\n t['Gcommaaccent'] = 778;\n t['ucircumflex'] = 611;\n t['acircumflex'] = 556;\n t['Amacron'] = 722;\n t['rcaron'] = 389;\n t['ccedilla'] = 556;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 667;\n t['Omacron'] = 778;\n t['Racute'] = 722;\n t['Sacute'] = 667;\n t['dcaron'] = 743;\n t['Umacron'] = 722;\n t['uring'] = 611;\n t['threesuperior'] = 333;\n t['Ograve'] = 778;\n t['Agrave'] = 722;\n t['Abreve'] = 722;\n t['multiply'] = 584;\n t['uacute'] = 611;\n t['Tcaron'] = 611;\n t['partialdiff'] = 494;\n t['ydieresis'] = 556;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 556;\n t['edieresis'] = 556;\n t['cacute'] = 556;\n t['nacute'] = 611;\n t['umacron'] = 611;\n t['Ncaron'] = 722;\n t['Iacute'] = 278;\n t['plusminus'] = 584;\n t['brokenbar'] = 280;\n t['registered'] = 737;\n t['Gbreve'] = 778;\n t['Idotaccent'] = 278;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 389;\n t['omacron'] = 611;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 722;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 389;\n t['eogonek'] = 556;\n t['Uogonek'] = 722;\n t['Aacute'] = 722;\n t['Adieresis'] = 722;\n t['egrave'] = 556;\n t['zacute'] = 500;\n t['iogonek'] = 278;\n t['Oacute'] = 778;\n t['oacute'] = 611;\n t['amacron'] = 556;\n t['sacute'] = 556;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 778;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 611;\n t['twosuperior'] = 333;\n t['Odieresis'] = 778;\n t['mu'] = 611;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 611;\n t['Eogonek'] = 667;\n t['dcroat'] = 611;\n t['threequarters'] = 834;\n t['Scedilla'] = 667;\n t['lcaron'] = 400;\n t['Kcommaaccent'] = 722;\n t['Lacute'] = 611;\n t['trademark'] = 1000;\n t['edotaccent'] = 556;\n t['Igrave'] = 278;\n t['Imacron'] = 278;\n t['Lcaron'] = 611;\n t['onehalf'] = 834;\n t['lessequal'] = 549;\n t['ocircumflex'] = 611;\n t['ntilde'] = 611;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 556;\n t['gbreve'] = 611;\n t['onequarter'] = 834;\n t['Scaron'] = 667;\n t['Scommaaccent'] = 667;\n t['Ohungarumlaut'] = 778;\n t['degree'] = 400;\n t['ograve'] = 611;\n t['Ccaron'] = 722;\n t['ugrave'] = 611;\n t['radical'] = 549;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 389;\n t['Ntilde'] = 722;\n t['otilde'] = 611;\n t['Rcommaaccent'] = 722;\n t['Lcommaaccent'] = 611;\n t['Atilde'] = 722;\n t['Aogonek'] = 722;\n t['Aring'] = 722;\n t['Otilde'] = 778;\n t['zdotaccent'] = 500;\n t['Ecaron'] = 667;\n t['Iogonek'] = 278;\n t['kcommaaccent'] = 556;\n t['minus'] = 584;\n t['Icircumflex'] = 278;\n t['ncaron'] = 611;\n t['tcommaaccent'] = 333;\n t['logicalnot'] = 584;\n t['odieresis'] = 611;\n t['udieresis'] = 611;\n t['notequal'] = 549;\n t['gcommaaccent'] = 611;\n t['eth'] = 611;\n t['zcaron'] = 500;\n t['ncommaaccent'] = 611;\n t['onesuperior'] = 333;\n t['imacron'] = 278;\n t['Euro'] = 556;\n });\n t['Helvetica-Oblique'] = getLookupTableFactory(function (t) {\n t['space'] = 278;\n t['exclam'] = 278;\n t['quotedbl'] = 355;\n t['numbersign'] = 556;\n t['dollar'] = 556;\n t['percent'] = 889;\n t['ampersand'] = 667;\n t['quoteright'] = 222;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 389;\n t['plus'] = 584;\n t['comma'] = 278;\n t['hyphen'] = 333;\n t['period'] = 278;\n t['slash'] = 278;\n t['zero'] = 556;\n t['one'] = 556;\n t['two'] = 556;\n t['three'] = 556;\n t['four'] = 556;\n t['five'] = 556;\n t['six'] = 556;\n t['seven'] = 556;\n t['eight'] = 556;\n t['nine'] = 556;\n t['colon'] = 278;\n t['semicolon'] = 278;\n t['less'] = 584;\n t['equal'] = 584;\n t['greater'] = 584;\n t['question'] = 556;\n t['at'] = 1015;\n t['A'] = 667;\n t['B'] = 667;\n t['C'] = 722;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 611;\n t['G'] = 778;\n t['H'] = 722;\n t['I'] = 278;\n t['J'] = 500;\n t['K'] = 667;\n t['L'] = 556;\n t['M'] = 833;\n t['N'] = 722;\n t['O'] = 778;\n t['P'] = 667;\n t['Q'] = 778;\n t['R'] = 722;\n t['S'] = 667;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 667;\n t['W'] = 944;\n t['X'] = 667;\n t['Y'] = 667;\n t['Z'] = 611;\n t['bracketleft'] = 278;\n t['backslash'] = 278;\n t['bracketright'] = 278;\n t['asciicircum'] = 469;\n t['underscore'] = 556;\n t['quoteleft'] = 222;\n t['a'] = 556;\n t['b'] = 556;\n t['c'] = 500;\n t['d'] = 556;\n t['e'] = 556;\n t['f'] = 278;\n t['g'] = 556;\n t['h'] = 556;\n t['i'] = 222;\n t['j'] = 222;\n t['k'] = 500;\n t['l'] = 222;\n t['m'] = 833;\n t['n'] = 556;\n t['o'] = 556;\n t['p'] = 556;\n t['q'] = 556;\n t['r'] = 333;\n t['s'] = 500;\n t['t'] = 278;\n t['u'] = 556;\n t['v'] = 500;\n t['w'] = 722;\n t['x'] = 500;\n t['y'] = 500;\n t['z'] = 500;\n t['braceleft'] = 334;\n t['bar'] = 260;\n t['braceright'] = 334;\n t['asciitilde'] = 584;\n t['exclamdown'] = 333;\n t['cent'] = 556;\n t['sterling'] = 556;\n t['fraction'] = 167;\n t['yen'] = 556;\n t['florin'] = 556;\n t['section'] = 556;\n t['currency'] = 556;\n t['quotesingle'] = 191;\n t['quotedblleft'] = 333;\n t['guillemotleft'] = 556;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 500;\n t['fl'] = 500;\n t['endash'] = 556;\n t['dagger'] = 556;\n t['daggerdbl'] = 556;\n t['periodcentered'] = 278;\n t['paragraph'] = 537;\n t['bullet'] = 350;\n t['quotesinglbase'] = 222;\n t['quotedblbase'] = 333;\n t['quotedblright'] = 333;\n t['guillemotright'] = 556;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 611;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 1000;\n t['ordfeminine'] = 370;\n t['Lslash'] = 556;\n t['Oslash'] = 778;\n t['OE'] = 1000;\n t['ordmasculine'] = 365;\n t['ae'] = 889;\n t['dotlessi'] = 278;\n t['lslash'] = 222;\n t['oslash'] = 611;\n t['oe'] = 944;\n t['germandbls'] = 611;\n t['Idieresis'] = 278;\n t['eacute'] = 556;\n t['abreve'] = 556;\n t['uhungarumlaut'] = 556;\n t['ecaron'] = 556;\n t['Ydieresis'] = 667;\n t['divide'] = 584;\n t['Yacute'] = 667;\n t['Acircumflex'] = 667;\n t['aacute'] = 556;\n t['Ucircumflex'] = 722;\n t['yacute'] = 500;\n t['scommaaccent'] = 500;\n t['ecircumflex'] = 556;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 556;\n t['Uacute'] = 722;\n t['uogonek'] = 556;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 737;\n t['Emacron'] = 667;\n t['ccaron'] = 500;\n t['aring'] = 556;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 222;\n t['agrave'] = 556;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 722;\n t['atilde'] = 556;\n t['Edotaccent'] = 667;\n t['scaron'] = 500;\n t['scedilla'] = 500;\n t['iacute'] = 278;\n t['lozenge'] = 471;\n t['Rcaron'] = 722;\n t['Gcommaaccent'] = 778;\n t['ucircumflex'] = 556;\n t['acircumflex'] = 556;\n t['Amacron'] = 667;\n t['rcaron'] = 333;\n t['ccedilla'] = 500;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 667;\n t['Omacron'] = 778;\n t['Racute'] = 722;\n t['Sacute'] = 667;\n t['dcaron'] = 643;\n t['Umacron'] = 722;\n t['uring'] = 556;\n t['threesuperior'] = 333;\n t['Ograve'] = 778;\n t['Agrave'] = 667;\n t['Abreve'] = 667;\n t['multiply'] = 584;\n t['uacute'] = 556;\n t['Tcaron'] = 611;\n t['partialdiff'] = 476;\n t['ydieresis'] = 500;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 556;\n t['edieresis'] = 556;\n t['cacute'] = 500;\n t['nacute'] = 556;\n t['umacron'] = 556;\n t['Ncaron'] = 722;\n t['Iacute'] = 278;\n t['plusminus'] = 584;\n t['brokenbar'] = 260;\n t['registered'] = 737;\n t['Gbreve'] = 778;\n t['Idotaccent'] = 278;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 333;\n t['omacron'] = 556;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 722;\n t['lcommaaccent'] = 222;\n t['tcaron'] = 317;\n t['eogonek'] = 556;\n t['Uogonek'] = 722;\n t['Aacute'] = 667;\n t['Adieresis'] = 667;\n t['egrave'] = 556;\n t['zacute'] = 500;\n t['iogonek'] = 222;\n t['Oacute'] = 778;\n t['oacute'] = 556;\n t['amacron'] = 556;\n t['sacute'] = 500;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 778;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 556;\n t['twosuperior'] = 333;\n t['Odieresis'] = 778;\n t['mu'] = 556;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 556;\n t['Eogonek'] = 667;\n t['dcroat'] = 556;\n t['threequarters'] = 834;\n t['Scedilla'] = 667;\n t['lcaron'] = 299;\n t['Kcommaaccent'] = 667;\n t['Lacute'] = 556;\n t['trademark'] = 1000;\n t['edotaccent'] = 556;\n t['Igrave'] = 278;\n t['Imacron'] = 278;\n t['Lcaron'] = 556;\n t['onehalf'] = 834;\n t['lessequal'] = 549;\n t['ocircumflex'] = 556;\n t['ntilde'] = 556;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 556;\n t['gbreve'] = 556;\n t['onequarter'] = 834;\n t['Scaron'] = 667;\n t['Scommaaccent'] = 667;\n t['Ohungarumlaut'] = 778;\n t['degree'] = 400;\n t['ograve'] = 556;\n t['Ccaron'] = 722;\n t['ugrave'] = 556;\n t['radical'] = 453;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 333;\n t['Ntilde'] = 722;\n t['otilde'] = 556;\n t['Rcommaaccent'] = 722;\n t['Lcommaaccent'] = 556;\n t['Atilde'] = 667;\n t['Aogonek'] = 667;\n t['Aring'] = 667;\n t['Otilde'] = 778;\n t['zdotaccent'] = 500;\n t['Ecaron'] = 667;\n t['Iogonek'] = 278;\n t['kcommaaccent'] = 500;\n t['minus'] = 584;\n t['Icircumflex'] = 278;\n t['ncaron'] = 556;\n t['tcommaaccent'] = 278;\n t['logicalnot'] = 584;\n t['odieresis'] = 556;\n t['udieresis'] = 556;\n t['notequal'] = 549;\n t['gcommaaccent'] = 556;\n t['eth'] = 556;\n t['zcaron'] = 500;\n t['ncommaaccent'] = 556;\n t['onesuperior'] = 333;\n t['imacron'] = 278;\n t['Euro'] = 556;\n });\n t['Symbol'] = getLookupTableFactory(function (t) {\n t['space'] = 250;\n t['exclam'] = 333;\n t['universal'] = 713;\n t['numbersign'] = 500;\n t['existential'] = 549;\n t['percent'] = 833;\n t['ampersand'] = 778;\n t['suchthat'] = 439;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asteriskmath'] = 500;\n t['plus'] = 549;\n t['comma'] = 250;\n t['minus'] = 549;\n t['period'] = 250;\n t['slash'] = 278;\n t['zero'] = 500;\n t['one'] = 500;\n t['two'] = 500;\n t['three'] = 500;\n t['four'] = 500;\n t['five'] = 500;\n t['six'] = 500;\n t['seven'] = 500;\n t['eight'] = 500;\n t['nine'] = 500;\n t['colon'] = 278;\n t['semicolon'] = 278;\n t['less'] = 549;\n t['equal'] = 549;\n t['greater'] = 549;\n t['question'] = 444;\n t['congruent'] = 549;\n t['Alpha'] = 722;\n t['Beta'] = 667;\n t['Chi'] = 722;\n t['Delta'] = 612;\n t['Epsilon'] = 611;\n t['Phi'] = 763;\n t['Gamma'] = 603;\n t['Eta'] = 722;\n t['Iota'] = 333;\n t['theta1'] = 631;\n t['Kappa'] = 722;\n t['Lambda'] = 686;\n t['Mu'] = 889;\n t['Nu'] = 722;\n t['Omicron'] = 722;\n t['Pi'] = 768;\n t['Theta'] = 741;\n t['Rho'] = 556;\n t['Sigma'] = 592;\n t['Tau'] = 611;\n t['Upsilon'] = 690;\n t['sigma1'] = 439;\n t['Omega'] = 768;\n t['Xi'] = 645;\n t['Psi'] = 795;\n t['Zeta'] = 611;\n t['bracketleft'] = 333;\n t['therefore'] = 863;\n t['bracketright'] = 333;\n t['perpendicular'] = 658;\n t['underscore'] = 500;\n t['radicalex'] = 500;\n t['alpha'] = 631;\n t['beta'] = 549;\n t['chi'] = 549;\n t['delta'] = 494;\n t['epsilon'] = 439;\n t['phi'] = 521;\n t['gamma'] = 411;\n t['eta'] = 603;\n t['iota'] = 329;\n t['phi1'] = 603;\n t['kappa'] = 549;\n t['lambda'] = 549;\n t['mu'] = 576;\n t['nu'] = 521;\n t['omicron'] = 549;\n t['pi'] = 549;\n t['theta'] = 521;\n t['rho'] = 549;\n t['sigma'] = 603;\n t['tau'] = 439;\n t['upsilon'] = 576;\n t['omega1'] = 713;\n t['omega'] = 686;\n t['xi'] = 493;\n t['psi'] = 686;\n t['zeta'] = 494;\n t['braceleft'] = 480;\n t['bar'] = 200;\n t['braceright'] = 480;\n t['similar'] = 549;\n t['Euro'] = 750;\n t['Upsilon1'] = 620;\n t['minute'] = 247;\n t['lessequal'] = 549;\n t['fraction'] = 167;\n t['infinity'] = 713;\n t['florin'] = 500;\n t['club'] = 753;\n t['diamond'] = 753;\n t['heart'] = 753;\n t['spade'] = 753;\n t['arrowboth'] = 1042;\n t['arrowleft'] = 987;\n t['arrowup'] = 603;\n t['arrowright'] = 987;\n t['arrowdown'] = 603;\n t['degree'] = 400;\n t['plusminus'] = 549;\n t['second'] = 411;\n t['greaterequal'] = 549;\n t['multiply'] = 549;\n t['proportional'] = 713;\n t['partialdiff'] = 494;\n t['bullet'] = 460;\n t['divide'] = 549;\n t['notequal'] = 549;\n t['equivalence'] = 549;\n t['approxequal'] = 549;\n t['ellipsis'] = 1000;\n t['arrowvertex'] = 603;\n t['arrowhorizex'] = 1000;\n t['carriagereturn'] = 658;\n t['aleph'] = 823;\n t['Ifraktur'] = 686;\n t['Rfraktur'] = 795;\n t['weierstrass'] = 987;\n t['circlemultiply'] = 768;\n t['circleplus'] = 768;\n t['emptyset'] = 823;\n t['intersection'] = 768;\n t['union'] = 768;\n t['propersuperset'] = 713;\n t['reflexsuperset'] = 713;\n t['notsubset'] = 713;\n t['propersubset'] = 713;\n t['reflexsubset'] = 713;\n t['element'] = 713;\n t['notelement'] = 713;\n t['angle'] = 768;\n t['gradient'] = 713;\n t['registerserif'] = 790;\n t['copyrightserif'] = 790;\n t['trademarkserif'] = 890;\n t['product'] = 823;\n t['radical'] = 549;\n t['dotmath'] = 250;\n t['logicalnot'] = 713;\n t['logicaland'] = 603;\n t['logicalor'] = 603;\n t['arrowdblboth'] = 1042;\n t['arrowdblleft'] = 987;\n t['arrowdblup'] = 603;\n t['arrowdblright'] = 987;\n t['arrowdbldown'] = 603;\n t['lozenge'] = 494;\n t['angleleft'] = 329;\n t['registersans'] = 790;\n t['copyrightsans'] = 790;\n t['trademarksans'] = 786;\n t['summation'] = 713;\n t['parenlefttp'] = 384;\n t['parenleftex'] = 384;\n t['parenleftbt'] = 384;\n t['bracketlefttp'] = 384;\n t['bracketleftex'] = 384;\n t['bracketleftbt'] = 384;\n t['bracelefttp'] = 494;\n t['braceleftmid'] = 494;\n t['braceleftbt'] = 494;\n t['braceex'] = 494;\n t['angleright'] = 329;\n t['integral'] = 274;\n t['integraltp'] = 686;\n t['integralex'] = 686;\n t['integralbt'] = 686;\n t['parenrighttp'] = 384;\n t['parenrightex'] = 384;\n t['parenrightbt'] = 384;\n t['bracketrighttp'] = 384;\n t['bracketrightex'] = 384;\n t['bracketrightbt'] = 384;\n t['bracerighttp'] = 494;\n t['bracerightmid'] = 494;\n t['bracerightbt'] = 494;\n t['apple'] = 790;\n });\n t['Times-Roman'] = getLookupTableFactory(function (t) {\n t['space'] = 250;\n t['exclam'] = 333;\n t['quotedbl'] = 408;\n t['numbersign'] = 500;\n t['dollar'] = 500;\n t['percent'] = 833;\n t['ampersand'] = 778;\n t['quoteright'] = 333;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 500;\n t['plus'] = 564;\n t['comma'] = 250;\n t['hyphen'] = 333;\n t['period'] = 250;\n t['slash'] = 278;\n t['zero'] = 500;\n t['one'] = 500;\n t['two'] = 500;\n t['three'] = 500;\n t['four'] = 500;\n t['five'] = 500;\n t['six'] = 500;\n t['seven'] = 500;\n t['eight'] = 500;\n t['nine'] = 500;\n t['colon'] = 278;\n t['semicolon'] = 278;\n t['less'] = 564;\n t['equal'] = 564;\n t['greater'] = 564;\n t['question'] = 444;\n t['at'] = 921;\n t['A'] = 722;\n t['B'] = 667;\n t['C'] = 667;\n t['D'] = 722;\n t['E'] = 611;\n t['F'] = 556;\n t['G'] = 722;\n t['H'] = 722;\n t['I'] = 333;\n t['J'] = 389;\n t['K'] = 722;\n t['L'] = 611;\n t['M'] = 889;\n t['N'] = 722;\n t['O'] = 722;\n t['P'] = 556;\n t['Q'] = 722;\n t['R'] = 667;\n t['S'] = 556;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 722;\n t['W'] = 944;\n t['X'] = 722;\n t['Y'] = 722;\n t['Z'] = 611;\n t['bracketleft'] = 333;\n t['backslash'] = 278;\n t['bracketright'] = 333;\n t['asciicircum'] = 469;\n t['underscore'] = 500;\n t['quoteleft'] = 333;\n t['a'] = 444;\n t['b'] = 500;\n t['c'] = 444;\n t['d'] = 500;\n t['e'] = 444;\n t['f'] = 333;\n t['g'] = 500;\n t['h'] = 500;\n t['i'] = 278;\n t['j'] = 278;\n t['k'] = 500;\n t['l'] = 278;\n t['m'] = 778;\n t['n'] = 500;\n t['o'] = 500;\n t['p'] = 500;\n t['q'] = 500;\n t['r'] = 333;\n t['s'] = 389;\n t['t'] = 278;\n t['u'] = 500;\n t['v'] = 500;\n t['w'] = 722;\n t['x'] = 500;\n t['y'] = 500;\n t['z'] = 444;\n t['braceleft'] = 480;\n t['bar'] = 200;\n t['braceright'] = 480;\n t['asciitilde'] = 541;\n t['exclamdown'] = 333;\n t['cent'] = 500;\n t['sterling'] = 500;\n t['fraction'] = 167;\n t['yen'] = 500;\n t['florin'] = 500;\n t['section'] = 500;\n t['currency'] = 500;\n t['quotesingle'] = 180;\n t['quotedblleft'] = 444;\n t['guillemotleft'] = 500;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 556;\n t['fl'] = 556;\n t['endash'] = 500;\n t['dagger'] = 500;\n t['daggerdbl'] = 500;\n t['periodcentered'] = 250;\n t['paragraph'] = 453;\n t['bullet'] = 350;\n t['quotesinglbase'] = 333;\n t['quotedblbase'] = 444;\n t['quotedblright'] = 444;\n t['guillemotright'] = 500;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 444;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 889;\n t['ordfeminine'] = 276;\n t['Lslash'] = 611;\n t['Oslash'] = 722;\n t['OE'] = 889;\n t['ordmasculine'] = 310;\n t['ae'] = 667;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 500;\n t['oe'] = 722;\n t['germandbls'] = 500;\n t['Idieresis'] = 333;\n t['eacute'] = 444;\n t['abreve'] = 444;\n t['uhungarumlaut'] = 500;\n t['ecaron'] = 444;\n t['Ydieresis'] = 722;\n t['divide'] = 564;\n t['Yacute'] = 722;\n t['Acircumflex'] = 722;\n t['aacute'] = 444;\n t['Ucircumflex'] = 722;\n t['yacute'] = 500;\n t['scommaaccent'] = 389;\n t['ecircumflex'] = 444;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 444;\n t['Uacute'] = 722;\n t['uogonek'] = 500;\n t['Edieresis'] = 611;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 760;\n t['Emacron'] = 611;\n t['ccaron'] = 444;\n t['aring'] = 444;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 278;\n t['agrave'] = 444;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 667;\n t['atilde'] = 444;\n t['Edotaccent'] = 611;\n t['scaron'] = 389;\n t['scedilla'] = 389;\n t['iacute'] = 278;\n t['lozenge'] = 471;\n t['Rcaron'] = 667;\n t['Gcommaaccent'] = 722;\n t['ucircumflex'] = 500;\n t['acircumflex'] = 444;\n t['Amacron'] = 722;\n t['rcaron'] = 333;\n t['ccedilla'] = 444;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 556;\n t['Omacron'] = 722;\n t['Racute'] = 667;\n t['Sacute'] = 556;\n t['dcaron'] = 588;\n t['Umacron'] = 722;\n t['uring'] = 500;\n t['threesuperior'] = 300;\n t['Ograve'] = 722;\n t['Agrave'] = 722;\n t['Abreve'] = 722;\n t['multiply'] = 564;\n t['uacute'] = 500;\n t['Tcaron'] = 611;\n t['partialdiff'] = 476;\n t['ydieresis'] = 500;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 611;\n t['adieresis'] = 444;\n t['edieresis'] = 444;\n t['cacute'] = 444;\n t['nacute'] = 500;\n t['umacron'] = 500;\n t['Ncaron'] = 722;\n t['Iacute'] = 333;\n t['plusminus'] = 564;\n t['brokenbar'] = 200;\n t['registered'] = 760;\n t['Gbreve'] = 722;\n t['Idotaccent'] = 333;\n t['summation'] = 600;\n t['Egrave'] = 611;\n t['racute'] = 333;\n t['omacron'] = 500;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 667;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 326;\n t['eogonek'] = 444;\n t['Uogonek'] = 722;\n t['Aacute'] = 722;\n t['Adieresis'] = 722;\n t['egrave'] = 444;\n t['zacute'] = 444;\n t['iogonek'] = 278;\n t['Oacute'] = 722;\n t['oacute'] = 500;\n t['amacron'] = 444;\n t['sacute'] = 389;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 722;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 500;\n t['twosuperior'] = 300;\n t['Odieresis'] = 722;\n t['mu'] = 500;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 500;\n t['Eogonek'] = 611;\n t['dcroat'] = 500;\n t['threequarters'] = 750;\n t['Scedilla'] = 556;\n t['lcaron'] = 344;\n t['Kcommaaccent'] = 722;\n t['Lacute'] = 611;\n t['trademark'] = 980;\n t['edotaccent'] = 444;\n t['Igrave'] = 333;\n t['Imacron'] = 333;\n t['Lcaron'] = 611;\n t['onehalf'] = 750;\n t['lessequal'] = 549;\n t['ocircumflex'] = 500;\n t['ntilde'] = 500;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 611;\n t['emacron'] = 444;\n t['gbreve'] = 500;\n t['onequarter'] = 750;\n t['Scaron'] = 556;\n t['Scommaaccent'] = 556;\n t['Ohungarumlaut'] = 722;\n t['degree'] = 400;\n t['ograve'] = 500;\n t['Ccaron'] = 667;\n t['ugrave'] = 500;\n t['radical'] = 453;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 333;\n t['Ntilde'] = 722;\n t['otilde'] = 500;\n t['Rcommaaccent'] = 667;\n t['Lcommaaccent'] = 611;\n t['Atilde'] = 722;\n t['Aogonek'] = 722;\n t['Aring'] = 722;\n t['Otilde'] = 722;\n t['zdotaccent'] = 444;\n t['Ecaron'] = 611;\n t['Iogonek'] = 333;\n t['kcommaaccent'] = 500;\n t['minus'] = 564;\n t['Icircumflex'] = 333;\n t['ncaron'] = 500;\n t['tcommaaccent'] = 278;\n t['logicalnot'] = 564;\n t['odieresis'] = 500;\n t['udieresis'] = 500;\n t['notequal'] = 549;\n t['gcommaaccent'] = 500;\n t['eth'] = 500;\n t['zcaron'] = 444;\n t['ncommaaccent'] = 500;\n t['onesuperior'] = 300;\n t['imacron'] = 278;\n t['Euro'] = 500;\n });\n t['Times-Bold'] = getLookupTableFactory(function (t) {\n t['space'] = 250;\n t['exclam'] = 333;\n t['quotedbl'] = 555;\n t['numbersign'] = 500;\n t['dollar'] = 500;\n t['percent'] = 1000;\n t['ampersand'] = 833;\n t['quoteright'] = 333;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 500;\n t['plus'] = 570;\n t['comma'] = 250;\n t['hyphen'] = 333;\n t['period'] = 250;\n t['slash'] = 278;\n t['zero'] = 500;\n t['one'] = 500;\n t['two'] = 500;\n t['three'] = 500;\n t['four'] = 500;\n t['five'] = 500;\n t['six'] = 500;\n t['seven'] = 500;\n t['eight'] = 500;\n t['nine'] = 500;\n t['colon'] = 333;\n t['semicolon'] = 333;\n t['less'] = 570;\n t['equal'] = 570;\n t['greater'] = 570;\n t['question'] = 500;\n t['at'] = 930;\n t['A'] = 722;\n t['B'] = 667;\n t['C'] = 722;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 611;\n t['G'] = 778;\n t['H'] = 778;\n t['I'] = 389;\n t['J'] = 500;\n t['K'] = 778;\n t['L'] = 667;\n t['M'] = 944;\n t['N'] = 722;\n t['O'] = 778;\n t['P'] = 611;\n t['Q'] = 778;\n t['R'] = 722;\n t['S'] = 556;\n t['T'] = 667;\n t['U'] = 722;\n t['V'] = 722;\n t['W'] = 1000;\n t['X'] = 722;\n t['Y'] = 722;\n t['Z'] = 667;\n t['bracketleft'] = 333;\n t['backslash'] = 278;\n t['bracketright'] = 333;\n t['asciicircum'] = 581;\n t['underscore'] = 500;\n t['quoteleft'] = 333;\n t['a'] = 500;\n t['b'] = 556;\n t['c'] = 444;\n t['d'] = 556;\n t['e'] = 444;\n t['f'] = 333;\n t['g'] = 500;\n t['h'] = 556;\n t['i'] = 278;\n t['j'] = 333;\n t['k'] = 556;\n t['l'] = 278;\n t['m'] = 833;\n t['n'] = 556;\n t['o'] = 500;\n t['p'] = 556;\n t['q'] = 556;\n t['r'] = 444;\n t['s'] = 389;\n t['t'] = 333;\n t['u'] = 556;\n t['v'] = 500;\n t['w'] = 722;\n t['x'] = 500;\n t['y'] = 500;\n t['z'] = 444;\n t['braceleft'] = 394;\n t['bar'] = 220;\n t['braceright'] = 394;\n t['asciitilde'] = 520;\n t['exclamdown'] = 333;\n t['cent'] = 500;\n t['sterling'] = 500;\n t['fraction'] = 167;\n t['yen'] = 500;\n t['florin'] = 500;\n t['section'] = 500;\n t['currency'] = 500;\n t['quotesingle'] = 278;\n t['quotedblleft'] = 500;\n t['guillemotleft'] = 500;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 556;\n t['fl'] = 556;\n t['endash'] = 500;\n t['dagger'] = 500;\n t['daggerdbl'] = 500;\n t['periodcentered'] = 250;\n t['paragraph'] = 540;\n t['bullet'] = 350;\n t['quotesinglbase'] = 333;\n t['quotedblbase'] = 500;\n t['quotedblright'] = 500;\n t['guillemotright'] = 500;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 500;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 1000;\n t['ordfeminine'] = 300;\n t['Lslash'] = 667;\n t['Oslash'] = 778;\n t['OE'] = 1000;\n t['ordmasculine'] = 330;\n t['ae'] = 722;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 500;\n t['oe'] = 722;\n t['germandbls'] = 556;\n t['Idieresis'] = 389;\n t['eacute'] = 444;\n t['abreve'] = 500;\n t['uhungarumlaut'] = 556;\n t['ecaron'] = 444;\n t['Ydieresis'] = 722;\n t['divide'] = 570;\n t['Yacute'] = 722;\n t['Acircumflex'] = 722;\n t['aacute'] = 500;\n t['Ucircumflex'] = 722;\n t['yacute'] = 500;\n t['scommaaccent'] = 389;\n t['ecircumflex'] = 444;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 500;\n t['Uacute'] = 722;\n t['uogonek'] = 556;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 747;\n t['Emacron'] = 667;\n t['ccaron'] = 444;\n t['aring'] = 500;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 278;\n t['agrave'] = 500;\n t['Tcommaaccent'] = 667;\n t['Cacute'] = 722;\n t['atilde'] = 500;\n t['Edotaccent'] = 667;\n t['scaron'] = 389;\n t['scedilla'] = 389;\n t['iacute'] = 278;\n t['lozenge'] = 494;\n t['Rcaron'] = 722;\n t['Gcommaaccent'] = 778;\n t['ucircumflex'] = 556;\n t['acircumflex'] = 500;\n t['Amacron'] = 722;\n t['rcaron'] = 444;\n t['ccedilla'] = 444;\n t['Zdotaccent'] = 667;\n t['Thorn'] = 611;\n t['Omacron'] = 778;\n t['Racute'] = 722;\n t['Sacute'] = 556;\n t['dcaron'] = 672;\n t['Umacron'] = 722;\n t['uring'] = 556;\n t['threesuperior'] = 300;\n t['Ograve'] = 778;\n t['Agrave'] = 722;\n t['Abreve'] = 722;\n t['multiply'] = 570;\n t['uacute'] = 556;\n t['Tcaron'] = 667;\n t['partialdiff'] = 494;\n t['ydieresis'] = 500;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 500;\n t['edieresis'] = 444;\n t['cacute'] = 444;\n t['nacute'] = 556;\n t['umacron'] = 556;\n t['Ncaron'] = 722;\n t['Iacute'] = 389;\n t['plusminus'] = 570;\n t['brokenbar'] = 220;\n t['registered'] = 747;\n t['Gbreve'] = 778;\n t['Idotaccent'] = 389;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 444;\n t['omacron'] = 500;\n t['Zacute'] = 667;\n t['Zcaron'] = 667;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 722;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 416;\n t['eogonek'] = 444;\n t['Uogonek'] = 722;\n t['Aacute'] = 722;\n t['Adieresis'] = 722;\n t['egrave'] = 444;\n t['zacute'] = 444;\n t['iogonek'] = 278;\n t['Oacute'] = 778;\n t['oacute'] = 500;\n t['amacron'] = 500;\n t['sacute'] = 389;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 778;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 556;\n t['twosuperior'] = 300;\n t['Odieresis'] = 778;\n t['mu'] = 556;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 500;\n t['Eogonek'] = 667;\n t['dcroat'] = 556;\n t['threequarters'] = 750;\n t['Scedilla'] = 556;\n t['lcaron'] = 394;\n t['Kcommaaccent'] = 778;\n t['Lacute'] = 667;\n t['trademark'] = 1000;\n t['edotaccent'] = 444;\n t['Igrave'] = 389;\n t['Imacron'] = 389;\n t['Lcaron'] = 667;\n t['onehalf'] = 750;\n t['lessequal'] = 549;\n t['ocircumflex'] = 500;\n t['ntilde'] = 556;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 444;\n t['gbreve'] = 500;\n t['onequarter'] = 750;\n t['Scaron'] = 556;\n t['Scommaaccent'] = 556;\n t['Ohungarumlaut'] = 778;\n t['degree'] = 400;\n t['ograve'] = 500;\n t['Ccaron'] = 722;\n t['ugrave'] = 556;\n t['radical'] = 549;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 444;\n t['Ntilde'] = 722;\n t['otilde'] = 500;\n t['Rcommaaccent'] = 722;\n t['Lcommaaccent'] = 667;\n t['Atilde'] = 722;\n t['Aogonek'] = 722;\n t['Aring'] = 722;\n t['Otilde'] = 778;\n t['zdotaccent'] = 444;\n t['Ecaron'] = 667;\n t['Iogonek'] = 389;\n t['kcommaaccent'] = 556;\n t['minus'] = 570;\n t['Icircumflex'] = 389;\n t['ncaron'] = 556;\n t['tcommaaccent'] = 333;\n t['logicalnot'] = 570;\n t['odieresis'] = 500;\n t['udieresis'] = 556;\n t['notequal'] = 549;\n t['gcommaaccent'] = 500;\n t['eth'] = 500;\n t['zcaron'] = 444;\n t['ncommaaccent'] = 556;\n t['onesuperior'] = 300;\n t['imacron'] = 278;\n t['Euro'] = 500;\n });\n t['Times-BoldItalic'] = getLookupTableFactory(function (t) {\n t['space'] = 250;\n t['exclam'] = 389;\n t['quotedbl'] = 555;\n t['numbersign'] = 500;\n t['dollar'] = 500;\n t['percent'] = 833;\n t['ampersand'] = 778;\n t['quoteright'] = 333;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 500;\n t['plus'] = 570;\n t['comma'] = 250;\n t['hyphen'] = 333;\n t['period'] = 250;\n t['slash'] = 278;\n t['zero'] = 500;\n t['one'] = 500;\n t['two'] = 500;\n t['three'] = 500;\n t['four'] = 500;\n t['five'] = 500;\n t['six'] = 500;\n t['seven'] = 500;\n t['eight'] = 500;\n t['nine'] = 500;\n t['colon'] = 333;\n t['semicolon'] = 333;\n t['less'] = 570;\n t['equal'] = 570;\n t['greater'] = 570;\n t['question'] = 500;\n t['at'] = 832;\n t['A'] = 667;\n t['B'] = 667;\n t['C'] = 667;\n t['D'] = 722;\n t['E'] = 667;\n t['F'] = 667;\n t['G'] = 722;\n t['H'] = 778;\n t['I'] = 389;\n t['J'] = 500;\n t['K'] = 667;\n t['L'] = 611;\n t['M'] = 889;\n t['N'] = 722;\n t['O'] = 722;\n t['P'] = 611;\n t['Q'] = 722;\n t['R'] = 667;\n t['S'] = 556;\n t['T'] = 611;\n t['U'] = 722;\n t['V'] = 667;\n t['W'] = 889;\n t['X'] = 667;\n t['Y'] = 611;\n t['Z'] = 611;\n t['bracketleft'] = 333;\n t['backslash'] = 278;\n t['bracketright'] = 333;\n t['asciicircum'] = 570;\n t['underscore'] = 500;\n t['quoteleft'] = 333;\n t['a'] = 500;\n t['b'] = 500;\n t['c'] = 444;\n t['d'] = 500;\n t['e'] = 444;\n t['f'] = 333;\n t['g'] = 500;\n t['h'] = 556;\n t['i'] = 278;\n t['j'] = 278;\n t['k'] = 500;\n t['l'] = 278;\n t['m'] = 778;\n t['n'] = 556;\n t['o'] = 500;\n t['p'] = 500;\n t['q'] = 500;\n t['r'] = 389;\n t['s'] = 389;\n t['t'] = 278;\n t['u'] = 556;\n t['v'] = 444;\n t['w'] = 667;\n t['x'] = 500;\n t['y'] = 444;\n t['z'] = 389;\n t['braceleft'] = 348;\n t['bar'] = 220;\n t['braceright'] = 348;\n t['asciitilde'] = 570;\n t['exclamdown'] = 389;\n t['cent'] = 500;\n t['sterling'] = 500;\n t['fraction'] = 167;\n t['yen'] = 500;\n t['florin'] = 500;\n t['section'] = 500;\n t['currency'] = 500;\n t['quotesingle'] = 278;\n t['quotedblleft'] = 500;\n t['guillemotleft'] = 500;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 556;\n t['fl'] = 556;\n t['endash'] = 500;\n t['dagger'] = 500;\n t['daggerdbl'] = 500;\n t['periodcentered'] = 250;\n t['paragraph'] = 500;\n t['bullet'] = 350;\n t['quotesinglbase'] = 333;\n t['quotedblbase'] = 500;\n t['quotedblright'] = 500;\n t['guillemotright'] = 500;\n t['ellipsis'] = 1000;\n t['perthousand'] = 1000;\n t['questiondown'] = 500;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 1000;\n t['AE'] = 944;\n t['ordfeminine'] = 266;\n t['Lslash'] = 611;\n t['Oslash'] = 722;\n t['OE'] = 944;\n t['ordmasculine'] = 300;\n t['ae'] = 722;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 500;\n t['oe'] = 722;\n t['germandbls'] = 500;\n t['Idieresis'] = 389;\n t['eacute'] = 444;\n t['abreve'] = 500;\n t['uhungarumlaut'] = 556;\n t['ecaron'] = 444;\n t['Ydieresis'] = 611;\n t['divide'] = 570;\n t['Yacute'] = 611;\n t['Acircumflex'] = 667;\n t['aacute'] = 500;\n t['Ucircumflex'] = 722;\n t['yacute'] = 444;\n t['scommaaccent'] = 389;\n t['ecircumflex'] = 444;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 500;\n t['Uacute'] = 722;\n t['uogonek'] = 556;\n t['Edieresis'] = 667;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 747;\n t['Emacron'] = 667;\n t['ccaron'] = 444;\n t['aring'] = 500;\n t['Ncommaaccent'] = 722;\n t['lacute'] = 278;\n t['agrave'] = 500;\n t['Tcommaaccent'] = 611;\n t['Cacute'] = 667;\n t['atilde'] = 500;\n t['Edotaccent'] = 667;\n t['scaron'] = 389;\n t['scedilla'] = 389;\n t['iacute'] = 278;\n t['lozenge'] = 494;\n t['Rcaron'] = 667;\n t['Gcommaaccent'] = 722;\n t['ucircumflex'] = 556;\n t['acircumflex'] = 500;\n t['Amacron'] = 667;\n t['rcaron'] = 389;\n t['ccedilla'] = 444;\n t['Zdotaccent'] = 611;\n t['Thorn'] = 611;\n t['Omacron'] = 722;\n t['Racute'] = 667;\n t['Sacute'] = 556;\n t['dcaron'] = 608;\n t['Umacron'] = 722;\n t['uring'] = 556;\n t['threesuperior'] = 300;\n t['Ograve'] = 722;\n t['Agrave'] = 667;\n t['Abreve'] = 667;\n t['multiply'] = 570;\n t['uacute'] = 556;\n t['Tcaron'] = 611;\n t['partialdiff'] = 494;\n t['ydieresis'] = 444;\n t['Nacute'] = 722;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 667;\n t['adieresis'] = 500;\n t['edieresis'] = 444;\n t['cacute'] = 444;\n t['nacute'] = 556;\n t['umacron'] = 556;\n t['Ncaron'] = 722;\n t['Iacute'] = 389;\n t['plusminus'] = 570;\n t['brokenbar'] = 220;\n t['registered'] = 747;\n t['Gbreve'] = 722;\n t['Idotaccent'] = 389;\n t['summation'] = 600;\n t['Egrave'] = 667;\n t['racute'] = 389;\n t['omacron'] = 500;\n t['Zacute'] = 611;\n t['Zcaron'] = 611;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 667;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 366;\n t['eogonek'] = 444;\n t['Uogonek'] = 722;\n t['Aacute'] = 667;\n t['Adieresis'] = 667;\n t['egrave'] = 444;\n t['zacute'] = 389;\n t['iogonek'] = 278;\n t['Oacute'] = 722;\n t['oacute'] = 500;\n t['amacron'] = 500;\n t['sacute'] = 389;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 722;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 500;\n t['twosuperior'] = 300;\n t['Odieresis'] = 722;\n t['mu'] = 576;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 500;\n t['Eogonek'] = 667;\n t['dcroat'] = 500;\n t['threequarters'] = 750;\n t['Scedilla'] = 556;\n t['lcaron'] = 382;\n t['Kcommaaccent'] = 667;\n t['Lacute'] = 611;\n t['trademark'] = 1000;\n t['edotaccent'] = 444;\n t['Igrave'] = 389;\n t['Imacron'] = 389;\n t['Lcaron'] = 611;\n t['onehalf'] = 750;\n t['lessequal'] = 549;\n t['ocircumflex'] = 500;\n t['ntilde'] = 556;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 667;\n t['emacron'] = 444;\n t['gbreve'] = 500;\n t['onequarter'] = 750;\n t['Scaron'] = 556;\n t['Scommaaccent'] = 556;\n t['Ohungarumlaut'] = 722;\n t['degree'] = 400;\n t['ograve'] = 500;\n t['Ccaron'] = 667;\n t['ugrave'] = 556;\n t['radical'] = 549;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 389;\n t['Ntilde'] = 722;\n t['otilde'] = 500;\n t['Rcommaaccent'] = 667;\n t['Lcommaaccent'] = 611;\n t['Atilde'] = 667;\n t['Aogonek'] = 667;\n t['Aring'] = 667;\n t['Otilde'] = 722;\n t['zdotaccent'] = 389;\n t['Ecaron'] = 667;\n t['Iogonek'] = 389;\n t['kcommaaccent'] = 500;\n t['minus'] = 606;\n t['Icircumflex'] = 389;\n t['ncaron'] = 556;\n t['tcommaaccent'] = 278;\n t['logicalnot'] = 606;\n t['odieresis'] = 500;\n t['udieresis'] = 556;\n t['notequal'] = 549;\n t['gcommaaccent'] = 500;\n t['eth'] = 500;\n t['zcaron'] = 389;\n t['ncommaaccent'] = 556;\n t['onesuperior'] = 300;\n t['imacron'] = 278;\n t['Euro'] = 500;\n });\n t['Times-Italic'] = getLookupTableFactory(function (t) {\n t['space'] = 250;\n t['exclam'] = 333;\n t['quotedbl'] = 420;\n t['numbersign'] = 500;\n t['dollar'] = 500;\n t['percent'] = 833;\n t['ampersand'] = 778;\n t['quoteright'] = 333;\n t['parenleft'] = 333;\n t['parenright'] = 333;\n t['asterisk'] = 500;\n t['plus'] = 675;\n t['comma'] = 250;\n t['hyphen'] = 333;\n t['period'] = 250;\n t['slash'] = 278;\n t['zero'] = 500;\n t['one'] = 500;\n t['two'] = 500;\n t['three'] = 500;\n t['four'] = 500;\n t['five'] = 500;\n t['six'] = 500;\n t['seven'] = 500;\n t['eight'] = 500;\n t['nine'] = 500;\n t['colon'] = 333;\n t['semicolon'] = 333;\n t['less'] = 675;\n t['equal'] = 675;\n t['greater'] = 675;\n t['question'] = 500;\n t['at'] = 920;\n t['A'] = 611;\n t['B'] = 611;\n t['C'] = 667;\n t['D'] = 722;\n t['E'] = 611;\n t['F'] = 611;\n t['G'] = 722;\n t['H'] = 722;\n t['I'] = 333;\n t['J'] = 444;\n t['K'] = 667;\n t['L'] = 556;\n t['M'] = 833;\n t['N'] = 667;\n t['O'] = 722;\n t['P'] = 611;\n t['Q'] = 722;\n t['R'] = 611;\n t['S'] = 500;\n t['T'] = 556;\n t['U'] = 722;\n t['V'] = 611;\n t['W'] = 833;\n t['X'] = 611;\n t['Y'] = 556;\n t['Z'] = 556;\n t['bracketleft'] = 389;\n t['backslash'] = 278;\n t['bracketright'] = 389;\n t['asciicircum'] = 422;\n t['underscore'] = 500;\n t['quoteleft'] = 333;\n t['a'] = 500;\n t['b'] = 500;\n t['c'] = 444;\n t['d'] = 500;\n t['e'] = 444;\n t['f'] = 278;\n t['g'] = 500;\n t['h'] = 500;\n t['i'] = 278;\n t['j'] = 278;\n t['k'] = 444;\n t['l'] = 278;\n t['m'] = 722;\n t['n'] = 500;\n t['o'] = 500;\n t['p'] = 500;\n t['q'] = 500;\n t['r'] = 389;\n t['s'] = 389;\n t['t'] = 278;\n t['u'] = 500;\n t['v'] = 444;\n t['w'] = 667;\n t['x'] = 444;\n t['y'] = 444;\n t['z'] = 389;\n t['braceleft'] = 400;\n t['bar'] = 275;\n t['braceright'] = 400;\n t['asciitilde'] = 541;\n t['exclamdown'] = 389;\n t['cent'] = 500;\n t['sterling'] = 500;\n t['fraction'] = 167;\n t['yen'] = 500;\n t['florin'] = 500;\n t['section'] = 500;\n t['currency'] = 500;\n t['quotesingle'] = 214;\n t['quotedblleft'] = 556;\n t['guillemotleft'] = 500;\n t['guilsinglleft'] = 333;\n t['guilsinglright'] = 333;\n t['fi'] = 500;\n t['fl'] = 500;\n t['endash'] = 500;\n t['dagger'] = 500;\n t['daggerdbl'] = 500;\n t['periodcentered'] = 250;\n t['paragraph'] = 523;\n t['bullet'] = 350;\n t['quotesinglbase'] = 333;\n t['quotedblbase'] = 556;\n t['quotedblright'] = 556;\n t['guillemotright'] = 500;\n t['ellipsis'] = 889;\n t['perthousand'] = 1000;\n t['questiondown'] = 500;\n t['grave'] = 333;\n t['acute'] = 333;\n t['circumflex'] = 333;\n t['tilde'] = 333;\n t['macron'] = 333;\n t['breve'] = 333;\n t['dotaccent'] = 333;\n t['dieresis'] = 333;\n t['ring'] = 333;\n t['cedilla'] = 333;\n t['hungarumlaut'] = 333;\n t['ogonek'] = 333;\n t['caron'] = 333;\n t['emdash'] = 889;\n t['AE'] = 889;\n t['ordfeminine'] = 276;\n t['Lslash'] = 556;\n t['Oslash'] = 722;\n t['OE'] = 944;\n t['ordmasculine'] = 310;\n t['ae'] = 667;\n t['dotlessi'] = 278;\n t['lslash'] = 278;\n t['oslash'] = 500;\n t['oe'] = 667;\n t['germandbls'] = 500;\n t['Idieresis'] = 333;\n t['eacute'] = 444;\n t['abreve'] = 500;\n t['uhungarumlaut'] = 500;\n t['ecaron'] = 444;\n t['Ydieresis'] = 556;\n t['divide'] = 675;\n t['Yacute'] = 556;\n t['Acircumflex'] = 611;\n t['aacute'] = 500;\n t['Ucircumflex'] = 722;\n t['yacute'] = 444;\n t['scommaaccent'] = 389;\n t['ecircumflex'] = 444;\n t['Uring'] = 722;\n t['Udieresis'] = 722;\n t['aogonek'] = 500;\n t['Uacute'] = 722;\n t['uogonek'] = 500;\n t['Edieresis'] = 611;\n t['Dcroat'] = 722;\n t['commaaccent'] = 250;\n t['copyright'] = 760;\n t['Emacron'] = 611;\n t['ccaron'] = 444;\n t['aring'] = 500;\n t['Ncommaaccent'] = 667;\n t['lacute'] = 278;\n t['agrave'] = 500;\n t['Tcommaaccent'] = 556;\n t['Cacute'] = 667;\n t['atilde'] = 500;\n t['Edotaccent'] = 611;\n t['scaron'] = 389;\n t['scedilla'] = 389;\n t['iacute'] = 278;\n t['lozenge'] = 471;\n t['Rcaron'] = 611;\n t['Gcommaaccent'] = 722;\n t['ucircumflex'] = 500;\n t['acircumflex'] = 500;\n t['Amacron'] = 611;\n t['rcaron'] = 389;\n t['ccedilla'] = 444;\n t['Zdotaccent'] = 556;\n t['Thorn'] = 611;\n t['Omacron'] = 722;\n t['Racute'] = 611;\n t['Sacute'] = 500;\n t['dcaron'] = 544;\n t['Umacron'] = 722;\n t['uring'] = 500;\n t['threesuperior'] = 300;\n t['Ograve'] = 722;\n t['Agrave'] = 611;\n t['Abreve'] = 611;\n t['multiply'] = 675;\n t['uacute'] = 500;\n t['Tcaron'] = 556;\n t['partialdiff'] = 476;\n t['ydieresis'] = 444;\n t['Nacute'] = 667;\n t['icircumflex'] = 278;\n t['Ecircumflex'] = 611;\n t['adieresis'] = 500;\n t['edieresis'] = 444;\n t['cacute'] = 444;\n t['nacute'] = 500;\n t['umacron'] = 500;\n t['Ncaron'] = 667;\n t['Iacute'] = 333;\n t['plusminus'] = 675;\n t['brokenbar'] = 275;\n t['registered'] = 760;\n t['Gbreve'] = 722;\n t['Idotaccent'] = 333;\n t['summation'] = 600;\n t['Egrave'] = 611;\n t['racute'] = 389;\n t['omacron'] = 500;\n t['Zacute'] = 556;\n t['Zcaron'] = 556;\n t['greaterequal'] = 549;\n t['Eth'] = 722;\n t['Ccedilla'] = 667;\n t['lcommaaccent'] = 278;\n t['tcaron'] = 300;\n t['eogonek'] = 444;\n t['Uogonek'] = 722;\n t['Aacute'] = 611;\n t['Adieresis'] = 611;\n t['egrave'] = 444;\n t['zacute'] = 389;\n t['iogonek'] = 278;\n t['Oacute'] = 722;\n t['oacute'] = 500;\n t['amacron'] = 500;\n t['sacute'] = 389;\n t['idieresis'] = 278;\n t['Ocircumflex'] = 722;\n t['Ugrave'] = 722;\n t['Delta'] = 612;\n t['thorn'] = 500;\n t['twosuperior'] = 300;\n t['Odieresis'] = 722;\n t['mu'] = 500;\n t['igrave'] = 278;\n t['ohungarumlaut'] = 500;\n t['Eogonek'] = 611;\n t['dcroat'] = 500;\n t['threequarters'] = 750;\n t['Scedilla'] = 500;\n t['lcaron'] = 300;\n t['Kcommaaccent'] = 667;\n t['Lacute'] = 556;\n t['trademark'] = 980;\n t['edotaccent'] = 444;\n t['Igrave'] = 333;\n t['Imacron'] = 333;\n t['Lcaron'] = 611;\n t['onehalf'] = 750;\n t['lessequal'] = 549;\n t['ocircumflex'] = 500;\n t['ntilde'] = 500;\n t['Uhungarumlaut'] = 722;\n t['Eacute'] = 611;\n t['emacron'] = 444;\n t['gbreve'] = 500;\n t['onequarter'] = 750;\n t['Scaron'] = 500;\n t['Scommaaccent'] = 500;\n t['Ohungarumlaut'] = 722;\n t['degree'] = 400;\n t['ograve'] = 500;\n t['Ccaron'] = 667;\n t['ugrave'] = 500;\n t['radical'] = 453;\n t['Dcaron'] = 722;\n t['rcommaaccent'] = 389;\n t['Ntilde'] = 667;\n t['otilde'] = 500;\n t['Rcommaaccent'] = 611;\n t['Lcommaaccent'] = 556;\n t['Atilde'] = 611;\n t['Aogonek'] = 611;\n t['Aring'] = 611;\n t['Otilde'] = 722;\n t['zdotaccent'] = 389;\n t['Ecaron'] = 611;\n t['Iogonek'] = 333;\n t['kcommaaccent'] = 444;\n t['minus'] = 675;\n t['Icircumflex'] = 333;\n t['ncaron'] = 500;\n t['tcommaaccent'] = 278;\n t['logicalnot'] = 675;\n t['odieresis'] = 500;\n t['udieresis'] = 500;\n t['notequal'] = 549;\n t['gcommaaccent'] = 500;\n t['eth'] = 500;\n t['zcaron'] = 389;\n t['ncommaaccent'] = 500;\n t['onesuperior'] = 300;\n t['imacron'] = 278;\n t['Euro'] = 500;\n });\n t['ZapfDingbats'] = getLookupTableFactory(function (t) {\n t['space'] = 278;\n t['a1'] = 974;\n t['a2'] = 961;\n t['a202'] = 974;\n t['a3'] = 980;\n t['a4'] = 719;\n t['a5'] = 789;\n t['a119'] = 790;\n t['a118'] = 791;\n t['a117'] = 690;\n t['a11'] = 960;\n t['a12'] = 939;\n t['a13'] = 549;\n t['a14'] = 855;\n t['a15'] = 911;\n t['a16'] = 933;\n t['a105'] = 911;\n t['a17'] = 945;\n t['a18'] = 974;\n t['a19'] = 755;\n t['a20'] = 846;\n t['a21'] = 762;\n t['a22'] = 761;\n t['a23'] = 571;\n t['a24'] = 677;\n t['a25'] = 763;\n t['a26'] = 760;\n t['a27'] = 759;\n t['a28'] = 754;\n t['a6'] = 494;\n t['a7'] = 552;\n t['a8'] = 537;\n t['a9'] = 577;\n t['a10'] = 692;\n t['a29'] = 786;\n t['a30'] = 788;\n t['a31'] = 788;\n t['a32'] = 790;\n t['a33'] = 793;\n t['a34'] = 794;\n t['a35'] = 816;\n t['a36'] = 823;\n t['a37'] = 789;\n t['a38'] = 841;\n t['a39'] = 823;\n t['a40'] = 833;\n t['a41'] = 816;\n t['a42'] = 831;\n t['a43'] = 923;\n t['a44'] = 744;\n t['a45'] = 723;\n t['a46'] = 749;\n t['a47'] = 790;\n t['a48'] = 792;\n t['a49'] = 695;\n t['a50'] = 776;\n t['a51'] = 768;\n t['a52'] = 792;\n t['a53'] = 759;\n t['a54'] = 707;\n t['a55'] = 708;\n t['a56'] = 682;\n t['a57'] = 701;\n t['a58'] = 826;\n t['a59'] = 815;\n t['a60'] = 789;\n t['a61'] = 789;\n t['a62'] = 707;\n t['a63'] = 687;\n t['a64'] = 696;\n t['a65'] = 689;\n t['a66'] = 786;\n t['a67'] = 787;\n t['a68'] = 713;\n t['a69'] = 791;\n t['a70'] = 785;\n t['a71'] = 791;\n t['a72'] = 873;\n t['a73'] = 761;\n t['a74'] = 762;\n t['a203'] = 762;\n t['a75'] = 759;\n t['a204'] = 759;\n t['a76'] = 892;\n t['a77'] = 892;\n t['a78'] = 788;\n t['a79'] = 784;\n t['a81'] = 438;\n t['a82'] = 138;\n t['a83'] = 277;\n t['a84'] = 415;\n t['a97'] = 392;\n t['a98'] = 392;\n t['a99'] = 668;\n t['a100'] = 668;\n t['a89'] = 390;\n t['a90'] = 390;\n t['a93'] = 317;\n t['a94'] = 317;\n t['a91'] = 276;\n t['a92'] = 276;\n t['a205'] = 509;\n t['a85'] = 509;\n t['a206'] = 410;\n t['a86'] = 410;\n t['a87'] = 234;\n t['a88'] = 234;\n t['a95'] = 334;\n t['a96'] = 334;\n t['a101'] = 732;\n t['a102'] = 544;\n t['a103'] = 544;\n t['a104'] = 910;\n t['a106'] = 667;\n t['a107'] = 760;\n t['a108'] = 760;\n t['a112'] = 776;\n t['a111'] = 595;\n t['a110'] = 694;\n t['a109'] = 626;\n t['a120'] = 788;\n t['a121'] = 788;\n t['a122'] = 788;\n t['a123'] = 788;\n t['a124'] = 788;\n t['a125'] = 788;\n t['a126'] = 788;\n t['a127'] = 788;\n t['a128'] = 788;\n t['a129'] = 788;\n t['a130'] = 788;\n t['a131'] = 788;\n t['a132'] = 788;\n t['a133'] = 788;\n t['a134'] = 788;\n t['a135'] = 788;\n t['a136'] = 788;\n t['a137'] = 788;\n t['a138'] = 788;\n t['a139'] = 788;\n t['a140'] = 788;\n t['a141'] = 788;\n t['a142'] = 788;\n t['a143'] = 788;\n t['a144'] = 788;\n t['a145'] = 788;\n t['a146'] = 788;\n t['a147'] = 788;\n t['a148'] = 788;\n t['a149'] = 788;\n t['a150'] = 788;\n t['a151'] = 788;\n t['a152'] = 788;\n t['a153'] = 788;\n t['a154'] = 788;\n t['a155'] = 788;\n t['a156'] = 788;\n t['a157'] = 788;\n t['a158'] = 788;\n t['a159'] = 788;\n t['a160'] = 894;\n t['a161'] = 838;\n t['a163'] = 1016;\n t['a164'] = 458;\n t['a196'] = 748;\n t['a165'] = 924;\n t['a192'] = 748;\n t['a166'] = 918;\n t['a167'] = 927;\n t['a168'] = 928;\n t['a169'] = 928;\n t['a170'] = 834;\n t['a171'] = 873;\n t['a172'] = 828;\n t['a173'] = 924;\n t['a162'] = 924;\n t['a174'] = 917;\n t['a175'] = 930;\n t['a176'] = 931;\n t['a177'] = 463;\n t['a178'] = 883;\n t['a179'] = 836;\n t['a193'] = 836;\n t['a180'] = 867;\n t['a199'] = 867;\n t['a181'] = 696;\n t['a200'] = 696;\n t['a182'] = 874;\n t['a201'] = 874;\n t['a183'] = 760;\n t['a184'] = 946;\n t['a197'] = 771;\n t['a185'] = 865;\n t['a194'] = 771;\n t['a198'] = 888;\n t['a186'] = 967;\n t['a195'] = 888;\n t['a187'] = 831;\n t['a188'] = 873;\n t['a189'] = 927;\n t['a190'] = 970;\n t['a191'] = 918;\n });\n});\n\nexport {\n getMetrics,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/metrics.js","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nvar MurmurHash3_64 = (function MurmurHash3_64Closure(seed) {\n // Workaround for missing math precision in JS.\n var MASK_HIGH = 0xffff0000;\n var MASK_LOW = 0xffff;\n\n function MurmurHash3_64(seed) {\n var SEED = 0xc3d2e1f0;\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n MurmurHash3_64.prototype = {\n update: function MurmurHash3_64_update(input) {\n var i;\n if (typeof input === 'string') {\n var data = new Uint8Array(input.length * 2);\n var length = 0;\n for (i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (typeof input === 'object' && ('byteLength' in input)) {\n data = input;\n length = data.byteLength;\n } else {\n throw new Error('Wrong data format in MurmurHash3_64_update. ' +\n 'Input must be a string or array.');\n }\n\n var blockCounts = length >> 2;\n var tailLength = length - blockCounts * 4;\n // we don't care about endianness here\n var dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n var k1 = 0;\n var k2 = 0;\n var h1 = this.h1;\n var h2 = this.h2;\n var C1 = 0xcc9e2d51;\n var C2 = 0x1b873593;\n var C1_LOW = C1 & MASK_LOW;\n var C2_LOW = C2 & MASK_LOW;\n\n for (i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);\n h1 ^= k1;\n h1 = h1 << 13 | h1 >>> 19;\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = (k2 * C1 & MASK_HIGH) | (k2 * C1_LOW & MASK_LOW);\n k2 = k2 << 15 | k2 >>> 17;\n k2 = (k2 * C2 & MASK_HIGH) | (k2 * C2_LOW & MASK_LOW);\n h2 ^= k2;\n h2 = h2 << 13 | h2 >>> 19;\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n k1 = (k1 * C1 & MASK_HIGH) | (k1 * C1_LOW & MASK_LOW);\n k1 = k1 << 15 | k1 >>> 17;\n k1 = (k1 * C2 & MASK_HIGH) | (k1 * C2_LOW & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n return this;\n },\n\n hexdigest: function MurmurHash3_64_hexdigest() {\n var h1 = this.h1;\n var h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = (h1 * 0xed558ccd & MASK_HIGH) | (h1 * 0x8ccd & MASK_LOW);\n h2 = (h2 * 0xff51afd7 & MASK_HIGH) |\n (((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = (h1 * 0x1a85ec53 & MASK_HIGH) | (h1 * 0xec53 & MASK_LOW);\n h2 = (h2 * 0xc4ceb9fe & MASK_HIGH) |\n (((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n for (var i = 0, arr = [h1, h2], str = ''; i < arr.length; i++) {\n var hex = (arr[i] >>> 0).toString(16);\n while (hex.length < 8) {\n hex = '0' + hex;\n }\n str += hex;\n }\n\n return str;\n },\n };\n\n return MurmurHash3_64;\n})();\n\nexport {\n MurmurHash3_64,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/murmurhash3.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-multi-spaces */\n\nimport {\n assert, FormatError, info, MissingDataException, unreachable,\n UNSUPPORTED_FEATURES, Util, warn\n} from '../shared/util';\nimport { ColorSpace } from './colorspace';\nimport { isStream } from './primitives';\nimport { PDFFunction } from './function';\n\nvar ShadingType = {\n FUNCTION_BASED: 1,\n AXIAL: 2,\n RADIAL: 3,\n FREE_FORM_MESH: 4,\n LATTICE_FORM_MESH: 5,\n COONS_PATCH_MESH: 6,\n TENSOR_PATCH_MESH: 7,\n};\n\nvar Pattern = (function PatternClosure() {\n // Constructor should define this.getPattern\n function Pattern() {\n throw new Error('should not call Pattern constructor');\n }\n\n Pattern.prototype = {\n // Input: current Canvas context\n // Output: the appropriate fillStyle or strokeStyle\n getPattern: function Pattern_getPattern(ctx) {\n throw new Error(`Should not call Pattern.getStyle: ${ctx}`);\n },\n };\n\n Pattern.parseShading = function Pattern_parseShading(shading, matrix, xref,\n res, handler) {\n\n var dict = isStream(shading) ? shading.dict : shading;\n var type = dict.get('ShadingType');\n\n try {\n switch (type) {\n case ShadingType.AXIAL:\n case ShadingType.RADIAL:\n // Both radial and axial shadings are handled by RadialAxial shading.\n return new Shadings.RadialAxial(dict, matrix, xref, res);\n case ShadingType.FREE_FORM_MESH:\n case ShadingType.LATTICE_FORM_MESH:\n case ShadingType.COONS_PATCH_MESH:\n case ShadingType.TENSOR_PATCH_MESH:\n return new Shadings.Mesh(shading, matrix, xref, res);\n default:\n throw new FormatError('Unsupported ShadingType: ' + type);\n }\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n handler.send('UnsupportedFeature',\n { featureId: UNSUPPORTED_FEATURES.shadingPattern, });\n warn(ex);\n return new Shadings.Dummy();\n }\n };\n return Pattern;\n})();\n\nvar Shadings = {};\n\n// A small number to offset the first/last color stops so we can insert ones to\n// support extend. Number.MIN_VALUE is too small and breaks the extend.\nShadings.SMALL_NUMBER = 1e-6;\n\n// Radial and axial shading have very similar implementations\n// If needed, the implementations can be broken into two classes\nShadings.RadialAxial = (function RadialAxialClosure() {\n function RadialAxial(dict, matrix, xref, res) {\n this.matrix = matrix;\n this.coordsArr = dict.getArray('Coords');\n this.shadingType = dict.get('ShadingType');\n this.type = 'Pattern';\n var cs = dict.get('ColorSpace', 'CS');\n cs = ColorSpace.parse(cs, xref, res);\n this.cs = cs;\n\n var t0 = 0.0, t1 = 1.0;\n if (dict.has('Domain')) {\n var domainArr = dict.getArray('Domain');\n t0 = domainArr[0];\n t1 = domainArr[1];\n }\n\n var extendStart = false, extendEnd = false;\n if (dict.has('Extend')) {\n var extendArr = dict.getArray('Extend');\n extendStart = extendArr[0];\n extendEnd = extendArr[1];\n }\n\n if (this.shadingType === ShadingType.RADIAL &&\n (!extendStart || !extendEnd)) {\n // Radial gradient only currently works if either circle is fully within\n // the other circle.\n var x1 = this.coordsArr[0];\n var y1 = this.coordsArr[1];\n var r1 = this.coordsArr[2];\n var x2 = this.coordsArr[3];\n var y2 = this.coordsArr[4];\n var r2 = this.coordsArr[5];\n var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));\n if (r1 <= r2 + distance &&\n r2 <= r1 + distance) {\n warn('Unsupported radial gradient.');\n }\n }\n\n this.extendStart = extendStart;\n this.extendEnd = extendEnd;\n\n var fnObj = dict.get('Function');\n var fn = PDFFunction.parseArray(xref, fnObj);\n\n // 10 samples seems good enough for now, but probably won't work\n // if there are sharp color changes. Ideally, we would implement\n // the spec faithfully and add lossless optimizations.\n var diff = t1 - t0;\n var step = diff / 10;\n\n var colorStops = this.colorStops = [];\n\n // Protect against bad domains so we don't end up in an infinte loop below.\n if (t0 >= t1 || step <= 0) {\n // Acrobat doesn't seem to handle these cases so we'll ignore for\n // now.\n info('Bad shading domain.');\n return;\n }\n\n var color = new Float32Array(cs.numComps), ratio = new Float32Array(1);\n var rgbColor;\n for (var i = t0; i <= t1; i += step) {\n ratio[0] = i;\n fn(ratio, 0, color, 0);\n rgbColor = cs.getRgb(color, 0);\n var cssColor = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n colorStops.push([(i - t0) / diff, cssColor]);\n }\n\n var background = 'transparent';\n if (dict.has('Background')) {\n rgbColor = cs.getRgb(dict.get('Background'), 0);\n background = Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);\n }\n\n if (!extendStart) {\n // Insert a color stop at the front and offset the first real color stop\n // so it doesn't conflict with the one we insert.\n colorStops.unshift([0, background]);\n colorStops[1][0] += Shadings.SMALL_NUMBER;\n }\n if (!extendEnd) {\n // Same idea as above in extendStart but for the end.\n colorStops[colorStops.length - 1][0] -= Shadings.SMALL_NUMBER;\n colorStops.push([1, background]);\n }\n\n this.colorStops = colorStops;\n }\n\n RadialAxial.prototype = {\n getIR: function RadialAxial_getIR() {\n var coordsArr = this.coordsArr;\n var shadingType = this.shadingType;\n var type, p0, p1, r0, r1;\n if (shadingType === ShadingType.AXIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[2], coordsArr[3]];\n r0 = null;\n r1 = null;\n type = 'axial';\n } else if (shadingType === ShadingType.RADIAL) {\n p0 = [coordsArr[0], coordsArr[1]];\n p1 = [coordsArr[3], coordsArr[4]];\n r0 = coordsArr[2];\n r1 = coordsArr[5];\n type = 'radial';\n } else {\n unreachable(`getPattern type unknown: ${shadingType}`);\n }\n\n var matrix = this.matrix;\n if (matrix) {\n p0 = Util.applyTransform(p0, matrix);\n p1 = Util.applyTransform(p1, matrix);\n if (shadingType === ShadingType.RADIAL) {\n var scale = Util.singularValueDecompose2dScale(matrix);\n r0 *= scale[0];\n r1 *= scale[1];\n }\n }\n\n return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];\n },\n };\n\n return RadialAxial;\n})();\n\n// All mesh shading. For now, they will be presented as set of the triangles\n// to be drawn on the canvas and rgb color for each vertex.\nShadings.Mesh = (function MeshClosure() {\n function MeshStreamReader(stream, context) {\n this.stream = stream;\n this.context = context;\n this.buffer = 0;\n this.bufferLength = 0;\n\n var numComps = context.numComps;\n this.tmpCompsBuf = new Float32Array(numComps);\n var csNumComps = context.colorSpace.numComps;\n this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) :\n this.tmpCompsBuf;\n }\n MeshStreamReader.prototype = {\n get hasData() {\n if (this.stream.end) {\n return this.stream.pos < this.stream.end;\n }\n if (this.bufferLength > 0) {\n return true;\n }\n var nextByte = this.stream.getByte();\n if (nextByte < 0) {\n return false;\n }\n this.buffer = nextByte;\n this.bufferLength = 8;\n return true;\n },\n readBits: function MeshStreamReader_readBits(n) {\n var buffer = this.buffer;\n var bufferLength = this.bufferLength;\n if (n === 32) {\n if (bufferLength === 0) {\n return ((this.stream.getByte() << 24) |\n (this.stream.getByte() << 16) | (this.stream.getByte() << 8) |\n this.stream.getByte()) >>> 0;\n }\n buffer = (buffer << 24) | (this.stream.getByte() << 16) |\n (this.stream.getByte() << 8) | this.stream.getByte();\n var nextByte = this.stream.getByte();\n this.buffer = nextByte & ((1 << bufferLength) - 1);\n return ((buffer << (8 - bufferLength)) |\n ((nextByte & 0xFF) >> bufferLength)) >>> 0;\n }\n if (n === 8 && bufferLength === 0) {\n return this.stream.getByte();\n }\n while (bufferLength < n) {\n buffer = (buffer << 8) | this.stream.getByte();\n bufferLength += 8;\n }\n bufferLength -= n;\n this.bufferLength = bufferLength;\n this.buffer = buffer & ((1 << bufferLength) - 1);\n return buffer >> bufferLength;\n },\n align: function MeshStreamReader_align() {\n this.buffer = 0;\n this.bufferLength = 0;\n },\n readFlag: function MeshStreamReader_readFlag() {\n return this.readBits(this.context.bitsPerFlag);\n },\n readCoordinate: function MeshStreamReader_readCoordinate() {\n var bitsPerCoordinate = this.context.bitsPerCoordinate;\n var xi = this.readBits(bitsPerCoordinate);\n var yi = this.readBits(bitsPerCoordinate);\n var decode = this.context.decode;\n var scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) :\n 2.3283064365386963e-10; // 2 ^ -32\n return [\n xi * scale * (decode[1] - decode[0]) + decode[0],\n yi * scale * (decode[3] - decode[2]) + decode[2]\n ];\n },\n readComponents: function MeshStreamReader_readComponents() {\n var numComps = this.context.numComps;\n var bitsPerComponent = this.context.bitsPerComponent;\n var scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) :\n 2.3283064365386963e-10; // 2 ^ -32\n var decode = this.context.decode;\n var components = this.tmpCompsBuf;\n for (var i = 0, j = 4; i < numComps; i++, j += 2) {\n var ci = this.readBits(bitsPerComponent);\n components[i] = ci * scale * (decode[j + 1] - decode[j]) + decode[j];\n }\n var color = this.tmpCsCompsBuf;\n if (this.context.colorFn) {\n this.context.colorFn(components, 0, color, 0);\n }\n return this.context.colorSpace.getRgb(color, 0);\n },\n };\n\n function decodeType4Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var operators = [];\n var ps = []; // not maintaining cs since that will match ps\n var verticesLeft = 0; // assuming we have all data to start a new triangle\n while (reader.hasData) {\n var f = reader.readFlag();\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n if (verticesLeft === 0) { // ignoring flags if we started a triangle\n if (!(0 <= f && f <= 2)) {\n throw new FormatError('Unknown type4 flag');\n }\n switch (f) {\n case 0:\n verticesLeft = 3;\n break;\n case 1:\n ps.push(ps[ps.length - 2], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n case 2:\n ps.push(ps[ps.length - 3], ps[ps.length - 1]);\n verticesLeft = 1;\n break;\n }\n operators.push(f);\n }\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n verticesLeft--;\n\n reader.align();\n }\n mesh.figures.push({\n type: 'triangles',\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n });\n }\n\n function decodeType5Shading(mesh, reader, verticesPerRow) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = []; // not maintaining cs since that will match ps\n while (reader.hasData) {\n var coord = reader.readCoordinate();\n var color = reader.readComponents();\n ps.push(coords.length);\n coords.push(coord);\n colors.push(color);\n }\n mesh.figures.push({\n type: 'lattice',\n coords: new Int32Array(ps),\n colors: new Int32Array(ps),\n verticesPerRow,\n });\n }\n\n var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;\n var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;\n\n var TRIANGLE_DENSITY = 20; // count of triangles per entire mesh bounds\n\n var getB = (function getBClosure() {\n function buildB(count) {\n var lut = [];\n for (var i = 0; i <= count; i++) {\n var t = i / count, t_ = 1 - t;\n lut.push(new Float32Array([t_ * t_ * t_, 3 * t * t_ * t_,\n 3 * t * t * t_, t * t * t]));\n }\n return lut;\n }\n var cache = [];\n return function getB(count) {\n if (!cache[count]) {\n cache[count] = buildB(count);\n }\n return cache[count];\n };\n })();\n\n function buildFigureFromPatch(mesh, index) {\n var figure = mesh.figures[index];\n assert(figure.type === 'patch', 'Unexpected patch mesh figure');\n\n var coords = mesh.coords, colors = mesh.colors;\n var pi = figure.coords;\n var ci = figure.colors;\n\n var figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0],\n coords[pi[12]][0], coords[pi[15]][0]);\n var figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1],\n coords[pi[12]][1], coords[pi[15]][1]);\n var figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0],\n coords[pi[12]][0], coords[pi[15]][0]);\n var figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1],\n coords[pi[12]][1], coords[pi[15]][1]);\n var splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY /\n (mesh.bounds[2] - mesh.bounds[0]));\n splitXBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitXBy));\n var splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY /\n (mesh.bounds[3] - mesh.bounds[1]));\n splitYBy = Math.max(MIN_SPLIT_PATCH_CHUNKS_AMOUNT,\n Math.min(MAX_SPLIT_PATCH_CHUNKS_AMOUNT, splitYBy));\n\n var verticesPerRow = splitXBy + 1;\n var figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);\n var figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);\n var k = 0;\n var cl = new Uint8Array(3), cr = new Uint8Array(3);\n var c0 = colors[ci[0]], c1 = colors[ci[1]],\n c2 = colors[ci[2]], c3 = colors[ci[3]];\n var bRow = getB(splitYBy), bCol = getB(splitXBy);\n for (var row = 0; row <= splitYBy; row++) {\n cl[0] = ((c0[0] * (splitYBy - row) + c2[0] * row) / splitYBy) | 0;\n cl[1] = ((c0[1] * (splitYBy - row) + c2[1] * row) / splitYBy) | 0;\n cl[2] = ((c0[2] * (splitYBy - row) + c2[2] * row) / splitYBy) | 0;\n\n cr[0] = ((c1[0] * (splitYBy - row) + c3[0] * row) / splitYBy) | 0;\n cr[1] = ((c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy) | 0;\n cr[2] = ((c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy) | 0;\n\n for (var col = 0; col <= splitXBy; col++, k++) {\n if ((row === 0 || row === splitYBy) &&\n (col === 0 || col === splitXBy)) {\n continue;\n }\n var x = 0, y = 0;\n var q = 0;\n for (var i = 0; i <= 3; i++) {\n for (var j = 0; j <= 3; j++, q++) {\n var m = bRow[row][i] * bCol[col][j];\n x += coords[pi[q]][0] * m;\n y += coords[pi[q]][1] * m;\n }\n }\n figureCoords[k] = coords.length;\n coords.push([x, y]);\n figureColors[k] = colors.length;\n var newColor = new Uint8Array(3);\n newColor[0] = ((cl[0] * (splitXBy - col) + cr[0] * col) / splitXBy) | 0;\n newColor[1] = ((cl[1] * (splitXBy - col) + cr[1] * col) / splitXBy) | 0;\n newColor[2] = ((cl[2] * (splitXBy - col) + cr[2] * col) / splitXBy) | 0;\n colors.push(newColor);\n }\n }\n figureCoords[0] = pi[0];\n figureColors[0] = ci[0];\n figureCoords[splitXBy] = pi[3];\n figureColors[splitXBy] = ci[1];\n figureCoords[verticesPerRow * splitYBy] = pi[12];\n figureColors[verticesPerRow * splitYBy] = ci[2];\n figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];\n figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];\n\n mesh.figures[index] = {\n type: 'lattice',\n coords: figureCoords,\n colors: figureColors,\n verticesPerRow,\n };\n }\n\n function decodeType6Shading(mesh, reader) {\n // A special case of Type 7. The p11, p12, p21, p22 automatically filled\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n var cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n var f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError('Unknown type6 flag');\n }\n var i, ii;\n var pi = coords.length;\n for (i = 0, ii = (f !== 0 ? 8 : 12); i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n var ci = colors.length;\n for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {\n colors.push(reader.readComponents());\n }\n var tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 7;\n ps[ 4] = pi + 1; /* calculated below */ ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = tmp2; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; /* values for 5, 6, 9, 10 are */ ps[11] = pi + 3;\n ps[ 4] = ps[2]; /* calculated below */ ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n // set p11, p12, p21, p22\n ps[5] = coords.length;\n coords.push([\n (-4 * coords[ps[0]][0] - coords[ps[15]][0] +\n 6 * (coords[ps[4]][0] + coords[ps[1]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[13]][0] + coords[ps[7]][0])) / 9,\n (-4 * coords[ps[0]][1] - coords[ps[15]][1] +\n 6 * (coords[ps[4]][1] + coords[ps[1]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[13]][1] + coords[ps[7]][1])) / 9\n ]);\n ps[6] = coords.length;\n coords.push([\n (-4 * coords[ps[3]][0] - coords[ps[12]][0] +\n 6 * (coords[ps[2]][0] + coords[ps[7]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[4]][0] + coords[ps[14]][0])) / 9,\n (-4 * coords[ps[3]][1] - coords[ps[12]][1] +\n 6 * (coords[ps[2]][1] + coords[ps[7]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[4]][1] + coords[ps[14]][1])) / 9\n ]);\n ps[9] = coords.length;\n coords.push([\n (-4 * coords[ps[12]][0] - coords[ps[3]][0] +\n 6 * (coords[ps[8]][0] + coords[ps[13]][0]) -\n 2 * (coords[ps[0]][0] + coords[ps[15]][0]) +\n 3 * (coords[ps[11]][0] + coords[ps[1]][0])) / 9,\n (-4 * coords[ps[12]][1] - coords[ps[3]][1] +\n 6 * (coords[ps[8]][1] + coords[ps[13]][1]) -\n 2 * (coords[ps[0]][1] + coords[ps[15]][1]) +\n 3 * (coords[ps[11]][1] + coords[ps[1]][1])) / 9\n ]);\n ps[10] = coords.length;\n coords.push([\n (-4 * coords[ps[15]][0] - coords[ps[0]][0] +\n 6 * (coords[ps[11]][0] + coords[ps[14]][0]) -\n 2 * (coords[ps[12]][0] + coords[ps[3]][0]) +\n 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9,\n (-4 * coords[ps[15]][1] - coords[ps[0]][1] +\n 6 * (coords[ps[11]][1] + coords[ps[14]][1]) -\n 2 * (coords[ps[12]][1] + coords[ps[3]][1]) +\n 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9\n ]);\n mesh.figures.push({\n type: 'patch',\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n function decodeType7Shading(mesh, reader) {\n var coords = mesh.coords;\n var colors = mesh.colors;\n var ps = new Int32Array(16); // p00, p10, ..., p30, p01, ..., p33\n var cs = new Int32Array(4); // c00, c30, c03, c33\n while (reader.hasData) {\n var f = reader.readFlag();\n if (!(0 <= f && f <= 3)) {\n throw new FormatError('Unknown type7 flag');\n }\n var i, ii;\n var pi = coords.length;\n for (i = 0, ii = (f !== 0 ? 12 : 16); i < ii; i++) {\n coords.push(reader.readCoordinate());\n }\n var ci = colors.length;\n for (i = 0, ii = (f !== 0 ? 2 : 4); i < ii; i++) {\n colors.push(reader.readComponents());\n }\n var tmp1, tmp2, tmp3, tmp4;\n switch (f) {\n case 0:\n ps[12] = pi + 3; ps[13] = pi + 4; ps[14] = pi + 5; ps[15] = pi + 6;\n ps[ 8] = pi + 2; ps[ 9] = pi + 13; ps[10] = pi + 14; ps[11] = pi + 7;\n ps[ 4] = pi + 1; ps[ 5] = pi + 12; ps[ 6] = pi + 15; ps[ 7] = pi + 8;\n ps[ 0] = pi; ps[ 1] = pi + 11; ps[ 2] = pi + 10; ps[ 3] = pi + 9;\n cs[2] = ci + 1; cs[3] = ci + 2;\n cs[0] = ci; cs[1] = ci + 3;\n break;\n case 1:\n tmp1 = ps[12]; tmp2 = ps[13]; tmp3 = ps[14]; tmp4 = ps[15];\n ps[12] = tmp4; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = tmp3; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[2]; tmp2 = cs[3];\n cs[2] = tmp2; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n case 2:\n tmp1 = ps[15];\n tmp2 = ps[11];\n ps[12] = ps[3]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[7]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = tmp2; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = tmp1; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n tmp1 = cs[3];\n cs[2] = cs[1]; cs[3] = ci;\n cs[0] = tmp1; cs[1] = ci + 1;\n break;\n case 3:\n ps[12] = ps[0]; ps[13] = pi + 0; ps[14] = pi + 1; ps[15] = pi + 2;\n ps[ 8] = ps[1]; ps[ 9] = pi + 9; ps[10] = pi + 10; ps[11] = pi + 3;\n ps[ 4] = ps[2]; ps[ 5] = pi + 8; ps[ 6] = pi + 11; ps[ 7] = pi + 4;\n ps[ 0] = ps[3]; ps[ 1] = pi + 7; ps[ 2] = pi + 6; ps[ 3] = pi + 5;\n cs[2] = cs[0]; cs[3] = ci;\n cs[0] = cs[1]; cs[1] = ci + 1;\n break;\n }\n mesh.figures.push({\n type: 'patch',\n coords: new Int32Array(ps), // making copies of ps and cs\n colors: new Int32Array(cs),\n });\n }\n }\n\n function updateBounds(mesh) {\n var minX = mesh.coords[0][0], minY = mesh.coords[0][1],\n maxX = minX, maxY = minY;\n for (var i = 1, ii = mesh.coords.length; i < ii; i++) {\n var x = mesh.coords[i][0], y = mesh.coords[i][1];\n minX = minX > x ? x : minX;\n minY = minY > y ? y : minY;\n maxX = maxX < x ? x : maxX;\n maxY = maxY < y ? y : maxY;\n }\n mesh.bounds = [minX, minY, maxX, maxY];\n }\n\n function packData(mesh) {\n var i, ii, j, jj;\n\n var coords = mesh.coords;\n var coordsPacked = new Float32Array(coords.length * 2);\n for (i = 0, j = 0, ii = coords.length; i < ii; i++) {\n var xy = coords[i];\n coordsPacked[j++] = xy[0];\n coordsPacked[j++] = xy[1];\n }\n mesh.coords = coordsPacked;\n\n var colors = mesh.colors;\n var colorsPacked = new Uint8Array(colors.length * 3);\n for (i = 0, j = 0, ii = colors.length; i < ii; i++) {\n var c = colors[i];\n colorsPacked[j++] = c[0];\n colorsPacked[j++] = c[1];\n colorsPacked[j++] = c[2];\n }\n mesh.colors = colorsPacked;\n\n var figures = mesh.figures;\n for (i = 0, ii = figures.length; i < ii; i++) {\n var figure = figures[i], ps = figure.coords, cs = figure.colors;\n for (j = 0, jj = ps.length; j < jj; j++) {\n ps[j] *= 2;\n cs[j] *= 3;\n }\n }\n }\n\n function Mesh(stream, matrix, xref, res) {\n if (!isStream(stream)) {\n throw new FormatError('Mesh data is not a stream');\n }\n var dict = stream.dict;\n this.matrix = matrix;\n this.shadingType = dict.get('ShadingType');\n this.type = 'Pattern';\n this.bbox = dict.getArray('BBox');\n var cs = dict.get('ColorSpace', 'CS');\n cs = ColorSpace.parse(cs, xref, res);\n this.cs = cs;\n this.background = dict.has('Background') ?\n cs.getRgb(dict.get('Background'), 0) : null;\n\n var fnObj = dict.get('Function');\n var fn = fnObj ? PDFFunction.parseArray(xref, fnObj) : null;\n\n this.coords = [];\n this.colors = [];\n this.figures = [];\n\n var decodeContext = {\n bitsPerCoordinate: dict.get('BitsPerCoordinate'),\n bitsPerComponent: dict.get('BitsPerComponent'),\n bitsPerFlag: dict.get('BitsPerFlag'),\n decode: dict.getArray('Decode'),\n colorFn: fn,\n colorSpace: cs,\n numComps: fn ? 1 : cs.numComps,\n };\n var reader = new MeshStreamReader(stream, decodeContext);\n\n var patchMesh = false;\n switch (this.shadingType) {\n case ShadingType.FREE_FORM_MESH:\n decodeType4Shading(this, reader);\n break;\n case ShadingType.LATTICE_FORM_MESH:\n var verticesPerRow = dict.get('VerticesPerRow') | 0;\n if (verticesPerRow < 2) {\n throw new FormatError('Invalid VerticesPerRow');\n }\n decodeType5Shading(this, reader, verticesPerRow);\n break;\n case ShadingType.COONS_PATCH_MESH:\n decodeType6Shading(this, reader);\n patchMesh = true;\n break;\n case ShadingType.TENSOR_PATCH_MESH:\n decodeType7Shading(this, reader);\n patchMesh = true;\n break;\n default:\n unreachable('Unsupported mesh type.');\n break;\n }\n\n if (patchMesh) {\n // dirty bounds calculation for determining, how dense shall be triangles\n updateBounds(this);\n for (var i = 0, ii = this.figures.length; i < ii; i++) {\n buildFigureFromPatch(this, i);\n }\n }\n // calculate bounds\n updateBounds(this);\n\n packData(this);\n }\n\n Mesh.prototype = {\n getIR: function Mesh_getIR() {\n return ['Mesh', this.shadingType, this.coords, this.colors, this.figures,\n this.bounds, this.matrix, this.bbox, this.background];\n },\n };\n\n return Mesh;\n})();\n\nShadings.Dummy = (function DummyClosure() {\n function Dummy() {\n this.type = 'Pattern';\n }\n\n Dummy.prototype = {\n getIR: function Dummy_getIR() {\n return ['Dummy'];\n },\n };\n return Dummy;\n})();\n\nfunction getTilingPatternIR(operatorList, dict, args) {\n let matrix = dict.getArray('Matrix');\n let bbox = Util.normalizeRect(dict.getArray('BBox'));\n let xstep = dict.get('XStep');\n let ystep = dict.get('YStep');\n let paintType = dict.get('PaintType');\n let tilingType = dict.get('TilingType');\n\n // Ensure that the pattern has a non-zero width and height, to prevent errors\n // in `pattern_helper.js` (fixes issue8330.pdf).\n if ((bbox[2] - bbox[0]) === 0 || (bbox[3] - bbox[1]) === 0) {\n throw new FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);\n }\n\n return [\n 'TilingPattern', args, operatorList, matrix, bbox, xstep, ystep,\n paintType, tilingType\n ];\n}\n\nexport {\n Pattern,\n getTilingPatternIR,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/pattern.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability, createValidAbsoluteUrl, MissingDataException,\n NotImplementedException, shadow, Util, warn\n} from '../shared/util';\nimport { ChunkedStreamManager } from './chunked_stream';\nimport { PDFDocument } from './document';\nimport { Stream } from './stream';\n\nvar BasePdfManager = (function BasePdfManagerClosure() {\n function BasePdfManager() {\n throw new Error('Cannot initialize BaseManagerManager');\n }\n\n BasePdfManager.prototype = {\n get docId() {\n return this._docId;\n },\n\n get password() {\n return this._password;\n },\n\n get docBaseUrl() {\n var docBaseUrl = null;\n if (this._docBaseUrl) {\n var absoluteUrl = createValidAbsoluteUrl(this._docBaseUrl);\n if (absoluteUrl) {\n docBaseUrl = absoluteUrl.href;\n } else {\n warn('Invalid absolute docBaseUrl: \"' + this._docBaseUrl + '\".');\n }\n }\n return shadow(this, 'docBaseUrl', docBaseUrl);\n },\n\n onLoadedStream: function BasePdfManager_onLoadedStream() {\n throw new NotImplementedException();\n },\n\n ensureDoc: function BasePdfManager_ensureDoc(prop, args) {\n return this.ensure(this.pdfDocument, prop, args);\n },\n\n ensureXRef: function BasePdfManager_ensureXRef(prop, args) {\n return this.ensure(this.pdfDocument.xref, prop, args);\n },\n\n ensureCatalog: function BasePdfManager_ensureCatalog(prop, args) {\n return this.ensure(this.pdfDocument.catalog, prop, args);\n },\n\n getPage: function BasePdfManager_getPage(pageIndex) {\n return this.pdfDocument.getPage(pageIndex);\n },\n\n cleanup: function BasePdfManager_cleanup() {\n return this.pdfDocument.cleanup();\n },\n\n ensure: function BasePdfManager_ensure(obj, prop, args) {\n return new NotImplementedException();\n },\n\n requestRange: function BasePdfManager_requestRange(begin, end) {\n return new NotImplementedException();\n },\n\n requestLoadedStream: function BasePdfManager_requestLoadedStream() {\n return new NotImplementedException();\n },\n\n sendProgressiveData: function BasePdfManager_sendProgressiveData(chunk) {\n return new NotImplementedException();\n },\n\n updatePassword: function BasePdfManager_updatePassword(password) {\n this._password = password;\n },\n\n terminate: function BasePdfManager_terminate() {\n return new NotImplementedException();\n },\n };\n\n return BasePdfManager;\n})();\n\nvar LocalPdfManager = (function LocalPdfManagerClosure() {\n function LocalPdfManager(docId, data, password, evaluatorOptions,\n docBaseUrl) {\n this._docId = docId;\n this._password = password;\n this._docBaseUrl = docBaseUrl;\n this.evaluatorOptions = evaluatorOptions;\n var stream = new Stream(data);\n this.pdfDocument = new PDFDocument(this, stream);\n this._loadedStreamCapability = createPromiseCapability();\n this._loadedStreamCapability.resolve(stream);\n }\n\n Util.inherit(LocalPdfManager, BasePdfManager, {\n ensure: function LocalPdfManager_ensure(obj, prop, args) {\n return new Promise(function (resolve, reject) {\n try {\n var value = obj[prop];\n var result;\n if (typeof value === 'function') {\n result = value.apply(obj, args);\n } else {\n result = value;\n }\n resolve(result);\n } catch (e) {\n reject(e);\n }\n });\n },\n\n requestRange: function LocalPdfManager_requestRange(begin, end) {\n return Promise.resolve();\n },\n\n requestLoadedStream: function LocalPdfManager_requestLoadedStream() {\n return;\n },\n\n onLoadedStream: function LocalPdfManager_onLoadedStream() {\n return this._loadedStreamCapability.promise;\n },\n\n terminate: function LocalPdfManager_terminate() {\n return;\n },\n });\n\n return LocalPdfManager;\n})();\n\nvar NetworkPdfManager = (function NetworkPdfManagerClosure() {\n function NetworkPdfManager(docId, pdfNetworkStream, args, evaluatorOptions,\n docBaseUrl) {\n this._docId = docId;\n this._password = args.password;\n this._docBaseUrl = docBaseUrl;\n this.msgHandler = args.msgHandler;\n this.evaluatorOptions = evaluatorOptions;\n\n var params = {\n msgHandler: args.msgHandler,\n url: args.url,\n length: args.length,\n disableAutoFetch: args.disableAutoFetch,\n rangeChunkSize: args.rangeChunkSize,\n };\n this.streamManager = new ChunkedStreamManager(pdfNetworkStream, params);\n this.pdfDocument = new PDFDocument(this, this.streamManager.getStream());\n }\n\n Util.inherit(NetworkPdfManager, BasePdfManager, {\n ensure: function NetworkPdfManager_ensure(obj, prop, args) {\n var pdfManager = this;\n\n return new Promise(function (resolve, reject) {\n function ensureHelper() {\n try {\n var result;\n var value = obj[prop];\n if (typeof value === 'function') {\n result = value.apply(obj, args);\n } else {\n result = value;\n }\n resolve(result);\n } catch (e) {\n if (!(e instanceof MissingDataException)) {\n reject(e);\n return;\n }\n pdfManager.streamManager.requestRange(e.begin, e.end).\n then(ensureHelper, reject);\n }\n }\n\n ensureHelper();\n });\n },\n\n requestRange: function NetworkPdfManager_requestRange(begin, end) {\n return this.streamManager.requestRange(begin, end);\n },\n\n requestLoadedStream: function NetworkPdfManager_requestLoadedStream() {\n this.streamManager.requestAllChunks();\n },\n\n sendProgressiveData:\n function NetworkPdfManager_sendProgressiveData(chunk) {\n this.streamManager.onReceiveData({ chunk, });\n },\n\n onLoadedStream: function NetworkPdfManager_onLoadedStream() {\n return this.streamManager.onLoadedStream();\n },\n\n terminate: function NetworkPdfManager_terminate() {\n this.streamManager.abort();\n },\n });\n\n return NetworkPdfManager;\n})();\n\nexport {\n LocalPdfManager,\n NetworkPdfManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/pdf_manager.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, isSpace } from '../shared/util';\nimport { EOF } from './primitives';\n\nvar PostScriptParser = (function PostScriptParserClosure() {\n function PostScriptParser(lexer) {\n this.lexer = lexer;\n this.operators = [];\n this.token = null;\n this.prev = null;\n }\n PostScriptParser.prototype = {\n nextToken: function PostScriptParser_nextToken() {\n this.prev = this.token;\n this.token = this.lexer.getToken();\n },\n accept: function PostScriptParser_accept(type) {\n if (this.token.type === type) {\n this.nextToken();\n return true;\n }\n return false;\n },\n expect: function PostScriptParser_expect(type) {\n if (this.accept(type)) {\n return true;\n }\n throw new FormatError(\n `Unexpected symbol: found ${this.token.type} expected ${type}.`);\n },\n parse: function PostScriptParser_parse() {\n this.nextToken();\n this.expect(PostScriptTokenTypes.LBRACE);\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n return this.operators;\n },\n parseBlock: function PostScriptParser_parseBlock() {\n while (true) {\n if (this.accept(PostScriptTokenTypes.NUMBER)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.OPERATOR)) {\n this.operators.push(this.prev.value);\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n this.parseCondition();\n } else {\n return;\n }\n }\n },\n parseCondition: function PostScriptParser_parseCondition() {\n // Add two place holders that will be updated later\n var conditionLocation = this.operators.length;\n this.operators.push(null, null);\n\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n if (this.accept(PostScriptTokenTypes.IF)) {\n // The true block is right after the 'if' so it just falls through on\n // true else it jumps and skips the true block.\n this.operators[conditionLocation] = this.operators.length;\n this.operators[conditionLocation + 1] = 'jz';\n } else if (this.accept(PostScriptTokenTypes.LBRACE)) {\n var jumpLocation = this.operators.length;\n this.operators.push(null, null);\n var endOfTrue = this.operators.length;\n this.parseBlock();\n this.expect(PostScriptTokenTypes.RBRACE);\n this.expect(PostScriptTokenTypes.IFELSE);\n // The jump is added at the end of the true block to skip the false\n // block.\n this.operators[jumpLocation] = this.operators.length;\n this.operators[jumpLocation + 1] = 'j';\n\n this.operators[conditionLocation] = endOfTrue;\n this.operators[conditionLocation + 1] = 'jz';\n } else {\n throw new FormatError('PS Function: error parsing conditional.');\n }\n },\n };\n return PostScriptParser;\n})();\n\nvar PostScriptTokenTypes = {\n LBRACE: 0,\n RBRACE: 1,\n NUMBER: 2,\n OPERATOR: 3,\n IF: 4,\n IFELSE: 5,\n};\n\nvar PostScriptToken = (function PostScriptTokenClosure() {\n function PostScriptToken(type, value) {\n this.type = type;\n this.value = value;\n }\n\n var opCache = Object.create(null);\n\n PostScriptToken.getOperator = function PostScriptToken_getOperator(op) {\n var opValue = opCache[op];\n if (opValue) {\n return opValue;\n }\n return opCache[op] = new PostScriptToken(PostScriptTokenTypes.OPERATOR, op);\n };\n\n PostScriptToken.LBRACE = new PostScriptToken(PostScriptTokenTypes.LBRACE,\n '{');\n PostScriptToken.RBRACE = new PostScriptToken(PostScriptTokenTypes.RBRACE,\n '}');\n PostScriptToken.IF = new PostScriptToken(PostScriptTokenTypes.IF, 'IF');\n PostScriptToken.IFELSE = new PostScriptToken(PostScriptTokenTypes.IFELSE,\n 'IFELSE');\n return PostScriptToken;\n})();\n\nvar PostScriptLexer = (function PostScriptLexerClosure() {\n function PostScriptLexer(stream) {\n this.stream = stream;\n this.nextChar();\n\n this.strBuf = [];\n }\n PostScriptLexer.prototype = {\n nextChar: function PostScriptLexer_nextChar() {\n return (this.currentChar = this.stream.getByte());\n },\n getToken: function PostScriptLexer_getToken() {\n var comment = false;\n var ch = this.currentChar;\n\n // skip comments\n while (true) {\n if (ch < 0) {\n return EOF;\n }\n\n if (comment) {\n if (ch === 0x0A || ch === 0x0D) {\n comment = false;\n }\n } else if (ch === 0x25) { // '%'\n comment = true;\n } else if (!isSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n switch (ch | 0) {\n case 0x30: case 0x31: case 0x32: case 0x33: case 0x34: // '0'-'4'\n case 0x35: case 0x36: case 0x37: case 0x38: case 0x39: // '5'-'9'\n case 0x2B: case 0x2D: case 0x2E: // '+', '-', '.'\n return new PostScriptToken(PostScriptTokenTypes.NUMBER,\n this.getNumber());\n case 0x7B: // '{'\n this.nextChar();\n return PostScriptToken.LBRACE;\n case 0x7D: // '}'\n this.nextChar();\n return PostScriptToken.RBRACE;\n }\n // operator\n var strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0 && // and 'A'-'Z', 'a'-'z'\n ((ch >= 0x41 && ch <= 0x5A) || (ch >= 0x61 && ch <= 0x7A))) {\n strBuf.push(String.fromCharCode(ch));\n }\n var str = strBuf.join('');\n switch (str.toLowerCase()) {\n case 'if':\n return PostScriptToken.IF;\n case 'ifelse':\n return PostScriptToken.IFELSE;\n default:\n return PostScriptToken.getOperator(str);\n }\n },\n getNumber: function PostScriptLexer_getNumber() {\n var ch = this.currentChar;\n var strBuf = this.strBuf;\n strBuf.length = 0;\n strBuf[0] = String.fromCharCode(ch);\n\n while ((ch = this.nextChar()) >= 0) {\n if ((ch >= 0x30 && ch <= 0x39) || // '0'-'9'\n ch === 0x2D || ch === 0x2E) { // '-', '.'\n strBuf.push(String.fromCharCode(ch));\n } else {\n break;\n }\n }\n var value = parseFloat(strBuf.join(''));\n if (isNaN(value)) {\n throw new FormatError(`Invalid floating point number: ${value}`);\n }\n return value;\n },\n };\n return PostScriptLexer;\n})();\n\nexport {\n PostScriptLexer,\n PostScriptParser,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/ps_parser.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isSpace, warn } from '../shared/util';\nimport { getEncoding } from './encodings';\nimport { Stream } from './stream';\n\n// Hinting is currently disabled due to unknown problems on windows\n// in tracemonkey and various other pdfs with type1 fonts.\nvar HINTING_ENABLED = false;\n\n/*\n * CharStrings are encoded following the the CharString Encoding sequence\n * describe in Chapter 6 of the \"Adobe Type1 Font Format\" specification.\n * The value in a byte indicates a command, a number, or subsequent bytes\n * that are to be interpreted in a special way.\n *\n * CharString Number Encoding:\n * A CharString byte containing the values from 32 through 255 inclusive\n * indicate an integer. These values are decoded in four ranges.\n *\n * 1. A CharString byte containing a value, v, between 32 and 246 inclusive,\n * indicate the integer v - 139. Thus, the integer values from -107 through\n * 107 inclusive may be encoded in single byte.\n *\n * 2. A CharString byte containing a value, v, between 247 and 250 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * [(v - 247) x 256] + w + 108\n *\n * 3. A CharString byte containing a value, v, between 251 and 254 inclusive,\n * indicates an integer involving the next byte, w, according to the formula:\n * -[(v - 251) * 256] - w - 108\n *\n * 4. A CharString containing the value 255 indicates that the next 4 bytes\n * are a two complement signed integer. The first of these bytes contains the\n * highest order bits, the second byte contains the next higher order bits\n * and the fourth byte contain the lowest order bits.\n *\n *\n * CharString Command Encoding:\n * CharStrings commands are encoded in 1 or 2 bytes.\n *\n * Single byte commands are encoded in 1 byte that contains a value between\n * 0 and 31 inclusive.\n * If a command byte contains the value 12, then the value in the next byte\n * indicates a command. This \"escape\" mechanism allows many extra commands\n * to be encoded and this encoding technique helps to minimize the length of\n * the charStrings.\n */\nvar Type1CharString = (function Type1CharStringClosure() {\n var COMMAND_MAP = {\n 'hstem': [1],\n 'vstem': [3],\n 'vmoveto': [4],\n 'rlineto': [5],\n 'hlineto': [6],\n 'vlineto': [7],\n 'rrcurveto': [8],\n 'callsubr': [10],\n 'flex': [12, 35],\n 'drop': [12, 18],\n 'endchar': [14],\n 'rmoveto': [21],\n 'hmoveto': [22],\n 'vhcurveto': [30],\n 'hvcurveto': [31],\n };\n\n function Type1CharString() {\n this.width = 0;\n this.lsb = 0;\n this.flexing = false;\n this.output = [];\n this.stack = [];\n }\n\n Type1CharString.prototype = {\n convert: function Type1CharString_convert(encoded, subrs,\n seacAnalysisEnabled) {\n var count = encoded.length;\n var error = false;\n var wx, sbx, subrNumber;\n for (var i = 0; i < count; i++) {\n var value = encoded[i];\n if (value < 32) {\n if (value === 12) {\n value = (value << 8) + encoded[++i];\n }\n switch (value) {\n case 1: // hstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case 3: // vstem\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case 4: // vmoveto\n if (this.flexing) {\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n // Add the dx for flex and but also swap the values so they are\n // the right order.\n var dy = this.stack.pop();\n this.stack.push(0, dy);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.vmoveto);\n break;\n case 5: // rlineto\n error = this.executeCommand(2, COMMAND_MAP.rlineto);\n break;\n case 6: // hlineto\n error = this.executeCommand(1, COMMAND_MAP.hlineto);\n break;\n case 7: // vlineto\n error = this.executeCommand(1, COMMAND_MAP.vlineto);\n break;\n case 8: // rrcurveto\n error = this.executeCommand(6, COMMAND_MAP.rrcurveto);\n break;\n case 9: // closepath\n // closepath is a Type1 command that does not take argument and is\n // useless in Type2 and it can simply be ignored.\n this.stack = [];\n break;\n case 10: // callsubr\n if (this.stack.length < 1) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n error = this.convert(subrs[subrNumber], subrs,\n seacAnalysisEnabled);\n break;\n case 11: // return\n return error;\n case 13: // hsbw\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use hmoveto with lsb.\n wx = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx);\n error = this.executeCommand(2, COMMAND_MAP.hmoveto);\n break;\n case 14: // endchar\n this.output.push(COMMAND_MAP.endchar[0]);\n break;\n case 21: // rmoveto\n if (this.flexing) {\n break;\n }\n error = this.executeCommand(2, COMMAND_MAP.rmoveto);\n break;\n case 22: // hmoveto\n if (this.flexing) {\n // Add the dy for flex.\n this.stack.push(0);\n break;\n }\n error = this.executeCommand(1, COMMAND_MAP.hmoveto);\n break;\n case 30: // vhcurveto\n error = this.executeCommand(4, COMMAND_MAP.vhcurveto);\n break;\n case 31: // hvcurveto\n error = this.executeCommand(4, COMMAND_MAP.hvcurveto);\n break;\n case (12 << 8) + 0: // dotsection\n // dotsection is a Type1 command to specify some hinting feature\n // for dots that do not take a parameter and it can safely be\n // ignored for Type2.\n this.stack = [];\n break;\n case (12 << 8) + 1: // vstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // [vh]stem3 are Type1 only and Type2 supports [vh]stem with\n // multiple parameters, so instead of returning [vh]stem3 take a\n // shortcut and return [vhstem] instead.\n error = this.executeCommand(2, COMMAND_MAP.vstem);\n break;\n case (12 << 8) + 2: // hstem3\n if (!HINTING_ENABLED) {\n this.stack = [];\n break;\n }\n // See vstem3.\n error = this.executeCommand(2, COMMAND_MAP.hstem);\n break;\n case (12 << 8) + 6: // seac\n // seac is like type 2's special endchar but it doesn't use the\n // first argument asb, so remove it.\n if (seacAnalysisEnabled) {\n this.seac = this.stack.splice(-4, 4);\n error = this.executeCommand(0, COMMAND_MAP.endchar);\n } else {\n error = this.executeCommand(4, COMMAND_MAP.endchar);\n }\n break;\n case (12 << 8) + 7: // sbw\n if (this.stack.length < 4) {\n error = true;\n break;\n }\n // To convert to type2 we have to move the width value to the\n // first part of the charstring and then use rmoveto with\n // (dx, dy). The height argument will not be used for vmtx and\n // vhea tables reconstruction -- ignoring it.\n this.stack.pop(); // wy\n wx = this.stack.pop();\n var sby = this.stack.pop();\n sbx = this.stack.pop();\n this.lsb = sbx;\n this.width = wx;\n this.stack.push(wx, sbx, sby);\n error = this.executeCommand(3, COMMAND_MAP.rmoveto);\n break;\n case (12 << 8) + 12: // div\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n var num2 = this.stack.pop();\n var num1 = this.stack.pop();\n this.stack.push(num1 / num2);\n break;\n case (12 << 8) + 16: // callothersubr\n if (this.stack.length < 2) {\n error = true;\n break;\n }\n subrNumber = this.stack.pop();\n var numArgs = this.stack.pop();\n if (subrNumber === 0 && numArgs === 3) {\n var flexArgs = this.stack.splice(this.stack.length - 17, 17);\n this.stack.push(\n flexArgs[2] + flexArgs[0], // bcp1x + rpx\n flexArgs[3] + flexArgs[1], // bcp1y + rpy\n flexArgs[4], // bcp2x\n flexArgs[5], // bcp2y\n flexArgs[6], // p2x\n flexArgs[7], // p2y\n flexArgs[8], // bcp3x\n flexArgs[9], // bcp3y\n flexArgs[10], // bcp4x\n flexArgs[11], // bcp4y\n flexArgs[12], // p3x\n flexArgs[13], // p3y\n flexArgs[14] // flexDepth\n // 15 = finalx unused by flex\n // 16 = finaly unused by flex\n );\n error = this.executeCommand(13, COMMAND_MAP.flex, true);\n this.flexing = false;\n this.stack.push(flexArgs[15], flexArgs[16]);\n } else if (subrNumber === 1 && numArgs === 0) {\n this.flexing = true;\n }\n break;\n case (12 << 8) + 17: // pop\n // Ignore this since it is only used with othersubr.\n break;\n case (12 << 8) + 33: // setcurrentpoint\n // Ignore for now.\n this.stack = [];\n break;\n default:\n warn('Unknown type 1 charstring command of \"' + value + '\"');\n break;\n }\n if (error) {\n break;\n }\n continue;\n } else if (value <= 246) {\n value = value - 139;\n } else if (value <= 250) {\n value = ((value - 247) * 256) + encoded[++i] + 108;\n } else if (value <= 254) {\n value = -((value - 251) * 256) - encoded[++i] - 108;\n } else {\n value = (encoded[++i] & 0xff) << 24 | (encoded[++i] & 0xff) << 16 |\n (encoded[++i] & 0xff) << 8 | (encoded[++i] & 0xff) << 0;\n }\n this.stack.push(value);\n }\n return error;\n },\n\n executeCommand(howManyArgs, command, keepStack) {\n var stackLength = this.stack.length;\n if (howManyArgs > stackLength) {\n return true;\n }\n var start = stackLength - howManyArgs;\n for (var i = start; i < stackLength; i++) {\n var value = this.stack[i];\n if (value === (value | 0)) { // int\n this.output.push(28, (value >> 8) & 0xff, value & 0xff);\n } else { // fixed point\n value = (65536 * value) | 0;\n this.output.push(255,\n (value >> 24) & 0xFF,\n (value >> 16) & 0xFF,\n (value >> 8) & 0xFF,\n value & 0xFF);\n }\n }\n this.output.push.apply(this.output, command);\n if (keepStack) {\n this.stack.splice(start, howManyArgs);\n } else {\n this.stack.length = 0;\n }\n return false;\n },\n };\n\n return Type1CharString;\n})();\n\n/*\n * Type1Parser encapsulate the needed code for parsing a Type1 font\n * program. Some of its logic depends on the Type2 charstrings\n * structure.\n * Note: this doesn't really parse the font since that would require evaluation\n * of PostScript, but it is possible in most cases to extract what we need\n * without a full parse.\n */\nvar Type1Parser = (function Type1ParserClosure() {\n /*\n * Decrypt a Sequence of Ciphertext Bytes to Produce the Original Sequence\n * of Plaintext Bytes. The function took a key as a parameter which can be\n * for decrypting the eexec block of for decoding charStrings.\n */\n var EEXEC_ENCRYPT_KEY = 55665;\n var CHAR_STRS_ENCRYPT_KEY = 4330;\n\n function isHexDigit(code) {\n return code >= 48 && code <= 57 || // '0'-'9'\n code >= 65 && code <= 70 || // 'A'-'F'\n code >= 97 && code <= 102; // 'a'-'f'\n }\n\n function decrypt(data, key, discardNumber) {\n if (discardNumber >= data.length) {\n return new Uint8Array(0);\n }\n var r = key | 0, c1 = 52845, c2 = 22719, i, j;\n for (i = 0; i < discardNumber; i++) {\n r = ((data[i] + r) * c1 + c2) & ((1 << 16) - 1);\n }\n var count = data.length - discardNumber;\n var decrypted = new Uint8Array(count);\n for (i = discardNumber, j = 0; j < count; i++, j++) {\n var value = data[i];\n decrypted[j] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n return decrypted;\n }\n\n function decryptAscii(data, key, discardNumber) {\n var r = key | 0, c1 = 52845, c2 = 22719;\n var count = data.length, maybeLength = count >>> 1;\n var decrypted = new Uint8Array(maybeLength);\n var i, j;\n for (i = 0, j = 0; i < count; i++) {\n var digit1 = data[i];\n if (!isHexDigit(digit1)) {\n continue;\n }\n i++;\n var digit2;\n while (i < count && !isHexDigit(digit2 = data[i])) {\n i++;\n }\n if (i < count) {\n var value = parseInt(String.fromCharCode(digit1, digit2), 16);\n decrypted[j++] = value ^ (r >> 8);\n r = ((value + r) * c1 + c2) & ((1 << 16) - 1);\n }\n }\n return Array.prototype.slice.call(decrypted, discardNumber, j);\n }\n\n function isSpecial(c) {\n return c === 0x2F || // '/'\n c === 0x5B || c === 0x5D || // '[', ']'\n c === 0x7B || c === 0x7D || // '{', '}'\n c === 0x28 || c === 0x29; // '(', ')'\n }\n\n function Type1Parser(stream, encrypted, seacAnalysisEnabled) {\n if (encrypted) {\n var data = stream.getBytes();\n var isBinary = !(isHexDigit(data[0]) && isHexDigit(data[1]) &&\n isHexDigit(data[2]) && isHexDigit(data[3]));\n stream = new Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) :\n decryptAscii(data, EEXEC_ENCRYPT_KEY, 4));\n }\n this.seacAnalysisEnabled = !!seacAnalysisEnabled;\n\n this.stream = stream;\n this.nextChar();\n }\n\n Type1Parser.prototype = {\n readNumberArray: function Type1Parser_readNumberArray() {\n this.getToken(); // read '[' or '{' (arrays can start with either)\n var array = [];\n while (true) {\n var token = this.getToken();\n if (token === null || token === ']' || token === '}') {\n break;\n }\n array.push(parseFloat(token || 0));\n }\n return array;\n },\n\n readNumber: function Type1Parser_readNumber() {\n var token = this.getToken();\n return parseFloat(token || 0);\n },\n\n readInt: function Type1Parser_readInt() {\n // Use '| 0' to prevent setting a double into length such as the double\n // does not flow into the loop variable.\n var token = this.getToken();\n return parseInt(token || 0, 10) | 0;\n },\n\n readBoolean: function Type1Parser_readBoolean() {\n var token = this.getToken();\n\n // Use 1 and 0 since that's what type2 charstrings use.\n return token === 'true' ? 1 : 0;\n },\n\n nextChar: function Type1_nextChar() {\n return (this.currentChar = this.stream.getByte());\n },\n\n getToken: function Type1Parser_getToken() {\n // Eat whitespace and comments.\n var comment = false;\n var ch = this.currentChar;\n while (true) {\n if (ch === -1) {\n return null;\n }\n\n if (comment) {\n if (ch === 0x0A || ch === 0x0D) {\n comment = false;\n }\n } else if (ch === 0x25) { // '%'\n comment = true;\n } else if (!isSpace(ch)) {\n break;\n }\n ch = this.nextChar();\n }\n if (isSpecial(ch)) {\n this.nextChar();\n return String.fromCharCode(ch);\n }\n var token = '';\n do {\n token += String.fromCharCode(ch);\n ch = this.nextChar();\n } while (ch >= 0 && !isSpace(ch) && !isSpecial(ch));\n return token;\n },\n\n /*\n * Returns an object containing a Subrs array and a CharStrings\n * array extracted from and eexec encrypted block of data\n */\n extractFontProgram: function Type1Parser_extractFontProgram() {\n var stream = this.stream;\n\n var subrs = [], charstrings = [];\n var privateData = Object.create(null);\n privateData['lenIV'] = 4;\n var program = {\n subrs: [],\n charstrings: [],\n properties: {\n 'privateData': privateData,\n },\n };\n var token, length, data, lenIV, encoded;\n while ((token = this.getToken()) !== null) {\n if (token !== '/') {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case 'CharStrings':\n // The number immediately following CharStrings must be greater or\n // equal to the number of CharStrings.\n this.getToken();\n this.getToken(); // read in 'dict'\n this.getToken(); // read in 'dup'\n this.getToken(); // read in 'begin'\n while (true) {\n token = this.getToken();\n if (token === null || token === 'end') {\n break;\n }\n\n if (token !== '/') {\n continue;\n }\n var glyph = this.getToken();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = stream.makeSubStream(stream.pos, length);\n lenIV = program.properties.privateData['lenIV'];\n encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV);\n // Skip past the required space and binary data.\n stream.skip(length);\n this.nextChar();\n token = this.getToken(); // read in 'ND' or '|-'\n if (token === 'noaccess') {\n this.getToken(); // read in 'def'\n }\n charstrings.push({\n glyph,\n encoded,\n });\n }\n break;\n case 'Subrs':\n this.readInt(); // num\n this.getToken(); // read in 'array'\n while ((token = this.getToken()) === 'dup') {\n var index = this.readInt();\n length = this.readInt();\n this.getToken(); // read in 'RD' or '-|'\n data = stream.makeSubStream(stream.pos, length);\n lenIV = program.properties.privateData['lenIV'];\n encoded = decrypt(data.getBytes(), CHAR_STRS_ENCRYPT_KEY, lenIV);\n // Skip past the required space and binary data.\n stream.skip(length);\n this.nextChar();\n token = this.getToken(); // read in 'NP' or '|'\n if (token === 'noaccess') {\n this.getToken(); // read in 'put'\n }\n subrs[index] = encoded;\n }\n break;\n case 'BlueValues':\n case 'OtherBlues':\n case 'FamilyBlues':\n case 'FamilyOtherBlues':\n var blueArray = this.readNumberArray();\n // *Blue* values may contain invalid data: disables reading of\n // those values when hinting is disabled.\n if (blueArray.length > 0 && (blueArray.length % 2) === 0 &&\n HINTING_ENABLED) {\n program.properties.privateData[token] = blueArray;\n }\n break;\n case 'StemSnapH':\n case 'StemSnapV':\n program.properties.privateData[token] = this.readNumberArray();\n break;\n case 'StdHW':\n case 'StdVW':\n program.properties.privateData[token] =\n this.readNumberArray()[0];\n break;\n case 'BlueShift':\n case 'lenIV':\n case 'BlueFuzz':\n case 'BlueScale':\n case 'LanguageGroup':\n case 'ExpansionFactor':\n program.properties.privateData[token] = this.readNumber();\n break;\n case 'ForceBold':\n program.properties.privateData[token] = this.readBoolean();\n break;\n }\n }\n\n for (var i = 0; i < charstrings.length; i++) {\n glyph = charstrings[i].glyph;\n encoded = charstrings[i].encoded;\n var charString = new Type1CharString();\n var error = charString.convert(encoded, subrs,\n this.seacAnalysisEnabled);\n var output = charString.output;\n if (error) {\n // It seems when FreeType encounters an error while evaluating a glyph\n // that it completely ignores the glyph so we'll mimic that behaviour\n // here and put an endchar to make the validator happy.\n output = [14];\n }\n program.charstrings.push({\n glyphName: glyph,\n charstring: output,\n width: charString.width,\n lsb: charString.lsb,\n seac: charString.seac,\n });\n }\n\n return program;\n },\n\n extractFontHeader: function Type1Parser_extractFontHeader(properties) {\n var token;\n while ((token = this.getToken()) !== null) {\n if (token !== '/') {\n continue;\n }\n token = this.getToken();\n switch (token) {\n case 'FontMatrix':\n var matrix = this.readNumberArray();\n properties.fontMatrix = matrix;\n break;\n case 'Encoding':\n var encodingArg = this.getToken();\n var encoding;\n if (!/^\\d+$/.test(encodingArg)) {\n // encoding name is specified\n encoding = getEncoding(encodingArg);\n } else {\n encoding = [];\n var size = parseInt(encodingArg, 10) | 0;\n this.getToken(); // read in 'array'\n\n for (var j = 0; j < size; j++) {\n token = this.getToken();\n // skipping till first dup or def (e.g. ignoring for statement)\n while (token !== 'dup' && token !== 'def') {\n token = this.getToken();\n if (token === null) {\n return; // invalid header\n }\n }\n if (token === 'def') {\n break; // read all array data\n }\n var index = this.readInt();\n this.getToken(); // read in '/'\n var glyph = this.getToken();\n encoding[index] = glyph;\n this.getToken(); // read the in 'put'\n }\n }\n properties.builtInEncoding = encoding;\n break;\n case 'FontBBox':\n var fontBBox = this.readNumberArray();\n // adjusting ascent/descent\n properties.ascent = Math.max(fontBBox[3], fontBBox[1]);\n properties.descent = Math.min(fontBBox[1], fontBBox[3]);\n properties.ascentScaled = true;\n break;\n }\n }\n },\n };\n\n return Type1Parser;\n})();\n\nexport {\n Type1Parser,\n};\n\n\n\n// WEBPACK FOOTER //\n// src/core/type1_parser.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-unused-vars */\n\n'use strict';\n\nvar pdfjsVersion = PDFJSDev.eval('BUNDLE_VERSION');\nvar pdfjsBuild = PDFJSDev.eval('BUNDLE_BUILD');\n\nvar pdfjsCoreWorker = require('./core/worker.js');\n\nexports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;\n\n\n\n// WEBPACK FOOTER //\n// src/pdf.worker.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable no-extend-native */\n/* globals VBArray, PDFJS, global */\n\n// Skip compatibility checks for the extensions and if we already ran\n// this module.\nif ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) &&\n (typeof PDFJS === 'undefined' || !PDFJS.compatibilityChecked)) {\n\nvar globalScope =\n (typeof window !== 'undefined' && window.Math === Math) ? window :\n (typeof global !== 'undefined' && global.Math === Math) ? global :\n (typeof self !== 'undefined' && self.Math === Math) ? self :\n (typeof this !== 'undefined' && this.Math === Math) ? this : {};\n\nvar userAgent = (typeof navigator !== 'undefined' && navigator.userAgent) || '';\nvar isAndroid = /Android/.test(userAgent);\nvar isAndroidPre3 = /Android\\s[0-2][^\\d]/.test(userAgent);\nvar isAndroidPre5 = /Android\\s[0-4][^\\d]/.test(userAgent);\nvar isChrome = userAgent.indexOf('Chrom') >= 0;\nvar isChromeWithRangeBug = /Chrome\\/(39|40)\\./.test(userAgent);\nvar isIOSChrome = userAgent.indexOf('CriOS') >= 0;\nvar isIE = userAgent.indexOf('Trident') >= 0;\nvar isIOS = /\\b(iPad|iPhone|iPod)(?=;)/.test(userAgent);\nvar isOpera = userAgent.indexOf('Opera') >= 0;\nvar isSafari = /Safari\\//.test(userAgent) &&\n !/(Chrome\\/|Android\\s)/.test(userAgent);\n\nvar hasDOM = typeof window === 'object' && typeof document === 'object';\n\n// Initializing PDFJS global object here, it case if we need to change/disable\n// some PDF.js features, e.g. range requests\nif (typeof PDFJS === 'undefined') {\n globalScope.PDFJS = {};\n}\n\nPDFJS.compatibilityChecked = true;\n\n// Checking if the typed arrays are supported\n// Support: iOS<6.0 (subarray), IE<10, Android<4.0\n(function checkTypedArrayCompatibility() {\n if (typeof Uint8Array !== 'undefined') {\n // Support: iOS<6.0\n if (typeof Uint8Array.prototype.subarray === 'undefined') {\n Uint8Array.prototype.subarray = function subarray(start, end) {\n return new Uint8Array(this.slice(start, end));\n };\n Float32Array.prototype.subarray = function subarray(start, end) {\n return new Float32Array(this.slice(start, end));\n };\n }\n\n // Support: Android<4.1\n if (typeof Float64Array === 'undefined') {\n globalScope.Float64Array = Float32Array;\n }\n return;\n }\n\n function subarray(start, end) {\n return new TypedArray(this.slice(start, end));\n }\n\n function setArrayOffset(array, offset) {\n if (arguments.length < 2) {\n offset = 0;\n }\n for (var i = 0, n = array.length; i < n; ++i, ++offset) {\n this[offset] = array[i] & 0xFF;\n }\n }\n\n function Uint32ArrayView(buffer, length) {\n this.buffer = buffer;\n this.byteLength = buffer.length;\n this.length = length;\n ensureUint32ArrayViewProps(this.length);\n }\n Uint32ArrayView.prototype = Object.create(null);\n\n var uint32ArrayViewSetters = 0;\n function createUint32ArrayProp(index) {\n return {\n get() {\n var buffer = this.buffer, offset = index << 2;\n return (buffer[offset] | (buffer[offset + 1] << 8) |\n (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;\n },\n set(value) {\n var buffer = this.buffer, offset = index << 2;\n buffer[offset] = value & 255;\n buffer[offset + 1] = (value >> 8) & 255;\n buffer[offset + 2] = (value >> 16) & 255;\n buffer[offset + 3] = (value >>> 24) & 255;\n },\n };\n }\n\n function ensureUint32ArrayViewProps(length) {\n while (uint32ArrayViewSetters < length) {\n Object.defineProperty(Uint32ArrayView.prototype,\n uint32ArrayViewSetters,\n createUint32ArrayProp(uint32ArrayViewSetters));\n uint32ArrayViewSetters++;\n }\n }\n\n function TypedArray(arg1) {\n var result, i, n;\n if (typeof arg1 === 'number') {\n result = [];\n for (i = 0; i < arg1; ++i) {\n result[i] = 0;\n }\n } else if ('slice' in arg1) {\n result = arg1.slice(0);\n } else {\n result = [];\n for (i = 0, n = arg1.length; i < n; ++i) {\n result[i] = arg1[i];\n }\n }\n\n result.subarray = subarray;\n result.buffer = result;\n result.byteLength = result.length;\n result.set = setArrayOffset;\n\n if (typeof arg1 === 'object' && arg1.buffer) {\n result.buffer = arg1.buffer;\n }\n return result;\n }\n\n globalScope.Uint8Array = TypedArray;\n globalScope.Int8Array = TypedArray;\n\n // we don't need support for set, byteLength for 32-bit array\n // so we can use the TypedArray as well\n globalScope.Int32Array = TypedArray;\n globalScope.Uint16Array = TypedArray;\n globalScope.Float32Array = TypedArray;\n globalScope.Float64Array = TypedArray;\n\n globalScope.Uint32Array = function () {\n if (arguments.length === 3) {\n // Building view for buffer, offset, and length\n if (arguments[1] !== 0) {\n throw new Error('offset !== 0 is not supported');\n }\n return new Uint32ArrayView(arguments[0], arguments[2]);\n }\n return TypedArray.apply(this, arguments);\n };\n})();\n\n// window.CanvasPixelArray.buffer/.byteLength\n// Support: IE9\n(function canvasPixelArrayBuffer() {\n if (!hasDOM || !window.CanvasPixelArray) {\n return;\n }\n var cpaProto = window.CanvasPixelArray.prototype;\n if ('buffer' in cpaProto) {\n return;\n }\n // Trying to fake CanvasPixelArray as Uint8ClampedArray.\n Object.defineProperty(cpaProto, 'buffer', {\n get() {\n return this;\n },\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(cpaProto, 'byteLength', {\n get() {\n return this.length;\n },\n enumerable: false,\n configurable: true,\n });\n})();\n\n// URL = URL || webkitURL\n// Support: Safari<7, Android 4.2+\n(function normalizeURLObject() {\n if (!globalScope.URL) {\n globalScope.URL = globalScope.webkitURL;\n }\n})();\n\n// Object.defineProperty()?\n// Support: Android<4.0, Safari<5.1\n(function checkObjectDefinePropertyCompatibility() {\n if (typeof Object.defineProperty !== 'undefined') {\n var definePropertyPossible = true;\n try {\n if (hasDOM) {\n // some browsers (e.g. safari) cannot use defineProperty() on DOM\n // objects and thus the native version is not sufficient\n Object.defineProperty(new Image(), 'id', { value: 'test', });\n }\n // ... another test for android gb browser for non-DOM objects\n var Test = function Test() {};\n Test.prototype = { get id() { }, };\n Object.defineProperty(new Test(), 'id',\n { value: '', configurable: true, enumerable: true, writable: false, });\n } catch (e) {\n definePropertyPossible = false;\n }\n if (definePropertyPossible) {\n return;\n }\n }\n\n Object.defineProperty = function objectDefineProperty(obj, name, def) {\n delete obj[name];\n if ('get' in def) {\n obj.__defineGetter__(name, def['get']);\n }\n if ('set' in def) {\n obj.__defineSetter__(name, def['set']);\n }\n if ('value' in def) {\n obj.__defineSetter__(name, function objectDefinePropertySetter(value) {\n this.__defineGetter__(name, function objectDefinePropertyGetter() {\n return value;\n });\n return value;\n });\n obj[name] = def.value;\n }\n };\n})();\n\n\n// No XMLHttpRequest#response?\n// Support: IE<11, Android <4.0\n(function checkXMLHttpRequestResponseCompatibility() {\n if (typeof XMLHttpRequest === 'undefined') {\n return;\n }\n var xhrPrototype = XMLHttpRequest.prototype;\n var xhr = new XMLHttpRequest();\n if (!('overrideMimeType' in xhr)) {\n // IE10 might have response, but not overrideMimeType\n // Support: IE10\n Object.defineProperty(xhrPrototype, 'overrideMimeType', {\n value: function xmlHttpRequestOverrideMimeType(mimeType) {},\n });\n }\n if ('responseType' in xhr) {\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'responseType', {\n get: function xmlHttpRequestGetResponseType() {\n return this._responseType || 'text';\n },\n set: function xmlHttpRequestSetResponseType(value) {\n if (value === 'text' || value === 'arraybuffer') {\n this._responseType = value;\n if (value === 'arraybuffer' &&\n typeof this.overrideMimeType === 'function') {\n this.overrideMimeType('text/plain; charset=x-user-defined');\n }\n }\n },\n });\n\n // Support: IE9\n if (typeof VBArray !== 'undefined') {\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType === 'arraybuffer') {\n return new Uint8Array(new VBArray(this.responseBody).toArray());\n }\n return this.responseText;\n },\n });\n return;\n }\n\n Object.defineProperty(xhrPrototype, 'response', {\n get: function xmlHttpRequestResponseGet() {\n if (this.responseType !== 'arraybuffer') {\n return this.responseText;\n }\n var text = this.responseText;\n var i, n = text.length;\n var result = new Uint8Array(n);\n for (i = 0; i < n; ++i) {\n result[i] = text.charCodeAt(i) & 0xFF;\n }\n return result.buffer;\n },\n });\n})();\n\n// window.btoa (base64 encode function) ?\n// Support: IE<10\n(function checkWindowBtoaCompatibility() {\n if ('btoa' in globalScope) {\n return;\n }\n\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n globalScope.btoa = function (chars) {\n var buffer = '';\n var i, n;\n for (i = 0, n = chars.length; i < n; i += 3) {\n var b1 = chars.charCodeAt(i) & 0xFF;\n var b2 = chars.charCodeAt(i + 1) & 0xFF;\n var b3 = chars.charCodeAt(i + 2) & 0xFF;\n var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);\n var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;\n var d4 = i + 2 < n ? (b3 & 0x3F) : 64;\n buffer += (digits.charAt(d1) + digits.charAt(d2) +\n digits.charAt(d3) + digits.charAt(d4));\n }\n return buffer;\n };\n})();\n\n// window.atob (base64 encode function)?\n// Support: IE<10\n(function checkWindowAtobCompatibility() {\n if ('atob' in globalScope) {\n return;\n }\n\n // https://github.com/davidchambers/Base64.js\n var digits =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n globalScope.atob = function (input) {\n input = input.replace(/=+$/, '');\n if (input.length % 4 === 1) {\n throw new Error('bad atob input');\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = '';\n // get next character\n (buffer = input.charAt(idx++));\n // character found in table?\n // initialize bit storage and add its ascii value\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = digits.indexOf(buffer);\n }\n return output;\n };\n})();\n\n// Function.prototype.bind?\n// Support: Android<4.0, iOS<6.0\n(function checkFunctionPrototypeBindCompatibility() {\n if (typeof Function.prototype.bind !== 'undefined') {\n return;\n }\n\n Function.prototype.bind = function functionPrototypeBind(obj) {\n var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);\n var bound = function functionPrototypeBindBound() {\n var args = headArgs.concat(Array.prototype.slice.call(arguments));\n return fn.apply(obj, args);\n };\n return bound;\n };\n})();\n\n// HTMLElement dataset property\n// Support: IE<11, Safari<5.1, Android<4.0\n(function checkDatasetProperty() {\n if (!hasDOM) {\n return;\n }\n var div = document.createElement('div');\n if ('dataset' in div) {\n return; // dataset property exists\n }\n\n Object.defineProperty(HTMLElement.prototype, 'dataset', {\n get() {\n if (this._dataset) {\n return this._dataset;\n }\n\n var dataset = {};\n for (var j = 0, jj = this.attributes.length; j < jj; j++) {\n var attribute = this.attributes[j];\n if (attribute.name.substring(0, 5) !== 'data-') {\n continue;\n }\n var key = attribute.name.substring(5).replace(/\\-([a-z])/g,\n function(all, ch) {\n return ch.toUpperCase();\n });\n dataset[key] = attribute.value;\n }\n\n Object.defineProperty(this, '_dataset', {\n value: dataset,\n writable: false,\n enumerable: false,\n });\n return dataset;\n },\n enumerable: true,\n });\n})();\n\n// HTMLElement classList property\n// Support: IE<10, Android<4.0, iOS<5.0\n(function checkClassListProperty() {\n function changeList(element, itemName, add, remove) {\n var s = element.className || '';\n var list = s.split(/\\s+/g);\n if (list[0] === '') {\n list.shift();\n }\n var index = list.indexOf(itemName);\n if (index < 0 && add) {\n list.push(itemName);\n }\n if (index >= 0 && remove) {\n list.splice(index, 1);\n }\n element.className = list.join(' ');\n return (index >= 0);\n }\n\n if (!hasDOM) {\n return;\n }\n\n var div = document.createElement('div');\n if ('classList' in div) {\n return; // classList property exists\n }\n\n var classListPrototype = {\n add(name) {\n changeList(this.element, name, true, false);\n },\n contains(name) {\n return changeList(this.element, name, false, false);\n },\n remove(name) {\n changeList(this.element, name, false, true);\n },\n toggle(name) {\n changeList(this.element, name, true, true);\n },\n };\n\n Object.defineProperty(HTMLElement.prototype, 'classList', {\n get() {\n if (this._classList) {\n return this._classList;\n }\n\n var classList = Object.create(classListPrototype, {\n element: {\n value: this,\n writable: false,\n enumerable: true,\n },\n });\n Object.defineProperty(this, '_classList', {\n value: classList,\n writable: false,\n enumerable: false,\n });\n return classList;\n },\n enumerable: true,\n });\n})();\n\n// Checking if worker has console support. Forwarding all messages to the main\n// thread if console object is absent.\n(function checkWorkerConsoleCompatibility() {\n if (typeof importScripts === 'undefined' || 'console' in globalScope) {\n return;\n }\n\n var consoleTimer = {};\n\n var workerConsole = {\n log: function log() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_log',\n data: args,\n });\n },\n\n error: function error() {\n var args = Array.prototype.slice.call(arguments);\n globalScope.postMessage({\n targetName: 'main',\n action: 'console_error',\n data: args,\n });\n },\n\n time: function time(name) {\n consoleTimer[name] = Date.now();\n },\n\n timeEnd: function timeEnd(name) {\n var time = consoleTimer[name];\n if (!time) {\n throw new Error('Unknown timer name ' + name);\n }\n this.log('Timer:', name, Date.now() - time);\n },\n };\n\n globalScope.console = workerConsole;\n})();\n\n// Check console compatibility\n// In older IE versions the console object is not available\n// unless console is open.\n// Support: IE<10\n(function checkConsoleCompatibility() {\n if (!hasDOM) {\n return;\n }\n if (!('console' in window)) {\n window.console = {\n log() {},\n error() {},\n warn() {},\n };\n return;\n }\n if (!('bind' in console.log)) {\n // native functions in IE9 might not have bind\n console.log = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.log);\n console.error = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.error);\n console.warn = (function(fn) {\n return function(msg) {\n return fn(msg);\n };\n })(console.warn);\n return;\n }\n})();\n\n// Check onclick compatibility in Opera\n// Support: Opera<15\n(function checkOnClickCompatibility() {\n // workaround for reported Opera bug DSK-354448:\n // onclick fires on disabled buttons with opaque content\n function ignoreIfTargetDisabled(event) {\n if (isDisabled(event.target)) {\n event.stopPropagation();\n }\n }\n function isDisabled(node) {\n return node.disabled || (node.parentNode && isDisabled(node.parentNode));\n }\n if (isOpera) {\n // use browser detection since we cannot feature-check this bug\n document.addEventListener('click', ignoreIfTargetDisabled, true);\n }\n})();\n\n// Checks if possible to use URL.createObjectURL()\n// Support: IE, Chrome on iOS\n(function checkOnBlobSupport() {\n // sometimes IE and Chrome on iOS loosing the data created with\n // createObjectURL(), see #3977 and #8081\n if (isIE || isIOSChrome) {\n PDFJS.disableCreateObjectURL = true;\n }\n})();\n\n// Checks if navigator.language is supported\n(function checkNavigatorLanguage() {\n if (typeof navigator === 'undefined') {\n return;\n }\n if ('language' in navigator) {\n return;\n }\n PDFJS.locale = navigator.userLanguage || 'en-US';\n})();\n\n// Support: Safari 6.0+, Android<3.0, Chrome 39/40, iOS\n(function checkRangeRequests() {\n // Safari has issues with cached range requests see:\n // https://github.com/mozilla/pdf.js/issues/3260\n // Last tested with version 6.0.4.\n\n // Older versions of Android (pre 3.0) has issues with range requests, see:\n // https://github.com/mozilla/pdf.js/issues/3381.\n // Make sure that we only match webkit-based Android browsers,\n // since Firefox/Fennec works as expected.\n\n // Range requests are broken in Chrome 39 and 40, https://crbug.com/442318\n if (isSafari || isAndroidPre3 || isChromeWithRangeBug || isIOS) {\n PDFJS.disableRange = true;\n PDFJS.disableStream = true;\n }\n})();\n\n// Check if the browser supports manipulation of the history.\n// Support: IE<10, Android<4.2\n(function checkHistoryManipulation() {\n if (!hasDOM) {\n return;\n }\n // Android 2.x has so buggy pushState support that it was removed in\n // Android 3.0 and restored as late as in Android 4.2.\n // Support: Android 2.x\n if (!history.pushState || isAndroidPre3) {\n PDFJS.disableHistory = true;\n }\n})();\n\n// Support: IE<11, Chrome<21, Android<4.4, Safari<6\n(function checkSetPresenceInImageData() {\n if (!hasDOM) {\n return;\n }\n // IE < 11 will use window.CanvasPixelArray which lacks set function.\n if (window.CanvasPixelArray) {\n if (typeof window.CanvasPixelArray.prototype.set !== 'function') {\n window.CanvasPixelArray.prototype.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n }\n } else {\n // Old Chrome and Android use an inaccessible CanvasPixelArray prototype.\n // Because we cannot feature detect it, we rely on user agent parsing.\n var polyfill = false, versionMatch;\n if (isChrome) {\n versionMatch = userAgent.match(/Chrom(e|ium)\\/([0-9]+)\\./);\n // Chrome < 21 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[2]) < 21;\n } else if (isAndroid) {\n // Android < 4.4 lacks the set function.\n // Android >= 4.4 will contain Chrome in the user agent,\n // thus pass the Chrome check above and not reach this block.\n polyfill = isAndroidPre5;\n } else if (isSafari) {\n versionMatch = userAgent.\n match(/Version\\/([0-9]+)\\.([0-9]+)\\.([0-9]+) Safari\\//);\n // Safari < 6 lacks the set function.\n polyfill = versionMatch && parseInt(versionMatch[1]) < 6;\n }\n\n if (polyfill) {\n var contextPrototype = window.CanvasRenderingContext2D.prototype;\n var createImageData = contextPrototype.createImageData;\n contextPrototype.createImageData = function(w, h) {\n var imageData = createImageData.call(this, w, h);\n imageData.data.set = function(arr) {\n for (var i = 0, ii = this.length; i < ii; i++) {\n this[i] = arr[i];\n }\n };\n return imageData;\n };\n // this closure will be kept referenced, so clear its vars\n contextPrototype = null;\n }\n }\n})();\n\n// Support: IE<10, Android<4.0, iOS\n(function checkRequestAnimationFrame() {\n function installFakeAnimationFrameFunctions() {\n window.requestAnimationFrame = function (callback) {\n return window.setTimeout(callback, 20);\n };\n window.cancelAnimationFrame = function (timeoutID) {\n window.clearTimeout(timeoutID);\n };\n }\n\n if (!hasDOM) {\n return;\n }\n if (isIOS) {\n // requestAnimationFrame on iOS is broken, replacing with fake one.\n installFakeAnimationFrameFunctions();\n return;\n }\n if ('requestAnimationFrame' in window) {\n return;\n }\n window.requestAnimationFrame = window.mozRequestAnimationFrame ||\n window.webkitRequestAnimationFrame;\n if (window.requestAnimationFrame) {\n return;\n }\n installFakeAnimationFrameFunctions();\n})();\n\n// Support: Android, iOS\n(function checkCanvasSizeLimitation() {\n if (isIOS || isAndroid) {\n // 5MP\n PDFJS.maxCanvasPixels = 5242880;\n }\n})();\n\n// Disable fullscreen support for certain problematic configurations.\n// Support: IE11+ (when embedded).\n(function checkFullscreenSupport() {\n if (!hasDOM) {\n return;\n }\n if (isIE && window.parent !== window) {\n PDFJS.disableFullscreen = true;\n }\n})();\n\n// Provides document.currentScript support\n// Support: IE, Chrome<29.\n(function checkCurrentScript() {\n if (!hasDOM) {\n return;\n }\n if ('currentScript' in document) {\n return;\n }\n Object.defineProperty(document, 'currentScript', {\n get() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides `input.type = 'type'` runtime failure protection.\n// Support: IE9,10.\n(function checkInputTypeNumberAssign() {\n if (!hasDOM) {\n return;\n }\n var el = document.createElement('input');\n try {\n el.type = 'number';\n } catch (ex) {\n var inputProto = el.constructor.prototype;\n var typeProperty = Object.getOwnPropertyDescriptor(inputProto, 'type');\n Object.defineProperty(inputProto, 'type', {\n get() {\n return typeProperty.get.call(this);\n },\n set(value) {\n typeProperty.set.call(this, value === 'number' ? 'text' : value);\n },\n enumerable: true,\n configurable: true,\n });\n }\n})();\n\n// Provides correct document.readyState value for legacy browsers.\n// Support: IE9,10.\n(function checkDocumentReadyState() {\n if (!hasDOM) {\n return;\n }\n if (!document.attachEvent) {\n return;\n }\n var documentProto = document.constructor.prototype;\n var readyStateProto = Object.getOwnPropertyDescriptor(documentProto,\n 'readyState');\n Object.defineProperty(documentProto, 'readyState', {\n get() {\n var value = readyStateProto.get.call(this);\n return value === 'interactive' ? 'loading' : value;\n },\n set(value) {\n readyStateProto.set.call(this, value);\n },\n enumerable: true,\n configurable: true,\n });\n})();\n\n// Provides support for ChildNode.remove in legacy browsers.\n// Support: IE.\n(function checkChildNodeRemove() {\n if (!hasDOM) {\n return;\n }\n if (typeof Element.prototype.remove !== 'undefined') {\n return;\n }\n Element.prototype.remove = function () {\n if (this.parentNode) {\n this.parentNode.removeChild(this);\n }\n };\n})();\n\n// Provides support for Number.isNaN in legacy browsers.\n// Support: IE.\n(function checkNumberIsNaN() {\n if (Number.isNaN) {\n return;\n }\n Number.isNaN = function(value) {\n return typeof value === 'number' && isNaN(value);\n };\n})();\n\n// Provides support for Number.isInteger in legacy browsers.\n// Support: IE.\n(function checkNumberIsInteger() {\n if (Number.isInteger) {\n return;\n }\n Number.isInteger = function(value) {\n return typeof value === 'number' && isFinite(value) &&\n Math.floor(value) === value;\n };\n})();\n\n/**\n * Polyfill for Promises:\n * The following promise implementation tries to generally implement the\n * Promise/A+ spec. Some notable differences from other promise libraries are:\n * - There currently isn't a separate deferred and promise object.\n * - Unhandled rejections eventually show an error if they aren't handled.\n *\n * Based off of the work in:\n * https://bugzilla.mozilla.org/show_bug.cgi?id=810490\n */\n(function checkPromise() {\n if (globalScope.Promise) {\n // Promises existing in the DOM/Worker, checking presence of all/resolve\n if (typeof globalScope.Promise.all !== 'function') {\n globalScope.Promise.all = function (iterable) {\n var count = 0, results = [], resolve, reject;\n var promise = new globalScope.Promise(function (resolve_, reject_) {\n resolve = resolve_;\n reject = reject_;\n });\n iterable.forEach(function (p, i) {\n count++;\n p.then(function (result) {\n results[i] = result;\n count--;\n if (count === 0) {\n resolve(results);\n }\n }, reject);\n });\n if (count === 0) {\n resolve(results);\n }\n return promise;\n };\n }\n if (typeof globalScope.Promise.resolve !== 'function') {\n globalScope.Promise.resolve = function (value) {\n return new globalScope.Promise(function (resolve) {\n resolve(value);\n });\n };\n }\n if (typeof globalScope.Promise.reject !== 'function') {\n globalScope.Promise.reject = function (reason) {\n return new globalScope.Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n }\n if (typeof globalScope.Promise.prototype.catch !== 'function') {\n globalScope.Promise.prototype.catch = function (onReject) {\n return globalScope.Promise.prototype.then(undefined, onReject);\n };\n }\n return;\n }\n\n var STATUS_PENDING = 0;\n var STATUS_RESOLVED = 1;\n var STATUS_REJECTED = 2;\n\n // In an attempt to avoid silent exceptions, unhandled rejections are\n // tracked and if they aren't handled in a certain amount of time an\n // error is logged.\n var REJECTION_TIMEOUT = 500;\n\n var HandlerManager = {\n handlers: [],\n running: false,\n unhandledRejections: [],\n pendingRejectionCheck: false,\n\n scheduleHandlers: function scheduleHandlers(promise) {\n if (promise._status === STATUS_PENDING) {\n return;\n }\n\n this.handlers = this.handlers.concat(promise._handlers);\n promise._handlers = [];\n\n if (this.running) {\n return;\n }\n this.running = true;\n\n setTimeout(this.runHandlers.bind(this), 0);\n },\n\n runHandlers: function runHandlers() {\n var RUN_TIMEOUT = 1; // ms\n var timeoutAt = Date.now() + RUN_TIMEOUT;\n while (this.handlers.length > 0) {\n var handler = this.handlers.shift();\n\n var nextStatus = handler.thisPromise._status;\n var nextValue = handler.thisPromise._value;\n\n try {\n if (nextStatus === STATUS_RESOLVED) {\n if (typeof handler.onResolve === 'function') {\n nextValue = handler.onResolve(nextValue);\n }\n } else if (typeof handler.onReject === 'function') {\n nextValue = handler.onReject(nextValue);\n nextStatus = STATUS_RESOLVED;\n\n if (handler.thisPromise._unhandledRejection) {\n this.removeUnhandeledRejection(handler.thisPromise);\n }\n }\n } catch (ex) {\n nextStatus = STATUS_REJECTED;\n nextValue = ex;\n }\n\n handler.nextPromise._updateStatus(nextStatus, nextValue);\n if (Date.now() >= timeoutAt) {\n break;\n }\n }\n\n if (this.handlers.length > 0) {\n setTimeout(this.runHandlers.bind(this), 0);\n return;\n }\n\n this.running = false;\n },\n\n addUnhandledRejection: function addUnhandledRejection(promise) {\n this.unhandledRejections.push({\n promise,\n time: Date.now(),\n });\n this.scheduleRejectionCheck();\n },\n\n removeUnhandeledRejection: function removeUnhandeledRejection(promise) {\n promise._unhandledRejection = false;\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (this.unhandledRejections[i].promise === promise) {\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n },\n\n scheduleRejectionCheck: function scheduleRejectionCheck() {\n if (this.pendingRejectionCheck) {\n return;\n }\n this.pendingRejectionCheck = true;\n setTimeout(() => {\n this.pendingRejectionCheck = false;\n var now = Date.now();\n for (var i = 0; i < this.unhandledRejections.length; i++) {\n if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {\n var unhandled = this.unhandledRejections[i].promise._value;\n var msg = 'Unhandled rejection: ' + unhandled;\n if (unhandled.stack) {\n msg += '\\n' + unhandled.stack;\n }\n // Raising and catching the error, so debugger can break on it.\n try {\n throw new Error(msg);\n } catch (_) {\n console.warn(msg);\n }\n this.unhandledRejections.splice(i);\n i--;\n }\n }\n if (this.unhandledRejections.length) {\n this.scheduleRejectionCheck();\n }\n }, REJECTION_TIMEOUT);\n },\n };\n\n var Promise = function Promise(resolver) {\n this._status = STATUS_PENDING;\n this._handlers = [];\n try {\n resolver.call(this, this._resolve.bind(this), this._reject.bind(this));\n } catch (e) {\n this._reject(e);\n }\n };\n\n /**\n * Builds a promise that is resolved when all the passed in promises are\n * resolved.\n * @param {array} promises array of data and/or promises to wait for.\n * @return {Promise} New dependent promise.\n */\n Promise.all = function Promise_all(promises) {\n var resolveAll, rejectAll;\n var deferred = new Promise(function (resolve, reject) {\n resolveAll = resolve;\n rejectAll = reject;\n });\n var unresolved = promises.length;\n var results = [];\n if (unresolved === 0) {\n resolveAll(results);\n return deferred;\n }\n function reject(reason) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results = [];\n rejectAll(reason);\n }\n for (var i = 0, ii = promises.length; i < ii; ++i) {\n var promise = promises[i];\n var resolve = (function(i) {\n return function(value) {\n if (deferred._status === STATUS_REJECTED) {\n return;\n }\n results[i] = value;\n unresolved--;\n if (unresolved === 0) {\n resolveAll(results);\n }\n };\n })(i);\n if (Promise.isPromise(promise)) {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n return deferred;\n };\n\n /**\n * Checks if the value is likely a promise (has a 'then' function).\n * @return {boolean} true if value is thenable\n */\n Promise.isPromise = function Promise_isPromise(value) {\n return value && typeof value.then === 'function';\n };\n\n /**\n * Creates resolved promise\n * @param value resolve value\n * @returns {Promise}\n */\n Promise.resolve = function Promise_resolve(value) {\n return new Promise(function (resolve) {\n resolve(value);\n });\n };\n\n /**\n * Creates rejected promise\n * @param reason rejection value\n * @returns {Promise}\n */\n Promise.reject = function Promise_reject(reason) {\n return new Promise(function (resolve, reject) {\n reject(reason);\n });\n };\n\n Promise.prototype = {\n _status: null,\n _value: null,\n _handlers: null,\n _unhandledRejection: null,\n\n _updateStatus: function Promise__updateStatus(status, value) {\n if (this._status === STATUS_RESOLVED ||\n this._status === STATUS_REJECTED) {\n return;\n }\n\n if (status === STATUS_RESOLVED &&\n Promise.isPromise(value)) {\n value.then(this._updateStatus.bind(this, STATUS_RESOLVED),\n this._updateStatus.bind(this, STATUS_REJECTED));\n return;\n }\n\n this._status = status;\n this._value = value;\n\n if (status === STATUS_REJECTED && this._handlers.length === 0) {\n this._unhandledRejection = true;\n HandlerManager.addUnhandledRejection(this);\n }\n\n HandlerManager.scheduleHandlers(this);\n },\n\n _resolve: function Promise_resolve(value) {\n this._updateStatus(STATUS_RESOLVED, value);\n },\n\n _reject: function Promise_reject(reason) {\n this._updateStatus(STATUS_REJECTED, reason);\n },\n\n then: function Promise_then(onResolve, onReject) {\n var nextPromise = new Promise(function (resolve, reject) {\n this.resolve = resolve;\n this.reject = reject;\n });\n this._handlers.push({\n thisPromise: this,\n onResolve,\n onReject,\n nextPromise,\n });\n HandlerManager.scheduleHandlers(this);\n return nextPromise;\n },\n\n catch: function Promise_catch(onReject) {\n return this.then(undefined, onReject);\n },\n };\n\n globalScope.Promise = Promise;\n})();\n\n(function checkWeakMap() {\n if (globalScope.WeakMap) {\n return;\n }\n\n var id = 0;\n function WeakMap() {\n this.id = '$weakmap' + (id++);\n }\n WeakMap.prototype = {\n has(obj) {\n if ((typeof obj !== 'object' && typeof obj !== 'function') ||\n obj === null) {\n return false;\n }\n return !!Object.getOwnPropertyDescriptor(obj, this.id);\n },\n get(obj) {\n return this.has(obj) ? obj[this.id] : undefined;\n },\n set(obj, value) {\n Object.defineProperty(obj, this.id, {\n value,\n enumerable: false,\n configurable: true,\n });\n },\n delete(obj) {\n delete obj[this.id];\n },\n };\n\n globalScope.WeakMap = WeakMap;\n})();\n\n// Polyfill from https://github.com/Polymer/URL\n/* Any copyright is dedicated to the Public Domain.\n * http://creativecommons.org/publicdomain/zero/1.0/ */\n(function checkURLConstructor() {\n // feature detect for URL constructor\n var hasWorkingUrl = false;\n try {\n if (typeof URL === 'function' &&\n typeof URL.prototype === 'object' &&\n ('origin' in URL.prototype)) {\n var u = new URL('b', 'http://a');\n u.pathname = 'c%20d';\n hasWorkingUrl = u.href === 'http://a/c%20d';\n }\n } catch (e) { }\n\n if (hasWorkingUrl) {\n return;\n }\n\n var relative = Object.create(null);\n relative['ftp'] = 21;\n relative['file'] = 0;\n relative['gopher'] = 70;\n relative['http'] = 80;\n relative['https'] = 443;\n relative['ws'] = 80;\n relative['wss'] = 443;\n\n var relativePathDotMapping = Object.create(null);\n relativePathDotMapping['%2e'] = '.';\n relativePathDotMapping['.%2e'] = '..';\n relativePathDotMapping['%2e.'] = '..';\n relativePathDotMapping['%2e%2e'] = '..';\n\n function isRelativeScheme(scheme) {\n return relative[scheme] !== undefined;\n }\n\n function invalid() {\n clear.call(this);\n this._isInvalid = true;\n }\n\n function IDNAToASCII(h) {\n if (h === '') {\n invalid.call(this);\n }\n // XXX\n return h.toLowerCase();\n }\n\n function percentEscape(c) {\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ? `\n [0x22, 0x23, 0x3C, 0x3E, 0x3F, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n function percentEscapeQuery(c) {\n // XXX This actually needs to encode c using encoding and then\n // convert the bytes one-by-one.\n\n var unicode = c.charCodeAt(0);\n if (unicode > 0x20 &&\n unicode < 0x7F &&\n // \" # < > ` (do not escape '?')\n [0x22, 0x23, 0x3C, 0x3E, 0x60].indexOf(unicode) === -1\n ) {\n return c;\n }\n return encodeURIComponent(c);\n }\n\n var EOF, ALPHA = /[a-zA-Z]/,\n ALPHANUMERIC = /[a-zA-Z0-9\\+\\-\\.]/;\n\n function parse(input, stateOverride, base) {\n function err(message) {\n errors.push(message);\n }\n\n var state = stateOverride || 'scheme start',\n cursor = 0,\n buffer = '',\n seenAt = false,\n seenBracket = false,\n errors = [];\n\n loop: while ((input[cursor - 1] !== EOF || cursor === 0) &&\n !this._isInvalid) {\n var c = input[cursor];\n switch (state) {\n case 'scheme start':\n if (c && ALPHA.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n state = 'scheme';\n } else if (!stateOverride) {\n buffer = '';\n state = 'no scheme';\n continue;\n } else {\n err('Invalid scheme.');\n break loop;\n }\n break;\n\n case 'scheme':\n if (c && ALPHANUMERIC.test(c)) {\n buffer += c.toLowerCase(); // ASCII-safe\n } else if (c === ':') {\n this._scheme = buffer;\n buffer = '';\n if (stateOverride) {\n break loop;\n }\n if (isRelativeScheme(this._scheme)) {\n this._isRelative = true;\n }\n if (this._scheme === 'file') {\n state = 'relative';\n } else if (this._isRelative && base &&\n base._scheme === this._scheme) {\n state = 'relative or authority';\n } else if (this._isRelative) {\n state = 'authority first slash';\n } else {\n state = 'scheme data';\n }\n } else if (!stateOverride) {\n buffer = '';\n cursor = 0;\n state = 'no scheme';\n continue;\n } else if (c === EOF) {\n break loop;\n } else {\n err('Code point not allowed in scheme: ' + c);\n break loop;\n }\n break;\n\n case 'scheme data':\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else {\n // XXX error handling\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._schemeData += percentEscape(c);\n }\n }\n break;\n\n case 'no scheme':\n if (!base || !(isRelativeScheme(base._scheme))) {\n err('Missing scheme.');\n invalid.call(this);\n } else {\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative or authority':\n if (c === '/' && input[cursor + 1] === '/') {\n state = 'authority ignore slashes';\n } else {\n err('Expected /, got: ' + c);\n state = 'relative';\n continue;\n }\n break;\n\n case 'relative':\n this._isRelative = true;\n if (this._scheme !== 'file') {\n this._scheme = base._scheme;\n }\n if (c === EOF) {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._username = base._username;\n this._password = base._password;\n break loop;\n } else if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n state = 'relative slash';\n } else if (c === '?') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = '?';\n this._username = base._username;\n this._password = base._password;\n state = 'query';\n } else if (c === '#') {\n this._host = base._host;\n this._port = base._port;\n this._path = base._path.slice();\n this._query = base._query;\n this._fragment = '#';\n this._username = base._username;\n this._password = base._password;\n state = 'fragment';\n } else {\n var nextC = input[cursor + 1];\n var nextNextC = input[cursor + 2];\n if (this._scheme !== 'file' || !ALPHA.test(c) ||\n (nextC !== ':' && nextC !== '|') ||\n (nextNextC !== EOF && nextNextC !== '/' && nextNextC !== '\\\\' &&\n nextNextC !== '?' && nextNextC !== '#')) {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n this._path = base._path.slice();\n this._path.pop();\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'relative slash':\n if (c === '/' || c === '\\\\') {\n if (c === '\\\\') {\n err('\\\\ is an invalid code point.');\n }\n if (this._scheme === 'file') {\n state = 'file host';\n } else {\n state = 'authority ignore slashes';\n }\n } else {\n if (this._scheme !== 'file') {\n this._host = base._host;\n this._port = base._port;\n this._username = base._username;\n this._password = base._password;\n }\n state = 'relative path';\n continue;\n }\n break;\n\n case 'authority first slash':\n if (c === '/') {\n state = 'authority second slash';\n } else {\n err('Expected \\'/\\', got: ' + c);\n state = 'authority ignore slashes';\n continue;\n }\n break;\n\n case 'authority second slash':\n state = 'authority ignore slashes';\n if (c !== '/') {\n err('Expected \\'/\\', got: ' + c);\n continue;\n }\n break;\n\n case 'authority ignore slashes':\n if (c !== '/' && c !== '\\\\') {\n state = 'authority';\n continue;\n } else {\n err('Expected authority, got: ' + c);\n }\n break;\n\n case 'authority':\n if (c === '@') {\n if (seenAt) {\n err('@ already seen.');\n buffer += '%40';\n }\n seenAt = true;\n for (var i = 0; i < buffer.length; i++) {\n var cp = buffer[i];\n if (cp === '\\t' || cp === '\\n' || cp === '\\r') {\n err('Invalid whitespace in authority.');\n continue;\n }\n // XXX check URL code points\n if (cp === ':' && this._password === null) {\n this._password = '';\n continue;\n }\n var tempC = percentEscape(cp);\n if (this._password !== null) {\n this._password += tempC;\n } else {\n this._username += tempC;\n }\n }\n buffer = '';\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#') {\n cursor -= buffer.length;\n buffer = '';\n state = 'host';\n continue;\n } else {\n buffer += c;\n }\n break;\n\n case 'file host':\n if (c === EOF || c === '/' || c === '\\\\' || c === '?' || c === '#') {\n if (buffer.length === 2 && ALPHA.test(buffer[0]) &&\n (buffer[1] === ':' || buffer[1] === '|')) {\n state = 'relative path';\n } else if (buffer.length === 0) {\n state = 'relative path start';\n } else {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n }\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid whitespace in file host.');\n } else {\n buffer += c;\n }\n break;\n\n case 'host':\n case 'hostname':\n if (c === ':' && !seenBracket) {\n // XXX host parsing\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'port';\n if (stateOverride === 'hostname') {\n break loop;\n }\n } else if (c === EOF || c === '/' ||\n c === '\\\\' || c === '?' || c === '#') {\n this._host = IDNAToASCII.call(this, buffer);\n buffer = '';\n state = 'relative path start';\n if (stateOverride) {\n break loop;\n }\n continue;\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n if (c === '[') {\n seenBracket = true;\n } else if (c === ']') {\n seenBracket = false;\n }\n buffer += c;\n } else {\n err('Invalid code point in host/hostname: ' + c);\n }\n break;\n\n case 'port':\n if (/[0-9]/.test(c)) {\n buffer += c;\n } else if (c === EOF || c === '/' || c === '\\\\' ||\n c === '?' || c === '#' || stateOverride) {\n if (buffer !== '') {\n var temp = parseInt(buffer, 10);\n if (temp !== relative[this._scheme]) {\n this._port = temp + '';\n }\n buffer = '';\n }\n if (stateOverride) {\n break loop;\n }\n state = 'relative path start';\n continue;\n } else if (c === '\\t' || c === '\\n' || c === '\\r') {\n err('Invalid code point in port: ' + c);\n } else {\n invalid.call(this);\n }\n break;\n\n case 'relative path start':\n if (c === '\\\\') {\n err('\\'\\\\\\' not allowed in path.');\n }\n state = 'relative path';\n if (c !== '/' && c !== '\\\\') {\n continue;\n }\n break;\n\n case 'relative path':\n if (c === EOF || c === '/' || c === '\\\\' ||\n (!stateOverride && (c === '?' || c === '#'))) {\n if (c === '\\\\') {\n err('\\\\ not allowed in relative path.');\n }\n var tmp;\n if ((tmp = relativePathDotMapping[buffer.toLowerCase()])) {\n buffer = tmp;\n }\n if (buffer === '..') {\n this._path.pop();\n if (c !== '/' && c !== '\\\\') {\n this._path.push('');\n }\n } else if (buffer === '.' && c !== '/' && c !== '\\\\') {\n this._path.push('');\n } else if (buffer !== '.') {\n if (this._scheme === 'file' && this._path.length === 0 &&\n buffer.length === 2 && ALPHA.test(buffer[0]) &&\n buffer[1] === '|') {\n buffer = buffer[0] + ':';\n }\n this._path.push(buffer);\n }\n buffer = '';\n if (c === '?') {\n this._query = '?';\n state = 'query';\n } else if (c === '#') {\n this._fragment = '#';\n state = 'fragment';\n }\n } else if (c !== '\\t' && c !== '\\n' && c !== '\\r') {\n buffer += percentEscape(c);\n }\n break;\n\n case 'query':\n if (!stateOverride && c === '#') {\n this._fragment = '#';\n state = 'fragment';\n } else if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._query += percentEscapeQuery(c);\n }\n break;\n\n case 'fragment':\n if (c !== EOF && c !== '\\t' && c !== '\\n' && c !== '\\r') {\n this._fragment += c;\n }\n break;\n }\n\n cursor++;\n }\n }\n\n function clear() {\n this._scheme = '';\n this._schemeData = '';\n this._username = '';\n this._password = null;\n this._host = '';\n this._port = '';\n this._path = [];\n this._query = '';\n this._fragment = '';\n this._isInvalid = false;\n this._isRelative = false;\n }\n\n // Does not process domain names or IP addresses.\n // Does not handle encoding for the query parameter.\n function JURL(url, base /* , encoding */) {\n if (base !== undefined && !(base instanceof JURL)) {\n base = new JURL(String(base));\n }\n\n this._url = url;\n clear.call(this);\n\n var input = url.replace(/^[ \\t\\r\\n\\f]+|[ \\t\\r\\n\\f]+$/g, '');\n // encoding = encoding || 'utf-8'\n\n parse.call(this, input, null, base);\n }\n\n JURL.prototype = {\n toString() {\n return this.href;\n },\n get href() {\n if (this._isInvalid) {\n return this._url;\n }\n var authority = '';\n if (this._username !== '' || this._password !== null) {\n authority = this._username +\n (this._password !== null ? ':' + this._password : '') + '@';\n }\n\n return this.protocol +\n (this._isRelative ? '//' + authority + this.host : '') +\n this.pathname + this._query + this._fragment;\n },\n // The named parameter should be different from the setter's function name.\n // Otherwise Safari 5 will throw an error (see issue 8541)\n set href(value) {\n clear.call(this);\n parse.call(this, value);\n },\n\n get protocol() {\n return this._scheme + ':';\n },\n set protocol(value) {\n if (this._isInvalid) {\n return;\n }\n parse.call(this, value + ':', 'scheme start');\n },\n\n get host() {\n return this._isInvalid ? '' : this._port ?\n this._host + ':' + this._port : this._host;\n },\n set host(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'host');\n },\n\n get hostname() {\n return this._host;\n },\n set hostname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'hostname');\n },\n\n get port() {\n return this._port;\n },\n set port(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n parse.call(this, value, 'port');\n },\n\n get pathname() {\n return this._isInvalid ? '' : this._isRelative ?\n '/' + this._path.join('/') : this._schemeData;\n },\n set pathname(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._path = [];\n parse.call(this, value, 'relative path start');\n },\n\n get search() {\n return this._isInvalid || !this._query || this._query === '?' ?\n '' : this._query;\n },\n set search(value) {\n if (this._isInvalid || !this._isRelative) {\n return;\n }\n this._query = '?';\n if (value[0] === '?') {\n value = value.slice(1);\n }\n parse.call(this, value, 'query');\n },\n\n get hash() {\n return this._isInvalid || !this._fragment || this._fragment === '#' ?\n '' : this._fragment;\n },\n set hash(value) {\n if (this._isInvalid) {\n return;\n }\n this._fragment = '#';\n if (value[0] === '#') {\n value = value.slice(1);\n }\n parse.call(this, value, 'fragment');\n },\n\n get origin() {\n var host;\n if (this._isInvalid || !this._scheme) {\n return '';\n }\n // javascript: Gecko returns String(\"\"), WebKit/Blink String(\"null\")\n // Gecko throws error for \"data://\"\n // data: Gecko returns \"\", Blink returns \"data://\", WebKit returns \"null\"\n // Gecko returns String(\"\") for file: mailto:\n // WebKit/Blink returns String(\"SCHEME://\") for file: mailto:\n switch (this._scheme) {\n case 'data':\n case 'file':\n case 'javascript':\n case 'mailto':\n return 'null';\n case 'blob':\n // Special case of blob: -- returns valid origin of _schemeData.\n try {\n return new JURL(this._schemeData).origin || 'null';\n } catch (_) {\n // Invalid _schemeData origin -- ignoring errors.\n }\n return 'null';\n }\n host = this.host;\n if (!host) {\n return '';\n }\n return this._scheme + '://' + host;\n },\n };\n\n // Copy over the static methods\n var OriginalURL = globalScope.URL;\n if (OriginalURL) {\n JURL.createObjectURL = function(blob) {\n // IE extension allows a second optional options argument.\n // http://msdn.microsoft.com/en-us/library/ie/hh772302(v=vs.85).aspx\n return OriginalURL.createObjectURL.apply(OriginalURL, arguments);\n };\n JURL.revokeObjectURL = function(url) {\n OriginalURL.revokeObjectURL(url);\n };\n }\n\n globalScope.URL = JURL;\n})();\n\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/compatibility.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet isReadableStreamSupported = false;\nif (typeof ReadableStream !== 'undefined') {\n // MS Edge may say it has ReadableStream but they are not up to spec yet.\n try {\n // eslint-disable-next-line no-new\n new ReadableStream({\n start(controller) {\n controller.close();\n },\n });\n isReadableStreamSupported = true;\n } catch (e) {\n // The ReadableStream constructor cannot be used.\n }\n}\nif (isReadableStreamSupported) {\n exports.ReadableStream = ReadableStream;\n} else {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n throw new Error('ReadableStream polyfill is not found for Chrome bundle');\n }\n exports.ReadableStream =\n require('../../external/streams/streams-lib').ReadableStream;\n}\n\n\n\n// WEBPACK FOOTER //\n// src/shared/streams_polyfill.js"],"sourceRoot":""} diff --git a/public/static/login/QRcode.png b/public/static/login/QRcode.png new file mode 100644 index 0000000000000000000000000000000000000000..3d6c598e9b6a6ce476d12e42e9e7837af0d919ac GIT binary patch literal 4799 zcmcgw3se(V8V>8D)s`0PcI_5h$7rn;Cz+WflgUW5KtQkt5UHTJtCN{Yh$NYi3=l*G zJ>mleZI!JkDyRrP0Ne{`Ngn(TTySv>vC&|pc z-~ImY{`dd?dnYU7VlIF}3is5vu#9_7qv`7>>$zi4FG?s^Stifnei#zHY#gLIv zi<1;uL~D&;Q;pH{ZS3^iYTS13`S5A!AY44@?BzJ z&Bo}-1WlCB7I;#NQ+eJ>N~Kv@S&}T7gtHl>s7j@hBA67zV1R(_*%qF1z!v+cP6iEY zr)@?nZ{#eHz)0!13|=h;O1)DsTm7^ayU$I)VNwTWm7)?vn34y`(0-gX!)EdrXJ{#F zV$H0Dw*xHd#{w^DwSIVyv}Us(ZRaC1fg<1BdPLh3v#qQ&fwglPHkysh1Qthi3bXSG zY?o`EU^syL2U}A)p0lTNy*R<&{fH}gqrMk|LeC>m)?w@gD)jiFRx-lIQaoo%jQZ?8p$tvxIh&aR%VsoF23Bgd7(CXrS~A9B=P3)##%R=H zAXQ>CG9;^)(F&SCVU*AjFs+oMuu92bFo7xcxD2Ba6(Z{#ui@wnA*6)y-t1yH8gTg6 zg2ePVrI#xSm{n3ZtfS-vtfN5^spJGDSE^)`QbBaG#o3G?!6{RBRzVd57R}c|P!^^2dIighp)R`-oQbn(IR^L~s1??l1oS{EC1jUcjQSdrg+MiB zcpH@%0xl^keEa%m_R-(f{kFvjT#Sh!AzDa}{pp}^0Rgx|AyfF;M@!Hr;n;GD4oTBq`cE4O)m#mJ$1!jXf;# zleyDNo0ZA}hdm~8y)Zkc=d&mq8)g7r?jtXxy-BxInU5FFunJrz$Mi6PU=&O+atfxD zG6jswafH_EFr5wq>)pF>1wzXGS@g?=`Dn7lsjA3oYZtLIOieCcsKeX3pv^`lZ{P$@4RhLLA91XnbFa3FC z@IGt2evA@U#1e_PsxnDK`bnaDc$sZ=(IKVKmU zrwm;sr3>f5#DY*&i(Q9{oQ3Z>>z24z9&=X~w$_|xV9isxys0Yfip@uoxvRPJ6c`51r^3Ofr&OQV zS&PCkA`+9UG#VKm8A+gMxJD5b6(Nhn&N$dVSC-F2?PFId?8gQT-)rQwS5{)KZv-xIq5^}$ke|7N-=(%|Ti$oI9Q=+Cf{t{C;|E3`> zWx^+adhecWQB&H+VKJ|-7_qoxv2|_S?t~YDD)tTe;$`b@G_>a3JP}`U>a#0lqLh7; z4xS4uCkXictcq!sad)@vE;fu?l(w{~>4dvdsc7F(dH+U1`lUa|*U4uHOG)$GnBdOsjXk)^g{>+h!lUyCUu8-*`Zn%GI z;&-u4`?3sU&JT0H1s|*XHt~l$&$oV^pK*HlfDyrq0$&SA-}(1`*OTUq%he_YU)y<8 zTe$4bvx5VdYAbd~ zIX^vIUm2LY@J9Bk^h@(5N>88WR;>AW>m|cCH_{7b&wg+rYw70Ao4z0L*J&58%1>=+ zF#mYAt;POgRZ{T1SI4~G)DI7euTq=lmWk%2q~ru;JWL{HhgPdMY%0DsHFo%dJMmDN zXhK2^EvwR{?AGUut9<`@*^DyL-;(p1ol{A;^7W2_lMe&bhu>u`+D@1X+FDMfREAu+ zc6DsfPidE3d(NDBD{TLiHy1qk$W8t>7ukDw`vrYm{_1nu6iNT)fs11sHZ94ker9aq z^C`-Bt16h!7+&pId*MzllQ8kcDbeZu%|-aouSxy)`0Bvx=kwPGeR)_3Z_%B}$Zu~8 zoppCyjd9TLN7RqJ`HiZ^ZJT*|L+TH&=_cPqvUe4a-rl_YtZ3fVfqTY|Op%064!&#~ zQN81UGXL0e*_AzYQ!BB+fC0H7ApsXMMqdev|Mua>Wi`{emj>Q`W{v6Ou&c+Hgr_&3 zAM+*NXbK*Gc2doRRMoMXyoc_|0bxF~KsD-iR@!$3j2}rN{D$nxIitqO9 zc+h;eIYIvE)Q+4H8&AxZd{CU$IDhv{a_;qc8%hrisBaG|fBJrSUigr^`Jw^$o<|bW VzPuk&ksyD6rYg&ab_Ln;Fdqd4QtlUa-9 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§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 U103N5XSl!>Zg7VOJW1|FzIH}ZoB#j- literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Japan1-1.bcmap b/public/static/web/cmaps/Adobe-Japan1-1.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..dad42c5ad7dad57954fc9a051ee7e222e83bee45 GIT binary patch literal 226 zcmW;C(F(y(0LJk%m!9Idac9QeF4x+{N-pdPuoG%*&RJ?#Ymy{Mk|arzBuSDai8t{m zKI;43eEnmeg6?_&uT`o(&8Vu9$|{OVHQOyQY6Ze)bwSNW+2x+gi$1gExaK(Y-wVo_ zV7&D^Eyk#v&Y8NAw+u-lghV0Mh7NS02Ynd85JoVD2~1%Ib6CI`GD7x@CoEK=wI literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Japan1-2.bcmap b/public/static/web/cmaps/Adobe-Japan1-2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..090819a064533f20aa68f562275556397683ae81 GIT binary patch literal 233 zcmW;C!HPjq0LJmd(q>-alr^r|-KAuqWZ^!6;WQL3=iZc+NRl*3(xgd}BuSbiNs@RE zkK#{#zs=X*`$$FYa!u#IbFK`VrV;ow3{yt3_Lq`Y&2d%Hk?~T-)@56#U6l>`B87r{ z_m0%cQM&p%Eu~~Il!!-TNh{{@2yw4h{6aM9tce!d=%9-pe$dANLyYi?G5#>Y6f?}R Zz!EF0vB4Jq*kO+YjyU0r3$EhhCY~ULRonmo literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Japan1-3.bcmap b/public/static/web/cmaps/Adobe-Japan1-3.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..087dfc155860e65d2dc828dd432ffe88239fde23 GIT binary patch literal 242 zcmW;C!Ab&A0EOW@?&>M-#%1H=ZkB`0VnAFpPf*Pzg~>bJ83I>gL_|b{h=@pth)9G) zNJNB)MCe=iDE;OXBS?d4* literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Japan1-4.bcmap b/public/static/web/cmaps/Adobe-Japan1-4.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..46aa9bffe576e9a8b714646aed7f9e1a4e99dfe2 GIT binary patch literal 337 zcmW;CQAa~z0LJlmyWFREzd-BM-MQ#uW*1|2(fI_`UM;qr?LEiX)ig;aNs=U)B$;HA zWRlEGW+pQ;NhZlmk|cH4fARco9)Is(HfX1FdTBB4$|=({CZ-L;l!2H%ucVc8T$OZW zIJIEww5{h{74!Q7iG=*`9jTS0bas4NN=g4@BpeJyt&qnf#BV+`BgAr^6|jO;tf7c? zY+w^x*v1Zav4?#epoBvl;TR_<;}mD8;2amY#1*Qz#tm*!Lmds=p@|mSxJL(F^w7rx a9`S?$p7DZL3^BqR-tmD?eBoPIKjIHvDu)yR literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Japan1-5.bcmap b/public/static/web/cmaps/Adobe-Japan1-5.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..5b4b65cc6292a5ba7d89e976565bf08814bb88b6 GIT binary patch literal 430 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 BxW^%pYjuN-9#jwV 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Korea1-0.bcmap b/public/static/web/cmaps/Adobe-Korea1-0.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..cef1a9985191f53c4a8a35811d1caeecdd1a1820 GIT binary patch literal 241 zcmW;CK}*750LJlm9s3mT#ba}M+i{E?2I0Ydf^;t$thU~bV5eb3M1+Wlh=_;<6+}yI|M2!7c7^j|X(nMGt)pFvJLB jOfba^k9fi}Uhs-HyyF9NeBuk=Sl|as{9=Vak*&o)>2O)q literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Korea1-1.bcmap b/public/static/web/cmaps/Adobe-Korea1-1.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..11ffa36df8404ab970df2a24b2d80b1dc6348436 GIT binary patch literal 386 zcmW;IVMjwz7{KwnUhY$zFR*p%-F-PT8QF{OC#ZI;vURs}uh^?~l4MqrBuSDalO#zd zNs=Ts!7SO2zVPu$BF)nH~I5FL(VM>=iW5wWz_Cxu(|1DW$h za=719c~A8QG93-avRUze?+Yb;sYcAwl~P38yOZ%m%1wkqmZhgkg)T;kH->RcU=n3i zFpU|^Vh;0Iz#^8gj1{b64eQuI6`RR!J?x`~103QA$2h?$&Tx(kT;dAXxWO&% wP)7szXyO5nc)~MUc)=^)@Qx3B;tSvS!7ucv`Ah+A5@^#vn+Tc;L%L%90TF_m@Bjb+ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-Korea1-2.bcmap b/public/static/web/cmaps/Adobe-Korea1-2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..3172308c79d57147cdbe05930228043faa48ca54 GIT binary patch literal 391 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 f42+FTOpJ|eK+FZid_XJ }}!1;lb046pnFxKb%J literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/B5pc-H.bcmap b/public/static/web/cmaps/B5pc-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..ce0013167f852a873b639e301088c094d468a750 GIT binary patch literal 1099 zcmW-g`%~0q6vodN6a}qhlS>5pun5Mq5J!##vdM@Bf}@NT7m;gd^fxrqTR%L%JoC!)l4};NoKa|MO+K-CAa~m;Yy` zTdjJ8G1Z)yv?e_XG;o5ZH6}Pa2(*7(bPX13xi0#9ng;QCPDf*cZvnXeZG=E4V1^R` zoRvxy;O4Ai+72k&S1{ECpkGb4=2BAudTmq=)uyA=8JOxyQ9dy;?RWuYM=I0Kr6@a# zm_A*FvdfKWmj&gsAg0|K%I*ZFJ®2-Ds;%-*{dpuU>v^DLBo-c0)(C|^V~)q7$@ z{aT1<0Hy{bN<#_Lm#HZG=P~UsLiy@7rUPy$2a=c$2B93xXF8OCa!B3vwV)jKXF9wU zz5g(KznM_BQqZ}<``gR@4u?0-WN-(%F9AX;RGaa9ga(p$@iBOaih3t7U8K5x( z!cJ~LIW>#vR6fe-K&I2xDBlrNlRvsQZG!Zs_nFSbV(6JFfF>(MH3zZYoCyKVmFUyr z4bWm#ih#tHNcL)R05n%X$XO4Rvr$av7NDFerWB1l#fLaIWt>s{7^F{x*Fn~56 z2yaUP&$bGt^X|C*e2VhQ!L5A}Q~MH>b_>(@D^V_JOc!!cE-L@xHk2RYm@d77a%lro zM+{2GM@&B|SeF&7%L>*{3f2_`>xzPPRl&NdVEwFMT~n~GS#W7*5I}bZEbB~TQ!#G>3#<@hBFz@ zM%>t20?@00cFW9kYcD~&Idml6XmW^`%Ri^t@ zD8IkS^uQbCftv9!8s(v#>5sK2k6vPWv<0=k*I`qik>BW_2Xp&XCjAQLV+HeZA^Qy^ zL(o7zrVY9Q^hLn@K~;vq0(@&o6}_Kf@lX!aP&LjSCde30VR{mP<|o+zV++AB63jGW zLK&%Kucw&+!>b_VX)%V5E(93JgQ!tr9Q_dHjClb}%IsOxnO}JO%^D zQz35L#>*$dzIW`GnjFD7QmDR{H8-t vrdKjO(@~zOJ)g&;Jm1DKe{F<0GX}&NKY$rerFbPXc+3#E&b*VWK6&oH7Gi0w literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/B5pc-V.bcmap b/public/static/web/cmaps/B5pc-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..73b99ff2fbca40e7ca5501f61e3f2f29c1fc1af6 GIT binary patch literal 144 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=44ustm~1;v(TI2l^-9&YkfwB h*M71;l(nECj@2Kr98sav2P-`~e{wDhU7p literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/CNS-EUC-H.bcmap b/public/static/web/cmaps/CNS-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..61d1d0cb001dd484630e52eb7e47eaabbdee62cd GIT binary patch literal 1780 zcmeIy+gDU&9LDkA-kV{N7%VIoIuhGKu~2XrO+`8pQjuoF2qrneFl_OF49p-n=(4rp z-2+WBSyWb*wJk$C%#4~H6s;_^QahLCDe_RpU(xgP!rQ!QtuDIxto6R@z54FG9(lO3 z)ZZEktY})^t`-&*IrCjkXOUXc=x@+ecPQAdtq!W?Ek1vs)gSP-YmEh|CC$z1)%QU) zpar!+2Vc51O)Z$dpuDtfp}UME(n(RGrfKT?Jl%&K*Oa8ISE@wWBNg?MT02tVv+_HS zPj`6q65WyCovl}Tx*ygZ^LwUBa!;r3%Pa+^P)YbG<|i>x5{)Dr6l*1sLt+_;5XII=qKm{NMXV<=Sutdab&!!vB3Cj} zBqL20Q)DAu5_uHsRE!ETsz^*zjA|13$wm#uQx(HY@w6mEqqt2mR#Lb+XpfpZOiOq% zg=;C?Ac+EN*hg`f9A2gLc2FWi?(ItI-H_5}p~M(UWGa25DKX9xNuga$)<`-DCq?XX zL{<97k|`G=D!S4IO9+lYu-d_s#&IKQ2G9BQSW&+^53h;da_#us134VMK{FDoRPGTCsFZY6z zw=(O&sT%O>9B_Ip(+BSGeC5?)Mk^<&5Nct^c?LZLa_74z$_-g%xPCUH1lfi~k>h>l%Q+0o(|0 ALjV8( literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/CNS-EUC-V.bcmap b/public/static/web/cmaps/CNS-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..1a393a51e079d1b5e7898423463fac5e87170da2 GIT binary patch literal 1920 zcmeIy`%_eP7{~GFoWo_^SS+j^bOnx!Vxi!&+J)#M5fy1jtYA?KEX#@)WZ7K=7a5uZ z-?Pvrt3_pHS%)&T%d&RQ=w_*1?0&x)S(fcz(dXG8`k9%gnSN;Inb*wu&hyjz%sk3W zeU-mE9NgTosYfjDp%s%u@69_ddT88nTiQ(_(^a+T4!l$f6$HPPXY%xE?V2SsgiR8_{TB+8Vr z0`s0Cd3<}w5;G1NG`*6>chK}IX*`_1*CX$%pyRD{GDqIOQ<@+;Fh`nn(kY8q!}d`_ z70%%nw{U58w_XM!bD3>mWDOX-2;7;;ptL($1@2nJ+yQpE!B_=|&1d?+?gp@DCAj-M z#t-hnzj2Q*1NY8hI>3F^;Qm6eS7KVg16P6vZA=(Ev;pk97(6_W34lk|f&C@m(Q}y1 z;IZq0u>?#gj0Ze^HFzSA*$EEZ3ZA?aOkTi*z`>irp%vgM3$qnGT?3w33Z6}8yqdi@ zUO9B4!5#0!_tcFbaUnRI!L)UUWP%#P@7xMc6WB24|Xx8 zY35Ho20e9rXrB%2sdE||WmzF8D zqL^bn7bOfE!Cp|rMG$>}M-|Zz=*<^{kS$U~2(ra_!hozx5jVl=kGhX&4r>6cYhaBq zY<5~<$ojc8p`_*^SH@F|d8s=ED-Ot&L#{$uDTQ36BV7PL#+>OAKp&*tJgq9L2LW4^ z)#{?PI-Z$}x*9atYlF-!*gM8D3CBi=Z+5`1VfbCfx0cv8z)m6C^}`=msN=MzqCYvL zV~{Eot%Ox7nIcj>#7YBk&nYp8bSH6NliVd9=)`IV@vu^|Ks@Rr*4l{2`y~-#ohH#U zO~jKz$r$mpi+EN;Y%s|X@%$w5!YxS8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=Ij@2sOyo)qo~91%8!qshLNF; gfw7T^iLsFlh`E564~T_;SPY1zfLN|EgW;7w0IZHEdH?_b literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/CNS2-H.bcmap b/public/static/web/cmaps/CNS2-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..c89b3527fe57ad3b32061f36b73c756ead3fb071 GIT binary patch literal 504 zcmW;IX)8ow0L5`6Ns=T<(sPF-F)m3)lCgy(%}A1wWv;C;ce;0)jHG-a`#Sc0-}im& z!>4eLH@_FB^Xebsx0I?buh!Gm?H1W4lbo3&%O+vAtL=)gdUdzbr;93QhpM?$twYNk~HkIwOJ&|HsTmI*hZ_tSQ;1)BX%%R z0wx6+0#nUkx&X|?6AzfJ2Xi@KKAJdzuLdlngT-*t36{#hvH`3FkruF82-XrvKUi-7 z8@XUJhPc31E!fTgI}xNC>{fui6tEvcTERgPI7}o1;HVKC=Yf-0qJh&oaApMOk)#(~ zRD#P?a1~10!F4gXNg{*bwh7$jgZnt*1`ihSD1)ac!hX-}_riXD_VcsfEBn2%-y8eA dv)>2%eX`#t`+c$BH~R(HFTj33=$HJP{s+tZ#wGv& literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/CNS2-V.bcmap b/public/static/web/cmaps/CNS2-V.bcmap new file mode 100644 index 0000000..7588cec --- /dev/null +++ b/public/static/web/cmaps/CNS2-V.bcmap @@ -0,0 +1,3 @@ +RCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSECNS2-H \ No newline at end of file diff --git a/public/static/web/cmaps/ETHK-B5-H.bcmap b/public/static/web/cmaps/ETHK-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..cb29415de4f5a669c1b47e34ab889b5fdee6e428 GIT binary patch literal 4426 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 VUn5lgC0;DLe}&hDRI?#j{~y^L&k+Cs literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/ETHK-B5-V.bcmap b/public/static/web/cmaps/ETHK-B5-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f09aec6318dbec88491e3e488526882eaa930f37 GIT binary patch literal 158 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^EnUt?Oi}>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q09TwZ8~^|S literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/ETen-B5-H.bcmap b/public/static/web/cmaps/ETen-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..c2d77462d298cdb261f5e2eed5218fcba35cbe4e GIT binary patch literal 1125 zcmW-g`&ZOe6vfY1bQH7_;w1qNhb4%_41%&6h$BY=Az6ZfV9H5>nS>Pr!NhA>tPy-< zY6h8_Y2qsc1xeEk6EqM_%``zCBG1qU{U5sZ!~SKjv(CMDfA*a=@?LCVQAKgyrd+Fj zvB?w~5*8Y2(zCfR+oDgcD6v{Lm*^77PG;L^Yiup&zI(^f#)x{RsX2feB@wQ1F5HlUhRlx;3d+lo-O8<}>zg0drtY3Cx8oq0^3uRz(Q zW7=g#`NE%Rw}!GihG~y4${u0b8-!!;IuV3&BA1;{#sk!+LGa17D5s_~ zoytZz?ZQJ6V>x;>xdSvAl?)Ku z6v}Q*R)EGb2t4bAayE?V++37%$xO{5=u=$@o;CA8Hx&-h;tIY~kxWzXqrC8BdQpmD zFPG*!Hs=G>SV7-h3N9_4=-m>mW<4OJB>|jU%9zeO;+pdb$}0t3t1naQ0+d!W(~rwh zE@(^_HlSQo{>3dQKSeQJnul^}Ez{))l*^wm{j7LiQ9Q3Gp1&xbZHi}`;(1l^ysCKq zs(4;gJg=E?QM*4tXBsSSPi9kx2GC^!hmI(e4poxtJ}B2SnQla)+)(BDEd!%FRTk~5 zz_(Ln-D$-cUEz??rQUec1?A>yrfwsy>n;H3)i~KTFsEPjr9TJX9#9{lmtp?E2Bv{3 zoHa<0HkiQl#0L|fWCD!1g3C|<(~t>esGQxNrUMMFfWW8u7&Pn((3b^a!^AlJG0Yrs z0~p%~E+Z_$7eu=kfZbUs SS}75n>;w+>cVXen+8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^B!nr|V>@>ygN@FqW~AiHWh1 w4T!mbm=B1BfLIKOrGQv2k!7Jb!z({NhS&Ox46h9v*%)5=Co&#;!uU=Q0BE@{TmS$7 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/ETenms-B5-H.bcmap b/public/static/web/cmaps/ETenms-B5-H.bcmap new file mode 100644 index 0000000..a7d69db --- /dev/null +++ b/public/static/web/cmaps/ETenms-B5-H.bcmap @@ -0,0 +1,3 @@ +RCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSE ETen-B5-H` ^ \ No newline at end of file diff --git a/public/static/web/cmaps/ETenms-B5-V.bcmap b/public/static/web/cmaps/ETenms-B5-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..adc5d618d6912cb3a67e4745b63764120f93d17f GIT binary patch literal 172 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?HZDrms_msWUA}o$hOe?l^;Xn zWoOQ25yqxk#>Oidj7*6<3u74@nV1+G*?^b}i1~n62#CdiSPF>cfS5@MD9-?tKV{GO GP7na4qA}0_ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/EUC-H.bcmap b/public/static/web/cmaps/EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..e92ea5b3b99b1f20d31c9760481de0472e72685b GIT binary patch literal 578 zcmW;HX-^Yj6b0a!LR#wJkfLdA#QItYF__k&#-$pgwHAR0XbY(^j9ToQiYX4xOdvHz z^BOzU4fhQfs9HsF!Cm{wpW;vPT)#Xy_vC!JuD|J|F9gk~~n5M;9B5#aw zmMK{_pRicpnUjV&X_z^i=c6kU#UlH^x0uN-Zcb5|;haS`AM8t}1~Vy1mV_j`W*7F< z5~8j%Sz0d&CuDX^6mmYamwIXm{c=f!SC+Gir_7t&NfCV zHDQ96hrp{Ss5KL(!Rub|rV}hS5@X=)UhpnNoCixs!TTNHgP*X$$29n)fn}8_g3tZn n%SQ0kP2|D1ec(GIE`T4S;O9>8YYj04eh-UqLp>(Re@6cS^@+ph literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/EUC-V.bcmap b/public/static/web/cmaps/EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7a7c183228dfdc5c236b7914ca68298520ac60a1 GIT binary patch literal 170 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>Kf{->ygO1a1rBPe_qDDft*Zx sgPB`_!~OsLz3v`wueYcFuf=+=*PWVn zy}YQTs=kB}N|oa#DU8z6zYh`Dt1F6VfA!-q5nkI&;jcpi!e4uo({-;al$3^_qm|^) zpL@-rqgJKNJsRh9j~0)l6(|pYkpM&wCn{pWa4BL&Oo~`DavB&;fOTYGM8>P9z^ftP zH8J5eBol4NarS)Pwc{KmJzCY15S0o}^}IenEh9v&mPkqq{?N;I55=e#YOQnhK90nI z(Ltzn>0^LeuOB-H^@eHeJk$mJP$LCDb2vV~tQ7$=Ge8-qeq^LcNtR z#tYpJ9(Tyr3>q*_p*G>D9BOms_!+1zVdE0iRx); zF*d@N2=$J^R}A%TfUg3om-yzjubVmrb%0DIK^-(q zoyB*%X(|Kikaa2_>eGNJUi6uMss`$F$#|XyPc?8Ze}i?Zo#P8!nCh3Exm1|uZGLH) zE&zitT>(bIrW>%+0j=dz?8@|tBm^BdQjGeX0 z!bK{~o&gIIX0yS9GiM74JE5N)Bz^W1%~=#)7bEXMfO4Hj#9n*io^z4ge}%M@=*z-Y|dQZP|`%eTe} z^H##*jq{;|oz~CC%8o*6oR0%b#6g#Hp3_PSn!f;+Oy;Y>&N$}lz|NZI+rUy>^BuDD z3XNPKV5yFU7_c<^LMoWYxNs3H-Lg;&mSI?^A?%!S;YYA6EHul`B5GV{0n5h1J;HLx zLOWr(_JvNc{PczAU>Ed@XgTE|&Hff_)#&~0*v{7byTGc9{$4rgDvk1UORIHDput@(BBZEL{d`v@8|ju+y|uE!#_}X^D%z=~!w7`zdPaG1x7~GI#Jc_PLu)x@B%o zbKr8kY%im_WnQVpyqpWxie*ku5|_DAZMNlhuscD^17LT}D;7DhoMPn!VP4Bh2-tmW zW*IJ&OSD* zR><~i6sz1?*|=H@*5h7n1nZ4neTw6AhP808KGRw(-lZAV5@qLgdS)#J?1^QKThVV= zy9YKv);hojPp)-ik82phx(Vzl*15!IvbB;1u3N#LN3C;1{-#^c2YX>yzl7sV`#RV6 z(zSj=vQ*Ke^>&i7;nL|gij_FWMj6p>G!nAWM8Y>(mCDQw{+(S*K*BqZM5?o~J0KaW zu0ca8(TH*in%)V`V1j0pg<2Ze@_&X0vS;L$g~q>!3M;H(Mlfa}d4+$#sK@n>{4veF(5PfbjR(iWvF6 zhQz<`BoV)!P(=KiN~(VK5bFmhV$%nkBI-UoBsV{F@!!Tj%82EonGY8+esn8h=*QC} z_~Rww`B*PmZt(k@${@5rE+I%MfEHX0?ZikrG}mxGw3Ak7AjJb$Y*oYmz_?WlElSvGlyuFx@OS3J_fm4+rcGOIoY+4v^Xs=` z$jR*-61QDN%-g++SiAk4SbnQkM8j`Ck(}RJ$;nUQ#PrFdh{C7yME|Kscl}ejWNNN~ z7CkINi%~M5#h!=e4#9Djk_n9(h$hNH8x?j!pvC9!P)v7Wry2fQ{Z1>iQ;r?4WV%BW zclrSBG|am(91}Pu0=^rF-OZ4NyEJr{w>{Ci`v@Diqjq^ulFXlZy=3QSw-n~3p`Shc z)EVG&ImfdQK40UQf}GDkC}RBY4n9dm&hMFuc;)vFK1qZA%U>rvFn!75m=5cg0!0k| zQo$z~Fn(#~cn&#Vyc{zj?8V4JJH=ii-aN7FC1c%a+slTQ6}49kpF3`^O%@(f-F^U; zW5~V*TDEK74lT#C9|!HcW4}Qb9?`)4yU=oz_WLp6Fda~6d5(i*X!)jtJc)EvVm?`N zbkH*gS4hM`HxUl4e1s_C*+VypI;>$oV9vai(3ljX*M8dvClG9(a6tU>*Z4&m4 zNko6%BJ*#j@=&4f@8HO9H=DLc41D)&i~6 z@a++_vdC{Trg*~2&EK68k!jQSFxk>Wt>62hRoIXCi*n6*6pYaUXxHP9;xV2i992l< z`7^xgmdMj=OqWZxUYd4vgLkeH$;U>HRlsq&Pi*=lK@nYl8cFG&5j=5!^4L}W=dw=t KcNEe6tK@(8IPMSt literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Ext-RKSJ-H.bcmap b/public/static/web/cmaps/Ext-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..ea4d2d97b8bc1df2abebce0d4f8c58789f723eb1 GIT binary patch literal 2542 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 n1WGc8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>RM5v>ygN#sKmI}pMl|k4-f~j zG8_m1(*FERdxM!+_J#r3kw6>*#Nj|3#vr&i+EGF=`+zS48-q}zgLHFIt0N-=1WGc< ggIR10jYd!*Mh1jnBC~2K<36T-PyT%@0*w1a03e<=y#N3J literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GB-EUC-H.bcmap b/public/static/web/cmaps/GB-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..e39908b9844939a3c6d6baccced5771b8c1b1b2d GIT binary patch literal 549 zcmW;HX-^Yj6b0bvh=x@^fcgdPo2C^bbR!B*V$ecRss^bX`N|ESR}dF ziYT(U;(|CJ$SNud2>cj-3g`OeNzTp5Nv`@Y)R0Q|8Qq;-8R6G7pS#-U(?lSVit8fW zXJ+&VrU>?Qq>OaRh-LJIr!bIAivN967`mw&y?hMoy6|{!1{)fi!;OkfA;o61EZUXA zrr7tLQB^4WPDMWP#3Gg@qg3suI<?M`$=f?v}^3bnaxfB>#NYMU^7k zeoSNs$ZOA)=ecs1NV}1XlOHqWu#XgvM&(EqIpotqrVET-1<#z|xynSrSRHs#&h&%v z2$-k=lVywnrf!3m7?rPznS0=M6L@n5yv<|c;N2B4eVQ2r@7uwLi{Rr4CIdc&z>E)k zKFTD)>~-+vEU@sWv=U&h9?T1JMCOO6LVj&UT(|%hOPPn@+byu<2FpcEH(0p_R$XB2 z5EBFIm%;Z_%mCPE13zlP&*O{KFoB0odEc2XC8swyI@Z{ E08&E2d;kCd literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GB-EUC-V.bcmap b/public/static/web/cmaps/GB-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..d5be5446aa40898742183202ce0624b8acee5234 GIT binary patch literal 179 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;qIjC8tSa;ktnio5kreT14D}) z8$(MN1LGbEAUm9ex5dqlVUJX^5<`m<8)J(L6GMwFBf}nPZpIb|AT7hl(Bdr3utyfi TmIJaQq#0U5fOIGW!yb76lc_S5 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GB-H.bcmap b/public/static/web/cmaps/GB-H.bcmap new file mode 100644 index 0000000..39189c5 --- /dev/null +++ b/public/static/web/cmaps/GB-H.bcmap @@ -0,0 +1,4 @@ +RCopyright 1990-2009 Adobe Systems Incorporated. +All rights reserved. +See ./LICENSE!!]aX!!]`21> p z$]"Rd-U7* 4%+ Z {/%<9Kb1]." `],"] +"]h"]F"]$"]"]`"]>"]"]z"]X"]6"]"]r"]P"]."] "]j"]H"]&"]"]b"]@"]"]|"]Z"]8"]"]t"]R"]0"]"]l"]J"]("]"]d"]B"] "X~']W"]5"]"]q"]O"]-"] "]i"]G"]%"]"]a"]?"]"]{"]Y"]7"]"]s"]Q"]/"] "]k"]I"]'"]"]c"]A"]"]}"]["]9 \ No newline at end of file diff --git a/public/static/web/cmaps/GB-V.bcmap b/public/static/web/cmaps/GB-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..310834512ffe49cbb7ca903abc2dc1aaa934e6f4 GIT binary patch literal 175 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T;_jsDktm|5#L!~Tz|dmH#?TVR zz_>>O$PQ=WZE>?>*dx^plyqWaY;j>?Xt8Bv*dxu&*x~@BWf&P+oTVA|$O74NKz4*Q OLrVyd4rO52BM$&=>M(}@ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBK-EUC-H.bcmap b/public/static/web/cmaps/GBK-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..05fff7e8254c995031783fb3b4892d58a6b176ac GIT binary patch literal 14692 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 U$d&`LBcvHxLV$EA1H&G90L*YQ;Q#;t literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBK2K-H.bcmap b/public/static/web/cmaps/GBK2K-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..46f6ba5967cdfb381f001eb1193f17b43d943962 GIT binary patch literal 19662 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 BHq8J4 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBKp-EUC-H.bcmap b/public/static/web/cmaps/GBKp-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..5cb0af687ee20a10ecc367892ae49d7b1e74acd1 GIT binary patch literal 14686 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBKp-EUC-V.bcmap b/public/static/web/cmaps/GBKp-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..bca93b8efbb18a13e15025ad41d23db8267d2577 GIT binary patch literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|Tof+Gg1Hm literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBT-EUC-H.bcmap b/public/static/web/cmaps/GBT-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..4b4e2d32294538b5093ed3870bb9de37abf21599 GIT binary patch literal 7290 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBT-EUC-V.bcmap b/public/static/web/cmaps/GBT-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..38f706699f395dcdad5c6ad93d1a9b6fe9f66c78 GIT binary patch literal 180 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>FyMw>l*5;>yaq3a1ld`Jp)6F z9UDVS7z5)T2_QS1g}24cj$w~fvl2s#6B}cT3ll?&EhEDoX>P_A2OurO$k5^}&9Fxn U$d&`LBcvHxLV$EA1H&G90MDZ`>Hq)$ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBT-H.bcmap b/public/static/web/cmaps/GBT-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..8437ac33771536813228e3f9c1cb6c35af3acc72 GIT binary patch literal 7269 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 WM;6GI1F|Ee8CpVsbSMME9(e#*4Ku$0 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/GBpc-EUC-H.bcmap b/public/static/web/cmaps/GBpc-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..c9edf67cf6d640607080ad2775c14760df77dd96 GIT binary patch literal 557 zcmW;JSx*yT6b9g#5sk8Wp~4N)&xVRox)HTbV$ezus|KWvvDSQMS~>x=+B(ya0BUlu z6%kOt4Hc2GF1UglxbS2ABPP6unKL6=RYgKy|sm^&HD=; z+9wK$t)ehQepj)s%u_r}`l(`yg7UVH+^&(zQA3V2kz3v=XL`Ztad5W*jA@Jk##_Kd z9Ww~-#lii9U~)TSfvGcK8b{@WO6C%Hcmh1y4IY;=1Zf!{oti z6ubz4xoRc@UY-Q=dw_$U(n*6?$3RJtJ6^g;jq>$5#5V`P+ilD>@U9aqc)|M$rVo5* z2OmA)(*`C9J|6*Jb}~a?@jO@xfv-Cl8+_{m-~Hf66>}N8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|To({Gim?; literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/H.bcmap b/public/static/web/cmaps/H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7b24ea4629d0d4cc9f0cd5852edde324156ef0b1 GIT binary patch literal 553 zcmW;HTTc^F6a`>fNJ|+U1WZdKHfIVU1k*BRx(Q8g4%)hO%E=p&pZ zbEd^7Ox8PjMK`8&BW>|axS~6oW&igkGq}l(87h;Uvv6yFZ!CT`8Fx4oMHIF4enru4 z=0tE`J|(&Hyxf(akmS7OcH5<8CAK8mJa(nqZ+l&STNO*h{HDE1f!7`2 zO)W7E7S4gi5O^yQV7GO1K*p$4;PUEKTm>RjJOVd4}m{N!QVP! Q2JBoE!O~)+#IZZH2g5hHiU0rr literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKdla-B5-H.bcmap b/public/static/web/cmaps/HKdla-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7d30c0500520d563d0e5891c8f4781c61ddcca5e GIT binary patch literal 2654 zcmW-fc~p~E8piLJgoLoDV1iVG#EWdQB!Dska^Z@KEGiKJt6VieWR+b7OJVMpTBmj!JFV@ww9{?uR9m&JOC9YvJu_$KuQ_Vzd^3MM|2*fO=e_Uydjxkk zm-X}x_qVsU4JvaA3e;J-YIT7UxAZjWl(oYHgStHf%8Kshp8npRe(j*HB|8Flbt(V< zen8o;8_@Od`=42>(l)3 z5_3C7W8#28sxAh9N4WMd$)m11OH42hj!JPI28xLDHX45P6A}5PLQrD$ZsAaCQO6I=ddkoZXMn>rz{cbfRZ!j3W zu@jQ>ynlWKk~fPmdh0nz-r9=M+xd{Zy%(c*cv$c9u-@fi{ho()froX0hxHy0>pdRU zA9z^r^RV7;fy+Kf0^rgXkn_PNTyT*A;Bo;FUMzy-BHw@y6CnAp5u=X^A^C`J#vdDC z@g;uI4>p3um-s_o8iZk&^FYJpLX57&LUKie(Nz`PcC{OTs|;X1uE6NyDo8$w!03}U zNdA6O5 z0B)Cq)E~NF`W+bn-)ceb9faYXJ|MX(2jKoL5PO%u&s{Z6y*CGdAA5lOUOrrMuNoBH z>%q(KX8`GaEhP6laq^E9ApXZ*IRAkZfP39w-GcZ1 z*f5LIpX{hHKy!>);gx&0*sJYz)=EPI+r=(0R|)l5F2!`8f6%JZ59>$tNqY5!E~K=V zTNiLc`YkgW!xod`NL;gnjCYK`5N+346rMbn+FWm6XX(^4292RReV((`ImqQXdXJC!_bHv5U)?UWD{U!X6n!SL9x#vjlBPtFQT9el&rG6k#4*p2 zVM%hYG&OLW9L%vcu6bNb7avMKw0NTN)YxRx^79mE#^|#4E2O?df~~r zN72z%SG_l%O*s***ZJU~hG4y=V6w<5*5p4e{YT;HQ7>~yHd$itVWUh5&NyeUUgcjg zHDYY!P_WhC@4@audUp~1d7ro0v_>$!VWqRup*^ zG@Ihd^E7$(dgswfeU?6DwPBq(r-$EW#d>|WVUMBLH*9DQ=F*rwmMp76AmBzPvbd-{ z`UrM~p(|U+_DhVN?C5m+jKa9nsh~~nM}8Y+vHUq*G^_qfnlDpw%s&fU+I_IhwQob9(!YiX*+$GL+{kvchE<} z^e2(Xw3o|tByvl+PEE9o$X%aUSIvD*hb200lQ$u^I7Yvj*DvsL4eUVM?hyZ#(=BF%-SwbR>N z&sWihQu=VtVs{Pwr<{I1472&JDDSx02)CG12S|>J&OGMUP#zv#oHbA4y zGWT3_lx-`u4pUoGg+)V)G$p^3{yIv_sW>Xes3s zwsnSZw^U`GPd}`nA4dhof&%eiyF|0&m(Z^(U;j;DwQFggC@3`47%D;?LXj}sD4(ti zcNRKxWYQ>SyyJzCa;`Aet#zgz9t}6{rI#i2vO?llg%s9G57Rn6dPL&Nx9<#=imudM z=}HXZU?xq@4;0PRICnY~GtxkuE8VWU6LUuv0Pg(B4VEzHMpni?XO1z5^;Kp?5W}fz z{VJQ(u}0#kHH?}wgXMvgnRNSzYt_tfFe(@w7}BK8mOh<7UKvcDIY4EBy)$d5dc4Y~ zz92oNpc!euF>KQJvkPfwgd|KF>rA(&POqm~(*?A~FB1yG4pyG2^=~b6L?3R`GP7;W zlTM9%wu5q`u2ycqlQ)&=UrSdy)2<4y3Y-a(rH1YXM|+ge*&EKL$7^J>p(~rOFP~CR zCHb=1N`I@T(Ssv=g{EQ?@)i5CeTlZ!_8no|3O@Qx=3l!t>u2Alzg?jZo08a;+tQ7T z&ZV7>v}M}Xu;GqP&TdO8C-a2~d`(=Dc`2JD@GgoJc%#Bu#H!fkbd2trO7{*er=qDG zuOQ!B;;uI?vTkIX&3(pjM!LhBo?^ QxJF!^-VRzcnd;s4Uw8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lc?)ts_T)+v(TI2l^-9& lYkfwB*M71;l(nECj@2Kr98sav2P-`~ljyD=Pp1 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKdlb-B5-H.bcmap b/public/static/web/cmaps/HKdlb-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..d829a231015161e107123e211d4a78110daab6bf GIT binary patch literal 2414 zcmW;KX;hO}8VB$j_OQsJG{|PSK#(=aRsp%;$|5LKBC^T_S%M&IO_arj-Z$Gz_5=fj z1VX@Cs}=3EQ`_lc+tJ!qJ5D>*+SPSz$IhI7m~(pO%=EPL&V2ZPdCq(8z3=n;d)?bp zHZnSKsQ*BpLb#={Fgr6RJG)Sbdq%os!ukohLN+89Ru6ZN92y-t)Txm5WCh~ELE-B;W z>=~{S^;T8=(q_#RJ5FO4i>c5VZ75m`ou9Nf8*`oVGS$>tnzf9nTkfR7MP!W81!^;V zwykXOG^!MuZoU8P5p}fETA5h1wR5Hhvv7sxWE7|U9cf4}_ ze82Ocr+9vyre9N~sWy9gv+J$tb5(N_svvFbeELE5|e?s^WIqqRpM|qx_izCj;nF%}(a1GS}GZNHzEwqh1&}Ri!&HKhz|Z zSW2ntIPEd7cLmYNA-B*NV3L@MPPUkeXu4bCiB^?qTB~$2O@K_U${6xr95Dx2kGzzx z&oLd-$5U7OjoRs~)mD0`w|~v|VxCoQNpg1wdB%Oc)&4F?uvugq-leYhSMR4EAEnp* zV$=<)M!IQfi?rS1`DId7YR)Iz@*=7gD^ur4noDzY5u5$HD)gD)`w`{X+w}(%ssS~B~R?k00w8Sw; zu|1#ONT5IXFnu}+D`Gc=vwK{Tt|CN`JYGcT%;$g0I zv-OML1bO-_y^KD`|Ftpp1dHwMrbs$z$TLU+)M8r%*XS~OJ%N7Ita*02nF(hHmqD&v z77sF_W1e)nV=>2_NuxEPj8_ZOd#;fQI!`P$OZ(Zw?%LIW9-6D#peJ;YKAz~La!+Yg zH}L*Z3=$}Sdnp8fj&m6UeslsO20+3{FjB_BXk{DEOF2dXQq@DEj=)Gg3W-LHkv0Sp zZ4E|j8YFB#M$w!d{h>?K@iJ=rDV>~2Af|02hwwWdYuuWlPZi2+}6h;;W zB-UJvY~e7=RtK_X07f%nNM?pHI#~mWJqROvKP0o8F`Dy(WUd0E`9w(OyD)N;LgL`g zS|E@(V=;10LgFgKXi)&kVk1UNd5|p0F>*^GSq{T!c^Ha3nV`VafYC}YBrCfxT1|yy zwGW4%sszBZ7o?wRhU9r4jGpg;7u!0bz6|7V^*R1NCQmF?z8GroK1*>Na1_Y?r<#9XpK*|}^Sc}@Yq*)fpvQXnKR(Qe2tekADiD5Q45N#D*l@9mn;ijuFUMo_axx?@_h9t9?U1~} z!|0U`NM7aUuO5Ts_r(~!wh@xonlZXm0Li7p7`@J6y}@CQVMkyjMZ_i8R^x>|(M2N95bAjRmK7`9#;2H+YG@II`@=)+x*d=!Y$ zM}3fdoPyDHUr4T(V{`*Ta-$QYPb83hass12wLx+-2BVu3ko8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<>8%@lceips_T)+v(TI2l^-9& lYkfwB*M71;l(nECj@2Kr98sav2P-`~lkWD=Yv2 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKgccs-B5-H.bcmap b/public/static/web/cmaps/HKgccs-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..971a4f23f791f75d4e604ad717735ee55529eda5 GIT binary patch literal 2292 zcmW+&3s{t87Cz_yhk+4LK)HmV!xluLDa-%_0}!{Q89xgv!bn_%)-tr4wyp+MR&IvNCGYw6h3((wIh9R8} zvURRQ=(1v9R}@;ik`TL!a#Z(9^u8U0 zgKvl1;C2j_+>Vvvj+y-LWSA!0DMa5MFGiq@?uo?Uo(%HoDZ!AQN{s4x5>0m_G3YKy zue*=n#Jf{S-L02?_X^PWUK!f%t)Nl&2jj&1NmAUeqQqZfG3FN~#joC^e$AB0y`wbf zUBFm47J5s3p|{iwy^8fR9ec}l=(QvCRv`8+w)<{L6UHVVnrUpxDnX;oPXnWEFqgA! z$iNXWa0H@mv<2xbg$x{_1GX?3wc}c^LkBO=xcU~zd~k+?4raE*fG>En91Vd`%pO11 z%rJ;wNnm0f+3&-r9e1A7TxRLNv)yGuPOvacFpE!oaKS*R9d})V4~E(C#VWYD!k)gX z3|%1sx+_f6ToD?&Mk2VP2wa5dvT3?&H0v=MxMDSL*EkcnlF;l**1IQ*?08$Od;h=gnkWrnKzNb7v2f4%>%n?LppLuwh(6yYa-H zw6MjdCb0mc~m!j6(Xn<%bB-I)uMQbgoP4QB+`IBnP zm11)&sm;r!_)Qk6EoLdURFe9wO^TtEwE){TNb$RQq@E3t z;@JjLzvn647D#d1@*!?JNU=Sh)b>?U{2`arbG}kMx17`;$4c?Mnbh+cQtYsi+EF3J z3u&ZY;JbDzQoACg*tM3_i>XrV4kfjFt`sjNlX|IMia!;QdO1Lfmsio4J>wx|Pq7qx z{YdSdEyXJ_q+VGj17FPq*i!`KUY$>BpGk^+6{KE^lH#=ur2Z_V*dIZb{UuPie~A>Y zPo|jHn*jDZAn|}rS`W;H$OCIA^k4|U!FWa-q#sO>!3P@v4m3ja8-qx_ktoHR0i@o{ zlj6|$R%tm@4baj6)qz}&iWKiXMC!fyQoNr+>is9A_<)=BAvfzoZq{G9Ss!t; zKH_G5%+30koAozt)+gMoPbw+)s14vm5llFmCsU6hz{yn5kMT-5#uM;qB&knJr8qvB z)N!7Szt5v-C-{RNodY9Ia3N1Lkk`p1n0Ior6rTl=`m8{TQ}ML$)GB~e{N?;SM~cs9 zllo$i6kjYO^^a&NzVssXbp8A{+& zDOYP`a{D;2wA)FwSIN=WavWXjJA!TVMa(XDWRTY-#ej2swrOMrfBR!b8ck6#XZ%bRP# zX|>~?1^R#E?G?NC>F#`99!0z$ikav0LRrAPkWpencPTH3GF}vm7!_=*)J$#%$F49% zxmO~3hDh=RGAC=`NkQ;TG=panbE=M>$;?w3yevI}&@&x1kJQk^OUIMRayIA8W;vJr zb6Cz}Uq0tOhPtPS?ekgZ_u(mJR$8d1oO2r4zm|EO)I1wd@6!!r16b%Gfwd3d0ynk%qAp{S2oUCK%2jX)&DX{IlkK6wz=N;1I)E zhyjLkG5Q$J1`0KtPqCvp7)Kk;p=dFhr*TMgmh>^2=V7wZyomCRmSFTXT9(L%jTZh7 eV6=`zFQYYve2mt3Of*_2X?{j)l{Um^UGsmAm(QgD literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKgccs-B5-V.bcmap b/public/static/web/cmaps/HKgccs-B5-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..d353ca256b54236a4acefafdbc08e5b719892014 GIT binary patch literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctrCoLsEyWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxZLvn!hb literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKm314-B5-H.bcmap b/public/static/web/cmaps/HKm314-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..576dc01112bd7f28c30804661f546ece203c53d8 GIT binary patch literal 1772 zcmW-hX;9Q>62|+_CEy8y9C8dzGJu2|ML=I^i69Frj-ce=RRZ<=ems{ZVz@n00OLs6mXL4yS)n(eWt+g{b8nYHPhBhV` zV~s&}MupK|AES5C?@aXe(gzPD%ZWYP%&}bo&G9<5Xj3W82dfrZw7-Togc}@{-JWu7 zce0!suUp)3Nabr8nU|gmbTq$cUTuyws~vn)ihy3niMSzcSCUz+KiC@68g0lk?AJ@h za;+}3ccrOb^gJ)gEm0~D%SBnvXkD!LvKuThq?$G~d6{cYDP`!Y8Qgg?O0Q~MI<&j3 zWZ6MN93R;%yHT`+! zWVu+bG87HI+*#~p^c3-5M0_JTTK@HOFq|re2r#5W94vrsV60Xttx3ODFEG|GHYRLK z8~pu{o1L9&S9w=`cTV>qTbt(U>S6aTKe?bMZ#c+M))Cgfsx`&FHMJ?dBl3j%2}P4% zr&^b;wzU?B8R-DeqQORPa#k(3mi)5ojjf$==A_QUo%OwmW#+BA!tui4Ej_lKFP~k~ zRoD%SCOlL=){%dvtdP^Y)-F62+*3ECv3=oahH-Vr^2y-Iph>0Kf3S3{cywQTWLv1N zPPuMi?Lg|lMzxLgQ|a+akRJP~oUE7TqZ-RPv>iFkRA1A!-B6--uzn%7DFk@DQ@mx% zUVwiyfO&fn*rRf@UVBo~Q{(2`AK4$&?%YB04u4aHIc`FERBhyqPL0YVTlzAMp8MUc zkEGvRM7|t;wud#O@0??=h#hC-(I^l^v6QKYT9uPLM8C)i6h@Ex9?PoU&?*KSV`VpIa z9{FTGv3EBje@`Oz-Y(?t3;+E?$UjIV_MsQ@4__ko(Hi6*RTKMzpv%XCE*}fJ{87;5 zoS@4&L6=ViT|N30u;xjL70l&-Q^Dk@B{z?qwTuC7IxhwL|Rm3b2_==?rz#@TUO(SMa zM}F0r*wrHBUjz~R(jNJjFB1C-k$KhBe@rJm`4MCrqf<8Bk$op0b1m4QS%-aqC z*TZ4aZ9%WwdvM(yf#n+n{&#i}yK@*F?=r}~yP4SczL@rXF2IxyiI-h}Qi56<9Fqia6^HFzX_;UMLNmXBpVe{_ekxKy8fx literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKm314-B5-V.bcmap b/public/static/web/cmaps/HKm314-B5-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..0e96d0e228e0608f77f035655140c6a235d4ea56 GIT binary patch literal 149 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?ctqkY-pnEWUA|t$g|L!;gugB m!)tv;hS!D+jEzi8jE!tS%mu`JKr95rVn8ef#Bv!7ulxb;p(_9Y literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/HKm471-B5-H.bcmap b/public/static/web/cmaps/HKm471-B5-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..11d170c75ed8696f0705f9fb9f5afcf3b0aff4c9 GIT binary patch literal 2171 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 W3S-b|;bUNIW?^7zv1XQNu>%0E(j#{O literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSC-EUC-H.bcmap b/public/static/web/cmaps/KSC-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..a45c65f008e7d6ff34edaf53af15ea471d4f6d90 GIT binary patch literal 1848 zcmW-i`CC-i8OOixy)y#?3=?IQ2uv?U1Z7bx1Vjvs#IU1aP?TlFfka8h8Nemd^tlqE zY0{)i(l!C)+;eVZ(YZ5oO(85Me?Xr;PnRG1OMmDOZIdqcZ|Ir+a6jjH&vMW5e&6?1 z{(8DH>z9aSZHI+weYU+K>S3_5VzP>wC)4?~Vd~I)yg(5dXk-&8DYE@eE zYf=pZr-eS649DE_8slzhYA6a`Kh#!yh# zPV0XC#L&G|T|0VjoXY3+>6&}a?{v>~rR2>Gq~^_q^n?C)Q}o8}cRTbW>U;rVzKBxh zi>YhAOxK3yXLRk{dwqK4`TGa-3g7)%ukS(O{pz6yO>*%4{Yktn@#6~;AJj^Gn4LsK z;wQZlA5}?woRP#eiJ!hI@v{RGKX)W?MdBAPOMFt4#H_@pgA%`dN#a+zNlZ)p`kcgP zH4>j^&Phz_TGc{3z_Q_3xC1N>!@KYf~RQ{cH^jl>Rs=Mg*TK?ST%UH z!j6I;13ON<7Q8-O_D2J(mUx50>Qvqc?gwiCKdrJ8;IF2!QxL@pYbWtNh*GdFhd2On z7_6H_rBl=>q7JNw#7Twql4u6&gYZMh^Y%mZtKu~hmmo$}c3u^;WD?j#GF2xV3^e`8 z7-FMRAVw2l3?rM%7h?xOJYUyTUI2L^IOL7wePm~eY)8?<<=f`+8EKqBmdKE8Cu)RG z*UH6N;BgJ|#9i8FW=S`gl@ed1C-H`^l{`8FtQMp2(RJWa1NN=BaP^Y>Z7;A^E5BR1wr8!54zIOIBLe5zOHI(c4R(IO z`Ij%SJ$$blJ9TqS*gW*085;rp5VqRGd4D%DqE`@&P&7om%^3}YcOZI;c$X`B8@wkq z`Xlf@SgGLsu-xG16)O#VK(jo=2O<4v)qr0P*Z#u*A0g`qcz~>9;8z^haqu9l28B<+ zl3u^2SdGN5E7mFSkjrWTdl^<6@i1BKV9hS86MR~+`oL$%dJX(0Sr@=s$QlH{1?w{S zZL)^I-v++}eizmV_$;hZ;_tw&CMy6zu*M)1`9x%0g;2qy>|TL24&iiI6XB9?4Tu!g znuJIt>js1yA{|yF>2~2EYYHOMW6eN#5mT`{p~f5#dmyruSSmygV(AdMh-Hw-qnHPx zAT8#F*ssP4APNyHf++IFiV-b!#j3-e?~K-1Er~O(*epbwl&&MLLUbUWn$%!i?%hf8 zG>ERS`=5q0o&nLT#`i*;EsEzt^p(etKC9i|IrD%mfu$sus0J}tXF3de-=fli` zT>vx3VZTUbzGC}eN^?KiCB!bf?NXRUF6kZ9M|LetjqI0TexK|HGD|&nBbjBe+hJCy zc1OVd+)&KQ4?SQb@3p|F)BP~=yf7-#U`)?|%^l||SZ2R6r$vNa)7#a4(iw_W7k&Y_C! yV!7M4%-TEI$l7s`XGdn5p&eNauv8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=^gB>>l*5;>yaq1a1rCa3Py%~ zRSXOV8JL*%RRh^|EZqC*bs6?^H=8o-=V4>q&&$NHpP!LozW_JuenDx5{o+8j1Q1I~ IGw+uI04wP+sQ>@~ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSC-H.bcmap b/public/static/web/cmaps/KSC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..b9b22b67879d4043c75b617a24f96b0bd47cf4ca GIT binary patch literal 1831 zcmW-i`Cn648pfaZ-Xstpq{U(4L1XORb!_ZPeu>guX1 zE>>69d7H-P?uESmXY&i8*?Diaa zWmRWeOKZ2kmB{DQ4+Ft#K3^cDYuEJ_{Yv0Ps;*spF+pX^r*zG^++uewccpli2U0!D zbNbnqZ&UP!?r%Hv3+hTfVWp5#R*I-=rBv4fD~r0;_nlv_xb^akUhaLls3t;!n0D?n(UlGl{m8S0;@K7)-O=bdYi7Lua5xhgXmqK*0npY8-Ul1P&RUd)G>*DSCG2yLGDwfC~usdX^b~YGn^!oyAR0?FX5!f6?HkU8P&VqQJuBkj9@IxPdH@A=^$=3$Lz~iJQRNYIwwRI%Q-@Hy9NX|4vWhfvy$5xdCh!q2SFl z@TMN8ww!XCtzx>pC1s{=1K1is<+e?>izwK>M9%G-x;D6dSN^sa*r}1<6J0y8Q%mP} z+N2SIedjT-JByqhshghNlYkjU#;(*<`tF<@=||)4b2+mWAHA)Y=Xl$pYyNj-l=|-1 zda)zw0Nz!iKPsI+Fb*p(Xdf!U;qZ%Y9Mvv2V*lK$ChP_Eb2w-ZdqTd9=siRu6rCg9 zW{-x!I}m+Byvq@N3f_|%{RZ3*GZnlarW5>@Vy1x)Xr_z!AfzA7YVe_O&4dqpgv<-z zK{79a-?N#Q!9y_X6+Q`5dVNYU8;DOU<~8s+huIAF8O%1~VKUpnnjB^)_<~~k!57K= z68tflx51jp90Y#?a|rw?nE~*xz@LFXhdBbi1ap-5*RZO{3_=jhF$hII5t-u^5^UTs$e|mZF+75UFH7f^b5l!;B=|E?i{JLu9(lMF=-yDvl@Bm<{3tM3xdu zg~&lH9U>R83=$rSxghe>Vs41jYAhe30I@=dLU*hP(Go|jD(t%NYmL>AxZ#K`L9|Kf z+Ttoi2jZzo4aVi(ofJ=l=n6X@`0Vivh+Z{*65?iIJQu=W7Qc*Ne&vXdgfpgmMezy5 zrnQ6vBIrt#felci7Gg|I)Io%hxC${5&YSiriAIR~lxTvOLPCbj4A||=#B~x6k&r?3 zNJ+>D3Pa2*i2)J|YGM%L2_=RV@l@*EmKcS2UXlofOJ;mFD;Fg_ux zo{SQg)j&omtacdXs?`y6&iWLi;zt+Q$al@ytkqkv>2YJTJPn%*E8SR~Xu(>;ax>N^ zgSOd+*qQvk8}G&%5KaGK5nH3d(%DbitR8Z|m(`%|eHma4Lwi3aL*yq%65|s8Y1Xxm z_q=pvuYuIPr@H3eTcXZ=naS<@cjStGwC>B4`qOE+f0juh@bhI^C=Rj+2NS^l7*Y-< zWvV!sqs&7GIS+HF{IE#wb||y=~ivf-csQK7Np5q&`=XgZdQa)Uz L{tvCv`X&E=BnB!` literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSC-Johab-H.bcmap b/public/static/web/cmaps/KSC-Johab-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..2531ffcf41acc01338f781c845c7f50f62fcc84a GIT binary patch literal 16791 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSC-Johab-V.bcmap b/public/static/web/cmaps/KSC-Johab-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..367ceb226ab1e33624b30512716a3b65feb5a100 GIT binary patch literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l_>y@98n565GC~(t=abE=^ z!@ep8hJy@DO#7;V>^c_ief7Ew`?(uU8TRwAG4AJOV%X2m$gp34n{~gSG{b&zAX@^6 KC3TtiO923;%QA`p literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSC-V.bcmap b/public/static/web/cmaps/KSC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..6ae2f0b6b7238adc67bd9231668d9853ea3c8e1e GIT binary patch literal 160 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>K*K?>yap+sKmIhf{|fg6$8UT z1}3I`)j)O~3-`WyU55SK&87_ddDs~D^D;5)=VxTtFTl;ZUr?H1zc`RB0mPEh%=@JP DC895z literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSCms-UHC-H.bcmap b/public/static/web/cmaps/KSCms-UHC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..a8d4240e6adb3ac1db859085b769a0715be03c72 GIT binary patch literal 2787 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 P^z)@`@$;3W7gGNZsUm@q literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSCms-UHC-HW-V.bcmap b/public/static/web/cmaps/KSCms-UHC-HW-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..b655dbcfb123ed06c7eeb87dfc96ecf6759363dd GIT binary patch literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=N;^vTdW)E;jHTsuIrH~uy7IM zz6wT$eN_w$2N{@{_EiJfbu8Tb>UA0Rb2pnZ?B`))+|SFzu%DliVZQ)3>wZCLhW+9| NwgeDMN;B`50suw^GhF}x literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSCms-UHC-V.bcmap b/public/static/web/cmaps/KSCms-UHC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..21f97f65b4a61adfa13f55d5a096ceab45eb485b GIT binary patch literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%l#TdW)E;jHVCD6nu5x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE*uriJS literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSCpc-EUC-H.bcmap b/public/static/web/cmaps/KSCpc-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..e06f361eb6d429290806b9f9cd7a0aebce22be4d GIT binary patch literal 2024 zcmW-i*H27iO?oT*=I*WEh>y zWZwfw)x9+eYFE?kLGTF?ZkWX&sp}x1yUFzOj=XcJL{@hkG za{2n`g`xA~u00hMC53xSN-A8{=SKQ{uJ-F=KpToUWs(J`+TmV;>Nm~+UE9J5L641UahVi1pSv>ge>ZlTsm4xiL@ zUR92$HR^%xThXer_tqfgPo=AheX7Q4pK6Lqo$8EEof=W|YCeim-OV30sC(q;48pXN zqNcN`X*yR`x~C^prS0Q(weZC4ooa#W_GE(VPUh|6?mJat@RRKk+z|NoDS=PR1U^fO zU{v5ctpeXI68K(R1Q!Lqe@x&9I|Y7diJ)KLM~4M|?2KSi;3r)IKix0zvy=$N1%BQp z@QV_GU&c=f4691fOg*3_!7_6lnC(Hr%m7Pp@|W`a?N=-A$JDlSJ!h)XdoRZZ$n^{es8+ zT#}v752-uc&wFI&i*4fNMWr0`;%c*HL&}ghqK>#XVrBcrG0C>kCRsO5OSI8jo4(=o zxHoRf&X@aJ<6m}q+%E@Z=c{aWN9ik%+US0DMRvX}?TC5Z=5fF7mYr`hI^{PNkTyqa z+;0xbDQ|8R#BXldVcB%myEk*P6E^$T%kk{2-~L-2^Xa&IF=;+SFlD|Nvy-v&??TIV z&A0h8ey8u99|KE)<|b_?SSo3GR+a{>0D(M-Il&ZYyJVIPZ8umhv_fJ9(2BrzOIk5l zv83$HjCKe-OVa9z?*Pw%)@0#3 z!FNMzCSGXeB@!=()$LY1y#wucNAF2Lgu|oz`aVO-?xix?q}1f`yvwL z1pxOuQM6zY?F2FxO3A)(TvfUj&WO*p0*hthxvDB#7Rzb(Vx2HXVO_ieJa`Yui$dBh z54HlPA8`+a>|-B{h>;FdJ-8`m*5aLqmEs%^8&swJQ9eaK`j(n)3)p~1Md%1Py!6Mv zAe`p4{^@h9_S|a5)AFe*EbqEgjVE4p7gp;1sejeu0{sY#QecEwoi*SGYe3*Cu_jyK z8dyto;6t!>n9*PzFzsL`Br^uAQ!yRHx*+^$mVll0m;Fr#>m_p!n3v2_uzriV56lO% zQes0eh1V}irkmI$$vgx$VlzF^4#TV?<|nfrTD8q=1RIykcCZODPl8<`^At1>nO$I4 zVV(uMMrJqI4Y2EAH(~aIO~ULW_5s4hWO~5~<^Z@Pei51Hz-4GccJIO*1h-nuA%FJQ zI(U?94ueONc^TXe9t(3c;&$#Ja|}G*VNQT2ASh#PNDf-Sw}2-~!D#Sg1Y^Nd5R4<9 zNg$PYdy zg*u6k%b_mts}$;y_%)$(OQ;Y0W=_cG&-u4*3CF^)!HA~tJ1}D8@K%^rWW+%`L*Wz{ zTPU0cBN5>Y7|E9KHZszrunUGTw^KNqw6peb4h*MFc*k&2xD19u;r%eaLE%a=avWhd z8Mz48!zhr$4PN_OT`~$kb3p6;*aN*>t%07J0KFgv`uKD+W(I38>z?vpZpdqS`yVV0 zebS6a18xLjKb^q+K5y<@qb}S+36Dj=s(73agnOVo9uOh&g)M?}0>AR8%C;viI`G6z z@{?<-lJI1b8ka?}u`Zt$D>_iSEVBL=+mZ04NDAFw?i00aC6TZ)2rLgEYGp{Iij@(H zU$v2aHJJ)lv&3$zqOd$oLgG^kIi8A4)BRM`E39RbXU#&XYez-TTCb`^Jv&Gp&uWGB LRYsqvzytpSc&T|h literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/KSCpc-EUC-V.bcmap b/public/static/web/cmaps/KSCpc-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f3c9113fcf0b02e1deea8246bfd27408becc8401 GIT binary patch literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T?H%k~kgV$(>a6RLD6nu5x=3`|5QW_H#FzGVJGJW8BZn#IT>Akzv08H|u^uX@>pcK(+)B KOG-2EmjVE${4#z3 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Katakana.bcmap b/public/static/web/cmaps/Katakana.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..524303c4f0c20e6cd19aa1d35805e98c2c05cb7c GIT binary patch literal 100 zcmZR25agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe y$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{bJea$}HdW(NS2fFFMV literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/LICENSE b/public/static/web/cmaps/LICENSE new file mode 100644 index 0000000..b1ad168 --- /dev/null +++ b/public/static/web/cmaps/LICENSE @@ -0,0 +1,36 @@ +%%Copyright: ----------------------------------------------------------- +%%Copyright: Copyright 1990-2009 Adobe Systems Incorporated. +%%Copyright: All rights reserved. +%%Copyright: +%%Copyright: Redistribution and use in source and binary forms, with or +%%Copyright: without modification, are permitted provided that the +%%Copyright: following conditions are met: +%%Copyright: +%%Copyright: Redistributions of source code must retain the above +%%Copyright: copyright notice, this list of conditions and the following +%%Copyright: disclaimer. +%%Copyright: +%%Copyright: Redistributions in binary form must reproduce the above +%%Copyright: copyright notice, this list of conditions and the following +%%Copyright: disclaimer in the documentation and/or other materials +%%Copyright: provided with the distribution. +%%Copyright: +%%Copyright: Neither the name of Adobe Systems Incorporated nor the names +%%Copyright: of its contributors may be used to endorse or promote +%%Copyright: products derived from this software without specific prior +%%Copyright: written permission. +%%Copyright: +%%Copyright: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND +%%Copyright: CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, +%%Copyright: INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +%%Copyright: MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +%%Copyright: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +%%Copyright: CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +%%Copyright: SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +%%Copyright: NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +%%Copyright: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +%%Copyright: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +%%Copyright: CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +%%Copyright: OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +%%Copyright: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +%%Copyright: ----------------------------------------------------------- diff --git a/public/static/web/cmaps/NWP-H.bcmap b/public/static/web/cmaps/NWP-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..afc5e4b05ee6f4be4f17eb616742b59aee4c5ac1 GIT binary patch literal 2765 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 K#KF2yhX4S!xj~o! literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/RKSJ-H.bcmap b/public/static/web/cmaps/RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..fb8d298e9bb8e090139bbc5e958f11a237672825 GIT binary patch literal 534 zcmW-dVM|kS6vlV1!_6jlIAtre^(Q4FZ7qdzD5oo@Ra#hW!6IgQZI@-tuH22r;(#pN zc3YNZS(fEYv$QPBvQ!BADC=#XqScEBemwl(fk!HbNFU1>Bk}7gaWoL{A8z;i1EMFU z4{IWvNv5>Xr0BhQO*h7LLrrNh->#lSLj3oW!qAeMaqC|h)->Tea;}$x{o$YmELjUc zR{7a&frS$QWo5ftfMs7cJ_O=wHmj={)2+bMHwYicfu9^8oM{H0876!>2>i@TINJz3dxh|M1o(xUaIPMBE=2h9Jn$=- zaNYqt-$(7G(`^H#%Fe=N;MX3)#RlNTFyYb#;5Saf(o zt}4K*<3p7z@0?PlvV!j!_(PZ4@LR#PPT;jP;l~v4rw+n(Kk&Lv_&EXmrIm2wAn-<< p@M{eCTQlLN0NxxV{2m4V(MY(p8+a>1xP1xs@6@aCX9<2q{{oKurl8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T7UUi5rR$N%+UUr**PoYhZy+br u-e4w{y8J;XlZGnYh++xso>knU|bjRFGekSdyBe u$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC8-WN55UU{r`}Oa}lMG#?cJ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniCNS-UCS2-H.bcmap b/public/static/web/cmaps/UniCNS-UCS2-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..d5db27c5cf1f5b0e66e16f6314d042a4ef707222 GIT binary patch literal 48280 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 Jqc2`({U4}20Ez$r literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniCNS-UCS2-V.bcmap b/public/static/web/cmaps/UniCNS-UCS2-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..1dc9b7a21bc59b6540d55b3d8933e5a6ba9f8947 GIT binary patch literal 156 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�ksTLal!IJ% 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniCNS-UTF8-V.bcmap b/public/static/web/cmaps/UniCNS-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..22a27e4ddbe26664c57f778a864b6872f6c2ba03 GIT binary patch literal 157 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 Uyk~SGTv&9{NH!N6NOao&1LeutHUIzs literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniGB-UCS2-V.bcmap b/public/static/web/cmaps/UniGB-UCS2-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..53c534b7fecfd84e465c8943fe3adf500a4444f4 GIT binary patch literal 193 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY*)9BicPk;tzg!q5^X z$j}nrT*t6SW_C0~i#-EFiybR_iw6T^OAsT&9w{L02E+l)b2AxQoY)v!T$mVIY=JV; k+>9*_j-3Bx_sB55H!Wak%8eoOCt*p0P(FjU;qFB literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniGB-UTF16-H.bcmap b/public/static/web/cmaps/UniGB-UTF16-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..b95045b400a77419292cab245f9f66f6298dbb5d GIT binary patch literal 44086 zcmXuL2V7KF`ab@ibIaW6^e!EgB4Pmr8&^fe0uCT5A|Qew(xfPe%AR4E!pzWn7X+k; zU^hk+Tgqm$o2F)yY_h4FP1)USV#=oM|FGZR|HJ2V9qwGtJ@?$VJn!>9NBq~sjm0HZ zrAKn}%DtCHMTIY379JkuEoK*I<#;Dmm6hidmU+h&9V#v@DK0%&o|7FW6AKEw|95?v zcWF*pPU-RalSw%_-eF62#BGd?Pl`ndp!Q-7gWiVsVDJ}14MKl~=W2ZDX)h$E!w_P$ z+b|DAE;$ZcxG1kxf^iLSybL%9L<@jp=_kghLB>?zkb+%m%S*5ty96@8`YqtI79bVk z=?_LQ|Kp+9BUKAIrp0vFm4@R9F_#PTYm-e25SH6AHqw(aHy`~P5}?nqQ&hVETb|2H z5F^O26UdMk%P?|azzzfFLjR2d73U;l7{;Cl`AUgg8YlX0s#9(Q#)bvPP67-g!5Ekb z4wxuc#E5n<@vM(-$#CE^kz_9>`w*z<4@sb7Ig_n0a+;J5M@#8%VX%Qf&}n^KrKpBc zGL!f`&-5k{2dJyYJi}rDK?Z6U%rY#CB{G$rhNLWkp$*0u4|k*Md!?jq@nu=}>h1$Q zZX*Y8DM*2QD(*t+4X!!toQrmG^!vfzhK#6h1wNy^I2TOJ7T5m(eLy!AQ<|1{Ah|TqbcO&bLEa>(d-c4rq zlD6$lCHDS2qquUG*e~M$}E~Mou-Ip2p7|BOje4 zV>$0`pHdyurjpP6$%OLV)BRgVqI5~`ttzig{-p3q0pAw!aM7)d$=%waO!Ds|WD$9~ zS=)44xBT&8qv~(Ymg9ePxU^gQyA|3=Ws9PT`C`*YQ3G}_xLNF7U)a6bu;Ia~Pu+>~ zJ>S~R(?@kDrX#-0*01hN`IqKx?ds@Y@E2L~yIfsS_ukQne+Qe8K2s-| zV?_IKCYM?|={W=E{A44kK)P*%Nsk*@LwYsyr?o4%V?N}x%on7?V>wfITG-8GvcRf1Vh<#h*LuM*&{qgr z0c!W)av95nu%r^S71)6xBFjM{*g$O*o*!%hHEkzq$aU*g!2oit%tb_TI`U4A#wA|T z?`KxD1f&~xSaw}sJm>a~(_7qCj+lf;OFIg?+}f0%E51B5WPdSiYP;5d(5@v}qlou4 zA0c%mPop}s{*wHKyhC^k2+1AE@5yU**Vx2|Th5T$UBp;Oj0I1XPZe(#zghIL-?^Z3 zhb@(l^1gShT|T->;~c-SBkUXasrsjrZ`ltV=*WIgcp^1RO>4%Y>XNJ{zt8+f1d(eq zze*!SNr-~fOE2sa74d23DqxHO%PMG!2VE2tu!bPqn$Hie1`(MYWZIP?iq}5Bj~+|^ z#L&s;+Z>*rc~@QQ@}&Ips=lb%W%{LkCw}yO$9>dmva&(awM1m&yUwM{N zcPw<4(7Qc1bkMR?8`oLM#f=@cZ0%h_>I2`h9ba$zbNZJj`j=~@@vpble3wcrKG!^3 zowaV(%E_u>fu8=$Xc4jPuK9=ETkdbU5#!O8(yq;-H2(XhV>D74g3wBp!5{R?fh-XW z^nHr9@t=?SAyWvLLSb+@)9#P-B~a^$SgwoXv`ZvCkzm@1>wFk(I%muTT?RH((nzE&@-}IK|tzBO(=!hRWFq9_Zgy8-dXiU?n6P6e&>NgYZ zskb)1wShElCym>_-}8OS7lmIGd>;Gxrq5$rE9uo6&2hL|20AiVPewr3&ry1AjIeJHP0RWi4xo zXC<79p8MNtkphc=7dRf;i@EwjjbfMd*{tzh=l0CmK2t`T_C6|mR64le%k8B8@GtvB zVV6svJ9Ov3a4LLI4v$XY^K0R^NFWVzjcixI=)SRWfmY0=nLWc{8_CdYOE1DWBG|xY5x{5?_!$Eu@Y|hK`XH4mDp0i zcE&l@<)f>+XlT238m^tf*EmkUSn_N*bQas2()k7zGqO}Z5(!-rwrf6Yv25E))V`Rr zI*E?E;_f>HTQZ<2(wjITg9Oa3_KoRW!%}F<1F{~~h42}SAq87jGL|(GLm9JLsP*R! zN!YT(#u^|hcCCIbhh|ngrQPbivUy;TNqj~Y_Ac!We_JkG zE+RprtKLQ;*4TB&sLW-eOk?vfg;4@0ZC)yCD3>&>Wt&c6fdUSx$ZBj~FGawbawMj5 zjaswbvT8P_&h@W~zb4eVPA;8Gdw(j?x_p?6Js!(GB_oHTje{2$kx<4OBMORDAM@Zq-)|0b!ABF1&ZP;qwa z^wEJ0=A%~oxpnU;K5-tjZHp8Yn%^~rvlbWJd;mIa@ZdqN%LQj5Lm<=O1;$fMQ?b0x zR+MVU=t&@}WqL+16yb&tp&=LJm{=>>i=F@ZRy)*e)ap+mozZV(Qiag%1G^gQkzN| zPm8?f-L^pZr4)Wd*m4vMQMgj$s`+vZ{+#^%g6}=Z?{exQJ}4OrB#j(tWS@jI7XQuV zEBWM>xqd(I%0%ltJe*=sJT&{qTeb)K+72F$@N=reN3# zy#+9_od!9y8V{~w>Zq?JI$bIfaia8%GCP$)DGqYP!$3qBa-Qv>93#vicLaQZ|!@#;efyNnp6%C`oTL22q)~>ETvPw%c1> z?E<-mHPCcOsm*7|8ANtKZ53+p0LwupPLw5Xf0dD1d?kV)Lm-pMRP@O6ES+U?Q zzdJGAdP-YdMh}VV#PjANn00_2S1?OBT?yy{pmv9BJPf*WnUQ_WY(DC!L9Hol z!$~wAK%e;TbL&Jd@%cA3h$86u5TcPMKDxbgy5i4HM7#0BX3SHcraiT}! zCtZ8weU*ZCDRk~*x+E}|1x6?K3S9&@G~vNo!;!uS^o6W;IZVbv!){c&0j{ZV-9bF; z1GPn{BL!Qdnc20>>>63G1hkpZ=pjlHKf1R}WyoYK0l0Sa3WF!ICLn9P$R~dMX0~4# zFG%T+Ql(KQts52knaA;e-2H9X4`n};e!zXeew(B}(^7KP0M>jM_6N&i==Wj*a9<_TA*d~Yb35Te zDr%x`m~`QO6>CUB^;xQBjmRZkek*}mhswc@1&vqI2jh;{3Q3FVqWrBBCVNAkZWA@- zN4puTNXPwNl81<`hQw-J%&|U`CU~D+S)%%OeQ44*3h)$>w=ChtilJo@jFrRCda%TTE+6ZwptF=QhCxFKf3Fx>Lg898 z(r-ZxQq~v;!%0Z*#l4_{J`wt2u$-5&Gz)FSS9ggx`NIcWe05tzS@PpY8xb9!1vd{& z7ljs;;Nq*1?GBz?^EjVaDu|{0d!|n43BG%pbZvc1t$z2)$t@cB?lqH}ALoCQ(^LAm z)^P4;7-#?zqVqcp->;A)Hnf0w-f{CE@lJpi2X50L-kzW2aGXIhYkN zu8}r{ip=hW`yNc~LYZy{{ha)mMnI*4&Y*fSwQtL}JD#YYsEA?T?1moq9-FfPqH4FH z)fHyS;o3o{hU@W+A6kJ0=J^Bgd>ZaXFd(Aqp^^?iI@aVpIogkmM?`ja)8hc8N?}KH zonrUgWa8yz_YeH7@=4W`%HM*1Tl8f2ljOh0{(X}u?0ztr4;`nOj(iD*AUK-~!*DfoW*K)G7_B=O0{ z8>$=2Mf=_VoIJ`YkRLa&6b7;=CX(_TTsexb`=m6XsaEWKW;Ptu1!%)KI# zo^_w>dl3JG`9U`1em&_)!8iLwl(N3jMif$ZOi5@N+3v-)2VymaGcuZ+n3R~u)zGGP zx5zchl*|`OhGO1!f7|VC+v_Qkp>@AjcRT5hG)E8Z(Dsduq72o?)a)YLNOItn~ZZlz+9_LDOl$;Ehv7Ny?W~&Zs4hH&#RM zItH_Sd!R3cuE$qT4r=6kn9j1X9e)n|vh4S6?{Vi=Fk>4oWle~p&mNDd1-Neyqbp<^ zW1!xSRul}(X|P_6uV-=qx3D)(D=rUm;A<8ncY585%bQ84Ic>~#eKAubk~sXGatE5*o(n?E{(54 zETfWM_5!P`q&E?F?1NkW*ai(QfkA)DHBpp@kJJ6 z)KSe0(F))=L#k=9GO(8Ea%8UUWf{c6bB3g<~o)@N0@CPDg_CeI)+-(nQj}QcPSVWI9)UhY+&lQP_q(R zwm@rz-8E14_D1IR21@149#XY!Ri(nRPohq=~kB5B+(q`=a^C>*R^RD@>5dsWB*M zg5m`XjxI8lLZPwQ=X)1jDt~Vy_ughQs3wD|pKA!ypFw)kzg%Jp8jdBMZsd2I=(TS} zUmiAWg5C(w9RTAN^o$1!po>Edj<~TJYJ;F-~-dR8OzLg)x)x{rz6zIAs_1vjpN=4w>SBdtc1?_2#2tx!3ZXE|12 zB{C_Uw1j3`+&I&m0XcgH=U%ut!)b|&gu!03~awG4^S%wc^s+$sWr`Uqu%**U}{U}FF@ zdEkj%=wU3=QYz`(3O#2i8ki2?rk62NZYBfQpM;TY8L)SjO71LUrTBV|w08&edBVg# zm`JB7b8xj?YmGz!m;F_YLNnw^ZQ1Fz)OII;?;&1GKJuF$2Ar zj#)gn2hDBZ6wZQzdYBtVEn9HQW&uR|efL9DV2Ey;@=Gq;f!ThHUl>{y!qb zD_m*kvWUJOoBg}ag?A|4Eq}M-X3#*|_v`+RE<2trANOoKK^D}X{#8L5MNzpw>tYn# zu?5{?xVH=jx8t+Lltn{>$xQ2d7>`G^K7SC$c2VwU|IvG?3ax|4>@WSxnt234?{K=y+;=YNqC2r}BDD+8o$QQ#TJ%GXHEt}2OxqBhq&7@M`x_g5G!FY)XO_Od;{B-i zSN(hOw0tuA;_2a1ede6xTqV(CGR_RGX$eAqGbP% z_4%OP1p}MGNKLW|5Bj6tLv#(E-j)GbNI(4WmnwnPsM6S;1;ns{^hn;@U{U>Px%JGQ z6<5NZ-?{O&`)`YgAwwfebFf4|EV{j#^rVsV8_D?%#85>Hm48|I%05w=<~tDye_sSY zt%WAL`42yDVOu=dnJPR}sZpe@d?D@a<(4xSYF^$j8*4h!nQ7f;@-gGS)gn%dZNV&& zi;}dhT~%NZkTw!&MYWBqfG@FBF3#bvZJjXXyN$Qv4o<%gpT<}88 zj%YF)w=Be+wzB$U*`;W>SHt%n=Xw&*q#fHCgE@{tw3mWjSj}8Xhvqa+Apmd!MKkTr z^loEYp&qR<2$O z)3Nx4c#ehptJ%&}HU&-b@T?DC=O($%!lXSnNxNJ0&E72(73l%@HgXY?Iyc!!9atruy_C$kY`b_JWg)oq&R>_p%6(dh`FXn)RwYeL-MW@;A0+o9PH`Xiwu zoW-&^4v3V$WJllrr39?S?CcH&&9BmW4Qhx2eG=}BU}g`4DFDvJ!NfMO?1ttD&>mn$ zS#Fxrzavy1IWYQCHg<`d5Lq#s*h{+bJkwT?qLAzU&XB-$xW;&KZcL>r|AblF& zEaHxQsP#ha4h*378j;U9^bswY|Ch?==|E-1@A`wysm*p@Ws#u_>vl4;=&PKYJ~zE@ ztghd6Ax{j+Xc}CJ>g;iU5xUDk=Vq8#L-S#qBj4tLx)$QDK57$Wz+j8CB#Ujw1c8xZ82RosgiFf#|^ot zp#T~VIW=T~1T&l89{{2!i=|W7W&4)x~ zW?4%Hwq$T^D%_sRHg9Lmp3J}&UJJ55U(hGwkqCS)4|ODovdojy88jI3oFHJ1cBUDi zJ!+{a$vp9~9S;s}|3~Wzf<~1&b;V)Ay(ju>JJNHM^yGgnc{zk!3;(L-Dz+3pI7~*X zMIrOnbOGFV6?$cG-j2Dp1UeO5&r+rEf?fe7*eZWu(5if7#d3#1ho2d^b~L zoB5e}hgH>lf`pUHYsj^Xmu+5LSevI$*7^NC)w1pNEq!agUO~nWiJqB1b^C%jo1f(P zi%zhZBchBfW5UTnS)Hd2Wk(-0gU0af>g2fM<~}S>G0<}ob6lp;L96a z$0HnF7(L>~g3-)TNoTaZK_y0I{`_JTdzIlDR`CE0t9dCmkPRJ+n5&KyVNr2_aHSjz zyjp(c7)x13j%8Uls!(w9#1If>@1ao~e0l+o9@p-#_q-Q=%kh@O z@Av;c_2Jqpr{_T9l*M21m=b=dA~UN&nF|?8B14JKM?Jsl zzWB|)e9>w_l$}n2ewX#>LKs>K`c2SRLg52$tCDOInXI*! z%Ylj!M4YwZQy1F8kY^q4^6Bs;wWZ|T^64Fe5tf3M-2U9!U4w!s%_=h#;`(j4EgpB+ zV_h{^N*U{Fw%HBZr6S5YGh9ZGr$3FPqcjg4FmGv5ky=ceSD($XdJpB3IvX;(r8Qqv zWev3)23;^10JTV=L4yaDVQ(;=WXE?i`W+0#0%6@oe`!Id>QvBsTJ99biu#yNQ~ zpmEQ-XLTTRbm*kHj9T~Zb$R+D)7ySrLvHOJ@U4p?!+B)pAeqS|<3a5wCl8Wm6{K10 zI&+aZ7g@jAy5O2UeU1-0VsY&WT3P~`#6V2W&|3(U(C9r1mudN)^;N5VqoRL@C63fN zkc;cd#dV~6qb``VJN=k&p-hx#{nD8PU70}1Oyfq>wFivp?4%RAevIunj9UX)!i(sT za4DW1;nQM`;*i_Ox_)~y>_nR4YBhSkS<_Ys z(dgVVMgkWZiZIzbln*$JXCq;>f^FP{Msq~|(7OAYAnj3X0^YLKru`^rb4AIapwC!0 zZ;o|zkRXj1tlpO$LsN%%P5<)j%v%)N_8V z#`e%q+etFwLfVSY<&vApWHOFSZYAS!ZN7S^$q;fq@~0}b-A|=|J0apjm)rKhM4m== z==#X|*0qIL1&r?ls{)PLGBe?l z7Jmv1I}f3;3a-fwh%+XR>})z}j75#1$cdfajiyuJ`6${O18X8>R=GK<0m63=f;NvX zDfDOYLjZjds8@q-P*nw`L3$UU^GTo=_!k9kpbAgfqBqu{=3G3;!63l>V=%|UMO!qs zLDCzB`WdDni)&aW+>xV>UCem20!yZX(3JQ5CH2|T-UJxjfor3wn^AmhUd>&}6>Sf_ zbHB#EKEcz-O6#|K8n?RDQ|%A7Y*d@vnEDKCJ;k;jQRu^DT5q}8iD}72WU1(K=;3F3 zXlX;SoDD4i=XnIRN=3U#a+OpuPkalkR3TN!R2)ya23me9Z8WOvi8cip4}LS^6*L%C zdxqRBAcmF15c!9=`VIG3GQ5}!hicT>H~*IVbH!Zt-wMgx$(NmtUX$XLQy<2W^XvW? z`>HePO?|;uBhUW*om}nFx5~+F_d%8nIQ(4m^BFR*m<)tIqCLm#Cle*myaB$5f!7i= z((Lzpx00^3H{@@~eo_9S_{H`Y8$uhSC~szB{BxR{GhVQmylS8@|o_^byr&fsQ7c#S!%&Z|344J^> zxzk!Vk;}=l?u0Hk+$&{Y^@e+LjWnmE*MVkaGUP~x97uh}m35Cj$+fC4vgpOy=RLu& zlDU15F_pmOgBoQ{(`E6=5^^{1i>NPF-EqC+LT>IMH&e)jBbjh`&;5FY$m9%;P`5I# z1JWU-e{iljrlE}7-axKP$aS7r77|O~-?_80Z#I&f(WK|JVU4&e=cXl<>D|WYDdD+? zYma73rIM~2%;)T~SvN zm}{7`F;KTsM(J9ejJ>cDb=bgw4O_b!H3cbJRH%MC+rL&)8xKv#IVwUaLHcd1DOXC? zpgu=r@!}}0VhMq+M5cZ_YFNOGq%#B6OkXH#I4afeWQ`#(aL}oL71!tNKYEzad)c+o z+EP6aA4k=!DF}C-K|Nt$;h@P^Ql|vsgW4F>ww&+t#*M{HYXKTxiu$&SfjQ4!-o(>N zhEiP=EK*7ag0y9r<0UelkuVB-$~#f!nUM*UfaWNLi6u%TIAR4zzy?bhTZ1EOa9T)v zB+4arWDV!d+KIL~*KhA3GE=ZyU1~6qQ)_kU%HZ@-xV_TFk?7m0lC*4bo6!h>wSOTda; zuK2|vj*@&V?Kx`XxrNlMZYapZxR%hj*K|~C3%}d&-TLp=eYcYS<(b}fFunjarDB~c zI}ps1RU(snYBo#e%uol-J^dx3Vj}vK8d+}ph>A3^t$L5ec8}V zi?veFhQTH}<;$~$v_~(aY8k1BbFX~qNyD5x_wCsn0Y9~&zVl#nR}`^sCKF4^MEFxm zm*jqG3g;WracvqJ-h~E=p~GG_ypGQK@3XnQRN;%2bew;GDavg$>O788t}S-tVbv9z zJ{5ks_~p{4JD#q-5wr_5 zZh3301?Q9dQ=cY3-N!vB>y4ZU9ap!}(3(YFI`AgXJWU~uA*3<*Y1z|KG7wRBnw$$K zH#D_to(t5-^0H>DU)lc3j@c8lr||RKm>p@%dzvF|%{$(AP}aPb(Uw3jV`BkXmj`1! zM)fq%MwKj~h^U~>6B}(6ZOesv9_eCG%MsS<&@56jiT(_ zR!JR|3&k*Fj&7Z&us%gGtwi1q=kvG;AEqVQMH|BE{J92K<~%6-d?X!5eA{g({A=@v{mSLIZTJ5?kK@}fFDVBY<9Hm_mfPdt0x%MNHU}IU)bziM%(PYTfkHb z1810~g|hZ|N$XC=M5RWh$ck`#fVe%cd`^x*zCiB8us$?@c{?bi0*586LP}X(d!^c& zwHL61l2c#~dr+p=5eHx=-Ue)VXX@;BjHiUdA=rUZ|Co9{mP%>y1jvWhZ+5g}j1`oX zQYaUB@?M;SgatLn$XSU3E2T<%8_e6v5v^1y&+RTaAzWD-Z8y&-P`1PlM4!C=dlgZ& ziIN6CNyFwWazwBoSBsORe&s5?w})Xl(x(UL3Y8WcsNZf=!WnW{b1GYF=TOH0sk9|q z?CXwV5NHgyjg`@fXc9K^VEDg%F zB7AlN$nVpEOyoj4?I9nn9kL&h{TfJqf9Tc7UxUfn0MnL{Sn|iPUl)q9qa7p57IYnh z_WfvLuViu$GOl6H9_Q+gp~fYMED=>lyPi$sx>E2=5}t|YW)ff~kw$Nf+iamz$@lw$ z?g-x%#q_3&{L#*TMN$Dc4YYFlz#7@nH_WH!vTmGK-~oYL3Ma3vC$Fs|*OEl}(GQ0c zg&_P%it`6c!W_j+=F0=@h}(g-^j`*<53U>jHb zi6yU8v~D&~<}BuyjlXOlQ*k55MVEqAX9HN19d20-)@9IE#q{tnRfV)_eqaY{T#7n; zn6rD4Whr!2LtQ>JFfhIs*Dm3-zMOVD>Wtv~PcaS7(6L423btMFm2whrwn0FD+xm^Y z(#DOl1avK=1r&fa=GD<+(t{X%RK#dQW*pDTMWMiQVIiK}4wIX(wG^yn>{tbmi-AC{ zEZ5i+3^u693;E=Rl-v-AF?M>p-cRe_8B1P^C&uNsa;%HUwE|*XaxFo0D!AMzV|A-x zLO{9|K$gQq1e~WtOAt$FE$GMi!jL2C-Ym34aK5fW8Y_deaGMbkPp7|!;MrH3X569_q{NqA2JHiapyXKLza&lHi-l%?Zn11oo zH~GYv)0f+@r9H5NKHy#;&z}&Lh4LW}-s;GjJeZac+_IcEd$PJMd|e#v)C%Jf(BlB6 z4A6#%ibD26?0kO}$z%)_mbfyid4d_q8CQ`jRDM$~Q_)@SP;84KxBUMfr*}E7 zA=mpx-aNh6d+6#3^7>w4a(`ywGoi#}M;<#u8Fg>9m9;XaD6&IX}t@km0;7mTNN z;^t#uEMY8^>C9(458yFJsLNw+IB;ioV@nWjasrb*ZV*u2PCVex42Ouguz15gXZbnw)9sKQJc(9O}iv(JC_aA}&Z06E2Xe?s2>sgZ&nfJo*DTV z{m+f$VI~=^x*z@fpo=l$vLdc4i*2z%ohPA%id|CC&E0TwFYa23x*}n$5RWC}t^iE) ze0MIQl+|T9yj;!<#i5~PXh=kZNAdH~=-O(gKN59v0tEsW_6oza4^$+1_81z7#zq&W z!&A;-PJMPU)P*pVs?#ljo2B^q1KeE8o<7rAnD!cJt0p6S@ecO`M!7?CTwH3Re7Wz@e4j9ck<&wg9XQ_ZzTS@g=e zpi6;YmA_LwTTRS)xHT|uYy?RQd&O+z*E;-DD^Zf^fy{b#C)C5u?r6U#bs zY5AKm5B$W1#gQ{=N$);I?_P9vvCMLS(QZHncjnR#=JHX#F(1z5GB2~pmQf%UF_M=O zm>_s5e}1P7Tu4$H#eBh)#erjw{a%{K&t92>om(VJ0o9X_I6@yhR( z(yCcy<1i1!=X1$?86lPV21^xNGw0oIzOL3tOI%*u_iiF-h{B{{#TN&^$b5G>BQ7ZM zn^|N_i37Xm4&mprRiJoQ11~1REn0pq0OJ|f=(9mh-TsqP@!dwl!mBnhym}jU+ zXEigWV5Sq$z+te;;hqc+N%0WPN}{S{;fs4ASW>?Z)o+wH=CX~E;HxmlGPNgg-3qqe zhBNI13h5d=M80I{(?rkE1^xonkJExxS~7Jx>E7wqN>g$DLGlvaI^;*{e91dCqN3!+ zFb#up+*A&&#mw+lXsm&jO>9%4+H@L>F=!~8F;t0M$@R;L6cvF~V5ts;DS77mV3oqg zMWZPBq-8sKv7EeF*mLr-;>ES(RZnt7)9%-}h&;2E%;t!`B|r4LA@c#IZKr%Rh4#*6 zWE<0v115jDF;F@naMm)%mLrJdt6Rc2<00Hrz?0*u)(YOZiY7QVm9@|q(gK=SHepep>GlDTS9@O6Wg)~cYE_) zYw6w-)R(~yU~Jus>uKZgG}oLD%}2Q5!@QMa+YjMRPt+EzYVgB4`gls(8IgfR%b}so zqC?4#-zT^S)9zn9ZPvTYTa$#9t6T%;yY)&t8<(JYyb`XU430)#8qwlsIylD8g&0cy zm3n7A8F!)F*F)i~y~ver>D&&35zIg^T;D+DpvuyeOGk-$)%)@{Bgou3a(_Fyzl~Uw z#G)V%3dw^4^596_dNHW<@TFL|u@N;cV<&jv@hqKW2xD}B+6|l&w5##$0`663c-3j% zs4*xU6_+YtbQ`)80e4o=u2G|i>qJRA4|7x-ln-|qM!%4KkxJOmO$oXwu(veGkj~N- zYIFu2%U|6eRqe8>9D*xgEg;k(XpbmH1Ee%3O0U z&5$u%-n>zJtZfA^5&cSkm^uTqNz4{@&IMs!#$4RZUW`WqJe0$OQ_OS@blbzjGZfiV z%^@x0yUV~727NVfAqMq2;$A0wld4Nn!7QgMebW`rlTA9L=?*4Cpte{Hx~zri>bTYP+?M8-tEL6!#@qd*Caz5$*m&NyLi&+ z8;9@hHHxx|=R>{~K8-T1{72D00>}nK_@`l{cO~hK{4_#bQl=Y>!|h8^_f}*)h)1(% zdHrk>tB+x>InZb~CPj^_@zr&3cLDSlQ2GL{7f`j86a0x||5${ioQ#Ia>4Uh%cb@Ec zaS6N_E>W-o>ZUs>DyhVTVO~4UzK(5XPNVu7h{q%buBWjwn2<;(=%z)!Yq^NZe!Cwd z%FB#DRsC<#S+$))W#h!tlHAFkr8&AhV0IZp+6qY9(fL+xTLoz=Cv8VaTOOgc>HPU) zqO^Q@nSbaslX0wrKb|sb~mE0c5*x5kJz058V z`fQ|qYCP+!u;#MXOlqxYHdK_9*Zk~9H)K-hVOgb9M50Dn{?1F;pYh~fMBWA3u_E1W5i^!uD4S=1SB;t(}hcvIK5q!=NM5 zEy6k<=0PQTP$i-Y#mfOAU;gyxN*Dk6%LJ-a)i_ivI=jf?PVSx|f2nxG|2=#1w@kW$ zZzRW*ayG6toZK%ZABK<*gUKs<+LOqKi%3Jl?+Zm`MXV{FZ%o8pZmgw{rQF(R4D~6Y zT>^S1rsK3!SH_snC`p=VQ?YK=i2^DK74Kq3!J;l-*5oeeocLBBrYRdY<#47wj46d_ za$wAIk*iq$i?7lqAZ&hu8bw88PYt;rN^U5p>E5RTVlMo@_={`Y`t(d-+ z!_caj=jhU0_~j5C>E5*>M)Dp)P_WhrxB#vIxwA`X_Kz=;y0e-3Y$vVsSe`SB-`iaXY(oY0p+1~9U+8?iM*oyTcGAQS_2sxn{ zXJkGDwMs^(R}Ek+&x zM~5%8GwAgKxRZhU6pU#LOuOM*uBiP8?puYg#8BNF(j)XBTuygsvm;BOXA8Pr&amj* zTBtk5OfEuqT)8`La6cBvPIzd8W+RZEs@bDK>x@RcDNMriBJx%b+FOIyGtlelaN8c; zR^S&-K+{G=-C^eSy)aklI z%~Y6v{9nIOS@%5KN`=@o28AOX0!wE&*NuhH+Q;v0&(3s8j9YU>$HLg+&%5Ytj zL|>q6OMvc3)Fc<04zgAcMdwD`;siZ$aDE#eS96n8Ww~7RIPv`zN-;~Q=2F5cRSZup zR)ys>Z`!LA{9FMuw~q!!H4^M6QyD3mOu%Y1$T|-klha*?)V_Gp{=^Ue4Rfb@RSE>C zA96ec4wO`yC#~l*358DHp21Rqr>0*yXx>jg&m*0#q|@d9KRS|52lCIgjO@$<*1hl%#HsV7oT4#%eo#fvQ%6O;TRFcU7y?ysXp8W8FfY zQFc*WD1p|+pe^C*vT*~|6|a`oF9B1UgyMzsHCP`kYm|x+l^0&lW+&Hjlj~q|J@lj_ zt*fF-lu_&oXIBX(fnnIm^>{KAPcBASm|P*5j1ro8wwdD^L)pdk{%Q zr3}_niQpe1$;(?rq3Q+e4s1$5LkiTsiy7uXzlvMP_iqqU)uU?*L|pZILXxPbtExV} z=Jj?0`R88phEF4q`<~?4_2k)gq*F~gRiyKO@8aVnmIP5=^<#4&9@v4-F2#M}vh%Ca z5LH5i31e0G`Wo(1q20J33McV3|9On16e#U#N|d$9a8roLRsBLp8I?CE>|E@q_U7cu zYl}!Hed~p!vw(bEQ=eKzK5-+T*ZdYL@+UWU1lZJDYbaQkqPo-W?eyF4|3*3UWF?_{$iBBF-`kLOiS(Te z^3MX&&WUVwbW;ii*@~9c$Pz3H)k|+2qa)i=`9BW^1sFnDPm!-)MrtGe&nfASDA1^@ z6D*?T_}McJ5#-g)7J-?{@iYKc9VRjP@vKU z!*SH(1sBWt203fVqXY(J@R$Z3vq+c3SqoWfo?N$6R=WiHD)DF;?kd3DZZH@tMpnOm z(^lXq7$5auTLYlEOc-?&Mx7CZMqOm1_8^Cbc+{|+2g#@l(DUYW)V&IiI#V8O)Il*y zx4)!PWdw~-v=Xug3U#~H{gD(*bR1#2!&&VCP@&E^L?W54lhX0!4wyFBC}qvi{|ZFK zGQvD;QDM3r1$xT_T|8LrMVsn3h|bX~aDG3i%FdRSNM4H;twXRVT0vO{TGP^op+1%?IzNBuW1Oh>WJAuO`5RTyP?rs5Q@8YgNfCK^r zic6tIYX1sV+)9gUp-{9qe821W+%q?`V>>%L^UmwLoc$Qjet|wq62!-8A-tBuoap;w z)ne~r>suyMYRHu8QpRMqkaG%qqe1wZp43_?j2D~Z#D<=+D`(qlBu0EO#{=r}X%q1@ znHJT?GJV{POw2)YZR$h$A%>N6DQ||=O&>4f5Kbk{7a0ahi8ac(Y#htz$nzSpj6syq z+mPIb09^&vOImGJH;ClA#*C?yv``c~SaDyzF2Zh3Y$cNxxEU{Cy?6vhdij{3S>+#& zVQ>GoQ`+eC9{CQry6L;1!VYO;vx4%*+G7$w|9S+=sn2XIIgxU}F^^{1gA_>n%p96T zdGpmASQhwDS}pFy@+YzUv7#W9>2;|QD>hTgBAzmxR?cIvMsf`Y4o2w%nTc{+P;P5( z@^FGb2HOJWskCBUO@&LSa5~NeA<}I^))Z+2sL0APhS@3c?QhlXmc*knxqCpc#VuJ? zpuLA@P?U&l^p$EdA2;wk{nmuLuM)OZP3OqZX$~tOJ|F$5IZfiXZEs3 zEbH`RAI$W+p5}FZC?$v`O;9oyi>yW>%cy~6oMK^X=hNC6tRMiJPVoGGYFdAuZf6D6 zn2-3eiu$7;O`tTv^1IXe7?F*a5A*YoJeovQqEy4*eGs|1(##)j+b9f(Pa*MnAiIjqZW-l_RJYWYlcCEUqGOd zUWvJu@Z_pWYKUD~_V4Z)2F1ff0d}$MwM-f6h4bCvvD`N&J~bkL@TzXd$FH@lHGgmV z-YmYKCSTN&yW9K*vzz778>}q7lj3x!c@Fl)boYFo52E7PhOesG&N`qx#B(OH9n%QT zA-uQryqtJs5< z7iJArv#N`t*<5zw=@Wcc&t!XQi!Dt>$~>{9wzhMq!DSbjL0U;oCPO__Im>QqN(1uL zM@W^eo<(vDt)Hsx^kwS+?3b@Q)Dcw8rh&9+5EWH676qA#pzAQwoCK`RDhev|f=~+w zIK=jcV1}tVv(2R;G)GBaXtyn24-u1l=Nip!$)OvlfomQKod7cg1m+c9#r5T_iL$(j zEN_heGj-3@ITck=>C*xBfEATt>WSR~UX5U1Cu(0Wqw}rkd~3F=3pOxYGme)hlFlh< zI?rp${^tfh$3oatwyrPR+TYGs)cK`7+%OqdM8L_62_tYLs|EyzX+@vUhRX6@@_to$ zKT>A3l36X~jS=$3aQSeFU91@XZIHQm5xW%Vu&kKzbzstr47JGGOJ)VUtz8(OGEk<5 zy@gMh6^Z{_#30dK)dZT|<`vF0{nEp}9e%uRjv{}JlUKXQtDWV8nB-}8T2ZiXmcwgB zap??scCP%zSN`H7-}G=+`nmbf@$zLyxns%cZfSM4dB|TC`Km=fhjqm#xr0-d|JqpY zm@9Y8J3pbgo_tsf)yiwg6X9~l0(AM=zC{k(io=;x-I~j$=avS2JIkHka;KMk;`w-_U6CxO>eel1fD_4^gw79xlKA?&@2z{uxAaFyTWBj z)T+k0_8${=3_mwuFL+||X4)vzbdQ`^yN~=~{TTk`eE4huRkpSv%M24d^umfw;yb0H|w8mnG3|M6oSGqmTTrdz!r*BRyZDfCDM=l5NQ|sVVTj| z%~)|*_21G$zUaJaio6P`M_^`UZB@-xjpYxc<%1@hS~_g{ANjqo6OVB{#gysusTTF$ za2rIfos!k*t`~0hVD((F5lBaJUnbA_^K8Z~OdhMosAZ5k(XMJ$FSB6wr)kOTx2)PZq9l3 zob2iLO3oSU>l?~Pv3(PHC1BEu!NfLH;i(Zyrk_|ln#C$!ya#JeUKC`g1YFI=HVslX z#j$O5nXF}3oax`!wqy*lNL9(6jLVf!X#9UH&|z{OkeQ9;v1xl|?U|cBDH{_#R2~~v z(ahe+`SsS}tgeWr1D-r(FoD_TQ1(ZYg>2%>Iqb`YP$&3m5c_Jfh!Go_u?+*k%GiHKg7B{hW?i`SWP`^NhnCWp1=A zYb(oQp?`0WO3L}9vZWw|6@(dVz(fk8L}4vxgtN7+HRzKJDsdwV;PwN&Mnif&3pcP|5RkE|*pE8Khk6qeqex#}^O!B}J#u3+n~8S46( z_Q<5X-(dUH)9iMaHHRln_DY@ZlNHFaDtoxb7y^}~NR!J#&X&9|h!u`BF@ozDSGdp{ zc%-)$CehZMnP|;wsAP<@<&6QyF1@psJf6Ee`O4bL>bY>D0QhB1%9Ysz+|;+1Pe`@! z`VBjJxk*b1A3=$jlNaTLovOpd=dF^0_g6ZckmF=HA{Ok>MjRb(eb*%a?dQEZ)Vgj_ z=(aFLs+tdzeKe;(FR4lEjD`(0*rDpIxEt;EwGT;&{Jb6uB?W998;7Mi9CZ4F@HZPR zqLQXi!BkN&LGuM~(7oV`CL4;DkZLIE%ZrA-as;zz0VD77xD zF!Oa$VqKV$648^nw3Xv(fhn-|(jMzH)AA}5%`6Kifm zmfOf6E78hi?Wq;iQgq zmsvrTEB}cbAlRV)pSL>YRZFVd0lLqk6172d2_ryI5i`EIjw50q>UEI?NnDA zL*8WVNEg~ZRcu(~37zrcFkUv+>RbrJ0VWrVyeM;KHxJmsBsqku0n40XOt8szlx^`T zU#cXJw}+*s9%>ils_Dm}(V*h*6DGDUXL${cS%D(C4$G@fEBkR*Rkvh`!__QvQ}Nq} zv+cu-+ZOU|GmJ1&#-Zh*8cb%pF*Q@>Hw}n1TB|pNmUn>F>Gq)4uhrfjT0$P05CP);<5E)n?A1w-sw z+BjLzP1XFsx%aE=8|JX3eeqSI+zL@`mEzD#%U$#Ij5>NoPD%9T>Dd+U}8d{_p^|`Yfq%`hfFIWVd2_Ay1-p(~Nn3EEfbM$8CO-g}`{-!T`4k zio=|4*t~4-ObPtw|Ml|LMaXsGa-%_R)a1Gvc1rJhK(U9V`+hr_z)DGtp`;od+?UKS z(mRQyC6pPd}Hm-5Q#G#u?@9&;eB59neG(*on_*yW$@j@#kUd|nn=98X&u%LzeYz}< zlj{=gO8TPm1W!4NrB5k9FHB@uPt0U}M`i}o~5pa??Uv(y^ z&R!&g>^yz1Eb{h-JyrU#|4ovcrpnSTvb3|Tm?0~s%hF-8bf_$K$kN{U&!~;w&VM~p zO>X3;*RxyFFMPioS_8o%hQdi>t{K8L95G&)T}{6%i)y>~s|J-khfn&yKk%Hy?D}$j zb6LJzmcvkIf-D^`w?@dV;d1MUw5dtM0<?ue5Wb-@sRQWDyCal zx>+5iW+o{5VsmPkq6f3=0a`YE>U3i%U0L!F(z|)2RTs|XI2Mvro*bxVOy*fbOuD}) zixj29Sh^oMp*`9XBZ3RDgqW^^HSdejto^}5u5T*W*O2S0%WE~aw@It&th{n;ew4$S zv2|_DA#R*wq*yz08%U%u$Kc3w%H zH6p{jVWGn#jv5*FWpM*NZOW>lDZSGg z=MKpooHlJE)EkRE8y5{+<6mq{GM6qXn)d1V{ec;yx4?+6W^wd^wg+N24Ow5w)vj=u zd>$tsh@w{OyB}zg>ajCAdxF_xRCY8q4 zy4`}YZGxq=`+pEH1!1{q{4wt1wXV4`}=A02pP zROXpO?SYwH4$WsdAeXCZsc?1UP_iwd*~_37kHZf_F`+o)SRNcBOaM!qIsKI6T2Q-W zatccu&r&C0RA4)W$>K&+m%y#Kv7n7-NFG*@dC zlrVIvQ(!Z>SgVVXKKQALCpY@qDf6RTS<7L{GP>=j{p9AlvbWqgSZ-@2x3!cNzUlD& zmKE^7HjcookT3nStgn_I7`(l%Ug)9cPe@y`uY1azoiz>`H+QO7x^qhD(9~h2ff-)g zduP`-)(s=hruYf6q)**0A4s>-(eux$fak zqaa=swzo%SO*=GCwRtfskQbKPQDk-ZNDeaQEMS|Ad}9l4ArFFbi=vQ+uLXEMc(6>- zVpzBppo$bj15rmy>nzeb!C(Vs$97xRRJpQq90+mn@PKvTB(_?uZaF?A*?taFcFi=; zgK_enSswM2M?LV*dpmv>2!ItnL!?Ht*;K%S67xtTgao$(p;FR2b0F)y0PSJyR^&9*noF8P(H9InDSEVI{jV(YpJ;a?bIN&}S& zN!l2u$FenT#KvBf-XFrZ>_8@{-LVz&&tCU_w5tc15=_K0ce@W~nRWoLPCuB;Gn7r$Yk+%QgV7^|;O*c-QH z(FTyJ%jC%}YnrTSe5gm7U*QnDDQE7+k$kNeL>2q|***y3sxapr}8 z6ZTU`R_7yq&eY8b)|>s%S)Q!!@XE=}@=x~D3*zL5pt70yYKnL2;L?`sW~`gOdBBDl z`pU6-X`;*9E^;=4D}A~;lSf)QOgYzlIAlIc;)lh`r$0i!t$3xMHV+XxT{TN z%z$0Z`Bs*Mz!eUVLxbY*%(=0)n|vE9FT|^wywF`<=w|q##;U1$lBTZ<{l2rj&{uwF zi#d2%G>DZ9U^%_Smc<+%k9AmEbYM;+&uE3-pY7`8{<46ba-RRX#1WEfD(hZrU2l0| zsJt*pUKl9fMr50dn*I=?ubVI52A)^;_4vM~zK+XnOHTG!+d^NtRDQH?=((|8R=ZWL zzxBKmY4^#kzN@=tWyd1ev2f#>VSHs92JYLwdK>_t%t%m9Ts=$O=Su*9-*x0aOcC4q zvb6zrHMikcttzG0@O5~q@BFzTNvt=b?=LDRg=4na%Tg% zv%dUv`Nkl5F+ktcZFlQ$DsQUI%O>KMDaU59eNjwatc1PRldb9D@XXEmdQ5iM@tX2^ zxL#(`fs&kSBF{CJ_X6d;0C~?>-t&?7g5=C(NR?Oq+EqHoMxJd(J0w_@& zt5^y|JEbP2)PX}Fx2DVPZJ69PRBjt$_sDCp#pt$I;~8}+Pi4@xS-n6> zAEm4@^3DDnS}~b5l#({Iy1(6!*YbxDn;GumROSU?3qb~z*F~-wgm>$mH|a3@&7kM@ z)i*ZMH#U?XLJxOWPt7~E)U9RwZI4s&sjZW$^Z@t1xzOZN2J`r}gN!h|=`>GLoZlqq+2;Kjg6(s{x z%=V6X=YCoUzSOD_Y}H_qHcic5z*bF$hIV33={Nf+~!O@>@`T zN1#k1s~z6jdAT;k+s6hi?0{gu%4TczT9Nh5W}6?5O28V2HGkvJP2}eOa$n8N`f@X@ zWQX|&M%I=UQ1_y6Nr&p{B9c8QyBVO0DG5f0BjDtpOKx^e6Z#b2?0SaW zx`yGD>LFZBK*(^{Xpw2d_axYObH);$JJFQ3h-ADuyBg1q@<@uJta`>Ii;~gZkSYvm z-q35%a_U*6#*#CLFDA@dWOvTg`lJDqh@E5lb1B}KF1 zjua%E-0B=h(oANPtZfKa3Vo?CfGxzBGr)4}D!jST&_FFRh@x0lG>MW%^6bv!B}!Yd zvhhkr12v--)lgT~fU6RVba2_50@bp9R0hxXJ>mISaY4zm4lj&iX^mM{bC#WGE(-$i z_bT{Qmd3lec7AXi<^wXmQgmc3MRAj~Ucm;?oo?;7SUR>7Vcy*zOqYF@T@2c7`jbex9 zxc@KCQa`JYnqTJj_^IQT#I!D3niS9dA3GeBG)6BRZ4WB^bM0`JGfk{%NU5ES>qog= zE5gGy-0|$PiCs&fzCo+1ij-kg)Q2U_2IGse3W4D|Lad6_Y3Fs+&ZUVi>!bxjywH3#4@ZxPFAWiDv1 zxkj604L(*as&Cw8vwIcQIWQGgpB_qk>Itq!Iw4>eVT~H!tc2|2K9~wCUGH5g{R6?OIVeyh<3{`u&(a-vEcL=w4CxU2`h}D+1)5 ziTds(+ZtDNDXmj6d!7F}zt6{Dyf2G-te(EgKW9p5Sn1SV5s*{f8Ln@crT5Vr+kK1G za)WTy0Aq2-5(dUogdw9F+t;2BsB{3k1{QE7Row3A_TzIa%b0BKW@~R8WLJu{ot|z+ z5Z;?sYyjAX*azcw>%BO9i(75#~p< zq^|;=5+$EklRvcjcDbJ3Tt2U{H~3ggdLOhe%$o7Aqx`(Ld|vm<0Xuu^N%iG-hR@-V zuXxLv(d@U0z(x--_NK*O zLY|b=nq|%8(1M0}J~ldBQl+$FJ8RL-<*Gi~XZu2MIxNK~?MKBkl7cTvK@gbPjO#5aqZdo|W6anR2P-RSvEcUQ)aOx@ zK7r+!ML`2f_hY(;nmI=0ykHXXPD4c`R(H zSGItWo>t!1mgVhRu)xSnNez{x7_jj+nw5>7I5%;w8OtlFf=}cV;Bt}a5nA#RwXiGa zz(Xn(eu{(_V6bmx?|_hM{=os&+~)$^mm^k`fJmQUvxmj(@Lc)v z+ivnpER!Z#1d{lhx$?^OMdDpKlPAb$H=ei+5J~}eFx_ZGguZ5%7G%K zBUI5XDGiN!Rj|Yj(#V})Pesk~|?b zc*DqwD(fb>f-ZPn9k(U&^LE=8l+4yA>aH^tbkwt;EVOEE*)q1JDwjiqa|th9T76}rsmMz$if3y&*Ds&eH=Eg; zt=jq}GnUpPJ5TPXGDB_*<<)zdQjZ|%Q6q+s~wn2N!AUT^tWe3h`ea|Jl@s~6`5 zF}XEVgTIuDn^0E5;5dFY##Hgs3 zjk9a3^NXs8jLNKF8Pok(c7jKKu-&$L^TFC$5oamU3@$3t8D%80tj<;-NN{YH)Sl%o zq1@>#AG5o9pWI{*Z;U}+{LyHVhZ@W8hRN@S%5Pi9Z=1_QZRDZW^4O&8=5{KfFN8gO z^}{dQ3Rf?i9--z=hwW>YCrD6$(5z?%-cap^5+*k#*6s|Sq<$V&1C+2Fwvx#|TIJ!n z`uYj0qtm)2MQ?AiZnnNUSU(iBvd@9)pE%HHQNCb@XESI)Wr1ZglYKFQeKFW!Dbb7k z_4VWRt@DnK{d7v^h;O>ezpe6b+b%Y->)AM+pf}sMJ`kn|ot!bUz*&b4I^~hAL5j2JVXt~15Z6;VZ7_e-n0!tAx^7DLa(kmSJ&%lI8SVCszQF>t*;a31>|_sGn;^F=!#QINuJa#2 z0dfKi%V_=Y^f0kjjeWv=!%=STFu8JluizT7z_%kE9;Ly*M0m+BgXNbF_1?U%+Wp$% z*XCc((znjlw@_YRy{MMMT3WYk91?nAPrWcs-d!#}iPH0`=_T{_&BZFIT-qjUJn1t< z(oD)2qO9(!IGg$9#s_Ca`dWOJ`uQ8vrx-z)XHVm4D$lPkT+Nyk_ETKbt*ZwHZ*JmO z*0A1MZ>6xWmKJWq&W4Gxgs`o2<_7b?w85QqlV+f#!BTS$viB>EJ=j5oGKu@au*=eo zYPx_-(@S9G(2m}s7Sp@XYM@8GSV0@%>~6%yQ&KCdsUg6$(*}!TGj!RM3J0rb$16Jd zt{liqM|ot|VY*wb9o&7qe!Umd69A4G@OX;l9cWKYu^T(C6D#ism4xyx*e)CAS~qla za~%vgz0I1MKAa_Y6=}U_2R<045&VO}*##CAXDd6=YQ|+N2p5G~*hMMqYAo-E)dbaP z&gFcOT$RDs*tSNjAl4pL+D>k3hi|<>chvoW2BQ@qL(?Mbghu-YctPrHwYuqJwei!r&>tMXt?#~o(sE9!qV@2z}F6kSdxuQjvf{)F7 zR;`%c(C%}$*fpTOjAhEk`s+NVUG%ATa6+npt3cdbs~;c>;Q1ThZRnFcYS1DnWXX6~ zlq^7ipW{_^?ew|`hB$Wh?o_$Uv9WEEDmxYjRVfbBlu>n9_;BECUM?GHt}ug_D++Pb z&Z=uLtKu5Pf|B@WU1=Jp8GaUAt~aW#@Hr9Vm0ie!ipl0xT9lN@jM#kXmEW$f4< zNu!Gz^O34y4x>a)vluO@*+(C1>*s9dQ7x&poNtmd_4{KqR~tsI-a8V7tDQR$Os;{5 zJ0kQ&=#0<@p*uoX2F8|b&2^0i>SoDFMvtPLt&|!+ipDO4`^ZtGTd5>y6uGL=29HrB zpV7v4qo_|?+Uz|lu+I+K;*rK^OPvcLv}Jx5+Unhjwg!69)`lHvYts(2b+EM2)(P36 zR8a|@8bc7mJa|P_K@~Mrs;Fh4in=wZqBZe~SRxTTH$e$5P+s3K1ZJNYKB5cWZXxGBQv|CN`rtJ+T z()NyeGbpw=yV8z0s3;C~_M-jsUDN23$$AsM&nzd?zG%H4?U`SP_AHcbXs^$B+8YfH z(cZTDMB3ZmllBhQXz#G4eBbb%v@;ry1lDCRLDe*tcFvZwXqPFuDedcmyUe!J4(?QF zPlxKXr>kzFgA?>V^y$zp^y#>s^y!@W^l5cLpVkiHpVkegPn+uk>fm|^eHJWD^!a!h zL5I{fbSMC{z@a`Kbf~`*4>BNt?;dKT-6MTz_joJqo=miRs)2UTRQc{Xf_Bg6w0ogK zyO(%qd%)w`14y|CW}u&soJ5DZ%;ldsWLvRsaU|_Gcc=Zq5wyRGgdKnNFn*}ECmm{> z)|x)|0I%co7*`LzuN8@XvB@K8Umb7S*N|vmW2w;LD2)zBRH4JQy3*lx9(1_99>({M zA=*2h)85ILo#|%2caDsrUGc%RtFK%_hZfhR!@MdTwwm~1Par7=JQO)R~4lGZD{K_<@B6I*^Du%SjvrEIVi*I%p>2L94tIa#;l(hgJJNjs-_uK0q0h!z>9dLW^pu?mc>>o@= z5*yQzMV0wcC6qqx-;R#@byg40fZ7nzuA0puqsYYK$|J(Z#vq|B5`uQFr37* zor1UTQznI<@*+CrE5s>(#Q3oEsSq-ps-hT9MH}fUKbNT-5qs$54Y8*}XS_L` z!Ly$UKsp3bq^Wq7A&o1wfV(stD8fI8hcKO3itvktWHhj@_2&kjTRNFzTxwhEn{Qi-3P zW1_PQz36PBiOzANb5O!NXS6BjJPd|&0Y*9p2yiaKAkI~{(z&{-a<0A)Ki2~FT6@wt zdjLPzMWb`wIX@T2)pPNvKTuQ74Mm$#q@Ei?;v4|px#_4s)6CD!!}UT7od=O{9!!+; z@CtU`B+(Rpu$&iktBdCcee%4RwruJZGdD63BVd^GCTRNIbw_ZzI7*?5W6|e$l`c*q!^J5=T%3zCoVynnBVLNK<$``Eh5rs1^*d1F z-_3}vD*f(7%J2C4((i#N58<}op+@?9Z43S0h%3K0L7kS0@_Q^d{Em6}y$9;`GVspM;txFYA2{It0NVFQ9LnO+zK^E-F$DP| z(FbshKPGU~ACpjj4$2lFe;KDgiRe#!GUiWJp+7Ao{dZMpvVSa?VEBIAAX;*R1UF{*vS9>XRbufvmL&pMF;bgjAjjPw|3A)~x#Pz1cueVgi^){+{y@N{EyW={}z^}(E{Ca|!t`Elb zP%f^I(CGSD6Tdzg`O`_cJ_~&=@Zi_62XBx@H#C)Q;M~4}Z{6MSw(%PQf^GyMud=4z z2uHd)S8qh)8ZhQYLxpZ&?ryX&@EfhsrY+L#Io-e<-sp_b74>?cU!agTdL#6)@*9AG zH*mJy7>u%E2qQVaF&gd1k#b`q0^snC*{XJ99_l0tx`}ss6X(E9ob5MZ!E+PBwVOES zZhD#dP3*~=fk=lS4psThss_3ljq6&dSJ#7XHsXexO*p^VhATILSKRD`vaV)vv!^%R zOc3H`KeQX9@SDSha&r{=ACGpEaj&W9YX%u^;$7TaOzO?0+;EE<=oZe{Te$ZvZ$YH-lW|2HSpU(M!JoCbGr)BZQSQ} zHN=3qw{iB|#@T+mAwpx7-)=_Yc1y0_j|`(#rYi{mF@%>#hoBB z+yOpwr@E2u)JA??lw%LyX^8S>R(_|o(C)PJraK^g@ANYBJADP+8A$xjV6+*Icof1| zO}R4(<N?{zU5@AX6sSbPse-93=<_i)DEn_yG#O+!2vdGpcVVwLVKC;k_4 z!(TXK{<5j`m!~HF0>1c{KPi8K4)`k+ea!cLur}`3!Zn`%eglL?#P8#*xZgt1{Z@!$Q6IS0 z{Z7d5qVW4YRP}yuE8QQ&#r+|uKLP>x#{IDf6O43!3i_I+@%wj|#DgBFm%x<= z{ZKZTvJ5T9nb0S1k~wA>fZwu{x{CNzegh;&-vezN%?!4(egLm z>qAC{hZz4u3-O0I_a1s728?)EiL{5oD2w3quqMiDBj8>Sv1cDPL^<%6hj^xkEme9L zi@2ScKkQ8E!)~Y#yz!xfn;s?@=^^IuA@=M;yvv8<5GD%4!>I=Ta31O|#Pu?+J|a>c z;r%_ba^oW}jUEA4eH2QDM-jvy)fD1U9ZfuHh`5>Hk6IHwYAfiGohy$zAl;SIqwc65 zN7|#_3V$?Ep+`f>{0O@Ej{u(@%|suw5rCgR0*rXHRH1)>v-|_r`ajsG|Ckiz9~<&~ zk@iPkC6rYr?Vm96_$P|ge;RArKdm(NpN=TQdi|#t;@(XB)0dQg1|ki-4iSAS048_D~|`GzY)j>E&F(~;E$&x zo+XsW^A!Ggu@`^B0_h3d6+ST&J@F9y2~6^y_z`~+r0^%926_^Xbfi$8L?K-l=@?E= z8k*=yQ`B#cG(L9wq&3N`PZH360O|}@`IDiDM;PhJ7=@mU_oFA% za6JQk0aiW1oIhEp(vw6|p8zL+s&RU1BzkIA`BR%lPvJ1`X(b~)#o6#Q0--ABPouba zinH)(9n`N!%2TYjr`WSko8!8bsyvPLrl+0J57zlpypN}Gq(1G1cA&GL4nSMrK2L`u zJqB$i2>ukf$U1FqXq|h^k=o#pwXGQ}(vmgL}e+E3|SpbP=LEP{x zl#6FzwmrkTe^!^9pT!_<$!*VCbN&qP;aM+Ip7rL+vwmnZ1lL&S&qfJ)HWuy2o9Njz zg+H5V;LqmS=ox73XE>LhW1l_8x%3?Pz;m-uo`Vtg+y~cyozDY_Kd&srbKrT;Vd(z6 zriGrzpiV zJz;j;!A9(>h_XY6W7ojM}J9!bM z7+%!Slot(A2Yc^DO9bErFYG3I(V6&*u3UT3L(mJrnHT*?yuf~VF%)?tQ3rGXVlv`s z$eY2%i#g~6G{cKUns||@@PA?1{I5p*Uo+?bf=>C@OQnDPi2e=W)_*IR_`fv_^lxoN z{99Lue;bnF-==5-8sgvfR`G8))axnuzr7JBFyp`dxbp9Cq{kT5e18Bhth1NVf?n1o^<@kxFPo5fiGBAH^utTLP+oT6+DqU* zFXNHlN98Z^Y%g&pyc{9K%h9M0TI}T%g}w$FC}p=~b{Wy^2!#E6{(h8e6ni;5NRB<>Hl{_^VDf{;H=UUO70u0qry5u4bUu)p1>m`0M(p1D@RL<_f)Th4MDYYpc;~z|z-X`@imn{5Y?3};psn8n->LzgGn*m&XgZ1-fyp`TeQAcs2Ah<3!!7h~ zET?zl1%EfuMDKvZyqj*Ock@tZfmys;%IQ6PlD`LU>OEl5d!s?Tw2>vyh?0yhd$i$p)c_dBT+tvs~>>7eVEFX z51`jR%u(sXA`^W8z55Xg2p@&2eT01EBlhJ-z@Lv{$P4%2AAxIptRuw77)|{MeDz}s z&Of&DT1@zZlQJp2g(hWyqDUF$E~v_p7v-*3Q<$WzO=c-U zv`YyJQOfoj>UFW;5-(js6B&8^+@%BEmxD=_a;UrBXb*G>xGd!?Jc697;BNs2iLXJT z1H2pwNf`cs8cBEsL&`!Xse>~t^*}s=9&A>m9*)uLQSMTp*AgC3jZ$yGRjIec1L^>0 zQtt%c_j)%o{;(sY-WOxh2PjAlQjs^zT`3*3K;jrdDM zGZzSa>EfhGmx>Nt_&knuc?(6l0^FBin@d-yyPkV!E=WbB3#6}f)xgkPweW1Nx~eK& zjokHGxKnN1U3I_`b%FGhu3p?CUG9bC8fq{|*C=k2F5t7$_l9)+tf$ zY<1G&8#?Mdqsn4bCyp)al=yUBg{z&nK&|sm3Gf~;-p=RFD(igB4Ctz)BQ6~gVB%ZX zv?&A_TGsUmQ>d$+%3Yf5U7ssxLL$1>0IzEUBG82~U|o3EtgA&yd?D7wX4Se_p{?ti zdV*7LDy-{L8O?5~;2|R4^@IU-y`-6&FILRW`z_|K0+hR!KHO87J#NfBbI(!Ue8}!z z$kcT&rI{NajJemqRX5g%@d7`wZ6NO632J=KM-um}xeuxIh?<>%)9yCojS_vIP_ z%_#RxCGRNtfDySLtE1;?`%)wP~>fVl)>c%~2-TUScw3ZNPGIdMmbe~dihN;&5t)teuSvk1cWNOpTxC}=9L zv>u**ww{fQt!Ibwb}~PD_NWDWUjDmVP)<|=<*dM8m_gnRB)g}b8QSwm$yYF-N4m~~ z)nuMZB+*j?01t-)=9vYpJS@BBnFj|wnnxaX+~!#V13ZnBsDks-JYRsCXC344Y=Xp| zZE7KeJUgco?43+yoQUQ*tjfn!a2(a=ISt~T^J2~_1L)g z$phhUVY0V;7Jn;POBHV&wD(H&dF!DX-|Z7LD7lzEyvvw4-WBxWU5%i7*QpBICSLkf zfbneJ7RKx4sE${$)t1eqd0XkodqS1Z(y#YCgYjOfDmO37sd;as54?BP42#penDFMs z_A@VzSL@}E`>eN=WUsVO?_}Wh&Zr>xgaP)>pHAK~n(-YA!CElw6+--jJISrcMsJJS z9)_^JtMfL?q+*2|)9y_Xcb36j0--p4_Z`S4BOR>Ir z^wzfk0DX&?27Sxuqfcu<-zwVnX$|NTR(%|N@w}QUw=ggJc7ssgQOMMHOtA}4x6j2W z``F}I-%Yi+qkegh*7`bX2wp%YKUcfVUy1PhIY==7bXxc^Y0a&ggLq)6O2yDX6Yv6f@-47l^)@n?fNZk>-bD-S0;|A&B@e4!E7%9vQd!`P z^3H)!0MCg9aEbBKx**>~iw5u(S>RDQ|4ICe(*ANP_w(9|_2VA1etam_KMfN1YYz6$ zK^Xd_!uuDZ6#5%gx)RCh|3c09aK!qBTK{Ii_it0M3(oZKQ@x`~egl&IY%Hz+oZwwl za7q1MQS3Tn>%XN~yJGhgh|~QY48Q-S3OMw$paTHGQo0OQ0yKz2i)(VwFNmwh_}frQ z>)~o}0jLEfdO>V#3pOcO?U-!AFCcMn2crz`0kzCnxmw2 zSg4_*!a_^IAhZ%Kz#owiX!Q$ifrud~)zEI$ld&BV{Xz$olzk97rjCv?-q0CDAS9^^ zT~=^afeg8j?55Cd6mp1NkA*rEJXW)(DEJWG84JB(fMIU`^5Qe=U|8%9i``-N?iSX5 zAv{|FE)xD~1EAq~wUjP_Tj53!53fL}hS$K4aI;D`um*%>nTK}@${q}x@Ikr^A5p2$ z4WEP+;Wp)6WU_~G+F1B5$|L-+vdY3QNDh?3oJY)ITx2FIOJpv(FM^}WB1=@|bFhr8swSziHZo(*_is#xg}*5)mARLnBhkoRfUsME{B3fw3#lW>zM-4?J8&y zsNG-?-6JUb7)SJg@{R~VE9B+zCz4WUQ5nHe7jhAmI7PW_WzoA+fhV&nD*1`N0cgxY zX{?OOu?psCtcqd9c;DY*Gmz!jTqb`^yUduD#MpB95tGdsTdR7T7;3BqQ#!Vn2^>2D zM`PMF#W;+x7^mGZPbc5sSnVhM&+{o_MJ|&Lu2a zidZD8VL%eMy(M`T+>-UsIVr4?i`aD~mtvtMzf^JqZIfK3vE)`zOSXVPQqwPqo7R#? z!9FR&ILU1XOSU1@NeNfdr52oySQ3|_C1toLIZU=BUUW-7Q1D2dKNUifwUiTmlfsv7 zscN)usun0InHj0sEJ!I?uBrLh>?tjnsih1dwGx`9WWuM`E7*vXq&Rf6)E-12bpSf2 z@TVH@&Jl3BY^gJ7h7{-gmXaDxU00Vk6>uJCsRzo#qiduhKS+Z~f^@E#N&d|l$SG}rkoT|t%fWO$wy8vNam z!_pr^ob((JPfKN_r83f5!P9(aVrfnuEd7N_H^AhyZ2L4fIxLM_&C2rsPUE{W@rJtf&)6Zdl#zB)zDQiTgn(=42e#9S;!;8$vbe9p6GV?({vrw@mihZVn z6?DQ|;p8o|D7Q{6Hh^w!E1EkeLnU_rOmp1F zvD{H+SneCNOiuGEcMf9bt_aEvRcVLpIU$r2HFA#>JOQEHGXd3BXBZE=4Oc2wL)+nx zpx?3#vmV(kqd2HoNFld5f4 zN@w^E+l%4*0`Lax^V&P)<*&$3aZI)RRJ2=u5e&^YvUSQgsX)^rFC!OJ$G?!5D>VO*5#^s?8{}V-9N|x1Y(xv! zNUf3_$=S#Z2r zCM05%YZ5jp17`FvlpJkUOv4)G9t_VOsPa|R)Mz{Cj*6F~kI?_4Phig&pRd@MgnFzN z#XBamWo#}TjmfnzroF@1vc;6HRzWjs?-&=cY;2=SHv?*nGa4Jy-eydWpt0THJa(Xj z*zvL&8*3BfYiPGI&R%WoJ{%nDaMF=h-0@QK#w%d_copLqmkBUF57frxmmL30rJp~2xzHfF+eveV}ey?jr)6X0>!Icl2m`}Zlg|KvDv0_auaTBW* zlh99ai^V2dl>7=%6MNw`A3!wP#Oa@HcN*Vh61=f{6gfI(+eF#VzusftIULLFyRRKK z$-e7wIhspsuKoU7S6OrVqVbaZWc!0RoG<(WE8>d%Vz$e%zQo?zAHH%qHYoB(uUr)y zOJ>_2zj7S6U(Rq`uwUN9KmGka$9((#RLMj8{;A8c=@G#HT{$`)c z*;4YY{p~}C&9}d6bvbsb(%(ODId_$;vwwKt=&<*VuCiUfS86}hGrk`dI2!DS1ANbK zKiqLScmKB0e!WXge%>5h-= z$19Ep_TwX$gIDU`+HbG9s`r)bv46hiSYsbnLh=u?$v?Qt>r9t(?ZXSlO#ATKxz~PI zrv|@kb2;e$t^Es;gC$SwU)x+|2cPj^;<55J`?u#M)9t4dl~!jz-EcV%O;p&wzp~-| l)c=nvmm{l&|4C#>k^dr+Q{=yi43}7~{f{F4b@snA{|_{wc(?!n literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniGB-UTF16-V.bcmap b/public/static/web/cmaps/UniGB-UTF16-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..51f023e0d609798e72d46bf41309e092d72ccb07 GIT binary patch literal 178 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 M|Id0?+kYqj4{W+_`v3p{ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniGB-UTF32-V.bcmap b/public/static/web/cmaps/UniGB-UTF32-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..ce9c30a98541e23244876fef9dc67c2639fdd746 GIT binary patch literal 182 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 W-NpY7&VvC#?^62*GzIJ*TmK)sASzq{ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniGB-UTF8-V.bcmap b/public/static/web/cmaps/UniGB-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f78020dd4028d56497c44b7afa94985f0d18f8ce GIT binary patch literal 181 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl?xY(U;%1@i;UxH|VM5Yq4M+!U_+G%+;v&G<;s5}C8#>Vd literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UCS2-H.bcmap b/public/static/web/cmaps/UniJIS-UCS2-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7daf56afabf65a4707d7bb06d829f56b247c9e80 GIT binary patch literal 25439 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UCS2-HW-H.bcmap b/public/static/web/cmaps/UniJIS-UCS2-HW-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..ac9975c585ede6958758980ade161f687d40d58b GIT binary patch literal 119 zcmZR25agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9BtKtsO>ygO9pkUpY R&cJYlpFy!nMUA0J8303WB^dw! literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UCS2-HW-V.bcmap b/public/static/web/cmaps/UniJIS-UCS2-HW-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..3da0a1c62f19f720590b54fc1de7b027af100945 GIT binary patch literal 680 zcmZY4T~8B16b9gTW_C-zEKrO{Xki;z^rld0f@uiR4Ix@Y5SLOB2rjVUBlNpUP=hJZ zdv1(>g-o)Woy5N}MSq0Xx}bOFeWi!YTCQwVdLmXyM5o#>UP7ff4B)v+t$V>7V@)mi{{+VJB9MW zeBMkKX3fd;b1MvOy0r&Plg#y)x zX}a?kEYdC`e%><$20DDP28u4w=~n3;YfUN!NqxPZvI05?&-otvW_;5=!}nylUyt%< zl+mDX_+Nh*P#INNtw$dr{1ChXUIIS?FN4>>tKfC;b;>uvHz-@HZAgi;yP{& zWD?FQJ`$vs2>#XphHs|;qU{Wr(w_ML#!@oBh)Y#C<^_Wo0+Cb8kt`GOtNE+q)oMTu zssZYjYJJ(5D(B#;5O*QMkP8rfkc&*df=E%h0uh2pKo%j_;C90e5xD^|3b(hWWz&#b zRBl6zLD~>8BKP4&Aj^y3Hq)$ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UCS2-V.bcmap b/public/static/web/cmaps/UniJIS-UCS2-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..c50b9ddfde9da7ebb2f67eba68d58fa2cdee902a GIT binary patch literal 664 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 UUp1g87AoR8lAx!|poMAw7d?}<%>V!Z literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UTF16-V.bcmap b/public/static/web/cmaps/UniJIS-UTF16-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..70bf90c0efb66da2a7aa19a820d766cfe3ef3183 GIT binary patch literal 643 zcmZXOTTc^F5XWcEIeWU@mZfZql}p1S79^z5N>bApgDXKP7qONqiI&*X4WK}=trCdA zkfrgJ7Xyht_z`$)Hfb#%WUGFXdH~!%YTOcem-5?-7jsfZ&dVHA`y+;jYbo? zQ7Gn3J-uJ9nA>GNxwBR*?G{V9idh&}jIAyGYQC(O%(7Yfcv(!FranHgker@*nx6Ti zW_C8`lIcih`Ee{BnKjtpNi`1=Fpvzl?yF}Q1*S5f*3?k}2)KY49L}4IKaqoG`Qku< zr2IqQT9x53c5B3YqmOC9#u%lIM~wufsbJV^KOvOJf`NbW4wool)bNDEc2OJ?65`;c zpP)ef6jJW+L;J(!l8eaH(1-h*q3fqC44xbu@4*4W;1a^M^}xVY#=%>S0%g^S|2rMo zWBMgv;0XDp85sT1o=4jFCtG%qf;F2tH(%3e%$v{Ku(x8K?N{7}7y(CCw>vVo9 z6cU=DzJBn720cg2BSyO~0?>^#LgnI-v}~-6~Uex?ZdBe ztS?FK`WnG{_A@qTSFu5??_F4bl~bcPvGuOHj!xVoIWwF(&yYCF9G%yUIC+ZBhD@9a nq0Syd=MzEakYUSZoypkR&at6$Y_Fabu${D4-0ek>+ADtn7bS_K literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UTF32-H.bcmap b/public/static/web/cmaps/UniJIS-UTF32-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7a83d53ae70ca3d81cda827cc224ec8c5efa4f17 GIT binary patch literal 40539 zcmYJb2Ut~EmM^~c-shZ~$r(YC1Oo_&5#trJf?`g9ihv*>q9}^=K7@O@mz>k(l0ifS z)UvANR<%~plCGZauV>!8o~{lvRr9*0EZYi`yWh-PhxvcszbLuqp19B2EBw}PtquLd zA!9+|&7z#F?BbxV@58xgHq~6Escd7>ffzP~jUl#jpb@K7?(tdg;?8SK>Z=V;^3)NQ!U8(_3@Zx>>%HA)J zczv0oeF5Q1!lI07JP`KhDA2;E7va-2@KrE)!70$C2H}Bd-gh-5LVmhcei|ZuTBdy= zg=~1S&gaGIkeB{WFSe=WryI2V$J>4{mWRB!?DxV=$0t0ws7sB(Yg7L0;m7|u0*_zv zd9f+vMXq16(>`sE3;!Wm;y+yUOLlp&NzEtHyw2;sTB-f=ve%b>elH?J{Qdm>mZ6{SKx|18eS)yv(>(~D1Bdg=O7{ZjK%`%?E(dZ}7C z`Cqu5s`y0iIzQ#LY096Ee--dmNWhonUxg$`YQItm!k48+Egm`h=VPz}0>PIq1py*p zC4`cqR2?44`}1ly_iYgoi=27bSLeSvXH<6H_=^khSU3#3i3*$vUk%(7JmJeV@a4&c ztIU61w@SPJ%N1YVj^};YMD|Nav**0v0DqffJIgcExLt!5zu64lHpV8UrVA z+o;KdD#Hd~E&?#M@=u2kQsE_Rah~T@VCxnW7QwZY5!M*^_$aB)CUrT`5CjK=%4o8l zweJNPf_gKlb-BLkf>d=%*O2M9XpI7t~_RvnE`sf?l3 zo3+(9d@HUSH9NG6D-Qxg!KfmtMT2B8UjlOpchOcZtqI9oWdKUmOi%&y!NL9iKW-J9 zJ#-qTs&Mf;3oNq2-C5oa!WM6+5b;(O_`gc|jh_a2om^_%ic|87&(8DmyURh#L=hgR zPk4eCkMqELE&|4P-MyrT@QJhyF|pl2!L=6!NmG&HHF4f);-ueD3AllFb%J&zd$krt zWLOo9bE#exLl1HZ=SToiC0^Xd-MKGBQ)MF55Qv}t%tt=lP59CtClIwqG)&jM&bKF; zi*iCdUmd_V8~Gw{4q?8)JQE{(LQQ^VH)95lwDr$8*Hi$mrvN;Z@DP#<%#cU$Q5q2C zDAXo~+Y&zmN6BuY2Yzm4sCF$`qSAvW(}M>IrFszX9^TXq451O}RfX@~uF9p==}v4# zRqmPU9lL8!t*8j+@f9T-5-IqqHdF`QlrwpPdCOr|Vc5&p?ZgQSqx;zC;DNzG|!TmzME&~TLSjnEK78!w@NYmYFV zMj~m|R^WSu_Uq8Hj>aI|+!VTw)8PRV>_i=0H!p0MXAhpl8HM?e$T3=)6IX_y|8dHBIl`q0Wp?%>E zn@xra58A_eeS7mCy7q1BORYLPoxe!3l~wKP%$Nzg7t^w)`;ci>{~~JF43<=GstAgf zPneP`g)L31S`w|ds#fxu6keA)lEx!jS=Z6Mh0U(jTlpu)`LE8Hj`ycGtf(n&+i5xW z(qm}F-OS05URTEfN3!F_lxTIW%-r0txBb%Esxy@_Cae%0CU-?#N znA8o~m61=PgqfWqy$2qGO)b9^m>m`f=hf*8F16dl|f~ zh`(d3Ui;UJgpW#^{cB6Dk`Y~V%&+?H#5_!cf7@mFS2Pqg_l9p1aZXLBxP1GMC9qVE z|Ce;50I+i9@7HU22H`FlRPpgE6aQ=5d5^Q6scryq@gF9OdRACw_B4lyI-TC&mUq*6 zIA2kixPu@1D+7va{AJd#fl*ER4JR;YqY6 z^qT0|J-{7QMzp)Q!C&42rl?3f`{2^kqW4a{cTy77qC`K^DZ@E{8V0>i#JbEFhv#@a z4FQuLL;|7*^9MDpE(ZfO`GLtGngmk0lv+1ala_!a3Tk2s1wZNy)*ZMP4~JGR2g}U` z_g0{hP^C%$N{lX}w*y@%VNU)(@Wg5Q!5T~nBJUEVm*B&gio zB!RElIhph?W^fhU);h=J8!P;zThTl z)L{a5i@p=RO}=2115{K+xA&^lz2V-xi0jJqg7fty2MYqZ))t?tM>SU2mbR>`3a(nz z94fav@gK{ow)0;c;-AM(9^wBf7?0v99@c#@eiqtupnDPAO@_WWp|OOv=LuCgu9Hk?(?HK5@!n||@rTYV=)4H` z7PIODP@xA~5UnkBvc?mOPTP}1_(?K)2``pags+3fThO{5Y#M0PliE9U@)%ey5C+zR z^u8V#vHL@PnJ{((s*jU_RIrx7ST^bR6xt3zy_U#c$}m_*xmd9nDgvQXAZVp9x|>#S z0n1J@u>-BjoFKIA#ZQX|v=l*2DAe9myw!olZ%?8JkOQ=GhQ3N*a;B?%Aq)%{Y(jvT zbRH(H5#7;&C|-R8~;c0%V z1~2+;mCHLWl-s?&$l{+Kkb7gAc1*4@N_gZ=zaQLNN2*FmOA2e+3PZ~khj`#MuRe!5 zXxl+-I~5mo;A=j7MuLT#{kiMpU#LhdbsMxATLKCs?UTw}85+gxQN$zHtrB0Rl8 z`r=(th!hl+Nsi~k7v$C`xiwO@l<=RI@_)?zjrtEexg(m-9jw>!e@`*0@U$&__#)m* z?z%>0e`rBG^T`1i-Jpc$Uw#`b4kZkT>BG-8EPjf#GmaSTO^q4$)RIc%rYkcGy*XN7) zr$zkJ0>wopxA#XAXF3`{%&yez0#)&v*)URj3eeGYUJ+}2pxsSf6+?Rypdk<1jSB)_|#%S4? z7{vST+%KJ5#9!!scT>r3Q-b@qJu7{MGt+!wsDMAe$nC_*An%qB^9{T|(zqN?SzULQ z@&lS-0fVUoQ#Zv?KQJH1ZxUmqX|cNbiZtvZ+O`sNBvcebYXlkDA&iT3To9eko65xKB@Xbp2CYH=c;)~ig zNNS0y=GH4I54F34EsBCLr6N;WVk)2?2fvm;OipIa1>(*qvErk}#RA zwrPmXMZpi`3Mm$Pl1R^Xb=5l65uw_ND#-*>e8EBWcWN9DG6NKp7@zW=d}JB32M8ms zc+!ZQvn_zktYW!;b zm+k`>syADr zGBlooHZ5z}&xX?p&;|y5R}~XGc;VR|Wrzn;`N#(H@owDp@eb*mG?-G0bBE!(G~FXD z*aC&mkCA7a=)GOSTq=H5JmSHc{yY7l{M!`%v-kmLc>*O%?5pi-%%SEGV=x}?XgNqK z;-%VUWMVrJp}GXBuM^8vR+YsXFH#ls7eIe8RL6pRNvzl|b*Z3Bg5DFf_c&>Zfd(I_ zJ*95CBXCzTwv3J~1+%lzngFIlq_q$l;%P&i;>{1*p6v~S0G{E@(~VyEy_1`K)Ki{h z%0mNMn->arK9+uyjz;`9!nuP}-rRO=?5aGyPwq_Wb8Rd&9>z!f-|hsc+d&%3XpI57)x@$9>dK&bD`t=r zmnfy9{&dufRv5)DSE*q=RCo{zC6za!@&*Iac#t-x(5@&jZHCI-FcJ;@-XO0~H3Bqm zqwO20$N TSv}^!0%Bau4|_Jjy$rZ_2%S+!ysBd@ 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UTF32-V.bcmap b/public/static/web/cmaps/UniJIS-UTF32-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7a8713539491f51c52ba3a1525d181efd32c1f0f GIT binary patch literal 677 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 Zk@2$oe=xv)=QA%Cm7k5@(*(V9{{Wi~yy*Y{ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS-UTF8-V.bcmap b/public/static/web/cmaps/UniJIS-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..808a94f0fd9c3b3cb0267e5cfe4dced2e65ecb1c GIT binary patch literal 678 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 E-=u#IHvj+t literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS2004-UTF16-V.bcmap b/public/static/web/cmaps/UniJIS2004-UTF16-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..3d5bf6fb4ef94b452ed1ef0df926fc2bee55e973 GIT binary patch literal 647 zcmZXOTTc^F5XWcEoITxcODS8ha%o(|f`kCAn3~2ITnS3Kh_zHn6k?$pK!IXgB@lxl zOXDjq1`>VnBk)KzX@w86RX<5RfNy5yQNzGM`wl2!b8QOsDDF*H1#8XJF_8ULea zH`gXp87XylFgy1+o*0}kdG}#u2^8RTl(-T{8I&ws6x>*3k}QSDJJNt6yp{mv6cOqJaD7jFxN7$?&gjXDK+OiIXu z7k-$4LIi1V^r7?NV#&i)GL7D@v&hv`Hii#(54K?!p?enL%G%+^WhTI1i2?D-@c*5r zg#-H1YGNPzrJET0(U?m6M(A8WojiSc`a&qGB3Nz1)JIxtN{bFn6wsRVX6RsHQthLu z(MUvUMmoD71Uj_ubDtb-J8y+H3@RNIhg%{b7{-+#YC_?<=vV!H{q~XnJ!)ofBB&Rx&Ty_M)@* zHG$Px#amrwSY7yxXA_H9WA^tJtiH+xV%M?$uCjt|!l$_7g4}1w+&O{nYtGyyLU&bV oZkdt0&C&hD(B0!$_t?iO);Dsz=L8#z$9Zg|?0Iiv29(D9Ur3XRZ2$lO literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS2004-UTF32-H.bcmap b/public/static/web/cmaps/UniJIS2004-UTF32-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..09eee10d4fb4b9fe1e70a1ee56825a207ae8034a GIT binary patch literal 40630 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS2004-UTF32-V.bcmap b/public/static/web/cmaps/UniJIS2004-UTF32-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..6c546001331cf4f2f68563229f994b55730dfdb1 GIT binary patch literal 681 zcmZXSTTc@~6vxk*GdtZbrIZD%TpAX!R6>9P2GbaWxIrlwF)r063Q^h(pg^&$5{SW& zrSX*)1BpKP5qKn`1s-L7z!8bGc&6%9b|D2f&{eEudws-UEt7}DLB$0>@j>h8& zV=|jtu?=gtP_#D-Msh2Y%WvoMZ;N(zNSoZ)Fs||oM&2&i`A>DHW!uKk@LbZIdTLGm z(NkONGf7KI-5pFVJ{}t#oHjW?&rxXw6yTtkegGp>PH_Sr zg1l$QyhVZDYtFnCLT^oFUXhWv!_oW9(A(!&^*JXhRyQ;9qx7C)ZTTdNwWO2w*XBW~ GrT+p)28xXU literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS2004-UTF8-H.bcmap b/public/static/web/cmaps/UniJIS2004-UTF8-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..1b1a64f50d204b03ef0c5575233687830a1b053a GIT binary patch literal 41779 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 z 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 StUu@Nr1Glp*C4U(!~X!6rxDoz literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJIS2004-UTF8-V.bcmap b/public/static/web/cmaps/UniJIS2004-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..994aa9ef9f50495a3ac558630b0234680be23c2f GIT binary patch literal 682 zcmXwz-%b-j6voe)ncZ&xP+*Hz(8|Ubkr1F5gEq#HZUa&TftD%;Q7LTz1&VEjKn!## z=uIJ*lt3aE-gw`5MK)VT^@u_4q(qZw=&r4_igcOe^qVeVGV=x+(Iywja zzTPLn-aqxB#km20(1^O*9vbVr-`?-VAGzX?%=C|Y+hO2<0VkXF)LuTsC@?z%y0f7~ zfPe{z%;~A`#ZeG^0V(#gN*vo=5JBP^5)md8@17Nw74BHt?5T3U13;5)R)_2tZgHi*Ph2gGDy7G|gsSPOPV z=E20<%{DMJ?9j6*R6T&|J%fh^4-C8pJx)~L2t=JkqP{i=8H^jOD1KDe)4!H6Kg^l) z(**OA=?yIQZ(hd&$^9M0{6yGZP90+D?ZFIc-BwQP<*7D;L>uE#d%=hnrl`#ds3jF2 o)m9j49|&se3`?fmseq-0Fw=K)Sb3Q)N3i1Gy<)Bm0aqFS2j0}QeHI+_hb#t%0 z^sD3GC; zUAp1EhZJd*5WDP|h6FltwGN67(3xiOfz+ImO_Kb2J8i252+IbZ1!e;?0WU)R-Fv-F+$BYGcZ0(sh`VKz#}v0Q zb1)ruSMix3xkT`{1~KwyQW0&XA<3=D|8HzL{fl^1fook!;KLwddO4Djcz>% literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJISPro-UCS2-V.bcmap b/public/static/web/cmaps/UniJISPro-UCS2-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..c148f67f5e9fe4a108519eeaace89e708a51f8f5 GIT binary patch literal 689 zcmZY4-%b-j6bA5bW_FiuTM!Bnkyf_RMQ;j~CYXj0-H=905X4dtf#3ogfzW^3DnSeh zf!=dtd<`$jB)jQ6$SnF0UgLt^nUi16nQtbO9QO0=Os#(8?tR>C8Bg>1Y-S>x%^TKE zZObuAN6nT~X&S}qcFnEVT)XA$j76=31LO96({P=p<9@ygOO9iVjn5Tl3iGAHukLbn zZ?;&+XyjjiqN$83 ztkG*eBzzyd23`R_0Iz~K!0X^H_!{LK;Omrs054Hq24AB5olVSX$`2QH^9BEO^J^E4 zurMqVeq!sRNpw;`XE^jAlsqHo^j&NcZ$Z_)?eH)U;%(UEF~wEF8pFA)5# zA&lHk8shCNn9?5q|Hf9bzll#(c%^d&@c=|lF2-_9Braz!S1y+|HKJuo$7=?5odWhVG zAA_ty)*%KV8xSeTeMpze7Gx7*n8`y36Y?0o0zX0ISNL5JeMFwXk0YQ6Gz5$UVR+Bh za>oebKoAQ>LpmUov+oh&ty%hY%B!SO;r^-NB>IuS(5Vu$=ykj^N1_(Fz8@6+0LGcP AI{*Lx literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJISPro-UTF8-V.bcmap b/public/static/web/cmaps/UniJISPro-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..1849d809a679e56414f4e18dce8ca3c41109e84e GIT binary patch literal 726 zcmXxgT~8B16b9gTW_Js1`H(_H0)?8W@dl_~pp7wxk}41c(hm@UAPXCT&=0m1f*8^Y zB{3-mlad&NSH?>dZcLhy-E{PKOwsKR;4io!X7Xgtyl3WIjPyG^kW6jr%P*HQzB_?{ zzx%G=AMo`rCRNQB*-U4&c-l9VSV-!rq&}a~7JFR%tE;|?`)Qx9r8Ry1Jd9|Xucvop zXdpBi3H_;$C63r${xUo$uOdTF-gd2JtbyKP`36C@+uU_ zP=XCs_N(z6k~^P(XMem85@^@%6ewyyb6dIiRVlB_L1OJ4p7yB@tC%G$0K)Fs9@-w* z`fZQGtyZzXo=}O_+PW_H+YUvdvZPVf^yT&uQ_6j zDNbX-K8=DHv-Xptw>b3#+p5_kV*;-Ua`R&Z|5h7va~Gupb$LG|Ip6!gm77A>WlNQ- zJKu>(6&R5Z1K^z?qA%>O7IwI&G+df2O*oWV#X-%u-drubS40S=0^S1df*1jBh8UH^ zIQVrcqTo*O4v0yJDVU8gokYxl-+Y&3?q?y^A=2ROlGp&h39$uJhUp>V4a^$wCL*?B)}caCaiAiRiXC249o79G zsMG-!x6Ng90$e^8gT$B)I?ql%8*#7K{tj<$x&zJdplw%n2kF^Kp*%udL2`ETsS^4N DWh&!c literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJISX0213-UTF32-H.bcmap b/public/static/web/cmaps/UniJISX0213-UTF32-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..a83a677c56df6f1ac395d2ba71e60a08b0985e97 GIT binary patch literal 40517 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

ry6~E0z8>XD9~7$zzTJUQY|Ybl zQEm&$r@T#>j>5#v_#DY7uZ`Stu-ZniQR|$L?<86yEHEroO%wV0q7_B&`MB_3F!*R}}ZDRaflm@~mVVH-y zT=b(vkD~5i5sDMbQJmRMdA$KcaBdk|R_`hLU1H&w^>f>F_+o~J4%9D5#OFO2jQSKY z0q4$$zSQTPL2(@KJMW5_XkgP&7%`*`E{yR8_dparSoi#VXaXs1j$mK@~Wk#K+weWi&-F@i`mnS{NiR*a&dP8uJ($nW5cNFqHFO4$}jE7;qX9Zpf|6t;j2*Q?q?il z-{7j~Am!H#7_w{T7!+Q9j9&|I#?=@+cx@c$=UOz{eQgRB(zR*Gh{msFz))~)6>7M) z8!x)HFB?TcDvDDOocMKTj@qvKVw$dpV5qN0?nW^Ur)^x12;>-ojtQWWjyN>GV;)BrJ2KJej^%ME)|gO04B;J{`54AK z_TwcThe3`V1;vq+cZOjWJ0n1Jos$K@BgPiRLRS=vI95dGYD`V%dVU<`em(_XoIzJ_ z8aepDO>fNuWdx@5<^;UvW;B?`%_);n#By(xi_nUji^V-lFuXU@w=#Zng&^gdXE5en zIvW;c*EIB}YZltymADo~3WqM#wL(J+yC8V;u0tHP!3NKW6%NJ96D|7*h zNPiR)1tYw*zzTkQ>xhPzb?Z)`5ZtNT8^hA=ix+l>S@ja{UVy5*7jckm_bNfX-Mg$f z(BZZbI}^X{i{ZXKW^ze4XBotFL%>L~RjN$ENvr(*Ck7CCLJacdnyB?j#o!FzW2oDs3 zr0<;)#Tf|jyw?}q>J3KKz2SJMHxjhc8*N>LG97f>yBsX4cMYbhH#-i+mN^XBzKd|R zcLR!}i73vXhCV4Bh4T@3HGY~wN7mDkt#o7~9oa)iAWh~-BfIFo;M}>*Iq+=!tfw}J zlO?cC7N1dkOT1Lyk{C5!OI|>2sX1^!{JfcdnPdIe$-W{Af5tKtg~P5=>(Z;svFEV!WbF6r!{jK!IXgX&?qe zj>cDB3?%yCpWq|8q)kcqH?HbmQm5dX*?e|3Gqc~Boh<+T+|2Fn=Qr0kibgzcFf zVhLj=n_IIDYrjymw+lvcCzH$X=JIcgc6Lmi+1fI$@(V`ZF4+0Krqi-*V{CjeY0f^i zX8(kjcQ)sfRysBjpB!CIJ(`>toihbM-${85BoH8(3V;!*q(B4(aA*1`3k-a~Oio#s zwGwb(Rv4iFTfI0qB5n-@ZgdMxua0nDeOOI!Zs`C60rxTEOd)#z**mhtnc!v%MF-p* z6(b=k*xbiC@Gu95F^DiAH0t~TVTGPgUG!`ssWRhQK=kw<;&tJ%rBFU_}ZEEE0s7mb`wDO?Z zs;2R9lJZL$m-Fq1t@&KTlAnp?PiF?Eh zF|DKfPGRl}GWQL!Or(jDAKk;RQ&?G&{FMyD%F1V~&8=dUIp5o{@+uRg$KS;I`|>(^ zQ!SD=D|7D|GA|{g_gXM-jia}rFt5nCR}$!bV(1+TtoxiZ1?$@x`YQcDv9WrV#YWOe L`x{R{YNY=HNrj7y literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniJISX02132004-UTF32-H.bcmap b/public/static/web/cmaps/UniJISX02132004-UTF32-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..e1a988dc9e80be9a0803e22d021b1e81fdcc5b94 GIT binary patch literal 40608 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 WYzZKilxEs5#lWzyu91adzbpV2cs2|G literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF16-H.bcmap b/public/static/web/cmaps/UniKS-UTF16-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..fd4e66e81f3507b190fb2986a26a45c1c380e302 GIT binary patch literal 26327 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF16-V.bcmap b/public/static/web/cmaps/UniKS-UTF16-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..075efb7054901b1022af68e723647769cbe1d556 GIT binary patch literal 164 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;$~>3>*2_)AhxfT zk9~fwLi5~Q1}+vx1|1$o21W)s^F|h%M0N#X#(mZEa~StkuyXEaWMbS`-#oX7aX+sB L>wZCNru|X?)N3(k literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF32-H.bcmap b/public/static/web/cmaps/UniKS-UTF32-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..769d2142c03b10680800b3b6ae883e27fe04c5a2 GIT binary patch literal 26451 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF32-V.bcmap b/public/static/web/cmaps/UniKS-UTF32-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..bdab208b69d287128195eccbd084c8cf4ca658c3 GIT binary patch literal 168 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T8=9Bt9jqG~;%025>*37Jz@Q+u zua=K}ey&3E+*}4O7Dfgg9!3U6208Oa7Mo;tpu8~SzUuiojQc8BIrlR%G488xo?FDY OpI3l&zo0eKeklND@-b-u literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF8-H.bcmap b/public/static/web/cmaps/UniKS-UTF8-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..6ff8674af772af896d7d33c7addc37c57822f8a2 GIT binary patch literal 27790 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

    UjdU>!C<8eSfmt; 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 XDie!M@tP=Qo=5R?GKGx`n-c&3T8mO+ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/UniKS-UTF8-V.bcmap b/public/static/web/cmaps/UniKS-UTF8-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..8dfa76a58eb720dd1992c2cc9abf1dd4b39c5a66 GIT binary patch literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T6PlOl9jqG~;%1@i;l%x@VcNc0 zKKADSxe6P;=Q41yFf!=yFfuSQG{%{?u-GKAKWdoFxUahTe-7im3Rcejj7*IC>Nk8Z RV%*Owz`9?sv6^YW6ad@#ITio_ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/V.bcmap b/public/static/web/cmaps/V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..fdec9906621904180f42bd5c91f377397fd6cf95 GIT binary patch literal 166 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T=#j{(sKmI}pOXoN*Dkx{jjaUT-^bqy(L literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/WP-Symbol.bcmap b/public/static/web/cmaps/WP-Symbol.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..46729bbf30f3b2f176492d907fb8ca3f6a1e3026 GIT binary patch literal 179 zcmW;C-wMG{90&04*(h8{xuKNv0%qLpa><2~3lnNLW=^QFb+%;wBoDUVIgjE|#O#wbv3o&3S`2gr-Jo93r6xVAssnXnw1B!ZT0%WQ!k{%%Po}{NAH@>d0EGtm W&}LiN6j32_>FyT<6+0XN literal 0 HcmV?d00001 diff --git a/public/static/web/compressed.tracemonkey-pldi-09.pdf b/public/static/web/compressed.tracemonkey-pldi-09.pdf new file mode 100644 index 0000000000000000000000000000000000000000..65570184ac82fbc478a403cb8dd64a59c0065eae GIT binary patch literal 1016315 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�v_)@^!rDg3@1D%o#Hk5G-tYeQE;I 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
    v7R`Taz^CF$7 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%0Dbq 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

    !H1ZAV|(6is8=)Ne!ez0@sCsIv8hxM`v%I^cdj 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 z zbw&K##+~-Szu$8M7mz8OLBw6F?TL;QvY(a62fD7iI^rB8z2+_ytYPC_Gp{6drmXv( zrf44LYe81;01?!0)a{Lc%x!?AMS=y!q}z(Dd?19S(c~B^mlZXpr{>MzTr`X8;-En} zr7Pw#a6#i{YX$E&xp;<-_mEXGwv#vNwq}M0pc=>B7gLpO(Q@x5SMw`pSVEF+joN=M zARbjwGJt4(iv%br7xH8p#NDAywmYH=iuv3*=T&f&v_LB>@l$em?ckMeeXy}Pn^BK8soTYuOLO# zujK?N-f4FE23NfgbM5MyIa676S=}=RIV|1&4qaTohCg9h>L|0`}d2+4(%SA z(UU{e^lXbO@n5?P?=ZKh+dNd2%(cam#I2_PNFapB&Y#hPe3g)4%OyMG{DxEbtKyrq zcz~A|PUDf1_vh!r?VRP&qr7OtwctiSE|j}X3v zEazyHnuAe=WQ8S_gcdaKkGIT`|TG3cnPpgN9xM|Sje1Fwk5D$sn zk{D$+AgD7iB3V{CzB-WN`DS}zqqKLG7PpW@mSsxIuW}#NY{6Lq&8c=Y1Ya7>0#Mh^ z3GQ>SN@t=XWUnV2e~2)dokUY!s%Dww{f+@UN80LHFkLGclG}DHnT?NzM{)eN!txqr zvtLKd3``kDe2m?MCLVI@_Ggpr$B>)NmP=rC7ZBoH;T}t+-t%}@2G&-!cuU>I-)FPU z0Do&|z}GB~rzJ4XmY{xKltZZz@d4??-^y`wS`~X&QGLzCxky5Y@a6#%jR1=8>;FUAjow4scExUW|#1%W?Yb>x=sRP|nG=p_ObYI%#~?i>?-wW6j)#3`QxvM6lBH8CSp(mGDj=(?pplTQ z_j%oP3hZV9ynU?uTgL@2=*jq7(ROn1>^f6n`{9dZbG1t4d zU5}*8hJDTpU)FM65f`_=gw7Mh39`1XO7yj3U>;MjEPjT$3;Jy^6MW1n*cP*5f(s~^ z-XGcWc-17jIoPVW?Dx+xYj*B*B$>4zYowE@)`rSTy|+VIC*!D)EtFMVT@&EFu1CJj zaah+)Wg5B|3o-kRmJJit z4kw@@*KMcFWk0~~q@>S2lNZr?06+cn!T7Ta! z_m=6z4?Yr=496KZbH7p6N-;4F%9ek|TfJ0UF|#H6<>k0Kx6e{n|8QNOLDB-U!E5Gu z!?PUsgV3!AtY5{OroET4qsqmzH@=MG>&^SX_>;r7^lA9vz(E;8|ESVb&NB6I~+o-xkLsZHZca{Kj7C!w@FVJ3)-11_k?`rC1_# zNNE|(?m0XpiV9AfJ5?Qth?J=0K|%Ig01)p+w0rSWK1>L!xxE5qHwSs}=3~0vsR-G9 z+d8W9H-wvf(w?wd(Q`kfmW*z~39uMAtbBe;CnK6xswypmG9$xHA!$gxVtG6437Q)ef9eMH^dhQN zTWR+zM;)ID;oJri2nl~G-8)jv-@u&F63`(Mf_;KnIuoW&NQ-rE^ zs>=@952&uE9nw`YomY=4&Rn}CtfSgOmB=af5J2hU3;cT=S^dZ?eM^pH8UEQlq>na0CM=M_o$OP{1bn;pi zpYSn)ift9f#>phSfDqIk2Z8tSTGI`f5mtQ)ZGymdWRNfxN3roXBB@xxQ**Zy1faj-L z$^wcUq5GVK;$co%VSMsD@~B+9aDGDO<4+ggFp z6AirET^ZLCIeAo~1IIU4UaTGUeP5Ff{@QWflj0a>_kK~Sq`Xa9>cR;=8Qg5A!I~{? zzt_cJXYKYP4xfAL#`{U^R5vvRTip5QfO+fcHq)%`_$m>+?@2G+3ClKEPpjhZdzmiB zUi7-ZNr7FYza6L_V)kqrBdQ#+R%wC#L}Md=GDgu!d-*fpKWoX;owUW$VCX!Mb}u2N z-Ae+)CcRIFO?BCulTHbvaR&YR9=_e!liIeXHw~K%r}s8OuIyyd3O$i9kj}CrIaZ7f z^Oi<)mMQu4IhP@+Qd;_ih08~pVKQb=UP@n6CzV*O=#n3I1vCdu6`7w@sNH#BRN3 zkvzM{=GQx`rQapWSdnRI=xigtRN?n9RfNL?@*5RocOOx)`C}-EB}P+a*@-`xh-vLC z3_E(G!kdR+rkknncf= z9V@@S&A6A3ZiW3se5VUt0a=NR?C|^Gy*2>BJh4A{iN{+gP|>0wd7%!oSi~}P384jo zA$!Mu@}*q$h@8OFAqorPQ0=pjBXY{)G~%{ISx7>3?ey6r5|byA)uU3AbUle0T)X>8 zKkXJ9>wCm6(YAI@dgmtfS#@btyO{KMthy%xAWq%MDuQM8w2dM2h3Hc~(t#*oF$YX^ ze5JDx^$n*Y3quNiM&-%&*ryt+CqK!-CY;AJ@oDBItQ)4Y_^BwjsT*d2=EhwXrUU8k zm4pBswc`Rk^`o^BIjwD7=eG!v4c_mQgeV+{4Y83p>X_9DUda?pKr|F|hld9FcKC zsHy#Yk1sM+^c0pvZ0x*0i~wQAx5d`{en_QQA+d35C){EcqM{YHR__N<^t7aub}ZcM z>BlUYySZkLS368ZR({x2DrX2#)0TN>ZnVn2mM2;|7siS_fhx|>E?AXHD{5!WuOmY~ zhJpzztuM0XdcRv1+L7ef&K0!lThRa3JOMsGjzmj=Pk>7%>4~gb8qoLdxBN0bf1F!C zZr>S#t&km2spSBZY%Kx1-x*TethI#kM2{-NDD~vRT6>OviqHh~ti%D2F<`rw8d1+R zjcQLNt=V%m1^jLRI{G{|L7QVcvC$?+8=h_2ph_czEK=7nt2AwxY35l3u+JrC)4u6d zgE^X2dubTe<1+T4S+l!nRcw^Iqd+2NJ29AM5DkChY1sY(lpqG-C`Mk)Qs$ zj!=9j=!8K;Z>5f(0A(=Z6c2hJ7w}D`&{BqV%50u2qyaVduq!qGcKW%3<-@9|x@CV^N`02TN1L?naQ()nq>vHcGIeq4A6 z3D7V}IO zqKE!Wr0UOK_>|IulD{o-owf}VY^Wp!Zc1}Rm@jsA-jJC zQ9(4L9QNC;I>5ZEb5tz67%=j(fYI#zE{LG+&SltYt2-!y`hQvPS?puwig7|Hl{*6L zhb=P9#nof)-s9M0Zs646F2R`|Udl{KLzC{-80Oi9c$Tu;eLjfebwWl|pkX@w6&OV0 z=x&W+_9i=w`YW~;mCxNFVesNA2$SpDiQgSB^yyjcscqT1y>TzzCy09YoViWn2y>FVfS;R;uT!y?s(jMb#&{dxaBkks$GjSbdNyX z^f<=12;}^=BN=XW4e3O9`lQ#NwUc>ExkLK7^C5e|E93%dXu2-ZxeA+9g7t&MLptQO z<3`;4gl->SbVcCWxq)!Ak)*$M=>@!fZ*F2eF#t{-y}UMvrFPBSb4(Pc&}N?FhQb^n z%#%mc?|aMzXRY)7yhc>3*a2X@ z`x;q$lY1LL*;aTkW!AAxH>=R|pn%KxQ^C7=3={e+6?Pe$vCoNQ9!40hvgBENB7g3t=b#!7WRe$-Q2 zqFE`dmdzQwX6*c&Y7(j6Lym@<^LRR_a%cS^G+CM9-N35iPL7Df8D#C(eqHij#uTYX;0 z!rrJvo@k+U-D7?bxx?E!pDW!OW-gDaXL3Rex79T8g>6Dazuxz-T&Ihz{;{QeZ(A-8 za*jW%=QvLQ$Nbx}n`dRT^IE;pWvpt{~+m-rxp0G2xs`I|q3*_yT8lb2kZ!?8z zo(wMXb+QD9x1Bi|9Teu@-nIi=h%p;#=0gddCzh$otXni{x{l+E=H0s8fnz;p%|#?FhpZX*77{0y5E z-x#*z5Uy-2SML4w^sAROxBEBD-8C(FnZkePdpQ(pc+64sHS?L@jZOh^E5Y~NJ53N- z)oaP}&td7rPZ$a9Dj{f-hw**(`;0So5bY^jh;jo*D3XF_0Ron5l>zkxi!131bn>)_ z!Bo8uS7Vw##y!20%`da3zhQuWtaj&GG<p>>bq>-cc>5y=J+oja>EL>sp#5VGC22beOt=qhk0y`DaxkaXe3E?5*)@#vnQ( zY{el%#g2%t(ng(+-_jpb2=@_tYaQ0sZ)+EEYDbouEIt9dhPI^+Vj6Yv)z6 zc268B=Q65$*axEO?vUMLjOG=TB4XjjRwCp#B&K>F^Y`veM6n+$fb8*s``C;*S(%D4by`Bz5$|rXWEd0k7~(_sBHW;K&0ttD1z^M zBwH-ka;Ncq&n@r12k9BFA+J?e>`1X_&c#5pYMqde0nP~tm^^Cyxceq2Sk@B2W)#+p z;;;n}e7Bz2HY0Hx;u|BPc)2A^ZR~41n2>X^bW|)PnlG@8%6-=RoRfAlVM5;A?&V7~ ze)8_I_wQ@6AJ?ugS#yaPRO&FIavE0B2ifBSAr#*?yalZHg#Sotvb0V(c>(pLI~9Cq2l=XnQIUy#uOf)TVaf8ee~3q} zt|v2?T?#Y0mL+jxR+C_Riy-8_N6IY#53yp`j+0V8yLOaFo5laxQx8T?hlCV^EkOq% z(61d$vA_sS1gdcsQo6ljw4Ztrm%Cl~9`{4U%FAD|_}$vCnTn+o7DAX*ZpeO{=Z@mI zB^7s8rMwYG<+bZZJt{HvCamw(#6#49eZ#!Y(;AjKB1*SG(LbVzLvV5{r&6N_uG>8` zK3kmYvG7+hjzP7{x|Dbvts}ITfY8lg(pwA()Gu9j(V(!S$xPg zXmwg~Y26b*u!?)5Vr{mg^*#4`0_?bj5pS-dKuu2UeHUtrB|?in_XO6;j%gK5c$65SjcjV#|>5jI)t`9-8`EY#BJM8+5J|Y zIGP+y!9?j~J5|S7zRzF+O;T%o;{?n+Dg!YK%BOma370t>$7RN|XRyby4oYK|$V=ej z#r*mZ*?h{7Gb3n8gw*9RL zpWzOWO*jfV?Q7*-*oUp=3zaa^9dvKcw!LyB%kR|ldm9|KU~W)3oQU?A5Wq^u0yt(b z$Uq3cn;JFVd(oR4Z(zDa-}il|^VtC@)@b~=>$S^{nhDt<-k6wAd$qpBo$#ZJE}Bp_ z<2B2Zo{G=;D(vD^i?Fx3wxWlIcFq^Pw%x@4oS;bq<Z~j0uGum5S#Rb{uDH;TP?MYfgL!jaU^( z@*uNASBpLNb9uYt*yp;T8Ic4~TW3feQBhJWZz}gWLeJ-5r3G68@*nd8oU>+^4W3ej zC`$Yktl|lL5q6S@V&45l$V`$gFJ-SMHh*^430pQrbICcKRg;SEIE7@**G|sp5WIWG zrzlJhHKLN%XsehDoz#H+8c@LAgbjHyQ`q0>@lm-Yf6ZnrAW~d6mfP<<){ltm$wK00 zDcNBiRlw3%1Ez1|!R)S(l_sn!53zpOL@25Z&xm$eR!3r6Hy$DN&x8|%Xa^d1elIGP z$(!sH5?~C_Trofknda~C)an*8d#{*0#BVUZ!&5kAh+ACK$*5-NMzzvNJvj~6j%c{) zGM%q)kDuKsK(*T=+EL*tWyl_Tg~-X=_Y|7m>||TMajI;&z647j)zWXZ`!T+c2J1BP zo1cdRk1rYWw<>bT4_UcwBlv)>-JJE!9X=N4dB(kn#sM+vbBH{R^H?{x^R4EhpRw~2 zMw&4S?ife~b$aaG_tTpBme=fl?{_9)2Qz+46zj)fxY??+8bFPmS%jDO+zKL>QCsjh zJ`)x~fFB|b} zDb*<~Cv_ns5xvStZY38RkA^h3AcuTW4XP!LTHZ&Gb@3BPbh#m+pIx#?4r^wje;RAm)pT19m+T z*GD4^a*hn^NKM8z#-g;tRAh#QJ+K8aDkUl&c-w9%8FxOm8Q;gxT_S&+4^XNN-g$5AjCETVx@MY;R+jQ*Ud&fl~xAm8!u@ zbC^nb_S+jl$@`p$$WaM4UFR$ti5Bg4D?XOxLEj?7N`{7U!5bz+xt{_YV}EfZGA9mQ?XM~)UkMThq}o2P03lI8mBdvf(}8Re7s@GE{>&_+%qWS9_PWopn@+g6fLG{hi_!YNqqhV34}NtKazXkck-v2y zVa}ML!qj8fL5Mp%50L`?%aHx_BpP|s9gwI_VX<>7;gI zixtW4C4T3E(8YE4HUxEq_3>sHK9KVDtqDn2I`PUhM z6!gn8z?2mCIjfP05tWjktTM=oS|G(KCa$^eQ=?%eMx%0<@p?Cx>xspD1D7Ljol^fl z?eH`88@88K^h7`1_t+G-zW>+{OdZY6Evox@wXi9u5aGY;Y3DEGb{$Pgkk)02DLrO^ zat?}jVCmV4IMNpF;zF1mpO7`{_#IN3CB9XRk}_~OTJ?bCgbtd86V~(bBkE#(R4nMM zAkAj@j^;USx$E=WYq!umWae8`#TjZRc4R?AoYM6~RGyyscLjZ;ne|wF&2bG7&A&Bw zTJLZd2*{YQcHOuimGBbD7}DLo+U-~ChI}?IY&RKD(N}%0D8bGnWEX=&1U%Q%cSAF* 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

    tnorth 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

    %hSe#a|9It3t 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 Iuh0Fz09WF-JOBUy literal 0 HcmV?d00001 diff --git a/public/static/web/debugger.js b/public/static/web/debugger.js new file mode 100644 index 0000000..925c32f --- /dev/null +++ b/public/static/web/debugger.js @@ -0,0 +1,620 @@ +/* Copyright 2012 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. + */ + +'use strict'; + +var FontInspector = (function FontInspectorClosure() { + var fonts; + var active = false; + var fontAttribute = 'data-font-name'; + function removeSelection() { + var divs = document.querySelectorAll('div[' + fontAttribute + ']'); + for (var i = 0, ii = divs.length; i < ii; ++i) { + var div = divs[i]; + div.className = ''; + } + } + function resetSelection() { + var divs = document.querySelectorAll('div[' + fontAttribute + ']'); + for (var i = 0, ii = divs.length; i < ii; ++i) { + var div = divs[i]; + div.className = 'debuggerHideText'; + } + } + function selectFont(fontName, show) { + var divs = document.querySelectorAll('div[' + fontAttribute + '=' + + fontName + ']'); + for (var i = 0, ii = divs.length; i < ii; ++i) { + var div = divs[i]; + div.className = show ? 'debuggerShowText' : 'debuggerHideText'; + } + } + function textLayerClick(e) { + if (!e.target.dataset.fontName || + e.target.tagName.toUpperCase() !== 'DIV') { + return; + } + var fontName = e.target.dataset.fontName; + var selects = document.getElementsByTagName('input'); + for (var i = 0; i < selects.length; ++i) { + var select = selects[i]; + if (select.dataset.fontName !== fontName) { + continue; + } + select.checked = !select.checked; + selectFont(fontName, select.checked); + select.scrollIntoView(); + } + } + return { + // Properties/functions needed by PDFBug. + id: 'FontInspector', + name: 'Font Inspector', + panel: null, + manager: null, + init: function init(pdfjsLib) { + var panel = this.panel; + panel.setAttribute('style', 'padding: 5px;'); + var tmp = document.createElement('button'); + tmp.addEventListener('click', resetSelection); + tmp.textContent = 'Refresh'; + panel.appendChild(tmp); + + fonts = document.createElement('div'); + panel.appendChild(fonts); + }, + cleanup: function cleanup() { + fonts.textContent = ''; + }, + enabled: false, + get active() { + return active; + }, + set active(value) { + active = value; + if (active) { + document.body.addEventListener('click', textLayerClick, true); + resetSelection(); + } else { + document.body.removeEventListener('click', textLayerClick, true); + removeSelection(); + } + }, + // FontInspector specific functions. + fontAdded: function fontAdded(fontObj, url) { + function properties(obj, list) { + var moreInfo = document.createElement('table'); + for (var i = 0; i < list.length; i++) { + var tr = document.createElement('tr'); + var td1 = document.createElement('td'); + td1.textContent = list[i]; + tr.appendChild(td1); + var td2 = document.createElement('td'); + td2.textContent = obj[list[i]].toString(); + tr.appendChild(td2); + moreInfo.appendChild(tr); + } + return moreInfo; + } + var moreInfo = properties(fontObj, ['name', 'type']); + var fontName = fontObj.loadedName; + var font = document.createElement('div'); + var name = document.createElement('span'); + name.textContent = fontName; + var download = document.createElement('a'); + if (url) { + url = /url\(['"]?([^\)"']+)/.exec(url); + download.href = url[1]; + } else if (fontObj.data) { + url = URL.createObjectURL(new Blob([fontObj.data], { + type: fontObj.mimeType, + })); + download.href = url; + } + download.textContent = 'Download'; + var logIt = document.createElement('a'); + logIt.href = ''; + logIt.textContent = 'Log'; + logIt.addEventListener('click', function(event) { + event.preventDefault(); + console.log(fontObj); + }); + var select = document.createElement('input'); + select.setAttribute('type', 'checkbox'); + select.dataset.fontName = fontName; + select.addEventListener('click', (function(select, fontName) { + return (function() { + selectFont(fontName, select.checked); + }); + })(select, fontName)); + font.appendChild(select); + font.appendChild(name); + font.appendChild(document.createTextNode(' ')); + font.appendChild(download); + font.appendChild(document.createTextNode(' ')); + font.appendChild(logIt); + font.appendChild(moreInfo); + fonts.appendChild(font); + // Somewhat of a hack, should probably add a hook for when the text layer + // is done rendering. + setTimeout(() => { + if (this.active) { + resetSelection(); + } + }, 2000); + }, + }; +})(); + +var opMap; + +// Manages all the page steppers. +var StepperManager = (function StepperManagerClosure() { + var steppers = []; + var stepperDiv = null; + var stepperControls = null; + var stepperChooser = null; + var breakPoints = Object.create(null); + return { + // Properties/functions needed by PDFBug. + id: 'Stepper', + name: 'Stepper', + panel: null, + manager: null, + init: function init(pdfjsLib) { + var self = this; + this.panel.setAttribute('style', 'padding: 5px;'); + stepperControls = document.createElement('div'); + stepperChooser = document.createElement('select'); + stepperChooser.addEventListener('change', function(event) { + self.selectStepper(this.value); + }); + stepperControls.appendChild(stepperChooser); + stepperDiv = document.createElement('div'); + this.panel.appendChild(stepperControls); + this.panel.appendChild(stepperDiv); + if (sessionStorage.getItem('pdfjsBreakPoints')) { + breakPoints = JSON.parse(sessionStorage.getItem('pdfjsBreakPoints')); + } + + opMap = Object.create(null); + for (var key in pdfjsLib.OPS) { + opMap[pdfjsLib.OPS[key]] = key; + } + }, + cleanup: function cleanup() { + stepperChooser.textContent = ''; + stepperDiv.textContent = ''; + steppers = []; + }, + enabled: false, + active: false, + // Stepper specific functions. + create: function create(pageIndex) { + var debug = document.createElement('div'); + debug.id = 'stepper' + pageIndex; + debug.setAttribute('hidden', true); + debug.className = 'stepper'; + stepperDiv.appendChild(debug); + var b = document.createElement('option'); + b.textContent = 'Page ' + (pageIndex + 1); + b.value = pageIndex; + stepperChooser.appendChild(b); + var initBreakPoints = breakPoints[pageIndex] || []; + var stepper = new Stepper(debug, pageIndex, initBreakPoints); + steppers.push(stepper); + if (steppers.length === 1) { + this.selectStepper(pageIndex, false); + } + return stepper; + }, + selectStepper: function selectStepper(pageIndex, selectPanel) { + var i; + pageIndex = pageIndex | 0; + if (selectPanel) { + this.manager.selectPanel(this); + } + for (i = 0; i < steppers.length; ++i) { + var stepper = steppers[i]; + if (stepper.pageIndex === pageIndex) { + stepper.panel.removeAttribute('hidden'); + } else { + stepper.panel.setAttribute('hidden', true); + } + } + var options = stepperChooser.options; + for (i = 0; i < options.length; ++i) { + var option = options[i]; + option.selected = (option.value | 0) === pageIndex; + } + }, + saveBreakPoints: function saveBreakPoints(pageIndex, bps) { + breakPoints[pageIndex] = bps; + sessionStorage.setItem('pdfjsBreakPoints', JSON.stringify(breakPoints)); + }, + }; +})(); + +// The stepper for each page's IRQueue. +var Stepper = (function StepperClosure() { + // Shorter way to create element and optionally set textContent. + function c(tag, textContent) { + var d = document.createElement(tag); + if (textContent) { + d.textContent = textContent; + } + return d; + } + + function simplifyArgs(args) { + if (typeof args === 'string') { + var MAX_STRING_LENGTH = 75; + return args.length <= MAX_STRING_LENGTH ? args : + args.substr(0, MAX_STRING_LENGTH) + '...'; + } + if (typeof args !== 'object' || args === null) { + return args; + } + if ('length' in args) { // array + var simpleArgs = [], i, ii; + var MAX_ITEMS = 10; + for (i = 0, ii = Math.min(MAX_ITEMS, args.length); i < ii; i++) { + simpleArgs.push(simplifyArgs(args[i])); + } + if (i < args.length) { + simpleArgs.push('...'); + } + return simpleArgs; + } + var simpleObj = {}; + for (var key in args) { + simpleObj[key] = simplifyArgs(args[key]); + } + return simpleObj; + } + + function Stepper(panel, pageIndex, initialBreakPoints) { + this.panel = panel; + this.breakPoint = 0; + this.nextBreakPoint = null; + this.pageIndex = pageIndex; + this.breakPoints = initialBreakPoints; + this.currentIdx = -1; + this.operatorListIdx = 0; + } + Stepper.prototype = { + init: function init(operatorList) { + var panel = this.panel; + var content = c('div', 'c=continue, s=step'); + var table = c('table'); + content.appendChild(table); + table.cellSpacing = 0; + var headerRow = c('tr'); + table.appendChild(headerRow); + headerRow.appendChild(c('th', 'Break')); + headerRow.appendChild(c('th', 'Idx')); + headerRow.appendChild(c('th', 'fn')); + headerRow.appendChild(c('th', 'args')); + panel.appendChild(content); + this.table = table; + this.updateOperatorList(operatorList); + }, + updateOperatorList: function updateOperatorList(operatorList) { + var self = this; + + function cboxOnClick() { + var x = +this.dataset.idx; + if (this.checked) { + self.breakPoints.push(x); + } else { + self.breakPoints.splice(self.breakPoints.indexOf(x), 1); + } + StepperManager.saveBreakPoints(self.pageIndex, self.breakPoints); + } + + var MAX_OPERATORS_COUNT = 15000; + if (this.operatorListIdx > MAX_OPERATORS_COUNT) { + return; + } + + var chunk = document.createDocumentFragment(); + var operatorsToDisplay = Math.min(MAX_OPERATORS_COUNT, + operatorList.fnArray.length); + for (var i = this.operatorListIdx; i < operatorsToDisplay; i++) { + var line = c('tr'); + line.className = 'line'; + line.dataset.idx = i; + chunk.appendChild(line); + var checked = this.breakPoints.indexOf(i) !== -1; + var args = operatorList.argsArray[i] || []; + + var breakCell = c('td'); + var cbox = c('input'); + cbox.type = 'checkbox'; + cbox.className = 'points'; + cbox.checked = checked; + cbox.dataset.idx = i; + cbox.onclick = cboxOnClick; + + breakCell.appendChild(cbox); + line.appendChild(breakCell); + line.appendChild(c('td', i.toString())); + var fn = opMap[operatorList.fnArray[i]]; + var decArgs = args; + if (fn === 'showText') { + var glyphs = args[0]; + var newArgs = []; + var str = []; + for (var j = 0; j < glyphs.length; j++) { + var glyph = glyphs[j]; + if (typeof glyph === 'object' && glyph !== null) { + str.push(glyph.fontChar); + } else { + if (str.length > 0) { + newArgs.push(str.join('')); + str = []; + } + newArgs.push(glyph); // null or number + } + } + if (str.length > 0) { + newArgs.push(str.join('')); + } + decArgs = [newArgs]; + } + line.appendChild(c('td', fn)); + line.appendChild(c('td', JSON.stringify(simplifyArgs(decArgs)))); + } + if (operatorsToDisplay < operatorList.fnArray.length) { + line = c('tr'); + var lastCell = c('td', '...'); + lastCell.colspan = 4; + chunk.appendChild(lastCell); + } + this.operatorListIdx = operatorList.fnArray.length; + this.table.appendChild(chunk); + }, + getNextBreakPoint: function getNextBreakPoint() { + this.breakPoints.sort(function(a, b) { + return a - b; + }); + for (var i = 0; i < this.breakPoints.length; i++) { + if (this.breakPoints[i] > this.currentIdx) { + return this.breakPoints[i]; + } + } + return null; + }, + breakIt: function breakIt(idx, callback) { + StepperManager.selectStepper(this.pageIndex, true); + var self = this; + var dom = document; + self.currentIdx = idx; + var listener = function(e) { + switch (e.keyCode) { + case 83: // step + dom.removeEventListener('keydown', listener); + self.nextBreakPoint = self.currentIdx + 1; + self.goTo(-1); + callback(); + break; + case 67: // continue + dom.removeEventListener('keydown', listener); + var breakPoint = self.getNextBreakPoint(); + self.nextBreakPoint = breakPoint; + self.goTo(-1); + callback(); + break; + } + }; + dom.addEventListener('keydown', listener); + self.goTo(idx); + }, + goTo: function goTo(idx) { + var allRows = this.panel.getElementsByClassName('line'); + for (var x = 0, xx = allRows.length; x < xx; ++x) { + var row = allRows[x]; + if ((row.dataset.idx | 0) === idx) { + row.style.backgroundColor = 'rgb(251,250,207)'; + row.scrollIntoView(); + } else { + row.style.backgroundColor = null; + } + } + }, + }; + return Stepper; +})(); + +var Stats = (function Stats() { + var stats = []; + function clear(node) { + while (node.hasChildNodes()) { + node.removeChild(node.lastChild); + } + } + function getStatIndex(pageNumber) { + for (var i = 0, ii = stats.length; i < ii; ++i) { + if (stats[i].pageNumber === pageNumber) { + return i; + } + } + return false; + } + return { + // Properties/functions needed by PDFBug. + id: 'Stats', + name: 'Stats', + panel: null, + manager: null, + init(pdfjsLib) { + this.panel.setAttribute('style', 'padding: 5px;'); + pdfjsLib.PDFJS.enableStats = true; + }, + enabled: false, + active: false, + // Stats specific functions. + add(pageNumber, stat) { + if (!stat) { + return; + } + var statsIndex = getStatIndex(pageNumber); + if (statsIndex !== false) { + var b = stats[statsIndex]; + this.panel.removeChild(b.div); + stats.splice(statsIndex, 1); + } + var wrapper = document.createElement('div'); + wrapper.className = 'stats'; + var title = document.createElement('div'); + title.className = 'title'; + title.textContent = 'Page: ' + pageNumber; + var statsDiv = document.createElement('div'); + statsDiv.textContent = stat.toString(); + wrapper.appendChild(title); + wrapper.appendChild(statsDiv); + stats.push({ pageNumber, div: wrapper, }); + stats.sort(function(a, b) { + return a.pageNumber - b.pageNumber; + }); + clear(this.panel); + for (var i = 0, ii = stats.length; i < ii; ++i) { + this.panel.appendChild(stats[i].div); + } + }, + cleanup() { + stats = []; + clear(this.panel); + }, + }; +})(); + +// Manages all the debugging tools. +window.PDFBug = (function PDFBugClosure() { + var panelWidth = 300; + var buttons = []; + var activePanel = null; + + return { + tools: [ + FontInspector, + StepperManager, + Stats + ], + enable(ids) { + var all = false, tools = this.tools; + if (ids.length === 1 && ids[0] === 'all') { + all = true; + } + for (var i = 0; i < tools.length; ++i) { + var tool = tools[i]; + if (all || ids.indexOf(tool.id) !== -1) { + tool.enabled = true; + } + } + if (!all) { + // Sort the tools by the order they are enabled. + tools.sort(function(a, b) { + var indexA = ids.indexOf(a.id); + indexA = indexA < 0 ? tools.length : indexA; + var indexB = ids.indexOf(b.id); + indexB = indexB < 0 ? tools.length : indexB; + return indexA - indexB; + }); + } + }, + init(pdfjsLib, container) { + /* + * Basic Layout: + * PDFBug + * Controls + * Panels + * Panel + * Panel + * ... + */ + var ui = document.createElement('div'); + ui.id = 'PDFBug'; + + var controls = document.createElement('div'); + controls.setAttribute('class', 'controls'); + ui.appendChild(controls); + + var panels = document.createElement('div'); + panels.setAttribute('class', 'panels'); + ui.appendChild(panels); + + container.appendChild(ui); + container.style.right = panelWidth + 'px'; + + // Initialize all the debugging tools. + var tools = this.tools; + var self = this; + for (var i = 0; i < tools.length; ++i) { + var tool = tools[i]; + var panel = document.createElement('div'); + var panelButton = document.createElement('button'); + panelButton.textContent = tool.name; + panelButton.addEventListener('click', (function(selected) { + return function(event) { + event.preventDefault(); + self.selectPanel(selected); + }; + })(i)); + controls.appendChild(panelButton); + panels.appendChild(panel); + tool.panel = panel; + tool.manager = this; + if (tool.enabled) { + tool.init(pdfjsLib); + } else { + panel.textContent = tool.name + ' is disabled. To enable add ' + + ' "' + tool.id + '" to the pdfBug parameter ' + + 'and refresh (separate multiple by commas).'; + } + buttons.push(panelButton); + } + this.selectPanel(0); + }, + cleanup() { + for (var i = 0, ii = this.tools.length; i < ii; i++) { + if (this.tools[i].enabled) { + this.tools[i].cleanup(); + } + } + }, + selectPanel(index) { + if (typeof index !== 'number') { + index = this.tools.indexOf(index); + } + if (index === activePanel) { + return; + } + activePanel = index; + var tools = this.tools; + for (var j = 0; j < tools.length; ++j) { + if (j === index) { + buttons[j].setAttribute('class', 'active'); + tools[j].active = true; + tools[j].panel.removeAttribute('hidden'); + } else { + buttons[j].setAttribute('class', ''); + tools[j].active = false; + tools[j].panel.setAttribute('hidden', 'true'); + } + } + }, + }; +})(); diff --git a/public/static/web/images/aa.gif b/public/static/web/images/aa.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a0e62a4c17a0f01a06fa2ff90eb1d5a5d4686a8 GIT binary patch literal 173315 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%0AT#z17~?VoGw(>D+H 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 literal 0 HcmV?d00001 diff --git a/public/static/web/images/annotation-check.svg b/public/static/web/images/annotation-check.svg new file mode 100644 index 0000000..71cd16d --- /dev/null +++ b/public/static/web/images/annotation-check.svg @@ -0,0 +1,11 @@ + + + + diff --git a/public/static/web/images/annotation-comment.svg b/public/static/web/images/annotation-comment.svg new file mode 100644 index 0000000..86f1f17 --- /dev/null +++ b/public/static/web/images/annotation-comment.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/public/static/web/images/annotation-help.svg b/public/static/web/images/annotation-help.svg new file mode 100644 index 0000000..00938fe --- /dev/null +++ b/public/static/web/images/annotation-help.svg @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/public/static/web/images/annotation-insert.svg b/public/static/web/images/annotation-insert.svg new file mode 100644 index 0000000..519ef68 --- /dev/null +++ b/public/static/web/images/annotation-insert.svg @@ -0,0 +1,10 @@ + + + + diff --git a/public/static/web/images/annotation-key.svg b/public/static/web/images/annotation-key.svg new file mode 100644 index 0000000..8d09d53 --- /dev/null +++ b/public/static/web/images/annotation-key.svg @@ -0,0 +1,11 @@ + + + + diff --git a/public/static/web/images/annotation-newparagraph.svg b/public/static/web/images/annotation-newparagraph.svg new file mode 100644 index 0000000..38d2497 --- /dev/null +++ b/public/static/web/images/annotation-newparagraph.svg @@ -0,0 +1,11 @@ + + + + diff --git a/public/static/web/images/annotation-noicon.svg b/public/static/web/images/annotation-noicon.svg new file mode 100644 index 0000000..c07d108 --- /dev/null +++ b/public/static/web/images/annotation-noicon.svg @@ -0,0 +1,7 @@ + + + diff --git a/public/static/web/images/annotation-note.svg b/public/static/web/images/annotation-note.svg new file mode 100644 index 0000000..7017365 --- /dev/null +++ b/public/static/web/images/annotation-note.svg @@ -0,0 +1,42 @@ + + + + + + + + diff --git a/public/static/web/images/annotation-paragraph.svg b/public/static/web/images/annotation-paragraph.svg new file mode 100644 index 0000000..6ae5212 --- /dev/null +++ b/public/static/web/images/annotation-paragraph.svg @@ -0,0 +1,16 @@ + + + + + diff --git a/public/static/web/images/app.png b/public/static/web/images/app.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0e36cec668ffee85274d83bfdb09c15903ab3d GIT binary patch literal 2028 zcmZ8idtB1@8m2O*q92_!P)zfj&XLXpw?eFi!89*94Llvwya&3xCYWiOg3}acSjTOp zRvz$jTo+9(5>!$PysRl+3eCp6rjeMM%byoe7^w@lKYs5Yzt8)5zwi4#&+|Sx-UN3e z1GoVQ1TykC;&KcG+M@IR)7z@~;}ks@3<7<`^>A_WNiLcmbc);kh3R(h=f%|nH*h1d zukx;o-BHKl{u7?}o&Td$?6zay=dU{D{ry67NcD5rTL9n)upr{!3{8X}O-K)>tANFH zC3a3RjK?<@4^?E_*ipWidt!LQEGhMMi~G5hS7^MnWHHXd+&XKEv)Ov6s_>YVgW)hy z`2`5;Q@{oaJ$@?vSvDdFxdKIW+U;+gQdcYY?R!L7dqfD@%lFCA-SzE~GF_TbHYpG)EPgGh|2bx7F%Dh8C z-`+KoqPKfn*5_a9y$>tqkk>Dk<7tQ65tr?Zd2}HT#7Tz)A$VbisGTiQb(BT@^qzBWx_YE>qP9G71p~$lWy1$1yjs;O#6Oe#} za?$@}_#!Q9x zdnr&mXHuMxK4sK45$%I~pHitmN1LwLZnSDfX&=Dh>B6Wi)J>RNW(V&=#}514Z(R`Y z2<*4Y-Js1Htj}tFiOBt@)iX3th!N~z|LVsqSL4aPJnbeOf_%@ABbJkZDB2*3PwU4Z zlkMjpfBnzTowP73sNLR&%O%^n%#*mNvq|FrlMc7%qwR=$|_N5Zz{gh8dJITQG2Irps*7iA7_o-ft6QvQUT zhQYvRZ5A`C`ibP8nyZZC1qw8NIUF9Xj%`*)b)3JVouW!+4sQym?*7{1)oU=J^A`&P z)~{zgJw;HfT3^!tHi)PpSR%HqC#SY}nl^C1^`tUC142kE1b*JZH4aM72&kauZDi(l zql4@vS0n3I$fI4C8x-tJNP+@#)14t#n*z9p=zZ(VUZeM$;mh%36#%2m3b7E=i7RQU zNf4rLd=*!(*Y?wU`L5w$VP|_S(X+fAab-N2PxBMjY#LSDb3t`Wd8=Z z8q&nv?W2UmkEG7}ulC_#LuWb=3HN%K2+7ik;)A+7|FKc><+K@>5StdchuKT@DIN_G zv#(xY2#)YRBh*#u*sQg-7II_mcI7M6{5VVMkFi_XH74gud$Y^g)6$6ZGcwGFNm>9$ zk&u_I@SDOns~`x2zBYXX579d*gxW96=gAu9Wmx-gp&qZd}5tc`K8u zNbFmyFR8}b6$MmC!S;q2uOwJQ{1|MQUMGVh;-cy&%KnUCbG_^be(Yiv+P3?lZ$!z6 zcmZW)q>N`&+C0|zLvx&nLi*V9T^V4*vkyo=6)f`o7SX9>5(l1oXs6ZN=F;BBH+B^M z=F!T8U@aM!x)w+a8DPSd@xs$%E|!6{zN4Y~>zA?RY+^3O>YiXB?C_S$L`M=#q}R$+AJh)Y3!C2&Sx8%5_~h=QFFgOe zTpbpOGuM{SMfAXkb=yvg`vHR&c`2xZ8989=46|aCzslx4Y!UZitcVzUExRw>Pw+ zosWJBA^cEui`6iJ;x@v0b&cMwnGpUp35<0ySdp(Ssd0rsp2Nx;jTbQZ60i^ZL}O&( yF5}@dWPrT%Xc1wy`O>cY0_eZmYprpCC45oZkB;&KEQ-d(K_0FImn!FznZE-OJ%FVE literal 0 HcmV?d00001 diff --git a/public/static/web/images/findbarButton-next-rtl.png b/public/static/web/images/findbarButton-next-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..bef02743fc108697e14e0e5daab8181f7ef91dd8 GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6`aE46Ln;`jUU1|(WFXM`uzZfwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr literal 0 HcmV?d00001 diff --git a/public/static/web/images/findbarButton-next-rtl@2x.png b/public/static/web/images/findbarButton-next-rtl@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1 GIT binary patch literal 304 zcmV-00nh%4P)kdg0002@NklJ%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xrZ>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( literal 0 HcmV?d00001 diff --git a/public/static/web/images/findbarButton-next@2x.png b/public/static/web/images/findbarButton-next@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0250307c0d10b0c0a38a8381361ec265ef3080c8 GIT binary patch literal 296 zcmV+@0oVSCP)kdg0002*NklD^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000QONN1jjx$vyv5uZYI@G&FX~xujj12+YK~w v*fr|J-NDGo&9wKH*qTY?mdrSMOX2+jbf@g_m202_00000NkvXXu0mjfGEh>( literal 0 HcmV?d00001 diff --git a/public/static/web/images/findbarButton-previous-rtl@2x.png b/public/static/web/images/findbarButton-previous-rtl@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0250307c0d10b0c0a38a8381361ec265ef3080c8 GIT binary patch literal 296 zcmV+@0oVSCP)kdg0002*NklD^w4Rl6cnRtQcFE3nm0&QVWiRnO%{h3-*x?K4w z&|kYa uWt-+4V4d~Up94HjH;lQ?oa>Bv?A`$+U7<=?MIved0000fwf<{~}+$G0pUl&6i=kdI{(<22WQ%mvv4FO#q)8O6mXr literal 0 HcmV?d00001 diff --git a/public/static/web/images/findbarButton-previous@2x.png b/public/static/web/images/findbarButton-previous@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1da6dc949cd6451c2d8ea39e1618d0323d2e1ec1 GIT binary patch literal 304 zcmV-00nh%4P)kdg0002@NklJ%mRW)o*bZ%{dl2K@N_?~eFJnrG5D`)>eWA=I9=*xrZ>GuI z4!;9U26Pv$_Z4XH%%iCpph2GpV-c{*6Zhs6SfR_EJq5;V+?sh4&K}p+ z6sU+@u52lw#15CH6i}kr=3>#xgHlS7GA$J0E366+j!0VQ&&@3-ef{(7H#?13Ev59AjB0000G{p)>hLyxD99 z76ej)=-vic0UL9~!GgO~9_MsOnufoUx`QHG)5E@a!o?nT8@#*2`fMlI9X~2&%Qwtd fAElzRww7{H`T9z)QIL|gUwP@h-(DMO`2YPI1=f8x literal 0 HcmV?d00001 diff --git a/public/static/web/images/grabbing.cur b/public/static/web/images/grabbing.cur new file mode 100644 index 0000000000000000000000000000000000000000..e0dfd04e4d3fcbaa6588c8cbb9e9065609bcb862 GIT binary patch literal 326 zcmZQzU}9ioP*7lC;0HnjMg|5k1_lNVAO;FCH~=vt5Q0Dhn8YOh|NoCEh)sn30RsaF z^8>N`2L=Xv5dHz=L$Uk|1_tQ_266z<4TQl5{{R0$_yG_fVE_NW0fd=>Y#@FBr9t9P K<`XsxO$7j30D*Y` literal 0 HcmV?d00001 diff --git a/public/static/web/images/loading-icon.gif b/public/static/web/images/loading-icon.gif new file mode 100644 index 0000000000000000000000000000000000000000..1c72ebb554be018511ae972c3f2361dff02dce02 GIT binary patch literal 2545 zcma*pX;2es8VB%~zPr=ibVMCx-JQ^BhLDAsK)^**h(ZDp9YGuzZ%~j!}+w%FI;|aC7){7CdVvG)P{bng1y9Te*f}~*`1kQl$jwb z$tlW~rRS!X?#xfm_&6tTdp_`cjgYwbRFLNdoJCN$S-yhg`ZnC-yvedRSmOh%;Y`Gl6bY$Z-}#C=#F4%9!I1b zWQ~f+9P?;vhCxWwlwl=lrWG|7IYo;{jjmzJ5R9?f>n%-d@>kLINUc z4wM5dAO;kq<$}Dk{2-u0$I6@2N}&cUx9nmV1dYc8jfC}%=F9WCg^OQK9C6poh#2!A z3^EU*UFZvS^)?bu3T?J;@Ahb~%I?+@4!l5!*TjC}GIslNan-RCrrd~PdHYnNLJk+m&`$Y+NV(e>CCu%R#_8GqY4cv#j`#uRWdsg9DxWy(?oOvgCU}&@jy%c!H&-Q zqXJxajAtmQRoRa9V-RFXXh-bK*;Fum{BjpkYQGX~i@OZ^Dx0n&H}kvGKqQ?w(6iGXu_g08T|_hp#ZvFzIwKF*a=oMJ~3UGAjZ?g}GOxm44td zXoyYrU*I=y*vHv89hkYH(v5R#wc)BC3dZJKb3K)f>zaM3%JP(mpecViP0eKKYf3zy z->jx_mc?mCtPEvCQ?uppk?eLJt}_IR7giW%Jr)RyI!+E-voIs*lXI*z`GQc_&D#X( z{6G};HPYj6O|$lXxBJeDaweqa{4L=tOZCjTI^&UOxXg})LRG_cr^B9Rqt(i5ORbQX zq`_xCRsH>xEYY%&*Nyi#{S_JZNlTm#K56`RI%7^amom;*h90Si&g1CfaFV3D|a!`3Y-GKKbL*KSbl z>I96`TR@CqPJl(>QqB~RvK~-U)`e`l4LIqj+IU^~yyIe*|BRVB>4Bup%j{tLdKz4j zY^<8P8m~GRGz*yv0&-RJE+-keJ+%m3wNeopzsltWd->eWmBVwUr)pX` zK~CD<;~Z*Uy3W`3+MrEYxm5qYQ!z%YI;y7DTG`UVH0;@{M{!B&id_}3DBQ?zsotuR zEGLdRx25nLm%-wjlnEi;-aN_1S7???rO~WgA67jjr&(vRa3y$u#kqJbeKnw z{!T!1li9>M+sJ6AUe+*9d}2uGjhzd z|L1Rtp8uTGYyZoQ*`DS^m2dw-X{a)l+3m?ncvn^+O>)hdd3(hMtlhkRGns{<8c0I! zDDjpmwtj?@!6kA|iu3q+Ai;@JR+ zfk+ln&YFC{4bhK6IxVgLs4W%^8Lk`qzWU*L>yq0A3;l}{!wKZ!ue)C)SKI)9dl1hl zhIRLV@8E}rwvE{gX(}$f6x*k)_`*Ijt1=EU-Ls6-(phomeQBgtUs z5Xz~Cd*nE)Ac!0i4ep}Z1AugMB(&F?)#CU{Qc{Sp^vKsdL}vRB30H+Bbzrn`M##H3 z{W8dc_mDroEE+p8_}mnJtzZ4!RNe)zhB)Ds;S57nYSJxtek>^~&(7B+N5MPf2+2xx z5Dl&4X|c@f{Kd|z1r+N|$DmsoVp*3yOdxT^J^-VAk)Z@$4^XrPrFP-Co+MXZ+KJ(W z{JNYvraLLWA;&tRhIKOvhW|HC|L-dLvAUF(MG0(Nl?4tB{RzN7I(}Cb%hwN{crFC8 zji#aJElKvDFV+&VI1V?oUMA>*kto0^;3W8FQBSZ|{ z$v~TqE=(8DZa^i$^oht&h};P1N&wMXorKh*Z68gPV&ouy>%f36Oqkwemyeas$Qbz# zV?7Jy%o7KY6^I=P@eCji%W`o5sf(5hySYo9$l4e2`(hIV_?=H-#R6}0$WVA|*(K@3 z=5?@RlcLh(meW%A4)hGzcvEpm(_w?>zhL*i&s9$2>r zAtk{8Cia|+Y+V!uX9BtpXoF%lswuRKsM!pSs!?yhlCy!269K0|b M?FSZn2B>%I-}ej|s{jB1 literal 0 HcmV?d00001 diff --git a/public/static/web/images/loading-small.png b/public/static/web/images/loading-small.png new file mode 100644 index 0000000000000000000000000000000000000000..8831a80588dcaffe9a0e075f3d00066faed3d482 GIT binary patch literal 7402 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 literal 0 HcmV?d00001 diff --git a/public/static/web/images/loading-small@2x.png b/public/static/web/images/loading-small@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b25b4452aa1a52181c324020c39175e0f8f425a2 GIT binary patch literal 16131 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 Hu0mjfs1U=| literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-firstPage.png b/public/static/web/images/secondaryToolbarButton-firstPage.png new file mode 100644 index 0000000000000000000000000000000000000000..e68846aa5f609f48e89b25692abdd85c2de7ecb9 GIT binary patch literal 179 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6sytmBLn;{eUNGc3kdg0002dNklu=O3C8jVap{PU;A41oOzOaJ;Key$ zQU*)*)D8A5V+RX%R3~;UVg_@zlxMcgLkF6gqD74k8E7`-9X9B`!HkM$kBXUZFs0+2AR>HC Q6951J07*qoM6N<$f&iRyUH||9 literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-handTool.png b/public/static/web/images/secondaryToolbarButton-handTool.png new file mode 100644 index 0000000000000000000000000000000000000000..cb85a841b18be0235fc6c6714223609e1097d1f4 GIT binary patch literal 301 zcmV+|0n+}7P)J24O| z%QaP!}IU9e5CrM>v9W%fW1qojxzD%=Q00000NkvXXu0mjf%W{5L literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-handTool@2x.png b/public/static/web/images/secondaryToolbarButton-handTool@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5c13f77ff003460753a39d9e406c0020231cabda GIT binary patch literal 583 zcmV-N0=WH&P)kdg0006GNklsDncb1tl(lO0{5H zQE6&xnvkURPmGNv7*b6L!Th=V`QF__%SrC--TQe6-{l_O7Xsbk5HrdU;SJOpV0KIxYb5^yMTWCRz8#4m*=<-RYnu#WwP~*n506n@GajHIFM;%}f zFY^Y^aW7$86$8At-QN{yj&9v@sxj9<1L$1g8gpFdYaS((q*!NG$}P*BQ`PAzs=(Gm zuGm&PFW5_{a(v>7UM*fj4M<$)vPc?t4M_V?iB(Vmj)#B6xFk|MFXcmJ%3gpyBWK$S zOgPLXDIdy{Wt3sfzR7D`46gK~gc4x?9LbFFLr|r0SztMRsut(_Uiii;Sc}-002ovPDHLkV1iPk2)h6P literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-lastPage.png b/public/static/web/images/secondaryToolbarButton-lastPage.png new file mode 100644 index 0000000000000000000000000000000000000000..be763e0c4a02cab5d7842c8999faade8c47059bf GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6$~;{hLn;{eb{X<9DT=r}_bOuI z*S;pAB4U5DMLQrPIWf`wN4P|1^q&c>d5`zJymvU>ZK0k3(_cShdv}w=iShns``k;6 z|9a2*kZNL>>-ng7x$0%-AZ2dv-evusD-M1!nVC^#Cw7NZpelLZ;<(0t-0Qey{BDRJ YJiB<=q@5ck0$sr1>FVdQ&MBb@0Mz?GUH||9 literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-lastPage@2x.png b/public/static/web/images/secondaryToolbarButton-lastPage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8570984f2d9952ebb8543a6c8bbca2408be3fe90 GIT binary patch literal 276 zcmV+v0qg#WP)kdg0002nNkl&Czfjc{g zj6%Epm%+!Y13m~u!|`;DXFGIF9(|doYCM^ve(0R2@MwmrSf3_JJZz&%)@Kv4!2LS1 zV0}4}<8B$5v%a3la66C8Hg!&j6gN{uYNm4{!PR#}Vyttbi*Y&9#dbQsBEkhDB5R!! zZ3qqBhHg41f;Mp0Iq}XP49B>3;NV a-`N}fhF>K<1*gRT0000IXDMlYJjH!bP6)MzmI9A`JeaMrW zP{;Eb78VxP+o^u+tz)%w>Y7tjQAHKiynbv>Q2u<>aK#ZG+*=LzzJU35q7H&2Nb8UG z4tHis9hc+YH714zU~vDD-l4 zafLJ>w7618y&iZMZti8jkXl?(NPqY>rLdN@q_C#sSI-x0yte^Yo}fkdg0007_Nklh8e7=r0Vcp)Y9Pr|5OlrS&sF1(Z=>P7`I$&2V#B8FQ@ z#xx11n2B@MtaN4N=HFayP|U&0*qP^fzdz3rbvx5{@V?*A7yO;ybIvoweHnhs|HM2| zKI2b<|A+)(s$d&GYW}mq85+9hKEosr^Z)ai~BEfeTNO#3*wjb*wP4^U`OFpp(!|`#~2s8 z`FYx|7Q`+s4a0>};|dO&@9pxBxm8wN7W`#thbT7CssC=I zTAKz9&;++jKrz^NzcAADM`@&iv`7W`N3qmw3RZ&e8hPgH3^G7Qpcx$&o`vOn_6(y+ zZas$_WXt7wl$(nFs}3E|%QjcV-;}eBGn_%TTz6djMaiyYk%erz{(qejCHZ9%NywHf z{V9J|qQg-{A#0$GFYt5L61R9<|A{{;zE^$lK~~|*404N++(Ztym|$2*&p8|pI3TP1 z`Lol$YO^mh!s0;lvGNuWs=UoKADO*y*%)pt=Qi+&XoY ztsnG;h7yz6Kt7lcW&?@I(9rw6m9415J&yxVq8aUYUbLfGo*u)4nY;A)5mO4m-#Y*R N002ovPDHLkV1o45W##|? literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-rotateCw.png b/public/static/web/images/secondaryToolbarButton-rotateCw.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c7598886bd49e194764015577b766aadd82288 GIT binary patch literal 359 zcmV-t0hs=YP)x?uT5p77|>RR|+!(Z0%SPBBerLNU!<(Nsaeb!tN(Ep1s3u|3Lqc zXA482_4)TIcUT&Mg&ka9PU%bJ(4vmb9tomENw9}a{m@cGL+1YGpu!Cenlx!}GpOuu z%G3xmxmwG;o&*28mt2*pekdg0007!Nkl7D_=c-w$rRM%>rppb3*+sVXe|le>e}?;(Er{M9e0<;c?0eV_qyI8^j_+&`1R|)U z;XGO}fI0Zt9GrYA<6DaHV~zRM1twVFK>**djW85SZR6yh2FUfJb!D6Sq1r_=#U#5b6Imp7B9ZQ6dlA8G-$eSq@9Y$Onc`L6}j4VAGA1e z1=skwPmHutJ|&xcR~vkBjDocAI6jNzhpOjziuITk{*=Ke2$x|I3s}%U+A3|7NKzG} zAk>06vGjn6XdlOMA5}2zo(U{7GxQ7|5$+DtKDyz>3|zQm6o@A`;T9ZPLCJCIg`0Wi>*q{U9GDRL?<%aEPKbabJ1?6A$s(GnBf}UMn8ID;D}MVOPR2!KxT(5{c95|#cUhyO zcqQP07oE6>JRD?syzAu0o}Dy0+GSP$>9RT+BSRRAndFjb%&=+RP43=DhB_K4i;_&1 zr8a2C%jAM~ORYRlKIV)PyKSob%7 literal 0 HcmV?d00001 diff --git a/public/static/web/images/secondaryToolbarButton-selectTool.png b/public/static/web/images/secondaryToolbarButton-selectTool.png new file mode 100644 index 0000000000000000000000000000000000000000..25520a6fe58475cf3e16e254ef2ee0c4723b6644 GIT binary patch literal 461 zcmV;;0W$uHP)wY82{uU_46Wo2av>gwuD zpqMa7oLB=G#l*yP-@kwV<;|NnKi<82_jTdIg)`aN*%g3ttV9_A#ESRt-+u-&0BXp$ zvuDqqv#_wRCg>%oq}Z`z$4-GXzkdDtCkVfN`}RA?(5kAcEMmOGzir#L%`gLC80wlY zt5&U=4^$(MFP3;VZ{EBHn*kt~fCBi&jT`$bDk_w4d53HH^5wHYiqQ=CK7IQ1Re5=N z@osKz`uM_wt-iiK3lw{SpEF`9ACbC z`TF6*htForm{A23<3(3Q$VI$Bjp4$=!Wuv}H?r*j0p}3KNklcgHMp4GRDGA76Lho0b%r=i4y(~0SX9u_uY51o12?IS-W=a4t$>i z0)VU5A_Qi6ctJtIMT^B^(CKtN+1c5-_-#IO!-KgbXz4)si4!Nzn$QdegT-hxnx1^} z$w%DW+}7g1Sm3QyNO%H#at#U}EuRbH&xd6`4 zkRVTusi~>?EF|F*5fXt7G95NQI+6gj8x)e)UVH6%^jX6~;sX>%MF`BwxYE+n60(}^ zRxN-tG$aUF-IOU)4mukWUW_6S9XfQ8?rvlOBZmaPLHt*=%lk|NZw*VmwcKs-^@2WLaLLL*unzyvaK|J9XcF`|Xd|Hy%SC z6kff0_2l~X>z9$6_BtQ}U$CUIvhojG1mNAWWXX~n&}TQ858^=>@B?m+B%&9XjdQ^p zycVcYFGX1W8TxDhQLMiUPd-PMqC1#;|NZyh!D|7x8t;Gc?;QG$>&zJ$8F}mg;|U~Z zi&50clP43^+w%VX`yXm;ZSCWs;gC}lGUU!`io3JbPyt~pR;)No8O@j0ZMWTaKYl-W z(@i%$NO!E>ElJ=*4?T1jtA^e{a_U@wTCfvK$w(rQ53k_vR^j)VV0~R(U9~zt$d&f? z_BNE{U9|q4IY&ysf9lk!tE^V59;cyiaU>&aBS8R|a`EEDG)!n5$%QxHeDg(IGY|MV zdR7pDS7c=56b$$$J}+RCdjMA^V)6IifB)r3F3_H^bLY-8bcWT?3N^ehtU zOfCqV(VihBN!rlT($Y+mss*&Qwf%-`5`eoc0vyT{FzxQU@4gu>467I2-Q69JKmK?b zTU lPt+c){6>K=;A6{~@ISN(|7jO`x6l9p002ovPDHLkV1g~E2H^kz literal 0 HcmV?d00001 diff --git a/public/static/web/images/shadow.png b/public/static/web/images/shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..31d3bdb14f1d67953d18dc04e73db834aaa200f2 GIT binary patch literal 290 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 XtGDvpiMgkM4q)(f^>bP0l+XkKeAzzU literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-bookmark@2x.png b/public/static/web/images/toolbarButton-bookmark@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4efbaa6758dce6ea82f9e03e81c0196cd806b266 GIT binary patch literal 260 zcmV+f0sH=mP)kdg0002XNkl|Mj3PYt*CIh*)L;+Ye)qJLer!U=dbLBLZSzSesM4tY9KKocB+w3G#Z zP#|$ck0S&$A%{+O@CHd@not;m^nk=r!lx-oOkfDo1ASdr=)nV-#q?0Gf`(oI0000< KMNUMnLSTYMTxkmc literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-download.png b/public/static/web/images/toolbarButton-download.png new file mode 100644 index 0000000000000000000000000000000000000000..eaab35f09e12fed1a285ca765b38846f84ebbb91 GIT binary patch literal 259 zcmV+e0sQ`nP)kdg0004SNkl) zyTrz@9NlC#^DUV~uyB6O#`Wc|{GJapsNf}n_~s#6@aR;~Ks|!^o;hKkb<`q>uf_@c ze2Ny_{735Rz+(^grfCv7@DMF@(?E&?)gFc+;s(Y=f4GnKw)K%<_IcMs6%8~k4%~hd z1#ZH&m*NR=jd9Z9?xHxKc#XI|a&$D7>pcNfCv2 z6(}mA@U8*{MHJpuAa5+piu*}@=C6x$-8&9=MtcJe#2}8pdIkrw28vjvgyHy0F}R~Z zCUA)rP9TO&f3a5-II~coM6B}%`OpmoPD3uR3@7y8J#|5W6U7S>1Ne&^?G!jBIjmz4 zBlw35uM~LQ#}Ub*j1tayY3;VeknSU$Z13T)Kdqf~GA)J#k0F^Bw@*|4^-q28r{Use T)~jCX00000NkvXXu0mjf;mWr^ literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-menuArrows.png b/public/static/web/images/toolbarButton-menuArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..e50ca4eee46e25d92e06847004f323d616237f85 GIT binary patch literal 107 zcmeAS@N?(olHy`uVBq!ia0vp^>_9BQ!3HF6HKu+5QbwLGjv*C{$r2tP{{OG9Q;1_& zbWt^;p+Z-{zWI{QiAmlEggExJ)R+qxP213Hu-B-8fx+-v^k(la_imtW22WQ%mvv4F FO#tGFAX@+c literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-menuArrows@2x.png b/public/static/web/images/toolbarButton-menuArrows@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f7570bc0d30db3dafe54aa7c1fe92367690f5046 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0vp^d_b(g!2%>Zo;S(>sd!Hp$B+ufWQooP^)>=V3JT0Z z$G`noR@ib>ZRMZ;zy7B?RLGuin*8K{y@Up1n}eABCY96wr#d)VuzZRTnDjQlktL_y z<57djB$XEmhvE+MurwWXw|F2ZV0`Mr1B0n74EE`D>#U8d6@XSTc)I$ztaD0e0s!v6 BGzG;VmC z;q~VKH(~JG$%=&H*l#BhBA@m%+@JRU8U%hjmgvvG%fOT9|Lqt|?CCOwE9L($f#A18 zKxs~}zd3BF({67qbqF`wWgvfL;hE+U&_WnNzfk1a( t2EvOl{_oukEDQ`x40a3-IG`;90|2DgL5N;Bd29dx002ovPDHLkV1nayd!_&Y literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-openFile@2x.png b/public/static/web/images/toolbarButton-openFile@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..91ab76593eadd6280b2a554d8d3eb1430d7ef6ba GIT binary patch literal 550 zcmV+>0@?kEP)kdg0005)NklV8EdrV)CkilFRiwZGwaE58mndUOxVhkz-=YH-{A&5&o{d zns22dWrs@ZlkDB%fnWKmLb;Wa?OQuga#3zxZ}MmDC0|@s&JT+HXqXKe@Ow>O zxH{3h$him+5RYuj9yN~lP7jG!JjhF_%4%QAQk5*<6Jqsm?Kz+C$$K}&xzJc>>|@Nm zsKzm_h^c1H4jjOTZ(zSQ>)J$FIwS8?teL?fGyt^0A!|lm!cm zrf{tQ1#;(QSpf${lMm-1Pv*3|P{2Xa=o32VET52+0uG8MJ)VX%$q`vnz(LU@4ksYN zlb}3P@CY_uRWrYD9_C5zkwt}Z+X>H)v#KVxI|eagyX2`tMhu(u=AyNL7l4cY^~bW% oyZVDVb*O{JA&&H6n13-p0bKq8;5tc*kN^Mx07*qoM6N<$g1cw`kpKVy literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-pageDown-rtl.png b/public/static/web/images/toolbarButton-pageDown-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..1957f79ab95a970cc93eaeadec532661c5a1ae55 GIT binary patch literal 242 zcmVkgj4Lv#w4(S5>&h#|Q|$T30}L=f&H#|39(FQ@U4`qXaxf1Bc1+XmFJ4%~M*)ck=@jF*AE z@OmCGUIsRTT4WE_AE@?zRCReJsxQhE$k7T*n^xpdHBOme(Nrc9n@SO5E{eDjb45p( sF&)`4S3;ynbtti233MRw&&qfF1f{Oim%bdkdg00041Nklk=KUzNjE&+Z(ng)kL^NUuQIUigABdoZ zjSq~+fdO@9zMHugg5R&b=MNYE`8du+Zn4FCK6*TGn{x~k1gJ8@hCRLGEpOaj+8e8g zB8)MpkFy_r`|-8kb8}@LQy6}n7&Pq1SAK);+5#pKbni>{+q`3FZOa;uPgpuN| s!;t41i6pD68cF@RkkFqi61Km+Pl0_ej2E!U-~a#s07*qoM6N<$f+7928vp6;%ZmspUL<91jYXM#X%ehtN;K207*qoM6N<$g5$DeH~;_u literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-pageDown@2x.png b/public/static/web/images/toolbarButton-pageDown@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..758c01d8364c5597d7e9ead825cf4e7754c8d929 GIT binary patch literal 396 zcmV;70dxL|P)kdg0003~NkluFpq+}Hm0+F1Hup;*cG@Vugl*K#ZX`wwAsWOGa}fz> zkwzm~KZOBxbLOmLAviyn;=uQ(|M3vS0uJzqrx86=v5yr@f+Xsjpdf{JHeYJ!j=0AI zdMIPgH=xkW`qFa+9gXf=3-i7Kg{HTb-3Hnk9k+}r-+)2^XB#c8_HcDb96Kz|zFy%@ zr+?TdjvvNrduZwmN(16Fr=vAAblkd2oaVF}#;t%j0<#gojle8GW2g(H0CO!c4%7t3 zfvP|ZM9}o82$~*|&j5vrIb8luF-IZ#_Cih;7v`L-ntKx&oSShnYR(gBlz!%<)m)pf zQ#kWyr_@|dB;m;HB%5m!ww^R+i9!MvS4hZno`~brs}PswLc)&W1w*T#Q92I_?)jA__{b8r{ocmDkjB;))luQR&DQs#s?5{OcWsXDuPe zmo+wBW`Ex!Y-z#88@{DbU>|qCUYXlY&65@XZDezLlfot}w3kTg-zv6Kc{)$s27`wd tL8q?PzUn!-=+u@K&b74>{cp1VFo`V}NvvaB+5+?kgQu&X%Q~loCIFI;U?~6q literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-pageUp-rtl@2x.png b/public/static/web/images/toolbarButton-pageUp-rtl@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..a01b02380b90e5ab32727ac5460eca3108a8f1e5 GIT binary patch literal 405 zcmV;G0c!qkdg00048Nklrkxqu zT8M?#!bm@}5SjL#xxE$==eN2ibN;KL|31hDNQNMj#dAQK=y(1Y5EDv)44Ux1HIb1A zxbp_wkVaG@>bwr8M;#f}fPp8}M8Vcj2^jETNAO_u3+Qn1AmKun1#~zl_u)W~3TUX} zUO^Qa7tmniPLU0*H;_gJx9U(qIvhx$jGJF7BlQ!YX-bCSn%DhRa1}MU;;H}2mpt`A ziKiME#syC?(4NFOPciVagfos`@JYn1UN>;cY3;X2BrFj7v{2+Y+YX6@#fO0+3LJCQ zBvH>3vz-&-ueoS%1%d+z!pldaMb1S zJy+Y=T^nDZ7)fV{#%PX`f<=ncJWbF5{oQ;4iDXE!#q;ab00000NkvXXu0mjfx2&{B literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-pageUp.png b/public/static/web/images/toolbarButton-pageUp.png new file mode 100644 index 0000000000000000000000000000000000000000..fb9daa337656a75091ea00d4c5600ba4f557d834 GIT binary patch literal 246 zcmV4@1mz9~E$`$~;b_k}_F6G1q{7jr18lHWj_7~< wLcHP)kdg00046NklObOG9sOZQNBke(N5=mxxi_UHnda|*&J&5TH*h$u8)^QA!? z;xt&CUk(xa@IS{#Xz2Hu|6d*s2mgJH_rVY7C(gG%-^8f%*FGts5wO{2{YRVjxB;6j z)&{h^5?<#`RuxU!x&ey~Rs;=NIsuDymORvHjS85o@x@1treDBhm4y+iG`#`_%Y4>Q zrXd9kmiVNpL_-b4SmY!16&V{0L|Nd&m{h`q6-zeg7QAIlCLxaTHheG%?nYsXZ0`) zJwbTMNirjGFS)Go0!$`0KT}Lg+!F?+fC96-Tkl6a7i8QNLsCG2!2H_bPUYYu$y1&U xNi)wqhB>1K6qvvQRuRHFB2cYh4paDxeFMq5jmkNGJDLCh002ovPDHLkV1nI`spbFx literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-presentationMode.png b/public/static/web/images/toolbarButton-presentationMode.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac21244dff26830f46ec462f2dab36e1a18938c GIT binary patch literal 321 zcmV-H0lxl;P)d-;VqjhMU0mZ4X2g!hLXQ*2lyD zAO1T4QSzVf-}e8HzMQ-~=l=t+g42^3RNS0C9Q=RpM>>fAJ?a1b&&NYN8B~EX5F3G* z)y-)~6N3zxFSVx?D9sL)fdf{kGziForAY+;dH)B&*)2a2N#7G$Xm3^>hP76r$iD7@qu}40l!X|5FfA2;Tt;<=`gB!NnK=_L!_3 TdOB@M00000NkvXXu0mjfBu|wT literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-presentationMode@2x.png b/public/static/web/images/toolbarButton-presentationMode@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cada9e7918da28bdf84af38c354dbf1e1c6fe31a GIT binary patch literal 586 zcmV-Q0=4~#P)kdg0006JNkl6nm`NYOT@I1}o-1mKoVd&o&{7f+mN-&#|()Zx;dz{8H zjZ$((8_UU@2);#emg03$I7{)Q2)+sjYw5ZuyjRhz2zmk^;uiyU5k4mtKpo5NDq;oH3c;DYmG_Dw9@94#Qd!Np$MYD$j zPc4{FS9m_nZFoN1#o4faN{cjOD4v!1b8BVb^Z!9gw9*2_{C#gi$nn)e!f!}1hmw`k2Xb!g|HAo2t*7E*&>DgR^vZU zVV4ks^D731!9T-ielNTbGw_$axq|YpFKNTWBMo*4b40@@e=r<~g@MK&J_SO41MfMq z6K6!=^stS5fYisq7foRJTRX628(*Bq(yKr%dZE{WZ`;7vZJ2IZv$kcQLwS8}%Xy#f zfMcjMVUtA}0uh@ufx-#qxPlcm-vgSJD;yl)1oluX_K^Glse?0qV_8Mk00000NkvXX Hu0mjf@9=3h literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-print@2x.png b/public/static/web/images/toolbarButton-print@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..53d18daf7825ae12d99406068073d16ab682737e GIT binary patch literal 464 zcmV;>0WbcEP)kdg0004(Nkl|6%E6&Q zgKhE5R6HaVnnStjcWqH1ObaL>24WBUJ_Y#4uV1O`0z?e~qSOfwF1Pr+z z$Bpe>*voD2#tn`c<-UL;j`nO=$Qx_VPMhTiws^}Shpj6L11HP{ZY}JG58#d<-o%HwW2=;PUN2XFHukd_-`kI$Y@{*S`_h91y zIW}gls+39Ng#)bOp}H?Gw|H@Pf)(V=%H0Vs*gACdn;u{lW|A|ybdPtAQD7%+lCuPJ zNHpGOlkX&todVvkrYUPEpq8BS?cYmI7hZsM*cGhfU(HW?%hSMo{ZqpL0000YA literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-search.png b/public/static/web/images/toolbarButton-search.png new file mode 100644 index 0000000000000000000000000000000000000000..f9b75579b1e058baada95941a4a7ff0c80edb5cb GIT binary patch literal 309 zcmV-50m}Y~P)}CT$H)>Cl*KShVy4rnvP0Z8?}Z*4h&|1f^pNMc6--g9AMzMF;T^ zdxEUy+IsY03~>NTiO@2lBS(WyDLQStmhYno%7XP%~a zg|t=`Q(SSy6w-os!-I2sl2TAVdpUcr6!sO=uOix1Q2+A@lD3RUk?l9y00000NkvXX Hu0mjfGKYz; literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-search@2x.png b/public/static/web/images/toolbarButton-search@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..456b133248fd5310857db3e2b174730f6488371b GIT binary patch literal 653 zcmV;80&@L{P)kdg00071Nkl{bbX%$pI4<4dGmxrK3y9C*x5W092iXDWyS$NGul86ip{iUm* zph&8bY4&exY`K>GnEG>Dd62o*(mD5i_k8$VY~O9Br=aKc@csAZc|K$K(~H}AmbW;? zMG@u@&$EhH4=lw&FBkZQF-Ap9o)(M%&-~tka$b|+DChG;`IX(=w(){a#`%8{F<#$j z!3oAVrx=lttE;Wi(dg)E3%QJl{>ms%ms(Jfo#2eJ;_GOI4YjBgwXk)xuK0A4^|Gqy zg0)keVT6&~w6g^ktS^hRB{!`y&ScJIkb$(>x10P=3G|{G`Bfe0)oE%dg%qUCmd7}) z3^)d0=5pwC)whaONSkH-{G>RoP849(sVpfg@*ia0@S_s8gi(M+r$*3#0co@3D5sRA zh9wlxpwskt8fi$I&Gs>uWY z?@M2Nt`6yC6T6=Kx^U>Q*>AFmU}|CQ^VA2Q+|HIZgo*jpkAZhSx|3}@2xVraKJvzU wce9NLp>&q3J+HiVD_f9=9_zn#f#kpM2NJQXccvwU^Z)<=07*qoM6N<$g7779MF0Q* literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png b/public/static/web/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9d9bfa4f63d6a8ae5cbaafa2efadd2c16b48a3d8 GIT binary patch literal 456 zcmV;(0XP1MP)kdg0004xNkl&Eo0wtSl_%_c@)#x6@Nc{?`phhD&@IIESE8yJl-K zSNKF1)hUn5sOZvq+E~U7KGIR4efOfQ^}884Zquc$Li5&n8S%Rr1@7~nmioPL?ToDQ zyBRA(nRhf*zjpbgtnj-TYr+Ig8tT{lh2v82yBQlog$4`i$IR)&lJ~nAn?g*Tx2iXJ zWWVJ6ZpK)6$s20w>%%>JCF}K+&F|>X@+#3QMD!p6D zD}Un9_eZ=yRl_vval1L7BzJJ%w+GCj;t)~vyE&jFTPl6N#|&!ruPuHz2b3(`y7R*w zDyWF(Z1=l4pkzsLTk9rI70-y-?RRDWXwkZ{`gNuh)5IL`x)Kb@EZ>3!A!A$=*8}1L$Je~+C1~_8?0000)($5yeRDdaQJ-M|4aWbecXOn@Guga;V=~b z@A-fE|GC#2l&u(8kl8S=_WnQr|Ky7m5@rlc$ZVK&-~ZG9k3Lz%WyHXU%!Wxf{y*{m t;LXXb20&>fHXkdg0004zNklungn#PzRCDDkC`n~n-$qc_|=6h2P`+3##e4qF2k^f~&;~by5E|5SX@g5gF zM(V@4qrL*vqBy9 zmb;|w9+AI3)?7ThQODDyXUp*o57Q zk<^j>?O9%<$}VJ!)rCGJIWh710VUKc_nfi8UFd6Wq&>}xNGDg=Rgg%$YmQ;9d&EnM z>U;L=QAvw#VE4vGm!-&}`ugz1AsMo}H!?0DWI=tocW|Gi?CyR7|OZx}=1^9!Vb3w=BGynhq07*qoM6N<$f>h_@ AZvX%Q literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-sidebarToggle-rtl.png b/public/static/web/images/toolbarButton-sidebarToggle-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..6f85ec061ea167b1718d2865cfc1e53370f11b7a GIT binary patch literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6R(QHNhEy=Fy|9t%kby|+!~K<= z=lYs7_Vv%s4-^nwVp00$&6?)LeSG^I3$L4YTv-}i{FpUUBct%;PlbZ%#R_fqh7bDx z-F*1OP);pG_ExTK`(Chn5R(EeH9pPAiYO~EVU zg;AX0YiF?m$$s9yK0f=U*jm^Eqt`WV2>kpZ@LOBJCk~ccO~LBz65exMPv3u}^Njbh X)s)<0)dyODZf5Xw^>bP0l+XkKTSZs> literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-sidebarToggle-rtl@2x.png b/public/static/web/images/toolbarButton-sidebarToggle-rtl@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..291e006797fc7f0e84d297e952630c719fe6eeab GIT binary patch literal 344 zcmV-e0jK_nP)kdg0003WNklzGl0Qy}Zomti9P@(RHP^G#|@5~=y7$K!siiboRh zuIeZWmVB=G=|>dh^>JgTvTX_3{+V)mF&H3EjY7F_lyu+m(` z^5@!%E%1sIf<-iET7g&00wOY5YylCO%que#{I4g>zrp+oX2Hs@7Sy8){GqKd3+i8+ z(La(~<(6kl$Y?0+E!3g~6pVPYgsgOBL}3a(#z;E(drpoEc78P(r=PdlEn2u>S!eOM qa*)PSBkN>jxL^#qr<+KRA;34`pdw#DmQPIp0000%D&|RWz?R3S%8@5!h6F=s6G4bYqaW?MzjoCkpng6|s zXV#N@oaktrz{i#`@v)}nB&N==y>HnTvNCfR?M_V%Q~Gzyo8O~>Q6}#e!-ESy&GlaR zu`s+4fAKGyamxbfPlhLUim60w=5E=2>$USub|+s^j;X5ze{YfSp5y*9zfkTo Zkdg0003JNkl$GH;g-ye=E3m76~FBj%$^S3p8p9*q*pSbd*{>iVWHsKF0S;I z^gX4t*wuc`Tb2cq{&%P`@>A8<^(NL(>Ho}s&vtk+Fua<7E9$@Hp92jMpDMqu z1xm9(o%fjY|H;!pyNX@EE&si$I{ZV$w@o%SaA_c5db|2dDUjx3Fk~?LRQ7GXy(6+T z5KNBxck+Mrf8+l~|GU4fb8ui_Wk3UhZHZr2{6GKy)RPIe_L$OOB@D*mE*uUFn%Jcw efQf+-n=k;HAC|A!G+~AS0000kdg0009bNklO!qs?nO>`2G`bN+(=Af|T(S(@31n57R7<0pDb zv*kV(PVYe$9;O?e1ONJb6Yc5BKP*8IY3C>D9Hdz{8730PBZ^sbmXX%4tmg@4vsUTxntmOiRVB}nLnYi#??6;a}ZB3eP57p|1DS zXl@|>xwZ%;kT8Pz`Hz3Db$te9qxmP|1)H#*aDh5Lj}^X@`uu%;NfI2egk?GY;;*~a z@dUdWZu{mdd@#VUTEfucA z9}iccG?Fc|>vewjnSi)TqAu#895Qn;HT?c?WeWVQy!reZ_MEv1^(6j}Uth0B86;mF zdF6c{@Vju11>@nYT*bfq@_HT0Bh@l39~}OgKg2Iw!R~CvPMjyc=5Ky}tMIgxcku}S zhy2W6{6`&XB>Y8u|6sYo(^$Sr?Vhc2yC#0%M}7=@X>@SpAe2G6%8YVoT%t?Q{>}Sj lZHt=7g$$J$Igkx$P79l;1h5EfFlGP%002ovPDHLkV1kE3p%MT9 literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-viewOutline-rtl.png b/public/static/web/images/toolbarButton-viewOutline-rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa9430211e168a593f7e3bb486b3cac2be6556b GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6Dm+~rLn;{8UeM)Zaui^FxJzhG z!|qKIVyq93J2V|v60i`ubLP&1jLj#z)YdH6_dNZQ&xuJ2GPazLv>Ue+?>6bs6%sUl z=5wmNX+x=cM?cG@Z*M=Wx3_WU$gY-DxaT(E)^*=hf#2W0ec7YVF<0AhkJ^MyIkdg0003|NklAE8oCqP6^J2Th#(YoIRh@jaAR$9RboY0TBz8UW*<_dt4i~Ob~DGonWs6N zDHmgSc1896;1BQmyd3=B*_8?FdJfKrFg8ajkxH`r#|ZrHE^89r%(@^&LP zaU~!CnZY3+ryJx4P}Ww4*H%5boJ10kK>!OHX7MpIn8%#kUo_liM?;42gn8)-kME$x z2MsMkajI;x=~Nv!fDG?7K@n$i6P3?9=x2F1U4N$!WpzoMSmnfG0tr9{|91dxvNb`P z@Pt@#g$O@Ts`FxkI-!h8tg$vKjo=3vo__&~$jeRS1pFY=P4m>Rm+nD{$E*W$KOT$2 zPbKiz-rYZ3=dFef!V_e{6&&9|na3K+gyQ5_WYNiu|AQk^Ne|QKRngBbo7l z(Z#9O-!Ih&DHL`j3;gi;Q|>%Z+C4MQ_`#CC(&&{H^BL7&PFp7vkdg0003JNkl4op8oHYTF~kcIgrY7-m_-=gLr9yLNJGQQw7)|`w#sbRZsr&`=k35ZXB7v& zrAY4&X89~W4uka=>r9+FQTkQ_0Xjv(1s6q9K=4z^2Y#M8=iEFR2+oy!;P`O)ls|M1 zIuQI&@&RmN2ixxJx2v>4V~zJtjVOI7`6Jp1XPnuIh2Wc#513n~OwGtZFjew_qkVIo zU$ytz5PVhoe+S{Q%8^qgO78)3#J^TUPB~o-R}j1l2nEaq#~hp3KyVxo3PjEPJUfe; z5d?1nLIL%=*r2h(o>L)8FG~K1Hs*i>8(RooD*3?jlzsNIZU(`=k`J^Rc{e+0HChnt dDXqo-;1^oHB*H?C%i{n5002ovPDHLkV1gg@i>m+t literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-viewThumbnail.png b/public/static/web/images/toolbarButton-viewThumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..584ba55881f9a192ddea645d6d8525bab205e289 GIT binary patch literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf68a!PbLn;`1FBoz$1@g2!+&O99 zf!$e4*(j56dDxhu@!aQ2zL__%gK{mTjH$a~4^&m3zt@ zUaiuXsMG0KBR${yp3FT-zMKuGw=rB1}fgF!j@Pa jH|Ai1Yx4!(rbx9*stQkf2`I11D?x VwzoOr^jH7@002ovPDHLkV1mA0TJZn? literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-zoomIn.png b/public/static/web/images/toolbarButton-zoomIn.png new file mode 100644 index 0000000000000000000000000000000000000000..513d081bc2d2f3eb64801a5e8cde86ef4455829c GIT binary patch literal 136 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6{5@S9Ln;`P7g+!J&&MG-LGg5b zi0J(bTQ@BD_154)g5P7Bj9n-%)M8r~??+_T|q$+)-V kia5^-HX{oL#i@)8E52we&r^_U0~*cX>FVdQ&MBb@0BWi($p8QV literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-zoomIn@2x.png b/public/static/web/images/toolbarButton-zoomIn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d49d5ff107f01daa307bd0f89f98efc31eeec7 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4U>7Fi*Ar*|t5-bTK29GBH`OkMs z;LzH(r}lQj`-ICFx#MpBpCa|4zl7P1x1vYwH*5P29X)2dhZ~*=Z`AwIt>?Q+{9j-O zLo#EO)0^fl@rko%`Z-H3Q%PTTaY>Is!UArQV{B|y4S@^{cTUS(`F>5r0%#?Jr>mdK II;Vst0FRG1RsaA1 literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-zoomOut.png b/public/static/web/images/toolbarButton-zoomOut.png new file mode 100644 index 0000000000000000000000000000000000000000..156c26b941c12a13130e7a7c181d13300a85de89 GIT binary patch literal 88 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6mdKI;Vst01!SC>;M1& literal 0 HcmV?d00001 diff --git a/public/static/web/images/toolbarButton-zoomOut@2x.png b/public/static/web/images/toolbarButton-zoomOut@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..959e1919d5a7a83a9c319de4d65ddaf6dc6c2763 GIT binary patch literal 109 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UCY~;iAr*|t5x6B zz{uFh!Ff-a?~&O9p+bS}jK@2hEqD_O6oi80fl3Ux7>c+~q1|%O$WD@{VVV*9IAr*|t6(1k5>aAfpGT9*~ zXOfab4D%87#veSpl*$zRm>xL?oHRbsHKXB%c*k}H6$4SxhZAg?^X4iGtUtb-qb;)0 qg018G0wld=oSO}#+&x_!LpZJ{CnQuDzHAj@)~YCc zcJ!pUslH1WIk z$<$8#)-<<4$>7e1Lt^WdBv>MS0tC+_?dkdu(KF##vY``K|4|Ok95LarEgxHDk6!z_ xe}ZGN#WGb9Hnl@SJ`EdME-hi&#=_6Qka7RV*Qd`VTY>g4c)I$ztaD0e0sz~DGV1^U literal 0 HcmV?d00001 diff --git a/public/static/web/images/treeitem-expanded.png b/public/static/web/images/treeitem-expanded.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d557351cd2fc80c3abd4b19e52924cd74780d5 GIT binary patch literal 125 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>0wld=oSO}#Ts&PILn;`P75MhNs4Zk;-DbE) zpt_L5GvPZo^g4)z4*}Q$iB}$ABb+ literal 0 HcmV?d00001 diff --git a/public/static/web/images/treeitem-expanded@2x.png b/public/static/web/images/treeitem-expanded@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3b3b6103b356200d05caf7fa692cadf2c1e89043 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mialK%Ln;`P7Z_IVVqcF)sm=DT-LN>Qd~JJV-1b7>MSH-!={>!N!u|d5Lq-e(L{oYQYB2L ziwcD(v8iCf7}P~m6a;DSEN+Ls0z$1F{Z}vlIh-%=-1pAA7lsgmVoD~HuU@^f*=&hK zVrptCl}cqo0)e2vzh5L0-MV$_+O=y!p|EH*rZDo&n>Q|(%VMzv0s-oX#p1TMwoJm} z;^N`qA-z_qR6|2U&CShKRaJ$UT3A>R2n4y*&q%-D&$6sUB5^nzXXjBl91e*@!m_O2@6Sf2(`k)H z1K^DP%$3<}2B6Vs(&_XUNR!C~psA@TnM{6PWHOm-YH9*tGMPRjx3;!8j+4n`KA(>e z;_>_?m&@gHgO@`H~9%Z zpHC)}aU8d`wM7VF0XUt`csy<}7}RPt0G4IB|5R3177T7|Y^;}*lw{13l9J3MdGh3` zT3t6WF+mfe(dg*tXlrY0Fc{3_sMTtN!4QwfolYkJ#9}d(O2sgY%jL>#%e!~)#9|4+ zL?V&g=*yRX15A0jY-VQW!-o%qkZ3e|@7_HC)z#Gp2M3uhlk)ePAZk=T`EGz-rgQ1MBPSc`IZTiA1DQDaUaD z(9_d%QeI&sA>_e>-ziln6n1xa+wJxO)SjN6Pq(bs>%SRE2w7TM;;)NV`_r>$&+=yK z_4@CFq*`8H9v%Jd^5q|BO^d}+2zi#qW+@a3b#`{qvd^E-W<@_W_M0D{i}m&OvGm=VpPxT15)hPj($ez7hvQ165NIeZFqPXz~tm4 zA%r1>ghC;eN+l2oUc7igKbid1di?nD@p0N87`PB0}AW)t6F^KBC4|`Pq-;wqL i4(>&eRNwdSiGKkB{*^h~m%D2K0000 div { + color: transparent; + position: absolute; + white-space: pre; + cursor: text; + -webkit-transform-origin: 0% 0%; + -moz-transform-origin: 0% 0%; + -o-transform-origin: 0% 0%; + -ms-transform-origin: 0% 0%; + transform-origin: 0% 0%; +} + +.textLayer .highlight { + margin: -1px; + padding: 1px; + + background-color: rgb(180, 0, 170); + border-radius: 4px; +} + +.textLayer .highlight.begin { + border-radius: 4px 0px 0px 4px; +} + +.textLayer .highlight.end { + border-radius: 0px 4px 4px 0px; +} + +.textLayer .highlight.middle { + border-radius: 0px; +} + +.textLayer .highlight.selected { + background-color: rgb(0, 100, 0); +} + +.textLayer ::selection { background: rgb(0,0,255); } +.textLayer ::-moz-selection { background: rgb(0,0,255); } + +.textLayer .endOfContent { + display: block; + position: absolute; + left: 0px; + top: 100%; + right: 0px; + bottom: 0px; + z-index: -1; + cursor: default; + -webkit-user-select: none; + -ms-user-select: none; + -moz-user-select: none; +} + +.textLayer .endOfContent.active { + top: 0px; +} + + +.annotationLayer section { + position: absolute; +} + +.annotationLayer .linkAnnotation > a { + position: absolute; + font-size: 1em; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.annotationLayer .linkAnnotation > a /* -ms-a */ { + background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") 0 0 repeat; +} + +.annotationLayer .linkAnnotation > a:hover { + opacity: 0.2; + background: #ff0; + box-shadow: 0px 2px 10px #ff0; +} + +.annotationLayer .textAnnotation img { + position: absolute; + cursor: pointer; +} + +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea, +.annotationLayer .choiceWidgetAnnotation select, +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + background-color: rgba(0, 54, 255, 0.13); + border: 1px solid transparent; + box-sizing: border-box; + font-size: 9px; + height: 100%; + padding: 0 3px; + vertical-align: top; + width: 100%; +} + +.annotationLayer .textWidgetAnnotation textarea { + font: message-box; + font-size: 9px; + resize: none; +} + +.annotationLayer .textWidgetAnnotation input[disabled], +.annotationLayer .textWidgetAnnotation textarea[disabled], +.annotationLayer .choiceWidgetAnnotation select[disabled], +.annotationLayer .buttonWidgetAnnotation.checkBox input[disabled], +.annotationLayer .buttonWidgetAnnotation.radioButton input[disabled] { + background: none; + border: 1px solid transparent; + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover, +.annotationLayer .choiceWidgetAnnotation select:hover, +.annotationLayer .buttonWidgetAnnotation.checkBox input:hover, +.annotationLayer .buttonWidgetAnnotation.radioButton input:hover { + border: 1px solid #000; +} + +.annotationLayer .textWidgetAnnotation input:focus, +.annotationLayer .textWidgetAnnotation textarea:focus, +.annotationLayer .choiceWidgetAnnotation select:focus { + background: none; + border: 1px solid transparent; +} + +.annotationLayer .textWidgetAnnotation input.comb { + font-family: monospace; + padding-left: 2px; + padding-right: 0; +} + +.annotationLayer .textWidgetAnnotation input.comb:focus { + /* + * Letter spacing is placed on the right side of each character. Hence, the + * letter spacing of the last character may be placed outside the visible + * area, causing horizontal scrolling. We avoid this by extending the width + * when the element has focus and revert this when it loses focus. + */ + width: 115%; +} + +.annotationLayer .buttonWidgetAnnotation.checkBox input, +.annotationLayer .buttonWidgetAnnotation.radioButton input { + -webkit-appearance: none; + -moz-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.annotationLayer .popupWrapper { + position: absolute; + width: 20em; +} + +.annotationLayer .popup { + position: absolute; + z-index: 200; + max-width: 20em; + background-color: #FFFF99; + box-shadow: 0px 2px 5px #333; + border-radius: 2px; + padding: 0.6em; + margin-left: 5px; + cursor: pointer; + word-wrap: break-word; +} + +.annotationLayer .popup h1 { + font-size: 1em; + border-bottom: 1px solid #000000; + padding-bottom: 0.2em; +} + +.annotationLayer .popup p { + padding-top: 0.2em; +} + +.annotationLayer .highlightAnnotation, +.annotationLayer .underlineAnnotation, +.annotationLayer .squigglyAnnotation, +.annotationLayer .strikeoutAnnotation, +.annotationLayer .lineAnnotation svg line, +.annotationLayer .fileAttachmentAnnotation { + cursor: pointer; +} + +.pdfViewer .canvasWrapper { + overflow: hidden; +} + +.pdfViewer .page { + direction: ltr; + width: 816px; + height: 1056px; + margin: 1px auto -8px auto; + position: relative; + overflow: visible; + border: 9px solid transparent; + background-clip: content-box; + border-image: url(images/shadow.png) 9 9 repeat; + background-color: white; +} + +.pdfViewer.removePageBorders .page { + margin: 0px auto 10px auto; + border: none; +} + +.pdfViewer.singlePageView { + display: inline-block; +} + +.pdfViewer.singlePageView .page { + margin: 0; + border: none; +} + +.pdfViewer .page canvas { + margin: 0; + display: block; +} + +.pdfViewer .page canvas[hidden] { + display: none; +} + +.pdfViewer .page .loadingIcon { + position: absolute; + display: block; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: url('images/loading-icon.gif') center no-repeat; +} + +.pdfPresentationMode:-webkit-full-screen .pdfViewer .page { + margin-bottom: 100%; + border: 0; +} + +.pdfPresentationMode:-moz-full-screen .pdfViewer .page { + margin-bottom: 100%; + border: 0; +} + +.pdfPresentationMode:-ms-fullscreen .pdfViewer .page { + margin-bottom: 100% !important; + border: 0; +} + +.pdfPresentationMode:fullscreen .pdfViewer .page { + margin-bottom: 100%; + border: 0; +} + +* { + padding: 0; + margin: 0; +} + +html { + height: 100%; + width: 100%; + /* Font size is needed to make the activity bar the correct size. */ + font-size: 10px; +} + +body { + height: 100%; + width: 100%; + background-color: #404040; + background-image: url(images/texture.png); +} + +body, +input, +button, +select { + font: message-box; + outline: none; +} + +.hidden { + display: none !important; +} +[hidden] { + display: none !important; +} + +#viewerContainer.pdfPresentationMode:-webkit-full-screen { + top: 0px; + border-top: 2px solid transparent; + background-color: #000; + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; +} + +#viewerContainer.pdfPresentationMode:-moz-full-screen { + top: 0px; + border-top: 2px solid transparent; + background-color: #000; + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -moz-user-select: none; +} + +#viewerContainer.pdfPresentationMode:-ms-fullscreen { + top: 0px !important; + border-top: 2px solid transparent; + width: 100%; + height: 100%; + overflow: hidden !important; + cursor: none; + -ms-user-select: none; +} + +#viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { + background-color: #000; +} + +#viewerContainer.pdfPresentationMode:fullscreen { + top: 0px; + border-top: 2px solid transparent; + background-color: #000; + width: 100%; + height: 100%; + overflow: hidden; + cursor: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.pdfPresentationMode:-webkit-full-screen a:not(.internalLink) { + display: none; +} + +.pdfPresentationMode:-moz-full-screen a:not(.internalLink) { + display: none; +} + +.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) { + display: none !important; +} + +.pdfPresentationMode:fullscreen a:not(.internalLink) { + display: none; +} + +.pdfPresentationMode:-webkit-full-screen .textLayer > div { + cursor: none; +} + +.pdfPresentationMode:-moz-full-screen .textLayer > div { + cursor: none; +} + +.pdfPresentationMode:-ms-fullscreen .textLayer > div { + cursor: none; +} + +.pdfPresentationMode:fullscreen .textLayer > div { + cursor: none; +} + +.pdfPresentationMode.pdfPresentationModeControls > *, +.pdfPresentationMode.pdfPresentationModeControls .textLayer > div { + cursor: default; +} + +#outerContainer { + width: 100%; + height: 100%; + position: relative; +} + +#sidebarContainer { + position: absolute; + top: 0; + bottom: 0; + width: 200px; + visibility: hidden; + -webkit-transition-duration: 200ms; + -webkit-transition-timing-function: ease; + transition-duration: 200ms; + transition-timing-function: ease; + +} +html[dir='ltr'] #sidebarContainer { + -webkit-transition-property: left; + transition-property: left; + left: -200px; +} +html[dir='rtl'] #sidebarContainer { + -webkit-transition-property: right; + transition-property: right; + right: -200px; +} + +#outerContainer.sidebarMoving > #sidebarContainer, +#outerContainer.sidebarOpen > #sidebarContainer { + visibility: visible; +} +html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer { + left: 0px; +} +html[dir='rtl'] #outerContainer.sidebarOpen > #sidebarContainer { + right: 0px; +} + +#mainContainer { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + min-width: 320px; + -webkit-transition-duration: 200ms; + -webkit-transition-timing-function: ease; + transition-duration: 200ms; + transition-timing-function: ease; +} +html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer { + -webkit-transition-property: left; + transition-property: left; + left: 200px; +} +html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer { + -webkit-transition-property: right; + transition-property: right; + right: 200px; +} + +#sidebarContent { + top: 32px; + bottom: 0; + overflow: auto; + -webkit-overflow-scrolling: touch; + position: absolute; + width: 200px; + background-color: hsla(0,0%,0%,.1); +} +html[dir='ltr'] #sidebarContent { + left: 0; + box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25); +} +html[dir='rtl'] #sidebarContent { + right: 0; + box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25); +} + +#viewerContainer { + overflow: auto; + -webkit-overflow-scrolling: touch; + position: absolute; + top: 32px; + right: 0; + bottom: 0; + left: 0; + outline: none; +} +html[dir='ltr'] #viewerContainer { + box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); +} +html[dir='rtl'] #viewerContainer { + box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05); +} + +.toolbar { + position: relative; + left: 0; + right: 0; + z-index: 9999; + cursor: default; +} + +#toolbarContainer { + width: 100%; +} + +#toolbarSidebar { + width: 200px; + height: 32px; + background-color: #424242; /* fallback */ + background-image: url(images/texture.png), + linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); +} +html[dir='ltr'] #toolbarSidebar { + box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), + inset 0 -1px 0 hsla(0,0%,100%,.05), + 0 1px 0 hsla(0,0%,0%,.15), + 0 0 1px hsla(0,0%,0%,.1); +} +html[dir='rtl'] #toolbarSidebar { + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), + inset 0 1px 0 hsla(0,0%,100%,.05), + 0 1px 0 hsla(0,0%,0%,.15), + 0 0 1px hsla(0,0%,0%,.1); +} + +#toolbarContainer, .findbar, .secondaryToolbar { + position: relative; + height: 32px; + background-color: #474747; /* fallback */ + background-image: url(images/texture.png), + linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); +} +html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar { + box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), + inset 0 1px 1px hsla(0,0%,0%,.15), + inset 0 -1px 0 hsla(0,0%,100%,.05), + 0 1px 0 hsla(0,0%,0%,.15), + 0 1px 1px hsla(0,0%,0%,.1); +} +html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { + box-shadow: inset -1px 0 0 hsla(0,0%,100%,.08), + inset 0 1px 1px hsla(0,0%,0%,.15), + inset 0 -1px 0 hsla(0,0%,100%,.05), + 0 1px 0 hsla(0,0%,0%,.15), + 0 1px 1px hsla(0,0%,0%,.1); +} + +#toolbarViewer { + height: 32px; +} + +#loadingBar { + position: relative; + width: 100%; + height: 4px; + background-color: #333; + border-bottom: 1px solid #333; +} + +#loadingBar .progress { + position: absolute; + top: 0; + left: 0; + width: 0%; + height: 100%; + background-color: #ddd; + overflow: hidden; + -webkit-transition: width 200ms; + transition: width 200ms; +} + +@-webkit-keyframes progressIndeterminate { + 0% { left: -142px; } + 100% { left: 0; } +} + +@keyframes progressIndeterminate { + 0% { left: -142px; } + 100% { left: 0; } +} + +#loadingBar .progress.indeterminate { + background-color: #999; + -webkit-transition: none; + transition: none; +} + +#loadingBar .progress.indeterminate .glimmer { + position: absolute; + top: 0; + left: 0; + height: 100%; + width: calc(100% + 150px); + + background: repeating-linear-gradient(135deg, + #bbb 0, #999 5px, + #999 45px, #ddd 55px, + #ddd 95px, #bbb 100px); + + -webkit-animation: progressIndeterminate 950ms linear infinite; + animation: progressIndeterminate 950ms linear infinite; +} + +.findbar, .secondaryToolbar { + top: 32px; + position: absolute; + z-index: 10000; + height: auto; + min-width: 16px; + padding: 0px 6px 0px 6px; + margin: 4px 2px 4px 2px; + color: hsl(0,0%,85%); + font-size: 12px; + line-height: 14px; + text-align: left; + cursor: default; +} + +.findbar { + min-width: 300px; +} +.findbar > div { + height: 32px; +} +.findbar.wrapContainers > div { + clear: both; +} +.findbar.wrapContainers > div#findbarMessageContainer { + height: auto; +} +html[dir='ltr'] .findbar { + left: 68px; +} +html[dir='rtl'] .findbar { + right: 68px; +} + +.findbar label { + -webkit-user-select: none; + -moz-user-select: none; +} + +#findInput { + width: 200px; +} +#findInput::-webkit-input-placeholder { + font-style: italic; +} +#findInput::-moz-placeholder { + font-style: italic; +} +#findInput:-ms-input-placeholder { + font-style: italic; +} +#findInput::placeholder { + font-style: italic; +} +#findInput[data-status="pending"] { + background-image: url(images/loading-small.png); + background-repeat: no-repeat; + background-position: right; +} +html[dir='rtl'] #findInput[data-status="pending"] { + background-position: left; +} + +.secondaryToolbar { + padding: 6px; + height: auto; + z-index: 30000; +} +html[dir='ltr'] .secondaryToolbar { + right: 4px; +} +html[dir='rtl'] .secondaryToolbar { + left: 4px; +} + +#secondaryToolbarButtonContainer { + max-width: 200px; + max-height: 400px; + overflow-y: auto; + -webkit-overflow-scrolling: touch; + margin-bottom: -4px; +} + +.doorHanger, +.doorHangerRight { + border: 1px solid hsla(0,0%,0%,.5); + border-radius: 2px; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +.doorHanger:after, .doorHanger:before, +.doorHangerRight:after, .doorHangerRight:before { + bottom: 100%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} +.doorHanger:after, +.doorHangerRight:after { + border-bottom-color: hsla(0,0%,32%,.99); + border-width: 8px; +} +.doorHanger:before, +.doorHangerRight:before { + border-bottom-color: hsla(0,0%,0%,.5); + border-width: 9px; +} + +html[dir='ltr'] .doorHanger:after, +html[dir='rtl'] .doorHangerRight:after { + left: 13px; + margin-left: -8px; +} + +html[dir='ltr'] .doorHanger:before, +html[dir='rtl'] .doorHangerRight:before { + left: 13px; + margin-left: -9px; +} + +html[dir='rtl'] .doorHanger:after, +html[dir='ltr'] .doorHangerRight:after { + right: 13px; + margin-right: -8px; +} + +html[dir='rtl'] .doorHanger:before, +html[dir='ltr'] .doorHangerRight:before { + right: 13px; + margin-right: -9px; +} + +#findResultsCount { + background-color: hsl(0, 0%, 85%); + color: hsl(0, 0%, 32%); + text-align: center; + padding: 3px 4px; +} + +#findMsg { + font-style: italic; + color: #A6B7D0; +} +#findMsg:empty { + display: none; +} + +#findInput.notFound { + background-color: rgb(255, 102, 102); +} + +#toolbarViewerMiddle { + position: absolute; + left: 50%; + transform: translateX(-50%); +} + +html[dir='ltr'] #toolbarViewerLeft, +html[dir='rtl'] #toolbarViewerRight { + float: left; +} +html[dir='ltr'] #toolbarViewerRight, +html[dir='rtl'] #toolbarViewerLeft { + float: right; +} +html[dir='ltr'] #toolbarViewerLeft > *, +html[dir='ltr'] #toolbarViewerMiddle > *, +html[dir='ltr'] #toolbarViewerRight > *, +html[dir='ltr'] .findbar * { + position: relative; + float: left; +} +html[dir='rtl'] #toolbarViewerLeft > *, +html[dir='rtl'] #toolbarViewerMiddle > *, +html[dir='rtl'] #toolbarViewerRight > *, +html[dir='rtl'] .findbar * { + position: relative; + float: right; +} + +html[dir='ltr'] .splitToolbarButton { + margin: 3px 2px 4px 0; + display: inline-block; +} +html[dir='rtl'] .splitToolbarButton { + margin: 3px 0 4px 2px; + display: inline-block; +} +html[dir='ltr'] .splitToolbarButton > .toolbarButton { + border-radius: 0; + float: left; +} +html[dir='rtl'] .splitToolbarButton > .toolbarButton { + border-radius: 0; + float: right; +} + +.toolbarButton, +.secondaryToolbarButton, +.overlayButton { + border: 0 none; + background: none; + width: 32px; + height: 25px; +} + +.toolbarButton > span { + display: inline-block; + width: 0; + height: 0; + overflow: hidden; +} + +.toolbarButton[disabled], +.secondaryToolbarButton[disabled], +.overlayButton[disabled] { + opacity: .5; +} + +.splitToolbarButton.toggled .toolbarButton { + margin: 0; +} + +.splitToolbarButton:hover > .toolbarButton, +.splitToolbarButton:focus > .toolbarButton, +.splitToolbarButton.toggled > .toolbarButton, +.toolbarButton.textButton { + background-color: hsla(0,0%,0%,.12); + background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); + background-clip: padding-box; + border: 1px solid hsla(0,0%,0%,.35); + border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); + box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, + 0 0 1px hsla(0,0%,100%,.15) inset, + 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; + -webkit-transition-duration: 150ms; + -webkit-transition-timing-function: ease; + transition-property: background-color, border-color, box-shadow; + transition-duration: 150ms; + transition-timing-function: ease; + +} +.splitToolbarButton > .toolbarButton:hover, +.splitToolbarButton > .toolbarButton:focus, +.dropdownToolbarButton:hover, +.overlayButton:hover, +.overlayButton:focus, +.toolbarButton.textButton:hover, +.toolbarButton.textButton:focus { + background-color: hsla(0,0%,0%,.2); + box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, + 0 0 1px hsla(0,0%,100%,.15) inset, + 0 0 1px hsla(0,0%,0%,.05); + z-index: 199; +} +.splitToolbarButton > .toolbarButton { + position: relative; +} +html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child, +html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child { + position: relative; + margin: 0; + margin-right: -1px; + border-top-left-radius: 2px; + border-bottom-left-radius: 2px; + border-right-color: transparent; +} +html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child, +html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child { + position: relative; + margin: 0; + margin-left: -1px; + border-top-right-radius: 2px; + border-bottom-right-radius: 2px; + border-left-color: transparent; +} +.splitToolbarButtonSeparator { + padding: 8px 0; + width: 1px; + background-color: hsla(0,0%,0%,.5); + z-index: 99; + box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); + display: inline-block; + margin: 5px 0; +} +html[dir='ltr'] .splitToolbarButtonSeparator { + float: left; +} +html[dir='rtl'] .splitToolbarButtonSeparator { + float: right; +} +.splitToolbarButton:hover > .splitToolbarButtonSeparator, +.splitToolbarButton.toggled > .splitToolbarButtonSeparator { + padding: 12px 0; + margin: 1px 0; + box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); + -webkit-transition-property: padding; + -webkit-transition-duration: 10ms; + -webkit-transition-timing-function: ease; + transition-property: padding; + transition-duration: 10ms; + transition-timing-function: ease; +} + +.toolbarButton, +.dropdownToolbarButton, +.secondaryToolbarButton, +.overlayButton { + min-width: 16px; + padding: 2px 6px 0; + border: 1px solid transparent; + border-radius: 2px; + color: hsla(0,0%,100%,.8); + font-size: 12px; + line-height: 14px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + /* Opera does not support user-select, use <... unselectable="on"> instead */ + cursor: default; + -webkit-transition-property: background-color, border-color, box-shadow; + -webkit-transition-duration: 150ms; + -webkit-transition-timing-function: ease; + transition-property: background-color, border-color, box-shadow; + transition-duration: 150ms; + transition-timing-function: ease; +} + +html[dir='ltr'] .toolbarButton, +html[dir='ltr'] .overlayButton, +html[dir='ltr'] .dropdownToolbarButton { + margin: 3px 2px 4px 0; +} +html[dir='rtl'] .toolbarButton, +html[dir='rtl'] .overlayButton, +html[dir='rtl'] .dropdownToolbarButton { + margin: 3px 0 4px 2px; +} + +.toolbarButton:hover, +.toolbarButton:focus, +.dropdownToolbarButton, +.overlayButton, +.secondaryToolbarButton:hover, +.secondaryToolbarButton:focus { + background-color: hsla(0,0%,0%,.12); + background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); + background-clip: padding-box; + border: 1px solid hsla(0,0%,0%,.35); + border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); + box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, + 0 0 1px hsla(0,0%,100%,.15) inset, + 0 1px 0 hsla(0,0%,100%,.05); +} + +.toolbarButton:hover:active, +.overlayButton:hover:active, +.dropdownToolbarButton:hover:active, +.secondaryToolbarButton:hover:active { + background-color: hsla(0,0%,0%,.2); + background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); + border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); + box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, + 0 0 1px hsla(0,0%,0%,.2) inset, + 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; + -webkit-transition-duration: 10ms; + -webkit-transition-timing-function: linear; + transition-property: background-color, border-color, box-shadow; + transition-duration: 10ms; + transition-timing-function: linear; +} + +.toolbarButton.toggled, +.splitToolbarButton.toggled > .toolbarButton.toggled, +.secondaryToolbarButton.toggled { + background-color: hsla(0,0%,0%,.3); + background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); + border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); + box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, + 0 0 1px hsla(0,0%,0%,.2) inset, + 0 1px 0 hsla(0,0%,100%,.05); + -webkit-transition-property: background-color, border-color, box-shadow; + -webkit-transition-duration: 10ms; + -webkit-transition-timing-function: linear; + transition-property: background-color, border-color, box-shadow; + transition-duration: 10ms; + transition-timing-function: linear; +} + +.toolbarButton.toggled:hover:active, +.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, +.secondaryToolbarButton.toggled:hover:active { + background-color: hsla(0,0%,0%,.4); + border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55); + box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset, + 0 0 1px hsla(0,0%,0%,.3) inset, + 0 1px 0 hsla(0,0%,100%,.05); +} + +.dropdownToolbarButton { + width: 120px; + max-width: 120px; + padding: 0; + overflow: hidden; + background: url(images/toolbarButton-menuArrows.png) no-repeat; +} +html[dir='ltr'] .dropdownToolbarButton { + background-position: 95%; +} +html[dir='rtl'] .dropdownToolbarButton { + background-position: 5%; +} + +.dropdownToolbarButton > select { + min-width: 140px; + font-size: 12px; + color: hsl(0,0%,95%); + margin: 0; + padding: 3px 2px 2px; + border: none; + background: rgba(0,0,0,0); /* Opera does not support 'transparent' +

    + + +
    + + + + + +
    + +
    + +
    + + +
    + +
    +
    +
    +
    + +
    + +
    + +
    + +
    + + +
    +
    + + + + + + + Current View + + +
    + + +
    +
    +
    + +
    + +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + +
    +
    +
    + + + + + + + +
    + + + diff --git a/public/static/web/viewer.js b/public/static/web/viewer.js new file mode 100644 index 0000000..9a4605f --- /dev/null +++ b/public/static/web/viewer.js @@ -0,0 +1,10086 @@ +/* Copyright 2017 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. + */ + +/** ****/ (function(modules) { // webpackBootstrap +/** ****/ // The module cache +/** ****/ var installedModules = {} + /** ****/ + /** ****/ // The require function + /** ****/ function __webpack_require__(moduleId) { + /** ****/ + /** ****/ // Check if module is in cache + /** ****/ if (installedModules[moduleId]) { + /** ****/ return installedModules[moduleId].exports + /** ****/ } + /** ****/ // Create a new module (and put it into the cache) + /** ****/ var module = installedModules[moduleId] = { + /** ****/ i: moduleId, + /** ****/ l: false, + /** ****/ exports: {} + /** ****/ } + /** ****/ + /** ****/ // Execute the module function + /** ****/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__) + /** ****/ + /** ****/ // Flag the module as loaded + /** ****/ module.l = true + /** ****/ + /** ****/ // Return the exports of the module + /** ****/ return module.exports + /** ****/ } + /** ****/ + /** ****/ + /** ****/ // expose the modules object (__webpack_modules__) + /** ****/ __webpack_require__.m = modules + /** ****/ + /** ****/ // expose the module cache + /** ****/ __webpack_require__.c = installedModules + /** ****/ + /** ****/ // identity function for calling harmony imports with the correct context + /** ****/ __webpack_require__.i = function(value) { return value } + /** ****/ + /** ****/ // define getter function for harmony exports + /** ****/ __webpack_require__.d = function(exports, name, getter) { + /** ****/ if (!__webpack_require__.o(exports, name)) { + /** ****/ Object.defineProperty(exports, name, { + /** ****/ configurable: false, + /** ****/ enumerable: true, + /** ****/ get: getter + /** ****/ }) + /** ****/ } + /** ****/ } + /** ****/ + /** ****/ // getDefaultExport function for compatibility with non-harmony modules + /** ****/ __webpack_require__.n = function(module) { + /** ****/ var getter = module && module.__esModule + /** ****/ ? function getDefault() { return module['default'] } + /** ****/ : function getModuleExports() { return module } + /** ****/ __webpack_require__.d(getter, 'a', getter) + /** ****/ return getter + /** ****/ } + /** ****/ + /** ****/ // Object.prototype.hasOwnProperty.call + /** ****/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property) } + /** ****/ + /** ****/ // __webpack_public_path__ + /** ****/ __webpack_require__.p = '' + /** ****/ + /** ****/ // Load entry module and return exports + /** ****/ return __webpack_require__(__webpack_require__.s = 33) +/** ****/ })([ +/* 0 */ +/** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.localized = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.roundToDivide = exports.getVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.NullL10n = exports.mozL10n = exports.RendererType = exports.cloneObj = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var CSS_UNITS = 96.0 / 72.0 + var DEFAULT_SCALE_VALUE = 'auto' + var DEFAULT_SCALE = 1.0 + var MIN_SCALE = 0.25 + var MAX_SCALE = 10.0 + var UNKNOWN_SCALE = 0 + var MAX_AUTO_SCALE = 1.25 + var SCROLLBAR_PADDING = 40 + var VERTICAL_PADDING = 5 + var RendererType = { + CANVAS: 'canvas', + SVG: 'svg' + } + function formatL10nValue(text, args) { + if (!args) { + return text + } + return text.replace(/\{\{\s*(\w+)\s*\}\}/g, function(all, name) { + return name in args ? args[name] : '{{' + name + '}}' + }) + } + var NullL10n = { + get: function get(property, args, fallback) { + return Promise.resolve(formatL10nValue(fallback, args)) + }, + translate: function translate(element) { + return Promise.resolve() + } + } + _pdfjsLib.PDFJS.disableFullscreen = _pdfjsLib.PDFJS.disableFullscreen === undefined ? false : _pdfjsLib.PDFJS.disableFullscreen + _pdfjsLib.PDFJS.useOnlyCssZoom = _pdfjsLib.PDFJS.useOnlyCssZoom === undefined ? false : _pdfjsLib.PDFJS.useOnlyCssZoom + _pdfjsLib.PDFJS.maxCanvasPixels = _pdfjsLib.PDFJS.maxCanvasPixels === undefined ? 16777216 : _pdfjsLib.PDFJS.maxCanvasPixels + _pdfjsLib.PDFJS.disableHistory = _pdfjsLib.PDFJS.disableHistory === undefined ? false : _pdfjsLib.PDFJS.disableHistory + _pdfjsLib.PDFJS.disableTextLayer = _pdfjsLib.PDFJS.disableTextLayer === undefined ? false : _pdfjsLib.PDFJS.disableTextLayer + _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom = _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom === undefined ? false : _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom + { + _pdfjsLib.PDFJS.locale = _pdfjsLib.PDFJS.locale === undefined && typeof navigator !== 'undefined' ? navigator.language : _pdfjsLib.PDFJS.locale + } + function getOutputScale(ctx) { + var devicePixelRatio = window.devicePixelRatio || 1 + var backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1 + var pixelRatio = devicePixelRatio / backingStoreRatio + return { + sx: pixelRatio, + sy: pixelRatio, + scaled: pixelRatio !== 1 + } + } + function scrollIntoView(element, spot) { + var skipOverflowHiddenElements = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + + var parent = element.offsetParent + if (!parent) { + console.error('offsetParent is not set -- cannot scroll') + return + } + var offsetY = element.offsetTop + element.clientTop + var offsetX = element.offsetLeft + element.clientLeft + while (parent.clientHeight === parent.scrollHeight || skipOverflowHiddenElements && getComputedStyle(parent).overflow === 'hidden') { + if (parent.dataset._scaleY) { + offsetY /= parent.dataset._scaleY + offsetX /= parent.dataset._scaleX + } + offsetY += parent.offsetTop + offsetX += parent.offsetLeft + parent = parent.offsetParent + if (!parent) { + return + } + } + if (spot) { + if (spot.top !== undefined) { + offsetY += spot.top + } + if (spot.left !== undefined) { + offsetX += spot.left + parent.scrollLeft = offsetX + } + } + parent.scrollTop = offsetY + } + function watchScroll(viewAreaElement, callback) { + var debounceScroll = function debounceScroll(evt) { + if (rAF) { + return + } + rAF = window.requestAnimationFrame(function viewAreaElementScrolled() { + rAF = null + var currentY = viewAreaElement.scrollTop + var lastY = state.lastY + if (currentY !== lastY) { + state.down = currentY > lastY + } + state.lastY = currentY + callback(state) + }) + } + var state = { + down: true, + lastY: viewAreaElement.scrollTop, + _eventHandler: debounceScroll + } + var rAF = null + viewAreaElement.addEventListener('scroll', debounceScroll, true) + return state + } + function parseQueryString(query) { + var parts = query.split('&') + var params = Object.create(null) + for (var i = 0, ii = parts.length; i < ii; ++i) { + var param = parts[i].split('=') + var key = param[0].toLowerCase() + var value = param.length > 1 ? param[1] : null + params[decodeURIComponent(key)] = decodeURIComponent(value) + } + return params + } + function binarySearchFirstItem(items, condition) { + var minIndex = 0 + var maxIndex = items.length - 1 + if (items.length === 0 || !condition(items[maxIndex])) { + return items.length + } + if (condition(items[minIndex])) { + return minIndex + } + while (minIndex < maxIndex) { + var currentIndex = minIndex + maxIndex >> 1 + var currentItem = items[currentIndex] + if (condition(currentItem)) { + maxIndex = currentIndex + } else { + minIndex = currentIndex + 1 + } + } + return minIndex + } + function approximateFraction(x) { + if (Math.floor(x) === x) { + return [x, 1] + } + var xinv = 1 / x + var limit = 8 + if (xinv > limit) { + return [1, limit] + } else if (Math.floor(xinv) === xinv) { + return [1, xinv] + } + var x_ = x > 1 ? xinv : x + var a = 0, + b = 1, + c = 1, + d = 1 + while (true) { + var p = a + c, + q = b + d + if (q > limit) { + break + } + if (x_ <= p / q) { + c = p + d = q + } else { + a = p + b = q + } + } + var result = void 0 + if (x_ - a / b < c / d - x_) { + result = x_ === x ? [a, b] : [b, a] + } else { + result = x_ === x ? [c, d] : [d, c] + } + return result + } + function roundToDivide(x, div) { + var r = x % div + return r === 0 ? x : Math.round(x - r + div) + } + function getVisibleElements(scrollEl, views) { + var sortByVisibility = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + + var top = scrollEl.scrollTop, + bottom = top + scrollEl.clientHeight + var left = scrollEl.scrollLeft, + right = left + scrollEl.clientWidth + function isElementBottomBelowViewTop(view) { + var element = view.div + var elementBottom = element.offsetTop + element.clientTop + element.clientHeight + return elementBottom > top + } + var visible = [], + view = void 0, + element = void 0 + var currentHeight = void 0, + viewHeight = void 0, + hiddenHeight = void 0, + percentHeight = void 0 + var currentWidth = void 0, + viewWidth = void 0 + var firstVisibleElementInd = views.length === 0 ? 0 : binarySearchFirstItem(views, isElementBottomBelowViewTop) + for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) { + view = views[i] + element = view.div + currentHeight = element.offsetTop + element.clientTop + viewHeight = element.clientHeight + if (currentHeight > bottom) { + break + } + currentWidth = element.offsetLeft + element.clientLeft + viewWidth = element.clientWidth + if (currentWidth + viewWidth < left || currentWidth > right) { + continue + } + hiddenHeight = Math.max(0, top - currentHeight) + Math.max(0, currentHeight + viewHeight - bottom) + percentHeight = (viewHeight - hiddenHeight) * 100 / viewHeight | 0 + visible.push({ + id: view.id, + x: currentWidth, + y: currentHeight, + view: view, + percent: percentHeight + }) + } + var first = visible[0] + var last = visible[visible.length - 1] + if (sortByVisibility) { + visible.sort(function(a, b) { + var pc = a.percent - b.percent + if (Math.abs(pc) > 0.001) { + return -pc + } + return a.id - b.id + }) + } + return { + first: first, + last: last, + views: visible + } + } + function noContextMenuHandler(evt) { + evt.preventDefault() + } + function isDataSchema(url) { + var i = 0, + ii = url.length + while (i < ii && url[i].trim() === '') { + i++ + } + return url.substr(i, 5).toLowerCase() === 'data:' + } + function getPDFFileNameFromURL(url) { + var defaultFilename = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'document.pdf' + + if (isDataSchema(url)) { + console.warn('getPDFFileNameFromURL: ' + 'ignoring "data:" URL for performance reasons.') + return defaultFilename + } + var reURI = /^(?:(?:[^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/ + var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i + var splitURI = reURI.exec(url) + var suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || reFilename.exec(splitURI[3]) + if (suggestedFilename) { + suggestedFilename = suggestedFilename[0] + if (suggestedFilename.indexOf('%') !== -1) { + try { + suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0] + } catch (ex) {} + } + } + return suggestedFilename || defaultFilename + } + function normalizeWheelEventDelta(evt) { + var delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY) + var angle = Math.atan2(evt.deltaY, evt.deltaX) + if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) { + delta = -delta + } + var MOUSE_DOM_DELTA_PIXEL_MODE = 0 + var MOUSE_DOM_DELTA_LINE_MODE = 1 + var MOUSE_PIXELS_PER_LINE = 30 + var MOUSE_LINES_PER_PAGE = 30 + if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) { + delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE + } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) { + delta /= MOUSE_LINES_PER_PAGE + } + return delta + } + function cloneObj(obj) { + var result = Object.create(null) + for (var i in obj) { + if (Object.prototype.hasOwnProperty.call(obj, i)) { + result[i] = obj[i] + } + } + return result + } + var animationStarted = new Promise(function(resolve) { + window.requestAnimationFrame(resolve) + }) + var mozL10n = void 0 + var localized = Promise.resolve() + + var EventBus = (function() { + function EventBus() { + _classCallCheck(this, EventBus) + + this._listeners = Object.create(null) + } + + _createClass(EventBus, [{ + key: 'on', + value: function on(eventName, listener) { + var eventListeners = this._listeners[eventName] + if (!eventListeners) { + eventListeners = [] + this._listeners[eventName] = eventListeners + } + eventListeners.push(listener) + } + }, { + key: 'off', + value: function off(eventName, listener) { + var eventListeners = this._listeners[eventName] + var i = void 0 + if (!eventListeners || (i = eventListeners.indexOf(listener)) < 0) { + return + } + eventListeners.splice(i, 1) + } + }, { + key: 'dispatch', + value: function dispatch(eventName) { + var eventListeners = this._listeners[eventName] + if (!eventListeners || eventListeners.length === 0) { + return + } + var args = Array.prototype.slice.call(arguments, 1) + eventListeners.slice(0).forEach(function(listener) { + listener.apply(null, args) + }) + } + }]) + + return EventBus + }()) + + function clamp(v, min, max) { + return Math.min(Math.max(v, min), max) + } + + var ProgressBar = (function() { + function ProgressBar(id) { + var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, + height = _ref.height, + width = _ref.width, + units = _ref.units + + _classCallCheck(this, ProgressBar) + + this.visible = true + this.div = document.querySelector(id + ' .progress') + this.bar = this.div.parentNode + this.height = height || 100 + this.width = width || 100 + this.units = units || '%' + this.div.style.height = this.height + this.units + this.percent = 0 + } + + _createClass(ProgressBar, [{ + key: '_updateBar', + value: function _updateBar() { + if (this._indeterminate) { + this.div.classList.add('indeterminate') + this.div.style.width = this.width + this.units + return + } + this.div.classList.remove('indeterminate') + var progressSize = this.width * this._percent / 100 + this.div.style.width = progressSize + this.units + } + }, { + key: 'setWidth', + value: function setWidth(viewer) { + if (!viewer) { + return + } + var container = viewer.parentNode + var scrollbarWidth = container.offsetWidth - viewer.offsetWidth + if (scrollbarWidth > 0) { + this.bar.setAttribute('style', 'width: calc(100% - ' + scrollbarWidth + 'px);') + } + } + }, { + key: 'hide', + value: function hide() { + if (!this.visible) { + return + } + this.visible = false + this.bar.classList.add('hidden') + document.body.classList.remove('loadingInProgress') + } + }, { + key: 'show', + value: function show() { + if (this.visible) { + return + } + this.visible = true + document.body.classList.add('loadingInProgress') + this.bar.classList.remove('hidden') + } + }, { + key: 'percent', + get: function get() { + return this._percent + }, + set: function set(val) { + this._indeterminate = isNaN(val) + this._percent = clamp(val, 0, 100) + this._updateBar() + } + }]) + + return ProgressBar + }()) + + exports.CSS_UNITS = CSS_UNITS + exports.DEFAULT_SCALE_VALUE = DEFAULT_SCALE_VALUE + exports.DEFAULT_SCALE = DEFAULT_SCALE + exports.MIN_SCALE = MIN_SCALE + exports.MAX_SCALE = MAX_SCALE + exports.UNKNOWN_SCALE = UNKNOWN_SCALE + exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE + exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING + exports.VERTICAL_PADDING = VERTICAL_PADDING + exports.cloneObj = cloneObj + exports.RendererType = RendererType + exports.mozL10n = mozL10n + exports.NullL10n = NullL10n + exports.EventBus = EventBus + exports.ProgressBar = ProgressBar + exports.getPDFFileNameFromURL = getPDFFileNameFromURL + exports.noContextMenuHandler = noContextMenuHandler + exports.parseQueryString = parseQueryString + exports.getVisibleElements = getVisibleElements + exports.roundToDivide = roundToDivide + exports.approximateFraction = approximateFraction + exports.getOutputScale = getOutputScale + exports.scrollIntoView = scrollIntoView + exports.watchScroll = watchScroll + exports.binarySearchFirstItem = binarySearchFirstItem + exports.normalizeWheelEventDelta = normalizeWheelEventDelta + exports.animationStarted = animationStarted + exports.localized = localized + /** */ }, + /* 1 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + var pdfjsLib + if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) { + pdfjsLib = window['pdfjs-dist/build/pdf'] + } else { + pdfjsLib = require('../build/pdf.js') + } + module.exports = pdfjsLib + /** */ }, + /* 2 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined + + var _ui_utils = __webpack_require__(0) + + function attachDOMEventsToEventBus(eventBus) { + eventBus.on('documentload', function() { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('documentload', true, true, {}) + window.dispatchEvent(event) + }) + eventBus.on('pagerendered', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('pagerendered', true, true, { + pageNumber: evt.pageNumber, + cssTransform: evt.cssTransform + }) + evt.source.div.dispatchEvent(event) + }) + eventBus.on('textlayerrendered', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('textlayerrendered', true, true, { pageNumber: evt.pageNumber }) + evt.source.textLayerDiv.dispatchEvent(event) + }) + eventBus.on('pagechange', function(evt) { + var event = document.createEvent('UIEvents') + event.initUIEvent('pagechange', true, true, window, 0) + event.pageNumber = evt.pageNumber + evt.source.container.dispatchEvent(event) + }) + eventBus.on('pagesinit', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('pagesinit', true, true, null) + evt.source.container.dispatchEvent(event) + }) + eventBus.on('pagesloaded', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('pagesloaded', true, true, { pagesCount: evt.pagesCount }) + evt.source.container.dispatchEvent(event) + }) + eventBus.on('scalechange', function(evt) { + var event = document.createEvent('UIEvents') + event.initUIEvent('scalechange', true, true, window, 0) + event.scale = evt.scale + event.presetValue = evt.presetValue + evt.source.container.dispatchEvent(event) + }) + eventBus.on('updateviewarea', function(evt) { + var event = document.createEvent('UIEvents') + event.initUIEvent('updateviewarea', true, true, window, 0) + event.location = evt.location + evt.source.container.dispatchEvent(event) + }) + eventBus.on('find', function(evt) { + if (evt.source === window) { + return + } + var event = document.createEvent('CustomEvent') + event.initCustomEvent('find' + evt.type, true, true, { + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: evt.caseSensitive, + highlightAll: evt.highlightAll, + findPrevious: evt.findPrevious + }) + window.dispatchEvent(event) + }) + eventBus.on('attachmentsloaded', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('attachmentsloaded', true, true, { attachmentsCount: evt.attachmentsCount }) + evt.source.container.dispatchEvent(event) + }) + eventBus.on('sidebarviewchanged', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('sidebarviewchanged', true, true, { view: evt.view }) + evt.source.outerContainer.dispatchEvent(event) + }) + eventBus.on('pagemode', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('pagemode', true, true, { mode: evt.mode }) + evt.source.pdfViewer.container.dispatchEvent(event) + }) + eventBus.on('namedaction', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('namedaction', true, true, { action: evt.action }) + evt.source.pdfViewer.container.dispatchEvent(event) + }) + eventBus.on('presentationmodechanged', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('presentationmodechanged', true, true, { + active: evt.active, + switchInProgress: evt.switchInProgress + }) + window.dispatchEvent(event) + }) + eventBus.on('outlineloaded', function(evt) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent('outlineloaded', true, true, { outlineCount: evt.outlineCount }) + evt.source.container.dispatchEvent(event) + }) + } + var globalEventBus = null + function getGlobalEventBus() { + if (globalEventBus) { + return globalEventBus + } + globalEventBus = new _ui_utils.EventBus() + attachDOMEventsToEventBus(globalEventBus) + return globalEventBus + } + exports.attachDOMEventsToEventBus = attachDOMEventsToEventBus + exports.getGlobalEventBus = getGlobalEventBus + /** */ }, + /* 3 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var CLEANUP_TIMEOUT = 30000 + var RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 + } + + var PDFRenderingQueue = (function() { + function PDFRenderingQueue() { + _classCallCheck(this, PDFRenderingQueue) + + this.pdfViewer = null + this.pdfThumbnailViewer = null + this.onIdle = null + this.highestPriorityPage = null + this.idleTimeout = null + this.printing = false + this.isThumbnailViewEnabled = false + } + + _createClass(PDFRenderingQueue, [{ + key: 'setViewer', + value: function setViewer(pdfViewer) { + this.pdfViewer = pdfViewer + } + }, { + key: 'setThumbnailViewer', + value: function setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer + } + }, { + key: 'isHighestPriority', + value: function isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId + } + }, { + key: 'renderHighestPriority', + value: function renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout) + this.idleTimeout = null + } + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return + } + if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { + if (this.pdfThumbnailViewer.forceRendering()) { + return + } + } + if (this.printing) { + return + } + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT) + } + } + }, { + key: 'getHighestPriority', + value: function getHighestPriority(visible, views, scrolledDown) { + var visibleViews = visible.views + var numVisible = visibleViews.length + if (numVisible === 0) { + return false + } + for (var i = 0; i < numVisible; ++i) { + var view = visibleViews[i].view + if (!this.isViewFinished(view)) { + return view + } + } + if (scrolledDown) { + var nextPageIndex = visible.last.id + if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { + return views[nextPageIndex] + } + } else { + var previousPageIndex = visible.first.id - 2 + if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { + return views[previousPageIndex] + } + } + return null + } + }, { + key: 'isViewFinished', + value: function isViewFinished(view) { + return view.renderingState === RenderingStates.FINISHED + } + }, { + key: 'renderView', + value: function renderView(view) { + var _this = this + + switch (view.renderingState) { + case RenderingStates.FINISHED: + return false + case RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId + view.resume() + break + case RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId + break + case RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId + var continueRendering = function continueRendering() { + _this.renderHighestPriority() + } + view.draw().then(continueRendering, continueRendering) + break + } + return true + } + }]) + + return PDFRenderingQueue + }()) + + exports.RenderingStates = RenderingStates + exports.PDFRenderingQueue = PDFRenderingQueue + /** */ }, + /* 4 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = undefined + + var _slicedToArray = (function() { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break } } catch (err) { _d = true; _e = err } finally { try { if (!_n && _i['return']) _i['return']() } finally { if (_d) throw _e } } return _arr } return function(arr, i) { if (Array.isArray(arr)) { return arr } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i) } else { throw new TypeError('Invalid attempt to destructure non-iterable instance') } } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdfjsLib = __webpack_require__(1) + + var _pdf_cursor_tools = __webpack_require__(6) + + var _pdf_rendering_queue = __webpack_require__(3) + + var _pdf_sidebar = __webpack_require__(24) + + var _pdf_viewer = __webpack_require__(27) + + var _dom_events = __webpack_require__(2) + + var _overlay_manager = __webpack_require__(15) + + var _password_prompt = __webpack_require__(16) + + var _pdf_attachment_viewer = __webpack_require__(17) + + var _pdf_document_properties = __webpack_require__(18) + + var _pdf_find_bar = __webpack_require__(19) + + var _pdf_find_controller = __webpack_require__(7) + + var _pdf_history = __webpack_require__(20) + + var _pdf_link_service = __webpack_require__(5) + + var _pdf_outline_viewer = __webpack_require__(21) + + var _pdf_presentation_mode = __webpack_require__(23) + + var _pdf_thumbnail_viewer = __webpack_require__(26) + + var _secondary_toolbar = __webpack_require__(29) + + var _toolbar = __webpack_require__(31) + + var _view_history = __webpack_require__(32) + + var DEFAULT_SCALE_DELTA = 1.1 + var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000 + function configure(PDFJS) { + PDFJS.imageResourcesPath = './images/' + PDFJS.workerSrc = '../build/pdf.worker.js' + PDFJS.cMapUrl = '../web/cmaps/' + PDFJS.cMapPacked = true + } + var DefaultExternalServices = { + updateFindControlState: function updateFindControlState(data) {}, + initPassiveLoading: function initPassiveLoading(callbacks) {}, + fallback: function fallback(data, callback) {}, + reportTelemetry: function reportTelemetry(data) {}, + createDownloadManager: function createDownloadManager() { + throw new Error('Not implemented: createDownloadManager') + }, + createPreferences: function createPreferences() { + throw new Error('Not implemented: createPreferences') + }, + createL10n: function createL10n() { + throw new Error('Not implemented: createL10n') + }, + + supportsIntegratedFind: false, + supportsDocumentFonts: true, + supportsDocumentColors: true, + supportedMouseWheelZoomModifierKeys: { + ctrlKey: true, + metaKey: true + } + } + var PDFViewerApplication = { + initialBookmark: document.location.hash.substring(1), + initialDestination: null, + initialized: false, + fellback: false, + appConfig: null, + pdfDocument: null, + pdfLoadingTask: null, + printService: null, + pdfViewer: null, + pdfThumbnailViewer: null, + pdfRenderingQueue: null, + pdfPresentationMode: null, + pdfDocumentProperties: null, + pdfLinkService: null, + pdfHistory: null, + pdfSidebar: null, + pdfOutlineViewer: null, + pdfAttachmentViewer: null, + pdfCursorTools: null, + store: null, + downloadManager: null, + overlayManager: null, + preferences: null, + toolbar: null, + secondaryToolbar: null, + eventBus: null, + l10n: null, + isInitialViewSet: false, + downloadComplete: false, + viewerPrefs: { + sidebarViewOnLoad: _pdf_sidebar.SidebarView.NONE, + pdfBugEnabled: false, + showPreviousViewOnLoad: true, + defaultZoomValue: '', + disablePageMode: false, + disablePageLabels: false, + renderer: 'canvas', + enhanceTextSelection: false, + renderInteractiveForms: false, + enablePrintAutoRotate: false + }, + isViewerEmbedded: window.parent !== window, + url: '', + baseUrl: '', + externalServices: DefaultExternalServices, + _boundEvents: {}, + initialize: function initialize(appConfig) { + var _this = this + + this.preferences = this.externalServices.createPreferences() + configure(_pdfjsLib.PDFJS) + this.appConfig = appConfig + return this._readPreferences().then(function() { + return _this._initializeL10n() + }).then(function() { + return _this._initializeViewerComponents() + }).then(function() { + _this.bindEvents() + _this.bindWindowEvents() + var appContainer = appConfig.appContainer || document.documentElement + _this.l10n.translate(appContainer).then(function() { + _this.eventBus.dispatch('localized') + }) + if (_this.isViewerEmbedded && !_pdfjsLib.PDFJS.isExternalLinkTargetSet()) { + _pdfjsLib.PDFJS.externalLinkTarget = _pdfjsLib.PDFJS.LinkTarget.TOP + } + _this.initialized = true + }) + }, + _readPreferences: function _readPreferences() { + var preferences = this.preferences, + viewerPrefs = this.viewerPrefs + + return Promise.all([preferences.get('enableWebGL').then(function resolved(value) { + _pdfjsLib.PDFJS.disableWebGL = !value + }), preferences.get('sidebarViewOnLoad').then(function resolved(value) { + viewerPrefs['sidebarViewOnLoad'] = value + }), preferences.get('pdfBugEnabled').then(function resolved(value) { + viewerPrefs['pdfBugEnabled'] = value + }), preferences.get('showPreviousViewOnLoad').then(function resolved(value) { + viewerPrefs['showPreviousViewOnLoad'] = value + }), preferences.get('defaultZoomValue').then(function resolved(value) { + viewerPrefs['defaultZoomValue'] = value + }), preferences.get('enhanceTextSelection').then(function resolved(value) { + viewerPrefs['enhanceTextSelection'] = value + }), preferences.get('disableTextLayer').then(function resolved(value) { + if (_pdfjsLib.PDFJS.disableTextLayer === true) { + return + } + _pdfjsLib.PDFJS.disableTextLayer = value + }), preferences.get('disableRange').then(function resolved(value) { + if (_pdfjsLib.PDFJS.disableRange === true) { + return + } + _pdfjsLib.PDFJS.disableRange = value + }), preferences.get('disableStream').then(function resolved(value) { + if (_pdfjsLib.PDFJS.disableStream === true) { + return + } + _pdfjsLib.PDFJS.disableStream = value + }), preferences.get('disableAutoFetch').then(function resolved(value) { + _pdfjsLib.PDFJS.disableAutoFetch = value + }), preferences.get('disableFontFace').then(function resolved(value) { + if (_pdfjsLib.PDFJS.disableFontFace === true) { + return + } + _pdfjsLib.PDFJS.disableFontFace = value + }), preferences.get('useOnlyCssZoom').then(function resolved(value) { + _pdfjsLib.PDFJS.useOnlyCssZoom = value + }), preferences.get('externalLinkTarget').then(function resolved(value) { + if (_pdfjsLib.PDFJS.isExternalLinkTargetSet()) { + return + } + _pdfjsLib.PDFJS.externalLinkTarget = value + }), preferences.get('renderer').then(function resolved(value) { + viewerPrefs['renderer'] = value + }), preferences.get('renderInteractiveForms').then(function resolved(value) { + viewerPrefs['renderInteractiveForms'] = value + }), preferences.get('disablePageMode').then(function resolved(value) { + viewerPrefs['disablePageMode'] = value + }), preferences.get('disablePageLabels').then(function resolved(value) { + viewerPrefs['disablePageLabels'] = value + }), preferences.get('enablePrintAutoRotate').then(function resolved(value) { + viewerPrefs['enablePrintAutoRotate'] = value + })]).catch(function(reason) {}) + }, + _initializeL10n: function _initializeL10n() { + if (this.viewerPrefs['pdfBugEnabled']) { + var hash = document.location.hash.substring(1) + var hashParams = (0, _ui_utils.parseQueryString)(hash) + if ('locale' in hashParams) { + _pdfjsLib.PDFJS.locale = hashParams['locale'] + } + } + this.l10n = this.externalServices.createL10n() + return this.l10n.getDirection().then(function(dir) { + document.getElementsByTagName('html')[0].dir = dir + }) + }, + _initializeViewerComponents: function _initializeViewerComponents() { + var _this2 = this + + var appConfig = this.appConfig + return new Promise(function(resolve, reject) { + _this2.overlayManager = new _overlay_manager.OverlayManager() + var eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)() + _this2.eventBus = eventBus + var pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue() + pdfRenderingQueue.onIdle = _this2.cleanup.bind(_this2) + _this2.pdfRenderingQueue = pdfRenderingQueue + var pdfLinkService = new _pdf_link_service.PDFLinkService({ eventBus: eventBus }) + _this2.pdfLinkService = pdfLinkService + var downloadManager = _this2.externalServices.createDownloadManager() + _this2.downloadManager = downloadManager + var container = appConfig.mainContainer + var viewer = appConfig.viewerContainer + _this2.pdfViewer = new _pdf_viewer.PDFViewer({ + container: container, + viewer: viewer, + eventBus: eventBus, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + downloadManager: downloadManager, + renderer: _this2.viewerPrefs['renderer'], + l10n: _this2.l10n, + enhanceTextSelection: _this2.viewerPrefs['enhanceTextSelection'], + renderInteractiveForms: _this2.viewerPrefs['renderInteractiveForms'], + enablePrintAutoRotate: _this2.viewerPrefs['enablePrintAutoRotate'] + }) + pdfRenderingQueue.setViewer(_this2.pdfViewer) + pdfLinkService.setViewer(_this2.pdfViewer) + var thumbnailContainer = appConfig.sidebar.thumbnailView + _this2.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ + container: thumbnailContainer, + renderingQueue: pdfRenderingQueue, + linkService: pdfLinkService, + l10n: _this2.l10n + }) + pdfRenderingQueue.setThumbnailViewer(_this2.pdfThumbnailViewer) + _this2.pdfHistory = new _pdf_history.PDFHistory({ + linkService: pdfLinkService, + eventBus: eventBus + }) + pdfLinkService.setHistory(_this2.pdfHistory) + _this2.findController = new _pdf_find_controller.PDFFindController({ pdfViewer: _this2.pdfViewer }) + _this2.findController.onUpdateResultsCount = function(matchCount) { + if (_this2.supportsIntegratedFind) { + return + } + _this2.findBar.updateResultsCount(matchCount) + } + _this2.findController.onUpdateState = function(state, previous, matchCount) { + if (_this2.supportsIntegratedFind) { + _this2.externalServices.updateFindControlState({ + result: state, + findPrevious: previous + }) + } else { + _this2.findBar.updateUIState(state, previous, matchCount) + } + } + _this2.pdfViewer.setFindController(_this2.findController) + var findBarConfig = Object.create(appConfig.findBar) + findBarConfig.findController = _this2.findController + findBarConfig.eventBus = eventBus + _this2.findBar = new _pdf_find_bar.PDFFindBar(findBarConfig, _this2.l10n) + _this2.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, _this2.overlayManager, _this2.l10n) + _this2.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({ + container: container, + eventBus: eventBus, + preferences: _this2.preferences + }) + _this2.toolbar = new _toolbar.Toolbar(appConfig.toolbar, container, eventBus, _this2.l10n) + _this2.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus) + if (_this2.supportsFullscreen) { + _this2.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ + container: container, + viewer: viewer, + pdfViewer: _this2.pdfViewer, + eventBus: eventBus, + contextMenuItems: appConfig.fullscreen + }) + } + _this2.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, _this2.overlayManager, _this2.l10n) + _this2.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ + container: appConfig.sidebar.outlineView, + eventBus: eventBus, + linkService: pdfLinkService + }) + _this2.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ + container: appConfig.sidebar.attachmentsView, + eventBus: eventBus, + downloadManager: downloadManager + }) + var sidebarConfig = Object.create(appConfig.sidebar) + sidebarConfig.pdfViewer = _this2.pdfViewer + sidebarConfig.pdfThumbnailViewer = _this2.pdfThumbnailViewer + sidebarConfig.pdfOutlineViewer = _this2.pdfOutlineViewer + sidebarConfig.eventBus = eventBus + _this2.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig, _this2.l10n) + _this2.pdfSidebar.onToggled = _this2.forceRendering.bind(_this2) + resolve(undefined) + }) + }, + run: function run(config) { + this.initialize(config).then(webViewerInitialized) + }, + zoomIn: function zoomIn(ticks) { + var newScale = this.pdfViewer.currentScale + do { + newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2) + newScale = Math.ceil(newScale * 10) / 10 + newScale = Math.min(_ui_utils.MAX_SCALE, newScale) + } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE) + this.pdfViewer.currentScaleValue = newScale + }, + zoomOut: function zoomOut(ticks) { + var newScale = this.pdfViewer.currentScale + do { + newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2) + newScale = Math.floor(newScale * 10) / 10 + newScale = Math.max(_ui_utils.MIN_SCALE, newScale) + } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE) + this.pdfViewer.currentScaleValue = newScale + }, + + get pagesCount() { + return this.pdfDocument ? this.pdfDocument.numPages : 0 + }, + get pageRotation() { + return this.pdfViewer.pagesRotation + }, + set page(val) { + this.pdfViewer.currentPageNumber = val + }, + get page() { + return this.pdfViewer.currentPageNumber + }, + get printing() { + return !!this.printService + }, + get supportsPrinting() { + return PDFPrintServiceFactory.instance.supportsPrinting + }, + get supportsFullscreen() { + var support = void 0 + var doc = document.documentElement + support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen) + if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) { + support = false + } + if (support && _pdfjsLib.PDFJS.disableFullscreen === true) { + support = false + } + return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support) + }, + get supportsIntegratedFind() { + return this.externalServices.supportsIntegratedFind + }, + get supportsDocumentFonts() { + return this.externalServices.supportsDocumentFonts + }, + get supportsDocumentColors() { + return this.externalServices.supportsDocumentColors + }, + get loadingBar() { + var bar = new _ui_utils.ProgressBar('#loadingBar') + return (0, _pdfjsLib.shadow)(this, 'loadingBar', bar) + }, + get supportedMouseWheelZoomModifierKeys() { + return this.externalServices.supportedMouseWheelZoomModifierKeys + }, + initPassiveLoading: function initPassiveLoading() { + throw new Error('Not implemented: initPassiveLoading') + }, + setTitleUsingUrl: function setTitleUsingUrl(url) { + this.url = url + this.baseUrl = url.split('#')[0] + var title = (0, _ui_utils.getPDFFileNameFromURL)(url, '') + if (!title) { + try { + title = decodeURIComponent((0, _pdfjsLib.getFilenameFromUrl)(url)) || url + } catch (ex) { + title = url + } + } + this.setTitle(title) + }, + setTitle: function setTitle(title) { + if (this.isViewerEmbedded) { + return + } + document.title = title + }, + close: function close() { + var errorWrapper = this.appConfig.errorWrapper.container + errorWrapper.setAttribute('hidden', 'true') + if (!this.pdfLoadingTask) { + return Promise.resolve() + } + var promise = this.pdfLoadingTask.destroy() + this.pdfLoadingTask = null + if (this.pdfDocument) { + this.pdfDocument = null + this.pdfThumbnailViewer.setDocument(null) + this.pdfViewer.setDocument(null) + this.pdfLinkService.setDocument(null, null) + this.pdfDocumentProperties.setDocument(null, null) + } + this.store = null + this.isInitialViewSet = false + this.downloadComplete = false + this.pdfSidebar.reset() + this.pdfOutlineViewer.reset() + this.pdfAttachmentViewer.reset() + this.findController.reset() + this.findBar.reset() + this.toolbar.reset() + this.secondaryToolbar.reset() + if (typeof PDFBug !== 'undefined') { + PDFBug.cleanup() + } + return promise + }, + open: function open(file, args) { + var _this3 = this + + if (arguments.length > 2 || typeof args === 'number') { + return Promise.reject(new Error('Call of open() with obsolete signature.')) + } + if (this.pdfLoadingTask) { + return this.close().then(function() { + _this3.preferences.reload() + return _this3.open(file, args) + }) + } + var parameters = Object.create(null), + scale = void 0 + if (typeof file === 'string') { + this.setTitleUsingUrl(file) + parameters.url = file + } else if (file && 'byteLength' in file) { + parameters.data = file + } else if (file.url && file.originalUrl) { + this.setTitleUsingUrl(file.originalUrl) + parameters.url = file.url + } + if (args) { + for (var prop in args) { + parameters[prop] = args[prop] + } + if (args.scale) { + scale = args.scale + } + if (args.length) { + this.pdfDocumentProperties.setFileSize(args.length) + } + } + var loadingTask = (0, _pdfjsLib.getDocument)(parameters) + this.pdfLoadingTask = loadingTask + loadingTask.onPassword = function(updateCallback, reason) { + _this3.passwordPrompt.setUpdateCallback(updateCallback, reason) + _this3.passwordPrompt.open() + } + loadingTask.onProgress = function(_ref) { + var loaded = _ref.loaded, + total = _ref.total + + _this3.progress(loaded / total) + } + loadingTask.onUnsupportedFeature = this.fallback.bind(this) + return loadingTask.promise.then(function(pdfDocument) { + _this3.load(pdfDocument, scale) + }, function(exception) { + var message = exception && exception.message + var loadingErrorMessage = void 0 + if (exception instanceof _pdfjsLib.InvalidPDFException) { + loadingErrorMessage = _this3.l10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.') + } else if (exception instanceof _pdfjsLib.MissingPDFException) { + loadingErrorMessage = _this3.l10n.get('missing_file_error', null, 'Missing PDF file.') + } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) { + loadingErrorMessage = _this3.l10n.get('unexpected_response_error', null, 'Unexpected server response.') + } else { + loadingErrorMessage = _this3.l10n.get('loading_error', null, 'An error occurred while loading the PDF.') + } + return loadingErrorMessage.then(function(msg) { + _this3.error(msg, { message: message }) + throw new Error(msg) + }) + }) + }, + download: function download() { + var _this4 = this + + function downloadByUrl() { + downloadManager.downloadUrl(url, filename) + } + var url = this.baseUrl + var filename = (0, _ui_utils.getPDFFileNameFromURL)(this.url) + var downloadManager = this.downloadManager + downloadManager.onerror = function(err) { + _this4.error('PDF failed to download: ' + err) + } + if (!this.pdfDocument || !this.downloadComplete) { + downloadByUrl() + return + } + this.pdfDocument.getData().then(function(data) { + var blob = (0, _pdfjsLib.createBlob)(data, 'application/pdf') + downloadManager.download(blob, url, filename) + }).catch(downloadByUrl) + }, + fallback: function fallback(featureId) {}, + error: function error(message, moreInfo) { + var moreInfoText = [this.l10n.get('error_version_info', { + version: _pdfjsLib.version || '?', + build: _pdfjsLib.build || '?' + }, 'PDF.js v{{version}} (build: {{build}})')] + if (moreInfo) { + moreInfoText.push(this.l10n.get('error_message', { message: moreInfo.message }, 'Message: {{message}}')) + if (moreInfo.stack) { + moreInfoText.push(this.l10n.get('error_stack', { stack: moreInfo.stack }, 'Stack: {{stack}}')) + } else { + if (moreInfo.filename) { + moreInfoText.push(this.l10n.get('error_file', { file: moreInfo.filename }, 'File: {{file}}')) + } + if (moreInfo.lineNumber) { + moreInfoText.push(this.l10n.get('error_line', { line: moreInfo.lineNumber }, 'Line: {{line}}')) + } + } + } + var errorWrapperConfig = this.appConfig.errorWrapper + var errorWrapper = errorWrapperConfig.container + errorWrapper.removeAttribute('hidden') + var errorMessage = errorWrapperConfig.errorMessage + errorMessage.textContent = message + var closeButton = errorWrapperConfig.closeButton + closeButton.onclick = function() { + errorWrapper.setAttribute('hidden', 'true') + } + var errorMoreInfo = errorWrapperConfig.errorMoreInfo + var moreInfoButton = errorWrapperConfig.moreInfoButton + var lessInfoButton = errorWrapperConfig.lessInfoButton + moreInfoButton.onclick = function() { + errorMoreInfo.removeAttribute('hidden') + moreInfoButton.setAttribute('hidden', 'true') + lessInfoButton.removeAttribute('hidden') + errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px' + } + lessInfoButton.onclick = function() { + errorMoreInfo.setAttribute('hidden', 'true') + moreInfoButton.removeAttribute('hidden') + lessInfoButton.setAttribute('hidden', 'true') + } + moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler + lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler + closeButton.oncontextmenu = _ui_utils.noContextMenuHandler + moreInfoButton.removeAttribute('hidden') + lessInfoButton.setAttribute('hidden', 'true') + Promise.all(moreInfoText).then(function(parts) { + errorMoreInfo.value = parts.join('\n') + }) + }, + progress: function progress(level) { + var _this5 = this + + if (this.downloadComplete) { + return + } + var percent = Math.round(level * 100) + if (percent > this.loadingBar.percent || isNaN(percent)) { + this.loadingBar.percent = percent + if (_pdfjsLib.PDFJS.disableAutoFetch && percent) { + if (this.disableAutoFetchLoadingBarTimeout) { + clearTimeout(this.disableAutoFetchLoadingBarTimeout) + this.disableAutoFetchLoadingBarTimeout = null + } + this.loadingBar.show() + this.disableAutoFetchLoadingBarTimeout = setTimeout(function() { + _this5.loadingBar.hide() + _this5.disableAutoFetchLoadingBarTimeout = null + }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT) + } + } + }, + load: function load(pdfDocument, scale) { + var _this6 = this + + scale = scale || _ui_utils.UNKNOWN_SCALE + this.pdfDocument = pdfDocument + pdfDocument.getDownloadInfo().then(function() { + _this6.downloadComplete = true + _this6.loadingBar.hide() + firstPagePromise.then(function() { + _this6.eventBus.dispatch('documentload', { source: _this6 }) + }) + }) + var pageModePromise = pdfDocument.getPageMode().catch(function() {}) + this.toolbar.setPagesCount(pdfDocument.numPages, false) + this.secondaryToolbar.setPagesCount(pdfDocument.numPages) + var id = this.documentFingerprint = pdfDocument.fingerprint + var store = this.store = new _view_history.ViewHistory(id) + var baseDocumentUrl = void 0 + baseDocumentUrl = null + this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl) + this.pdfDocumentProperties.setDocument(pdfDocument, this.url) + var pdfViewer = this.pdfViewer + pdfViewer.setDocument(pdfDocument) + var firstPagePromise = pdfViewer.firstPagePromise + var pagesPromise = pdfViewer.pagesPromise + var onePageRendered = pdfViewer.onePageRendered + var pdfThumbnailViewer = this.pdfThumbnailViewer + pdfThumbnailViewer.setDocument(pdfDocument) + firstPagePromise.then(function(pdfPage) { + _this6.loadingBar.setWidth(_this6.appConfig.viewerContainer) + if (!_pdfjsLib.PDFJS.disableHistory && !_this6.isViewerEmbedded) { + if (!_this6.viewerPrefs['showPreviousViewOnLoad']) { + _this6.pdfHistory.clearHistoryState() + } + _this6.pdfHistory.initialize(_this6.documentFingerprint) + if (_this6.pdfHistory.initialDestination) { + _this6.initialDestination = _this6.pdfHistory.initialDestination + } else if (_this6.pdfHistory.initialBookmark) { + _this6.initialBookmark = _this6.pdfHistory.initialBookmark + } + } + var initialParams = { + destination: _this6.initialDestination, + bookmark: _this6.initialBookmark, + hash: null + } + var storePromise = store.getMultiple({ + exists: false, + page: '1', + zoom: _ui_utils.DEFAULT_SCALE_VALUE, + scrollLeft: '0', + scrollTop: '0', + sidebarView: _pdf_sidebar.SidebarView.NONE + }).catch(function() {}) + Promise.all([storePromise, pageModePromise]).then(function(_ref2) { + var _ref3 = _slicedToArray(_ref2, 2), + _ref3$ = _ref3[0], + values = _ref3$ === undefined ? {} : _ref3$, + pageMode = _ref3[1] + + var hash = _this6.viewerPrefs['defaultZoomValue'] ? 'zoom=' + _this6.viewerPrefs['defaultZoomValue'] : null + var sidebarView = _this6.viewerPrefs['sidebarViewOnLoad'] + if (values.exists && _this6.viewerPrefs['showPreviousViewOnLoad']) { + hash = 'page=' + values.page + '&zoom=' + (_this6.viewerPrefs['defaultZoomValue'] || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop + sidebarView = sidebarView || values.sidebarView | 0 + } + if (pageMode && !_this6.viewerPrefs['disablePageMode']) { + sidebarView = sidebarView || apiPageModeToSidebarView(pageMode) + } + return { + hash: hash, + sidebarView: sidebarView + } + }).then(function(_ref4) { + var hash = _ref4.hash, + sidebarView = _ref4.sidebarView + + _this6.setInitialView(hash, { + sidebarView: sidebarView, + scale: scale + }) + initialParams.hash = hash + if (!_this6.isViewerEmbedded) { + pdfViewer.focus() + } + return pagesPromise + }).then(function() { + if (!initialParams.destination && !initialParams.bookmark && !initialParams.hash) { + return + } + if (pdfViewer.hasEqualPageSizes) { + return + } + _this6.initialDestination = initialParams.destination + _this6.initialBookmark = initialParams.bookmark + pdfViewer.currentScaleValue = pdfViewer.currentScaleValue + _this6.setInitialView(initialParams.hash) + }).then(function() { + pdfViewer.update() + }) + }) + pdfDocument.getPageLabels().then(function(labels) { + if (!labels || _this6.viewerPrefs['disablePageLabels']) { + return + } + var i = 0, + numLabels = labels.length + if (numLabels !== _this6.pagesCount) { + console.error('The number of Page Labels does not match ' + 'the number of pages in the document.') + return + } + while (i < numLabels && labels[i] === (i + 1).toString()) { + i++ + } + if (i === numLabels) { + return + } + pdfViewer.setPageLabels(labels) + pdfThumbnailViewer.setPageLabels(labels) + _this6.toolbar.setPagesCount(pdfDocument.numPages, true) + _this6.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel) + }) + pagesPromise.then(function() { + if (!_this6.supportsPrinting) { + return + } + pdfDocument.getJavaScript().then(function(javaScript) { + if (javaScript.length) { + console.warn('Warning: JavaScript is not supported') + _this6.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.javaScript) + } + var regex = /\bprint\s*\(/ + for (var i = 0, ii = javaScript.length; i < ii; i++) { + var js = javaScript[i] + if (js && regex.test(js)) { + setTimeout(function() { + window.print() + }) + return + } + } + }) + }) + Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function() { + pdfDocument.getOutline().then(function(outline) { + _this6.pdfOutlineViewer.render({ outline: outline }) + }) + pdfDocument.getAttachments().then(function(attachments) { + _this6.pdfAttachmentViewer.render({ attachments: attachments }) + }) + }) + pdfDocument.getMetadata().then(function(_ref5) { + var info = _ref5.info, + metadata = _ref5.metadata + + _this6.documentInfo = info + _this6.metadata = metadata + console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (!_pdfjsLib.PDFJS.disableWebGL ? ' [WebGL]' : '') + ')') + var pdfTitle = void 0 + if (metadata && metadata.has('dc:title')) { + var title = metadata.get('dc:title') + if (title !== 'Untitled') { + pdfTitle = title + } + } + if (!pdfTitle && info && info['Title']) { + pdfTitle = info['Title'] + } + if (pdfTitle) { + _this6.setTitle(pdfTitle + ' - ' + document.title) + } + if (info.IsAcroFormPresent) { + console.warn('Warning: AcroForm/XFA is not supported') + _this6.fallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms) + } + }) + }, + setInitialView: function setInitialView(storedHash) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {} + var _options$scale = options.scale, + scale = _options$scale === undefined ? 0 : _options$scale, + _options$sidebarView = options.sidebarView, + sidebarView = _options$sidebarView === undefined ? _pdf_sidebar.SidebarView.NONE : _options$sidebarView + + this.isInitialViewSet = true + this.pdfSidebar.setInitialView(sidebarView) + if (this.initialDestination) { + this.pdfLinkService.navigateTo(this.initialDestination) + this.initialDestination = null + } else if (this.initialBookmark) { + this.pdfLinkService.setHash(this.initialBookmark) + this.pdfHistory.push({ hash: this.initialBookmark }, true) + this.initialBookmark = null + } else if (storedHash) { + this.pdfLinkService.setHash(storedHash) + } else if (scale) { + this.pdfViewer.currentScaleValue = scale + this.page = 1 + } + this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel) + this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber) + if (!this.pdfViewer.currentScaleValue) { + this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE + } + }, + cleanup: function cleanup() { + if (!this.pdfDocument) { + return + } + this.pdfViewer.cleanup() + this.pdfThumbnailViewer.cleanup() + if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) { + this.pdfDocument.cleanup() + } + }, + forceRendering: function forceRendering() { + this.pdfRenderingQueue.printing = this.printing + this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible + this.pdfRenderingQueue.renderHighestPriority() + }, + beforePrint: function beforePrint() { + var _this7 = this + + if (this.printService) { + return + } + if (!this.supportsPrinting) { + this.l10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by ' + 'this browser.').then(function(printMessage) { + _this7.error(printMessage) + }) + return + } + if (!this.pdfViewer.pageViewsReady) { + this.l10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.').then(function(notReadyMessage) { + window.alert(notReadyMessage) + }) + return + } + var pagesOverview = this.pdfViewer.getPagesOverview() + var printContainer = this.appConfig.printContainer + var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer, this.l10n) + this.printService = printService + this.forceRendering() + printService.layout() + }, + + afterPrint: function pdfViewSetupAfterPrint() { + if (this.printService) { + this.printService.destroy() + this.printService = null + } + this.forceRendering() + }, + rotatePages: function rotatePages(delta) { + if (!this.pdfDocument) { + return + } + var pdfViewer = this.pdfViewer, + pdfThumbnailViewer = this.pdfThumbnailViewer + + var pageNumber = pdfViewer.currentPageNumber + var newRotation = (pdfViewer.pagesRotation + 360 + delta) % 360 + pdfViewer.pagesRotation = newRotation + pdfThumbnailViewer.pagesRotation = newRotation + this.forceRendering() + pdfViewer.currentPageNumber = pageNumber + }, + requestPresentationMode: function requestPresentationMode() { + if (!this.pdfPresentationMode) { + return + } + this.pdfPresentationMode.request() + }, + bindEvents: function bindEvents() { + var eventBus = this.eventBus, + _boundEvents = this._boundEvents + + _boundEvents.beforePrint = this.beforePrint.bind(this) + _boundEvents.afterPrint = this.afterPrint.bind(this) + eventBus.on('resize', webViewerResize) + eventBus.on('hashchange', webViewerHashchange) + eventBus.on('beforeprint', _boundEvents.beforePrint) + eventBus.on('afterprint', _boundEvents.afterPrint) + eventBus.on('pagerendered', webViewerPageRendered) + eventBus.on('textlayerrendered', webViewerTextLayerRendered) + eventBus.on('updateviewarea', webViewerUpdateViewarea) + eventBus.on('pagechanging', webViewerPageChanging) + eventBus.on('scalechanging', webViewerScaleChanging) + eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged) + eventBus.on('pagemode', webViewerPageMode) + eventBus.on('namedaction', webViewerNamedAction) + eventBus.on('presentationmodechanged', webViewerPresentationModeChanged) + eventBus.on('presentationmode', webViewerPresentationMode) + eventBus.on('openfile', webViewerOpenFile) + eventBus.on('print', webViewerPrint) + eventBus.on('download', webViewerDownload) + eventBus.on('firstpage', webViewerFirstPage) + eventBus.on('lastpage', webViewerLastPage) + eventBus.on('nextpage', webViewerNextPage) + eventBus.on('previouspage', webViewerPreviousPage) + eventBus.on('zoomin', webViewerZoomIn) + eventBus.on('zoomout', webViewerZoomOut) + eventBus.on('pagenumberchanged', webViewerPageNumberChanged) + eventBus.on('scalechanged', webViewerScaleChanged) + eventBus.on('rotatecw', webViewerRotateCw) + eventBus.on('rotateccw', webViewerRotateCcw) + eventBus.on('documentproperties', webViewerDocumentProperties) + eventBus.on('find', webViewerFind) + eventBus.on('findfromurlhash', webViewerFindFromUrlHash) + eventBus.on('fileinputchange', webViewerFileInputChange) + }, + bindWindowEvents: function bindWindowEvents() { + var eventBus = this.eventBus, + _boundEvents = this._boundEvents + + _boundEvents.windowResize = function() { + eventBus.dispatch('resize') + } + _boundEvents.windowHashChange = function() { + eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) }) + } + _boundEvents.windowBeforePrint = function() { + eventBus.dispatch('beforeprint') + } + _boundEvents.windowAfterPrint = function() { + eventBus.dispatch('afterprint') + } + window.addEventListener('wheel', webViewerWheel) + window.addEventListener('click', webViewerClick) + window.addEventListener('keydown', webViewerKeyDown) + window.addEventListener('resize', _boundEvents.windowResize) + window.addEventListener('hashchange', _boundEvents.windowHashChange) + window.addEventListener('beforeprint', _boundEvents.windowBeforePrint) + window.addEventListener('afterprint', _boundEvents.windowAfterPrint) + _boundEvents.windowChange = function(evt) { + var files = evt.target.files + if (!files || files.length === 0) { + return + } + eventBus.dispatch('fileinputchange', { fileInput: evt.target }) + } + window.addEventListener('change', _boundEvents.windowChange) + }, + unbindEvents: function unbindEvents() { + var eventBus = this.eventBus, + _boundEvents = this._boundEvents + + eventBus.off('resize', webViewerResize) + eventBus.off('hashchange', webViewerHashchange) + eventBus.off('beforeprint', _boundEvents.beforePrint) + eventBus.off('afterprint', _boundEvents.afterPrint) + eventBus.off('pagerendered', webViewerPageRendered) + eventBus.off('textlayerrendered', webViewerTextLayerRendered) + eventBus.off('updateviewarea', webViewerUpdateViewarea) + eventBus.off('pagechanging', webViewerPageChanging) + eventBus.off('scalechanging', webViewerScaleChanging) + eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged) + eventBus.off('pagemode', webViewerPageMode) + eventBus.off('namedaction', webViewerNamedAction) + eventBus.off('presentationmodechanged', webViewerPresentationModeChanged) + eventBus.off('presentationmode', webViewerPresentationMode) + eventBus.off('openfile', webViewerOpenFile) + eventBus.off('print', webViewerPrint) + eventBus.off('download', webViewerDownload) + eventBus.off('firstpage', webViewerFirstPage) + eventBus.off('lastpage', webViewerLastPage) + eventBus.off('nextpage', webViewerNextPage) + eventBus.off('previouspage', webViewerPreviousPage) + eventBus.off('zoomin', webViewerZoomIn) + eventBus.off('zoomout', webViewerZoomOut) + eventBus.off('pagenumberchanged', webViewerPageNumberChanged) + eventBus.off('scalechanged', webViewerScaleChanged) + eventBus.off('rotatecw', webViewerRotateCw) + eventBus.off('rotateccw', webViewerRotateCcw) + eventBus.off('documentproperties', webViewerDocumentProperties) + eventBus.off('find', webViewerFind) + eventBus.off('findfromurlhash', webViewerFindFromUrlHash) + eventBus.off('fileinputchange', webViewerFileInputChange) + _boundEvents.beforePrint = null + _boundEvents.afterPrint = null + }, + unbindWindowEvents: function unbindWindowEvents() { + var _boundEvents = this._boundEvents + + window.removeEventListener('wheel', webViewerWheel) + window.removeEventListener('click', webViewerClick) + window.removeEventListener('keydown', webViewerKeyDown) + window.removeEventListener('resize', _boundEvents.windowResize) + window.removeEventListener('hashchange', _boundEvents.windowHashChange) + window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint) + window.removeEventListener('afterprint', _boundEvents.windowAfterPrint) + window.removeEventListener('change', _boundEvents.windowChange) + _boundEvents.windowChange = null + _boundEvents.windowResize = null + _boundEvents.windowHashChange = null + _boundEvents.windowBeforePrint = null + _boundEvents.windowAfterPrint = null + } + } + var validateFileURL = void 0 + { + var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'] + validateFileURL = function validateFileURL(file) { + if (file === undefined) { + return + } + try { + var viewerOrigin = new URL(window.location.href).origin || 'null' + if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) { + return + } + var fileOrigin = new URL(file, window.location.href).origin + if (fileOrigin !== viewerOrigin) { + // throw new Error('file origin does not match viewer\'s'); + } + } catch (ex) { + var message = ex && ex.message + PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function(loadingErrorMessage) { + PDFViewerApplication.error(loadingErrorMessage, { message: message }) + }) + throw ex + } + } + } + function loadAndEnablePDFBug(enabledTabs) { + return new Promise(function(resolve, reject) { + var appConfig = PDFViewerApplication.appConfig + var script = document.createElement('script') + script.src = appConfig.debuggerScriptPath + script.onload = function() { + PDFBug.enable(enabledTabs) + PDFBug.init({ + PDFJS: _pdfjsLib.PDFJS, + OPS: _pdfjsLib.OPS + }, appConfig.mainContainer) + resolve() + } + script.onerror = function() { + reject(new Error('Cannot load debugger at ' + script.src)) + }; + (document.getElementsByTagName('head')[0] || document.body).appendChild(script) + }) + } + function webViewerInitialized() { + var appConfig = PDFViewerApplication.appConfig + var file = void 0 + var queryString = document.location.search.substring(1) + var params = (0, _ui_utils.parseQueryString)(queryString) + file = 'file' in params ? params.file : appConfig.defaultUrl + validateFileURL(file) + var waitForBeforeOpening = [] + var fileInput = document.createElement('input') + fileInput.id = appConfig.openFileInputName + fileInput.className = 'fileInput' + fileInput.setAttribute('type', 'file') + fileInput.oncontextmenu = _ui_utils.noContextMenuHandler + document.body.appendChild(fileInput) + if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { + appConfig.toolbar.openFile.setAttribute('hidden', 'true') + appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true') + } else { + fileInput.value = null + } + if (PDFViewerApplication.viewerPrefs['pdfBugEnabled']) { + var hash = document.location.hash.substring(1) + var hashParams = (0, _ui_utils.parseQueryString)(hash) + if ('disableworker' in hashParams) { + _pdfjsLib.PDFJS.disableWorker = hashParams['disableworker'] === 'true' + } + if ('disablerange' in hashParams) { + _pdfjsLib.PDFJS.disableRange = hashParams['disablerange'] === 'true' + } + if ('disablestream' in hashParams) { + _pdfjsLib.PDFJS.disableStream = hashParams['disablestream'] === 'true' + } + if ('disableautofetch' in hashParams) { + _pdfjsLib.PDFJS.disableAutoFetch = hashParams['disableautofetch'] === 'true' + } + if ('disablefontface' in hashParams) { + _pdfjsLib.PDFJS.disableFontFace = hashParams['disablefontface'] === 'true' + } + if ('disablehistory' in hashParams) { + _pdfjsLib.PDFJS.disableHistory = hashParams['disablehistory'] === 'true' + } + if ('webgl' in hashParams) { + _pdfjsLib.PDFJS.disableWebGL = hashParams['webgl'] !== 'true' + } + if ('useonlycsszoom' in hashParams) { + _pdfjsLib.PDFJS.useOnlyCssZoom = hashParams['useonlycsszoom'] === 'true' + } + if ('verbosity' in hashParams) { + _pdfjsLib.PDFJS.verbosity = hashParams['verbosity'] | 0 + } + if ('ignorecurrentpositiononzoom' in hashParams) { + _pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom = hashParams['ignorecurrentpositiononzoom'] === 'true' + } + if ('textlayer' in hashParams) { + switch (hashParams['textlayer']) { + case 'off': + _pdfjsLib.PDFJS.disableTextLayer = true + break + case 'visible': + case 'shadow': + case 'hover': + var viewer = appConfig.viewerContainer + viewer.classList.add('textLayer-' + hashParams['textlayer']) + break + } + } + if ('pdfbug' in hashParams) { + _pdfjsLib.PDFJS.pdfBug = true + var pdfBug = hashParams['pdfbug'] + var enabled = pdfBug.split(',') + waitForBeforeOpening.push(loadAndEnablePDFBug(enabled)) + } + } + if (!PDFViewerApplication.supportsPrinting) { + appConfig.toolbar.print.classList.add('hidden') + appConfig.secondaryToolbar.printButton.classList.add('hidden') + } + if (!PDFViewerApplication.supportsFullscreen) { + appConfig.toolbar.presentationModeButton.classList.add('hidden') + appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden') + } + if (PDFViewerApplication.supportsIntegratedFind) { + appConfig.toolbar.viewFind.classList.add('hidden') + } + appConfig.sidebar.mainContainer.addEventListener('transitionend', function(evt) { + if (evt.target === this) { + PDFViewerApplication.eventBus.dispatch('resize') + } + }, true) + appConfig.sidebar.toggleButton.addEventListener('click', function() { + PDFViewerApplication.pdfSidebar.toggle() + }) + Promise.all(waitForBeforeOpening).then(function() { + webViewerOpenFileViaURL(file) + }).catch(function(reason) { + PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while opening.').then(function(msg) { + PDFViewerApplication.error(msg, reason) + }) + }) + } + var webViewerOpenFileViaURL = void 0 + { + webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) { + if (file && file.lastIndexOf('file:', 0) === 0) { + PDFViewerApplication.setTitleUsingUrl(file) + var xhr = new XMLHttpRequest() + xhr.onload = function() { + PDFViewerApplication.open(new Uint8Array(xhr.response)) + } + try { + xhr.open('GET', file) + xhr.responseType = 'arraybuffer' + xhr.send() + } catch (ex) { + PDFViewerApplication.l10n.get('loading_error', null, 'An error occurred while loading the PDF.').then(function(msg) { + PDFViewerApplication.error(msg, ex) + }) + } + return + } + if (file) { + PDFViewerApplication.open(file) + } + } + } + function webViewerPageRendered(evt) { + var pageNumber = evt.pageNumber + var pageIndex = pageNumber - 1 + var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex) + if (pageNumber === PDFViewerApplication.page) { + PDFViewerApplication.toolbar.updateLoadingIndicatorState(false) + } + if (!pageView) { + return + } + if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { + var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex) + thumbnailView.setImage(pageView) + } + if (_pdfjsLib.PDFJS.pdfBug && Stats.enabled && pageView.stats) { + Stats.add(pageNumber, pageView.stats) + } + if (pageView.error) { + PDFViewerApplication.l10n.get('rendering_error', null, 'An error occurred while rendering the page.').then(function(msg) { + PDFViewerApplication.error(msg, pageView.error) + }) + } + } + function webViewerTextLayerRendered(evt) {} + function webViewerPageMode(evt) { + var mode = evt.mode, + view = void 0 + switch (mode) { + case 'thumbs': + view = _pdf_sidebar.SidebarView.THUMBS + break + case 'bookmarks': + case 'outline': + view = _pdf_sidebar.SidebarView.OUTLINE + break + case 'attachments': + view = _pdf_sidebar.SidebarView.ATTACHMENTS + break + case 'none': + view = _pdf_sidebar.SidebarView.NONE + break + default: + console.error('Invalid "pagemode" hash parameter: ' + mode) + return + } + PDFViewerApplication.pdfSidebar.switchView(view, true) + } + function webViewerNamedAction(evt) { + var action = evt.action + switch (action) { + case 'GoToPage': + PDFViewerApplication.appConfig.toolbar.pageNumber.select() + break + case 'Find': + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.findBar.toggle() + } + break + } + } + function webViewerPresentationModeChanged(evt) { + var active = evt.active, + switchInProgress = evt.switchInProgress + + PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _pdf_viewer.PresentationModeState.CHANGING : active ? _pdf_viewer.PresentationModeState.FULLSCREEN : _pdf_viewer.PresentationModeState.NORMAL + } + function webViewerSidebarViewChanged(evt) { + PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible + var store = PDFViewerApplication.store + if (store && PDFViewerApplication.isInitialViewSet) { + store.set('sidebarView', evt.view).catch(function() {}) + } + } + function webViewerUpdateViewarea(evt) { + var location = evt.location, + store = PDFViewerApplication.store + if (store && PDFViewerApplication.isInitialViewSet) { + store.setMultiple({ + 'exists': true, + 'page': location.pageNumber, + 'zoom': location.scale, + 'scrollLeft': location.left, + 'scrollTop': location.top + }).catch(function() {}) + } + var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams) + PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href + PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href + PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams, location.pageNumber) + var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1) + var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED + PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading) + } + function webViewerResize() { + var pdfDocument = PDFViewerApplication.pdfDocument, + pdfViewer = PDFViewerApplication.pdfViewer + + if (!pdfDocument) { + return + } + var currentScaleValue = pdfViewer.currentScaleValue + if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') { + pdfViewer.currentScaleValue = currentScaleValue + } + pdfViewer.update() + } + function webViewerHashchange(evt) { + if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) { + var hash = evt.hash + if (!hash) { + return + } + if (!PDFViewerApplication.isInitialViewSet) { + PDFViewerApplication.initialBookmark = hash + } else { + PDFViewerApplication.pdfLinkService.setHash(hash) + } + } + } + var webViewerFileInputChange = void 0 + { + webViewerFileInputChange = function webViewerFileInputChange(evt) { + var file = evt.fileInput.files[0] + if (!_pdfjsLib.PDFJS.disableCreateObjectURL && URL.createObjectURL) { + PDFViewerApplication.open(URL.createObjectURL(file)) + } else { + var fileReader = new FileReader() + fileReader.onload = function webViewerChangeFileReaderOnload(evt) { + var buffer = evt.target.result + PDFViewerApplication.open(new Uint8Array(buffer)) + } + fileReader.readAsArrayBuffer(file) + } + PDFViewerApplication.setTitleUsingUrl(file.name) + var appConfig = PDFViewerApplication.appConfig + appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true') + appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true') + appConfig.toolbar.download.setAttribute('hidden', 'true') + appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true') + } + } + function webViewerPresentationMode() { + PDFViewerApplication.requestPresentationMode() + } + function webViewerOpenFile() { + var openFileInputName = PDFViewerApplication.appConfig.openFileInputName + document.getElementById(openFileInputName).click() + } + function webViewerPrint() { + window.print() + } + function webViewerDownload() { + PDFViewerApplication.download() + } + function webViewerFirstPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = 1 + } + } + function webViewerLastPage() { + if (PDFViewerApplication.pdfDocument) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount + } + } + function webViewerNextPage() { + PDFViewerApplication.page++ + } + function webViewerPreviousPage() { + PDFViewerApplication.page-- + } + function webViewerZoomIn() { + PDFViewerApplication.zoomIn() + } + function webViewerZoomOut() { + PDFViewerApplication.zoomOut() + } + function webViewerPageNumberChanged(evt) { + var pdfViewer = PDFViewerApplication.pdfViewer + pdfViewer.currentPageLabel = evt.value + if (evt.value !== pdfViewer.currentPageNumber.toString() && evt.value !== pdfViewer.currentPageLabel) { + PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel) + } + } + function webViewerScaleChanged(evt) { + PDFViewerApplication.pdfViewer.currentScaleValue = evt.value + } + function webViewerRotateCw() { + PDFViewerApplication.rotatePages(90) + } + function webViewerRotateCcw() { + PDFViewerApplication.rotatePages(-90) + } + function webViewerDocumentProperties() { + PDFViewerApplication.pdfDocumentProperties.open() + } + function webViewerFind(evt) { + PDFViewerApplication.findController.executeCommand('find' + evt.type, { + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: evt.caseSensitive, + highlightAll: evt.highlightAll, + findPrevious: evt.findPrevious + }) + } + function webViewerFindFromUrlHash(evt) { + PDFViewerApplication.findController.executeCommand('find', { + query: evt.query, + phraseSearch: evt.phraseSearch, + caseSensitive: false, + highlightAll: true, + findPrevious: false + }) + } + function webViewerScaleChanging(evt) { + PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale) + PDFViewerApplication.pdfViewer.update() + } + function webViewerPageChanging(evt) { + var page = evt.pageNumber + PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null) + PDFViewerApplication.secondaryToolbar.setPageNumber(page) + if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { + PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page) + } + if (_pdfjsLib.PDFJS.pdfBug && Stats.enabled) { + var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1) + if (pageView.stats) { + Stats.add(page, pageView.stats) + } + } + } + var zoomDisabled = false, + zoomDisabledTimeout = void 0 + function webViewerWheel(evt) { + var pdfViewer = PDFViewerApplication.pdfViewer + if (pdfViewer.isInPresentationMode) { + return + } + if (evt.ctrlKey || evt.metaKey) { + var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys + if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) { + return + } + evt.preventDefault() + if (zoomDisabled) { + return + } + var previousScale = pdfViewer.currentScale + var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt) + var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0 + var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE + if (ticks < 0) { + PDFViewerApplication.zoomOut(-ticks) + } else { + PDFViewerApplication.zoomIn(ticks) + } + var currentScale = pdfViewer.currentScale + if (previousScale !== currentScale) { + var scaleCorrectionFactor = currentScale / previousScale - 1 + var rect = pdfViewer.container.getBoundingClientRect() + var dx = evt.clientX - rect.left + var dy = evt.clientY - rect.top + pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor + pdfViewer.container.scrollTop += dy * scaleCorrectionFactor + } + } else { + zoomDisabled = true + clearTimeout(zoomDisabledTimeout) + zoomDisabledTimeout = setTimeout(function() { + zoomDisabled = false + }, 1000) + } + } + function webViewerClick(evt) { + if (!PDFViewerApplication.secondaryToolbar.isOpen) { + return + } + var appConfig = PDFViewerApplication.appConfig + if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { + PDFViewerApplication.secondaryToolbar.close() + } + } + function webViewerKeyDown(evt) { + if (PDFViewerApplication.overlayManager.active) { + return + } + var handled = false, + ensureViewerFocused = false + var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0) + var pdfViewer = PDFViewerApplication.pdfViewer + var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode + if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { + switch (evt.keyCode) { + case 70: + if (!PDFViewerApplication.supportsIntegratedFind) { + PDFViewerApplication.findBar.open() + handled = true + } + break + case 71: + if (!PDFViewerApplication.supportsIntegratedFind) { + var findState = PDFViewerApplication.findController.state + if (findState) { + PDFViewerApplication.findController.executeCommand('findagain', { + query: findState.query, + phraseSearch: findState.phraseSearch, + caseSensitive: findState.caseSensitive, + highlightAll: findState.highlightAll, + findPrevious: cmd === 5 || cmd === 12 + }) + } + handled = true + } + break + case 61: + case 107: + case 187: + case 171: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomIn() + } + handled = true + break + case 173: + case 109: + case 189: + if (!isViewerInPresentationMode) { + PDFViewerApplication.zoomOut() + } + handled = true + break + case 48: + case 96: + if (!isViewerInPresentationMode) { + setTimeout(function() { + pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE + }) + handled = false + } + break + case 38: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1 + handled = true + ensureViewerFocused = true + } + break + case 40: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount + handled = true + ensureViewerFocused = true + } + break + } + } + if (cmd === 1 || cmd === 8) { + switch (evt.keyCode) { + case 83: + PDFViewerApplication.download() + handled = true + break + } + } + if (cmd === 3 || cmd === 10) { + switch (evt.keyCode) { + case 80: + PDFViewerApplication.requestPresentationMode() + handled = true + break + case 71: + PDFViewerApplication.appConfig.toolbar.pageNumber.select() + handled = true + break + } + } + if (handled) { + if (ensureViewerFocused && !isViewerInPresentationMode) { + pdfViewer.focus() + } + evt.preventDefault() + return + } + var curElement = document.activeElement || document.querySelector(':focus') + var curElementTagName = curElement && curElement.tagName.toUpperCase() + if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') { + if (evt.keyCode !== 27) { + return + } + } + if (cmd === 0) { + switch (evt.keyCode) { + case 38: + case 33: + case 8: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { + break + } + case 37: + if (pdfViewer.isHorizontalScrollbarEnabled) { + break + } + case 75: + case 80: + if (PDFViewerApplication.page > 1) { + PDFViewerApplication.page-- + } + handled = true + break + case 27: + if (PDFViewerApplication.secondaryToolbar.isOpen) { + PDFViewerApplication.secondaryToolbar.close() + handled = true + } + if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { + PDFViewerApplication.findBar.close() + handled = true + } + break + case 40: + case 34: + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { + break + } + case 39: + if (pdfViewer.isHorizontalScrollbarEnabled) { + break + } + case 74: + case 78: + if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page++ + } + handled = true + break + case 36: + if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { + PDFViewerApplication.page = 1 + handled = true + ensureViewerFocused = true + } + break + case 35: + if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { + PDFViewerApplication.page = PDFViewerApplication.pagesCount + handled = true + ensureViewerFocused = true + } + break + case 83: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.SELECT) + break + case 72: + PDFViewerApplication.pdfCursorTools.switchTool(_pdf_cursor_tools.CursorTool.HAND) + break + case 82: + PDFViewerApplication.rotatePages(90) + break + } + } + if (cmd === 4) { + switch (evt.keyCode) { + case 32: + if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { + break + } + if (PDFViewerApplication.page > 1) { + PDFViewerApplication.page-- + } + handled = true + break + case 82: + PDFViewerApplication.rotatePages(-90) + break + } + } + if (!handled && !isViewerInPresentationMode) { + if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') { + ensureViewerFocused = true + } + } + if (cmd === 2) { + switch (evt.keyCode) { + case 37: + if (isViewerInPresentationMode) { + PDFViewerApplication.pdfHistory.back() + handled = true + } + break + case 39: + if (isViewerInPresentationMode) { + PDFViewerApplication.pdfHistory.forward() + handled = true + } + break + } + } + if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { + pdfViewer.focus() + } + if (handled) { + evt.preventDefault() + } + } + function apiPageModeToSidebarView(mode) { + switch (mode) { + case 'UseNone': + return _pdf_sidebar.SidebarView.NONE + case 'UseThumbs': + return _pdf_sidebar.SidebarView.THUMBS + case 'UseOutlines': + return _pdf_sidebar.SidebarView.OUTLINE + case 'UseAttachments': + return _pdf_sidebar.SidebarView.ATTACHMENTS + case 'UseOC': + } + return _pdf_sidebar.SidebarView.NONE + } + var PDFPrintServiceFactory = { + instance: { + supportsPrinting: false, + createPrintService: function createPrintService() { + throw new Error('Not implemented: createPrintService') + } + } + } + exports.PDFViewerApplication = PDFViewerApplication + exports.DefaultExternalServices = DefaultExternalServices + exports.PDFPrintServiceFactory = PDFPrintServiceFactory + /** */ }, + /* 5 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.SimpleLinkService = exports.PDFLinkService = undefined + + var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) { return typeof obj } : function(obj) { return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj } + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _dom_events = __webpack_require__(2) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PDFLinkService = (function() { + function PDFLinkService() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + eventBus = _ref.eventBus + + _classCallCheck(this, PDFLinkService) + + this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)() + this.baseUrl = null + this.pdfDocument = null + this.pdfViewer = null + this.pdfHistory = null + this._pagesRefCache = null + } + + _createClass(PDFLinkService, [{ + key: 'setDocument', + value: function setDocument(pdfDocument, baseUrl) { + this.baseUrl = baseUrl + this.pdfDocument = pdfDocument + this._pagesRefCache = Object.create(null) + } + }, { + key: 'setViewer', + value: function setViewer(pdfViewer) { + this.pdfViewer = pdfViewer + } + }, { + key: 'setHistory', + value: function setHistory(pdfHistory) { + this.pdfHistory = pdfHistory + } + }, { + key: 'navigateTo', + value: function navigateTo(dest) { + var _this = this + + var goToDestination = function goToDestination(_ref2) { + var namedDest = _ref2.namedDest, + explicitDest = _ref2.explicitDest + + var destRef = explicitDest[0], + pageNumber = void 0 + if (destRef instanceof Object) { + pageNumber = _this._cachedPageNumber(destRef) + if (pageNumber === null) { + _this.pdfDocument.getPageIndex(destRef).then(function(pageIndex) { + _this.cachePageRef(pageIndex + 1, destRef) + goToDestination({ + namedDest: namedDest, + explicitDest: explicitDest + }) + }).catch(function() { + console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid page reference, for dest="' + dest + '".')) + }) + return + } + } else if ((destRef | 0) === destRef) { + pageNumber = destRef + 1 + } else { + console.error('PDFLinkService.navigateTo: "' + destRef + '" is not ' + ('a valid destination reference, for dest="' + dest + '".')) + return + } + if (!pageNumber || pageNumber < 1 || pageNumber > _this.pagesCount) { + console.error('PDFLinkService.navigateTo: "' + pageNumber + '" is not ' + ('a valid page number, for dest="' + dest + '".')) + return + } + _this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber, + destArray: explicitDest + }) + if (_this.pdfHistory) { + _this.pdfHistory.push({ + dest: explicitDest, + hash: namedDest, + page: pageNumber + }) + } + } + new Promise(function(resolve, reject) { + if (typeof dest === 'string') { + _this.pdfDocument.getDestination(dest).then(function(destArray) { + resolve({ + namedDest: dest, + explicitDest: destArray + }) + }) + return + } + resolve({ + namedDest: '', + explicitDest: dest + }) + }).then(function(data) { + if (!(data.explicitDest instanceof Array)) { + console.error('PDFLinkService.navigateTo: "' + data.explicitDest + '" is' + (' not a valid destination array, for dest="' + dest + '".')) + return + } + goToDestination(data) + }) + } + }, { + key: 'getDestinationHash', + value: function getDestinationHash(dest) { + if (typeof dest === 'string') { + return this.getAnchorUrl('#' + escape(dest)) + } + if (dest instanceof Array) { + var str = JSON.stringify(dest) + return this.getAnchorUrl('#' + escape(str)) + } + return this.getAnchorUrl('') + } + }, { + key: 'getAnchorUrl', + value: function getAnchorUrl(anchor) { + return (this.baseUrl || '') + anchor + } + }, { + key: 'setHash', + value: function setHash(hash) { + var pageNumber = void 0, + dest = void 0 + if (hash.indexOf('=') >= 0) { + var params = (0, _ui_utils.parseQueryString)(hash) + if ('search' in params) { + this.eventBus.dispatch('findfromurlhash', { + source: this, + query: params['search'].replace(/"/g, ''), + phraseSearch: params['phrase'] === 'true' + }) + } + if ('nameddest' in params) { + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(params.nameddest) + } + this.navigateTo(params.nameddest) + return + } + if ('page' in params) { + pageNumber = params.page | 0 || 1 + } + if ('zoom' in params) { + var zoomArgs = params.zoom.split(',') + var zoomArg = zoomArgs[0] + var zoomArgNumber = parseFloat(zoomArg) + if (zoomArg.indexOf('Fit') === -1) { + dest = [null, { name: 'XYZ' }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null, zoomArgs.length > 2 ? zoomArgs[2] | 0 : null, zoomArgNumber ? zoomArgNumber / 100 : zoomArg] + } else { + if (zoomArg === 'Fit' || zoomArg === 'FitB') { + dest = [null, { name: zoomArg }] + } else if (zoomArg === 'FitH' || zoomArg === 'FitBH' || zoomArg === 'FitV' || zoomArg === 'FitBV') { + dest = [null, { name: zoomArg }, zoomArgs.length > 1 ? zoomArgs[1] | 0 : null] + } else if (zoomArg === 'FitR') { + if (zoomArgs.length !== 5) { + console.error('PDFLinkService.setHash: Not enough parameters for "FitR".') + } else { + dest = [null, { name: zoomArg }, zoomArgs[1] | 0, zoomArgs[2] | 0, zoomArgs[3] | 0, zoomArgs[4] | 0] + } + } else { + console.error('PDFLinkService.setHash: "' + zoomArg + '" is not ' + 'a valid zoom value.') + } + } + } + if (dest) { + this.pdfViewer.scrollPageIntoView({ + pageNumber: pageNumber || this.page, + destArray: dest, + allowNegativeOffset: true + }) + } else if (pageNumber) { + this.page = pageNumber + } + if ('pagemode' in params) { + this.eventBus.dispatch('pagemode', { + source: this, + mode: params.pagemode + }) + } + } else { + if (/^\d+$/.test(hash) && hash <= this.pagesCount) { + console.warn('PDFLinkService_setHash: specifying a page number ' + 'directly after the hash symbol (#) is deprecated, ' + ('please use the "#page=' + hash + '" form instead.')) + this.page = hash | 0 + } + dest = unescape(hash) + try { + dest = JSON.parse(dest) + if (!(dest instanceof Array)) { + dest = dest.toString() + } + } catch (ex) {} + if (typeof dest === 'string' || isValidExplicitDestination(dest)) { + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(dest) + } + this.navigateTo(dest) + return + } + console.error('PDFLinkService.setHash: "' + unescape(hash) + '" is not ' + 'a valid destination.') + } + } + }, { + key: 'executeNamedAction', + value: function executeNamedAction(action) { + switch (action) { + case 'GoBack': + if (this.pdfHistory) { + this.pdfHistory.back() + } + break + case 'GoForward': + if (this.pdfHistory) { + this.pdfHistory.forward() + } + break + case 'NextPage': + if (this.page < this.pagesCount) { + this.page++ + } + break + case 'PrevPage': + if (this.page > 1) { + this.page-- + } + break + case 'LastPage': + this.page = this.pagesCount + break + case 'FirstPage': + this.page = 1 + break + default: + break + } + this.eventBus.dispatch('namedaction', { + source: this, + action: action + }) + } + }, { + key: 'onFileAttachmentAnnotation', + value: function onFileAttachmentAnnotation(_ref3) { + var id = _ref3.id, + filename = _ref3.filename, + content = _ref3.content + + this.eventBus.dispatch('fileattachmentannotation', { + source: this, + id: id, + filename: filename, + content: content + }) + } + }, { + key: 'cachePageRef', + value: function cachePageRef(pageNum, pageRef) { + var refStr = pageRef.num + ' ' + pageRef.gen + ' R' + this._pagesRefCache[refStr] = pageNum + } + }, { + key: '_cachedPageNumber', + value: function _cachedPageNumber(pageRef) { + var refStr = pageRef.num + ' ' + pageRef.gen + ' R' + return this._pagesRefCache && this._pagesRefCache[refStr] || null + } + }, { + key: 'pagesCount', + get: function get() { + return this.pdfDocument ? this.pdfDocument.numPages : 0 + } + }, { + key: 'page', + get: function get() { + return this.pdfViewer.currentPageNumber + }, + set: function set(value) { + this.pdfViewer.currentPageNumber = value + } + }]) + + return PDFLinkService + }()) + + function isValidExplicitDestination(dest) { + if (!(dest instanceof Array)) { + return false + } + var destLength = dest.length, + allowNull = true + if (destLength < 2) { + return false + } + var page = dest[0] + if (!((typeof page === 'undefined' ? 'undefined' : _typeof(page)) === 'object' && typeof page.num === 'number' && (page.num | 0) === page.num && typeof page.gen === 'number' && (page.gen | 0) === page.gen) && !(typeof page === 'number' && (page | 0) === page && page >= 0)) { + return false + } + var zoom = dest[1] + if (!((typeof zoom === 'undefined' ? 'undefined' : _typeof(zoom)) === 'object' && typeof zoom.name === 'string')) { + return false + } + switch (zoom.name) { + case 'XYZ': + if (destLength !== 5) { + return false + } + break + case 'Fit': + case 'FitB': + return destLength === 2 + case 'FitH': + case 'FitBH': + case 'FitV': + case 'FitBV': + if (destLength !== 3) { + return false + } + break + case 'FitR': + if (destLength !== 6) { + return false + } + allowNull = false + break + default: + return false + } + for (var i = 2; i < destLength; i++) { + var param = dest[i] + if (!(typeof param === 'number' || allowNull && param === null)) { + return false + } + } + return true + } + + var SimpleLinkService = (function() { + function SimpleLinkService() { + _classCallCheck(this, SimpleLinkService) + } + + _createClass(SimpleLinkService, [{ + key: 'navigateTo', + value: function navigateTo(dest) {} + }, { + key: 'getDestinationHash', + value: function getDestinationHash(dest) { + return '#' + } + }, { + key: 'getAnchorUrl', + value: function getAnchorUrl(hash) { + return '#' + } + }, { + key: 'setHash', + value: function setHash(hash) {} + }, { + key: 'executeNamedAction', + value: function executeNamedAction(action) {} + }, { + key: 'onFileAttachmentAnnotation', + value: function onFileAttachmentAnnotation(_ref4) { + var id = _ref4.id, + filename = _ref4.filename, + content = _ref4.content + } + }, { + key: 'cachePageRef', + value: function cachePageRef(pageNum, pageRef) {} + }, { + key: 'page', + get: function get() { + return 0 + }, + set: function set(value) {} + }]) + + return SimpleLinkService + }()) + + exports.PDFLinkService = PDFLinkService + exports.SimpleLinkService = SimpleLinkService + /** */ }, + /* 6 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFCursorTools = exports.CursorTool = undefined + + var _slicedToArray = (function() { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break } } catch (err) { _d = true; _e = err } finally { try { if (!_n && _i['return']) _i['return']() } finally { if (_d) throw _e } } return _arr } return function(arr, i) { if (Array.isArray(arr)) { return arr } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i) } else { throw new TypeError('Invalid attempt to destructure non-iterable instance') } } }()) + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _grab_to_pan = __webpack_require__(14) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var CursorTool = { + SELECT: 0, + HAND: 1, + ZOOM: 2 + } + + var PDFCursorTools = (function() { + function PDFCursorTools(_ref) { + var _this = this + + var container = _ref.container, + eventBus = _ref.eventBus, + preferences = _ref.preferences + + _classCallCheck(this, PDFCursorTools) + + this.container = container + this.eventBus = eventBus + this.active = CursorTool.SELECT + this.activeBeforePresentationMode = null + this.handTool = new _grab_to_pan.GrabToPan({ element: this.container }) + this._addEventListeners() + Promise.all([preferences.get('cursorToolOnLoad'), preferences.get('enableHandToolOnLoad')]).then(function(_ref2) { + var _ref3 = _slicedToArray(_ref2, 2), + cursorToolPref = _ref3[0], + handToolPref = _ref3[1] + + if (handToolPref === true) { + preferences.set('enableHandToolOnLoad', false) + if (cursorToolPref === CursorTool.SELECT) { + cursorToolPref = CursorTool.HAND + preferences.set('cursorToolOnLoad', cursorToolPref).catch(function() {}) + } + } + _this.switchTool(cursorToolPref) + }).catch(function() {}) + } + + _createClass(PDFCursorTools, [{ + key: 'switchTool', + value: function switchTool(tool) { + var _this2 = this + + if (this.activeBeforePresentationMode !== null) { + return + } + if (tool === this.active) { + return + } + var disableActiveTool = function disableActiveTool() { + switch (_this2.active) { + case CursorTool.SELECT: + break + case CursorTool.HAND: + _this2.handTool.deactivate() + break + case CursorTool.ZOOM: + } + } + switch (tool) { + case CursorTool.SELECT: + disableActiveTool() + break + case CursorTool.HAND: + disableActiveTool() + this.handTool.activate() + break + case CursorTool.ZOOM: + default: + console.error('switchTool: "' + tool + '" is an unsupported value.') + return + } + this.active = tool + this._dispatchEvent() + } + }, { + key: '_dispatchEvent', + value: function _dispatchEvent() { + this.eventBus.dispatch('cursortoolchanged', { + source: this, + tool: this.active + }) + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + var _this3 = this + + this.eventBus.on('switchcursortool', function(evt) { + _this3.switchTool(evt.tool) + }) + this.eventBus.on('presentationmodechanged', function(evt) { + if (evt.switchInProgress) { + return + } + var previouslyActive = void 0 + if (evt.active) { + previouslyActive = _this3.active + _this3.switchTool(CursorTool.SELECT) + _this3.activeBeforePresentationMode = previouslyActive + } else { + previouslyActive = _this3.activeBeforePresentationMode + _this3.activeBeforePresentationMode = null + _this3.switchTool(previouslyActive) + } + }) + } + }, { + key: 'activeTool', + get: function get() { + return this.active + } + }]) + + return PDFCursorTools + }()) + + exports.CursorTool = CursorTool + exports.PDFCursorTools = PDFCursorTools + /** */ }, + /* 7 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFFindController = exports.FindState = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var FindState = { + FOUND: 0, + NOT_FOUND: 1, + WRAPPED: 2, + PENDING: 3 + } + var FIND_SCROLL_OFFSET_TOP = -50 + var FIND_SCROLL_OFFSET_LEFT = -400 + var FIND_TIMEOUT = 250 + var CHARACTERS_TO_NORMALIZE = { + '\u2018': '\'', + '\u2019': '\'', + '\u201A': '\'', + '\u201B': '\'', + '\u201C': '"', + '\u201D': '"', + '\u201E': '"', + '\u201F': '"', + '\xBC': '1/4', + '\xBD': '1/2', + '\xBE': '3/4' + } + + var PDFFindController = (function() { + function PDFFindController(_ref) { + var pdfViewer = _ref.pdfViewer + + _classCallCheck(this, PDFFindController) + + this.pdfViewer = pdfViewer + this.onUpdateResultsCount = null + this.onUpdateState = null + this.reset() + var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('') + this.normalizationRegex = new RegExp('[' + replace + ']', 'g') + } + + _createClass(PDFFindController, [{ + key: 'reset', + value: function reset() { + var _this = this + + this.startedTextExtraction = false + this.extractTextPromises = [] + this.pendingFindMatches = Object.create(null) + this.active = false + this.pageContents = [] + this.pageMatches = [] + this.pageMatchesLength = null + this.matchCount = 0 + this.selected = { + pageIdx: -1, + matchIdx: -1 + } + this.offset = { + pageIdx: null, + matchIdx: null + } + this.pagesToSearch = null + this.resumePageIdx = null + this.state = null + this.dirtyMatch = false + this.findTimeout = null + this._firstPagePromise = new Promise(function(resolve) { + _this.resolveFirstPage = resolve + }) + } + }, { + key: 'normalize', + value: function normalize(text) { + return text.replace(this.normalizationRegex, function(ch) { + return CHARACTERS_TO_NORMALIZE[ch] + }) + } + }, { + key: '_prepareMatches', + value: function _prepareMatches(matchesWithLength, matches, matchesLength) { + function isSubTerm(matchesWithLength, currentIndex) { + var currentElem = matchesWithLength[currentIndex] + var nextElem = matchesWithLength[currentIndex + 1] + if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { + currentElem.skipped = true + return true + } + for (var i = currentIndex - 1; i >= 0; i--) { + var prevElem = matchesWithLength[i] + if (prevElem.skipped) { + continue + } + if (prevElem.match + prevElem.matchLength < currentElem.match) { + break + } + if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { + currentElem.skipped = true + return true + } + } + return false + } + matchesWithLength.sort(function(a, b) { + return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match + }) + for (var i = 0, len = matchesWithLength.length; i < len; i++) { + if (isSubTerm(matchesWithLength, i)) { + continue + } + matches.push(matchesWithLength[i].match) + matchesLength.push(matchesWithLength[i].matchLength) + } + } + }, { + key: 'calcFindPhraseMatch', + value: function calcFindPhraseMatch(query, pageIndex, pageContent) { + var matches = [] + var queryLen = query.length + var matchIdx = -queryLen + while (true) { + matchIdx = pageContent.indexOf(query, matchIdx + queryLen) + if (matchIdx === -1) { + break + } + matches.push(matchIdx) + } + this.pageMatches[pageIndex] = matches + } + }, { + key: 'calcFindWordMatch', + value: function calcFindWordMatch(query, pageIndex, pageContent) { + var matchesWithLength = [] + var queryArray = query.match(/\S+/g) + for (var i = 0, len = queryArray.length; i < len; i++) { + var subquery = queryArray[i] + var subqueryLen = subquery.length + var matchIdx = -subqueryLen + while (true) { + matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen) + if (matchIdx === -1) { + break + } + matchesWithLength.push({ + match: matchIdx, + matchLength: subqueryLen, + skipped: false + }) + } + } + if (!this.pageMatchesLength) { + this.pageMatchesLength = [] + } + this.pageMatchesLength[pageIndex] = [] + this.pageMatches[pageIndex] = [] + this._prepareMatches(matchesWithLength, this.pageMatches[pageIndex], this.pageMatchesLength[pageIndex]) + } + }, { + key: 'calcFindMatch', + value: function calcFindMatch(pageIndex) { + var pageContent = this.normalize(this.pageContents[pageIndex]) + var query = this.normalize(this.state.query) + var caseSensitive = this.state.caseSensitive + var phraseSearch = this.state.phraseSearch + var queryLen = query.length + if (queryLen === 0) { + return + } + if (!caseSensitive) { + pageContent = pageContent.toLowerCase() + query = query.toLowerCase() + } + if (phraseSearch) { + this.calcFindPhraseMatch(query, pageIndex, pageContent) + } else { + this.calcFindWordMatch(query, pageIndex, pageContent) + } + this.updatePage(pageIndex) + if (this.resumePageIdx === pageIndex) { + this.resumePageIdx = null + this.nextPageMatch() + } + if (this.pageMatches[pageIndex].length > 0) { + this.matchCount += this.pageMatches[pageIndex].length + this.updateUIResultsCount() + } + } + }, { + key: 'extractText', + value: function extractText() { + var _this2 = this + + if (this.startedTextExtraction) { + return + } + this.startedTextExtraction = true + this.pageContents.length = 0 + var promise = Promise.resolve() + + var _loop = function _loop(i, ii) { + var extractTextCapability = (0, _pdfjsLib.createPromiseCapability)() + _this2.extractTextPromises[i] = extractTextCapability.promise + promise = promise.then(function() { + return _this2.pdfViewer.getPageTextContent(i).then(function(textContent) { + var textItems = textContent.items + var strBuf = [] + for (var j = 0, jj = textItems.length; j < jj; j++) { + strBuf.push(textItems[j].str) + } + _this2.pageContents[i] = strBuf.join('') + extractTextCapability.resolve(i) + }, function(reason) { + console.error('Unable to get page ' + (i + 1) + ' text content', reason) + _this2.pageContents[i] = '' + extractTextCapability.resolve(i) + }) + }) + } + + for (var i = 0, ii = this.pdfViewer.pagesCount; i < ii; i++) { + _loop(i, ii) + } + } + }, { + key: 'executeCommand', + value: function executeCommand(cmd, state) { + var _this3 = this + + if (this.state === null || cmd !== 'findagain') { + this.dirtyMatch = true + } + this.state = state + this.updateUIState(FindState.PENDING) + this._firstPagePromise.then(function() { + _this3.extractText() + clearTimeout(_this3.findTimeout) + if (cmd === 'find') { + _this3.findTimeout = setTimeout(_this3.nextMatch.bind(_this3), FIND_TIMEOUT) + } else { + _this3.nextMatch() + } + }) + } + }, { + key: 'updatePage', + value: function updatePage(index) { + if (this.selected.pageIdx === index) { + this.pdfViewer.currentPageNumber = index + 1 + } + var page = this.pdfViewer.getPageView(index) + if (page.textLayer) { + page.textLayer.updateMatches() + } + } + }, { + key: 'nextMatch', + value: function nextMatch() { + var _this4 = this + + var previous = this.state.findPrevious + var currentPageIndex = this.pdfViewer.currentPageNumber - 1 + var numPages = this.pdfViewer.pagesCount + this.active = true + if (this.dirtyMatch) { + this.dirtyMatch = false + this.selected.pageIdx = this.selected.matchIdx = -1 + this.offset.pageIdx = currentPageIndex + this.offset.matchIdx = null + this.hadMatch = false + this.resumePageIdx = null + this.pageMatches = [] + this.matchCount = 0 + this.pageMatchesLength = null + for (var i = 0; i < numPages; i++) { + this.updatePage(i) + if (!(i in this.pendingFindMatches)) { + this.pendingFindMatches[i] = true + this.extractTextPromises[i].then(function(pageIdx) { + delete _this4.pendingFindMatches[pageIdx] + _this4.calcFindMatch(pageIdx) + }) + } + } + } + if (this.state.query === '') { + this.updateUIState(FindState.FOUND) + return + } + if (this.resumePageIdx) { + return + } + var offset = this.offset + this.pagesToSearch = numPages + if (offset.matchIdx !== null) { + var numPageMatches = this.pageMatches[offset.pageIdx].length + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + this.hadMatch = true + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1 + this.updateMatch(true) + return + } + this.advanceOffsetPage(previous) + } + this.nextPageMatch() + } + }, { + key: 'matchesReady', + value: function matchesReady(matches) { + var offset = this.offset + var numMatches = matches.length + var previous = this.state.findPrevious + if (numMatches) { + this.hadMatch = true + offset.matchIdx = previous ? numMatches - 1 : 0 + this.updateMatch(true) + return true + } + this.advanceOffsetPage(previous) + if (offset.wrapped) { + offset.matchIdx = null + if (this.pagesToSearch < 0) { + this.updateMatch(false) + return true + } + } + return false + } + }, { + key: 'updateMatchPosition', + value: function updateMatchPosition(pageIndex, matchIndex, elements, beginIdx) { + if (this.selected.matchIdx === matchIndex && this.selected.pageIdx === pageIndex) { + var spot = { + top: FIND_SCROLL_OFFSET_TOP, + left: FIND_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(elements[beginIdx], spot, true) + } + } + }, { + key: 'nextPageMatch', + value: function nextPageMatch() { + if (this.resumePageIdx !== null) { + console.error('There can only be one pending page.') + } + var matches = null + do { + var pageIdx = this.offset.pageIdx + matches = this.pageMatches[pageIdx] + if (!matches) { + this.resumePageIdx = pageIdx + break + } + } while (!this.matchesReady(matches)) + } + }, { + key: 'advanceOffsetPage', + value: function advanceOffsetPage(previous) { + var offset = this.offset + var numPages = this.extractTextPromises.length + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1 + offset.matchIdx = null + this.pagesToSearch-- + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0 + offset.wrapped = true + } + } + }, { + key: 'updateMatch', + value: function updateMatch() { + var found = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + var state = FindState.NOT_FOUND + var wrapped = this.offset.wrapped + this.offset.wrapped = false + if (found) { + var previousPage = this.selected.pageIdx + this.selected.pageIdx = this.offset.pageIdx + this.selected.matchIdx = this.offset.matchIdx + state = wrapped ? FindState.WRAPPED : FindState.FOUND + if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { + this.updatePage(previousPage) + } + } + this.updateUIState(state, this.state.findPrevious) + if (this.selected.pageIdx !== -1) { + this.updatePage(this.selected.pageIdx) + } + } + }, { + key: 'updateUIResultsCount', + value: function updateUIResultsCount() { + if (this.onUpdateResultsCount) { + this.onUpdateResultsCount(this.matchCount) + } + } + }, { + key: 'updateUIState', + value: function updateUIState(state, previous) { + if (this.onUpdateState) { + this.onUpdateState(state, previous, this.matchCount) + } + } + }]) + + return PDFFindController + }()) + + exports.FindState = FindState + exports.PDFFindController = PDFFindController + /** */ }, + /* 8 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.GenericCom = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _app = __webpack_require__(4) + + var _preferences = __webpack_require__(28) + + var _download_manager = __webpack_require__(12) + + var _genericl10n = __webpack_require__(13) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called") } return call && (typeof call === 'object' || typeof call === 'function') ? call : self } + + function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass) } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true }}); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass } + + var GenericCom = {} + + var GenericPreferences = (function(_BasePreferences) { + _inherits(GenericPreferences, _BasePreferences) + + function GenericPreferences() { + _classCallCheck(this, GenericPreferences) + + return _possibleConstructorReturn(this, (GenericPreferences.__proto__ || Object.getPrototypeOf(GenericPreferences)).apply(this, arguments)) + } + + _createClass(GenericPreferences, [{ + key: '_writeToStorage', + value: function _writeToStorage(prefObj) { + return new Promise(function(resolve) { + localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)) + resolve() + }) + } + }, { + key: '_readFromStorage', + value: function _readFromStorage(prefObj) { + return new Promise(function(resolve) { + var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences')) + resolve(readPrefs) + }) + } + }]) + + return GenericPreferences + }(_preferences.BasePreferences)) + + var GenericExternalServices = Object.create(_app.DefaultExternalServices) + GenericExternalServices.createDownloadManager = function() { + return new _download_manager.DownloadManager() + } + GenericExternalServices.createPreferences = function() { + return new GenericPreferences() + } + GenericExternalServices.createL10n = function() { + return new _genericl10n.GenericL10n(_pdfjsLib.PDFJS.locale) + } + _app.PDFViewerApplication.externalServices = GenericExternalServices + exports.GenericCom = GenericCom + /** */ }, + /* 9 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFPrintService = undefined + + var _ui_utils = __webpack_require__(0) + + var _app = __webpack_require__(4) + + var _pdfjsLib = __webpack_require__(1) + + var activeService = null + var overlayManager = null + function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) { + var scratchCanvas = activeService.scratchCanvas + var PRINT_RESOLUTION = 150 + var PRINT_UNITS = PRINT_RESOLUTION / 72.0 + scratchCanvas.width = Math.floor(size.width * PRINT_UNITS) + scratchCanvas.height = Math.floor(size.height * PRINT_UNITS) + var width = Math.floor(size.width * _ui_utils.CSS_UNITS) + 'px' + var height = Math.floor(size.height * _ui_utils.CSS_UNITS) + 'px' + var ctx = scratchCanvas.getContext('2d') + ctx.save() + ctx.fillStyle = 'rgb(255, 255, 255)' + ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height) + ctx.restore() + return pdfDocument.getPage(pageNumber).then(function(pdfPage) { + var renderContext = { + canvasContext: ctx, + transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0], + viewport: pdfPage.getViewport(1, size.rotation), + intent: 'print' + } + return pdfPage.render(renderContext).promise + }).then(function() { + return { + width: width, + height: height + } + }) + } + function PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) { + this.pdfDocument = pdfDocument + this.pagesOverview = pagesOverview + this.printContainer = printContainer + this.l10n = l10n || _ui_utils.NullL10n + this.currentPage = -1 + this.scratchCanvas = document.createElement('canvas') + } + PDFPrintService.prototype = { + layout: function layout() { + this.throwIfInactive() + var body = document.querySelector('body') + body.setAttribute('data-pdfjsprinting', true) + var hasEqualPageSizes = this.pagesOverview.every(function(size) { + return size.width === this.pagesOverview[0].width && size.height === this.pagesOverview[0].height + }, this) + if (!hasEqualPageSizes) { + console.warn('Not all pages have the same size. The printed ' + 'result may be incorrect!') + } + this.pageStyleSheet = document.createElement('style') + var pageSize = this.pagesOverview[0] + this.pageStyleSheet.textContent = '@supports ((size:A4) and (size:1pt 1pt)) {' + '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' + '}' + body.appendChild(this.pageStyleSheet) + }, + destroy: function destroy() { + if (activeService !== this) { + return + } + this.printContainer.textContent = '' + if (this.pageStyleSheet && this.pageStyleSheet.parentNode) { + this.pageStyleSheet.parentNode.removeChild(this.pageStyleSheet) + this.pageStyleSheet = null + } + this.scratchCanvas.width = this.scratchCanvas.height = 0 + this.scratchCanvas = null + activeService = null + ensureOverlay().then(function() { + if (overlayManager.active !== 'printServiceOverlay') { + return + } + overlayManager.close('printServiceOverlay') + }) + }, + renderPages: function renderPages() { + var _this = this + + var pageCount = this.pagesOverview.length + var renderNextPage = function renderNextPage(resolve, reject) { + _this.throwIfInactive() + if (++_this.currentPage >= pageCount) { + renderProgress(pageCount, pageCount, _this.l10n) + resolve() + return + } + var index = _this.currentPage + renderProgress(index, pageCount, _this.l10n) + renderPage(_this, _this.pdfDocument, index + 1, _this.pagesOverview[index]).then(_this.useRenderedPage.bind(_this)).then(function() { + renderNextPage(resolve, reject) + }, reject) + } + return new Promise(renderNextPage) + }, + useRenderedPage: function useRenderedPage(printItem) { + this.throwIfInactive() + var img = document.createElement('img') + img.style.width = printItem.width + img.style.height = printItem.height + var scratchCanvas = this.scratchCanvas + if ('toBlob' in scratchCanvas && !_pdfjsLib.PDFJS.disableCreateObjectURL) { + scratchCanvas.toBlob(function(blob) { + img.src = URL.createObjectURL(blob) + }) + } else { + img.src = scratchCanvas.toDataURL() + } + var wrapper = document.createElement('div') + wrapper.appendChild(img) + this.printContainer.appendChild(wrapper) + return new Promise(function(resolve, reject) { + img.onload = resolve + img.onerror = reject + }) + }, + performPrint: function performPrint() { + var _this2 = this + + this.throwIfInactive() + return new Promise(function(resolve) { + setTimeout(function() { + if (!_this2.active) { + resolve() + return + } + print.call(window) + setTimeout(resolve, 20) + }, 0) + }) + }, + + get active() { + return this === activeService + }, + throwIfInactive: function throwIfInactive() { + if (!this.active) { + throw new Error('This print request was cancelled or completed.') + } + } + } + var print = window.print + window.print = function print() { + if (activeService) { + console.warn('Ignored window.print() because of a pending print job.') + return + } + ensureOverlay().then(function() { + if (activeService) { + overlayManager.open('printServiceOverlay') + } + }) + try { + dispatchEvent('beforeprint') + } finally { + if (!activeService) { + console.error('Expected print service to be initialized.') + ensureOverlay().then(function() { + if (overlayManager.active === 'printServiceOverlay') { + overlayManager.close('printServiceOverlay') + } + }) + return + } + var activeServiceOnEntry = activeService + activeService.renderPages().then(function() { + return activeServiceOnEntry.performPrint() + }).catch(function() {}).then(function() { + if (activeServiceOnEntry.active) { + abort() + } + }) + } + } + function dispatchEvent(eventType) { + var event = document.createEvent('CustomEvent') + event.initCustomEvent(eventType, false, false, 'custom') + window.dispatchEvent(event) + } + function abort() { + if (activeService) { + activeService.destroy() + dispatchEvent('afterprint') + } + } + function renderProgress(index, total, l10n) { + var progressContainer = document.getElementById('printServiceOverlay') + var progress = Math.round(100 * index / total) + var progressBar = progressContainer.querySelector('progress') + var progressPerc = progressContainer.querySelector('.relative-progress') + progressBar.value = progress + l10n.get('print_progress_percent', { progress: progress }, progress + '%').then(function(msg) { + progressPerc.textContent = msg + }) + } + var hasAttachEvent = !!document.attachEvent + window.addEventListener('keydown', function(event) { + if (event.keyCode === 80 && (event.ctrlKey || event.metaKey) && !event.altKey && (!event.shiftKey || window.chrome || window.opera)) { + window.print() + if (hasAttachEvent) { + return + } + event.preventDefault() + if (event.stopImmediatePropagation) { + event.stopImmediatePropagation() + } else { + event.stopPropagation() + } + return + } + }, true) + if (hasAttachEvent) { + document.attachEvent('onkeydown', function(event) { + event = event || window.event + if (event.keyCode === 80 && event.ctrlKey) { + event.keyCode = 0 + return false + } + }) + } + if ('onbeforeprint' in window) { + var stopPropagationIfNeeded = function stopPropagationIfNeeded(event) { + if (event.detail !== 'custom' && event.stopImmediatePropagation) { + event.stopImmediatePropagation() + } + } + window.addEventListener('beforeprint', stopPropagationIfNeeded) + window.addEventListener('afterprint', stopPropagationIfNeeded) + } + var overlayPromise + function ensureOverlay() { + if (!overlayPromise) { + overlayManager = _app.PDFViewerApplication.overlayManager + if (!overlayManager) { + throw new Error('The overlay manager has not yet been initialized.') + } + overlayPromise = overlayManager.register('printServiceOverlay', document.getElementById('printServiceOverlay'), abort, true) + document.getElementById('printCancel').onclick = abort + } + return overlayPromise + } + _app.PDFPrintServiceFactory.instance = { + supportsPrinting: true, + createPrintService: function createPrintService(pdfDocument, pagesOverview, printContainer, l10n) { + if (activeService) { + throw new Error('The print service is created and active.') + } + activeService = new PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) + return activeService + } + } + exports.PDFPrintService = PDFPrintService + /** */ }, + /* 10 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + document.webL10n = (function(window, document, undefined) { + var gL10nData = {} + var gTextData = '' + var gTextProp = 'textContent' + var gLanguage = '' + var gMacros = {} + var gReadyState = 'loading' + var gAsyncResourceLoading = true + function getL10nResourceLinks() { + return document.querySelectorAll('link[type="application/l10n"]') + } + function getL10nDictionary() { + var script = document.querySelector('script[type="application/l10n"]') + return script ? JSON.parse(script.innerHTML) : null + } + function getTranslatableChildren(element) { + return element ? element.querySelectorAll('*[data-l10n-id]') : [] + } + function getL10nAttributes(element) { + if (!element) return {} + var l10nId = element.getAttribute('data-l10n-id') + var l10nArgs = element.getAttribute('data-l10n-args') + var args = {} + if (l10nArgs) { + try { + args = JSON.parse(l10nArgs) + } catch (e) { + console.warn('could not parse arguments for #' + l10nId) + } + } + return { + id: l10nId, + args: args + } + } + function fireL10nReadyEvent(lang) { + var evtObject = document.createEvent('Event') + evtObject.initEvent('localized', true, false) + evtObject.language = lang + document.dispatchEvent(evtObject) + } + function xhrLoadText(url, onSuccess, onFailure) { + onSuccess = onSuccess || function _onSuccess(data) {} + onFailure = onFailure || function _onFailure() {} + var xhr = new XMLHttpRequest() + xhr.open('GET', url, gAsyncResourceLoading) + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/plain; charset=utf-8') + } + xhr.onreadystatechange = function() { + if (xhr.readyState == 4) { + if (xhr.status == 200 || xhr.status === 0) { + onSuccess(xhr.responseText) + } else { + onFailure() + } + } + } + xhr.onerror = onFailure + xhr.ontimeout = onFailure + try { + xhr.send(null) + } catch (e) { + onFailure() + } + } + function parseResource(href, lang, successCallback, failureCallback) { + var baseURL = href.replace(/[^\/]*$/, '') || './' + function evalString(text) { + if (text.lastIndexOf('\\') < 0) return text + return text.replace(/\\\\/g, '\\').replace(/\\n/g, '\n').replace(/\\r/g, '\r').replace(/\\t/g, '\t').replace(/\\b/g, '\b').replace(/\\f/g, '\f').replace(/\\{/g, '{').replace(/\\}/g, '}').replace(/\\"/g, '"').replace(/\\'/g, "'") + } + function parseProperties(text, parsedPropertiesCallback) { + var dictionary = {} + var reBlank = /^\s*|\s*$/ + var reComment = /^\s*#|^\s*$/ + var reSection = /^\s*\[(.*)\]\s*$/ + var reImport = /^\s*@import\s+url\((.*)\)\s*$/i + var reSplit = /^([^=\s]*)\s*=\s*(.+)$/ + function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) { + var entries = rawText.replace(reBlank, '').split(/[\r\n]+/) + var currentLang = '*' + var genericLang = lang.split('-', 1)[0] + var skipLang = false + var match = '' + function nextEntry() { + while (true) { + if (!entries.length) { + parsedRawLinesCallback() + return + } + var line = entries.shift() + if (reComment.test(line)) continue + if (extendedSyntax) { + match = reSection.exec(line) + if (match) { + currentLang = match[1].toLowerCase() + skipLang = currentLang !== '*' && currentLang !== lang && currentLang !== genericLang + continue + } else if (skipLang) { + continue + } + match = reImport.exec(line) + if (match) { + loadImport(baseURL + match[1], nextEntry) + return + } + } + var tmp = line.match(reSplit) + if (tmp && tmp.length == 3) { + dictionary[tmp[1]] = evalString(tmp[2]) + } + } + } + nextEntry() + } + function loadImport(url, callback) { + xhrLoadText(url, function(content) { + parseRawLines(content, false, callback) + }, function() { + console.warn(url + ' not found.') + callback() + }) + } + parseRawLines(text, true, function() { + parsedPropertiesCallback(dictionary) + }) + } + xhrLoadText(href, function(response) { + gTextData += response + parseProperties(response, function(data) { + for (var key in data) { + var id, + prop, + index = key.lastIndexOf('.') + if (index > 0) { + id = key.substring(0, index) + prop = key.substr(index + 1) + } else { + id = key + prop = gTextProp + } + if (!gL10nData[id]) { + gL10nData[id] = {} + } + gL10nData[id][prop] = data[key] + } + if (successCallback) { + successCallback() + } + }) + }, failureCallback) + } + function loadLocale(lang, callback) { + if (lang) { + lang = lang.toLowerCase() + } + callback = callback || function _callback() {} + clear() + gLanguage = lang + var langLinks = getL10nResourceLinks() + var langCount = langLinks.length + if (langCount === 0) { + var dict = getL10nDictionary() + if (dict && dict.locales && dict.default_locale) { + console.log('using the embedded JSON directory, early way out') + gL10nData = dict.locales[lang] + if (!gL10nData) { + var defaultLocale = dict.default_locale.toLowerCase() + for (var anyCaseLang in dict.locales) { + anyCaseLang = anyCaseLang.toLowerCase() + if (anyCaseLang === lang) { + gL10nData = dict.locales[lang] + break + } else if (anyCaseLang === defaultLocale) { + gL10nData = dict.locales[defaultLocale] + } + } + } + callback() + } else { + console.log('no resource to load, early way out') + } + fireL10nReadyEvent(lang) + gReadyState = 'complete' + return + } + var onResourceLoaded = null + var gResourceCount = 0 + onResourceLoaded = function onResourceLoaded() { + gResourceCount++ + if (gResourceCount >= langCount) { + callback() + fireL10nReadyEvent(lang) + gReadyState = 'complete' + } + } + function L10nResourceLink(link) { + var href = link.href + this.load = function(lang, callback) { + parseResource(href, lang, callback, function() { + console.warn(href + ' not found.') + console.warn('"' + lang + '" resource not found') + gLanguage = '' + callback() + }) + } + } + for (var i = 0; i < langCount; i++) { + var resource = new L10nResourceLink(langLinks[i]) + resource.load(lang, onResourceLoaded) + } + } + function clear() { + gL10nData = {} + gTextData = '' + gLanguage = '' + } + function getPluralRules(lang) { + var locales2rules = { + 'af': 3, + 'ak': 4, + 'am': 4, + 'ar': 1, + 'asa': 3, + 'az': 0, + 'be': 11, + 'bem': 3, + 'bez': 3, + 'bg': 3, + 'bh': 4, + 'bm': 0, + 'bn': 3, + 'bo': 0, + 'br': 20, + 'brx': 3, + 'bs': 11, + 'ca': 3, + 'cgg': 3, + 'chr': 3, + 'cs': 12, + 'cy': 17, + 'da': 3, + 'de': 3, + 'dv': 3, + 'dz': 0, + 'ee': 3, + 'el': 3, + 'en': 3, + 'eo': 3, + 'es': 3, + 'et': 3, + 'eu': 3, + 'fa': 0, + 'ff': 5, + 'fi': 3, + 'fil': 4, + 'fo': 3, + 'fr': 5, + 'fur': 3, + 'fy': 3, + 'ga': 8, + 'gd': 24, + 'gl': 3, + 'gsw': 3, + 'gu': 3, + 'guw': 4, + 'gv': 23, + 'ha': 3, + 'haw': 3, + 'he': 2, + 'hi': 4, + 'hr': 11, + 'hu': 0, + 'id': 0, + 'ig': 0, + 'ii': 0, + 'is': 3, + 'it': 3, + 'iu': 7, + 'ja': 0, + 'jmc': 3, + 'jv': 0, + 'ka': 0, + 'kab': 5, + 'kaj': 3, + 'kcg': 3, + 'kde': 0, + 'kea': 0, + 'kk': 3, + 'kl': 3, + 'km': 0, + 'kn': 0, + 'ko': 0, + 'ksb': 3, + 'ksh': 21, + 'ku': 3, + 'kw': 7, + 'lag': 18, + 'lb': 3, + 'lg': 3, + 'ln': 4, + 'lo': 0, + 'lt': 10, + 'lv': 6, + 'mas': 3, + 'mg': 4, + 'mk': 16, + 'ml': 3, + 'mn': 3, + 'mo': 9, + 'mr': 3, + 'ms': 0, + 'mt': 15, + 'my': 0, + 'nah': 3, + 'naq': 7, + 'nb': 3, + 'nd': 3, + 'ne': 3, + 'nl': 3, + 'nn': 3, + 'no': 3, + 'nr': 3, + 'nso': 4, + 'ny': 3, + 'nyn': 3, + 'om': 3, + 'or': 3, + 'pa': 3, + 'pap': 3, + 'pl': 13, + 'ps': 3, + 'pt': 3, + 'rm': 3, + 'ro': 9, + 'rof': 3, + 'ru': 11, + 'rwk': 3, + 'sah': 0, + 'saq': 3, + 'se': 7, + 'seh': 3, + 'ses': 0, + 'sg': 0, + 'sh': 11, + 'shi': 19, + 'sk': 12, + 'sl': 14, + 'sma': 7, + 'smi': 7, + 'smj': 7, + 'smn': 7, + 'sms': 7, + 'sn': 3, + 'so': 3, + 'sq': 3, + 'sr': 11, + 'ss': 3, + 'ssy': 3, + 'st': 3, + 'sv': 3, + 'sw': 3, + 'syr': 3, + 'ta': 3, + 'te': 3, + 'teo': 3, + 'th': 0, + 'ti': 4, + 'tig': 3, + 'tk': 3, + 'tl': 4, + 'tn': 3, + 'to': 0, + 'tr': 0, + 'ts': 3, + 'tzm': 22, + 'uk': 11, + 'ur': 3, + 've': 3, + 'vi': 0, + 'vun': 3, + 'wa': 4, + 'wae': 3, + 'wo': 0, + 'xh': 3, + 'xog': 3, + 'yo': 0, + 'zh': 0, + 'zu': 3 + } + function isIn(n, list) { + return list.indexOf(n) !== -1 + } + function isBetween(n, start, end) { + return start <= n && n <= end + } + var pluralRules = { + '0': function _(n) { + return 'other' + }, + '1': function _(n) { + if (isBetween(n % 100, 3, 10)) return 'few' + if (n === 0) return 'zero' + if (isBetween(n % 100, 11, 99)) return 'many' + if (n == 2) return 'two' + if (n == 1) return 'one' + return 'other' + }, + '2': function _(n) { + if (n !== 0 && n % 10 === 0) return 'many' + if (n == 2) return 'two' + if (n == 1) return 'one' + return 'other' + }, + '3': function _(n) { + if (n == 1) return 'one' + return 'other' + }, + '4': function _(n) { + if (isBetween(n, 0, 1)) return 'one' + return 'other' + }, + '5': function _(n) { + if (isBetween(n, 0, 2) && n != 2) return 'one' + return 'other' + }, + '6': function _(n) { + if (n === 0) return 'zero' + if (n % 10 == 1 && n % 100 != 11) return 'one' + return 'other' + }, + '7': function _(n) { + if (n == 2) return 'two' + if (n == 1) return 'one' + return 'other' + }, + '8': function _(n) { + if (isBetween(n, 3, 6)) return 'few' + if (isBetween(n, 7, 10)) return 'many' + if (n == 2) return 'two' + if (n == 1) return 'one' + return 'other' + }, + '9': function _(n) { + if (n === 0 || n != 1 && isBetween(n % 100, 1, 19)) return 'few' + if (n == 1) return 'one' + return 'other' + }, + '10': function _(n) { + if (isBetween(n % 10, 2, 9) && !isBetween(n % 100, 11, 19)) return 'few' + if (n % 10 == 1 && !isBetween(n % 100, 11, 19)) return 'one' + return 'other' + }, + '11': function _(n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few' + if (n % 10 === 0 || isBetween(n % 10, 5, 9) || isBetween(n % 100, 11, 14)) return 'many' + if (n % 10 == 1 && n % 100 != 11) return 'one' + return 'other' + }, + '12': function _(n) { + if (isBetween(n, 2, 4)) return 'few' + if (n == 1) return 'one' + return 'other' + }, + '13': function _(n) { + if (isBetween(n % 10, 2, 4) && !isBetween(n % 100, 12, 14)) return 'few' + if (n != 1 && isBetween(n % 10, 0, 1) || isBetween(n % 10, 5, 9) || isBetween(n % 100, 12, 14)) return 'many' + if (n == 1) return 'one' + return 'other' + }, + '14': function _(n) { + if (isBetween(n % 100, 3, 4)) return 'few' + if (n % 100 == 2) return 'two' + if (n % 100 == 1) return 'one' + return 'other' + }, + '15': function _(n) { + if (n === 0 || isBetween(n % 100, 2, 10)) return 'few' + if (isBetween(n % 100, 11, 19)) return 'many' + if (n == 1) return 'one' + return 'other' + }, + '16': function _(n) { + if (n % 10 == 1 && n != 11) return 'one' + return 'other' + }, + '17': function _(n) { + if (n == 3) return 'few' + if (n === 0) return 'zero' + if (n == 6) return 'many' + if (n == 2) return 'two' + if (n == 1) return 'one' + return 'other' + }, + '18': function _(n) { + if (n === 0) return 'zero' + if (isBetween(n, 0, 2) && n !== 0 && n != 2) return 'one' + return 'other' + }, + '19': function _(n) { + if (isBetween(n, 2, 10)) return 'few' + if (isBetween(n, 0, 1)) return 'one' + return 'other' + }, + '20': function _(n) { + if ((isBetween(n % 10, 3, 4) || n % 10 == 9) && !(isBetween(n % 100, 10, 19) || isBetween(n % 100, 70, 79) || isBetween(n % 100, 90, 99))) return 'few' + if (n % 1000000 === 0 && n !== 0) return 'many' + if (n % 10 == 2 && !isIn(n % 100, [12, 72, 92])) return 'two' + if (n % 10 == 1 && !isIn(n % 100, [11, 71, 91])) return 'one' + return 'other' + }, + '21': function _(n) { + if (n === 0) return 'zero' + if (n == 1) return 'one' + return 'other' + }, + '22': function _(n) { + if (isBetween(n, 0, 1) || isBetween(n, 11, 99)) return 'one' + return 'other' + }, + '23': function _(n) { + if (isBetween(n % 10, 1, 2) || n % 20 === 0) return 'one' + return 'other' + }, + '24': function _(n) { + if (isBetween(n, 3, 10) || isBetween(n, 13, 19)) return 'few' + if (isIn(n, [2, 12])) return 'two' + if (isIn(n, [1, 11])) return 'one' + return 'other' + } + } + var index = locales2rules[lang.replace(/-.*$/, '')] + if (!(index in pluralRules)) { + console.warn('plural form unknown for [' + lang + ']') + return function() { + return 'other' + } + } + return pluralRules[index] + } + gMacros.plural = function(str, param, key, prop) { + var n = parseFloat(param) + if (isNaN(n)) return str + if (prop != gTextProp) return str + if (!gMacros._pluralRules) { + gMacros._pluralRules = getPluralRules(gLanguage) + } + var index = '[' + gMacros._pluralRules(n) + ']' + if (n === 0 && key + '[zero]' in gL10nData) { + str = gL10nData[key + '[zero]'][prop] + } else if (n == 1 && key + '[one]' in gL10nData) { + str = gL10nData[key + '[one]'][prop] + } else if (n == 2 && key + '[two]' in gL10nData) { + str = gL10nData[key + '[two]'][prop] + } else if (key + index in gL10nData) { + str = gL10nData[key + index][prop] + } else if (key + '[other]' in gL10nData) { + str = gL10nData[key + '[other]'][prop] + } + return str + } + function getL10nData(key, args, fallback) { + var data = gL10nData[key] + if (!data) { + console.warn('#' + key + ' is undefined.') + if (!fallback) { + return null + } + data = fallback + } + var rv = {} + for (var prop in data) { + var str = data[prop] + str = substIndexes(str, args, key, prop) + str = substArguments(str, args, key) + rv[prop] = str + } + return rv + } + function substIndexes(str, args, key, prop) { + var reIndex = /\{\[\s*([a-zA-Z]+)\(([a-zA-Z]+)\)\s*\]\}/ + var reMatch = reIndex.exec(str) + if (!reMatch || !reMatch.length) return str + var macroName = reMatch[1] + var paramName = reMatch[2] + var param + if (args && paramName in args) { + param = args[paramName] + } else if (paramName in gL10nData) { + param = gL10nData[paramName] + } + if (macroName in gMacros) { + var macro = gMacros[macroName] + str = macro(str, param, key, prop) + } + return str + } + function substArguments(str, args, key) { + var reArgs = /\{\{\s*(.+?)\s*\}\}/g + return str.replace(reArgs, function(matched_text, arg) { + if (args && arg in args) { + return args[arg] + } + if (arg in gL10nData) { + return gL10nData[arg] + } + console.log('argument {{' + arg + '}} for #' + key + ' is undefined.') + return matched_text + }) + } + function translateElement(element) { + var l10n = getL10nAttributes(element) + if (!l10n.id) return + var data = getL10nData(l10n.id, l10n.args) + if (!data) { + console.warn('#' + l10n.id + ' is undefined.') + return + } + if (data[gTextProp]) { + if (getChildElementCount(element) === 0) { + element[gTextProp] = data[gTextProp] + } else { + var children = element.childNodes + var found = false + for (var i = 0, l = children.length; i < l; i++) { + if (children[i].nodeType === 3 && /\S/.test(children[i].nodeValue)) { + if (found) { + children[i].nodeValue = '' + } else { + children[i].nodeValue = data[gTextProp] + found = true + } + } + } + if (!found) { + var textNode = document.createTextNode(data[gTextProp]) + element.insertBefore(textNode, element.firstChild) + } + } + delete data[gTextProp] + } + for (var k in data) { + element[k] = data[k] + } + } + function getChildElementCount(element) { + if (element.children) { + return element.children.length + } + if (typeof element.childElementCount !== 'undefined') { + return element.childElementCount + } + var count = 0 + for (var i = 0; i < element.childNodes.length; i++) { + count += element.nodeType === 1 ? 1 : 0 + } + return count + } + function translateFragment(element) { + element = element || document.documentElement + var children = getTranslatableChildren(element) + var elementCount = children.length + for (var i = 0; i < elementCount; i++) { + translateElement(children[i]) + } + translateElement(element) + } + return { + get: function get(key, args, fallbackString) { + var index = key.lastIndexOf('.') + var prop = gTextProp + if (index > 0) { + prop = key.substr(index + 1) + key = key.substring(0, index) + } + var fallback + if (fallbackString) { + fallback = {} + fallback[prop] = fallbackString + } + var data = getL10nData(key, args, fallback) + if (data && prop in data) { + return data[prop] + } + return '{{' + key + '}}' + }, + getData: function getData() { + return gL10nData + }, + getText: function getText() { + return gTextData + }, + getLanguage: function getLanguage() { + return gLanguage + }, + setLanguage: function setLanguage(lang, callback) { + loadLocale(lang, function() { + if (callback) callback() + }) + }, + getDirection: function getDirection() { + var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'] + var shortCode = gLanguage.split('-', 1)[0] + return rtlList.indexOf(shortCode) >= 0 ? 'rtl' : 'ltr' + }, + translate: translateFragment, + getReadyState: function getReadyState() { + return gReadyState + }, + ready: function ready(callback) { + if (!callback) { + return + } else if (gReadyState == 'complete' || gReadyState == 'interactive') { + window.setTimeout(function() { + callback() + }) + } else if (document.addEventListener) { + document.addEventListener('localized', function once() { + document.removeEventListener('localized', once) + callback() + }) + } + } + } + }(window, document)) + /** */ }, + /* 11 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + var _ui_utils = __webpack_require__(0) + + var _pdf_link_service = __webpack_require__(5) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var AnnotationLayerBuilder = (function() { + function AnnotationLayerBuilder(_ref) { + var pageDiv = _ref.pageDiv, + pdfPage = _ref.pdfPage, + linkService = _ref.linkService, + downloadManager = _ref.downloadManager, + _ref$renderInteractiv = _ref.renderInteractiveForms, + renderInteractiveForms = _ref$renderInteractiv === undefined ? false : _ref$renderInteractiv, + _ref$l10n = _ref.l10n, + l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n + + _classCallCheck(this, AnnotationLayerBuilder) + + this.pageDiv = pageDiv + this.pdfPage = pdfPage + this.linkService = linkService + this.downloadManager = downloadManager + this.renderInteractiveForms = renderInteractiveForms + this.l10n = l10n + this.div = null + } + + _createClass(AnnotationLayerBuilder, [{ + key: 'render', + value: function render(viewport) { + var _this = this + + var intent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'display' + + this.pdfPage.getAnnotations({ intent: intent }).then(function(annotations) { + var parameters = { + viewport: viewport.clone({ dontFlip: true }), + div: _this.div, + annotations: annotations, + page: _this.pdfPage, + renderInteractiveForms: _this.renderInteractiveForms, + linkService: _this.linkService, + downloadManager: _this.downloadManager + } + if (_this.div) { + _pdfjsLib.AnnotationLayer.update(parameters) + } else { + if (annotations.length === 0) { + return + } + _this.div = document.createElement('div') + _this.div.className = 'annotationLayer' + _this.pageDiv.appendChild(_this.div) + parameters.div = _this.div + _pdfjsLib.AnnotationLayer.render(parameters) + _this.l10n.translate(_this.div) + } + }) + } + }, { + key: 'hide', + value: function hide() { + if (!this.div) { + return + } + this.div.setAttribute('hidden', 'true') + } + }]) + + return AnnotationLayerBuilder + }()) + + var DefaultAnnotationLayerFactory = (function() { + function DefaultAnnotationLayerFactory() { + _classCallCheck(this, DefaultAnnotationLayerFactory) + } + + _createClass(DefaultAnnotationLayerFactory, [{ + key: 'createAnnotationLayerBuilder', + value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { + var renderInteractiveForms = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n + + return new AnnotationLayerBuilder({ + pageDiv: pageDiv, + pdfPage: pdfPage, + renderInteractiveForms: renderInteractiveForms, + linkService: new _pdf_link_service.SimpleLinkService(), + l10n: l10n + }) + } + }]) + + return DefaultAnnotationLayerFactory + }()) + + exports.AnnotationLayerBuilder = AnnotationLayerBuilder + exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory + /** */ }, + /* 12 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.DownloadManager = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + function _download(blobUrl, filename) { + var a = document.createElement('a') + if (a.click) { + a.href = blobUrl + a.target = '_parent' + if ('download' in a) { + a.download = filename + } + (document.body || document.documentElement).appendChild(a) + a.click() + a.parentNode.removeChild(a) + } else { + if (window.top === window && blobUrl.split('#')[0] === window.location.href.split('#')[0]) { + var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&' + blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&') + } + window.open(blobUrl, '_parent') + } + } + + var DownloadManager = (function() { + function DownloadManager() { + _classCallCheck(this, DownloadManager) + } + + _createClass(DownloadManager, [{ + key: 'downloadUrl', + value: function downloadUrl(url, filename) { + if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, 'http://example.com')) { + return + } + _download(url + '#pdfjs.action=download', filename) + } + }, { + key: 'downloadData', + value: function downloadData(data, filename, contentType) { + if (navigator.msSaveBlob) { + return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename) + } + var blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, _pdfjsLib.PDFJS.disableCreateObjectURL) + _download(blobUrl, filename) + } + }, { + key: 'download', + value: function download(blob, url, filename) { + if (navigator.msSaveBlob) { + if (!navigator.msSaveBlob(blob, filename)) { + this.downloadUrl(url, filename) + } + return + } + if (_pdfjsLib.PDFJS.disableCreateObjectURL) { + this.downloadUrl(url, filename) + return + } + var blobUrl = URL.createObjectURL(blob) + _download(blobUrl, filename) + } + }]) + + return DownloadManager + }()) + + exports.DownloadManager = DownloadManager + /** */ }, + /* 13 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.GenericL10n = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + __webpack_require__(10) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var webL10n = document.webL10n + + var GenericL10n = (function() { + function GenericL10n(lang) { + _classCallCheck(this, GenericL10n) + + this._lang = lang + this._ready = new Promise(function(resolve, reject) { + webL10n.setLanguage(lang, function() { + resolve(webL10n) + }) + }) + } + + _createClass(GenericL10n, [{ + key: 'getDirection', + value: function getDirection() { + return this._ready.then(function(l10n) { + return l10n.getDirection() + }) + } + }, { + key: 'get', + value: function get(property, args, fallback) { + return this._ready.then(function(l10n) { + return l10n.get(property, args, fallback) + }) + } + }, { + key: 'translate', + value: function translate(element) { + return this._ready.then(function(l10n) { + return l10n.translate(element) + }) + } + }]) + + return GenericL10n + }()) + + exports.GenericL10n = GenericL10n + /** */ }, + /* 14 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + function GrabToPan(options) { + this.element = options.element + this.document = options.element.ownerDocument + if (typeof options.ignoreTarget === 'function') { + this.ignoreTarget = options.ignoreTarget + } + this.onActiveChanged = options.onActiveChanged + this.activate = this.activate.bind(this) + this.deactivate = this.deactivate.bind(this) + this.toggle = this.toggle.bind(this) + this._onmousedown = this._onmousedown.bind(this) + this._onmousemove = this._onmousemove.bind(this) + this._endPan = this._endPan.bind(this) + var overlay = this.overlay = document.createElement('div') + overlay.className = 'grab-to-pan-grabbing' + } + GrabToPan.prototype = { + CSS_CLASS_GRAB: 'grab-to-pan-grab', + activate: function GrabToPan_activate() { + if (!this.active) { + this.active = true + this.element.addEventListener('mousedown', this._onmousedown, true) + this.element.classList.add(this.CSS_CLASS_GRAB) + if (this.onActiveChanged) { + this.onActiveChanged(true) + } + } + }, + deactivate: function GrabToPan_deactivate() { + if (this.active) { + this.active = false + this.element.removeEventListener('mousedown', this._onmousedown, true) + this._endPan() + this.element.classList.remove(this.CSS_CLASS_GRAB) + if (this.onActiveChanged) { + this.onActiveChanged(false) + } + } + }, + toggle: function GrabToPan_toggle() { + if (this.active) { + this.deactivate() + } else { + this.activate() + } + }, + ignoreTarget: function GrabToPan_ignoreTarget(node) { + return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option') + }, + _onmousedown: function GrabToPan__onmousedown(event) { + if (event.button !== 0 || this.ignoreTarget(event.target)) { + return + } + if (event.originalTarget) { + try { + event.originalTarget.tagName + } catch (e) { + return + } + } + this.scrollLeftStart = this.element.scrollLeft + this.scrollTopStart = this.element.scrollTop + this.clientXStart = event.clientX + this.clientYStart = event.clientY + this.document.addEventListener('mousemove', this._onmousemove, true) + this.document.addEventListener('mouseup', this._endPan, true) + this.element.addEventListener('scroll', this._endPan, true) + event.preventDefault() + event.stopPropagation() + var focusedElement = document.activeElement + if (focusedElement && !focusedElement.contains(event.target)) { + focusedElement.blur() + } + }, + _onmousemove: function GrabToPan__onmousemove(event) { + this.element.removeEventListener('scroll', this._endPan, true) + if (isLeftMouseReleased(event)) { + this._endPan() + return + } + var xDiff = event.clientX - this.clientXStart + var yDiff = event.clientY - this.clientYStart + var scrollTop = this.scrollTopStart - yDiff + var scrollLeft = this.scrollLeftStart - xDiff + if (this.element.scrollTo) { + this.element.scrollTo({ + top: scrollTop, + left: scrollLeft, + behavior: 'instant' + }) + } else { + this.element.scrollTop = scrollTop + this.element.scrollLeft = scrollLeft + } + if (!this.overlay.parentNode) { + document.body.appendChild(this.overlay) + } + }, + _endPan: function GrabToPan__endPan() { + this.element.removeEventListener('scroll', this._endPan, true) + this.document.removeEventListener('mousemove', this._onmousemove, true) + this.document.removeEventListener('mouseup', this._endPan, true) + this.overlay.remove() + } + } + var matchesSelector; + ['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function(prefix) { + var name = prefix + 'atches' + if (name in document.documentElement) { + matchesSelector = name + } + name += 'Selector' + if (name in document.documentElement) { + matchesSelector = name + } + return matchesSelector + }) + var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9 + var chrome = window.chrome + var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app) + var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent) + function isLeftMouseReleased(event) { + if ('buttons' in event && isNotIEorIsIE10plus) { + return !(event.buttons & 1) + } + if (isChrome15OrOpera15plus || isSafari6plus) { + return event.which === 0 + } + } + exports.GrabToPan = GrabToPan + /** */ }, + /* 15 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var OverlayManager = (function() { + function OverlayManager() { + _classCallCheck(this, OverlayManager) + + this._overlays = {} + this._active = null + this._keyDownBound = this._keyDown.bind(this) + } + + _createClass(OverlayManager, [{ + key: 'register', + value: function register(name, element) { + var _this = this + + var callerCloseMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null + var canForceClose = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false + + return new Promise(function(resolve) { + var container = void 0 + if (!name || !element || !(container = element.parentNode)) { + throw new Error('Not enough parameters.') + } else if (_this._overlays[name]) { + throw new Error('The overlay is already registered.') + } + _this._overlays[name] = { + element: element, + container: container, + callerCloseMethod: callerCloseMethod, + canForceClose: canForceClose + } + resolve() + }) + } + }, { + key: 'unregister', + value: function unregister(name) { + var _this2 = this + + return new Promise(function(resolve) { + if (!_this2._overlays[name]) { + throw new Error('The overlay does not exist.') + } else if (_this2._active === name) { + throw new Error('The overlay cannot be removed while it is active.') + } + delete _this2._overlays[name] + resolve() + }) + } + }, { + key: 'open', + value: function open(name) { + var _this3 = this + + return new Promise(function(resolve) { + if (!_this3._overlays[name]) { + throw new Error('The overlay does not exist.') + } else if (_this3._active) { + if (_this3._overlays[name].canForceClose) { + _this3._closeThroughCaller() + } else if (_this3._active === name) { + throw new Error('The overlay is already active.') + } else { + throw new Error('Another overlay is currently active.') + } + } + _this3._active = name + _this3._overlays[_this3._active].element.classList.remove('hidden') + _this3._overlays[_this3._active].container.classList.remove('hidden') + window.addEventListener('keydown', _this3._keyDownBound) + resolve() + }) + } + }, { + key: 'close', + value: function close(name) { + var _this4 = this + + return new Promise(function(resolve) { + if (!_this4._overlays[name]) { + throw new Error('The overlay does not exist.') + } else if (!_this4._active) { + throw new Error('The overlay is currently not active.') + } else if (_this4._active !== name) { + throw new Error('Another overlay is currently active.') + } + _this4._overlays[_this4._active].container.classList.add('hidden') + _this4._overlays[_this4._active].element.classList.add('hidden') + _this4._active = null + window.removeEventListener('keydown', _this4._keyDownBound) + resolve() + }) + } + }, { + key: '_keyDown', + value: function _keyDown(evt) { + if (this._active && evt.keyCode === 27) { + this._closeThroughCaller() + evt.preventDefault() + } + } + }, { + key: '_closeThroughCaller', + value: function _closeThroughCaller() { + if (this._overlays[this._active].callerCloseMethod) { + this._overlays[this._active].callerCloseMethod() + } + if (this._active) { + this.close(this._active) + } + } + }, { + key: 'active', + get: function get() { + return this._active + } + }]) + + return OverlayManager + }()) + + exports.OverlayManager = OverlayManager + /** */ }, + /* 16 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PasswordPrompt = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PasswordPrompt = (function() { + function PasswordPrompt(options, overlayManager) { + var _this = this + + var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n + + _classCallCheck(this, PasswordPrompt) + + this.overlayName = options.overlayName + this.container = options.container + this.label = options.label + this.input = options.input + this.submitButton = options.submitButton + this.cancelButton = options.cancelButton + this.overlayManager = overlayManager + this.l10n = l10n + this.updateCallback = null + this.reason = null + this.submitButton.addEventListener('click', this.verify.bind(this)) + this.cancelButton.addEventListener('click', this.close.bind(this)) + this.input.addEventListener('keydown', function(e) { + if (e.keyCode === 13) { + _this.verify() + } + }) + this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true) + } + + _createClass(PasswordPrompt, [{ + key: 'open', + value: function open() { + var _this2 = this + + this.overlayManager.open(this.overlayName).then(function() { + _this2.input.focus() + var promptString = void 0 + if (_this2.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) { + promptString = _this2.l10n.get('password_invalid', null, 'Invalid password. Please try again.') + } else { + promptString = _this2.l10n.get('password_label', null, 'Enter the password to open this PDF file.') + } + promptString.then(function(msg) { + _this2.label.textContent = msg + }) + }) + } + }, { + key: 'close', + value: function close() { + var _this3 = this + + this.overlayManager.close(this.overlayName).then(function() { + _this3.input.value = '' + }) + } + }, { + key: 'verify', + value: function verify() { + var password = this.input.value + if (password && password.length > 0) { + this.close() + return this.updateCallback(password) + } + } + }, { + key: 'setUpdateCallback', + value: function setUpdateCallback(updateCallback, reason) { + this.updateCallback = updateCallback + this.reason = reason + } + }]) + + return PasswordPrompt + }()) + + exports.PasswordPrompt = PasswordPrompt + /** */ }, + /* 17 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFAttachmentViewer = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PDFAttachmentViewer = (function() { + function PDFAttachmentViewer(_ref) { + var container = _ref.container, + eventBus = _ref.eventBus, + downloadManager = _ref.downloadManager + + _classCallCheck(this, PDFAttachmentViewer) + + this.attachments = null + this.container = container + this.eventBus = eventBus + this.downloadManager = downloadManager + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)() + this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this)) + } + + _createClass(PDFAttachmentViewer, [{ + key: 'reset', + value: function reset() { + var keepRenderedCapability = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + this.attachments = null + this.container.textContent = '' + if (!keepRenderedCapability) { + this._renderedCapability = (0, _pdfjsLib.createPromiseCapability)() + } + } + }, { + key: '_dispatchEvent', + value: function _dispatchEvent(attachmentsCount) { + this.eventBus.dispatch('attachmentsloaded', { + source: this, + attachmentsCount: attachmentsCount + }) + this._renderedCapability.resolve() + } + }, { + key: '_bindPdfLink', + value: function _bindPdfLink(button, content, filename) { + if (_pdfjsLib.PDFJS.disableCreateObjectURL) { + throw new Error('bindPdfLink: ' + 'Unsupported "PDFJS.disableCreateObjectURL" value.') + } + var blobUrl = void 0 + button.onclick = function() { + if (!blobUrl) { + blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf') + } + var viewerUrl = void 0 + viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename) + window.open(viewerUrl) + return false + } + } + }, { + key: '_bindLink', + value: function _bindLink(button, content, filename) { + var _this = this + + button.onclick = function() { + _this.downloadManager.downloadData(content, filename, '') + return false + } + } + }, { + key: 'render', + value: function render(_ref2) { + var attachments = _ref2.attachments, + _ref2$keepRenderedCap = _ref2.keepRenderedCapability, + keepRenderedCapability = _ref2$keepRenderedCap === undefined ? false : _ref2$keepRenderedCap + + var attachmentsCount = 0 + if (this.attachments) { + this.reset(keepRenderedCapability === true) + } + this.attachments = attachments || null + if (!attachments) { + this._dispatchEvent(attachmentsCount) + return + } + var names = Object.keys(attachments).sort(function(a, b) { + return a.toLowerCase().localeCompare(b.toLowerCase()) + }) + attachmentsCount = names.length + for (var i = 0; i < attachmentsCount; i++) { + var item = attachments[names[i]] + var filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename)) + var div = document.createElement('div') + div.className = 'attachmentsItem' + var button = document.createElement('button') + button.textContent = filename + if (/\.pdf$/i.test(filename) && !_pdfjsLib.PDFJS.disableCreateObjectURL) { + this._bindPdfLink(button, item.content, filename) + } else { + this._bindLink(button, item.content, filename) + } + div.appendChild(button) + this.container.appendChild(div) + } + this._dispatchEvent(attachmentsCount) + } + }, { + key: '_appendAttachment', + value: function _appendAttachment(_ref3) { + var _this2 = this + + var id = _ref3.id, + filename = _ref3.filename, + content = _ref3.content + + this._renderedCapability.promise.then(function() { + var attachments = _this2.attachments + if (!attachments) { + attachments = Object.create(null) + } else { + for (var name in attachments) { + if (id === name) { + return + } + } + } + attachments[id] = { + filename: filename, + content: content + } + _this2.render({ + attachments: attachments, + keepRenderedCapability: true + }) + }) + } + }]) + + return PDFAttachmentViewer + }()) + + exports.PDFAttachmentViewer = PDFAttachmentViewer + /** */ }, + /* 18 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFDocumentProperties = undefined + + var _slicedToArray = (function() { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break } } catch (err) { _d = true; _e = err } finally { try { if (!_n && _i['return']) _i['return']() } finally { if (_d) throw _e } } return _arr } return function(arr, i) { if (Array.isArray(arr)) { return arr } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i) } else { throw new TypeError('Invalid attempt to destructure non-iterable instance') } } }()) + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var DEFAULT_FIELD_CONTENT = '-' + + var PDFDocumentProperties = (function() { + function PDFDocumentProperties(_ref, overlayManager) { + var overlayName = _ref.overlayName, + fields = _ref.fields, + container = _ref.container, + closeButton = _ref.closeButton + var l10n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _ui_utils.NullL10n + + _classCallCheck(this, PDFDocumentProperties) + + this.overlayName = overlayName + this.fields = fields + this.container = container + this.overlayManager = overlayManager + this.l10n = l10n + this._reset() + if (closeButton) { + closeButton.addEventListener('click', this.close.bind(this)) + } + this.overlayManager.register(this.overlayName, this.container, this.close.bind(this)) + } + + _createClass(PDFDocumentProperties, [{ + key: 'open', + value: function open() { + var _this = this + + var freezeFieldData = function freezeFieldData(data) { + Object.defineProperty(_this, 'fieldData', { + value: Object.freeze(data), + writable: false, + enumerable: true, + configurable: true + }) + } + Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function() { + if (_this.fieldData) { + _this._updateUI() + return + } + _this.pdfDocument.getMetadata().then(function(_ref2) { + var info = _ref2.info, + metadata = _ref2.metadata + + return Promise.all([info, metadata, _this._parseFileSize(_this.maybeFileSize), _this._parseDate(info.CreationDate), _this._parseDate(info.ModDate)]) + }).then(function(_ref3) { + var _ref4 = _slicedToArray(_ref3, 5), + info = _ref4[0], + metadata = _ref4[1], + fileSize = _ref4[2], + creationDate = _ref4[3], + modificationDate = _ref4[4] + + freezeFieldData({ + 'fileName': (0, _ui_utils.getPDFFileNameFromURL)(_this.url), + 'fileSize': fileSize, + 'title': info.Title, + 'author': info.Author, + 'subject': info.Subject, + 'keywords': info.Keywords, + 'creationDate': creationDate, + 'modificationDate': modificationDate, + 'creator': info.Creator, + 'producer': info.Producer, + 'version': info.PDFFormatVersion, + 'pageCount': _this.pdfDocument.numPages + }) + _this._updateUI() + return _this.pdfDocument.getDownloadInfo() + }).then(function(_ref5) { + var length = _ref5.length + + return _this._parseFileSize(length) + }).then(function(fileSize) { + var data = (0, _ui_utils.cloneObj)(_this.fieldData) + data['fileSize'] = fileSize + freezeFieldData(data) + _this._updateUI() + }) + }) + } + }, { + key: 'close', + value: function close() { + this.overlayManager.close(this.overlayName) + } + }, { + key: 'setDocument', + value: function setDocument(pdfDocument, url) { + if (this.pdfDocument) { + this._reset() + this._updateUI(true) + } + if (!pdfDocument) { + return + } + this.pdfDocument = pdfDocument + this.url = url + this._dataAvailableCapability.resolve() + } + }, { + key: 'setFileSize', + value: function setFileSize(fileSize) { + if (typeof fileSize === 'number' && fileSize > 0) { + this.maybeFileSize = fileSize + } + } + }, { + key: '_reset', + value: function _reset() { + this.pdfDocument = null + this.url = null + this.maybeFileSize = 0 + delete this.fieldData + this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)() + } + }, { + key: '_updateUI', + value: function _updateUI() { + var reset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + if (reset || !this.fieldData) { + for (var id in this.fields) { + this.fields[id].textContent = DEFAULT_FIELD_CONTENT + } + return + } + if (this.overlayManager.active !== this.overlayName) { + return + } + for (var _id in this.fields) { + var content = this.fieldData[_id] + this.fields[_id].textContent = content || content === 0 ? content : DEFAULT_FIELD_CONTENT + } + } + }, { + key: '_parseFileSize', + value: function _parseFileSize() { + var fileSize = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0 + + var kb = fileSize / 1024 + if (!kb) { + return Promise.resolve(undefined) + } else if (kb < 1024) { + return this.l10n.get('document_properties_kb', { + size_kb: (+kb.toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }, '{{size_kb}} KB ({{size_b}} bytes)') + } + return this.l10n.get('document_properties_mb', { + size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(), + size_b: fileSize.toLocaleString() + }, '{{size_mb}} MB ({{size_b}} bytes)') + } + }, { + key: '_parseDate', + value: function _parseDate(inputDate) { + if (!inputDate) { + return + } + var dateToParse = inputDate + if (dateToParse.substring(0, 2) === 'D:') { + dateToParse = dateToParse.substring(2) + } + var year = parseInt(dateToParse.substring(0, 4), 10) + var month = parseInt(dateToParse.substring(4, 6), 10) - 1 + var day = parseInt(dateToParse.substring(6, 8), 10) + var hours = parseInt(dateToParse.substring(8, 10), 10) + var minutes = parseInt(dateToParse.substring(10, 12), 10) + var seconds = parseInt(dateToParse.substring(12, 14), 10) + var utRel = dateToParse.substring(14, 15) + var offsetHours = parseInt(dateToParse.substring(15, 17), 10) + var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10) + if (utRel === '-') { + hours += offsetHours + minutes += offsetMinutes + } else if (utRel === '+') { + hours -= offsetHours + minutes -= offsetMinutes + } + var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds)) + var dateString = date.toLocaleDateString() + var timeString = date.toLocaleTimeString() + return this.l10n.get('document_properties_date_string', { + date: dateString, + time: timeString + }, '{{date}}, {{time}}') + } + }]) + + return PDFDocumentProperties + }()) + + exports.PDFDocumentProperties = PDFDocumentProperties + /** */ }, + /* 19 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFFindBar = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdf_find_controller = __webpack_require__(7) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PDFFindBar = (function() { + function PDFFindBar(options) { + var _this = this + + var l10n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ui_utils.NullL10n + + _classCallCheck(this, PDFFindBar) + + this.opened = false + this.bar = options.bar || null + this.toggleButton = options.toggleButton || null + this.findField = options.findField || null + this.highlightAll = options.highlightAllCheckbox || null + this.caseSensitive = options.caseSensitiveCheckbox || null + this.findMsg = options.findMsg || null + this.findResultsCount = options.findResultsCount || null + this.findStatusIcon = options.findStatusIcon || null + this.findPreviousButton = options.findPreviousButton || null + this.findNextButton = options.findNextButton || null + this.findController = options.findController || null + this.eventBus = options.eventBus + this.l10n = l10n + if (this.findController === null) { + throw new Error('PDFFindBar cannot be used without a ' + 'PDFFindController instance.') + } + this.toggleButton.addEventListener('click', function() { + _this.toggle() + }) + this.findField.addEventListener('input', function() { + _this.dispatchEvent('') + }) + this.bar.addEventListener('keydown', function(e) { + switch (e.keyCode) { + case 13: + if (e.target === _this.findField) { + _this.dispatchEvent('again', e.shiftKey) + } + break + case 27: + _this.close() + break + } + }) + this.findPreviousButton.addEventListener('click', function() { + _this.dispatchEvent('again', true) + }) + this.findNextButton.addEventListener('click', function() { + _this.dispatchEvent('again', false) + }) + this.highlightAll.addEventListener('click', function() { + _this.dispatchEvent('highlightallchange') + }) + this.caseSensitive.addEventListener('click', function() { + _this.dispatchEvent('casesensitivitychange') + }) + this.eventBus.on('resize', this._adjustWidth.bind(this)) + } + + _createClass(PDFFindBar, [{ + key: 'reset', + value: function reset() { + this.updateUIState() + } + }, { + key: 'dispatchEvent', + value: function dispatchEvent(type, findPrev) { + this.eventBus.dispatch('find', { + source: this, + type: type, + query: this.findField.value, + caseSensitive: this.caseSensitive.checked, + phraseSearch: true, + highlightAll: this.highlightAll.checked, + findPrevious: findPrev + }) + } + }, { + key: 'updateUIState', + value: function updateUIState(state, previous, matchCount) { + var _this2 = this + + var notFound = false + var findMsg = '' + var status = '' + switch (state) { + case _pdf_find_controller.FindState.FOUND: + break + case _pdf_find_controller.FindState.PENDING: + status = 'pending' + break + case _pdf_find_controller.FindState.NOT_FOUND: + findMsg = this.l10n.get('find_not_found', null, 'Phrase not found') + notFound = true + break + case _pdf_find_controller.FindState.WRAPPED: + if (previous) { + findMsg = this.l10n.get('find_reached_top', null, 'Reached top of document, continued from bottom') + } else { + findMsg = this.l10n.get('find_reached_bottom', null, 'Reached end of document, continued from top') + } + break + } + if (notFound) { + this.findField.classList.add('notFound') + } else { + this.findField.classList.remove('notFound') + } + this.findField.setAttribute('data-status', status) + Promise.resolve(findMsg).then(function(msg) { + _this2.findMsg.textContent = msg + _this2._adjustWidth() + }) + this.updateResultsCount(matchCount) + } + }, { + key: 'updateResultsCount', + value: function updateResultsCount(matchCount) { + if (!this.findResultsCount) { + return + } + if (!matchCount) { + this.findResultsCount.classList.add('hidden') + this.findResultsCount.textContent = '' + } else { + this.findResultsCount.textContent = matchCount.toLocaleString() + this.findResultsCount.classList.remove('hidden') + } + this._adjustWidth() + } + }, { + key: 'open', + value: function open() { + if (!this.opened) { + this.opened = true + this.toggleButton.classList.add('toggled') + this.bar.classList.remove('hidden') + } + this.findField.select() + this.findField.focus() + this._adjustWidth() + } + }, { + key: 'close', + value: function close() { + if (!this.opened) { + return + } + this.opened = false + this.toggleButton.classList.remove('toggled') + this.bar.classList.add('hidden') + this.findController.active = false + } + }, { + key: 'toggle', + value: function toggle() { + if (this.opened) { + this.close() + } else { + this.open() + } + } + }, { + key: '_adjustWidth', + value: function _adjustWidth() { + if (!this.opened) { + return + } + this.bar.classList.remove('wrapContainers') + var findbarHeight = this.bar.clientHeight + var inputContainerHeight = this.bar.firstElementChild.clientHeight + if (findbarHeight > inputContainerHeight) { + this.bar.classList.add('wrapContainers') + } + } + }]) + + return PDFFindBar + }()) + + exports.PDFFindBar = PDFFindBar + /** */ }, + /* 20 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFHistory = undefined + + var _dom_events = __webpack_require__(2) + + function PDFHistory(options) { + this.linkService = options.linkService + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)() + this.initialized = false + this.initialDestination = null + this.initialBookmark = null + } + PDFHistory.prototype = { + initialize: function pdfHistoryInitialize(fingerprint) { + this.initialized = true + this.reInitialized = false + this.allowHashChange = true + this.historyUnlocked = true + this.isViewerInPresentationMode = false + this.previousHash = window.location.hash.substring(1) + this.currentBookmark = '' + this.currentPage = 0 + this.updatePreviousBookmark = false + this.previousBookmark = '' + this.previousPage = 0 + this.nextHashParam = '' + this.fingerprint = fingerprint + this.currentUid = this.uid = 0 + this.current = {} + var state = window.history.state + if (this._isStateObjectDefined(state)) { + if (state.target.dest) { + this.initialDestination = state.target.dest + } else { + this.initialBookmark = state.target.hash + } + this.currentUid = state.uid + this.uid = state.uid + 1 + this.current = state.target + } else { + if (state && state.fingerprint && this.fingerprint !== state.fingerprint) { + this.reInitialized = true + } + this._pushOrReplaceState({ fingerprint: this.fingerprint }, true) + } + var self = this + window.addEventListener('popstate', function pdfHistoryPopstate(evt) { + if (!self.historyUnlocked) { + return + } + if (evt.state) { + self._goTo(evt.state) + return + } + if (self.uid === 0) { + var previousParams = self.previousHash && self.currentBookmark && self.previousHash !== self.currentBookmark ? { + hash: self.currentBookmark, + page: self.currentPage + } : { page: 1 } + replacePreviousHistoryState(previousParams, function() { + updateHistoryWithCurrentHash() + }) + } else { + updateHistoryWithCurrentHash() + } + }) + function updateHistoryWithCurrentHash() { + self.previousHash = window.location.hash.slice(1) + self._pushToHistory({ hash: self.previousHash }, false, true) + self._updatePreviousBookmark() + } + function replacePreviousHistoryState(params, callback) { + self.historyUnlocked = false + self.allowHashChange = false + window.addEventListener('popstate', rewriteHistoryAfterBack) + history.back() + function rewriteHistoryAfterBack() { + window.removeEventListener('popstate', rewriteHistoryAfterBack) + window.addEventListener('popstate', rewriteHistoryAfterForward) + self._pushToHistory(params, false, true) + history.forward() + } + function rewriteHistoryAfterForward() { + window.removeEventListener('popstate', rewriteHistoryAfterForward) + self.allowHashChange = true + self.historyUnlocked = true + callback() + } + } + function pdfHistoryBeforeUnload() { + var previousParams = self._getPreviousParams(null, true) + if (previousParams) { + var replacePrevious = !self.current.dest && self.current.hash !== self.previousHash + self._pushToHistory(previousParams, false, replacePrevious) + self._updatePreviousBookmark() + } + window.removeEventListener('beforeunload', pdfHistoryBeforeUnload) + } + window.addEventListener('beforeunload', pdfHistoryBeforeUnload) + window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { + window.addEventListener('beforeunload', pdfHistoryBeforeUnload) + }) + self.eventBus.on('presentationmodechanged', function(e) { + self.isViewerInPresentationMode = e.active + }) + }, + clearHistoryState: function pdfHistory_clearHistoryState() { + this._pushOrReplaceState(null, true) + }, + _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { + return !!(state && state.uid >= 0 && state.fingerprint && this.fingerprint === state.fingerprint && state.target && state.target.hash) + }, + _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, replace) { + if (replace) { + window.history.replaceState(stateObj, '', document.URL) + } else { + window.history.pushState(stateObj, '', document.URL) + } + }, + get isHashChangeUnlocked() { + if (!this.initialized) { + return true + } + return this.allowHashChange + }, + _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { + if (this.updatePreviousBookmark && this.currentBookmark && this.currentPage) { + this.previousBookmark = this.currentBookmark + this.previousPage = this.currentPage + this.updatePreviousBookmark = false + } + }, + updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, pageNum) { + if (this.initialized) { + this.currentBookmark = bookmark.substring(1) + this.currentPage = pageNum | 0 + this._updatePreviousBookmark() + } + }, + updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { + if (this.initialized) { + this.nextHashParam = param + } + }, + push: function pdfHistoryPush(params, isInitialBookmark) { + if (!(this.initialized && this.historyUnlocked)) { + return + } + if (params.dest && !params.hash) { + params.hash = this.current.hash && this.current.dest && this.current.dest === params.dest ? this.current.hash : this.linkService.getDestinationHash(params.dest).split('#')[1] + } + if (params.page) { + params.page |= 0 + } + if (isInitialBookmark) { + var target = window.history.state.target + if (!target) { + this._pushToHistory(params, false) + this.previousHash = window.location.hash.substring(1) + } + this.updatePreviousBookmark = !this.nextHashParam + if (target) { + this._updatePreviousBookmark() + } + return + } + if (this.nextHashParam) { + if (this.nextHashParam === params.hash) { + this.nextHashParam = null + this.updatePreviousBookmark = true + return + } + this.nextHashParam = null + } + if (params.hash) { + if (this.current.hash) { + if (this.current.hash !== params.hash) { + this._pushToHistory(params, true) + } else { + if (!this.current.page && params.page) { + this._pushToHistory(params, false, true) + } + this.updatePreviousBookmark = true + } + } else { + this._pushToHistory(params, true) + } + } else if (this.current.page && params.page && this.current.page !== params.page) { + this._pushToHistory(params, true) + } + }, + _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, beforeUnload) { + if (!(this.currentBookmark && this.currentPage)) { + return null + } else if (this.updatePreviousBookmark) { + this.updatePreviousBookmark = false + } + if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { + return null + } + if (!this.current.dest && !onlyCheckPage || beforeUnload) { + if (this.previousBookmark === this.currentBookmark) { + return null + } + } else if (this.current.page || onlyCheckPage) { + if (this.previousPage === this.currentPage) { + return null + } + } else { + return null + } + var params = { + hash: this.currentBookmark, + page: this.currentPage + } + if (this.isViewerInPresentationMode) { + params.hash = null + } + return params + }, + _stateObj: function pdfHistory_stateObj(params) { + return { + fingerprint: this.fingerprint, + uid: this.uid, + target: params + } + }, + _pushToHistory: function pdfHistory_pushToHistory(params, addPrevious, overwrite) { + if (!this.initialized) { + return + } + if (!params.hash && params.page) { + params.hash = 'page=' + params.page + } + if (addPrevious && !overwrite) { + var previousParams = this._getPreviousParams() + if (previousParams) { + var replacePrevious = !this.current.dest && this.current.hash !== this.previousHash + this._pushToHistory(previousParams, false, replacePrevious) + } + } + this._pushOrReplaceState(this._stateObj(params), overwrite || this.uid === 0) + this.currentUid = this.uid++ + this.current = params + this.updatePreviousBookmark = true + }, + _goTo: function pdfHistory_goTo(state) { + if (!(this.initialized && this.historyUnlocked && this._isStateObjectDefined(state))) { + return + } + if (!this.reInitialized && state.uid < this.currentUid) { + var previousParams = this._getPreviousParams(true) + if (previousParams) { + this._pushToHistory(this.current, false) + this._pushToHistory(previousParams, false) + this.currentUid = state.uid + window.history.back() + return + } + } + this.historyUnlocked = false + if (state.target.dest) { + this.linkService.navigateTo(state.target.dest) + } else { + this.linkService.setHash(state.target.hash) + } + this.currentUid = state.uid + if (state.uid > this.uid) { + this.uid = state.uid + } + this.current = state.target + this.updatePreviousBookmark = true + var currentHash = window.location.hash.substring(1) + if (this.previousHash !== currentHash) { + this.allowHashChange = false + } + this.previousHash = currentHash + this.historyUnlocked = true + }, + back: function pdfHistoryBack() { + this.go(-1) + }, + forward: function pdfHistoryForward() { + this.go(1) + }, + go: function pdfHistoryGo(direction) { + if (this.initialized && this.historyUnlocked) { + var state = window.history.state + if (direction === -1 && state && state.uid > 0) { + window.history.back() + } else if (direction === 1 && state && state.uid < this.uid - 1) { + window.history.forward() + } + } + } + } + exports.PDFHistory = PDFHistory + /** */ }, + /* 21 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFOutlineViewer = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var DEFAULT_TITLE = '\u2013' + + var PDFOutlineViewer = (function() { + function PDFOutlineViewer(_ref) { + var container = _ref.container, + linkService = _ref.linkService, + eventBus = _ref.eventBus + + _classCallCheck(this, PDFOutlineViewer) + + this.outline = null + this.lastToggleIsShow = true + this.container = container + this.linkService = linkService + this.eventBus = eventBus + } + + _createClass(PDFOutlineViewer, [{ + key: 'reset', + value: function reset() { + this.outline = null + this.lastToggleIsShow = true + this.container.textContent = '' + this.container.classList.remove('outlineWithDeepNesting') + } + }, { + key: '_dispatchEvent', + value: function _dispatchEvent(outlineCount) { + this.eventBus.dispatch('outlineloaded', { + source: this, + outlineCount: outlineCount + }) + } + }, { + key: '_bindLink', + value: function _bindLink(element, item) { + var _this = this + + if (item.url) { + (0, _pdfjsLib.addLinkAttributes)(element, { + url: item.url, + target: item.newWindow ? _pdfjsLib.PDFJS.LinkTarget.BLANK : undefined + }) + return + } + var destination = item.dest + element.href = this.linkService.getDestinationHash(destination) + element.onclick = function() { + if (destination) { + _this.linkService.navigateTo(destination) + } + return false + } + } + }, { + key: '_setStyles', + value: function _setStyles(element, item) { + var styleStr = '' + if (item.bold) { + styleStr += 'font-weight: bold;' + } + if (item.italic) { + styleStr += 'font-style: italic;' + } + if (styleStr) { + element.setAttribute('style', styleStr) + } + } + }, { + key: '_addToggleButton', + value: function _addToggleButton(div) { + var _this2 = this + + var toggler = document.createElement('div') + toggler.className = 'outlineItemToggler' + toggler.onclick = function(evt) { + evt.stopPropagation() + toggler.classList.toggle('outlineItemsHidden') + if (evt.shiftKey) { + var shouldShowAll = !toggler.classList.contains('outlineItemsHidden') + _this2._toggleOutlineItem(div, shouldShowAll) + } + } + div.insertBefore(toggler, div.firstChild) + } + }, { + key: '_toggleOutlineItem', + value: function _toggleOutlineItem(root, show) { + this.lastToggleIsShow = show + var togglers = root.querySelectorAll('.outlineItemToggler') + for (var i = 0, ii = togglers.length; i < ii; ++i) { + togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden') + } + } + }, { + key: 'toggleOutlineTree', + value: function toggleOutlineTree() { + if (!this.outline) { + return + } + this._toggleOutlineItem(this.container, !this.lastToggleIsShow) + } + }, { + key: 'render', + value: function render(_ref2) { + var outline = _ref2.outline + + var outlineCount = 0 + if (this.outline) { + this.reset() + } + this.outline = outline || null + if (!outline) { + this._dispatchEvent(outlineCount) + return + } + var fragment = document.createDocumentFragment() + var queue = [{ + parent: fragment, + items: this.outline + }] + var hasAnyNesting = false + while (queue.length > 0) { + var levelData = queue.shift() + for (var i = 0, len = levelData.items.length; i < len; i++) { + var item = levelData.items[i] + var div = document.createElement('div') + div.className = 'outlineItem' + var element = document.createElement('a') + this._bindLink(element, item) + this._setStyles(element, item) + element.textContent = (0, _pdfjsLib.removeNullCharacters)(item.title) || DEFAULT_TITLE + div.appendChild(element) + if (item.items.length > 0) { + hasAnyNesting = true + this._addToggleButton(div) + var itemsDiv = document.createElement('div') + itemsDiv.className = 'outlineItems' + div.appendChild(itemsDiv) + queue.push({ + parent: itemsDiv, + items: item.items + }) + } + levelData.parent.appendChild(div) + outlineCount++ + } + } + if (hasAnyNesting) { + this.container.classList.add('outlineWithDeepNesting') + } + this.container.appendChild(fragment) + this._dispatchEvent(outlineCount) + } + }]) + + return PDFOutlineViewer + }()) + + exports.PDFOutlineViewer = PDFOutlineViewer + /** */ }, + /* 22 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFPageView = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdfjsLib = __webpack_require__(1) + + var _dom_events = __webpack_require__(2) + + var _pdf_rendering_queue = __webpack_require__(3) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PDFPageView = (function() { + function PDFPageView(options) { + _classCallCheck(this, PDFPageView) + + var container = options.container + var defaultViewport = options.defaultViewport + this.id = options.id + this.renderingId = 'page' + this.id + this.pdfPage = null + this.pageLabel = null + this.rotation = 0 + this.scale = options.scale || _ui_utils.DEFAULT_SCALE + this.viewport = defaultViewport + this.pdfPageRotate = defaultViewport.rotation + this.hasRestrictedScaling = false + this.enhanceTextSelection = options.enhanceTextSelection || false + this.renderInteractiveForms = options.renderInteractiveForms || false + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)() + this.renderingQueue = options.renderingQueue + this.textLayerFactory = options.textLayerFactory + this.annotationLayerFactory = options.annotationLayerFactory + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS + this.l10n = options.l10n || _ui_utils.NullL10n + this.paintTask = null + this.paintedViewportMap = new WeakMap() + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL + this.resume = null + this.error = null + this.onBeforeDraw = null + this.onAfterDraw = null + this.annotationLayer = null + this.textLayer = null + this.zoomLayer = null + var div = document.createElement('div') + div.className = 'page' + div.style.width = Math.floor(this.viewport.width) + 'px' + div.style.height = Math.floor(this.viewport.height) + 'px' + div.setAttribute('data-page-number', this.id) + this.div = div + container.appendChild(div) + } + + _createClass(PDFPageView, [{ + key: 'setPdfPage', + value: function setPdfPage(pdfPage) { + this.pdfPage = pdfPage + this.pdfPageRotate = pdfPage.rotate + var totalRotation = (this.rotation + this.pdfPageRotate) % 360 + this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation) + this.stats = pdfPage.stats + this.reset() + } + }, { + key: 'destroy', + value: function destroy() { + this.reset() + if (this.pdfPage) { + this.pdfPage.cleanup() + this.pdfPage = null + } + } + }, { + key: '_resetZoomLayer', + value: function _resetZoomLayer() { + var removeFromDOM = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + if (!this.zoomLayer) { + return + } + var zoomLayerCanvas = this.zoomLayer.firstChild + this.paintedViewportMap.delete(zoomLayerCanvas) + zoomLayerCanvas.width = 0 + zoomLayerCanvas.height = 0 + if (removeFromDOM) { + this.zoomLayer.remove() + } + this.zoomLayer = null + } + }, { + key: 'reset', + value: function reset() { + var keepZoomLayer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + var keepAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false + + this.cancelRendering() + var div = this.div + div.style.width = Math.floor(this.viewport.width) + 'px' + div.style.height = Math.floor(this.viewport.height) + 'px' + var childNodes = div.childNodes + var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null + var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null + for (var i = childNodes.length - 1; i >= 0; i--) { + var node = childNodes[i] + if (currentZoomLayerNode === node || currentAnnotationNode === node) { + continue + } + div.removeChild(node) + } + div.removeAttribute('data-loaded') + if (currentAnnotationNode) { + this.annotationLayer.hide() + } else { + this.annotationLayer = null + } + if (!currentZoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas) + this.canvas.width = 0 + this.canvas.height = 0 + delete this.canvas + } + this._resetZoomLayer() + } + if (this.svg) { + this.paintedViewportMap.delete(this.svg) + delete this.svg + } + this.loadingIconDiv = document.createElement('div') + this.loadingIconDiv.className = 'loadingIcon' + div.appendChild(this.loadingIconDiv) + } + }, { + key: 'update', + value: function update(scale, rotation) { + this.scale = scale || this.scale + if (typeof rotation !== 'undefined') { + this.rotation = rotation + } + var totalRotation = (this.rotation + this.pdfPageRotate) % 360 + this.viewport = this.viewport.clone({ + scale: this.scale * _ui_utils.CSS_UNITS, + rotation: totalRotation + }) + if (this.svg) { + this.cssTransform(this.svg, true) + this.eventBus.dispatch('pagerendered', { + source: this, + pageNumber: this.id, + cssTransform: true + }) + return + } + var isScalingRestricted = false + if (this.canvas && _pdfjsLib.PDFJS.maxCanvasPixels > 0) { + var outputScale = this.outputScale + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > _pdfjsLib.PDFJS.maxCanvasPixels) { + isScalingRestricted = true + } + } + if (this.canvas) { + if (_pdfjsLib.PDFJS.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + this.cssTransform(this.canvas, true) + this.eventBus.dispatch('pagerendered', { + source: this, + pageNumber: this.id, + cssTransform: true + }) + return + } + if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) { + this.zoomLayer = this.canvas.parentNode + this.zoomLayer.style.position = 'absolute' + } + } + if (this.zoomLayer) { + this.cssTransform(this.zoomLayer.firstChild) + } + this.reset(true, true) + } + }, { + key: 'cancelRendering', + value: function cancelRendering() { + if (this.paintTask) { + this.paintTask.cancel() + this.paintTask = null + } + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL + this.resume = null + if (this.textLayer) { + this.textLayer.cancel() + this.textLayer = null + } + } + }, { + key: 'cssTransform', + value: function cssTransform(target) { + var redrawAnnotations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false + + var width = this.viewport.width + var height = this.viewport.height + var div = this.div + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px' + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px' + var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation + var absRotation = Math.abs(relativeRotation) + var scaleX = 1, + scaleY = 1 + if (absRotation === 90 || absRotation === 270) { + scaleX = height / width + scaleY = width / height + } + var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')' + _pdfjsLib.CustomStyle.setProp('transform', target, cssTransform) + if (this.textLayer) { + var textLayerViewport = this.textLayer.viewport + var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation + var textAbsRotation = Math.abs(textRelativeRotation) + var scale = width / textLayerViewport.width + if (textAbsRotation === 90 || textAbsRotation === 270) { + scale = width / textLayerViewport.height + } + var textLayerDiv = this.textLayer.textLayerDiv + var transX = void 0, + transY = void 0 + switch (textAbsRotation) { + case 0: + transX = transY = 0 + break + case 90: + transX = 0 + transY = '-' + textLayerDiv.style.height + break + case 180: + transX = '-' + textLayerDiv.style.width + transY = '-' + textLayerDiv.style.height + break + case 270: + transX = '-' + textLayerDiv.style.width + transY = 0 + break + default: + console.error('Bad rotation value.') + break + } + _pdfjsLib.CustomStyle.setProp('transform', textLayerDiv, 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')') + _pdfjsLib.CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%') + } + if (redrawAnnotations && this.annotationLayer) { + this.annotationLayer.render(this.viewport, 'display') + } + } + }, { + key: 'getPagePoint', + value: function getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y) + } + }, { + key: 'draw', + value: function draw() { + var _this = this + + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + console.error('Must be in new state before drawing') + this.reset() + } + if (!this.pdfPage) { + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED + return Promise.reject(new Error('Page is not loaded')) + } + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING + var pdfPage = this.pdfPage + var div = this.div + var canvasWrapper = document.createElement('div') + canvasWrapper.style.width = div.style.width + canvasWrapper.style.height = div.style.height + canvasWrapper.classList.add('canvasWrapper') + if (this.annotationLayer && this.annotationLayer.div) { + div.insertBefore(canvasWrapper, this.annotationLayer.div) + } else { + div.appendChild(canvasWrapper) + } + var textLayer = null + if (this.textLayerFactory) { + var textLayerDiv = document.createElement('div') + textLayerDiv.className = 'textLayer' + textLayerDiv.style.width = canvasWrapper.style.width + textLayerDiv.style.height = canvasWrapper.style.height + if (this.annotationLayer && this.annotationLayer.div) { + div.insertBefore(textLayerDiv, this.annotationLayer.div) + } else { + div.appendChild(textLayerDiv) + } + textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.enhanceTextSelection) + } + this.textLayer = textLayer + var renderContinueCallback = null + if (this.renderingQueue) { + renderContinueCallback = function renderContinueCallback(cont) { + if (!_this.renderingQueue.isHighestPriority(_this)) { + _this.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED + _this.resume = function() { + _this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING + cont() + } + return + } + cont() + } + } + var finishPaintTask = function finishPaintTask(error) { + if (paintTask === _this.paintTask) { + _this.paintTask = null + } + if (error === 'cancelled' || error instanceof _pdfjsLib.RenderingCancelledException) { + _this.error = null + return Promise.resolve(undefined) + } + _this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED + if (_this.loadingIconDiv) { + div.removeChild(_this.loadingIconDiv) + delete _this.loadingIconDiv + } + _this._resetZoomLayer(true) + _this.error = error + _this.stats = pdfPage.stats + if (_this.onAfterDraw) { + _this.onAfterDraw() + } + _this.eventBus.dispatch('pagerendered', { + source: _this, + pageNumber: _this.id, + cssTransform: false + }) + if (error) { + return Promise.reject(error) + } + return Promise.resolve(undefined) + } + var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper) + paintTask.onRenderContinue = renderContinueCallback + this.paintTask = paintTask + var resultPromise = paintTask.promise.then(function() { + return finishPaintTask(null).then(function() { + if (textLayer) { + var readableStream = pdfPage.streamTextContent({ normalizeWhitespace: true }) + textLayer.setTextContentStream(readableStream) + textLayer.render() + } + }) + }, function(reason) { + return finishPaintTask(reason) + }) + if (this.annotationLayerFactory) { + if (!this.annotationLayer) { + this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.renderInteractiveForms, this.l10n) + } + this.annotationLayer.render(this.viewport, 'display') + } + div.setAttribute('data-loaded', true) + if (this.onBeforeDraw) { + this.onBeforeDraw() + } + return resultPromise + } + }, { + key: 'paintOnCanvas', + value: function paintOnCanvas(canvasWrapper) { + var renderCapability = (0, _pdfjsLib.createPromiseCapability)() + var result = { + promise: renderCapability.promise, + onRenderContinue: function onRenderContinue(cont) { + cont() + }, + cancel: function cancel() { + renderTask.cancel() + } + } + var viewport = this.viewport + var canvas = document.createElement('canvas') + canvas.id = this.renderingId + canvas.setAttribute('hidden', 'hidden') + var isCanvasHidden = true + var showCanvas = function showCanvas() { + if (isCanvasHidden) { + canvas.removeAttribute('hidden') + isCanvasHidden = false + } + } + canvasWrapper.appendChild(canvas) + this.canvas = canvas + canvas.mozOpaque = true + var ctx = canvas.getContext('2d', { alpha: false }) + var outputScale = (0, _ui_utils.getOutputScale)(ctx) + this.outputScale = outputScale + if (_pdfjsLib.PDFJS.useOnlyCssZoom) { + var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS }) + outputScale.sx *= actualSizeViewport.width / viewport.width + outputScale.sy *= actualSizeViewport.height / viewport.height + outputScale.scaled = true + } + if (_pdfjsLib.PDFJS.maxCanvasPixels > 0) { + var pixelsInViewport = viewport.width * viewport.height + var maxScale = Math.sqrt(_pdfjsLib.PDFJS.maxCanvasPixels / pixelsInViewport) + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale + outputScale.sy = maxScale + outputScale.scaled = true + this.hasRestrictedScaling = true + } else { + this.hasRestrictedScaling = false + } + } + var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx) + var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy) + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]) + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]) + canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px' + canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px' + this.paintedViewportMap.set(canvas, viewport) + var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0] + var renderContext = { + canvasContext: ctx, + transform: transform, + viewport: this.viewport, + renderInteractiveForms: this.renderInteractiveForms + } + var renderTask = this.pdfPage.render(renderContext) + renderTask.onContinue = function(cont) { + showCanvas() + if (result.onRenderContinue) { + result.onRenderContinue(cont) + } else { + cont() + } + } + renderTask.promise.then(function() { + showCanvas() + renderCapability.resolve(undefined) + }, function(error) { + showCanvas() + renderCapability.reject(error) + }) + return result + } + }, { + key: 'paintOnSvg', + value: function paintOnSvg(wrapper) { + var _this2 = this + + var cancelled = false + var ensureNotCancelled = function ensureNotCancelled() { + if (cancelled) { + if (_pdfjsLib.PDFJS.pdfjsNext) { + throw new _pdfjsLib.RenderingCancelledException('Rendering cancelled, page ' + _this2.id, 'svg') + } else { + throw 'cancelled' + } + } + } + var pdfPage = this.pdfPage + var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS }) + var promise = pdfPage.getOperatorList().then(function(opList) { + ensureNotCancelled() + var svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs) + return svgGfx.getSVG(opList, actualSizeViewport).then(function(svg) { + ensureNotCancelled() + _this2.svg = svg + _this2.paintedViewportMap.set(svg, actualSizeViewport) + svg.style.width = wrapper.style.width + svg.style.height = wrapper.style.height + _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED + wrapper.appendChild(svg) + }) + }) + return { + promise: promise, + onRenderContinue: function onRenderContinue(cont) { + cont() + }, + cancel: function cancel() { + cancelled = true + } + } + } + }, { + key: 'setPageLabel', + value: function setPageLabel(label) { + this.pageLabel = typeof label === 'string' ? label : null + if (this.pageLabel !== null) { + this.div.setAttribute('data-page-label', this.pageLabel) + } else { + this.div.removeAttribute('data-page-label') + } + } + }, { + key: 'width', + get: function get() { + return this.viewport.width + } + }, { + key: 'height', + get: function get() { + return this.viewport.height + } + }]) + + return PDFPageView + }()) + + exports.PDFPageView = PDFPageView + /** */ }, + /* 23 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFPresentationMode = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500 + var DELAY_BEFORE_HIDING_CONTROLS = 3000 + var ACTIVE_SELECTOR = 'pdfPresentationMode' + var CONTROLS_SELECTOR = 'pdfPresentationModeControls' + var MOUSE_SCROLL_COOLDOWN_TIME = 50 + var PAGE_SWITCH_THRESHOLD = 0.1 + var SWIPE_MIN_DISTANCE_THRESHOLD = 50 + var SWIPE_ANGLE_THRESHOLD = Math.PI / 6 + + var PDFPresentationMode = (function() { + function PDFPresentationMode(_ref) { + var _this = this + + var container = _ref.container, + _ref$viewer = _ref.viewer, + viewer = _ref$viewer === undefined ? null : _ref$viewer, + pdfViewer = _ref.pdfViewer, + eventBus = _ref.eventBus, + _ref$contextMenuItems = _ref.contextMenuItems, + contextMenuItems = _ref$contextMenuItems === undefined ? null : _ref$contextMenuItems + + _classCallCheck(this, PDFPresentationMode) + + this.container = container + this.viewer = viewer || container.firstElementChild + this.pdfViewer = pdfViewer + this.eventBus = eventBus + this.active = false + this.args = null + this.contextMenuOpen = false + this.mouseScrollTimeStamp = 0 + this.mouseScrollDelta = 0 + this.touchSwipeState = null + if (contextMenuItems) { + contextMenuItems.contextFirstPage.addEventListener('click', function() { + _this.contextMenuOpen = false + _this.eventBus.dispatch('firstpage') + }) + contextMenuItems.contextLastPage.addEventListener('click', function() { + _this.contextMenuOpen = false + _this.eventBus.dispatch('lastpage') + }) + contextMenuItems.contextPageRotateCw.addEventListener('click', function() { + _this.contextMenuOpen = false + _this.eventBus.dispatch('rotatecw') + }) + contextMenuItems.contextPageRotateCcw.addEventListener('click', function() { + _this.contextMenuOpen = false + _this.eventBus.dispatch('rotateccw') + }) + } + } + + _createClass(PDFPresentationMode, [{ + key: 'request', + value: function request() { + if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) { + return false + } + this._addFullscreenChangeListeners() + this._setSwitchInProgress() + this._notifyStateChange() + if (this.container.requestFullscreen) { + this.container.requestFullscreen() + } else if (this.container.mozRequestFullScreen) { + this.container.mozRequestFullScreen() + } else if (this.container.webkitRequestFullscreen) { + this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT) + } else if (this.container.msRequestFullscreen) { + this.container.msRequestFullscreen() + } else { + return false + } + this.args = { + page: this.pdfViewer.currentPageNumber, + previousScale: this.pdfViewer.currentScaleValue + } + return true + } + }, { + key: '_mouseWheel', + value: function _mouseWheel(evt) { + if (!this.active) { + return + } + evt.preventDefault() + var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt) + var currentTime = new Date().getTime() + var storedTime = this.mouseScrollTimeStamp + if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { + return + } + if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { + this._resetMouseScrollState() + } + this.mouseScrollDelta += delta + if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { + var totalDelta = this.mouseScrollDelta + this._resetMouseScrollState() + var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage() + if (success) { + this.mouseScrollTimeStamp = currentTime + } + } + } + }, { + key: '_goToPreviousPage', + value: function _goToPreviousPage() { + var page = this.pdfViewer.currentPageNumber + if (page <= 1) { + return false + } + this.pdfViewer.currentPageNumber = page - 1 + return true + } + }, { + key: '_goToNextPage', + value: function _goToNextPage() { + var page = this.pdfViewer.currentPageNumber + if (page >= this.pdfViewer.pagesCount) { + return false + } + this.pdfViewer.currentPageNumber = page + 1 + return true + } + }, { + key: '_notifyStateChange', + value: function _notifyStateChange() { + this.eventBus.dispatch('presentationmodechanged', { + source: this, + active: this.active, + switchInProgress: !!this.switchInProgress + }) + } + }, { + key: '_setSwitchInProgress', + value: function _setSwitchInProgress() { + var _this2 = this + + if (this.switchInProgress) { + clearTimeout(this.switchInProgress) + } + this.switchInProgress = setTimeout(function() { + _this2._removeFullscreenChangeListeners() + delete _this2.switchInProgress + _this2._notifyStateChange() + }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS) + } + }, { + key: '_resetSwitchInProgress', + value: function _resetSwitchInProgress() { + if (this.switchInProgress) { + clearTimeout(this.switchInProgress) + delete this.switchInProgress + } + } + }, { + key: '_enter', + value: function _enter() { + var _this3 = this + + this.active = true + this._resetSwitchInProgress() + this._notifyStateChange() + this.container.classList.add(ACTIVE_SELECTOR) + setTimeout(function() { + _this3.pdfViewer.currentPageNumber = _this3.args.page + _this3.pdfViewer.currentScaleValue = 'page-fit' + }, 0) + this._addWindowListeners() + this._showControls() + this.contextMenuOpen = false + this.container.setAttribute('contextmenu', 'viewerContextMenu') + window.getSelection().removeAllRanges() + } + }, { + key: '_exit', + value: function _exit() { + var _this4 = this + + var page = this.pdfViewer.currentPageNumber + this.container.classList.remove(ACTIVE_SELECTOR) + setTimeout(function() { + _this4.active = false + _this4._removeFullscreenChangeListeners() + _this4._notifyStateChange() + _this4.pdfViewer.currentScaleValue = _this4.args.previousScale + _this4.pdfViewer.currentPageNumber = page + _this4.args = null + }, 0) + this._removeWindowListeners() + this._hideControls() + this._resetMouseScrollState() + this.container.removeAttribute('contextmenu') + this.contextMenuOpen = false + } + }, { + key: '_mouseDown', + value: function _mouseDown(evt) { + if (this.contextMenuOpen) { + this.contextMenuOpen = false + evt.preventDefault() + return + } + if (evt.button === 0) { + var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink') + if (!isInternalLink) { + evt.preventDefault() + if (evt.shiftKey) { + this._goToPreviousPage() + } else { + this._goToNextPage() + } + } + } + } + }, { + key: '_contextMenu', + value: function _contextMenu() { + this.contextMenuOpen = true + } + }, { + key: '_showControls', + value: function _showControls() { + var _this5 = this + + if (this.controlsTimeout) { + clearTimeout(this.controlsTimeout) + } else { + this.container.classList.add(CONTROLS_SELECTOR) + } + this.controlsTimeout = setTimeout(function() { + _this5.container.classList.remove(CONTROLS_SELECTOR) + delete _this5.controlsTimeout + }, DELAY_BEFORE_HIDING_CONTROLS) + } + }, { + key: '_hideControls', + value: function _hideControls() { + if (!this.controlsTimeout) { + return + } + clearTimeout(this.controlsTimeout) + this.container.classList.remove(CONTROLS_SELECTOR) + delete this.controlsTimeout + } + }, { + key: '_resetMouseScrollState', + value: function _resetMouseScrollState() { + this.mouseScrollTimeStamp = 0 + this.mouseScrollDelta = 0 + } + }, { + key: '_touchSwipe', + value: function _touchSwipe(evt) { + if (!this.active) { + return + } + if (evt.touches.length > 1) { + this.touchSwipeState = null + return + } + switch (evt.type) { + case 'touchstart': + this.touchSwipeState = { + startX: evt.touches[0].pageX, + startY: evt.touches[0].pageY, + endX: evt.touches[0].pageX, + endY: evt.touches[0].pageY + } + break + case 'touchmove': + if (this.touchSwipeState === null) { + return + } + this.touchSwipeState.endX = evt.touches[0].pageX + this.touchSwipeState.endY = evt.touches[0].pageY + evt.preventDefault() + break + case 'touchend': + if (this.touchSwipeState === null) { + return + } + var delta = 0 + var dx = this.touchSwipeState.endX - this.touchSwipeState.startX + var dy = this.touchSwipeState.endY - this.touchSwipeState.startY + var absAngle = Math.abs(Math.atan2(dy, dx)) + if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { + delta = dx + } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { + delta = dy + } + if (delta > 0) { + this._goToPreviousPage() + } else if (delta < 0) { + this._goToNextPage() + } + break + } + } + }, { + key: '_addWindowListeners', + value: function _addWindowListeners() { + this.showControlsBind = this._showControls.bind(this) + this.mouseDownBind = this._mouseDown.bind(this) + this.mouseWheelBind = this._mouseWheel.bind(this) + this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this) + this.contextMenuBind = this._contextMenu.bind(this) + this.touchSwipeBind = this._touchSwipe.bind(this) + window.addEventListener('mousemove', this.showControlsBind) + window.addEventListener('mousedown', this.mouseDownBind) + window.addEventListener('wheel', this.mouseWheelBind) + window.addEventListener('keydown', this.resetMouseScrollStateBind) + window.addEventListener('contextmenu', this.contextMenuBind) + window.addEventListener('touchstart', this.touchSwipeBind) + window.addEventListener('touchmove', this.touchSwipeBind) + window.addEventListener('touchend', this.touchSwipeBind) + } + }, { + key: '_removeWindowListeners', + value: function _removeWindowListeners() { + window.removeEventListener('mousemove', this.showControlsBind) + window.removeEventListener('mousedown', this.mouseDownBind) + window.removeEventListener('wheel', this.mouseWheelBind) + window.removeEventListener('keydown', this.resetMouseScrollStateBind) + window.removeEventListener('contextmenu', this.contextMenuBind) + window.removeEventListener('touchstart', this.touchSwipeBind) + window.removeEventListener('touchmove', this.touchSwipeBind) + window.removeEventListener('touchend', this.touchSwipeBind) + delete this.showControlsBind + delete this.mouseDownBind + delete this.mouseWheelBind + delete this.resetMouseScrollStateBind + delete this.contextMenuBind + delete this.touchSwipeBind + } + }, { + key: '_fullscreenChange', + value: function _fullscreenChange() { + if (this.isFullscreen) { + this._enter() + } else { + this._exit() + } + } + }, { + key: '_addFullscreenChangeListeners', + value: function _addFullscreenChangeListeners() { + this.fullscreenChangeBind = this._fullscreenChange.bind(this) + window.addEventListener('fullscreenchange', this.fullscreenChangeBind) + window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind) + window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind) + window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind) + } + }, { + key: '_removeFullscreenChangeListeners', + value: function _removeFullscreenChangeListeners() { + window.removeEventListener('fullscreenchange', this.fullscreenChangeBind) + window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind) + window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind) + window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind) + delete this.fullscreenChangeBind + } + }, { + key: 'isFullscreen', + get: function get() { + return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement) + } + }]) + + return PDFPresentationMode + }()) + + exports.PDFPresentationMode = PDFPresentationMode + /** */ }, + /* 24 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFSidebar = exports.SidebarView = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdf_rendering_queue = __webpack_require__(3) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var UI_NOTIFICATION_CLASS = 'pdfSidebarNotification' + var SidebarView = { + NONE: 0, + THUMBS: 1, + OUTLINE: 2, + ATTACHMENTS: 3 + } + + var PDFSidebar = (function() { + function PDFSidebar(options) { + var l10n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _ui_utils.NullL10n + + _classCallCheck(this, PDFSidebar) + + this.isOpen = false + this.active = SidebarView.THUMBS + this.isInitialViewSet = false + this.onToggled = null + this.pdfViewer = options.pdfViewer + this.pdfThumbnailViewer = options.pdfThumbnailViewer + this.pdfOutlineViewer = options.pdfOutlineViewer + this.mainContainer = options.mainContainer + this.outerContainer = options.outerContainer + this.eventBus = options.eventBus + this.toggleButton = options.toggleButton + this.thumbnailButton = options.thumbnailButton + this.outlineButton = options.outlineButton + this.attachmentsButton = options.attachmentsButton + this.thumbnailView = options.thumbnailView + this.outlineView = options.outlineView + this.attachmentsView = options.attachmentsView + this.disableNotification = options.disableNotification || false + this.l10n = l10n + this._addEventListeners() + } + + _createClass(PDFSidebar, [{ + key: 'reset', + value: function reset() { + this.isInitialViewSet = false + this._hideUINotification(null) + this.switchView(SidebarView.THUMBS) + this.outlineButton.disabled = false + this.attachmentsButton.disabled = false + } + }, { + key: 'setInitialView', + value: function setInitialView(view) { + if (this.isInitialViewSet) { + return + } + this.isInitialViewSet = true + if (this.isOpen && view === SidebarView.NONE) { + this._dispatchEvent() + return + } + var isViewPreserved = view === this.visibleView + this.switchView(view, true) + if (isViewPreserved) { + this._dispatchEvent() + } + } + }, { + key: 'switchView', + value: function switchView(view) { + var forceOpen = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false + + if (view === SidebarView.NONE) { + this.close() + return + } + var isViewChanged = view !== this.active + var shouldForceRendering = false + switch (view) { + case SidebarView.THUMBS: + this.thumbnailButton.classList.add('toggled') + this.outlineButton.classList.remove('toggled') + this.attachmentsButton.classList.remove('toggled') + this.thumbnailView.classList.remove('hidden') + this.outlineView.classList.add('hidden') + this.attachmentsView.classList.add('hidden') + if (this.isOpen && isViewChanged) { + this._updateThumbnailViewer() + shouldForceRendering = true + } + break + case SidebarView.OUTLINE: + if (this.outlineButton.disabled) { + return + } + this.thumbnailButton.classList.remove('toggled') + this.outlineButton.classList.add('toggled') + this.attachmentsButton.classList.remove('toggled') + this.thumbnailView.classList.add('hidden') + this.outlineView.classList.remove('hidden') + this.attachmentsView.classList.add('hidden') + break + case SidebarView.ATTACHMENTS: + if (this.attachmentsButton.disabled) { + return + } + this.thumbnailButton.classList.remove('toggled') + this.outlineButton.classList.remove('toggled') + this.attachmentsButton.classList.add('toggled') + this.thumbnailView.classList.add('hidden') + this.outlineView.classList.add('hidden') + this.attachmentsView.classList.remove('hidden') + break + default: + console.error('PDFSidebar_switchView: "' + view + '" is an unsupported value.') + return + } + this.active = view | 0 + if (forceOpen && !this.isOpen) { + this.open() + return + } + if (shouldForceRendering) { + this._forceRendering() + } + if (isViewChanged) { + this._dispatchEvent() + } + this._hideUINotification(this.active) + } + }, { + key: 'open', + value: function open() { + if (this.isOpen) { + return + } + this.isOpen = true + this.toggleButton.classList.add('toggled') + this.outerContainer.classList.add('sidebarMoving') + this.outerContainer.classList.add('sidebarOpen') + if (this.active === SidebarView.THUMBS) { + this._updateThumbnailViewer() + } + this._forceRendering() + this._dispatchEvent() + this._hideUINotification(this.active) + } + }, { + key: 'close', + value: function close() { + if (!this.isOpen) { + return + } + this.isOpen = false + this.toggleButton.classList.remove('toggled') + this.outerContainer.classList.add('sidebarMoving') + this.outerContainer.classList.remove('sidebarOpen') + this._forceRendering() + this._dispatchEvent() + } + }, { + key: 'toggle', + value: function toggle() { + if (this.isOpen) { + this.close() + } else { + this.open() + } + } + }, { + key: '_dispatchEvent', + value: function _dispatchEvent() { + this.eventBus.dispatch('sidebarviewchanged', { + source: this, + view: this.visibleView + }) + } + }, { + key: '_forceRendering', + value: function _forceRendering() { + if (this.onToggled) { + this.onToggled() + } else { + this.pdfViewer.forceRendering() + this.pdfThumbnailViewer.forceRendering() + } + } + }, { + key: '_updateThumbnailViewer', + value: function _updateThumbnailViewer() { + var pdfViewer = this.pdfViewer, + pdfThumbnailViewer = this.pdfThumbnailViewer + + var pagesCount = pdfViewer.pagesCount + for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { + var pageView = pdfViewer.getPageView(pageIndex) + if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { + var thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex) + thumbnailView.setImage(pageView) + } + } + pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber) + } + }, { + key: '_showUINotification', + value: function _showUINotification(view) { + var _this = this + + if (this.disableNotification) { + return + } + this.l10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)').then(function(msg) { + _this.toggleButton.title = msg + }) + if (!this.isOpen) { + this.toggleButton.classList.add(UI_NOTIFICATION_CLASS) + } else if (view === this.active) { + return + } + switch (view) { + case SidebarView.OUTLINE: + this.outlineButton.classList.add(UI_NOTIFICATION_CLASS) + break + case SidebarView.ATTACHMENTS: + this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS) + break + } + } + }, { + key: '_hideUINotification', + value: function _hideUINotification(view) { + var _this2 = this + + if (this.disableNotification) { + return + } + var removeNotification = function removeNotification(view) { + switch (view) { + case SidebarView.OUTLINE: + _this2.outlineButton.classList.remove(UI_NOTIFICATION_CLASS) + break + case SidebarView.ATTACHMENTS: + _this2.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS) + break + } + } + if (!this.isOpen && view !== null) { + return + } + this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS) + if (view !== null) { + removeNotification(view) + return + } + for (view in SidebarView) { + removeNotification(SidebarView[view]) + } + this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').then(function(msg) { + _this2.toggleButton.title = msg + }) + } + }, { + key: '_addEventListeners', + value: function _addEventListeners() { + var _this3 = this + + this.mainContainer.addEventListener('transitionend', function(evt) { + if (evt.target === _this3.mainContainer) { + _this3.outerContainer.classList.remove('sidebarMoving') + } + }) + this.thumbnailButton.addEventListener('click', function() { + _this3.switchView(SidebarView.THUMBS) + }) + this.outlineButton.addEventListener('click', function() { + _this3.switchView(SidebarView.OUTLINE) + }) + this.outlineButton.addEventListener('dblclick', function() { + _this3.pdfOutlineViewer.toggleOutlineTree() + }) + this.attachmentsButton.addEventListener('click', function() { + _this3.switchView(SidebarView.ATTACHMENTS) + }) + this.eventBus.on('outlineloaded', function(evt) { + var outlineCount = evt.outlineCount + _this3.outlineButton.disabled = !outlineCount + if (outlineCount) { + _this3._showUINotification(SidebarView.OUTLINE) + } else if (_this3.active === SidebarView.OUTLINE) { + _this3.switchView(SidebarView.THUMBS) + } + }) + this.eventBus.on('attachmentsloaded', function(evt) { + var attachmentsCount = evt.attachmentsCount + _this3.attachmentsButton.disabled = !attachmentsCount + if (attachmentsCount) { + _this3._showUINotification(SidebarView.ATTACHMENTS) + } else if (_this3.active === SidebarView.ATTACHMENTS) { + _this3.switchView(SidebarView.THUMBS) + } + }) + this.eventBus.on('presentationmodechanged', function(evt) { + if (!evt.active && !evt.switchInProgress && _this3.isThumbnailViewVisible) { + _this3._updateThumbnailViewer() + } + }) + } + }, { + key: 'visibleView', + get: function get() { + return this.isOpen ? this.active : SidebarView.NONE + } + }, { + key: 'isThumbnailViewVisible', + get: function get() { + return this.isOpen && this.active === SidebarView.THUMBS + } + }, { + key: 'isOutlineViewVisible', + get: function get() { + return this.isOpen && this.active === SidebarView.OUTLINE + } + }, { + key: 'isAttachmentsViewVisible', + get: function get() { + return this.isOpen && this.active === SidebarView.ATTACHMENTS + } + }]) + + return PDFSidebar + }()) + + exports.SidebarView = SidebarView + exports.PDFSidebar = PDFSidebar + /** */ }, + /* 25 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFThumbnailView = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + var _ui_utils = __webpack_require__(0) + + var _pdf_rendering_queue = __webpack_require__(3) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var MAX_NUM_SCALING_STEPS = 3 + var THUMBNAIL_CANVAS_BORDER_WIDTH = 1 + var THUMBNAIL_WIDTH = 98 + var TempImageFactory = (function TempImageFactoryClosure() { + var tempCanvasCache = null + return { + getCanvas: function getCanvas(width, height) { + var tempCanvas = tempCanvasCache + if (!tempCanvas) { + tempCanvas = document.createElement('canvas') + tempCanvasCache = tempCanvas + } + tempCanvas.width = width + tempCanvas.height = height + tempCanvas.mozOpaque = true + var ctx = tempCanvas.getContext('2d', { alpha: false }) + ctx.save() + ctx.fillStyle = 'rgb(255, 255, 255)' + ctx.fillRect(0, 0, width, height) + ctx.restore() + return tempCanvas + }, + destroyCanvas: function destroyCanvas() { + var tempCanvas = tempCanvasCache + if (tempCanvas) { + tempCanvas.width = 0 + tempCanvas.height = 0 + } + tempCanvasCache = null + } + } + }()) + + var PDFThumbnailView = (function() { + function PDFThumbnailView(_ref) { + var container = _ref.container, + id = _ref.id, + defaultViewport = _ref.defaultViewport, + linkService = _ref.linkService, + renderingQueue = _ref.renderingQueue, + _ref$disableCanvasToI = _ref.disableCanvasToImageConversion, + disableCanvasToImageConversion = _ref$disableCanvasToI === undefined ? false : _ref$disableCanvasToI, + _ref$l10n = _ref.l10n, + l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n + + _classCallCheck(this, PDFThumbnailView) + + this.id = id + this.renderingId = 'thumbnail' + id + this.pageLabel = null + this.pdfPage = null + this.rotation = 0 + this.viewport = defaultViewport + this.pdfPageRotate = defaultViewport.rotation + this.linkService = linkService + this.renderingQueue = renderingQueue + this.renderTask = null + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL + this.resume = null + this.disableCanvasToImageConversion = disableCanvasToImageConversion + this.pageWidth = this.viewport.width + this.pageHeight = this.viewport.height + this.pageRatio = this.pageWidth / this.pageHeight + this.canvasWidth = THUMBNAIL_WIDTH + this.canvasHeight = this.canvasWidth / this.pageRatio | 0 + this.scale = this.canvasWidth / this.pageWidth + this.l10n = l10n + var anchor = document.createElement('a') + anchor.href = linkService.getAnchorUrl('#page=' + id) + this.l10n.get('thumb_page_title', { page: id }, 'Page {{page}}').then(function(msg) { + anchor.title = msg + }) + anchor.onclick = function() { + linkService.page = id + return false + } + this.anchor = anchor + var div = document.createElement('div') + div.className = 'thumbnail' + div.setAttribute('data-page-number', this.id) + this.div = div + if (id === 1) { + div.classList.add('selected') + } + var ring = document.createElement('div') + ring.className = 'thumbnailSelectionRing' + var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH + ring.style.width = this.canvasWidth + borderAdjustment + 'px' + ring.style.height = this.canvasHeight + borderAdjustment + 'px' + this.ring = ring + div.appendChild(ring) + anchor.appendChild(div) + container.appendChild(anchor) + } + + _createClass(PDFThumbnailView, [{ + key: 'setPdfPage', + value: function setPdfPage(pdfPage) { + this.pdfPage = pdfPage + this.pdfPageRotate = pdfPage.rotate + var totalRotation = (this.rotation + this.pdfPageRotate) % 360 + this.viewport = pdfPage.getViewport(1, totalRotation) + this.reset() + } + }, { + key: 'reset', + value: function reset() { + this.cancelRendering() + this.pageWidth = this.viewport.width + this.pageHeight = this.viewport.height + this.pageRatio = this.pageWidth / this.pageHeight + this.canvasHeight = this.canvasWidth / this.pageRatio | 0 + this.scale = this.canvasWidth / this.pageWidth + this.div.removeAttribute('data-loaded') + var ring = this.ring + var childNodes = ring.childNodes + for (var i = childNodes.length - 1; i >= 0; i--) { + ring.removeChild(childNodes[i]) + } + var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH + ring.style.width = this.canvasWidth + borderAdjustment + 'px' + ring.style.height = this.canvasHeight + borderAdjustment + 'px' + if (this.canvas) { + this.canvas.width = 0 + this.canvas.height = 0 + delete this.canvas + } + if (this.image) { + this.image.removeAttribute('src') + delete this.image + } + } + }, { + key: 'update', + value: function update(rotation) { + if (typeof rotation !== 'undefined') { + this.rotation = rotation + } + var totalRotation = (this.rotation + this.pdfPageRotate) % 360 + this.viewport = this.viewport.clone({ + scale: 1, + rotation: totalRotation + }) + this.reset() + } + }, { + key: 'cancelRendering', + value: function cancelRendering() { + if (this.renderTask) { + this.renderTask.cancel() + this.renderTask = null + } + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL + this.resume = null + } + }, { + key: '_getPageDrawContext', + value: function _getPageDrawContext() { + var noCtxScale = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + var canvas = document.createElement('canvas') + this.canvas = canvas + canvas.mozOpaque = true + var ctx = canvas.getContext('2d', { alpha: false }) + var outputScale = (0, _ui_utils.getOutputScale)(ctx) + canvas.width = this.canvasWidth * outputScale.sx | 0 + canvas.height = this.canvasHeight * outputScale.sy | 0 + canvas.style.width = this.canvasWidth + 'px' + canvas.style.height = this.canvasHeight + 'px' + if (!noCtxScale && outputScale.scaled) { + ctx.scale(outputScale.sx, outputScale.sy) + } + return ctx + } + }, { + key: '_convertCanvasToImage', + value: function _convertCanvasToImage() { + var _this = this + + if (!this.canvas) { + return + } + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + return + } + var id = this.renderingId + var className = 'thumbnailImage' + if (this.disableCanvasToImageConversion) { + this.canvas.id = id + this.canvas.className = className + this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function(msg) { + _this.canvas.setAttribute('aria-label', msg) + }) + this.div.setAttribute('data-loaded', true) + this.ring.appendChild(this.canvas) + return + } + var image = document.createElement('img') + image.id = id + image.className = className + this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function(msg) { + image.setAttribute('aria-label', msg) + }) + image.style.width = this.canvasWidth + 'px' + image.style.height = this.canvasHeight + 'px' + image.src = this.canvas.toDataURL() + this.image = image + this.div.setAttribute('data-loaded', true) + this.ring.appendChild(image) + this.canvas.width = 0 + this.canvas.height = 0 + delete this.canvas + } + }, { + key: 'draw', + value: function draw() { + var _this2 = this + + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + console.error('Must be in new state before drawing') + return Promise.resolve(undefined) + } + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING + var renderCapability = (0, _pdfjsLib.createPromiseCapability)() + var finishRenderTask = function finishRenderTask(error) { + if (renderTask === _this2.renderTask) { + _this2.renderTask = null + } + if (error === 'cancelled' || error instanceof _pdfjsLib.RenderingCancelledException) { + renderCapability.resolve(undefined) + return + } + _this2.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED + _this2._convertCanvasToImage() + if (!error) { + renderCapability.resolve(undefined) + } else { + renderCapability.reject(error) + } + } + var ctx = this._getPageDrawContext() + var drawViewport = this.viewport.clone({ scale: this.scale }) + var renderContinueCallback = function renderContinueCallback(cont) { + if (!_this2.renderingQueue.isHighestPriority(_this2)) { + _this2.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED + _this2.resume = function() { + _this2.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING + cont() + } + return + } + cont() + } + var renderContext = { + canvasContext: ctx, + viewport: drawViewport + } + var renderTask = this.renderTask = this.pdfPage.render(renderContext) + renderTask.onContinue = renderContinueCallback + renderTask.promise.then(function() { + finishRenderTask(null) + }, function(error) { + finishRenderTask(error) + }) + return renderCapability.promise + } + }, { + key: 'setImage', + value: function setImage(pageView) { + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + return + } + var img = pageView.canvas + if (!img) { + return + } + if (!this.pdfPage) { + this.setPdfPage(pageView.pdfPage) + } + this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED + var ctx = this._getPageDrawContext(true) + var canvas = ctx.canvas + if (img.width <= 2 * canvas.width) { + ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height) + this._convertCanvasToImage() + return + } + var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS + var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS + var reducedImage = TempImageFactory.getCanvas(reducedWidth, reducedHeight) + var reducedImageCtx = reducedImage.getContext('2d') + while (reducedWidth > img.width || reducedHeight > img.height) { + reducedWidth >>= 1 + reducedHeight >>= 1 + } + reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight) + while (reducedWidth > 2 * canvas.width) { + reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1) + reducedWidth >>= 1 + reducedHeight >>= 1 + } + ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height) + this._convertCanvasToImage() + } + }, { + key: 'setPageLabel', + value: function setPageLabel(label) { + var _this3 = this + + this.pageLabel = typeof label === 'string' ? label : null + this.l10n.get('thumb_page_title', { page: this.pageId }, 'Page {{page}}').then(function(msg) { + _this3.anchor.title = msg + }) + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + return + } + this.l10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}').then(function(ariaLabel) { + if (_this3.image) { + _this3.image.setAttribute('aria-label', ariaLabel) + } else if (_this3.disableCanvasToImageConversion && _this3.canvas) { + _this3.canvas.setAttribute('aria-label', ariaLabel) + } + }) + } + }, { + key: 'pageId', + get: function get() { + return this.pageLabel !== null ? this.pageLabel : this.id + } + }], [{ + key: 'cleanup', + value: function cleanup() { + TempImageFactory.destroyCanvas() + } + }]) + + return PDFThumbnailView + }()) + + exports.PDFThumbnailView = PDFThumbnailView + /** */ }, + /* 26 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFThumbnailViewer = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + var _pdf_thumbnail_view = __webpack_require__(25) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var THUMBNAIL_SCROLL_MARGIN = -19 + + var PDFThumbnailViewer = (function() { + function PDFThumbnailViewer(_ref) { + var container = _ref.container, + linkService = _ref.linkService, + renderingQueue = _ref.renderingQueue, + _ref$l10n = _ref.l10n, + l10n = _ref$l10n === undefined ? _ui_utils.NullL10n : _ref$l10n + + _classCallCheck(this, PDFThumbnailViewer) + + this.container = container + this.linkService = linkService + this.renderingQueue = renderingQueue + this.l10n = l10n + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)) + this._resetView() + } + + _createClass(PDFThumbnailViewer, [{ + key: '_scrollUpdated', + value: function _scrollUpdated() { + this.renderingQueue.renderHighestPriority() + } + }, { + key: 'getThumbnail', + value: function getThumbnail(index) { + return this._thumbnails[index] + } + }, { + key: '_getVisibleThumbs', + value: function _getVisibleThumbs() { + return (0, _ui_utils.getVisibleElements)(this.container, this._thumbnails) + } + }, { + key: 'scrollThumbnailIntoView', + value: function scrollThumbnailIntoView(page) { + var selected = document.querySelector('.thumbnail.selected') + if (selected) { + selected.classList.remove('selected') + } + var thumbnail = document.querySelector('div.thumbnail[data-page-number="' + page + '"]') + if (thumbnail) { + thumbnail.classList.add('selected') + } + var visibleThumbs = this._getVisibleThumbs() + var numVisibleThumbs = visibleThumbs.views.length + if (numVisibleThumbs > 0) { + var first = visibleThumbs.first.id + var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first + if (page <= first || page >= last) { + (0, _ui_utils.scrollIntoView)(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }) + } + } + } + }, { + key: 'cleanup', + value: function cleanup() { + _pdf_thumbnail_view.PDFThumbnailView.cleanup() + } + }, { + key: '_resetView', + value: function _resetView() { + this._thumbnails = [] + this._pageLabels = null + this._pagesRotation = 0 + this._pagesRequests = [] + this.container.textContent = '' + } + }, { + key: 'setDocument', + value: function setDocument(pdfDocument) { + var _this = this + + if (this.pdfDocument) { + this._cancelRendering() + this._resetView() + } + this.pdfDocument = pdfDocument + if (!pdfDocument) { + return + } + pdfDocument.getPage(1).then(function(firstPage) { + var pagesCount = pdfDocument.numPages + var viewport = firstPage.getViewport(1.0) + for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { + var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ + container: _this.container, + id: pageNum, + defaultViewport: viewport.clone(), + linkService: _this.linkService, + renderingQueue: _this.renderingQueue, + disableCanvasToImageConversion: false, + l10n: _this.l10n + }) + _this._thumbnails.push(thumbnail) + } + }).catch(function(reason) { + console.error('Unable to initialize thumbnail viewer', reason) + }) + } + }, { + key: '_cancelRendering', + value: function _cancelRendering() { + for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { + if (this._thumbnails[i]) { + this._thumbnails[i].cancelRendering() + } + } + } + }, { + key: 'setPageLabels', + value: function setPageLabels(labels) { + if (!this.pdfDocument) { + return + } + if (!labels) { + this._pageLabels = null + } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null + console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.') + } else { + this._pageLabels = labels + } + for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { + var label = this._pageLabels && this._pageLabels[i] + this._thumbnails[i].setPageLabel(label) + } + } + }, { + key: '_ensurePdfPageLoaded', + value: function _ensurePdfPageLoaded(thumbView) { + var _this2 = this + + if (thumbView.pdfPage) { + return Promise.resolve(thumbView.pdfPage) + } + var pageNumber = thumbView.id + if (this._pagesRequests[pageNumber]) { + return this._pagesRequests[pageNumber] + } + var promise = this.pdfDocument.getPage(pageNumber).then(function(pdfPage) { + thumbView.setPdfPage(pdfPage) + _this2._pagesRequests[pageNumber] = null + return pdfPage + }).catch(function(reason) { + console.error('Unable to get page for thumb view', reason) + _this2._pagesRequests[pageNumber] = null + }) + this._pagesRequests[pageNumber] = promise + return promise + } + }, { + key: 'forceRendering', + value: function forceRendering() { + var _this3 = this + + var visibleThumbs = this._getVisibleThumbs() + var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this._thumbnails, this.scroll.down) + if (thumbView) { + this._ensurePdfPageLoaded(thumbView).then(function() { + _this3.renderingQueue.renderView(thumbView) + }) + return true + } + return false + } + }, { + key: 'pagesRotation', + get: function get() { + return this._pagesRotation + }, + set: function set(rotation) { + if (!(typeof rotation === 'number' && rotation % 90 === 0)) { + throw new Error('Invalid thumbnails rotation angle.') + } + if (!this.pdfDocument) { + return + } + this._pagesRotation = rotation + for (var i = 0, ii = this._thumbnails.length; i < ii; i++) { + this._thumbnails[i].update(rotation) + } + } + }]) + + return PDFThumbnailViewer + }()) + + exports.PDFThumbnailViewer = PDFThumbnailViewer + /** */ }, + /* 27 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.PDFViewer = exports.PresentationModeState = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdfjsLib = __webpack_require__(1) + + var _ui_utils = __webpack_require__(0) + + var _pdf_rendering_queue = __webpack_require__(3) + + var _annotation_layer_builder = __webpack_require__(11) + + var _dom_events = __webpack_require__(2) + + var _pdf_page_view = __webpack_require__(22) + + var _pdf_link_service = __webpack_require__(5) + + var _text_layer_builder = __webpack_require__(30) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 + } + var DEFAULT_CACHE_SIZE = 10 + function PDFPageViewBuffer(size) { + var data = [] + this.push = function cachePush(view) { + var i = data.indexOf(view) + if (i >= 0) { + data.splice(i, 1) + } + data.push(view) + if (data.length > size) { + data.shift().destroy() + } + } + this.resize = function(newSize) { + size = newSize + while (data.length > size) { + data.shift().destroy() + } + } + } + function isSameScale(oldScale, newScale) { + if (newScale === oldScale) { + return true + } + if (Math.abs(newScale - oldScale) < 1e-15) { + return true + } + return false + } + function isPortraitOrientation(size) { + return size.width <= size.height + } + + var PDFViewer = (function() { + function PDFViewer(options) { + _classCallCheck(this, PDFViewer) + + this.container = options.container + this.viewer = options.viewer || options.container.firstElementChild + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)() + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService() + this.downloadManager = options.downloadManager || null + this.removePageBorders = options.removePageBorders || false + this.enhanceTextSelection = options.enhanceTextSelection || false + this.renderInteractiveForms = options.renderInteractiveForms || false + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS + this.l10n = options.l10n || _ui_utils.NullL10n + this.defaultRenderingQueue = !options.renderingQueue + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue() + this.renderingQueue.setViewer(this) + } else { + this.renderingQueue = options.renderingQueue + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)) + this.presentationModeState = PresentationModeState.UNKNOWN + this._resetView() + if (this.removePageBorders) { + this.viewer.classList.add('removePageBorders') + } + } + + _createClass(PDFViewer, [{ + key: 'getPageView', + value: function getPageView(index) { + return this._pages[index] + } + }, { + key: '_setCurrentPageNumber', + value: function _setCurrentPageNumber(val) { + var resetCurrentPageView = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false + + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this._resetCurrentPageView() + } + return + } + if (!(val > 0 && val <= this.pagesCount)) { + console.error('PDFViewer._setCurrentPageNumber: "' + val + '" is out of bounds.') + return + } + var arg = { + source: this, + pageNumber: val, + pageLabel: this._pageLabels && this._pageLabels[val - 1] + } + this._currentPageNumber = val + this.eventBus.dispatch('pagechanging', arg) + this.eventBus.dispatch('pagechange', arg) + if (resetCurrentPageView) { + this._resetCurrentPageView() + } + } + }, { + key: 'setDocument', + value: function setDocument(pdfDocument) { + var _this = this + + if (this.pdfDocument) { + this._cancelRendering() + this._resetView() + } + this.pdfDocument = pdfDocument + if (!pdfDocument) { + return + } + var pagesCount = pdfDocument.numPages + var pagesCapability = (0, _pdfjsLib.createPromiseCapability)() + this.pagesPromise = pagesCapability.promise + pagesCapability.promise.then(function() { + _this._pageViewsReady = true + _this.eventBus.dispatch('pagesloaded', { + source: _this, + pagesCount: pagesCount + }) + }) + var isOnePageRenderedResolved = false + var onePageRenderedCapability = (0, _pdfjsLib.createPromiseCapability)() + this.onePageRendered = onePageRenderedCapability.promise + var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) { + pageView.onBeforeDraw = function() { + _this._buffer.push(pageView) + } + pageView.onAfterDraw = function() { + if (!isOnePageRenderedResolved) { + isOnePageRenderedResolved = true + onePageRenderedCapability.resolve() + } + } + } + var firstPagePromise = pdfDocument.getPage(1) + this.firstPagePromise = firstPagePromise + firstPagePromise.then(function(pdfPage) { + var scale = _this.currentScale + var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS) + for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { + var textLayerFactory = null + if (!_pdfjsLib.PDFJS.disableTextLayer) { + textLayerFactory = _this + } + var pageView = new _pdf_page_view.PDFPageView({ + container: _this.viewer, + eventBus: _this.eventBus, + id: pageNum, + scale: scale, + defaultViewport: viewport.clone(), + renderingQueue: _this.renderingQueue, + textLayerFactory: textLayerFactory, + annotationLayerFactory: _this, + enhanceTextSelection: _this.enhanceTextSelection, + renderInteractiveForms: _this.renderInteractiveForms, + renderer: _this.renderer, + l10n: _this.l10n + }) + bindOnAfterAndBeforeDraw(pageView) + _this._pages.push(pageView) + } + onePageRenderedCapability.promise.then(function() { + if (_pdfjsLib.PDFJS.disableAutoFetch) { + pagesCapability.resolve() + return + } + var getPagesLeft = pagesCount + + var _loop = function _loop(_pageNum) { + pdfDocument.getPage(_pageNum).then(function(pdfPage) { + var pageView = _this._pages[_pageNum - 1] + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage) + } + _this.linkService.cachePageRef(_pageNum, pdfPage.ref) + if (--getPagesLeft === 0) { + pagesCapability.resolve() + } + }, function(reason) { + console.error('Unable to get page ' + _pageNum + ' to initialize viewer', reason) + if (--getPagesLeft === 0) { + pagesCapability.resolve() + } + }) + } + + for (var _pageNum = 1; _pageNum <= pagesCount; ++_pageNum) { + _loop(_pageNum) + } + }) + _this.eventBus.dispatch('pagesinit', { source: _this }) + if (_this.defaultRenderingQueue) { + _this.update() + } + if (_this.findController) { + _this.findController.resolveFirstPage() + } + }).catch(function(reason) { + console.error('Unable to initialize viewer', reason) + }) + } + }, { + key: 'setPageLabels', + value: function setPageLabels(labels) { + if (!this.pdfDocument) { + return + } + if (!labels) { + this._pageLabels = null + } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null + console.error('PDFViewer.setPageLabels: Invalid page labels.') + } else { + this._pageLabels = labels + } + for (var i = 0, ii = this._pages.length; i < ii; i++) { + var pageView = this._pages[i] + var label = this._pageLabels && this._pageLabels[i] + pageView.setPageLabel(label) + } + } + }, { + key: '_resetView', + value: function _resetView() { + this._pages = [] + this._currentPageNumber = 1 + this._currentScale = _ui_utils.UNKNOWN_SCALE + this._currentScaleValue = null + this._pageLabels = null + this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE) + this._location = null + this._pagesRotation = 0 + this._pagesRequests = [] + this._pageViewsReady = false + this.viewer.textContent = '' + } + }, { + key: '_scrollUpdate', + value: function _scrollUpdate() { + if (this.pagesCount === 0) { + return + } + this.update() + } + }, { + key: '_setScaleDispatchEvent', + value: function _setScaleDispatchEvent(newScale, newValue) { + var preset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + + var arg = { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + } + this.eventBus.dispatch('scalechanging', arg) + this.eventBus.dispatch('scalechange', arg) + } + }, { + key: '_setScaleUpdatePages', + value: function _setScaleUpdatePages(newScale, newValue) { + var noScroll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + var preset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false + + this._currentScaleValue = newValue.toString() + if (isSameScale(this._currentScale, newScale)) { + if (preset) { + this._setScaleDispatchEvent(newScale, newValue, true) + } + return + } + for (var i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].update(newScale) + } + this._currentScale = newScale + if (!noScroll) { + var page = this._currentPageNumber, + dest = void 0 + if (this._location && !_pdfjsLib.PDFJS.ignoreCurrentPositionOnZoom && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber + dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null] + } + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }) + } + this._setScaleDispatchEvent(newScale, newValue, preset) + if (this.defaultRenderingQueue) { + this.update() + } + } + }, { + key: '_setScale', + value: function _setScale(value) { + var noScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false + + var scale = parseFloat(value) + if (scale > 0) { + this._setScaleUpdatePages(scale, value, noScroll, false) + } else { + var currentPage = this._pages[this._currentPageNumber - 1] + if (!currentPage) { + return + } + var hPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING + var vPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING + var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale + var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale + switch (value) { + case 'page-actual': + scale = 1 + break + case 'page-width': + scale = pageWidthScale + break + case 'page-height': + scale = pageHeightScale + break + case 'page-fit': + scale = Math.min(pageWidthScale, pageHeightScale) + break + case 'auto': + var isLandscape = currentPage.width > currentPage.height + var horizontalScale = isLandscape ? Math.min(pageHeightScale, pageWidthScale) : pageWidthScale + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale) + break + default: + console.error('PDFViewer._setScale: "' + value + '" is an unknown zoom value.') + return + } + this._setScaleUpdatePages(scale, value, noScroll, true) + } + } + }, { + key: '_resetCurrentPageView', + value: function _resetCurrentPageView() { + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, true) + } + var pageView = this._pages[this._currentPageNumber - 1]; + (0, _ui_utils.scrollIntoView)(pageView.div) + } + }, { + key: 'scrollPageIntoView', + value: function scrollPageIntoView(params) { + if (!this.pdfDocument) { + return + } + if (arguments.length > 1 || typeof params === 'number') { + console.warn('Call of scrollPageIntoView() with obsolete signature.') + var paramObj = {} + if (typeof params === 'number') { + paramObj.pageNumber = params + } + if (arguments[1] instanceof Array) { + paramObj.destArray = arguments[1] + } + params = paramObj + } + var pageNumber = params.pageNumber || 0 + var dest = params.destArray || null + var allowNegativeOffset = params.allowNegativeOffset || false + if (this.isInPresentationMode || !dest) { + this._setCurrentPageNumber(pageNumber, true) + return + } + var pageView = this._pages[pageNumber - 1] + if (!pageView) { + console.error('PDFViewer.scrollPageIntoView: Invalid "pageNumber" parameter.') + return + } + var x = 0, + y = 0 + var width = 0, + height = 0, + widthScale = void 0, + heightScale = void 0 + var changeOrientation = pageView.rotation % 180 !== 0 + var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS + var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS + var scale = 0 + switch (dest[1].name) { + case 'XYZ': + x = dest[2] + y = dest[3] + scale = dest[4] + x = x !== null ? x : 0 + y = y !== null ? y : pageHeight + break + case 'Fit': + case 'FitB': + scale = 'page-fit' + break + case 'FitH': + case 'FitBH': + y = dest[2] + scale = 'page-width' + if (y === null && this._location) { + x = this._location.left + y = this._location.top + } + break + case 'FitV': + case 'FitBV': + x = dest[2] + width = pageWidth + height = pageHeight + scale = 'page-height' + break + case 'FitR': + x = dest[2] + y = dest[3] + width = dest[4] - x + height = dest[5] - y + var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING + var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING + widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS + heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)) + break + default: + console.error('PDFViewer.scrollPageIntoView: "' + dest[1].name + '" ' + 'is not a valid destination type.') + return + } + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE + } + if (scale === 'page-fit' && !dest[4]) { + (0, _ui_utils.scrollIntoView)(pageView.div) + return + } + var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)] + var left = Math.min(boundingRect[0][0], boundingRect[1][0]) + var top = Math.min(boundingRect[0][1], boundingRect[1][1]) + if (!allowNegativeOffset) { + left = Math.max(left, 0) + top = Math.max(top, 0) + } + (0, _ui_utils.scrollIntoView)(pageView.div, { + left: left, + top: top + }) + } + }, { + key: '_updateLocation', + value: function _updateLocation(firstPage) { + var currentScale = this._currentScale + var currentScaleValue = this._currentScaleValue + var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue + var pageNumber = firstPage.id + var pdfOpenParams = '#page=' + pageNumber + pdfOpenParams += '&zoom=' + normalizedScaleValue + var currentPageView = this._pages[pageNumber - 1] + var container = this.container + var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y) + var intLeft = Math.round(topLeft[0]) + var intTop = Math.round(topLeft[1]) + pdfOpenParams += ',' + intLeft + ',' + intTop + this._location = { + pageNumber: pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + pdfOpenParams: pdfOpenParams + } + } + }, { + key: 'update', + value: function update() { + var visible = this._getVisiblePages() + var visiblePages = visible.views + if (visiblePages.length === 0) { + return + } + var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * visiblePages.length + 1) + this._buffer.resize(suggestedCacheSize) + this.renderingQueue.renderHighestPriority(visible) + var currentId = this._currentPageNumber + var firstPage = visible.first + var stillFullyVisible = false + for (var i = 0, ii = visiblePages.length; i < ii; ++i) { + var page = visiblePages[i] + if (page.percent < 100) { + break + } + if (page.id === currentId) { + stillFullyVisible = true + break + } + } + if (!stillFullyVisible) { + currentId = visiblePages[0].id + } + if (!this.isInPresentationMode) { + this._setCurrentPageNumber(currentId) + } + this._updateLocation(firstPage) + this.eventBus.dispatch('updateviewarea', { + source: this, + location: this._location + }) + } + }, { + key: 'containsElement', + value: function containsElement(element) { + return this.container.contains(element) + } + }, { + key: 'focus', + value: function focus() { + this.container.focus() + } + }, { + key: '_getVisiblePages', + value: function _getVisiblePages() { + if (!this.isInPresentationMode) { + return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true) + } + var visible = [] + var currentPage = this._pages[this._currentPageNumber - 1] + visible.push({ + id: currentPage.id, + view: currentPage + }) + return { + first: currentPage, + last: currentPage, + views: visible + } + } + }, { + key: 'cleanup', + value: function cleanup() { + for (var i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._pages[i].reset() + } + } + } + }, { + key: '_cancelRendering', + value: function _cancelRendering() { + for (var i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i]) { + this._pages[i].cancelRendering() + } + } + } + }, { + key: '_ensurePdfPageLoaded', + value: function _ensurePdfPageLoaded(pageView) { + var _this2 = this + + if (pageView.pdfPage) { + return Promise.resolve(pageView.pdfPage) + } + var pageNumber = pageView.id + if (this._pagesRequests[pageNumber]) { + return this._pagesRequests[pageNumber] + } + var promise = this.pdfDocument.getPage(pageNumber).then(function(pdfPage) { + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage) + } + _this2._pagesRequests[pageNumber] = null + return pdfPage + }).catch(function(reason) { + console.error('Unable to get page for page view', reason) + _this2._pagesRequests[pageNumber] = null + }) + this._pagesRequests[pageNumber] = promise + return promise + } + }, { + key: 'forceRendering', + value: function forceRendering(currentlyVisiblePages) { + var _this3 = this + + var visiblePages = currentlyVisiblePages || this._getVisiblePages() + var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, this.scroll.down) + if (pageView) { + this._ensurePdfPageLoaded(pageView).then(function() { + _this3.renderingQueue.renderView(pageView) + }) + return true + } + return false + } + }, { + key: 'getPageTextContent', + value: function getPageTextContent(pageIndex) { + return this.pdfDocument.getPage(pageIndex + 1).then(function(page) { + return page.getTextContent({ normalizeWhitespace: true }) + }) + } + }, { + key: 'createTextLayerBuilder', + value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { + var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false + + return new _text_layer_builder.TextLayerBuilder({ + textLayerDiv: textLayerDiv, + eventBus: this.eventBus, + pageIndex: pageIndex, + viewport: viewport, + findController: this.isInPresentationMode ? null : this.findController, + enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection + }) + } + }, { + key: 'createAnnotationLayerBuilder', + value: function createAnnotationLayerBuilder(pageDiv, pdfPage) { + var renderInteractiveForms = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false + var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n + + return new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: pageDiv, + pdfPage: pdfPage, + renderInteractiveForms: renderInteractiveForms, + linkService: this.linkService, + downloadManager: this.downloadManager, + l10n: l10n + }) + } + }, { + key: 'setFindController', + value: function setFindController(findController) { + this.findController = findController + } + }, { + key: 'getPagesOverview', + value: function getPagesOverview() { + var pagesOverview = this._pages.map(function(pageView) { + var viewport = pageView.pdfPage.getViewport(1) + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + } + }) + if (!this.enablePrintAutoRotate) { + return pagesOverview + } + var isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]) + return pagesOverview.map(function(size) { + if (isFirstPagePortrait === isPortraitOrientation(size)) { + return size + } + return { + width: size.height, + height: size.width, + rotation: (size.rotation + 90) % 360 + } + }) + } + }, { + key: 'pagesCount', + get: function get() { + return this._pages.length + } + }, { + key: 'pageViewsReady', + get: function get() { + return this._pageViewsReady + } + }, { + key: 'currentPageNumber', + get: function get() { + return this._currentPageNumber + }, + set: function set(val) { + if ((val | 0) !== val) { + throw new Error('Invalid page number.') + } + if (!this.pdfDocument) { + return + } + this._setCurrentPageNumber(val, true) + } + }, { + key: 'currentPageLabel', + get: function get() { + return this._pageLabels && this._pageLabels[this._currentPageNumber - 1] + }, + set: function set(val) { + var pageNumber = val | 0 + if (this._pageLabels) { + var i = this._pageLabels.indexOf(val) + if (i >= 0) { + pageNumber = i + 1 + } + } + this.currentPageNumber = pageNumber + } + }, { + key: 'currentScale', + get: function get() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE + }, + set: function set(val) { + if (isNaN(val)) { + throw new Error('Invalid numeric scale') + } + if (!this.pdfDocument) { + return + } + this._setScale(val, false) + } + }, { + key: 'currentScaleValue', + get: function get() { + return this._currentScaleValue + }, + set: function set(val) { + if (!this.pdfDocument) { + return + } + this._setScale(val, false) + } + }, { + key: 'pagesRotation', + get: function get() { + return this._pagesRotation + }, + set: function set(rotation) { + if (!(typeof rotation === 'number' && rotation % 90 === 0)) { + throw new Error('Invalid pages rotation angle.') + } + if (!this.pdfDocument) { + return + } + this._pagesRotation = rotation + for (var i = 0, ii = this._pages.length; i < ii; i++) { + var pageView = this._pages[i] + pageView.update(pageView.scale, rotation) + } + this._setScale(this._currentScaleValue, true) + if (this.defaultRenderingQueue) { + this.update() + } + } + }, { + key: 'isInPresentationMode', + get: function get() { + return this.presentationModeState === PresentationModeState.FULLSCREEN + } + }, { + key: 'isChangingPresentationMode', + get: function get() { + return this.presentationModeState === PresentationModeState.CHANGING + } + }, { + key: 'isHorizontalScrollbarEnabled', + get: function get() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth + } + }, { + key: 'hasEqualPageSizes', + get: function get() { + var firstPageView = this._pages[0] + for (var i = 1, ii = this._pages.length; i < ii; ++i) { + var pageView = this._pages[i] + if (pageView.width !== firstPageView.width || pageView.height !== firstPageView.height) { + return false + } + } + return true + } + }]) + + return PDFViewer + }()) + + exports.PresentationModeState = PresentationModeState + exports.PDFViewer = PDFViewer + /** */ }, + /* 28 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.BasePreferences = undefined + + var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function(obj) { return typeof obj } : function(obj) { return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj } + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var defaultPreferences = null + function getDefaultPreferences() { + if (!defaultPreferences) { + defaultPreferences = Promise.resolve({ + 'showPreviousViewOnLoad': true, + 'defaultZoomValue': '', + 'sidebarViewOnLoad': 0, + 'enableHandToolOnLoad': false, + 'cursorToolOnLoad': 0, + 'enableWebGL': false, + 'pdfBugEnabled': false, + 'disableRange': false, + 'disableStream': false, + 'disableAutoFetch': false, + 'disableFontFace': false, + 'disableTextLayer': false, + 'useOnlyCssZoom': false, + 'externalLinkTarget': 0, + 'enhanceTextSelection': false, + 'renderer': 'canvas', + 'renderInteractiveForms': false, + 'enablePrintAutoRotate': false, + 'disablePageMode': false, + 'disablePageLabels': false + }) + } + return defaultPreferences + } + + var BasePreferences = (function() { + function BasePreferences() { + var _this = this + + _classCallCheck(this, BasePreferences) + + if (this.constructor === BasePreferences) { + throw new Error('Cannot initialize BasePreferences.') + } + this.prefs = null + this._initializedPromise = getDefaultPreferences().then(function(defaults) { + Object.defineProperty(_this, 'defaults', { + value: Object.freeze(defaults), + writable: false, + enumerable: true, + configurable: false + }) + _this.prefs = (0, _ui_utils.cloneObj)(defaults) + return _this._readFromStorage(defaults) + }).then(function(prefObj) { + if (prefObj) { + _this.prefs = prefObj + } + }) + } + + _createClass(BasePreferences, [{ + key: '_writeToStorage', + value: function _writeToStorage(prefObj) { + return Promise.reject(new Error('Not implemented: _writeToStorage')) + } + }, { + key: '_readFromStorage', + value: function _readFromStorage(prefObj) { + return Promise.reject(new Error('Not implemented: _readFromStorage')) + } + }, { + key: 'reset', + value: function reset() { + var _this2 = this + + return this._initializedPromise.then(function() { + _this2.prefs = (0, _ui_utils.cloneObj)(_this2.defaults) + return _this2._writeToStorage(_this2.defaults) + }) + } + }, { + key: 'reload', + value: function reload() { + var _this3 = this + + return this._initializedPromise.then(function() { + return _this3._readFromStorage(_this3.defaults) + }).then(function(prefObj) { + if (prefObj) { + _this3.prefs = prefObj + } + }) + } + }, { + key: 'set', + value: function set(name, value) { + var _this4 = this + + return this._initializedPromise.then(function() { + if (_this4.defaults[name] === undefined) { + throw new Error('Set preference: "' + name + '" is undefined.') + } else if (value === undefined) { + throw new Error('Set preference: no value is specified.') + } + var valueType = typeof value === 'undefined' ? 'undefined' : _typeof(value) + var defaultType = _typeof(_this4.defaults[name]) + if (valueType !== defaultType) { + if (valueType === 'number' && defaultType === 'string') { + value = value.toString() + } else { + throw new Error('Set preference: "' + value + '" is a ' + valueType + ', ' + ('expected a ' + defaultType + '.')) + } + } else { + if (valueType === 'number' && (value | 0) !== value) { + throw new Error('Set preference: "' + value + '" must be an integer.') + } + } + _this4.prefs[name] = value + return _this4._writeToStorage(_this4.prefs) + }) + } + }, { + key: 'get', + value: function get(name) { + var _this5 = this + + return this._initializedPromise.then(function() { + var defaultValue = _this5.defaults[name] + if (defaultValue === undefined) { + throw new Error('Get preference: "' + name + '" is undefined.') + } else { + var prefValue = _this5.prefs[name] + if (prefValue !== undefined) { + return prefValue + } + } + return defaultValue + }) + } + }]) + + return BasePreferences + }()) + + exports.BasePreferences = BasePreferences + /** */ }, + /* 29 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.SecondaryToolbar = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _pdf_cursor_tools = __webpack_require__(6) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var SecondaryToolbar = (function() { + function SecondaryToolbar(options, mainContainer, eventBus) { + _classCallCheck(this, SecondaryToolbar) + + this.toolbar = options.toolbar + this.toggleButton = options.toggleButton + this.toolbarButtonContainer = options.toolbarButtonContainer + this.buttons = [{ + element: options.presentationModeButton, + eventName: 'presentationmode', + close: true + }, { + element: options.openFileButton, + eventName: 'openfile', + close: true + }, { + element: options.printButton, + eventName: 'print', + close: true + }, { + element: options.downloadButton, + eventName: 'download', + close: true + }, { + element: options.viewBookmarkButton, + eventName: null, + close: true + }, { + element: options.firstPageButton, + eventName: 'firstpage', + close: true + }, { + element: options.lastPageButton, + eventName: 'lastpage', + close: true + }, { + element: options.pageRotateCwButton, + eventName: 'rotatecw', + close: false + }, { + element: options.pageRotateCcwButton, + eventName: 'rotateccw', + close: false + }, { + element: options.cursorSelectToolButton, + eventName: 'switchcursortool', + eventDetails: { tool: _pdf_cursor_tools.CursorTool.SELECT }, + close: true + }, { + element: options.cursorHandToolButton, + eventName: 'switchcursortool', + eventDetails: { tool: _pdf_cursor_tools.CursorTool.HAND }, + close: true + }, { + element: options.documentPropertiesButton, + eventName: 'documentproperties', + close: true + }] + this.items = { + firstPage: options.firstPageButton, + lastPage: options.lastPageButton, + pageRotateCw: options.pageRotateCwButton, + pageRotateCcw: options.pageRotateCcwButton + } + this.mainContainer = mainContainer + this.eventBus = eventBus + this.opened = false + this.containerHeight = null + this.previousContainerHeight = null + this.reset() + this._bindClickListeners() + this._bindCursorToolsListener(options) + this.eventBus.on('resize', this._setMaxHeight.bind(this)) + } + + _createClass(SecondaryToolbar, [{ + key: 'setPageNumber', + value: function setPageNumber(pageNumber) { + this.pageNumber = pageNumber + this._updateUIState() + } + }, { + key: 'setPagesCount', + value: function setPagesCount(pagesCount) { + this.pagesCount = pagesCount + this._updateUIState() + } + }, { + key: 'reset', + value: function reset() { + this.pageNumber = 0 + this.pagesCount = 0 + this._updateUIState() + } + }, { + key: '_updateUIState', + value: function _updateUIState() { + this.items.firstPage.disabled = this.pageNumber <= 1 + this.items.lastPage.disabled = this.pageNumber >= this.pagesCount + this.items.pageRotateCw.disabled = this.pagesCount === 0 + this.items.pageRotateCcw.disabled = this.pagesCount === 0 + } + }, { + key: '_bindClickListeners', + value: function _bindClickListeners() { + var _this = this + + this.toggleButton.addEventListener('click', this.toggle.bind(this)) + + var _loop = function _loop(button) { + var _buttons$button = _this.buttons[button], + element = _buttons$button.element, + eventName = _buttons$button.eventName, + close = _buttons$button.close, + eventDetails = _buttons$button.eventDetails + + element.addEventListener('click', function(evt) { + if (eventName !== null) { + var details = { source: _this } + for (var property in eventDetails) { + details[property] = eventDetails[property] + } + _this.eventBus.dispatch(eventName, details) + } + if (close) { + _this.close() + } + }) + } + + for (var button in this.buttons) { + _loop(button) + } + } + }, { + key: '_bindCursorToolsListener', + value: function _bindCursorToolsListener(buttons) { + this.eventBus.on('cursortoolchanged', function(evt) { + buttons.cursorSelectToolButton.classList.remove('toggled') + buttons.cursorHandToolButton.classList.remove('toggled') + switch (evt.tool) { + case _pdf_cursor_tools.CursorTool.SELECT: + buttons.cursorSelectToolButton.classList.add('toggled') + break + case _pdf_cursor_tools.CursorTool.HAND: + buttons.cursorHandToolButton.classList.add('toggled') + break + } + }) + } + }, { + key: 'open', + value: function open() { + if (this.opened) { + return + } + this.opened = true + this._setMaxHeight() + this.toggleButton.classList.add('toggled') + this.toolbar.classList.remove('hidden') + } + }, { + key: 'close', + value: function close() { + if (!this.opened) { + return + } + this.opened = false + this.toolbar.classList.add('hidden') + this.toggleButton.classList.remove('toggled') + } + }, { + key: 'toggle', + value: function toggle() { + if (this.opened) { + this.close() + } else { + this.open() + } + } + }, { + key: '_setMaxHeight', + value: function _setMaxHeight() { + if (!this.opened) { + return + } + this.containerHeight = this.mainContainer.clientHeight + if (this.containerHeight === this.previousContainerHeight) { + return + } + this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;') + this.previousContainerHeight = this.containerHeight + } + }, { + key: 'isOpen', + get: function get() { + return this.opened + } + }]) + + return SecondaryToolbar + }()) + + exports.SecondaryToolbar = SecondaryToolbar + /** */ }, + /* 30 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _dom_events = __webpack_require__(2) + + var _pdfjsLib = __webpack_require__(1) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var EXPAND_DIVS_TIMEOUT = 300 + + var TextLayerBuilder = (function() { + function TextLayerBuilder(_ref) { + var textLayerDiv = _ref.textLayerDiv, + eventBus = _ref.eventBus, + pageIndex = _ref.pageIndex, + viewport = _ref.viewport, + _ref$findController = _ref.findController, + findController = _ref$findController === undefined ? null : _ref$findController, + _ref$enhanceTextSelec = _ref.enhanceTextSelection, + enhanceTextSelection = _ref$enhanceTextSelec === undefined ? false : _ref$enhanceTextSelec + + _classCallCheck(this, TextLayerBuilder) + + this.textLayerDiv = textLayerDiv + this.eventBus = eventBus || (0, _dom_events.getGlobalEventBus)() + this.textContent = null + this.textContentItemsStr = [] + this.textContentStream = null + this.renderingDone = false + this.pageIdx = pageIndex + this.pageNumber = this.pageIdx + 1 + this.matches = [] + this.viewport = viewport + this.textDivs = [] + this.findController = findController + this.textLayerRenderTask = null + this.enhanceTextSelection = enhanceTextSelection + this._bindMouse() + } + + _createClass(TextLayerBuilder, [{ + key: '_finishRendering', + value: function _finishRendering() { + this.renderingDone = true + if (!this.enhanceTextSelection) { + var endOfContent = document.createElement('div') + endOfContent.className = 'endOfContent' + this.textLayerDiv.appendChild(endOfContent) + } + this.eventBus.dispatch('textlayerrendered', { + source: this, + pageNumber: this.pageNumber, + numTextDivs: this.textDivs.length + }) + } + }, { + key: 'render', + value: function render() { + var _this = this + + var timeout = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0 + + if (!(this.textContent || this.textContentStream) || this.renderingDone) { + return + } + this.cancel() + this.textDivs = [] + var textLayerFrag = document.createDocumentFragment() + this.textLayerRenderTask = (0, _pdfjsLib.renderTextLayer)({ + textContent: this.textContent, + textContentStream: this.textContentStream, + container: textLayerFrag, + viewport: this.viewport, + textDivs: this.textDivs, + textContentItemsStr: this.textContentItemsStr, + timeout: timeout, + enhanceTextSelection: this.enhanceTextSelection + }) + this.textLayerRenderTask.promise.then(function() { + _this.textLayerDiv.appendChild(textLayerFrag) + _this._finishRendering() + _this.updateMatches() + }, function(reason) {}) + } + }, { + key: 'cancel', + value: function cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel() + this.textLayerRenderTask = null + } + } + }, { + key: 'setTextContentStream', + value: function setTextContentStream(readableStream) { + this.cancel() + this.textContentStream = readableStream + } + }, { + key: 'setTextContent', + value: function setTextContent(textContent) { + this.cancel() + this.textContent = textContent + } + }, { + key: 'convertMatches', + value: function convertMatches(matches, matchesLength) { + var i = 0 + var iIndex = 0 + var textContentItemsStr = this.textContentItemsStr + var end = textContentItemsStr.length - 1 + var queryLen = this.findController === null ? 0 : this.findController.state.query.length + var ret = [] + if (!matches) { + return ret + } + for (var m = 0, len = matches.length; m < len; m++) { + var matchIdx = matches[m] + while (i !== end && matchIdx >= iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length + i++ + } + if (i === textContentItemsStr.length) { + console.error('Could not find a matching mapping') + } + var match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + } + if (matchesLength) { + matchIdx += matchesLength[m] + } else { + matchIdx += queryLen + } + while (i !== end && matchIdx > iIndex + textContentItemsStr[i].length) { + iIndex += textContentItemsStr[i].length + i++ + } + match.end = { + divIdx: i, + offset: matchIdx - iIndex + } + ret.push(match) + } + return ret + } + }, { + key: 'renderMatches', + value: function renderMatches(matches) { + if (matches.length === 0) { + return + } + var textContentItemsStr = this.textContentItemsStr + var textDivs = this.textDivs + var prevEnd = null + var pageIdx = this.pageIdx + var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx + var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx + var highlightAll = this.findController === null ? false : this.findController.state.highlightAll + var infinity = { + divIdx: -1, + offset: undefined + } + function beginText(begin, className) { + var divIdx = begin.divIdx + textDivs[divIdx].textContent = '' + appendTextToDiv(divIdx, 0, begin.offset, className) + } + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + var div = textDivs[divIdx] + var content = textContentItemsStr[divIdx].substring(fromOffset, toOffset) + var node = document.createTextNode(content) + if (className) { + var span = document.createElement('span') + span.className = className + span.appendChild(node) + div.appendChild(span) + return + } + div.appendChild(node) + } + var i0 = selectedMatchIdx, + i1 = i0 + 1 + if (highlightAll) { + i0 = 0 + i1 = matches.length + } else if (!isSelectedPage) { + return + } + for (var i = i0; i < i1; i++) { + var match = matches[i] + var begin = match.begin + var end = match.end + var isSelected = isSelectedPage && i === selectedMatchIdx + var highlightSuffix = isSelected ? ' selected' : '' + if (this.findController) { + this.findController.updateMatchPosition(pageIdx, i, textDivs, begin.divIdx) + } + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset) + } + beginText(begin) + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset) + } + if (begin.divIdx === end.divIdx) { + appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix) + } else { + appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix) + for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = 'highlight middle' + highlightSuffix + } + beginText(end, 'highlight end' + highlightSuffix) + } + prevEnd = end + } + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset) + } + } + }, { + key: 'updateMatches', + value: function updateMatches() { + if (!this.renderingDone) { + return + } + var matches = this.matches + var textDivs = this.textDivs + var textContentItemsStr = this.textContentItemsStr + var clearedUntilDivIdx = -1 + for (var i = 0, len = matches.length; i < len; i++) { + var match = matches[i] + var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx) + for (var n = begin, end = match.end.divIdx; n <= end; n++) { + var div = textDivs[n] + div.textContent = textContentItemsStr[n] + div.className = '' + } + clearedUntilDivIdx = match.end.divIdx + 1 + } + if (this.findController === null || !this.findController.active) { + return + } + var pageMatches = void 0, + pageMatchesLength = void 0 + if (this.findController !== null) { + pageMatches = this.findController.pageMatches[this.pageIdx] || null + pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null + } + this.matches = this.convertMatches(pageMatches, pageMatchesLength) + this.renderMatches(this.matches) + } + }, { + key: '_bindMouse', + value: function _bindMouse() { + var _this2 = this + + var div = this.textLayerDiv + var expandDivsTimer = null + div.addEventListener('mousedown', function(evt) { + if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { + _this2.textLayerRenderTask.expandTextDivs(true) + if (expandDivsTimer) { + clearTimeout(expandDivsTimer) + expandDivsTimer = null + } + return + } + var end = div.querySelector('.endOfContent') + if (!end) { + return + } + var adjustTop = evt.target !== div + adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none' + if (adjustTop) { + var divBounds = div.getBoundingClientRect() + var r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height) + end.style.top = (r * 100).toFixed(2) + '%' + } + end.classList.add('active') + }) + div.addEventListener('mouseup', function() { + if (_this2.enhanceTextSelection && _this2.textLayerRenderTask) { + expandDivsTimer = setTimeout(function() { + if (_this2.textLayerRenderTask) { + _this2.textLayerRenderTask.expandTextDivs(false) + } + expandDivsTimer = null + }, EXPAND_DIVS_TIMEOUT) + return + } + var end = div.querySelector('.endOfContent') + if (!end) { + return + } + end.style.top = '' + end.classList.remove('active') + }) + } + }]) + + return TextLayerBuilder + }()) + + var DefaultTextLayerFactory = (function() { + function DefaultTextLayerFactory() { + _classCallCheck(this, DefaultTextLayerFactory) + } + + _createClass(DefaultTextLayerFactory, [{ + key: 'createTextLayerBuilder', + value: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport) { + var enhanceTextSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false + + return new TextLayerBuilder({ + textLayerDiv: textLayerDiv, + pageIndex: pageIndex, + viewport: viewport, + enhanceTextSelection: enhanceTextSelection + }) + } + }]) + + return DefaultTextLayerFactory + }()) + + exports.TextLayerBuilder = TextLayerBuilder + exports.DefaultTextLayerFactory = DefaultTextLayerFactory + /** */ }, + /* 31 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + exports.Toolbar = undefined + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + var _ui_utils = __webpack_require__(0) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading' + var SCALE_SELECT_CONTAINER_PADDING = 8 + var SCALE_SELECT_PADDING = 22 + + var Toolbar = (function() { + function Toolbar(options, mainContainer, eventBus) { + var l10n = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _ui_utils.NullL10n + + _classCallCheck(this, Toolbar) + + this.toolbar = options.container + this.mainContainer = mainContainer + this.eventBus = eventBus + this.l10n = l10n + this.items = options + this._wasLocalized = false + this.reset() + this._bindListeners() + } + + _createClass(Toolbar, [{ + key: 'setPageNumber', + value: function setPageNumber(pageNumber, pageLabel) { + this.pageNumber = pageNumber + this.pageLabel = pageLabel + this._updateUIState(false) + } + }, { + key: 'setPagesCount', + value: function setPagesCount(pagesCount, hasPageLabels) { + this.pagesCount = pagesCount + this.hasPageLabels = hasPageLabels + this._updateUIState(true) + } + }, { + key: 'setPageScale', + value: function setPageScale(pageScaleValue, pageScale) { + this.pageScaleValue = pageScaleValue + this.pageScale = pageScale + this._updateUIState(false) + } + }, { + key: 'reset', + value: function reset() { + this.pageNumber = 0 + this.pageLabel = null + this.hasPageLabels = false + this.pagesCount = 0 + this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE + this.pageScale = _ui_utils.DEFAULT_SCALE + this._updateUIState(true) + } + }, { + key: '_bindListeners', + value: function _bindListeners() { + var _this = this + + var eventBus = this.eventBus, + items = this.items + + var self = this + items.previous.addEventListener('click', function() { + eventBus.dispatch('previouspage') + }) + items.next.addEventListener('click', function() { + eventBus.dispatch('nextpage') + }) + items.zoomIn.addEventListener('click', function() { + eventBus.dispatch('zoomin') + }) + items.zoomOut.addEventListener('click', function() { + eventBus.dispatch('zoomout') + }) + items.pageNumber.addEventListener('click', function() { + this.select() + }) + items.pageNumber.addEventListener('change', function() { + eventBus.dispatch('pagenumberchanged', { + source: self, + value: this.value + }) + }) + items.scaleSelect.addEventListener('change', function() { + if (this.value === 'custom') { + return + } + eventBus.dispatch('scalechanged', { + source: self, + value: this.value + }) + }) + items.presentationModeButton.addEventListener('click', function() { + eventBus.dispatch('presentationmode') + }) + items.openFile.addEventListener('click', function() { + eventBus.dispatch('openfile') + }) + /* items.print.addEventListener('click', function () { + eventBus.dispatch('print'); + }); + items.download.addEventListener('click', function () { + eventBus.dispatch('download'); + });*/ + items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler + eventBus.on('localized', function() { + _this._localized() + }) + } + }, { + key: '_localized', + value: function _localized() { + this._wasLocalized = true + this._adjustScaleWidth() + this._updateUIState(true) + } + }, { + key: '_updateUIState', + value: function _updateUIState() { + var resetNumPages = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + if (!this._wasLocalized) { + return + } + var pageNumber = this.pageNumber, + pagesCount = this.pagesCount, + items = this.items + + var scaleValue = (this.pageScaleValue || this.pageScale).toString() + var scale = this.pageScale + if (resetNumPages) { + if (this.hasPageLabels) { + items.pageNumber.type = 'text' + } else { + items.pageNumber.type = 'number' + this.l10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}').then(function(msg) { + items.numPages.textContent = msg + }) + } + items.pageNumber.max = pagesCount + } + if (this.hasPageLabels) { + items.pageNumber.value = this.pageLabel + this.l10n.get('page_of_pages', { + pageNumber: pageNumber, + pagesCount: pagesCount + }, '({{pageNumber}} of {{pagesCount}})').then(function(msg) { + items.numPages.textContent = msg + }) + } else { + items.pageNumber.value = pageNumber + } + items.previous.disabled = pageNumber <= 1 + items.next.disabled = pageNumber >= pagesCount + items.zoomOut.disabled = scale <= _ui_utils.MIN_SCALE + items.zoomIn.disabled = scale >= _ui_utils.MAX_SCALE + var customScale = Math.round(scale * 10000) / 100 + this.l10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%').then(function(msg) { + var options = items.scaleSelect.options + var predefinedValueFound = false + for (var i = 0, ii = options.length; i < ii; i++) { + var option = options[i] + if (option.value !== scaleValue) { + option.selected = false + continue + } + option.selected = true + predefinedValueFound = true + } + if (!predefinedValueFound) { + items.customScaleOption.textContent = msg + items.customScaleOption.selected = true + } + }) + } + }, { + key: 'updateLoadingIndicatorState', + value: function updateLoadingIndicatorState() { + var loading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false + + var pageNumberInput = this.items.pageNumber + if (loading) { + pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR) + } else { + pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR) + } + } + }, { + key: '_adjustScaleWidth', + value: function _adjustScaleWidth() { + var container = this.items.scaleSelectContainer + var select = this.items.scaleSelect + _ui_utils.animationStarted.then(function() { + if (container.clientWidth === 0) { + container.setAttribute('style', 'display: inherit;') + } + if (container.clientWidth > 0) { + select.setAttribute('style', 'min-width: inherit;') + var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING + select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;') + container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;') + } + }) + } + }]) + + return Toolbar + }()) + + exports.Toolbar = Toolbar + /** */ }, + /* 32 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + Object.defineProperty(exports, '__esModule', { + value: true + }) + + var _createClass = (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor) } } return function(Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor } }()) + + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } } + + var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20 + + var ViewHistory = (function() { + function ViewHistory(fingerprint) { + var _this = this + + var cacheSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_VIEW_HISTORY_CACHE_SIZE + + _classCallCheck(this, ViewHistory) + + this.fingerprint = fingerprint + this.cacheSize = cacheSize + this._initializedPromise = this._readFromStorage().then(function(databaseStr) { + var database = JSON.parse(databaseStr || '{}') + if (!('files' in database)) { + database.files = [] + } + if (database.files.length >= _this.cacheSize) { + database.files.shift() + } + var index = void 0 + for (var i = 0, length = database.files.length; i < length; i++) { + var branch = database.files[i] + if (branch.fingerprint === _this.fingerprint) { + index = i + break + } + } + if (typeof index !== 'number') { + index = database.files.push({ fingerprint: _this.fingerprint }) - 1 + } + _this.file = database.files[index] + _this.database = database + }) + } + + _createClass(ViewHistory, [{ + key: '_writeToStorage', + value: function _writeToStorage() { + var _this2 = this + + return new Promise(function(resolve) { + var databaseStr = JSON.stringify(_this2.database) + localStorage.setItem('pdfjs.history', databaseStr) + resolve() + }) + } + }, { + key: '_readFromStorage', + value: function _readFromStorage() { + return new Promise(function(resolve) { + var value = localStorage.getItem('pdfjs.history') + if (!value) { + var databaseStr = localStorage.getItem('database') + if (databaseStr) { + try { + var database = JSON.parse(databaseStr) + if (typeof database.files[0].fingerprint === 'string') { + localStorage.setItem('pdfjs.history', databaseStr) + localStorage.removeItem('database') + value = databaseStr + } + } catch (ex) {} + } + } + resolve(value) + }) + } + }, { + key: 'set', + value: function set(name, val) { + var _this3 = this + + return this._initializedPromise.then(function() { + _this3.file[name] = val + return _this3._writeToStorage() + }) + } + }, { + key: 'setMultiple', + value: function setMultiple(properties) { + var _this4 = this + + return this._initializedPromise.then(function() { + for (var name in properties) { + _this4.file[name] = properties[name] + } + return _this4._writeToStorage() + }) + } + }, { + key: 'get', + value: function get(name, defaultValue) { + var _this5 = this + + return this._initializedPromise.then(function() { + var val = _this5.file[name] + return val !== undefined ? val : defaultValue + }) + } + }, { + key: 'getMultiple', + value: function getMultiple(properties) { + var _this6 = this + + return this._initializedPromise.then(function() { + var values = Object.create(null) + for (var name in properties) { + var val = _this6.file[name] + values[name] = val !== undefined ? val : properties[name] + } + return values + }) + } + }]) + + return ViewHistory + }()) + + exports.ViewHistory = ViewHistory + /** */ }, + /* 33 */ + /** */ function(module, exports, __webpack_require__) { + 'use strict' + + var DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf' + + var pdfjsWebApp = void 0 + { + pdfjsWebApp = __webpack_require__(4) + } + + { + __webpack_require__(8) + } + + { + __webpack_require__(9) + } + function getViewerConfiguration() { + return { + appContainer: document.body, + mainContainer: document.getElementById('viewerContainer'), + viewerContainer: document.getElementById('viewer'), + eventBus: null, + toolbar: { + container: document.getElementById('toolbarViewer'), + numPages: document.getElementById('numPages'), + pageNumber: document.getElementById('pageNumber'), + scaleSelectContainer: document.getElementById('scaleSelectContainer'), + scaleSelect: document.getElementById('scaleSelect'), + customScaleOption: document.getElementById('customScaleOption'), + previous: document.getElementById('previous'), + next: document.getElementById('next'), + zoomIn: document.getElementById('zoomIn'), + zoomOut: document.getElementById('zoomOut'), + viewFind: document.getElementById('viewFind'), + openFile: document.getElementById('openFile'), + print: document.getElementById('print'), + presentationModeButton: document.getElementById('presentationMode'), + download: document.getElementById('download'), + viewBookmark: document.getElementById('viewBookmark') + }, + secondaryToolbar: { + toolbar: document.getElementById('secondaryToolbar'), + toggleButton: document.getElementById('secondaryToolbarToggle'), + toolbarButtonContainer: document.getElementById('secondaryToolbarButtonContainer'), + presentationModeButton: document.getElementById('secondaryPresentationMode'), + openFileButton: document.getElementById('secondaryOpenFile'), + printButton: document.getElementById('secondaryPrint'), + downloadButton: document.getElementById('secondaryDownload'), + viewBookmarkButton: document.getElementById('secondaryViewBookmark'), + firstPageButton: document.getElementById('firstPage'), + lastPageButton: document.getElementById('lastPage'), + pageRotateCwButton: document.getElementById('pageRotateCw'), + pageRotateCcwButton: document.getElementById('pageRotateCcw'), + cursorSelectToolButton: document.getElementById('cursorSelectTool'), + cursorHandToolButton: document.getElementById('cursorHandTool'), + documentPropertiesButton: document.getElementById('documentProperties') + }, + fullscreen: { + contextFirstPage: document.getElementById('contextFirstPage'), + contextLastPage: document.getElementById('contextLastPage'), + contextPageRotateCw: document.getElementById('contextPageRotateCw'), + contextPageRotateCcw: document.getElementById('contextPageRotateCcw') + }, + sidebar: { + mainContainer: document.getElementById('mainContainer'), + outerContainer: document.getElementById('outerContainer'), + toggleButton: document.getElementById('sidebarToggle'), + thumbnailButton: document.getElementById('viewThumbnail'), + outlineButton: document.getElementById('viewOutline'), + attachmentsButton: document.getElementById('viewAttachments'), + thumbnailView: document.getElementById('thumbnailView'), + outlineView: document.getElementById('outlineView'), + attachmentsView: document.getElementById('attachmentsView') + }, + findBar: { + bar: document.getElementById('findbar'), + toggleButton: document.getElementById('viewFind'), + findField: document.getElementById('findInput'), + highlightAllCheckbox: document.getElementById('findHighlightAll'), + caseSensitiveCheckbox: document.getElementById('findMatchCase'), + findMsg: document.getElementById('findMsg'), + findResultsCount: document.getElementById('findResultsCount'), + findStatusIcon: document.getElementById('findStatusIcon'), + findPreviousButton: document.getElementById('findPrevious'), + findNextButton: document.getElementById('findNext') + }, + passwordOverlay: { + overlayName: 'passwordOverlay', + container: document.getElementById('passwordOverlay'), + label: document.getElementById('passwordText'), + input: document.getElementById('password'), + submitButton: document.getElementById('passwordSubmit'), + cancelButton: document.getElementById('passwordCancel') + }, + documentProperties: { + overlayName: 'documentPropertiesOverlay', + container: document.getElementById('documentPropertiesOverlay'), + closeButton: document.getElementById('documentPropertiesClose'), + fields: { + 'fileName': document.getElementById('fileNameField'), + 'fileSize': document.getElementById('fileSizeField'), + 'title': document.getElementById('titleField'), + 'author': document.getElementById('authorField'), + 'subject': document.getElementById('subjectField'), + 'keywords': document.getElementById('keywordsField'), + 'creationDate': document.getElementById('creationDateField'), + 'modificationDate': document.getElementById('modificationDateField'), + 'creator': document.getElementById('creatorField'), + 'producer': document.getElementById('producerField'), + 'version': document.getElementById('versionField'), + 'pageCount': document.getElementById('pageCountField') + } + }, + errorWrapper: { + container: document.getElementById('errorWrapper'), + errorMessage: document.getElementById('errorMessage'), + closeButton: document.getElementById('errorClose'), + errorMoreInfo: document.getElementById('errorMoreInfo'), + moreInfoButton: document.getElementById('errorShowMore'), + lessInfoButton: document.getElementById('errorShowLess') + }, + printContainer: document.getElementById('printContainer'), + openFileInputName: 'fileInput', + debuggerScriptPath: './debugger.js', + defaultUrl: DEFAULT_URL + } + } + function webViewerLoad() { + var config = getViewerConfiguration() + window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication + pdfjsWebApp.PDFViewerApplication.run(config) + } + if (document.readyState === 'interactive' || document.readyState === 'complete') { + webViewerLoad() + } else { + document.addEventListener('DOMContentLoaded', webViewerLoad, true) + } + /** */ } +/** ****/ ]) +// # sourceMappingURL=viewer.js.map diff --git a/public/static/web/viewer.js.map b/public/static/web/viewer.js.map new file mode 100644 index 0000000..018b089 --- /dev/null +++ b/public/static/web/viewer.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap 67a151ebb5e544e5a40d","webpack:///web/ui_utils.js","webpack:///web/pdfjs.js","webpack:///web/dom_events.js","webpack:///web/pdf_rendering_queue.js","webpack:///web/app.js","webpack:///web/pdf_link_service.js","webpack:///web/pdf_cursor_tools.js","webpack:///web/pdf_find_controller.js","webpack:///web/genericcom.js","webpack:///web/pdf_print_service.js","webpack:///external/webL10n/l10n.js","webpack:///web/annotation_layer_builder.js","webpack:///web/download_manager.js","webpack:///web/genericl10n.js","webpack:///web/grab_to_pan.js","webpack:///web/overlay_manager.js","webpack:///web/password_prompt.js","webpack:///web/pdf_attachment_viewer.js","webpack:///web/pdf_document_properties.js","webpack:///web/pdf_find_bar.js","webpack:///web/pdf_history.js","webpack:///web/pdf_outline_viewer.js","webpack:///web/pdf_page_view.js","webpack:///web/pdf_presentation_mode.js","webpack:///web/pdf_sidebar.js","webpack:///web/pdf_thumbnail_view.js","webpack:///web/pdf_thumbnail_viewer.js","webpack:///web/pdf_viewer.js","webpack:///web/preferences.js","webpack:///web/secondary_toolbar.js","webpack:///web/text_layer_builder.js","webpack:///web/toolbar.js","webpack:///web/view_history.js","webpack:///web/viewer.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA,mDAA2C,cAAc;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,mCAA2B,0BAA0B,EAAE;AACvD,yCAAiC,eAAe;AAChD;AACA;AACA;;AAEA;AACA,8DAAsD,+DAA+D;;AAErH;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACjDsB;;;;AAEtB,IAAM,YAAY,OAAO;AACzB,IAAM,sBAAsB;AAC5B,IAAM,gBAAgB;AACtB,IAAM,YAAY;AAClB,IAAM,YAAY;AAClB,IAAM,gBAAgB;AACtB,IAAM,iBAAiB;AACvB,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AAEzB,IAAM;AACJ,UAAQ;AACR,OAAK;AAFc;AAMrB,SAAS,gBAAgB,MAAM,MAAM;AACnC,MAAI,CAAC,MAAM;AACT,WAAO;AAF0B;AAInC,cAAY,QAAQ,wBAAwB,UAAC,KAAK,MAAS;AACzD,WAAQ,QAAQ,OAAO,KAAK,QAAQ,OAAO,OAAO;AAD7C;AArCT;AA8CA,IAAI;AACF,oBAAI,UAAU,MAAM,UAAU;AAC5B,WAAO,QAAQ,QAAQ,gBAAgB,UAAU;AAFtC;AAKb,gCAAU,SAAS;AACjB,WAAO,QAAQ;AANJ;AAAA;AAef,gBAAM,oBAAqB,gBAAM,sBAAsB,YAC5B,QAAQ,gBAAM;AAMzC,gBAAM,iBAAkB,gBAAM,mBAAmB,YACzB,QAAQ,gBAAM;AAOtC,gBAAM,kBAAmB,gBAAM,oBAAoB,YAC1B,WAAW,gBAAM;AAM1C,gBAAM,iBAAkB,gBAAM,mBAAmB,YACzB,QAAQ,gBAAM;AAMtC,gBAAM,mBAAoB,gBAAM,qBAAqB,YAC3B,QAAQ,gBAAM;AAKxC,gBAAM,8BAA+B,gBAAM,gCACzC,YAAY,QAAQ,gBAAM;AAGiB;AAK3C,kBAAM,SACH,gBAAM,WAAW,aAAa,OAAO,cAAc,cACnD,UAAU,WAAW,gBAAM;AA3GhC;AAoHA,SAAS,eAAe,KAAK;AAC3B,MAAI,mBAAmB,OAAO,oBAAoB;AAClD,MAAI,oBAAoB,IAAI,gCACJ,IAAI,6BACJ,IAAI,4BACJ,IAAI,2BACJ,IAAI,0BAA0B;AACtD,MAAI,aAAa,mBAAmB;AACpC;AACE,QAAI;AACJ,QAAI;AACJ,YAAQ,eAAe;AAHlB;AA5HT;AA2IA,SAAS,eAAe,SAAS;AAA0C,MAApC,iGAA6B;;AAIlE,MAAI,SAAS,QAAQ;AACrB,MAAI,CAAC,QAAQ;AACX,YAAQ,MAAM;AACd;AAPuE;AASzE,MAAI,UAAU,QAAQ,YAAY,QAAQ;AAC1C,MAAI,UAAU,QAAQ,aAAa,QAAQ;AAC3C,SAAO,OAAO,iBAAiB,OAAO,gBAC9B,8BACA,iBAAiB,QAAQ,aAAa,UAAW;AACvD,QAAI,OAAO,QAAQ,SAAS;AAC1B,iBAAW,OAAO,QAAQ;AAC1B,iBAAW,OAAO,QAAQ;AAH2B;AAKvD,eAAW,OAAO;AAClB,eAAW,OAAO;AAClB,aAAS,OAAO;AAChB,QAAI,CAAC,QAAQ;AACX;AATqD;AAbgB;AAyBzE,MAAI,MAAM;AACR,QAAI,KAAK,QAAQ,WAAW;AAC1B,iBAAW,KAAK;AAFV;AAIR,QAAI,KAAK,SAAS,WAAW;AAC3B,iBAAW,KAAK;AAChB,aAAO,aAAa;AANd;AAzB+D;AAkCzE,SAAO,YAAY;AA7KrB;AAoLA,SAAS,YAAY,iBAAiB,UAAU;AAC9C,MAAI,iBAAiB,wBAAS,KAAK;AACjC,QAAI,KAAK;AACP;AAF+B;AAKjC,iBAAa,sBAAsB,SAAS,0BAA0B;AACpE,YAAM;AAEN,UAAI,WAAW,gBAAgB;AAC/B,UAAI,QAAQ,MAAM;AAClB,UAAI,aAAa,OAAO;AACtB,cAAM,OAAO,WAAW;AAN0C;AAQpE,YAAM,QAAQ;AACd,eAAS;AATL;AALR;AAkBA,MAAI;AACF,UAAM;AACN,WAAO,gBAAgB;AACvB,mBAAe;AAHL;AAMZ,MAAI,MAAM;AACV,kBAAgB,iBAAiB,UAAU,gBAAgB;AAC3D,SAAO;AA/MT;AAqNA,SAAS,iBAAiB,OAAO;AAC/B,MAAI,QAAQ,MAAM,MAAM;AACxB,MAAI,SAAS,OAAO,OAAO;AAC3B,OAAK,IAAI,IAAI,GAAG,KAAK,MAAM,QAAQ,IAAI,IAAI,EAAE,GAAG;AAC9C,QAAI,QAAQ,MAAM,GAAG,MAAM;AAC3B,QAAI,MAAM,MAAM,GAAG;AACnB,QAAI,QAAQ,MAAM,SAAS,IAAI,MAAM,KAAK;AAC1C,WAAO,mBAAmB,QAAQ,mBAAmB;AAPxB;AAS/B,SAAO;AA9NT;AA0OA,SAAS,sBAAsB,OAAO,WAAW;AAC/C,MAAI,WAAW;AACf,MAAI,WAAW,MAAM,SAAS;AAE9B,MAAI,MAAM,WAAW,KAAK,CAAC,UAAU,MAAM,YAAY;AACrD,WAAO,MAAM;AALgC;AAO/C,MAAI,UAAU,MAAM,YAAY;AAC9B,WAAO;AARsC;AAW/C,SAAO,WAAW,UAAU;AAC1B,QAAI,eAAgB,WAAW,YAAa;AAC5C,QAAI,cAAc,MAAM;AACxB,QAAI,UAAU,cAAc;AAC1B,iBAAW;AADb,WAEO;AACL,iBAAW,eAAe;AANF;AAXmB;AAoB/C,SAAO;AA9PT;AAwQA,SAAS,oBAAoB,GAAG;AAE9B,MAAI,KAAK,MAAM,OAAO,GAAG;AACvB,WAAO,CAAC,GAAG;AAHiB;AAK9B,MAAI,OAAO,IAAI;AACf,MAAI,QAAQ;AACZ,MAAI,OAAO,OAAO;AAChB,WAAO,CAAC,GAAG;AADb,SAEO,IAAI,KAAK,MAAM,UAAU,MAAM;AACpC,WAAO,CAAC,GAAG;AAViB;AAa9B,MAAI,KAAK,IAAI,IAAI,OAAO;AAExB,MAAI,IAAI;MAAG,IAAI;MAAG,IAAI;MAAG,IAAI;AAE7B,SAAO,MAAM;AAEX,QAAI,IAAI,IAAI;QAAG,IAAI,IAAI;AACvB,QAAI,IAAI,OAAO;AACb;AAJS;AAMX,QAAI,MAAM,IAAI,GAAG;AACf,UAAI;AAAG,UAAI;AADb,WAEO;AACL,UAAI;AAAG,UAAI;AATF;AAjBiB;AA6B9B,MAAI;AAEJ,MAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI;AAC3B,aAAS,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;AADnC,SAEO;AACL,aAAS,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG;AAlCL;AAoC9B,SAAO;AA5ST;AA+SA,SAAS,cAAc,GAAG,KAAK;AAC7B,MAAI,IAAI,IAAI;AACZ,SAAO,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI;AAjT1C;AAuTA,SAAS,mBAAmB,UAAU;AAAiC,MAA1B,uFAAmB;;AAC9D,MAAI,MAAM,SAAS;MAAW,SAAS,MAAM,SAAS;AACtD,MAAI,OAAO,SAAS;MAAY,QAAQ,OAAO,SAAS;AAExD,WAAS,4BAA4B,MAAM;AACzC,QAAI,UAAU,KAAK;AACnB,QAAI,gBACF,QAAQ,YAAY,QAAQ,YAAY,QAAQ;AAClD,WAAO,gBAAgB;AAR4C;AAWrE,MAAI,UAAU;MAAI;MAAM;AACxB,MAAI;MAAe;MAAY;MAAc;AAC7C,MAAI;MAAc;AAClB,MAAI,yBAAyB,MAAM,WAAW,IAAI,IAChD,sBAAsB,OAAO;AAE/B,OAAK,IAAI,IAAI,wBAAwB,KAAK,MAAM,QAAQ,IAAI,IAAI,KAAK;AACnE,WAAO,MAAM;AACb,cAAU,KAAK;AACf,oBAAgB,QAAQ,YAAY,QAAQ;AAC5C,iBAAa,QAAQ;AAErB,QAAI,gBAAgB,QAAQ;AAC1B;AAPiE;AAUnE,mBAAe,QAAQ,aAAa,QAAQ;AAC5C,gBAAY,QAAQ;AACpB,QAAI,eAAe,YAAY,QAAQ,eAAe,OAAO;AAC3D;AAbiE;AAenE,mBAAe,KAAK,IAAI,GAAG,MAAM,iBAC/B,KAAK,IAAI,GAAG,gBAAgB,aAAa;AAC3C,oBAAkB,cAAa,gBAAgB,MAAM,aAAc;AAEnE,YAAQ;AACN,UAAI,KAAK;AACT,SAAG;AACH,SAAG;AACH;AACA,eAAS;AALE;AApCsD;AA6CrE,MAAI,QAAQ,QAAQ;AACpB,MAAI,OAAO,QAAQ,QAAQ,SAAS;AAEpC,MAAI,kBAAkB;AACpB,YAAQ,KAAK,UAAS,GAAG,GAAG;AAC1B,UAAI,KAAK,EAAE,UAAU,EAAE;AACvB,UAAI,KAAK,IAAI,MAAM,OAAO;AACxB,eAAO,CAAC;AAHgB;AAK1B,aAAO,EAAE,KAAK,EAAE;AALlB;AAjDmE;AAyDrE;AAAS;AAAO;AAAM,WAAO;AAAtB;AAhXT;AAsXA,SAAS,qBAAqB,KAAK;AACjC,MAAI;AAvXN;AA0XA,SAAS,aAAa,KAAK;AACzB,MAAI,IAAI;MAAG,KAAK,IAAI;AACpB,SAAO,IAAI,MAAM,IAAI,GAAG,WAAW,IAAI;AACrC;AAHuB;AAKzB,SAAO,IAAI,OAAO,GAAG,GAAG,kBAAkB;AA/X5C;AAyYA,SAAS,sBAAsB;AAAuC,MAAlC,sFAAkB;;AACpD,MAAI,aAAa,MAAM;AACrB,YAAQ,KAAK,4BACA;AACb,WAAO;AAJ2D;AAMpE,MAAM,QAAQ;AAGd,MAAM,aAAa;AACnB,MAAI,WAAW,MAAM,KAAK;AAC1B,MAAI,oBAAoB,WAAW,KAAK,SAAS,OACzB,WAAW,KAAK,SAAS,OACzB,WAAW,KAAK,SAAS;AACjD,MAAI,mBAAmB;AACrB,wBAAoB,kBAAkB;AACtC,QAAI,kBAAkB,QAAQ,SAAS,CAAC,GAAG;AAEzC,UAAI;AACF,4BACE,WAAW,KAAK,mBAAmB,oBAAoB;AAF3D,QAGE,OAAO,IAAI,CAL4B;AAFtB;AAd6C;AA2BpE,SAAO,qBAAqB;AApa9B;AAuaA,SAAS,yBAAyB,KAAK;AACrC,MAAI,QAAQ,KAAK,KAAK,IAAI,SAAS,IAAI,SAAS,IAAI,SAAS,IAAI;AACjE,MAAI,QAAQ,KAAK,MAAM,IAAI,QAAQ,IAAI;AACvC,MAAI,CAAC,OAAO,KAAK,KAAK,SAAS,QAAQ,OAAO,KAAK,IAAI;AAErD,YAAQ,CAAC;AAL0B;AAQrC,MAAM,6BAA6B;AACnC,MAAM,4BAA4B;AAClC,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAG7B,MAAI,IAAI,cAAc,4BAA4B;AAChD,aAAS,wBAAwB;AADnC,SAEO,IAAI,IAAI,cAAc,2BAA2B;AACtD,aAAS;AAjB0B;AAmBrC,SAAO;AA1bT;AA6bA,SAAS,SAAS,KAAK;AACrB,MAAI,SAAS,OAAO,OAAO;AAC3B,WAAS,KAAK,KAAK;AACjB,QAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI;AAChD,aAAO,KAAK,IAAI;AAFD;AAFE;AAOrB,SAAO;AApcT;AA0cA,IAAI,uBAAuB,QAAQ,UAAU,SAAS;AACpD,SAAO,sBAAsB;AADR;AAOvB,IAAI;AAKJ,IAAI,YAAY,QAOhB;;IAAe;AACb;AAAc;;AACZ,SAAK,aAAa,OAAO,OAAO;AAGlC;;;;uBAAG,WAAW,UAAU;AACtB,UAAI,iBAAiB,KAAK,WAAW;AACrC,UAAI,CAAC,gBAAgB;AACnB,yBAAiB;AACjB,aAAK,WAAW,aAAa;AAJT;AAMtB,qBAAe,KAAK;AAGtB;;;wBAAI,WAAW,UAAU;AACvB,UAAI,iBAAiB,KAAK,WAAW;AACrC,UAAI;AACJ,UAAI,CAAC,kBAAoB,KAAI,eAAe,QAAQ,aAAa,GAAI;AACnE;AAJqB;AAMvB,qBAAe,OAAO,GAAG;AAG3B;;;6BAAS,WAAW;AAClB,UAAI,iBAAiB,KAAK,WAAW;AACrC,UAAI,CAAC,kBAAkB,eAAe,WAAW,GAAG;AAClD;AAHgB;AAMlB,UAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW;AAGjD,qBAAe,MAAM,GAAG,QAAQ,UAAU,UAAU;AAClD,iBAAS,MAAM,MAAM;AADvB;AAhCW;;;;;;AAsCf,SAAS,MAAM,GAAG,KAAK,KAAK;AAC1B,SAAO,KAAK,IAAI,KAAK,IAAI,GAAG,MAAM;AAGpC;;IAAkB;AAChB,uBAAgB;AAAgC,mFAAJ;QAA1B;QAAQ;QAAO;;;;AAC/B,SAAK,UAAU;AAGf,SAAK,MAAM,SAAS,cAAc,KAAK;AAEvC,SAAK,MAAM,KAAK,IAAI;AAGpB,SAAK,SAAS,UAAU;AACxB,SAAK,QAAQ,SAAS;AACtB,SAAK,QAAQ,SAAS;AAGtB,SAAK,IAAI,MAAM,SAAS,KAAK,SAAS,KAAK;AAC3C,SAAK,UAAU;AAGjB;;;;iCAAa;AACX,UAAI,KAAK,gBAAgB;AACvB,aAAK,IAAI,UAAU,IAAI;AACvB,aAAK,IAAI,MAAM,QAAQ,KAAK,QAAQ,KAAK;AACzC;AAJS;AAOX,WAAK,IAAI,UAAU,OAAO;AAC1B,UAAI,eAAe,KAAK,QAAQ,KAAK,WAAW;AAChD,WAAK,IAAI,MAAM,QAAQ,eAAe,KAAK;AAGzC;;;6BAUK,QAAQ;AACf,UAAI,CAAC,QAAQ;AACX;AAFa;AAIf,UAAI,YAAY,OAAO;AACvB,UAAI,iBAAiB,UAAU,cAAc,OAAO;AACpD,UAAI,iBAAiB,GAAG;AACtB,aAAK,IAAI,aAAa,SAAS,wBACA,iBAAiB;AARnC;AAYjB;;;2BAAO;AACL,UAAI,CAAC,KAAK,SAAS;AACjB;AAFG;AAIL,WAAK,UAAU;AACf,WAAK,IAAI,UAAU,IAAI;AACvB,eAAS,KAAK,UAAU,OAAO;AAGjC;;;2BAAO;AACL,UAAI,KAAK,SAAS;AAChB;AAFG;AAIL,WAAK,UAAU;AACf,eAAS,KAAK,UAAU,IAAI;AAC5B,WAAK,IAAI,UAAU,OAAO;AAI9B;;;wBAzCgB;AACZ,aAAO,KAAK;AAGV;sBAAQ,KAAK;AACf,WAAK,iBAAiB,MAAM;AAC5B,WAAK,WAAW,MAAM,KAAK,GAAG;AAC9B,WAAK;AAGP;;;;;;QAgCA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,sB;;;;;;;AC3lBF;;AAEA,IAAI;AACJ,IAAI,OAAO,WAAW,eAAe,OAAO,yBAAyB;AACnE,aAAW,OAAO;AADpB,OAEO;AACL,aAAW,QAAwB;AAtBrC;AAwBA,OAAO,UAAU,S;;;;;;;;;;;;;;ACTQ;;AAIzB,SAAS,0BAA0B,UAAU;AAC3C,WAAS,GAAG,gBAAgB,YAAW;AACrC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,gBAAgB,MAAM,MAAM;AAClD,WAAO,cAAc;AAHvB;AAKA,WAAS,GAAG,gBAAgB,UAAS,KAAK;AACxC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,gBAAgB,MAAM;AAC1C,kBAAY,IAAI;AAChB,oBAAc,IAAI;AAF8B;AAIlD,QAAI,OAAO,IAAI,cAAc;AAN/B;AAQA,WAAS,GAAG,qBAAqB,UAAS,KAAK;AAC7C,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,qBAAqB,MAAM,MAAM,EACrD,YAAY,IAAI;AAElB,QAAI,OAAO,aAAa,cAAc;AALxC;AAOA,WAAS,GAAG,cAAc,UAAS,KAAK;AACtC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,YAAY,cAAc,MAAM,MAAM,QAAQ;AACpD,UAAM,aAAa,IAAI;AACvB,QAAI,OAAO,UAAU,cAAc;AAJrC;AAMA,WAAS,GAAG,aAAa,UAAS,KAAK;AACrC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,aAAa,MAAM,MAAM;AAC/C,QAAI,OAAO,UAAU,cAAc;AAHrC;AAKA,WAAS,GAAG,eAAe,UAAS,KAAK;AACvC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,eAAe,MAAM,MAAM,EAC/C,YAAY,IAAI;AAElB,QAAI,OAAO,UAAU,cAAc;AALrC;AAOA,WAAS,GAAG,eAAe,UAAS,KAAK;AACvC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,YAAY,eAAe,MAAM,MAAM,QAAQ;AACrD,UAAM,QAAQ,IAAI;AAClB,UAAM,cAAc,IAAI;AACxB,QAAI,OAAO,UAAU,cAAc;AALrC;AAOA,WAAS,GAAG,kBAAkB,UAAS,KAAK;AAC1C,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,YAAY,kBAAkB,MAAM,MAAM,QAAQ;AACxD,UAAM,WAAW,IAAI;AACrB,QAAI,OAAO,UAAU,cAAc;AAJrC;AAMA,WAAS,GAAG,QAAQ,UAAS,KAAK;AAChC,QAAI,IAAI,WAAW,QAAQ;AACzB;AAF8B;AAIhC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,SAAS,IAAI,MAAM,MAAM;AAC7C,aAAO,IAAI;AACX,oBAAc,IAAI;AAClB,qBAAe,IAAI;AACnB,oBAAc,IAAI;AAClB,oBAAc,IAAI;AALiC;AAOrD,WAAO,cAAc;AAZvB;AAcA,WAAS,GAAG,qBAAqB,UAAS,KAAK;AAC7C,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,qBAAqB,MAAM,MAAM,EACrD,kBAAkB,IAAI;AAExB,QAAI,OAAO,UAAU,cAAc;AALrC;AAOA,WAAS,GAAG,sBAAsB,UAAS,KAAK;AAC9C,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,sBAAsB,MAAM,MAAM,EACtD,MAAM,IAAI;AAEZ,QAAI,OAAO,eAAe,cAAc;AAL1C;AAOA,WAAS,GAAG,YAAY,UAAS,KAAK;AACpC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,YAAY,MAAM,MAAM,EAC5C,MAAM,IAAI;AAEZ,QAAI,OAAO,UAAU,UAAU,cAAc;AAL/C;AAOA,WAAS,GAAG,eAAe,UAAS,KAAK;AACvC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,eAAe,MAAM,MAAM,EAC/C,QAAQ,IAAI;AAEd,QAAI,OAAO,UAAU,UAAU,cAAc;AAL/C;AAOA,WAAS,GAAG,2BAA2B,UAAS,KAAK;AACnD,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,2BAA2B,MAAM;AACrD,cAAQ,IAAI;AACZ,wBAAkB,IAAI;AAFqC;AAI7D,WAAO,cAAc;AANvB;AAQA,WAAS,GAAG,iBAAiB,UAAS,KAAK;AACzC,QAAI,QAAQ,SAAS,YAAY;AACjC,UAAM,gBAAgB,iBAAiB,MAAM,MAAM,EACjD,cAAc,IAAI;AAEpB,QAAI,OAAO,UAAU,cAAc;AALrC;AAzHF;AAkIA,IAAI,iBAAiB;AACrB,SAAS,oBAAoB;AAC3B,MAAI,gBAAgB;AAClB,WAAO;AAFkB;AAI3B,mBAAqB;AACrB,4BAA0B;AAC1B,SAAO;AAGT;QACE;QACA,sC;;;;;;;;;;;;;;;;;AC/HF,IAAM,kBAAkB;AAExB,IAAM;AACJ,WAAS;AACT,WAAS;AACT,UAAQ;AACR,YAMF;AAVwB;;IAUA;AACtB;AAAc;;AACZ,SAAK,YAAY;AACjB,SAAK,qBAAqB;AAC1B,SAAK,SAAS;AACd,SAAK,sBAAsB;AAC3B,SAAK,cAAc;AACnB,SAAK,WAAW;AAChB,SAAK,yBAAyB;AAMhC;;;;8BAAU,WAAW;AACnB,WAAK,YAAY;AAMnB;;;uCAAmB,oBAAoB;AACrC,WAAK,qBAAqB;AAO5B;;;sCAAkB,MAAM;AACtB,aAAO,KAAK,wBAAwB,KAAK;AAM3C;;;0CAAsB,uBAAuB;AAC3C,UAAI,KAAK,aAAa;AACpB,qBAAa,KAAK;AAClB,aAAK,cAAc;AAHsB;AAO3C,UAAI,KAAK,UAAU,eAAe,wBAAwB;AACxD;AARyC;AAW3C,UAAI,KAAK,sBAAsB,KAAK,wBAAwB;AAC1D,YAAI,KAAK,mBAAmB,kBAAkB;AAC5C;AAFwD;AAXjB;AAiB3C,UAAI,KAAK,UAAU;AAEjB;AAnByC;AAsB3C,UAAI,KAAK,QAAQ;AACf,aAAK,cAAc,WAAW,KAAK,OAAO,KAAK,OAAO;AAvBb;AAgC7C;;;uCAAmB,SAAS,OAAO,cAAc;AAU/C,UAAI,eAAe,QAAQ;AAE3B,UAAI,aAAa,aAAa;AAC9B,UAAI,eAAe,GAAG;AACpB,eAAO;AAdsC;AAgB/C,WAAK,IAAI,IAAI,GAAG,IAAI,YAAY,EAAE,GAAG;AACnC,YAAI,OAAO,aAAa,GAAG;AAC3B,YAAI,CAAC,KAAK,eAAe,OAAO;AAC9B,iBAAO;AAH0B;AAhBU;AAwB/C,UAAI,cAAc;AAChB,YAAI,gBAAgB,QAAQ,KAAK;AAEjC,YAAI,MAAM,kBAAkB,CAAC,KAAK,eAAe,MAAM,iBAAiB;AACtE,iBAAO,MAAM;AAJC;AAAlB,aAMO;AACL,YAAI,oBAAoB,QAAQ,MAAM,KAAK;AAC3C,YAAI,MAAM,sBACN,CAAC,KAAK,eAAe,MAAM,qBAAqB;AAClD,iBAAO,MAAM;AAJV;AA9BwC;AAsC/C,aAAO;AAOT;;;mCAAe,MAAM;AACnB,aAAO,KAAK,mBAAmB,gBAAgB;AAUjD;;;+BAAW;AAAM;;AACf,cAAQ,KAAK;AACX,aAAK,gBAAgB;AACnB,iBAAO;AACT,aAAK,gBAAgB;AACnB,eAAK,sBAAsB,KAAK;AAChC,eAAK;AACL;AACF,aAAK,gBAAgB;AACnB,eAAK,sBAAsB,KAAK;AAChC;AACF,aAAK,gBAAgB;AACnB,eAAK,sBAAsB,KAAK;AAChC,cAAI,oBAAoB,6BAAM;AAC5B,kBAAK;AADP;AAGA,eAAK,OAAO,KAAK,mBAAmB;AACpC;;AAEJ,aAAO;AAIX;;;;;;QACE;QACA,sC;;;;;;;;;;;;;;;;AC5JK;;AAKA;;AACoC;;AACQ;;AACX;;AACS;;AACf;;AACH;;AACA;;AACK;;AACE;;AACX;;AACO;;AACP;;AACI;;AACE;;AACG;;AACD;;AACF;;AACT;;AACI;;AAE5B,IAAM,sBAAsB;AAC5B,IAAM,yCAAyC;AAE/C,SAAS,UAAU,OAAO;AACxB,QAAM,qBAAqB;AAGzB,QAAM,YAAY;AAQlB,QAAM,UAAU;AAChB,QAAM,aAAa;AA9DvB;AAkEA,IAAM;AACJ,0DAAuB,MAAM,CADC;AAE9B,kDAAmB,WAAW,CAFA;AAG9B,8BAAS,MAAM,UAAU,CAHK;AAI9B,4CAAgB,MAAM,CAJQ;AAK9B,0DAAwB;AACtB,UAAM,IAAI,MAAM;AANY;AAQ9B,kDAAoB;AAClB,UAAM,IAAI,MAAM;AATY;AAW9B,oCAAa;AACX,UAAM,IAAI,MAAM;AAZY;;AAc9B,0BAAwB;AACxB,yBAAuB;AACvB,0BAAwB;AACxB;AACE,aAAS;AACT,aAAS;AAF0B;AAjBP;AAuBhC,IAAI;AACF,mBAAiB,SAAS,SAAS,KAAK,UAAU;AAClD,sBAAoB;AACpB,eAAa;AACb,YAAU;AACV,aAAW;AACX,eAAa;AACb,kBAAgB;AAChB,gBAAc;AAEd,aAAW;AAEX,sBAAoB;AAEpB,qBAAmB;AAEnB,uBAAqB;AAErB,yBAAuB;AAEvB,kBAAgB;AAEhB,cAAY;AAEZ,cAAY;AAEZ,oBAAkB;AAElB,uBAAqB;AAErB,kBAAgB;AAEhB,SAAO;AAEP,mBAAiB;AAEjB,kBAAgB;AAEhB,eAAa;AAEb,WAAS;AAET,oBAAkB;AAElB,YAAU;AAEV,QAAM;AACN,oBAAkB;AAClB,oBAAkB;AAClB;AACE,uBAAmB,yBAAY;AAC/B,mBAAe;AACf,4BAAwB;AACxB,sBAAkB;AAClB,qBAAiB;AACjB,uBAAmB;AACnB,cAAU;AACV,0BAAsB;AACtB,4BAAwB;AACxB,2BAAuB;AAVZ;AAYb,oBAAmB,OAAO,WAAW;AACrC,OAAK;AACL,WAAS;AACT,oBAAkB;AAClB,gBAAc;AAGd,kCAAW;AAAW;;AACpB,SAAK,cAAc,KAAK,iBAAiB;AAE/B;AACV,SAAK,YAAY;AAEjB,gBAAY,mBAAmB,KAAK,YAAM;AACxC,aAAO,MAAK;AADP,OAEJ,KAAK,YAAM;AACZ,aAAO,MAAK;AAHP,OAIJ,KAAK,YAAM;AAGZ,YAAK;AACL,YAAK;AAGL,UAAI,eAAe,UAAU,gBAAgB,SAAS;AACtD,YAAK,KAAK,UAAU,cAAc,KAAK,YAAM;AAG3C,cAAK,SAAS,SAAS;AAHzB;AAMA,UAAI,MAAK,oBAAoB,CAAC,gBAAM,2BAA2B;AAG7D,wBAAM,qBAAqB,gBAAM,WAAW;AAjBlC;AAoBZ,YAAK,cAAc;AAxBd;AA1EgB;AAyGzB;AACM,QAAE,cAA8B;QAAjB;;AAEnB,mBAAe,iBACD,IAAI,eAAe,KAAK,SAAS,SAAS,OAAO;AAC3D,sBAAM,eAAe,CAAC;AADxB,MADiB,cAIL,IAAI,qBAAqB,KAAK,SAAS,SAAS,OAAO;AACjE,kBAAY,uBAAuB;AADrC,oBAGY,IAAI,iBAAiB,KAAK,SAAS,SAAS,OAAO;AAC7D,kBAAY,mBAAmB;AADjC,oBAGY,IAAI,0BAA0B,KAAK,SAAS,SAAS,OAAO;AACtE,kBAAY,4BAA4B;AAD1C,oBAGY,IAAI,oBAAoB,KAAK,SAAS,SAAS,OAAO;AAChE,kBAAY,sBAAsB;AADpC,oBAGY,IAAI,wBAAwB,KAAK,SAAS,SAAS,OAAO;AACpE,kBAAY,0BAA0B;AADxC,oBAGY,IAAI,oBAAoB,KAAK,SAAS,SAAS,OAAO;AAChE,UAAI,gBAAM,qBAAqB,MAAM;AACnC;AAF8D;AAIhE,sBAAM,mBAAmB;AAJ3B,oBAMY,IAAI,gBAAgB,KAAK,SAAS,SAAS,OAAO;AAC5D,UAAI,gBAAM,iBAAiB,MAAM;AAC/B;AAF0D;AAI5D,sBAAM,eAAe;AAJvB,oBAMY,IAAI,iBAAiB,KAAK,SAAS,SAAS,OAAO;AAC7D,UAAI,gBAAM,kBAAkB,MAAM;AAChC;AAF2D;AAI7D,sBAAM,gBAAgB;AAJxB,oBAMY,IAAI,oBAAoB,KAAK,SAAS,SAAS,OAAO;AAChE,sBAAM,mBAAmB;AAD3B,oBAGY,IAAI,mBAAmB,KAAK,SAAS,SAAS,OAAO;AAC/D,UAAI,gBAAM,oBAAoB,MAAM;AAClC;AAF6D;AAI/D,sBAAM,kBAAkB;AAJ1B,oBAMY,IAAI,kBAAkB,KAAK,SAAS,SAAS,OAAO;AAC9D,sBAAM,iBAAiB;AADzB,oBAGY,IAAI,sBAAsB,KAAK,SAAS,SAAS,OAAO;AAClE,UAAI,gBAAM,2BAA2B;AACnC;AAFgE;AAIlE,sBAAM,qBAAqB;AAJ7B,oBAMY,IAAI,YAAY,KAAK,SAAS,SAAS,OAAO;AACxD,kBAAY,cAAc;AAD5B,oBAGY,IAAI,0BAA0B,KAAK,SAAS,SAAS,OAAO;AACtE,kBAAY,4BAA4B;AAD1C,oBAGY,IAAI,mBAAmB,KAAK,SAAS,SAAS,OAAO;AAC/D,kBAAY,qBAAqB;AADnC,oBAGY,IAAI,qBAAqB,KAAK,SAAS,SAAS,OAAO;AACjE,kBAAY,uBAAuB;AADrC,oBAGY,IAAI,yBAAyB,KAAK,SAAS,SAAS,OAAO;AACrE,kBAAY,2BAA2B;AADzC,OAnEK,EAsEJ,MAAM,UAAS,QAAQ,CAtEnB;AA5GgB;AAqLzB,8CAAkB;AAIhB,QAEK,KAAK,YAAY,kBAAmB;AACvC,UAAI,OAAO,SAAS,SAAS,KAAK,UAAU;AAC5C,UAAI,aAAa,gCAAiB;AAClC,UAAI,YAAY,YAAY;AAC1B,wBAAM,SAAS,WAAW;AAJW;AANzB;AAahB,SAAK,OAAO,KAAK,iBAAiB;AAClC,gBAAY,KAAK,eAAe,KAAM,eAAQ;AAC5C,eAAS,qBAAqB,QAAQ,GAAG,MAAM;AAD1C;AAnMgB;AA2MzB;AAA8B;;AAC5B,QAAI,YAAY,KAAK;AAErB,eAAW,QAAQ,UAAC,SAAS,QAAW;AACtC,aAAK,iBAAqB;AAE1B,UAAI,WAAW,UAAU,YAAY;AACrC,aAAK,WAAW;AAEhB,UAAI,oBAAwB;AAC5B,wBAAkB,SAAS,OAAK,QAAa;AAC7C,aAAK,oBAAoB;AAEzB,UAAI,iBAAqB,qCAAe,EACtC;AAEF,aAAK,iBAAiB;AAEtB,UAAI,kBAAkB,OAAK,iBAAiB;AAC5C,aAAK,kBAAkB;AAEvB,UAAI,YAAY,UAAU;AAC1B,UAAI,SAAS,UAAU;AACvB,aAAK;AACH;AACA;AACA;AACA,wBAAgB;AAChB,qBAAa;AACb;AACA,kBAAU,OAAK,YAAY;AAC3B,cAAM,OAAK;AACX,8BAAsB,OAAK,YAAY;AACvC,gCAAwB,OAAK,YAAY;AACzC,+BAAuB,OAAK,YAAY;AAXX,OAAV;AAarB,wBAAkB,UAAU,OAAK;AACjC,qBAAe,UAAU,OAAK;AAE9B,UAAI,qBAAqB,UAAU,QAAQ;AAC3C,aAAK;AACH,mBAAW;AACX,wBAAgB;AAChB,qBAAa;AACb,cAAM,OAAK;AAJoC,OAAnB;AAM9B,wBAAkB,mBAAmB,OAAK;AAE1C,aAAK;AACH,qBAAa;AACb;AAF+B,OAAX;AAItB,qBAAe,WAAW,OAAK;AAE/B,aAAK,iBAAqB,2CAAkB,EAC1C,WAAW,OAAK;AAElB,aAAK,eAAe,uBAAwB,sBAAe;AACzD,YAAI,OAAK,wBAAwB;AAC/B;AAFuD;AAIzD,eAAK,QAAQ,mBAAmB;AAJlC;AAMA,aAAK,eAAe,gBAAgB,UAAC,OAAO,UAAU,YAAe;AACnE,YAAI,OAAK,wBAAwB;AAC/B,iBAAK,iBAAiB;AACpB,oBAAQ;AACR,0BAAc;AAF6B;AAD/C,eAKO;AACL,iBAAK,QAAQ,cAAc,OAAO,UAAU;AAPqB;AAArE;AAWA,aAAK,UAAU,kBAAkB,OAAK;AAGtC,UAAI,gBAAgB,OAAO,OAAO,UAAU;AAC5C,oBAAc,iBAAiB,OAAK;AACpC,oBAAc,WAAW;AACzB,aAAK,UAAc,6BAAW,eAAe,OAAK;AAElD,aAAK,wBACC,mDAAsB,UAAU,oBACV,OAAK,gBAAgB,OAAK;AAEtD,aAAK;AACH;AACA;AACA,qBAAa,OAAK;AAHqB,OAAf;AAM1B,aAAK,UAAc,qBAAQ,UAAU,SAAS,WAAW,UAC9B,OAAK;AAEhC,aAAK,mBACC,wCAAiB,UAAU,kBAAkB,WAAW;AAE9D,UAAI,OAAK,oBAAoB;AAC3B,eAAK;AACH;AACA;AACA,qBAAW,OAAK;AAChB;AACA,4BAAkB,UAAU;AALqB,SAApB;AAhGK;AAyGtC,aAAK,iBAAqB,oCAAe,UAAU,iBACV,OAAK,gBAAgB,OAAK;AAEnE,aAAK;AACH,mBAAW,UAAU,QAAQ;AAC7B;AACA,qBAAa;AAH8B,OAAjB;AAM5B,aAAK;AACH,mBAAW,UAAU,QAAQ;AAC7B;AACA;AAHiD,OAApB;AAO/B,UAAI,gBAAgB,OAAO,OAAO,UAAU;AAC5C,oBAAc,YAAY,OAAK;AAC/B,oBAAc,qBAAqB,OAAK;AACxC,oBAAc,mBAAmB,OAAK;AACtC,oBAAc,WAAW;AACzB,aAAK,aAAiB,4BAAW,eAAe,OAAK;AACrD,aAAK,WAAW,YAAY,OAAK,eAAoB;AAErD,cAAQ;AAjIH;AA9MgB;AAmVzB,oBAAI,QAAQ;AACV,SAAK,WAAW,QAAQ,KAAK;AApVN;AAuVzB,0BAAO,OAAO;AACZ,QAAI,WAAW,KAAK,UAAU;AAC9B,OAAG;AACD,iBAAY,YAAW,qBAAqB,QAAQ;AACpD,iBAAW,KAAK,KAAK,WAAW,MAAM;AACtC,iBAAW,KAAS,yBAAW;AAHjC,aAIS,EAAE,QAAQ,KAAgB;AACnC,SAAK,UAAU,oBAAoB;AA9VZ;AAiWzB,4BAAQ,OAAO;AACb,QAAI,WAAW,KAAK,UAAU;AAC9B,OAAG;AACD,iBAAY,YAAW,qBAAqB,QAAQ;AACpD,iBAAW,KAAK,MAAM,WAAW,MAAM;AACvC,iBAAW,KAAS,yBAAW;AAHjC,aAIS,EAAE,QAAQ,KAAgB;AACnC,SAAK,UAAU,oBAAoB;AAxWZ;;AA2WzB,MAAI,aAAa;AACf,WAAO,KAAK,cAAc,KAAK,YAAY,WAAW;AA5W/B;AA+WzB,MAAI,eAAe;AACjB,WAAO,KAAK,UAAU;AAhXC;AAmXzB,MAAI,KAAK,KAAK;AACZ,SAAK,UAAU,oBAAoB;AApXZ;AAuXzB,MAAI,OAAO;AACT,WAAO,KAAK,UAAU;AAxXC;AA2XzB,MAAI,WAAW;AACb,WAAO,CAAC,CAAC,KAAK;AA5XS;AA+XzB,MAAI,mBAAmB;AACrB,WAAO,uBAAuB,SAAS;AAhYhB;AAmYzB,MAAI,qBAAqB;AACvB,QAAI;AAKF,QAAI,MAAM,SAAS;AACnB,cAAU,CAAG,MAAI,qBAAqB,IAAI,wBAC7B,IAAI,2BAA2B,IAAI;AAEhD,QAAI,SAAS,sBAAsB,SAC/B,SAAS,yBAAyB,SAClC,SAAS,4BAA4B,SACrC,SAAS,wBAAwB,OAAO;AAC1C,gBAAU;AAdS;AAiBvB,QAAI,WAAW,gBAAM,sBAAsB,MAAM;AAC/C,gBAAU;AAlBW;AAqBvB,WAAO,sBAAO,MAAM,sBAAsB;AAxZnB;AA2ZzB,MAAI,yBAAyB;AAC3B,WAAO,KAAK,iBAAiB;AA5ZN;AA+ZzB,MAAI,wBAAwB;AAC1B,WAAO,KAAK,iBAAiB;AAhaN;AAmazB,MAAI,yBAAyB;AAC3B,WAAO,KAAK,iBAAiB;AApaN;AAuazB,MAAI,aAAa;AACf,QAAI,MAAU,0BAAY;AAC1B,WAAO,sBAAO,MAAM,cAAc;AAzaX;AA4azB,MAAI,sCAAsC;AACxC,WAAO,KAAK,iBAAiB;AA7aN;AAgbzB,oDAAqB;AAGjB,UAAM,IAAI,MAAM;AAnbK;AAsdzB,8CAAiB,KAAK;AACpB,SAAK,MAAM;AACX,SAAK,UAAU,IAAI,MAAM,KAAK;AAC9B,QAAI,QAAQ,qCAAsB,KAAK;AACvC,QAAI,CAAC,OAAO;AACV,UAAI;AACF,gBAAQ,mBAAmB,kCAAmB,SAAS;AADzD,QAEE,OAAO,IAAI;AAGX,gBAAQ;AANA;AAJQ;AAapB,SAAK,SAAS;AAneS;AAsezB,8BAAS,OAAO;AACd,QAAI,KAAK,kBAAkB;AAEzB;AAHY;AAKd,aAAS,QAAQ;AA3eM;AAmfzB,0BAAQ;AACN,QAAI,eAAe,KAAK,UAAU,aAAa;AAC/C,iBAAa,aAAa,UAAU;AAEpC,QAAI,CAAC,KAAK,gBAAgB;AACxB,aAAO,QAAQ;AALX;AAQN,QAAI,UAAU,KAAK,eAAe;AAClC,SAAK,iBAAiB;AAEtB,QAAI,KAAK,aAAa;AACpB,WAAK,cAAc;AAEnB,WAAK,mBAAmB,YAAY;AACpC,WAAK,UAAU,YAAY;AAC3B,WAAK,eAAe,YAAY,MAAM;AACtC,WAAK,sBAAsB,YAAY,MAAM;AAjBzC;AAmBN,SAAK,QAAQ;AACb,SAAK,mBAAmB;AACxB,SAAK,mBAAmB;AAExB,SAAK,WAAW;AAChB,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AAEzB,SAAK,eAAe;AACpB,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,iBAAiB;AAEtB,QAAI,OAAO,WAAW,aAAa;AACjC,aAAO;AAjCH;AAmCN,WAAO;AAthBgB;AAkiBzB,sBAAK,MAAM;AAAM;;AACf,QACK,UAAU,SAAS,KAAK,OAAO,SAAS,UAAW;AACtD,aAAO,QAAQ,OACb,IAAI,MAAM;AAJC;AAMf,QAAI,KAAK,gBAAgB;AAEvB,kBAAY,QAAQ,KAAK,YAAM;AAE7B,eAAK,YAAY;AAEjB,eAAO,OAAK,KAAK,MAAM;AAJlB;AARM;AAgBf,QAAI,aAAa,OAAO,OAAO;QAAO;AACtC,QAAI,OAAO,SAAS,UAAU;AAC5B,WAAK,iBAAiB;AACtB,iBAAW,MAAM;AAFnB,eAGW,QAAQ,gBAAgB,MAAM;AACvC,iBAAW,OAAO;AADb,WAEA,IAAI,KAAK,OAAO,KAAK,aAAa;AACvC,WAAK,iBAAiB,KAAK;AAC3B,iBAAW,MAAM,KAAK;AAxBT;AA+Bf,QAAI,MAAM;AACR,eAAS,QAAQ,MAAM;AACrB,mBAAW,QAAQ,KAAK;AAFlB;AAKR,UAAI,KAAK,OAAO;AACd,gBAAQ,KAAK;AANP;AAQR,UAAI,KAAK,QAAQ;AACf,aAAK,sBAAsB,YAAY,KAAK;AATtC;AA/BK;AA4Cf,QAAI,cAAc,2BAAY;AAC9B,SAAK,iBAAiB;AAEtB,gBAAY,aAAa,UAAC,gBAAgB,QAAW;AACnD,aAAK,eAAe,kBAAkB,gBAAgB;AACtD,aAAK,eAAe;AAFtB;AAKA,gBAAY,aAAc;AAAuB,UAArB;UAAQ;;AAClC,aAAK,SAAS,SAAS;AADzB;AAKA,gBAAY,uBAAuB,KAAK,SAAS,KAAK;AAEtD,uBAAmB,QAAQ,KAAM,uBAAgB;AAC/C,aAAK,KAAK,aAAa;AADlB,OAEH,qBAAc;AAChB,UAAI,UAAU,aAAa,UAAU;AACrC,UAAI;AACJ,UAAyB,oDAAqB;AAE5C,8BAAsB,OAAK,KAAK,IAAI,sBAAsB,MACtB;AAHtC,iBAIgC,oDAAqB;AAEnD,8BAAsB,OAAK,KAAK,IAAI,sBAAsB,MACtB;AAH/B,iBAIyB,4DAA6B;AAC3D,8BAAsB,OAAK,KAAK,IAAI,6BAA6B,MAC7B;AAF/B,aAGA;AACL,8BAAsB,OAAK,KAAK,IAAI,iBAAiB,MACnD;AAhBY;AAmBhB,iCAA2B,KAAM,eAAQ;AACvC,eAAK,MAAM,KAAK,EAAE;AAClB,cAAM,IAAI,MAAM;AAFX;AArBF;AA7lBgB;AAynBzB;AAAW;;AACT,aAAS,gBAAgB;AACvB,sBAAgB,YAAY,KAAK;AAF1B;AAKT,QAAI,MAAM,KAAK;AAGf,QAAI,WAAW,qCAAsB,KAAK;AAC1C,QAAI,kBAAkB,KAAK;AAC3B,oBAAgB,UAAW,eAAQ;AAGjC,aAAY,mCAA0B;AAHxC;AAQA,QAAI,CAAC,KAAK,eAAe,CAAC,KAAK,kBAAkB;AAC/C;AACA;AApBO;AAuBT,SAAK,YAAY,UAAU,KAAK,UAAS,MAAM;AAC7C,UAAI,OAAO,0BAAW,MAAM;AAC5B,sBAAgB,SAAS,MAAM,KAAK;AAFtC,OAGG,MAAM;AAnpBc;AAspBzB,8BAAS,WAAW,CAtpBK;AAkrBzB,wBAAM,SAAS,UAAU;AACvB,QAAI,eAAe,MAAM,KAAK,IAAI;AAC9B,eAAS,qBAAW;AAAK,aAAO,mBAAS;AAA3C,KADkB,EAElB;AACF,QAAI,UAAU;AACZ,mBAAa,KACX,KAAK,KAAK,IAAI,iBAAiB,EAAE,SAAS,SAAS,WACrC;AAChB,UAAI,SAAS,OAAO;AAClB,qBAAa,KACX,KAAK,KAAK,IAAI,eAAe,EAAE,OAAO,SAAS,SACjC;AAHlB,aAIO;AACL,YAAI,SAAS,UAAU;AACrB,uBAAa,KACX,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,SAAS,YAC/B;AAJb;AAML,YAAI,SAAS,YAAY;AACvB,uBAAa,KACX,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,SAAS,cAC/B;AATb;AARK;AAJS;AA4BrB,QAAI,qBAAqB,KAAK,UAAU;AACxC,QAAI,eAAe,mBAAmB;AACtC,iBAAa,gBAAgB;AAE7B,QAAI,eAAe,mBAAmB;AACtC,iBAAa,cAAc;AAE3B,QAAI,cAAc,mBAAmB;AACrC,gBAAY,UAAU,YAAW;AAC/B,mBAAa,aAAa,UAAU;AADtC;AAIA,QAAI,gBAAgB,mBAAmB;AACvC,QAAI,iBAAiB,mBAAmB;AACxC,QAAI,iBAAiB,mBAAmB;AACxC,mBAAe,UAAU,YAAW;AAClC,oBAAc,gBAAgB;AAC9B,qBAAe,aAAa,UAAU;AACtC,qBAAe,gBAAgB;AAC/B,oBAAc,MAAM,SAAS,cAAc,eAAe;AAJ5D;AAMA,mBAAe,UAAU,YAAW;AAClC,oBAAc,aAAa,UAAU;AACrC,qBAAe,gBAAgB;AAC/B,qBAAe,aAAa,UAAU;AAHxC;AAKA,mBAA+B;AAC/B,mBAA+B;AAC/B,gBAA4B;AAC5B,mBAAe,gBAAgB;AAC/B,mBAAe,aAAa,UAAU;AACtC,YAAQ,IAAI,cAAc,KAAM,iBAAU;AACxC,oBAAc,QAAQ,MAAM,KAAK;AADnC;AA7uBqB;AAsvBzB,8BAAS;AAAO;;AACd,QAAI,KAAK,kBAAkB;AAGzB;AAJY;AAMd,QAAI,UAAU,KAAK,MAAM,QAAQ;AAKjC,QAAI,UAAU,KAAK,WAAW,WAAW,MAAM,UAAU;AACvD,WAAK,WAAW,UAAU;AAO1B,UAAI,gBAAM,oBAAoB,SAAS;AACrC,YAAI,KAAK,mCAAmC;AAC1C,uBAAa,KAAK;AAClB,eAAK,oCAAoC;AAHN;AAKrC,aAAK,WAAW;AAEhB,aAAK,+CAA+C,YAAM;AACxD,iBAAK,WAAW;AAChB,iBAAK,oCAAoC;AAFF,WAGtC;AAlBkD;AAX3C;AAtvBS;AAwxBzB,sBAAK,aAAa;AAAO;;AACvB,YAAiB;AACjB,SAAK,cAAc;AAEnB,gBAAY,kBAAkB,KAAK,YAAM;AACvC,aAAK,mBAAmB;AACxB,aAAK,WAAW;AAEhB,uBAAiB,KAAK,YAAM;AAC1B,eAAK,SAAS,SAAS,gBAAgB,EAAU;AADnD;AAJF;AAWA,QAAI,kBAAkB,YAAY,cAAc,MAC9C,YAAW,CADS;AAGtB,SAAK,QAAQ,cAAc,YAAY,UAAU;AACjD,SAAK,iBAAiB,cAAc,YAAY;AAEhD,QAAI,KAAK,KAAK,sBAAsB,YAAY;AAChD,QAAI,QAAQ,KAAK,QAAY,8BAAY;AAEzC,QAAI;AAEF,sBAAkB;AAMpB,SAAK,eAAe,YAAY,aAAa;AAC7C,SAAK,sBAAsB,YAAY,aAAa,KAAK;AAEzD,QAAI,YAAY,KAAK;AACrB,cAAU,YAAY;AACtB,QAAI,mBAAmB,UAAU;AACjC,QAAI,eAAe,UAAU;AAC7B,QAAI,kBAAkB,UAAU;AAEhC,QAAI,qBAAqB,KAAK;AAC9B,uBAAmB,YAAY;AAE/B,qBAAiB,KAAM,mBAAY;AACjC,aAAK,WAAW,SAAS,OAAK,UAAU;AAExC,UAAI,CAAC,gBAAM,kBAAkB,CAAC,OAAK,kBAAkB;AAGnD,YAAI,CAAC,OAAK,YAAY,2BAA2B;AAC/C,iBAAK,WAAW;AAJiC;AAMnD,eAAK,WAAW,WAAW,OAAK;AAEhC,YAAI,OAAK,WAAW,oBAAoB;AACtC,iBAAK,qBAAqB,OAAK,WAAW;AAD5C,eAEO,IAAI,OAAK,WAAW,iBAAiB;AAC1C,iBAAK,kBAAkB,OAAK,WAAW;AAXU;AAHpB;AAkBjC,UAAI;AACF,qBAAa,OAAK;AAClB,kBAAU,OAAK;AACf,cAAM;AAHY;AAKpB,UAAI,qBAAqB;AACvB,gBAAQ;AACR,cAAM;AACA;AACN,oBAAY;AACZ,mBAAW;AACX,qBAAa,yBAAY;AANU,OAAlB,EAOhB,MAAM,YAAM,CAPI;AASnB,cAAQ,IAAI,CAAC,cAAc,kBAAkB,KACxC;AAA4B;;YAA3B,gCAAS;YAAI;;AAEjB,YAAI,OAAO,OAAK,YAAY,sBACzB,UAAU,OAAK,YAAY,sBAAuB;AACrD,YAAI,cAAc,OAAK,YAAY;AAEnC,YAAI,OAAO,UAAU,OAAK,YAAY,2BAA2B;AAC/D,iBAAO,UAAU,OAAO,OACV,mBAAK,YAAY,uBAAuB,OAAO,QAC3D,MAAM,OAAO,aAAa,MAAM,OAAO;AACzC,wBAAc,eAAgB,OAAO,cAAc;AAVtB;AAY/B,YAAI,YAAY,CAAC,OAAK,YAAY,oBAAoB;AAEpD,wBAAc,eAAe,yBAAyB;AAdzB;AAgB/B;AACE;AACA;AAFK;AAjBT,SAqBG,KAAM;AAA2B,YAAzB;YAAM;;AACf,eAAK,eAAe;AAAQ;AAAa;AAAf;AAC1B,sBAAc,OAAO;AAIrB,YAAI,CAAC,OAAK,kBAAkB;AAC1B,oBAAU;AAPsB;AASlC,eAAO;AA9BT,SA+BG,KAAK,YAAM;AAGZ,YAAI,CAAC,cAAc,eAAe,CAAC,cAAc,YAC7C,CAAC,cAAc,MAAM;AACvB;AALU;AAOZ,YAAI,UAAU,mBAAmB;AAC/B;AARU;AAUZ,eAAK,qBAAqB,cAAc;AACxC,eAAK,kBAAkB,cAAc;AAErC,kBAAU,oBAAoB,UAAU;AACxC,eAAK,eAAe,cAAc;AA7CpC,SA8CG,KAAK,YAAW;AAKjB,kBAAU;AAnDZ;AAhCF;AAuFA,gBAAY,gBAAgB,KAAM,kBAAW;AAC3C,UAAI,CAAC,UAAU,OAAK,YAAY,sBAAsB;AACpD;AAFyC;AAI3C,UAAI,IAAI;UAAG,YAAY,OAAO;AAC9B,UAAI,cAAc,OAAK,YAAY;AACjC,gBAAQ,MAAM,8CACA;AACd;AARyC;AAW3C,aAAO,IAAI,aAAa,OAAO,OAAQ,KAAI,GAAG,YAAY;AACxD;AAZyC;AAc3C,UAAI,MAAM,WAAW;AACnB;AAfyC;AAkB3C,gBAAU,cAAc;AACxB,yBAAmB,cAAc;AAIjC,aAAK,QAAQ,cAAc,YAAY,UAAU;AACjD,aAAK,QAAQ,cAAc,UAAU,mBACV,UAAU;AAzBvC;AA4BA,iBAAa,KAAK,YAAM;AACtB,UAAI,CAAC,OAAK,kBAAkB;AAC1B;AAFoB;AAItB,kBAAY,gBAAgB,KAAM,sBAAe;AAC/C,YAAI,WAAW,QAAQ;AACrB,kBAAQ,KAAK;AACb,iBAAK,SAAS,+BAAqB;AAHU;AAM/C,YAAI,QAAQ;AACZ,aAAK,IAAI,IAAI,GAAG,KAAK,WAAW,QAAQ,IAAI,IAAI,KAAK;AACnD,cAAI,KAAK,WAAW;AACpB,cAAI,MAAM,MAAM,KAAK,KAAK;AACxB,uBAAW,YAAW;AACpB,qBAAO;AADT;AAGA;AANiD;AAPN;AAAjD;AAJF;AAuBA,YAAQ,IAAI,CAAkB,8CAAmB,KAAK,YAAM;AAC1D,kBAAY,aAAa,KAAM,mBAAY;AACzC,eAAK,iBAAiB,OAAO,EAAE;AADjC;AAGA,kBAAY,iBAAiB,KAAM,uBAAgB;AACjD,eAAK,oBAAoB,OAAO,EAAE;AADpC;AAJF;AASA,gBAAY,cAAc,KAAM;AAAwB,UAAtB;UAAM;;AACtC,aAAK,eAAe;AACpB,aAAK,WAAW;AAGhB,cAAQ,IAAI,SAAS,YAAY,cAAc,OACnC,KAAK,mBAAmB,MAAO,MAAK,YAAY,KAAK,SACrD,QAAS,MAAK,WAAW,KAAK,SAAS,MACvB,qCACf,SAAC,gBAAM,eAAe,aAAa,MAAM;AAEtD,UAAI;AACJ,UAAI,YAAY,SAAS,IAAI,aAAa;AACxC,YAAI,QAAQ,SAAS,IAAI;AAEzB,YAAI,UAAU,YAAY;AACxB,qBAAW;AAJ2B;AAZY;AAoBtD,UAAI,CAAC,YAAY,QAAQ,KAAK,UAAU;AACtC,mBAAW,KAAK;AArBoC;AAwBtD,UAAI,UAAU;AACZ,eAAK,SAAS,WAAW,QAAQ,SAAS;AAzBU;AA4BtD,UAAI,KAAK,mBAAmB;AAC1B,gBAAQ,KAAK;AACb,eAAK,SAAS,+BAAqB;AA9BiB;AAAxD;AAv9BuB;AAwhCzB,0CAAe;AACT,QADqB,8EAAU;yBACkB;QAA/C,uCAAQ;;QAAG,mDAAc,yBAAY;;AAE3C,SAAK,mBAAmB;AACxB,SAAK,WAAW,eAAe;AAE/B,QAAI,KAAK,oBAAoB;AAC3B,WAAK,eAAe,WAAW,KAAK;AACpC,WAAK,qBAAqB;AAF5B,eAGW,KAAK,iBAAiB;AAC/B,WAAK,eAAe,QAAQ,KAAK;AACjC,WAAK,WAAW,KAAK,EAAE,MAAM,KAAK,mBAAoB;AACtD,WAAK,kBAAkB;AAHlB,eAII,YAAY;AACrB,WAAK,eAAe,QAAQ;AADvB,WAEA,IAAI,OAAO;AAChB,WAAK,UAAU,oBAAoB;AACnC,WAAK,OAAO;AAjByB;AAsBvC,SAAK,QAAQ,cAAc,KAAK,UAAU,mBACf,KAAK,UAAU;AAC1C,SAAK,iBAAiB,cAAc,KAAK,UAAU;AAEnD,QAAI,CAAC,KAAK,UAAU,mBAAmB;AAGrC,WAAK,UAA8B;AA7BE;AAxhChB;AAyjCzB,8BAAU;AACR,QAAI,CAAC,KAAK,aAAa;AACrB;AAFM;AAIR,SAAK,UAAU;AACf,SAAK,mBAAmB;AAGxB,QAAI,KAAK,UAAU,aAAa,uBAAa,KAAK;AAChD,WAAK,YAAY;AATX;AAzjCe;AAskCzB,4CAAiB;AACf,SAAK,kBAAkB,WAAW,KAAK;AACvC,SAAK,kBAAkB,yBACrB,KAAK,WAAW;AAClB,SAAK,kBAAkB;AA1kCA;AA6kCzB;AAAc;;AACZ,QAAI,KAAK,cAAc;AAIrB;AALU;AAQZ,QAAI,CAAC,KAAK,kBAAkB;AAC1B,WAAK,KAAK,IAAI,0BAA0B,MAC1B,iDACA,iBAAiB,KAAM,wBAAiB;AACpD,eAAK,MAAM;AAHb;AAKA;AAdU;AAmBZ,QAAI,CAAC,KAAK,UAAU,gBAAgB;AAClC,WAAK,KAAK,IAAI,sBAAsB,MACtB,sDACV,KAAM,2BAAoB;AAC5B,eAAO,MAAM;AAHf;AAKA;AAzBU;AA4BZ,QAAI,gBAAgB,KAAK,UAAU;AACnC,QAAI,iBAAiB,KAAK,UAAU;AACpC,QAAI,eAAe,uBAAuB,SAAS,mBACjD,KAAK,aAAa,eAAe,gBAAgB,KAAK;AACxD,SAAK,eAAe;AACpB,SAAK;AAEL,iBAAa;AAhnCU;;AA0nCzB,cAAY,SAAS,yBAAyB;AAC5C,QAAI,KAAK,cAAc;AACrB,WAAK,aAAa;AAClB,WAAK,eAAe;AAHsB;AAK5C,SAAK;AA/nCkB;AAkoCzB,oCAAY;AACV,QAAI,CAAC,KAAK,aAAa;AACrB;AAEE;AAJa,QAIX,YAAmC;QAAxB;;AACjB,QAAI,aAAa,UAAU;AAC3B,QAAI,cAAe,WAAU,gBAAgB,MAAM,SAAS;AAE5D,cAAU,gBAAgB;AAC1B,uBAAmB,gBAAgB;AAEnC,SAAK;AAEL,cAAU,oBAAoB;AA/oCP;AAkpCzB,8DAA0B;AACxB,QAAI,CAAC,KAAK,qBAAqB;AAC7B;AAFsB;AAIxB,SAAK,oBAAoB;AAtpCF;AAypCzB;AACM,QAAE,WAA4B;QAAlB;;AAEhB,iBAAa,cAAc,KAAK,YAAY,KAAK;AACjD,iBAAa,aAAa,KAAK,WAAW,KAAK;AAE/C,aAAS,GAAG,UAAU;AACtB,aAAS,GAAG,cAAc;AAC1B,aAAS,GAAG,eAAe,aAAa;AACxC,aAAS,GAAG,cAAc,aAAa;AACvC,aAAS,GAAG,gBAAgB;AAC5B,aAAS,GAAG,qBAAqB;AACjC,aAAS,GAAG,kBAAkB;AAC9B,aAAS,GAAG,gBAAgB;AAC5B,aAAS,GAAG,iBAAiB;AAC7B,aAAS,GAAG,sBAAsB;AAClC,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,eAAe;AAC3B,aAAS,GAAG,2BAA2B;AACvC,aAAS,GAAG,oBAAoB;AAChC,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,SAAS;AACrB,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,aAAa;AACzB,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,gBAAgB;AAC5B,aAAS,GAAG,UAAU;AACtB,aAAS,GAAG,WAAW;AACvB,aAAS,GAAG,qBAAqB;AACjC,aAAS,GAAG,gBAAgB;AAC5B,aAAS,GAAG,YAAY;AACxB,aAAS,GAAG,aAAa;AACzB,aAAS,GAAG,sBAAsB;AAClC,aAAS,GAAG,QAAQ;AACpB,aAAS,GAAG,mBAAmB;AAE7B,aAAS,GAAG,mBAAmB;AA9rCV;AAksCzB;AACM,QAAE,WAA4B;QAAlB;;AAEhB,iBAAa,eAAe,YAAM;AAChC,eAAS,SAAS;AADpB;AAGA,iBAAa,mBAAmB,YAAM;AACpC,eAAS,SAAS,cAAc,EAC9B,MAAM,SAAS,SAAS,KAAK,UAAU;AAF3C;AAKA,iBAAa,oBAAoB,YAAM;AACrC,eAAS,SAAS;AADpB;AAGA,iBAAa,mBAAmB,YAAM;AACpC,eAAS,SAAS;AADpB;AAIA,WAAO,iBAAiB,SAAS;AACjC,WAAO,iBAAiB,SAAS;AACjC,WAAO,iBAAiB,WAAW;AACnC,WAAO,iBAAiB,UAAU,aAAa;AAC/C,WAAO,iBAAiB,cAAc,aAAa;AACnD,WAAO,iBAAiB,eAAe,aAAa;AACpD,WAAO,iBAAiB,cAAc,aAAa;AAEjD,iBAAa,eAAgB,eAAQ;AACnC,UAAI,QAAQ,IAAI,OAAO;AACvB,UAAI,CAAC,SAAS,MAAM,WAAW,GAAG;AAChC;AAHiC;AAKnC,eAAS,SAAS,mBAAmB,EACnC,WAAW,IAAI;AANnB;AASA,WAAO,iBAAiB,UAAU,aAAa;AAruC1B;AAyuCzB;AACM,QAAE,WAA4B;QAAlB;;AAEhB,aAAS,IAAI,UAAU;AACvB,aAAS,IAAI,cAAc;AAC3B,aAAS,IAAI,eAAe,aAAa;AACzC,aAAS,IAAI,cAAc,aAAa;AACxC,aAAS,IAAI,gBAAgB;AAC7B,aAAS,IAAI,qBAAqB;AAClC,aAAS,IAAI,kBAAkB;AAC/B,aAAS,IAAI,gBAAgB;AAC7B,aAAS,IAAI,iBAAiB;AAC9B,aAAS,IAAI,sBAAsB;AACnC,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,eAAe;AAC5B,aAAS,IAAI,2BAA2B;AACxC,aAAS,IAAI,oBAAoB;AACjC,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,SAAS;AACtB,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,aAAa;AAC1B,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,gBAAgB;AAC7B,aAAS,IAAI,UAAU;AACvB,aAAS,IAAI,WAAW;AACxB,aAAS,IAAI,qBAAqB;AAClC,aAAS,IAAI,gBAAgB;AAC7B,aAAS,IAAI,YAAY;AACzB,aAAS,IAAI,aAAa;AAC1B,aAAS,IAAI,sBAAsB;AACnC,aAAS,IAAI,QAAQ;AACrB,aAAS,IAAI,mBAAmB;AAE9B,aAAS,IAAI,mBAAmB;AAGlC,iBAAa,cAAc;AAC3B,iBAAa,aAAa;AA/wCH;AAkxCzB;AACM,QAAE,eAAkB;;AAExB,WAAO,oBAAoB,SAAS;AACpC,WAAO,oBAAoB,SAAS;AACpC,WAAO,oBAAoB,WAAW;AACtC,WAAO,oBAAoB,UAAU,aAAa;AAClD,WAAO,oBAAoB,cAAc,aAAa;AACtD,WAAO,oBAAoB,eAAe,aAAa;AACvD,WAAO,oBAAoB,cAAc,aAAa;AAEpD,WAAO,oBAAoB,UAAU,aAAa;AAClD,iBAAa,eAAe;AAG9B,iBAAa,eAAe;AAC5B,iBAAa,mBAAmB;AAChC,iBAAa,oBAAoB;AACjC,iBAAa,mBAAmB;AApyCT;AAAA;AAwyC3B,IAAI;AAC6D;AAC/D,MAAM,wBAAwB,CAAC,QAC7B,4BAA4B;AAC9B,oBAAkB,SAAS,gBAAgB,MAAM;AAC/C,QAAI,SAAS,WAAW;AACtB;AAF6C;AAI/C,QAAI;AACF,UAAI,eAAe,IAAI,IAAI,OAAO,SAAS,MAAM,UAAU;AAC3D,UAAI,sBAAsB,QAAQ,iBAAiB,GAAG;AAEpD;AAJA;AAMF,UAAI,aAAa,IAAI,IAAI,MAAM,OAAO,SAAS,MAAM;AAIrD,UAAI,eAAe,cAAc;AAC/B,cAAM,IAAI,MAAM;AAXhB;AAAJ,MAaE,OAAO,IAAI;AACX,UAAI,UAAU,MAAM,GAAG;AACvB,2BAAqB,KAAK,IAAI,iBAAiB,MAC3C,4CACA,KAAM,+BAAwB;AAChC,6BAAqB,MAAM,qBAAqB,EAAE;AAHpD;AAKA,YAAM;AAxBuC;AAAjD;AAr4CF;AAk6CA,SAAS,oBAAoB,aAAa;AACxC,aAAW,QAAQ,UAAU,SAAS,QAAQ;AAC5C,QAAI,YAAY,qBAAqB;AACrC,QAAI,SAAS,SAAS,cAAc;AACpC,WAAO,MAAM,UAAU;AACvB,WAAO,SAAS,YAAY;AAC1B,aAAO,OAAO;AACd,aAAO;AACL;AACA;AAFU,SAGT,UAAU;AACb;AANF;AAQA,WAAO,UAAU,YAAY;AAC3B,aAAO,IAAI,MAAM,6BAA6B,OAAO;AADvD;AAGC,cAAS,qBAAqB,QAAQ,MAAM,SAAS,MACpD,YAAY;AAhBT;AAn6CT;AAu7CA,SAAS,uBAAuB;AAC9B,MAAI,YAAY,qBAAqB;AACrC,MAAI;AAEF,MAAI,cAAc,SAAS,SAAS,OAAO,UAAU;AACrD,MAAI,SAAS,gCAAiB;AAC9B,SAAO,UAAU,SAAS,OAAO,OAAO,UAAU;AAClD,kBAAgB;AAOlB,MAAI,uBAAuB;AAEzB,MAAI,YAAY,SAAS,cAAc;AACvC,YAAU,KAAK,UAAU;AACzB,YAAU,YAAY;AACtB,YAAU,aAAa,QAAQ;AAC/B,YAA0B;AAC1B,WAAS,KAAK,YAAY;AAE1B,MAAI,CAAC,OAAO,QAAQ,CAAC,OAAO,cACxB,CAAC,OAAO,YAAY,CAAC,OAAO,MAAM;AACpC,cAAU,QAAQ,SAAS,aAAa,UAAU;AAClD,cAAU,iBAAiB,eAAe,aAAa,UAAU;AAHnE,SAIO;AACL,cAAU,QAAQ;AA5BQ;AAmC9B,MACI,qBAAqB,YAAY,kBAAkB;AAErD,QAAI,OAAO,SAAS,SAAS,KAAK,UAAU;AAC5C,QAAI,aAAa,gCAAiB;AAElC,QAAI,mBAAmB,YAAY;AACjC,sBAAM,gBAAiB,WAAW,qBAAqB;AANJ;AAQrD,QAAI,kBAAkB,YAAY;AAChC,sBAAM,eAAgB,WAAW,oBAAoB;AATF;AAWrD,QAAI,mBAAmB,YAAY;AACjC,sBAAM,gBAAiB,WAAW,qBAAqB;AAZJ;AAcrD,QAAI,sBAAsB,YAAY;AACpC,sBAAM,mBAAoB,WAAW,wBAAwB;AAfV;AAiBrD,QAAI,qBAAqB,YAAY;AACnC,sBAAM,kBAAmB,WAAW,uBAAuB;AAlBR;AAoBrD,QAAI,oBAAoB,YAAY;AAClC,sBAAM,iBAAkB,WAAW,sBAAsB;AArBN;AAuBrD,QAAI,WAAW,YAAY;AACzB,sBAAM,eAAgB,WAAW,aAAa;AAxBK;AA0BrD,QAAI,oBAAoB,YAAY;AAClC,sBAAM,iBAAkB,WAAW,sBAAsB;AA3BN;AA6BrD,QAAI,eAAe,YAAY;AAC7B,sBAAM,YAAY,WAAW,eAAe;AA9BO;AAgCrD,QAAI,iCAAiC,YAAY;AAC/C,sBAAM,8BACH,WAAW,mCAAmC;AAlCE;AA0CrD,QAAI,eAAe,YAAY;AAC7B,cAAQ,WAAW;AACjB,aAAK;AACH,0BAAM,mBAAmB;AACzB;AACF,aAAK;AACL,aAAK;AACL,aAAK;AACH,cAAI,SAAS,UAAU;AACvB,iBAAO,UAAU,IAAI,eAAe,WAAW;AAC/C;;AApD+C;AAuDrD,QAAI,YAAY,YAAY;AAC1B,sBAAM,SAAS;AACf,UAAI,SAAS,WAAW;AACxB,UAAI,UAAU,OAAO,MAAM;AAC3B,2BAAqB,KAAK,oBAAoB;AA3DK;AApCzB;AA8G9B,MAAI,CAAC,qBAAqB,kBAAkB;AAC1C,cAAU,QAAQ,MAAM,UAAU,IAAI;AACtC,cAAU,iBAAiB,YAAY,UAAU,IAAI;AAhHzB;AAmH9B,MAAI,CAAC,qBAAqB,oBAAoB;AAC5C,cAAU,QAAQ,uBAAuB,UAAU,IAAI;AACvD,cAAU,iBAAiB,uBAAuB,UAAU,IAAI;AArHpC;AAwH9B,MAAI,qBAAqB,wBAAwB;AAC/C,cAAU,QAAQ,SAAS,UAAU,IAAI;AAzHb;AA4H9B,YAAU,QAAQ,cAAc,iBAAiB,iBAC/C,UAAS,KAAK;AACZ,QAAI,IAAI,WAA+B,MAAM;AAC3C,2BAAqB,SAAS,SAAS;AAF7B;AADhB,KAKK;AAEL,YAAU,QAAQ,aAAa,iBAAiB,SAAS,YAAW;AAClE,yBAAqB,WAAW;AADlC;AAIA,UAAQ,IAAI,sBAAsB,KAAK,YAAY;AACjD,4BAAwB;AAD1B,KAEG,MAAM,UAAU,QAAQ;AACzB,yBAAqB,KAAK,IAAI,iBAAiB,MAC3C,oCAAoC,KAAM,eAAQ;AACpD,2BAAqB,MAAM,KAAK;AAFlC;AAHF;AA9jDF;AAwkDA,IAAI;AAC6D;AAC/D,4BAA0B,SAAS,wBAAwB,MAAM;AAC/D,QAAI,QAAQ,KAAK,YAAY,SAAS,OAAO,GAAG;AAI9C,2BAAqB,iBAAiB;AACtC,UAAI,MAAM,IAAI;AACd,UAAI,SAAS,YAAW;AACtB,6BAAqB,KAAK,IAAI,WAAW,IAAI;AAD/C;AAGA,UAAI;AACF,YAAI,KAAK,OAAO;AAChB,YAAI,eAAe;AACnB,YAAI;AAHN,QAIE,OAAO,IAAI;AACX,6BAAqB,KAAK,IAAI,iBAAiB,MAC3C,4CAA4C,KAAM,eAAQ;AAC5D,+BAAqB,MAAM,KAAK;AAFlC;AAd4C;AAmB9C;AApB6D;AAuB/D,QAAI,MAAM;AACR,2BAAqB,KAAK;AAxBmC;AAAjE;AA1kDF;AAknDA,SAAS,sBAAsB,KAAK;AAClC,MAAI,aAAa,IAAI;AACrB,MAAI,YAAY,aAAa;AAC7B,MAAI,WAAW,qBAAqB,UAAU,YAAY;AAI1D,MAAI,eAAe,qBAAqB,MAAM;AAC5C,yBAAqB,QAAQ,4BAA4B;AARzB;AAalC,MAAI,CAAC,UAAU;AACb;AAdgC;AAkBlC,MAAI,qBAAqB,WAAW,wBAAwB;AAC1D,QAAI,gBAAgB,qBAAqB,mBACrB,aAAa;AACjC,kBAAc,SAAS;AArBS;AAwBlC,MAAI,gBAAM,UAAU,MAAM,WAAW,SAAS,OAAO;AACnD,UAAM,IAAI,YAAY,SAAS;AAzBC;AA4BlC,MAAI,SAAS,OAAO;AAClB,yBAAqB,KAAK,IAAI,mBAAmB,MAC7C,+CAA+C,KAAM,eAAQ;AAC/D,2BAAqB,MAAM,KAAK,SAAS;AAF3C;AA7BgC;AAlnDpC;AAoqDA,SAAS,2BAA2B,KAAK,CApqDzC;AAmrDA,SAAS,kBAAkB,KAAK;AAE9B,MAAI,OAAO,IAAI;MAAM;AACrB,UAAQ;AACN,SAAK;AACH,aAAO,yBAAY;AACnB;AACF,SAAK;AACL,SAAK;AACH,aAAO,yBAAY;AACnB;AACF,SAAK;AACH,aAAO,yBAAY;AACnB;AACF,SAAK;AACH,aAAO,yBAAY;AACnB;AACF;AACE,cAAQ,MAAM,wCAAwC;AACtD;;AAEJ,uBAAqB,WAAW,WAAW,MAAwB;AAxsDrE;AA2sDA,SAAS,qBAAqB,KAAK;AAGjC,MAAI,SAAS,IAAI;AACjB,UAAQ;AACN,SAAK;AACH,2BAAqB,UAAU,QAAQ,WAAW;AAClD;AAEF,SAAK;AACH,UAAI,CAAC,qBAAqB,wBAAwB;AAChD,6BAAqB,QAAQ;AAFjC;AAIE;;AAxtDN;AA4tDA,SAAS,iCAAiC;AACpC,MAAE,SAA8B;MAAtB;;AACd,uBAAqB,UAAU,wBAC7B,mBAAmB,kCAAsB,WACzC,SAAS,kCAAsB,aAAa,kCAAsB;AAhuDtE;AAmuDA,SAAS,4BAA4B,KAAK;AACxC,uBAAqB,kBAAkB,yBACrC,qBAAqB,WAAW;AAElC,MAAI,QAAQ,qBAAqB;AACjC,MAAI,SAAS,qBAAqB,kBAAkB;AAElD,UAAM,IAAI,eAAe,IAAI,MAAM,MAAM,YAAW,CAApD;AAPsC;AAnuD1C;AA8uDA,SAAS,wBAAwB,KAAK;AACpC,MAAI,WAAW,IAAI;MAAU,QAAQ,qBAAqB;AAE1D,MAAI,SAAS,qBAAqB,kBAAkB;AAClD,UAAM;AACJ,gBAAU;AACV,cAAQ,SAAS;AACjB,cAAQ,SAAS;AACjB,oBAAc,SAAS;AACvB,mBAAa,SAAS;AALN,OAMf,MAAM,YAAW,CANpB;AAJkC;AAYpC,MAAI,OACF,qBAAqB,eAAe,aAAa,SAAS;AAC5D,uBAAqB,UAAU,QAAQ,aAAa,OAAO;AAC3D,uBAAqB,UAAU,iBAAiB,mBAAmB,OACjE;AAGF,uBAAqB,WAAW,sBAAsB,SAAS,eACT,SAAS;AAG/D,MAAI,cACF,qBAAqB,UAAU,YAAY,qBAAqB,OAAO;AACzE,MAAI,UAAU,YAAY,mBAAmB,qCAAgB;AAC7D,uBAAqB,QAAQ,4BAA4B;AAxwD3D;AA2wDA,SAAS;AACH,MAAE;MAAa,YAAe;;AAClC,MAAI,CAAC,aAAa;AAChB;AAHuB;AAKzB,MAAI,oBAAoB,UAAU;AAClC,MAAI,sBAAsB,UACtB,sBAAsB,cACtB,sBAAsB,cAAc;AAEtC,cAAU,oBAAoB;AAVP;AAYzB,YAAU;AAvxDZ;AA0xDA,SAAS,oBAAoB,KAAK;AAChC,MAAI,qBAAqB,WAAW,sBAAsB;AACxD,QAAI,OAAO,IAAI;AACf,QAAI,CAAC,MAAM;AACT;AAHsD;AAKxD,QAAI,CAAC,qBAAqB,kBAAkB;AAC1C,2BAAqB,kBAAkB;AADzC,WAEO;AACL,2BAAqB,eAAe,QAAQ;AARU;AAD1B;AA1xDlC;AAwyDA,IAAI;AAC6D;AAC/D,6BAA2B,SAAS,yBAAyB,KAAK;AAChE,QAAI,OAAO,IAAI,UAAU,MAAM;AAE/B,QAAI,CAAC,gBAAM,0BAA0B,IAAI,iBAAiB;AACxD,2BAAqB,KAAK,IAAI,gBAAgB;AADhD,WAEO;AAEL,UAAI,aAAa,IAAI;AACrB,iBAAW,SAAS,SAAS,gCAAgC,KAAK;AAChE,YAAI,SAAS,IAAI,OAAO;AACxB,6BAAqB,KAAK,IAAI,WAAW;AAF3C;AAIA,iBAAW,kBAAkB;AAZiC;AAehE,yBAAqB,iBAAiB,KAAK;AAG3C,QAAI,YAAY,qBAAqB;AACrC,cAAU,QAAQ,aAAa,aAAa,UAAU;AACtD,cAAU,iBAAiB,mBAAmB,aAAa,UACA;AAC3D,cAAU,QAAQ,SAAS,aAAa,UAAU;AAClD,cAAU,iBAAiB,eAAe,aAAa,UAAU;AAvBnE;AA1yDF;AAq0DA,SAAS,4BAA4B;AACnC,uBAAqB;AAt0DvB;AAw0DA,SAAS,oBAAoB;AAC3B,MAAI,oBAAoB,qBAAqB,UAAU;AACvD,WAAS,eAAe,mBAAmB;AA10D7C;AA40DA,SAAS,iBAAiB;AACxB,SAAO;AA70DT;AA+0DA,SAAS,oBAAoB;AAC3B,uBAAqB;AAh1DvB;AAk1DA,SAAS,qBAAqB;AAC5B,MAAI,qBAAqB,aAAa;AACpC,yBAAqB,OAAO;AAFF;AAl1D9B;AAu1DA,SAAS,oBAAoB;AAC3B,MAAI,qBAAqB,aAAa;AACpC,yBAAqB,OAAO,qBAAqB;AAFxB;AAv1D7B;AA41DA,SAAS,oBAAoB;AAC3B,uBAAqB;AA71DvB;AA+1DA,SAAS,wBAAwB;AAC/B,uBAAqB;AAh2DvB;AAk2DA,SAAS,kBAAkB;AACzB,uBAAqB;AAn2DvB;AAq2DA,SAAS,mBAAmB;AAC1B,uBAAqB;AAt2DvB;AAw2DA,SAAS,2BAA2B,KAAK;AACvC,MAAI,YAAY,qBAAqB;AACrC,YAAU,mBAAmB,IAAI;AAIjC,MAAI,IAAI,UAAU,UAAU,kBAAkB,cAC1C,IAAI,UAAU,UAAU,kBAAkB;AAC5C,yBAAqB,QAAQ,cAC3B,UAAU,mBAAmB,UAAU;AATJ;AAx2DzC;AAo3DA,SAAS,sBAAsB,KAAK;AAClC,uBAAqB,UAAU,oBAAoB,IAAI;AAr3DzD;AAu3DA,SAAS,oBAAoB;AAC3B,uBAAqB,YAAY;AAx3DnC;AA03DA,SAAS,qBAAqB;AAC5B,uBAAqB,YAAY,CAAC;AA33DpC;AA63DA,SAAS,8BAA8B;AACrC,uBAAqB,sBAAsB;AA93D7C;AAi4DA,SAAS,cAAc,KAAK;AAC1B,uBAAqB,eAAe,eAAe,SAAS,IAAI;AAC9D,WAAO,IAAI;AACX,kBAAc,IAAI;AAClB,mBAAe,IAAI;AACnB,kBAAc,IAAI;AAClB,kBAAc,IAAI;AALkD;AAl4DxE;AA24DA,SAAS,yBAAyB,KAAK;AACrC,uBAAqB,eAAe,eAAe;AACjD,WAAO,IAAI;AACX,kBAAc,IAAI;AAClB,mBAAe;AACf,kBAAc;AACd,kBAAc;AAL2C;AA54D7D;AAq5DA,SAAS,uBAAuB,KAAK;AACnC,uBAAqB,QAAQ,aAAa,IAAI,aAAa,IAAI;AAE/D,uBAAqB,UAAU;AAx5DjC;AA25DA,SAAS,sBAAsB,KAAK;AAClC,MAAI,OAAO,IAAI;AAEf,uBAAqB,QAAQ,cAAc,MAAM,IAAI,aAAa;AAClE,uBAAqB,iBAAiB,cAAc;AAEpD,MAAI,qBAAqB,WAAW,wBAAwB;AAC1D,yBAAqB,mBAAmB,wBAAwB;AAPhC;AAWlC,MAAI,gBAAM,UAAU,MAAM,SAAS;AACjC,QAAI,WAAW,qBAAqB,UAAU,YAAY,OAAO;AACjE,QAAI,SAAS,OAAO;AAClB,YAAM,IAAI,MAAM,SAAS;AAHM;AAXD;AA35DpC;AA86DA,IAAI,eAAe;IAAO;AAC1B,SAAS,eAAe,KAAK;AAC3B,MAAI,YAAY,qBAAqB;AACrC,MAAI,UAAU,sBAAsB;AAClC;AAHyB;AAM3B,MAAI,IAAI,WAAW,IAAI,SAAS;AAC9B,QAAI,UAAU,qBAAqB;AACnC,QAAK,IAAI,WAAW,CAAC,QAAQ,WACxB,IAAI,WAAW,CAAC,QAAQ,SAAU;AACrC;AAJ4B;AAO9B,QAAI;AAEJ,QAAI,cAAc;AAChB;AAV4B;AAa9B,QAAI,gBAAgB,UAAU;AAE9B,QAAI,QAAQ,wCAAyB;AAErC,QAAM,mCAAmC;AACzC,QAAI,QAAQ,QAAQ;AACpB,QAAI,QAAQ,GAAG;AACb,2BAAqB,QAAQ,CAAC;AADhC,WAEO;AACL,2BAAqB,OAAO;AAtBA;AAyB9B,QAAI,eAAe,UAAU;AAC7B,QAAI,kBAAkB,cAAc;AAIlC,UAAI,wBAAwB,eAAe,gBAAgB;AAC3D,UAAI,OAAO,UAAU,UAAU;AAC/B,UAAI,KAAK,IAAI,UAAU,KAAK;AAC5B,UAAI,KAAK,IAAI,UAAU,KAAK;AAC5B,gBAAU,UAAU,cAAc,KAAK;AACvC,gBAAU,UAAU,aAAa,KAAK;AAnCV;AAAhC,SAqCO;AACL,mBAAe;AACf,iBAAa;AACb,qCAAiC,YAAY;AAC3C,qBAAe;AADK,OAEnB;AAhDsB;AA/6D7B;AAm+DA,SAAS,eAAe,KAAK;AAC3B,MAAI,CAAC,qBAAqB,iBAAiB,QAAQ;AACjD;AAFyB;AAI3B,MAAI,YAAY,qBAAqB;AACrC,MAAI,qBAAqB,UAAU,gBAAgB,IAAI,WAClD,UAAU,QAAQ,UAAU,SAAS,IAAI,WACzC,IAAI,WAAW,UAAU,iBAAiB,cAAe;AAC5D,yBAAqB,iBAAiB;AARb;AAn+D7B;AA++DA,SAAS,iBAAiB,KAAK;AAC7B,MAAI,qBAAqB,eAAe,QAAQ;AAC9C;AAF2B;AAK7B,MAAI,UAAU;MAAO,sBAAsB;AAC3C,MAAI,MAAO,KAAI,UAAU,IACd,UAAI,SAAS,IACb,UAAI,WAAW,IACf,UAAI,UAAU,IAAI;AAE7B,MAAI,YAAY,qBAAqB;AACrC,MAAI,6BAA6B,aAAa,UAAU;AAIxD,MAAI,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,IAAI;AAErD,YAAQ,IAAI;AACV,WAAK;AACH,YAAI,CAAC,qBAAqB,wBAAwB;AAChD,+BAAqB,QAAQ;AAC7B,oBAAU;AAHd;AAKE;AACF,WAAK;AACH,YAAI,CAAC,qBAAqB,wBAAwB;AAChD,cAAI,YAAY,qBAAqB,eAAe;AACpD,cAAI,WAAW;AACb,iCAAqB,eAAe,eAAe;AACjD,qBAAO,UAAU;AACjB,4BAAc,UAAU;AACxB,6BAAe,UAAU;AACzB,4BAAc,UAAU;AACxB,4BAAc,QAAQ,KAAK,QAAQ;AAL2B;AAHlB;AAWhD,oBAAU;AAZd;AAcE;AACF,WAAK;AACL,WAAK;AACL,WAAK;AACL,WAAK;AACH,YAAI,CAAC,4BAA4B;AAC/B,+BAAqB;AAFzB;AAIE,kBAAU;AACV;AACF,WAAK;AACL,WAAK;AACL,WAAK;AACH,YAAI,CAAC,4BAA4B;AAC/B,+BAAqB;AAFzB;AAIE,kBAAU;AACV;AACF,WAAK;AACL,WAAK;AACH,YAAI,CAAC,4BAA4B;AAE/B,qBAAW,YAAY;AAErB,sBAA8B;AAFhC;AAIA,oBAAU;AAPd;AASE;AAEF,WAAK;AACH,YAAI,8BAA8B,qBAAqB,OAAO,GAAG;AAC/D,+BAAqB,OAAO;AAC5B,oBAAU;AACV,gCAAsB;AAJ1B;AAME;AACF,WAAK;AACH,YAAI,8BACA,qBAAqB,OAAO,qBAAqB,YAAY;AAC/D,+BAAqB,OAAO,qBAAqB;AACjD,oBAAU;AACV,gCAAsB;AAL1B;AAOE;;AAnFuB;AA0F3B,MAAI,QAAQ,KAAK,QAAQ,GAAG;AAC1B,YAAQ,IAAI;AACV,WAAK;AACH,6BAAqB;AACrB,kBAAU;AACV;;AA/FqB;AAqG7B,MAAI,QAAQ,KAAK,QAAQ,IAAI;AAC3B,YAAQ,IAAI;AACV,WAAK;AACH,6BAAqB;AACrB,kBAAU;AACV;AACF,WAAK;AAEH,6BAAqB,UAAU,QAAQ,WAAW;AAClD,kBAAU;AACV;;AA/GuB;AAmH7B,MAAI,SAAS;AACX,QAAI,uBAAuB,CAAC,4BAA4B;AACtD,gBAAU;AAFD;AAIX,QAAI;AACJ;AAxH2B;AA6H7B,MAAI,aAAa,SAAS,iBAAiB,SAAS,cAAc;AAClE,MAAI,oBAAoB,cAAc,WAAW,QAAQ;AACzD,MAAI,sBAAsB,WACtB,sBAAsB,cACtB,sBAAsB,UAAU;AAElC,QAAI,IAAI,YAAY,IAAI;AACtB;AAHgC;AAjIP;AAwI7B,MAAI,QAAQ,GAAG;AACb,YAAQ,IAAI;AACV,WAAK;AACL,WAAK;AACL,WAAK;AACH,YAAI,CAAC,8BACD,UAAU,sBAAsB,YAAY;AAC9C;AANN;AAUE,WAAK;AAEH,YAAI,UAAU,8BAA8B;AAC1C;AAbN;AAgBE,WAAK;AACL,WAAK;AACH,YAAI,qBAAqB,OAAO,GAAG;AACjC,+BAAqB;AAFzB;AAIE,kBAAU;AACV;AACF,WAAK;AACH,YAAI,qBAAqB,iBAAiB,QAAQ;AAChD,+BAAqB,iBAAiB;AACtC,oBAAU;AAHd;AAKE,YAAI,CAAC,qBAAqB,0BACtB,qBAAqB,QAAQ,QAAQ;AACvC,+BAAqB,QAAQ;AAC7B,oBAAU;AARd;AAUE;AACF,WAAK;AACL,WAAK;AACL,WAAK;AACH,YAAI,CAAC,8BACD,UAAU,sBAAsB,YAAY;AAC9C;AAvCN;AA0CE,WAAK;AAEH,YAAI,UAAU,8BAA8B;AAC1C;AA7CN;AAgDE,WAAK;AACL,WAAK;AACH,YAAI,qBAAqB,OAAO,qBAAqB,YAAY;AAC/D,+BAAqB;AAFzB;AAIE,kBAAU;AACV;AAEF,WAAK;AACH,YAAI,8BAA8B,qBAAqB,OAAO,GAAG;AAC/D,+BAAqB,OAAO;AAC5B,oBAAU;AACV,gCAAsB;AAJ1B;AAME;AACF,WAAK;AACH,YAAI,8BACA,qBAAqB,OAAO,qBAAqB,YAAY;AAC/D,+BAAqB,OAAO,qBAAqB;AACjD,oBAAU;AACV,gCAAsB;AAL1B;AAOE;AAEF,WAAK;AACH,6BAAqB,eAAe,WAAW,6BAAW;AAC1D;AACF,WAAK;AACH,6BAAqB,eAAe,WAAW,6BAAW;AAC1D;AAEF,WAAK;AACH,6BAAqB,YAAY;AACjC;;AA1NuB;AA8N7B,MAAI,QAAQ,GAAG;AACb,YAAQ,IAAI;AACV,WAAK;AACH,YAAI,CAAC,8BACD,UAAU,sBAAsB,YAAY;AAC9C;AAHJ;AAKE,YAAI,qBAAqB,OAAO,GAAG;AACjC,+BAAqB;AANzB;AAQE,kBAAU;AACV;AAEF,WAAK;AACH,6BAAqB,YAAY,CAAC;AAClC;;AA7OuB;AAiP7B,MAAI,CAAC,WAAW,CAAC,4BAA4B;AAI3C,QAAK,IAAI,WAAW,MAAM,IAAI,WAAW,MACpC,IAAI,YAAY,MAAM,sBAAsB,UAAW;AAC1D,4BAAsB;AANmB;AAjPhB;AA2P7B,MAAI,QAAQ,GAAG;AACb,YAAQ,IAAI;AACV,WAAK;AACH,YAAI,4BAA4B;AAC9B,+BAAqB,WAAW;AAChC,oBAAU;AAHd;AAKE;AACF,WAAK;AACH,YAAI,4BAA4B;AAC9B,+BAAqB,WAAW;AAChC,oBAAU;AAHd;AAKE;;AAxQuB;AA4Q7B,MAAI,uBAAuB,CAAC,UAAU,gBAAgB,aAAa;AAIjE,cAAU;AAhRiB;AAmR7B,MAAI,SAAS;AACX,QAAI;AApRuB;AA/+D/B;AA+wEA,SAAS,yBAAyB,MAAM;AACtC,UAAQ;AACN,SAAK;AACH,aAAO,yBAAY;AACrB,SAAK;AACH,aAAO,yBAAY;AACrB,SAAK;AACH,aAAO,yBAAY;AACrB,SAAK;AACH,aAAO,yBAAY;AACrB,SAAK;;AAGP,SAAO,yBAAY;AA5xErB;AAgyEA,IAAI;AACF;AACE,sBAAkB;AAClB,sDAAqB;AACnB,YAAM,IAAI,MAAM;AAKtB;AARY;AADiB;QAU3B;QACA;QACA,gD;;;;;;;;;;;;;;;;;;AC7xEgC;;AAalC;;;;IAAqB;AAIP;AAAoB,mFAAJ;QAAd;;;;AACZ,SAAK,WAAW,YAAY;AAC5B,SAAK,UAAU;AACf,SAAK,cAAc;AACnB,SAAK,YAAY;AACjB,SAAK,aAAa;AAElB,SAAK,iBAAiB;AAGxB;;;;gCAAY,aAAa,SAAS;AAChC,WAAK,UAAU;AACf,WAAK,cAAc;AACnB,WAAK,iBAAiB,OAAO,OAAO;AAGtC;;;8BAAU,WAAW;AACnB,WAAK,YAAY;AAGnB;;;+BAAW,YAAY;AACrB,WAAK,aAAa;AAMhB;;;+BAqBO;AAAM;;AACf,UAAI,kBAAmB;AAAiC,YAA/B;YAAW;;AAElC,YAAI,UAAU,aAAa;YAAI;AAE/B,YAAI,mBAAmB,QAAQ;AAC7B,uBAAa,MAAK,kBAAkB;AAEpC,cAAI,eAAe,MAAM;AAGvB,kBAAK,YAAY,aAAa,SAAS,KAAM,qBAAc;AACzD,oBAAK,aAAa,YAAY,GAAG;AACjC;AAAkB;AAAW;AAAb;AAFlB,eAGG,MAAM,YAAM;AACb,sBAAQ,MAAO,iCACA,gEAAyC;AAL1D;AAOA;AAb2B;AAA/B,mBAeY,WAAU,OAAO,SAAS;AACpC,uBAAa,UAAU;AADlB,eAEA;AACL,kBAAQ,MAAO,iCACA,uEAAgD;AAC/D;AAxBoD;AA0BtD,YAAI,CAAC,cAAc,aAAa,KAAK,aAAa,MAAK,YAAY;AACjE,kBAAQ,MAAO,iCACA,gEAAsC;AACrD;AA7BoD;AAgCtD,cAAK,UAAU;AACb;AACA,qBAAW;AAFqB;AAKlC,YAAI,MAAK,YAAY;AACnB,gBAAK,WAAW;AACd,kBAAM;AACN,kBAAM;AACN,kBAAM;AAHa;AAtC+B;AAAxD;AA8CA,UAAI,QAAQ,UAAC,SAAS,QAAW;AAC/B,YAAI,OAAO,SAAS,UAAU;AAC5B,gBAAK,YAAY,eAAe,MAAM,KAAM,qBAAc;AACxD;AACE,yBAAW;AACX,4BAAc;AAFR;AADV;AAMA;AAR6B;AAU/B;AACE,qBAAW;AACX,wBAAc;AAFR;AAVV,SAcG,KAAM,gBAAS;AAChB,YAAM,OAAK,wBAAwB,QAAQ;AACzC,kBAAQ,MAAO,iCAA8B,KAC9B,wEAAiD;AAChE;AAJc;AAMhB,wBAAgB;AApBlB;AA4BF;;;uCAAmB,MAAM;AACvB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,KAAK,aAAa,MAAM,OAAO;AAFjB;AAIvB,UAAI,gBAAgB,OAAO;AACzB,YAAI,MAAM,KAAK,UAAU;AACzB,eAAO,KAAK,aAAa,MAAM,OAAO;AANjB;AAQvB,aAAO,KAAK,aAAa;AAS3B;;;iCAAa,QAAQ;AACnB,aAAQ,MAAK,WAAW,MAAM;AAMhC;;;4BAAQ,MAAM;AACZ,UAAI;UAAY;AAChB,UAAI,KAAK,QAAQ,QAAQ,GAAG;AAC1B,YAAI,SAAS,gCAAiB;AAC9B,YAAI,YAAY,QAAQ;AACtB,eAAK,SAAS,SAAS;AACrB,oBAAQ;AACR,mBAAO,OAAO,UAAU,QAAQ,MAAM;AACtC,0BAAe,OAAO,cAAc;AAHI;AAHlB;AAU1B,YAAI,eAAe,QAAQ;AACzB,cAAI,KAAK,YAAY;AACnB,iBAAK,WAAW,oBAAoB,OAAO;AAFpB;AAIzB,eAAK,WAAW,OAAO;AACvB;AAfwB;AAiB1B,YAAI,UAAU,QAAQ;AACpB,uBAAc,OAAO,OAAO,KAAM;AAlBV;AAoB1B,YAAI,UAAU,QAAQ;AAEpB,cAAI,WAAW,OAAO,KAAK,MAAM;AACjC,cAAI,UAAU,SAAS;AACvB,cAAI,gBAAgB,WAAW;AAE/B,cAAI,QAAQ,QAAQ,WAAW,CAAC,GAAG;AAGjC,mBAAO,CAAC,MAAM,EAAE,MAAM,SACd,SAAS,SAAS,IAAK,SAAS,KAAK,IAAK,MAC1C,SAAS,SAAS,IAAK,SAAS,KAAK,IAAK,MACzC,gBAAgB,gBAAgB,MAAM;AANjD,iBAOO;AACL,gBAAI,YAAY,SAAS,YAAY,QAAQ;AAC3C,qBAAO,CAAC,MAAM,EAAE,MAAM;AADxB,uBAEY,YAAY,UAAU,YACtB,uBAAY,UAAU,YAAY,SAAU;AACtD,qBAAO,CAAC,MAAM,EAAE,MAAM,WACd,SAAS,SAAS,IAAK,SAAS,KAAK,IAAK;AAH7C,uBAII,YAAY,QAAQ;AAC7B,kBAAI,SAAS,WAAW,GAAG;AACzB,wBAAQ,MACN;AAFJ,qBAGO;AACL,uBAAO,CAAC,MAAM,EAAE,MAAM,WACb,SAAS,KAAK,GAAK,SAAS,KAAK,GACjC,SAAS,KAAK,GAAK,SAAS,KAAK;AAPf;AAAxB,mBASA;AACL,sBAAQ,MAAO,8BAAmC,wBACpC;AAlBX;AAba;AApBI;AAuD1B,YAAI,MAAM;AACR,eAAK,UAAU;AACb,wBAAY,cAAc,KAAK;AAC/B,uBAAW;AACX,iCAAqB;AAHW;AADpC,eAMO,IAAI,YAAY;AACrB,eAAK,OAAO;AA9DY;AAgE1B,YAAI,cAAc,QAAQ;AACxB,eAAK,SAAS,SAAS;AACrB,oBAAQ;AACR,kBAAM,OAAO;AAFoB;AAjEX;AAA5B,aAsEO;AACL,YACI,QAAQ,KAAK,SAAS,QAAQ,KAAK,YAAY;AACjD,kBAAQ,KAAK,sDAEC,mFAA6B;AAC3C,eAAK,OAAO,OAAO;AANhB;AASL,eAAO,SAAS;AAChB,YAAI;AACF,iBAAO,KAAK,MAAM;AAElB,cAAM,kBAAgB,QAAQ;AAG5B,mBAAO,KAAK;AANZ;AAAJ,UAQE,OAAO,IAAI,CAlBR;AAoBL,YAAI,OAAO,SAAS,YAAY,2BAA2B,OAAO;AAChE,cAAI,KAAK,YAAY;AACnB,iBAAK,WAAW,oBAAoB;AAF0B;AAIhE,eAAK,WAAW;AAChB;AAzBG;AA2BL,gBAAQ,MAAO,8BAA2B,SAAe,sBAC3C;AApGJ;AA2Gd;;;uCAAmB,QAAQ;AAEzB,cAAQ;AACN,aAAK;AACH,cAAI,KAAK,YAAY;AACnB,iBAAK,WAAW;AAFpB;AAIE;AAEF,aAAK;AACH,cAAI,KAAK,YAAY;AACnB,iBAAK,WAAW;AAFpB;AAIE;AAEF,aAAK;AACH,cAAI,KAAK,OAAO,KAAK,YAAY;AAC/B,iBAAK;AAFT;AAIE;AAEF,aAAK;AACH,cAAI,KAAK,OAAO,GAAG;AACjB,iBAAK;AAFT;AAIE;AAEF,aAAK;AACH,eAAK,OAAO,KAAK;AACjB;AAEF,aAAK;AACH,eAAK,OAAO;AACZ;AAEF;AACE;;AAGJ,WAAK,SAAS,SAAS;AACrB,gBAAQ;AACR;AAFoC;AASb;;;;AAA4B,UAA1B;UAAI;UAAU;;AACzC,WAAK,SAAS,SAAS;AACrB,gBAAQ;AACR;AACA;AACA;AAJiD;AAYrD;;;iCAAa,SAAS,SAAS;AAC7B,UAAI,SAAS,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC/C,WAAK,eAAe,UAAU;AAGhC;;;sCAAkB,SAAS;AACzB,UAAI,SAAS,QAAQ,MAAM,MAAM,QAAQ,MAAM;AAC/C,aAAQ,KAAK,kBAAkB,KAAK,eAAe,WAAY;AAtU9C;;;wBA+BF;AACf,aAAO,KAAK,cAAc,KAAK,YAAY,WAAW;AAMpD;;;wBAAO;AACT,aAAO,KAAK,UAAU;AAMpB;sBAAK,OAAO;AACd,WAAK,UAAU,oBAAoB;AAMrC;;;;;;AAsRF,SAAS,2BAA2B,MAAM;AACxC,MAAM,kBAAgB,QAAQ;AAC5B,WAAO;AAF+B;AAIxC,MAAI,aAAa,KAAK;MAAQ,YAAY;AAC1C,MAAI,aAAa,GAAG;AAClB,WAAO;AAN+B;AAQxC,MAAI,OAAO,KAAK;AAChB,MAAM,UAAO,wDAAS,YAChB,OAAO,KAAK,QAAQ,YAAa,MAAK,MAAM,OAAO,KAAK,OACxD,OAAO,KAAK,QAAQ,YAAa,MAAK,MAAM,OAAO,KAAK,QACxD,SAAO,SAAS,YAAa,QAAO,OAAO,QAAQ,QAAQ,IAAI;AACnE,WAAO;AAb+B;AAexC,MAAI,OAAO,KAAK;AAChB,MAAM,UAAO,wDAAS,YAAY,OAAO,KAAK,SAAS,WAAW;AAChE,WAAO;AAjB+B;AAmBxC,UAAQ,KAAK;AACX,SAAK;AACH,UAAI,eAAe,GAAG;AACpB,eAAO;AAFX;AAIE;AACF,SAAK;AACL,SAAK;AACH,aAAO,eAAe;AACxB,SAAK;AACL,SAAK;AACL,SAAK;AACL,SAAK;AACH,UAAI,eAAe,GAAG;AACpB,eAAO;AAFX;AAIE;AACF,SAAK;AACH,UAAI,eAAe,GAAG;AACpB,eAAO;AAFX;AAIE,kBAAY;AACZ;AACF;AACE,aAAO;;AAEX,OAAK,IAAI,IAAI,GAAG,IAAI,YAAY,KAAK;AACnC,QAAI,QAAQ,KAAK;AACjB,QAAM,SAAO,UAAU,YAAa,aAAa,UAAU,OAAQ;AACjE,aAAO;AAH0B;AA7CG;AAmDxC,SAAO;AAGT;;IAIM;;;;;;;+BAUO,MAAM,CAKjB;;;uCAAmB,MAAM;AACvB,aAAO;AAMT;;;iCAAa,MAAM;AACjB,aAAO;AAKT;;;4BAAQ,MAAM,CAId;;;uCAAmB,QAAQ,CAIA;;;;AAA4B,UAA1B;UAAI;UAAU;AAK3C;;;iCAAa,SAAS,SAAS,CAGjC;;;wBA5Ca;AACT,aAAO;AAKL;sBAAK,OAAO,CAIhB;;;;;;QAmCA;QACA,sC;;;;;;;;;;;;;;;;;;AC/bwB;;;;AAE1B,IAAM;AACJ,UAAQ;AACR,QAAM;AACN,QAWF;AAdmB;;IAcE;AAIP;AAAuC;;QAArC;QAAW;QAAU;;;;AACjC,SAAK,YAAY;AACjB,SAAK,WAAW;AAEhB,SAAK,SAAS,WAAW;AACzB,SAAK,+BAA+B;AAEpC,SAAK,WAAe,2BAAU,EAC5B,SAAS,KAAK;AAGhB,SAAK;AAEL,YAAQ,IAAI,CACV,YAAY,IAAI,qBAChB,YAAY,IAAI,0BACf,KAAM;AAAmC;UAAlC;UAAgB;;AAIxB,UAAI,iBAAiB,MAAM;AACzB,oBAAY,IAAI,wBAAwB;AAExC,YAAI,mBAAmB,WAAW,QAAQ;AACxC,2BAAiB,WAAW;AAC5B,sBAAY,IAAI,oBAAoB,gBAAgB,MAAM,YAAM,CAAhE;AALuB;AAJe;AAY1C,YAAK,WAAW;AAflB,OAgBG,MAAM,YAAM,CAhBf;AAsBE;;;;+BASO;AAAM;;AACf,UAAI,KAAK,iCAAiC,MAAM;AAC9C;AAFa;AAIf,UAAI,SAAS,KAAK,QAAQ;AACxB;AALa;AAQf,UAAI,oBAAoB,6BAAM;AAC5B,gBAAQ,OAAK;AACX,eAAK,WAAW;AACd;AACF,eAAK,WAAW;AACd,mBAAK,SAAS;AACd;AACF,eAAK,WAAW;;AAPpB;AAYA,cAAQ;AACN,aAAK,WAAW;AACd;AACA;AACF,aAAK,WAAW;AACd;AACA,eAAK,SAAS;AACd;AACF,aAAK,WAAW;AAEhB;AACE,kBAAe,wBAAoB;AACnC;;AAIJ,WAAK,SAAS;AAEd,WAAK;AAMP;;;qCAAiB;AACf,WAAK,SAAS,SAAS;AACrB,gBAAQ;AACR,cAAM,KAAK;AAF+B;AAS9C;;;;AAAqB;;AACnB,WAAK,SAAS,GAAG,oBAAqB,eAAQ;AAC5C,eAAK,WAAW,IAAI;AADtB;AAIA,WAAK,SAAS,GAAG,2BAA4B,eAAQ;AACnD,YAAI,IAAI,kBAAkB;AACxB;AAFiD;AAInD,YAAI;AAEJ,YAAI,IAAI,QAAQ;AACd,6BAAmB,OAAK;AAExB,iBAAK,WAAW,WAAW;AAC3B,iBAAK,+BAA+B;AAJtC,eAKO;AACL,6BAAmB,OAAK;AAExB,iBAAK,+BAA+B;AACpC,iBAAK,WAAW;AAfiC;AAArD;AAqBJ;;;wBAzFmB;AACf,aAAO,KAAK;AAQd;;;;;;QAiFA;QACA,gC;;;;;;;;;;;;;;;;AClJsC;;AACT;;;;AAE/B,IAAM;AACJ,SAAO;AACP,aAAW;AACX,WAAS;AACT,WAAS;AAJO;AAOlB,IAAM,yBAAyB,CAAC;AAChC,IAAM,0BAA0B,CAAC;AACjC,IAAM,eAAe;AAErB,IAAM;AACJ,YAAU;AACV,YAAU;AACV,YAAU;AACV,YAAU;AACV,YAAU;AACV,YAAU;AACV,YAAU;AACV,YAAU;AACV,UAAU;AACV,UAAU;AACV,UAMF;AAjBgC;;IAiBR;AACV;AAAgB,QAAd;;;;AACZ,SAAK,YAAY;AAEjB,SAAK,uBAAuB;AAC5B,SAAK,gBAAgB;AAErB,SAAK;AAGL,QAAI,UAAU,OAAO,KAAK,yBAAyB,KAAK;AACxD,SAAK,qBAAqB,IAAI,OAAO,MAAM,UAAU,KAAK;AAG5D;;;;;AAAQ;;AACN,WAAK,wBAAwB;AAC7B,WAAK,sBAAsB;AAC3B,WAAK,qBAAqB,OAAO,OAAO;AACxC,WAAK,SAAS;AACd,WAAK,eAAe;AACpB,WAAK,cAAc;AACnB,WAAK,oBAAoB;AACzB,WAAK,aAAa;AAClB,WAAK;AACH,iBAAS,CAAC;AACV,kBAAU,CAAC;AAFG;AAIhB,WAAK;AACH,iBAAS;AACT,kBAAU;AAFE;AAId,WAAK,gBAAgB;AACrB,WAAK,gBAAgB;AACrB,WAAK,QAAQ;AACb,WAAK,aAAa;AAClB,WAAK,cAAc;AAEnB,WAAK,wBAAwB,QAAS,mBAAY;AAChD,cAAK,mBAAmB;AADD;AAK3B;;;8BAAU,MAAM;AACd,kBAAY,QAAQ,KAAK,oBAAoB,UAAU,IAAI;AACzD,eAAO,wBAAwB;AAD1B;AAWT;;;oCAAgB,mBAAmB,SAAS,eAAe;AACzD,eAAS,UAAU,mBAAmB,cAAc;AAClD,YAAI,cAAc,kBAAkB;AACpC,YAAI,WAAW,kBAAkB,eAAe;AAGhD,YAAI,eAAe,kBAAkB,SAAS,KAC1C,YAAY,UAAU,SAAS,OAAO;AACxC,sBAAY,UAAU;AACtB,iBAAO;AARyC;AAYlD,aAAK,IAAI,IAAI,eAAe,GAAG,KAAK,GAAG,KAAK;AAC1C,cAAI,WAAW,kBAAkB;AACjC,cAAI,SAAS,SAAS;AACpB;AAHwC;AAK1C,cAAI,SAAS,QAAQ,SAAS,cAAc,YAAY,OAAO;AAC7D;AANwC;AAQ1C,cAAI,SAAS,QAAQ,SAAS,eAC1B,YAAY,QAAQ,YAAY,aAAa;AAC/C,wBAAY,UAAU;AACtB,mBAAO;AAXiC;AAZM;AA0BlD,eAAO;AA3BgD;AAgCzD,wBAAkB,KAAK,UAAS,GAAG,GAAG;AACpC,eAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,cAClB,EAAE,QAAQ,EAAE;AAF3C;AAIA,WAAK,IAAI,IAAI,GAAG,MAAM,kBAAkB,QAAQ,IAAI,KAAK,KAAK;AAC5D,YAAI,UAAU,mBAAmB,IAAI;AACnC;AAF0D;AAI5D,gBAAQ,KAAK,kBAAkB,GAAG;AAClC,sBAAc,KAAK,kBAAkB,GAAG;AAzCe;AA6C3D;;;wCAAoB,OAAO,WAAW,aAAa;AACjD,UAAI,UAAU;AACd,UAAI,WAAW,MAAM;AACrB,UAAI,WAAW,CAAC;AAChB,aAAO,MAAM;AACX,mBAAW,YAAY,QAAQ,OAAO,WAAW;AACjD,YAAI,aAAa,CAAC,GAAG;AACnB;AAHS;AAKX,gBAAQ,KAAK;AATkC;AAWjD,WAAK,YAAY,aAAa;AAGhC;;;sCAAkB,OAAO,WAAW,aAAa;AAC/C,UAAI,oBAAoB;AAExB,UAAI,aAAa,MAAM,MAAM;AAC7B,WAAK,IAAI,IAAI,GAAG,MAAM,WAAW,QAAQ,IAAI,KAAK,KAAK;AACrD,YAAI,WAAW,WAAW;AAC1B,YAAI,cAAc,SAAS;AAC3B,YAAI,WAAW,CAAC;AAChB,eAAO,MAAM;AACX,qBAAW,YAAY,QAAQ,UAAU,WAAW;AACpD,cAAI,aAAa,CAAC,GAAG;AACnB;AAHS;AAMX,4BAAkB;AAChB,mBAAO;AACP,yBAAa;AACb,qBAAS;AAHY;AAV4B;AAJR;AAuB/C,UAAI,CAAC,KAAK,mBAAmB;AAC3B,aAAK,oBAAoB;AAxBoB;AA0B/C,WAAK,kBAAkB,aAAa;AACpC,WAAK,YAAY,aAAa;AAI9B,WAAK,gBAAgB,mBAAmB,KAAK,YAAY,YACvD,KAAK,kBAAkB;AAG3B;;;kCAAc,WAAW;AACvB,UAAI,cAAc,KAAK,UAAU,KAAK,aAAa;AACnD,UAAI,QAAQ,KAAK,UAAU,KAAK,MAAM;AACtC,UAAI,gBAAgB,KAAK,MAAM;AAC/B,UAAI,eAAe,KAAK,MAAM;AAC9B,UAAI,WAAW,MAAM;AAErB,UAAI,aAAa,GAAG;AAElB;AATqB;AAYvB,UAAI,CAAC,eAAe;AAClB,sBAAc,YAAY;AAC1B,gBAAQ,MAAM;AAdO;AAiBvB,UAAI,cAAc;AAChB,aAAK,oBAAoB,OAAO,WAAW;AAD7C,aAEO;AACL,aAAK,kBAAkB,OAAO,WAAW;AApBpB;AAuBvB,WAAK,WAAW;AAChB,UAAI,KAAK,kBAAkB,WAAW;AACpC,aAAK,gBAAgB;AACrB,aAAK;AA1BgB;AA8BvB,UAAI,KAAK,YAAY,WAAW,SAAS,GAAG;AAC1C,aAAK,cAAc,KAAK,YAAY,WAAW;AAC/C,aAAK;AAhCgB;AAoCzB;;;;AAAc;;AACZ,UAAI,KAAK,uBAAuB;AAC9B;AAFU;AAIZ,WAAK,wBAAwB;AAC7B,WAAK,aAAa,SAAS;AAE3B,UAAI,UAAU,QAAQ;;;AAEpB,YAAI,wBAAwB;AAC5B,eAAK,oBAAoB,KAAK,sBAAsB;AAEpD,0BAAkB,KAAK,YAAM;AAC3B,wBAAY,UAAU,mBAAmB,GAAG,KAAM,uBAAgB;AAChE,gBAAI,YAAY,YAAY;AAC5B,gBAAI,SAAS;AAEb,iBAAK,IAAI,IAAI,GAAG,KAAK,UAAU,QAAQ,IAAI,IAAI,KAAK;AAClD,qBAAO,KAAK,UAAU,GAAG;AALqC;AAQhE,mBAAK,aAAa,KAAK,OAAO,KAAK;AACnC,kCAAsB,QAAQ;AATzB,aAUH,kBAAW;AACb,oBAAe,+BAAqB,IAAM,sBAAgB;AAE1D,mBAAK,aAAa,KAAK;AACvB,kCAAsB,QAAQ;AAdzB;AADC;;;AAJZ,WAAK,QAAQ,QAAQ,KAAK,UAAU,YAAY,IAAI,IAAI;AAAK,cAApD,GAAO;AARJ;AAiCd;;;mCAAe,KAAK;AAAO;;AACzB,UAAI,KAAK,UAAU,QAAQ,QAAQ,aAAa;AAC9C,aAAK,aAAa;AAFK;AAIzB,WAAK,QAAQ;AACb,WAAK,cAAc,UAAU;AAE7B,WAAK,kBAAkB,KAAK,YAAM;AAChC,eAAK;AAEL,qBAAa,OAAK;AAClB,YAAI,QAAQ,QAAQ;AAGlB,iBAAK,cAAc,WAAW,OAAK,UAAe,cAAO;AAH3D,eAIO;AACL,iBAAK;AATyB;AAAlC;AAcF;;;+BAAW,OAAO;AAChB,UAAI,KAAK,SAAS,YAAY,OAAO;AAInC,aAAK,UAAU,oBAAoB,QAAQ;AAL7B;AAQhB,UAAI,OAAO,KAAK,UAAU,YAAY;AACtC,UAAI,KAAK,WAAW;AAClB,aAAK,UAAU;AAVD;AAclB;;;;AAAY;;AACV,UAAI,WAAW,KAAK,MAAM;AAC1B,UAAI,mBAAmB,KAAK,UAAU,oBAAoB;AAC1D,UAAI,WAAW,KAAK,UAAU;AAE9B,WAAK,SAAS;AAEd,UAAI,KAAK,YAAY;AAEnB,aAAK,aAAa;AAClB,aAAK,SAAS,UAAU,KAAK,SAAS,WAAW,CAAC;AAClD,aAAK,OAAO,UAAU;AACtB,aAAK,OAAO,WAAW;AACvB,aAAK,WAAW;AAChB,aAAK,gBAAgB;AACrB,aAAK,cAAc;AACnB,aAAK,aAAa;AAClB,aAAK,oBAAoB;AAEzB,aAAK,IAAI,IAAI,GAAG,IAAI,UAAU,KAAK;AAEjC,eAAK,WAAW;AAGhB,cAAM,OAAK,KAAK,qBAAqB;AACnC,iBAAK,mBAAmB,KAAK;AAC7B,iBAAK,oBAAoB,GAAG,KAAM,mBAAY;AAC5C,qBAAO,OAAK,mBAAmB;AAC/B,qBAAK,cAAc;AAFrB;AAP+B;AAZhB;AAPX;AAmCV,UAAI,KAAK,MAAM,UAAU,IAAI;AAC3B,aAAK,cAAc,UAAU;AAC7B;AArCQ;AAyCV,UAAI,KAAK,eAAe;AACtB;AA1CQ;AA6CV,UAAI,SAAS,KAAK;AAElB,WAAK,gBAAgB;AAGrB,UAAI,OAAO,aAAa,MAAM;AAC5B,YAAI,iBAAiB,KAAK,YAAY,OAAO,SAAS;AACtD,YAAK,CAAC,YAAY,OAAO,WAAW,IAAI,kBACnC,YAAY,OAAO,WAAW,GAAI;AAGrC,eAAK,WAAW;AAChB,iBAAO,WAAY,WAAW,OAAO,WAAW,IAClB,OAAO,WAAW;AAChD,eAAK,YAAY;AACjB;AAV0B;AAc5B,aAAK,kBAAkB;AAhEf;AAmEV,WAAK;AAGP;;;iCAAa,SAAS;AACpB,UAAI,SAAS,KAAK;AAClB,UAAI,aAAa,QAAQ;AACzB,UAAI,WAAW,KAAK,MAAM;AAE1B,UAAI,YAAY;AAEd,aAAK,WAAW;AAChB,eAAO,WAAY,WAAW,aAAa,IAAI;AAC/C,aAAK,YAAY;AACjB,eAAO;AAVW;AAapB,WAAK,kBAAkB;AACvB,UAAI,OAAO,SAAS;AAClB,eAAO,WAAW;AAClB,YAAI,KAAK,gBAAgB,GAAG;AAE1B,eAAK,YAAY;AAGjB,iBAAO;AAPS;AAdA;AAyBpB,aAAO;AAWT;;;wCAAoB,WAAW,YAAY,UAAU,UAAU;AAC7D,UAAI,KAAK,SAAS,aAAa,cAC3B,KAAK,SAAS,YAAY,WAAW;AACvC,YAAI;AACF,eAAK;AACL,gBAAM;AAFG;AAIX,sCAAe,SAAS,WAAW,MACe;AARS;AAY/D;;;oCAAgB;AACd,UAAI,KAAK,kBAAkB,MAAM;AAC/B,gBAAQ,MAAM;AAFF;AAKd,UAAI,UAAU;AACd,SAAG;AACD,YAAI,UAAU,KAAK,OAAO;AAC1B,kBAAU,KAAK,YAAY;AAC3B,YAAI,CAAC,SAAS;AAGZ,eAAK,gBAAgB;AACrB;AAPD;AAAH,eASS,CAAC,KAAK,aAAa;AAG9B;;;sCAAkB,UAAU;AAC1B,UAAI,SAAS,KAAK;AAClB,UAAI,WAAW,KAAK,oBAAoB;AACxC,aAAO,UAAW,WAAW,OAAO,UAAU,IAAI,OAAO,UAAU;AACnE,aAAO,WAAW;AAElB,WAAK;AAEL,UAAI,OAAO,WAAW,YAAY,OAAO,UAAU,GAAG;AACpD,eAAO,UAAW,WAAW,WAAW,IAAI;AAC5C,eAAO,UAAU;AAVO;AAc5B;;;;AAA2B,UAAf,4EAAQ;;AAClB,UAAI,QAAQ,UAAU;AACtB,UAAI,UAAU,KAAK,OAAO;AAC1B,WAAK,OAAO,UAAU;AAEtB,UAAI,OAAO;AACT,YAAI,eAAe,KAAK,SAAS;AACjC,aAAK,SAAS,UAAU,KAAK,OAAO;AACpC,aAAK,SAAS,WAAW,KAAK,OAAO;AACrC,gBAAS,UAAU,UAAU,UAAU,UAAU;AAGjD,YAAI,iBAAiB,CAAC,KAAK,iBAAiB,KAAK,SAAS,SAAS;AACjE,eAAK,WAAW;AART;AALc;AAiBzB,WAAK,cAAc,OAAO,KAAK,MAAM;AACrC,UAAI,KAAK,SAAS,YAAY,CAAC,GAAG;AAChC,aAAK,WAAW,KAAK,SAAS;AAnBP;AAuB3B;;;2CAAuB;AACrB,UAAI,KAAK,sBAAsB;AAC7B,aAAK,qBAAqB,KAAK;AAFZ;AAMvB;;;kCAAc,OAAO,UAAU;AAC7B,UAAI,KAAK,eAAe;AACtB,aAAK,cAAc,OAAO,UAAU,KAAK;AAFd;AAOjC;;;;;;QACE;QACA,sC;;;;;;;;;;;;;;;;ACvd4D;;AAC9B;;AACA;;AACJ;;AACN;;;;;;;;AAEtB;AAKA,IAAI,aAEJ;;IACE;;;;;;;;;;;oCAAgB,SAAS;AACvB,iBAAW,QAAQ,UAAS,SAAS;AACnC,qBAAa,QAAQ,qBAAqB,KAAK,UAAU;AACzD;AAFK;AAMT;;;qCAAiB,SAAS;AACxB,iBAAW,QAAQ,UAAS,SAAS;AACnC,YAAI,YAAY,KAAK,MAAM,aAAa,QAAQ;AAChD,gBAAQ;AAFH;AATsC;;;;;;AAgBjD,IAAI,0BAA0B,OAAc;AAC5C,wBAAwB,wBAAwB,YAAW;AACzD,SAAW;AADb;AAGA,wBAAwB,oBAAoB,YAAW;AACrD,SAAO,IAAI;AADb;AAGA,wBAAwB,aAAa,YAAY;AAC/C,SAAW,6BAAY,gBAAM;AAD/B;AAGA,0BAAqB,mBAErB;QACE,wB;;;;;;;;;;;;;;AC1CkC;;AACyB;;AACvC;;AAEtB,IAAI,gBAAgB;AACpB,IAAI,iBAAiB;AAIrB,SAAS,WAAW,sBAAsB,aAAa,YAAY,MAAM;AACvE,MAAI,gBAAgB,cAAc;AAGlC,MAAI,mBAAmB;AACvB,MAAI,cAAc,mBAAmB;AACrC,gBAAc,QAAQ,KAAK,MAAM,KAAK,QAAQ;AAC9C,gBAAc,SAAS,KAAK,MAAM,KAAK,SAAS;AAGhD,MAAI,QAAQ,KAAK,MAAM,KAAa,+BAAa;AACjD,MAAI,SAAS,KAAK,MAAM,KAAc,gCAAa;AAEnD,MAAI,MAAM,cAAc,WAAW;AACnC,MAAI;AACJ,MAAI,YAAY;AAChB,MAAI,SAAS,GAAG,GAAG,cAAc,OAAO,cAAc;AACtD,MAAI;AAEJ,qBAAmB,QAAQ,YAAY,KAAK,UAAU,SAAS;AAC7D,QAAI;AACF,qBAAe;AACf,iBAAW,CAAC,aAAa,GAAG,GAAG,aAAa,GAAG;AAC/C,gBAAU,QAAQ,YAAY,GAAG,KAAK;AACtC,cAAQ;AAJU;AAMpB,WAAO,QAAQ,OAAO,eAAe;AAPhC,KAQJ,KAAK,YAAY;AAClB;AACE;AACA;AAFK;AATF;AA3CT;AA2DA,SAAS,gBAAgB,aAAa,eAAe,gBAAgB,MAAM;AACzE,OAAK,cAAc;AACnB,OAAK,gBAAgB;AACrB,OAAK,iBAAiB;AACtB,OAAK,OAAe;AACpB,OAAK,cAAc,CAAC;AAEpB,OAAK,gBAAgB,SAAS,cAAc;AAlE9C;AAqEA,gBAAgB;AACd,4BAAS;AACP,SAAK;AAEL,QAAI,OAAO,SAAS,cAAc;AAClC,SAAK,aAAa,sBAAsB;AAExC,QAAI,yBAAyB,cAAc,MAAM,UAAU,MAAM;AAC/D,aAAO,KAAK,UAAU,KAAK,cAAc,GAAG,SACrC,KAAK,WAAW,KAAK,cAAc,GAAG;AAFvB,OAGrB;AACH,QAAI,CAAC,mBAAmB;AACtB,cAAQ,KAAK,mDACA;AAZR;AAwBP,SAAK,iBAAiB,SAAS,cAAc;AAC7C,QAAI,WAAW,KAAK,cAAc;AAClC,SAAK,eAAe,cAGlB,+CACA,mBAAmB,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAC9D;AACF,SAAK,YAAY,KAAK;AAjCE;AAoC1B,8BAAU;AACR,QAAI,kBAAkB,MAAM;AAI1B;AALM;AAOR,SAAK,eAAe,cAAc;AAClC,QAAI,KAAK,kBAAkB,KAAK,eAAe,YAAY;AACzD,WAAK,eAAe,WAAW,YAAY,KAAK;AAChD,WAAK,iBAAiB;AAVhB;AAYR,SAAK,cAAc,QAAQ,KAAK,cAAc,SAAS;AACvD,SAAK,gBAAgB;AACrB,oBAAgB;AAChB,oBAAgB,KAAK,YAAY;AAC/B,UAAI,eAAe,WAAW,uBAAuB;AACnD;AAF6B;AAI/B,qBAAe,MAAM;AAJvB;AAnDwB;AA2D1B;AAAc;;AACZ,QAAI,YAAY,KAAK,cAAc;AACnC,QAAI,iBAAiB,wBAAC,SAAS,QAAW;AACxC,YAAK;AACL,UAAI,EAAE,MAAK,eAAe,WAAW;AACnC,uBAAe,WAAW,WAAW,MAAK;AAC1C;AACA;AALsC;AAOxC,UAAI,QAAQ,MAAK;AACjB,qBAAe,OAAO,WAAW,MAAK;AAC3B,wBAAM,MAAK,aAAa,QAAQ,GAAG,MAAK,cAAc,QAC9D,KAAK,MAAK,gBAAqB,aAC/B,KAAK,YAAY;AAChB,uBAAe,SAAS;AAH5B,SAIK;AAbP;AAeA,WAAO,IAAI,QAAQ;AA5EK;AA+E1B,4CAAgB,WAAW;AACzB,SAAK;AACL,QAAI,MAAM,SAAS,cAAc;AACjC,QAAI,MAAM,QAAQ,UAAU;AAC5B,QAAI,MAAM,SAAS,UAAU;AAE7B,QAAI,gBAAgB,KAAK;AACzB,QAAK,YAAY,iBAAkB,CAAC,gBAAM,wBAAwB;AAChE,oBAAc,OAAO,UAAU,MAAM;AACnC,YAAI,MAAM,IAAI,gBAAgB;AADhC;AADF,WAIO;AACL,UAAI,MAAM,cAAc;AAZD;AAezB,QAAI,UAAU,SAAS,cAAc;AACrC,YAAQ,YAAY;AACpB,SAAK,eAAe,YAAY;AAEhC,eAAW,QAAQ,UAAU,SAAS,QAAQ;AAC5C,UAAI,SAAS;AACb,UAAI,UAAU;AAFT;AAlGiB;AAwG1B;AAAe;;AACb,SAAK;AACL,eAAW,QAAS,mBAAY;AAI9B,iBAAW,YAAM;AACf,YAAI,CAAC,OAAK,QAAQ;AAChB;AACA;AAHa;AAKf,cAAM,KAAK;AAEX,mBAAW,SAAS;AAPtB,SAQG;AAZE;AA1GiB;;AA0H1B,MAAI,SAAS;AACX,WAAO,SAAS;AA3HQ;AA8H1B,8CAAkB;AAChB,QAAI,CAAC,KAAK,QAAQ;AAChB,YAAM,IAAI,MAAM;AAFF;AA9HQ;AAAA;AAsI5B,IAAI,QAAQ,OAAO;AACnB,OAAO,QAAQ,SAAS,QAAQ;AAC9B,MAAI,eAAe;AACjB,YAAQ,KAAK;AACb;AAH4B;AAK9B,kBAAgB,KAAK,YAAY;AAC/B,QAAI,eAAe;AACjB,qBAAe,KAAK;AAFS;AAAjC;AAMA,MAAI;AACF,kBAAc;AADhB,YAEU;AACR,QAAI,CAAC,eAAe;AAClB,cAAQ,MAAM;AACd,sBAAgB,KAAK,YAAY;AAC/B,YAAI,eAAe,WAAW,uBAAuB;AACnD,yBAAe,MAAM;AAFQ;AAAjC;AAKA;AARM;AAUR,QAAI,uBAAuB;AAC3B,kBAAc,cAAc,KAAK,YAAY;AAC3C,aAAO,qBAAqB;AAD9B,OAEG,MAAM,YAAY,CAFrB,GAIG,KAAK,YAAY;AAMlB,UAAI,qBAAqB,QAAQ;AAC/B;AAPgB;AAJpB;AAxB4B;AAAhC;AAyCA,SAAS,cAAc,WAAW;AAChC,MAAI,QAAQ,SAAS,YAAY;AACjC,QAAM,gBAAgB,WAAW,OAAO,OAAO;AAC/C,SAAO,cAAc;AAxPvB;AA2PA,SAAS,QAAQ;AACf,MAAI,eAAe;AACjB,kBAAc;AACd,kBAAc;AAHD;AA3PjB;AAkQA,SAAS,eAAe,OAAO,OAAO,MAAM;AAC1C,MAAI,oBAAoB,SAAS,eAAe;AAChD,MAAI,WAAW,KAAK,MAAM,MAAM,QAAQ;AACxC,MAAI,cAAc,kBAAkB,cAAc;AAClD,MAAI,eAAe,kBAAkB,cAAc;AACnD,cAAY,QAAQ;AACpB,OAAK,IAAI,0BAA0B,EAAE,sBAAa,WAAW,KACzD,KAAM,eAAQ;AAChB,iBAAa,cAAc;AAF7B;AAxQF;AA8QA,IAAI,iBAAiB,CAAC,CAAC,SAAS;AAEhC,OAAO,iBAAiB,WAAW,UAAS,OAAO;AAGjD,MAAI,MAAM,YAA4B,aAAM,WAAW,MAAM,YACzD,CAAC,MAAiB,YAAC,MAAM,YAAY,OAAO,UAAU,OAAO,QAAQ;AACvE,WAAO;AACP,QAAI,gBAAgB;AAGlB;AALqE;AAOvE,UAAM;AACN,QAAI,MAAM,0BAA0B;AAClC,YAAM;AADR,WAEO;AACL,YAAM;AAX+D;AAavE;AAjB+C;AAAnD,GAmBG;AACH,IAAI,gBAAgB;AAClB,WAAS,YAAY,aAAa,UAAS,OAAO;AAChD,YAAQ,SAAS,OAAO;AACxB,QAAI,MAAM,YAAqB,MAAM,MAAM,SAAS;AAClD,YAAM,UAAU;AAChB,aAAO;AAJuC;AAAlD;AArSF;AA8SA,IAAI,mBAAmB,QAAQ;AAG7B,MAAI,0BAA0B,iCAAS,OAAO;AAC5C,QAAI,MAAM,WAAW,YAAY,MAAM,0BAA0B;AAC/D,YAAM;AAFoC;AAA9C;AAKA,SAAO,iBAAiB,eAAe;AACvC,SAAO,iBAAiB,cAAc;AAvTxC;AA0TA,IAAI;AACJ,SAAS,gBAAgB;AACvB,MAAI,CAAC,gBAAgB;AACnB,qBAAiB,0BAAqB;AACtC,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,MAAM;AAHC;AAMnB,qBAAiB,eAAe,SAAS,uBACvC,SAAS,eAAe,wBAAwB,OAAO;AACzD,aAAS,eAAe,eAAe,UAAU;AAT5B;AAWvB,SAAO;AAtUT;AAyUA,4BAAuB;AACrB,oBAAkB;AAElB,kDAAmB,aAAa,eAAe,gBAAgB,MAAM;AACnE,QAAI,eAAe;AACjB,YAAM,IAAI,MAAM;AAFiD;AAInE,oBAAgB,IAAI,gBAAgB,aAAa,eACb,gBAAgB;AACpD,WAAO;AAIX;AAbkC;QAchC,kC;;;;;;;ACxTF;;AAEA,SAAS,oBAAoB,QAAQ,UAAU,WAAW;AACxD,MAAI,YAAY;AAChB,MAAI,YAAY;AAChB,MAAI,YAAY;AAChB,MAAI,YAAY;AAChB,MAAI,UAAU;AACd,MAAI,cAAc;AAelB,MAAI,wBAAwB;AAU5B,WAAS,uBAAuB;AAC9B,WAAO,SAAS,iBAAiB;AAhCqB;AAmCxD,WAAS,oBAAoB;AAC3B,QAAI,SAAS,SAAS,cAAc;AAEpC,WAAO,SAAS,KAAK,MAAM,OAAO,aAAa;AAtCO;AAyCxD,WAAS,wBAAwB,SAAS;AACxC,WAAO,UAAU,QAAQ,iBAAiB,qBAAqB;AA1CT;AA6CxD,WAAS,kBAAkB,SAAS;AAClC,QAAI,CAAC,SACH,OAAO;AAET,QAAI,SAAS,QAAQ,aAAa;AAClC,QAAI,WAAW,QAAQ,aAAa;AACpC,QAAI,OAAO;AACX,QAAI,UAAU;AACZ,UAAI;AACF,eAAO,KAAK,MAAM;AADpB,QAEE,OAAO,GAAG;AACV,gBAAQ,KAAK,oCAAoC;AAJvC;AAPoB;AAclC;AAAS,UAAI;AAAQ,YAAM;AAApB;AA3D+C;AA8DxD,WAAS,mBAAmB,MAAM;AAChC,QAAI,YAAY,SAAS,YAAY;AACrC,cAAU,UAAU,aAAa,MAAM;AACvC,cAAU,WAAW;AACrB,aAAS,cAAc;AAlE+B;AAqExD,WAAS,YAAY,KAAK,WAAW,WAAW;AAC9C,gBAAY,aAAa,SAAS,WAAW,MAAM,CAAnD;AACA,gBAAY,aAAa,SAAS,aAAa,CAA/C;AAEA,QAAI,MAAM,IAAI;AACd,QAAI,KAAK,OAAO,KAAK;AACrB,QAAI,IAAI,kBAAkB;AACxB,UAAI,iBAAiB;AAPuB;AAS9C,QAAI,qBAAqB,YAAW;AAClC,UAAI,IAAI,cAAc,GAAG;AACvB,YAAI,IAAI,UAAU,OAAO,IAAI,WAAW,GAAG;AACzC,oBAAU,IAAI;AADhB,eAEO;AACL;AAJqB;AADS;AAApC;AASA,QAAI,UAAU;AACd,QAAI,YAAY;AAIhB,QAAI;AACF,UAAI,KAAK;AADX,MAEE,OAAO,GAAG;AACV;AA1B4C;AArEQ;AA2HxD,WAAS,cAAc,MAAM,MAAM,iBAAiB,iBAAiB;AACnE,QAAI,UAAU,KAAK,QAAQ,WAAW,OAAO;AAG7C,aAAS,WAAW,MAAM;AACxB,UAAI,KAAK,YAAY,QAAQ,GAC3B,OAAO;AACT,aAAO,KAAK,QAAQ,SAAS,MACjB,QAAQ,QAAQ,MAChB,QAAQ,QAAQ,MAChB,QAAQ,QAAQ,MAChB,QAAQ,QAAQ,MAChB,QAAQ,QAAQ,MAChB,QAAQ,QAAQ,KAChB,QAAQ,QAAQ,KAChB,QAAQ,QAAQ,KAChB,QAAQ,QAAQ;AAhBqC;AAsBnE,aAAS,gBAAgB,MAAM,0BAA0B;AACvD,UAAI,aAAa;AAGjB,UAAI,UAAU;AACd,UAAI,YAAY;AAChB,UAAI,YAAY;AAChB,UAAI,WAAW;AACf,UAAI,UAAU;AAGd,eAAS,cAAc,SAAS,gBAAgB,wBAAwB;AACtE,YAAI,UAAU,QAAQ,QAAQ,SAAS,IAAI,MAAM;AACjD,YAAI,cAAc;AAClB,YAAI,cAAc,KAAK,MAAM,KAAK,GAAG;AACrC,YAAI,WAAW;AACf,YAAI,QAAQ;AAEZ,iBAAS,YAAY;AAGnB,iBAAO,MAAM;AACX,gBAAI,CAAC,QAAQ,QAAQ;AACnB;AACA;AAHS;AAKX,gBAAI,OAAO,QAAQ;AAGnB,gBAAI,UAAU,KAAK,OACjB;AAGF,gBAAI,gBAAgB;AAClB,sBAAQ,UAAU,KAAK;AACvB,kBAAI,OAAO;AAIT,8BAAc,MAAM,GAAG;AACvB,2BAAY,gBAAgB,OACvB,gBAAgB,QAAU,gBAAgB;AAC/C;AAPF,qBAQO,IAAI,UAAU;AACnB;AAXgB;AAalB,sBAAQ,SAAS,KAAK;AACtB,kBAAI,OAAO;AACT,2BAAW,UAAU,MAAM,IAAI;AAC/B;AAhBgB;AAZT;AAiCX,gBAAI,MAAM,KAAK,MAAM;AACrB,gBAAI,OAAO,IAAI,UAAU,GAAG;AAC1B,yBAAW,IAAI,MAAM,WAAW,IAAI;AAnC3B;AAHM;AAPiD;AAiDtE;AA5DqD;AAgEvD,eAAS,WAAW,KAAK,UAAU;AACjC,oBAAY,KAAK,UAAS,SAAS;AACjC,wBAAc,SAAS,OAAO;AADhC,WAEG,YAAY;AACb,kBAAQ,KAAK,MAAM;AACnB;AAJF;AAjEqD;AA0EvD,oBAAc,MAAM,MAAM,YAAW;AACnC,iCAAyB;AAD3B;AAhGiE;AAsGnE,gBAAY,MAAM,UAAS,UAAU;AACnC,mBAAa;AAGb,sBAAgB,UAAU,UAAS,MAAM;AAGvC,iBAAS,OAAO,MAAM;AACpB,cAAI;cAAI;cAAM,QAAQ,IAAI,YAAY;AACtC,cAAI,QAAQ,GAAG;AACb,iBAAK,IAAI,UAAU,GAAG;AACtB,mBAAO,IAAI,OAAO,QAAQ;AAF5B,iBAGO;AACL,iBAAK;AACL,mBAAO;AAPW;AASpB,cAAI,CAAC,UAAU,KAAK;AAClB,sBAAU,MAAM;AAVE;AAYpB,oBAAU,IAAI,QAAQ,KAAK;AAfU;AAmBvC,YAAI,iBAAiB;AACnB;AApBqC;AAAzC;AAJF,OA2BG;AA5PmD;AAgQxD,WAAS,WAAW,MAAM,UAAU;AAGlC,QAAI,MAAM;AACR,aAAO,KAAK;AAJoB;AAOlC,eAAW,YAAY,SAAS,YAAY,CAA5C;AAEA;AACA,gBAAY;AAIZ,QAAI,YAAY;AAChB,QAAI,YAAY,UAAU;AAC1B,QAAI,cAAc,GAAG;AAEnB,UAAI,OAAO;AACX,UAAI,QAAQ,KAAK,WAAW,KAAK,gBAAgB;AAC/C,gBAAQ,IAAI;AACZ,oBAAY,KAAK,QAAQ;AACzB,YAAI,CAAC,WAAW;AACd,cAAI,gBAAgB,KAAK,eAAe;AACxC,mBAAS,eAAe,KAAK,SAAS;AACpC,0BAAc,YAAY;AAC1B,gBAAI,gBAAgB,MAAM;AACxB,0BAAY,KAAK,QAAQ;AACzB;AAFF,mBAGO,IAAI,gBAAgB,eAAe;AACxC,0BAAY,KAAK,QAAQ;AANS;AAFxB;AAH+B;AAe/C;AAfF,aAgBO;AACL,gBAAQ,IAAI;AApBK;AAuBnB,yBAAmB;AACnB,oBAAc;AACd;AAzCgC;AA6ClC,QAAI,mBAAmB;AACvB,QAAI,iBAAiB;AACrB,uBAAmB,4BAAW;AAC5B;AACA,UAAI,kBAAkB,WAAW;AAC/B;AACA,2BAAmB;AACnB,sBAAc;AALY;AAA9B;AAUA,aAAS,iBAAiB,MAAM;AAC9B,UAAI,OAAO,KAAK;AAGhB,WAAK,OAAO,UAAS,MAAM,UAAU;AACnC,sBAAc,MAAM,MAAM,UAAU,YAAW;AAC7C,kBAAQ,KAAK,OAAO;AAEpB,kBAAQ,KAAK,MAAM,OAAO;AAC1B,sBAAY;AAEZ;AANF;AADF;AA7DgC;AAyElC,SAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,UAAI,WAAW,IAAI,iBAAiB,UAAU;AAC9C,eAAS,KAAK,MAAM;AA3EY;AAhQoB;AAgVxD,WAAS,QAAQ;AACf,gBAAY;AACZ,gBAAY;AACZ,gBAAY;AAnV0C;AAyWxD,WAAS,eAAe,MAAM;AAC5B,QAAI;AACF,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,aAAO;AACP,aAAO;AACP,aAAO;AACP,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,aAAO;AACP,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,YAAM;AACN,aAAO;AACP,YAAM;AACN,aAAO;AACP,YAAM;AACN,YAAM;AACN,YAAM;AACN,a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","file":"viewer.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 67a151ebb5e544e5a40d","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PDFJS } from 'pdfjs-lib';\n\nconst CSS_UNITS = 96.0 / 72.0;\nconst DEFAULT_SCALE_VALUE = 'auto';\nconst DEFAULT_SCALE = 1.0;\nconst MIN_SCALE = 0.25;\nconst MAX_SCALE = 10.0;\nconst UNKNOWN_SCALE = 0;\nconst MAX_AUTO_SCALE = 1.25;\nconst SCROLLBAR_PADDING = 40;\nconst VERTICAL_PADDING = 5;\n\nconst RendererType = {\n CANVAS: 'canvas',\n SVG: 'svg',\n};\n\n// Replaces {{arguments}} with their values.\nfunction formatL10nValue(text, args) {\n if (!args) {\n return text;\n }\n return text.replace(/\\{\\{\\s*(\\w+)\\s*\\}\\}/g, (all, name) => {\n return (name in args ? args[name] : '{{' + name + '}}');\n });\n}\n\n/**\n * No-op implemetation of the localization service.\n * @implements {IL10n}\n */\nlet NullL10n = {\n get(property, args, fallback) {\n return Promise.resolve(formatL10nValue(fallback, args));\n },\n\n translate(element) {\n return Promise.resolve();\n },\n};\n\n/**\n * Disables fullscreen support, and by extension Presentation Mode,\n * in browsers which support the fullscreen API.\n * @var {boolean}\n */\nPDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ?\n false : PDFJS.disableFullscreen);\n\n/**\n * Enables CSS only zooming.\n * @var {boolean}\n */\nPDFJS.useOnlyCssZoom = (PDFJS.useOnlyCssZoom === undefined ?\n false : PDFJS.useOnlyCssZoom);\n\n/**\n * The maximum supported canvas size in total pixels e.g. width * height.\n * The default value is 4096 * 4096. Use -1 for no limit.\n * @var {number}\n */\nPDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ?\n 16777216 : PDFJS.maxCanvasPixels);\n\n/**\n * Disables saving of the last position of the viewed PDF.\n * @var {boolean}\n */\nPDFJS.disableHistory = (PDFJS.disableHistory === undefined ?\n false : PDFJS.disableHistory);\n\n/**\n * Disables creation of the text layer that used for text selection and search.\n * @var {boolean}\n */\nPDFJS.disableTextLayer = (PDFJS.disableTextLayer === undefined ?\n false : PDFJS.disableTextLayer);\n\n/**\n * Disables maintaining the current position in the document when zooming.\n */\nPDFJS.ignoreCurrentPositionOnZoom = (PDFJS.ignoreCurrentPositionOnZoom ===\n undefined ? false : PDFJS.ignoreCurrentPositionOnZoom);\n\nif (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n /**\n * Interface locale settings.\n * @var {string}\n */\n PDFJS.locale =\n (PDFJS.locale === undefined && typeof navigator !== 'undefined' ?\n navigator.language : PDFJS.locale);\n}\n\n/**\n * Returns scale factor for the canvas. It makes sense for the HiDPI displays.\n * @return {Object} The object with horizontal (sx) and vertical (sy)\n scales. The scaled property is set to false if scaling is\n not required, true otherwise.\n */\nfunction getOutputScale(ctx) {\n let devicePixelRatio = window.devicePixelRatio || 1;\n let backingStoreRatio = ctx.webkitBackingStorePixelRatio ||\n ctx.mozBackingStorePixelRatio ||\n ctx.msBackingStorePixelRatio ||\n ctx.oBackingStorePixelRatio ||\n ctx.backingStorePixelRatio || 1;\n let pixelRatio = devicePixelRatio / backingStoreRatio;\n return {\n sx: pixelRatio,\n sy: pixelRatio,\n scaled: pixelRatio !== 1,\n };\n}\n\n/**\n * Scrolls specified element into view of its parent.\n * @param {Object} element - The element to be visible.\n * @param {Object} spot - An object with optional top and left properties,\n * specifying the offset from the top left edge.\n * @param {boolean} skipOverflowHiddenElements - Ignore elements that have\n * the CSS rule `overflow: hidden;` set. The default is false.\n */\nfunction scrollIntoView(element, spot, skipOverflowHiddenElements = false) {\n // Assuming offsetParent is available (it's not available when viewer is in\n // hidden iframe or object). We have to scroll: if the offsetParent is not set\n // producing the error. See also animationStarted.\n let parent = element.offsetParent;\n if (!parent) {\n console.error('offsetParent is not set -- cannot scroll');\n return;\n }\n let offsetY = element.offsetTop + element.clientTop;\n let offsetX = element.offsetLeft + element.clientLeft;\n while (parent.clientHeight === parent.scrollHeight ||\n (skipOverflowHiddenElements &&\n getComputedStyle(parent).overflow === 'hidden')) {\n if (parent.dataset._scaleY) {\n offsetY /= parent.dataset._scaleY;\n offsetX /= parent.dataset._scaleX;\n }\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n if (!parent) {\n return; // no need to scroll\n }\n }\n if (spot) {\n if (spot.top !== undefined) {\n offsetY += spot.top;\n }\n if (spot.left !== undefined) {\n offsetX += spot.left;\n parent.scrollLeft = offsetX;\n }\n }\n parent.scrollTop = offsetY;\n}\n\n/**\n * Helper function to start monitoring the scroll event and converting them into\n * PDF.js friendly one: with scroll debounce and scroll direction.\n */\nfunction watchScroll(viewAreaElement, callback) {\n let debounceScroll = function(evt) {\n if (rAF) {\n return;\n }\n // schedule an invocation of scroll for next animation frame.\n rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {\n rAF = null;\n\n let currentY = viewAreaElement.scrollTop;\n let lastY = state.lastY;\n if (currentY !== lastY) {\n state.down = currentY > lastY;\n }\n state.lastY = currentY;\n callback(state);\n });\n };\n\n let state = {\n down: true,\n lastY: viewAreaElement.scrollTop,\n _eventHandler: debounceScroll,\n };\n\n let rAF = null;\n viewAreaElement.addEventListener('scroll', debounceScroll, true);\n return state;\n}\n\n/**\n * Helper function to parse query string (e.g. ?param1=value&parm2=...).\n */\nfunction parseQueryString(query) {\n let parts = query.split('&');\n let params = Object.create(null);\n for (let i = 0, ii = parts.length; i < ii; ++i) {\n let param = parts[i].split('=');\n let key = param[0].toLowerCase();\n let value = param.length > 1 ? param[1] : null;\n params[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n return params;\n}\n\n/**\n * Use binary search to find the index of the first item in a given array which\n * passes a given condition. The items are expected to be sorted in the sense\n * that if the condition is true for one item in the array, then it is also true\n * for all following items.\n *\n * @returns {Number} Index of the first array element to pass the test,\n * or |items.length| if no such element exists.\n */\nfunction binarySearchFirstItem(items, condition) {\n let minIndex = 0;\n let maxIndex = items.length - 1;\n\n if (items.length === 0 || !condition(items[maxIndex])) {\n return items.length;\n }\n if (condition(items[minIndex])) {\n return minIndex;\n }\n\n while (minIndex < maxIndex) {\n let currentIndex = (minIndex + maxIndex) >> 1;\n let currentItem = items[currentIndex];\n if (condition(currentItem)) {\n maxIndex = currentIndex;\n } else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n}\n\n/**\n * Approximates float number as a fraction using Farey sequence (max order\n * of 8).\n * @param {number} x - Positive float number.\n * @returns {Array} Estimated fraction: the first array item is a numerator,\n * the second one is a denominator.\n */\nfunction approximateFraction(x) {\n // Fast paths for int numbers or their inversions.\n if (Math.floor(x) === x) {\n return [x, 1];\n }\n let xinv = 1 / x;\n let limit = 8;\n if (xinv > limit) {\n return [1, limit];\n } else if (Math.floor(xinv) === xinv) {\n return [1, xinv];\n }\n\n let x_ = x > 1 ? xinv : x;\n // a/b and c/d are neighbours in Farey sequence.\n let a = 0, b = 1, c = 1, d = 1;\n // Limiting search to order 8.\n while (true) {\n // Generating next term in sequence (order of q).\n let p = a + c, q = b + d;\n if (q > limit) {\n break;\n }\n if (x_ <= p / q) {\n c = p; d = q;\n } else {\n a = p; b = q;\n }\n }\n let result;\n // Select closest of the neighbours to x.\n if (x_ - a / b < c / d - x_) {\n result = x_ === x ? [a, b] : [b, a];\n } else {\n result = x_ === x ? [c, d] : [d, c];\n }\n return result;\n}\n\nfunction roundToDivide(x, div) {\n let r = x % div;\n return r === 0 ? x : Math.round(x - r + div);\n}\n\n/**\n * Generic helper to find out what elements are visible within a scroll pane.\n */\nfunction getVisibleElements(scrollEl, views, sortByVisibility = false) {\n let top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight;\n let left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth;\n\n function isElementBottomBelowViewTop(view) {\n let element = view.div;\n let elementBottom =\n element.offsetTop + element.clientTop + element.clientHeight;\n return elementBottom > top;\n }\n\n let visible = [], view, element;\n let currentHeight, viewHeight, hiddenHeight, percentHeight;\n let currentWidth, viewWidth;\n let firstVisibleElementInd = views.length === 0 ? 0 :\n binarySearchFirstItem(views, isElementBottomBelowViewTop);\n\n for (let i = firstVisibleElementInd, ii = views.length; i < ii; i++) {\n view = views[i];\n element = view.div;\n currentHeight = element.offsetTop + element.clientTop;\n viewHeight = element.clientHeight;\n\n if (currentHeight > bottom) {\n break;\n }\n\n currentWidth = element.offsetLeft + element.clientLeft;\n viewWidth = element.clientWidth;\n if (currentWidth + viewWidth < left || currentWidth > right) {\n continue;\n }\n hiddenHeight = Math.max(0, top - currentHeight) +\n Math.max(0, currentHeight + viewHeight - bottom);\n percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0;\n\n visible.push({\n id: view.id,\n x: currentWidth,\n y: currentHeight,\n view,\n percent: percentHeight,\n });\n }\n\n let first = visible[0];\n let last = visible[visible.length - 1];\n\n if (sortByVisibility) {\n visible.sort(function(a, b) {\n let pc = a.percent - b.percent;\n if (Math.abs(pc) > 0.001) {\n return -pc;\n }\n return a.id - b.id; // ensure stability\n });\n }\n return { first, last, views: visible, };\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenuHandler(evt) {\n evt.preventDefault();\n}\n\nfunction isDataSchema(url) {\n let i = 0, ii = url.length;\n while (i < ii && url[i].trim() === '') {\n i++;\n }\n return url.substr(i, 5).toLowerCase() === 'data:';\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPDFFileNameFromURL(url, defaultFilename = 'document.pdf') {\n if (isDataSchema(url)) {\n console.warn('getPDFFileNameFromURL: ' +\n 'ignoring \"data:\" URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^\\/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^\\/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n let splitURI = reURI.exec(url);\n let suggestedFilename = reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.indexOf('%') !== -1) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename =\n reFilename.exec(decodeURIComponent(suggestedFilename))[0];\n } catch (ex) { // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nfunction normalizeWheelEventDelta(evt) {\n let delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);\n let angle = Math.atan2(evt.deltaY, evt.deltaX);\n if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {\n // All that is left-up oriented has to change the sign.\n delta = -delta;\n }\n\n const MOUSE_DOM_DELTA_PIXEL_MODE = 0;\n const MOUSE_DOM_DELTA_LINE_MODE = 1;\n const MOUSE_PIXELS_PER_LINE = 30;\n const MOUSE_LINES_PER_PAGE = 30;\n\n // Converts delta to per-page units\n if (evt.deltaMode === MOUSE_DOM_DELTA_PIXEL_MODE) {\n delta /= MOUSE_PIXELS_PER_LINE * MOUSE_LINES_PER_PAGE;\n } else if (evt.deltaMode === MOUSE_DOM_DELTA_LINE_MODE) {\n delta /= MOUSE_LINES_PER_PAGE;\n }\n return delta;\n}\n\nfunction cloneObj(obj) {\n let result = Object.create(null);\n for (let i in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, i)) {\n result[i] = obj[i];\n }\n }\n return result;\n}\n\n/**\n * Promise that is resolved when DOM window becomes visible.\n */\nlet animationStarted = new Promise(function (resolve) {\n window.requestAnimationFrame(resolve);\n});\n\n/**\n * (deprecated) External localization service.\n */\nlet mozL10n;\n\n/**\n * (deprecated) Promise that is resolved when UI localization is finished.\n */\nlet localized = Promise.resolve();\n\n/**\n * Simple event bus for an application. Listeners are attached using the\n * `on` and `off` methods. To raise an event, the `dispatch` method shall be\n * used.\n */\nclass EventBus {\n constructor() {\n this._listeners = Object.create(null);\n }\n\n on(eventName, listener) {\n let eventListeners = this._listeners[eventName];\n if (!eventListeners) {\n eventListeners = [];\n this._listeners[eventName] = eventListeners;\n }\n eventListeners.push(listener);\n }\n\n off(eventName, listener) {\n let eventListeners = this._listeners[eventName];\n let i;\n if (!eventListeners || ((i = eventListeners.indexOf(listener)) < 0)) {\n return;\n }\n eventListeners.splice(i, 1);\n }\n\n dispatch(eventName) {\n let eventListeners = this._listeners[eventName];\n if (!eventListeners || eventListeners.length === 0) {\n return;\n }\n // Passing all arguments after the eventName to the listeners.\n let args = Array.prototype.slice.call(arguments, 1);\n // Making copy of the listeners array in case if it will be modified\n // during dispatch.\n eventListeners.slice(0).forEach(function (listener) {\n listener.apply(null, args);\n });\n }\n}\n\nfunction clamp(v, min, max) {\n return Math.min(Math.max(v, min), max);\n}\n\nclass ProgressBar {\n constructor(id, { height, width, units, } = {}) {\n this.visible = true;\n\n // Fetch the sub-elements for later.\n this.div = document.querySelector(id + ' .progress');\n // Get the loading bar element, so it can be resized to fit the viewer.\n this.bar = this.div.parentNode;\n\n // Get options, with sensible defaults.\n this.height = height || 100;\n this.width = width || 100;\n this.units = units || '%';\n\n // Initialize heights.\n this.div.style.height = this.height + this.units;\n this.percent = 0;\n }\n\n _updateBar() {\n if (this._indeterminate) {\n this.div.classList.add('indeterminate');\n this.div.style.width = this.width + this.units;\n return;\n }\n\n this.div.classList.remove('indeterminate');\n let progressSize = this.width * this._percent / 100;\n this.div.style.width = progressSize + this.units;\n }\n\n get percent() {\n return this._percent;\n }\n\n set percent(val) {\n this._indeterminate = isNaN(val);\n this._percent = clamp(val, 0, 100);\n this._updateBar();\n }\n\n setWidth(viewer) {\n if (!viewer) {\n return;\n }\n let container = viewer.parentNode;\n let scrollbarWidth = container.offsetWidth - viewer.offsetWidth;\n if (scrollbarWidth > 0) {\n this.bar.setAttribute('style', 'width: calc(100% - ' +\n scrollbarWidth + 'px);');\n }\n }\n\n hide() {\n if (!this.visible) {\n return;\n }\n this.visible = false;\n this.bar.classList.add('hidden');\n document.body.classList.remove('loadingInProgress');\n }\n\n show() {\n if (this.visible) {\n return;\n }\n this.visible = true;\n document.body.classList.add('loadingInProgress');\n this.bar.classList.remove('hidden');\n }\n}\n\nexport {\n CSS_UNITS,\n DEFAULT_SCALE_VALUE,\n DEFAULT_SCALE,\n MIN_SCALE,\n MAX_SCALE,\n UNKNOWN_SCALE,\n MAX_AUTO_SCALE,\n SCROLLBAR_PADDING,\n VERTICAL_PADDING,\n cloneObj,\n RendererType,\n mozL10n,\n NullL10n,\n EventBus,\n ProgressBar,\n getPDFFileNameFromURL,\n noContextMenuHandler,\n parseQueryString,\n getVisibleElements,\n roundToDivide,\n approximateFraction,\n getOutputScale,\n scrollIntoView,\n watchScroll,\n binarySearchFirstItem,\n normalizeWheelEventDelta,\n animationStarted,\n localized,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/ui_utils.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals module, __non_webpack_require__ */\n\n'use strict';\n\nvar pdfjsLib;\nif (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {\n pdfjsLib = window['pdfjs-dist/build/pdf'];\n} else {\n pdfjsLib = __non_webpack_require__('../build/pdf.js');\n}\nmodule.exports = pdfjsLib;\n\n\n\n// WEBPACK FOOTER //\n// web/pdfjs.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { EventBus } from './ui_utils';\n\n// Attaching to the application event bus to dispatch events to the DOM for\n// backwards viewer API compatibility.\nfunction attachDOMEventsToEventBus(eventBus) {\n eventBus.on('documentload', function() {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('documentload', true, true, {});\n window.dispatchEvent(event);\n });\n eventBus.on('pagerendered', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagerendered', true, true, {\n pageNumber: evt.pageNumber,\n cssTransform: evt.cssTransform,\n });\n evt.source.div.dispatchEvent(event);\n });\n eventBus.on('textlayerrendered', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('textlayerrendered', true, true, {\n pageNumber: evt.pageNumber,\n });\n evt.source.textLayerDiv.dispatchEvent(event);\n });\n eventBus.on('pagechange', function(evt) {\n let event = document.createEvent('UIEvents');\n event.initUIEvent('pagechange', true, true, window, 0);\n event.pageNumber = evt.pageNumber;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('pagesinit', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagesinit', true, true, null);\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('pagesloaded', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagesloaded', true, true, {\n pagesCount: evt.pagesCount,\n });\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('scalechange', function(evt) {\n let event = document.createEvent('UIEvents');\n event.initUIEvent('scalechange', true, true, window, 0);\n event.scale = evt.scale;\n event.presetValue = evt.presetValue;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('updateviewarea', function(evt) {\n let event = document.createEvent('UIEvents');\n event.initUIEvent('updateviewarea', true, true, window, 0);\n event.location = evt.location;\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('find', function(evt) {\n if (evt.source === window) {\n return; // event comes from FirefoxCom, no need to replicate\n }\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('find' + evt.type, true, true, {\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: evt.caseSensitive,\n highlightAll: evt.highlightAll,\n findPrevious: evt.findPrevious,\n });\n window.dispatchEvent(event);\n });\n eventBus.on('attachmentsloaded', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('attachmentsloaded', true, true, {\n attachmentsCount: evt.attachmentsCount,\n });\n evt.source.container.dispatchEvent(event);\n });\n eventBus.on('sidebarviewchanged', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('sidebarviewchanged', true, true, {\n view: evt.view,\n });\n evt.source.outerContainer.dispatchEvent(event);\n });\n eventBus.on('pagemode', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('pagemode', true, true, {\n mode: evt.mode,\n });\n evt.source.pdfViewer.container.dispatchEvent(event);\n });\n eventBus.on('namedaction', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('namedaction', true, true, {\n action: evt.action,\n });\n evt.source.pdfViewer.container.dispatchEvent(event);\n });\n eventBus.on('presentationmodechanged', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('presentationmodechanged', true, true, {\n active: evt.active,\n switchInProgress: evt.switchInProgress,\n });\n window.dispatchEvent(event);\n });\n eventBus.on('outlineloaded', function(evt) {\n let event = document.createEvent('CustomEvent');\n event.initCustomEvent('outlineloaded', true, true, {\n outlineCount: evt.outlineCount,\n });\n evt.source.container.dispatchEvent(event);\n });\n}\n\nlet globalEventBus = null;\nfunction getGlobalEventBus() {\n if (globalEventBus) {\n return globalEventBus;\n }\n globalEventBus = new EventBus();\n attachDOMEventsToEventBus(globalEventBus);\n return globalEventBus;\n}\n\nexport {\n attachDOMEventsToEventBus,\n getGlobalEventBus,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/dom_events.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst CLEANUP_TIMEOUT = 30000;\n\nconst RenderingStates = {\n INITIAL: 0,\n RUNNING: 1,\n PAUSED: 2,\n FINISHED: 3,\n};\n\n/**\n * Controls rendering of the views for pages and thumbnails.\n */\nclass PDFRenderingQueue {\n constructor() {\n this.pdfViewer = null;\n this.pdfThumbnailViewer = null;\n this.onIdle = null;\n this.highestPriorityPage = null;\n this.idleTimeout = null;\n this.printing = false;\n this.isThumbnailViewEnabled = false;\n }\n\n /**\n * @param {PDFViewer} pdfViewer\n */\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n /**\n * @param {PDFThumbnailViewer} pdfThumbnailViewer\n */\n setThumbnailViewer(pdfThumbnailViewer) {\n this.pdfThumbnailViewer = pdfThumbnailViewer;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isHighestPriority(view) {\n return this.highestPriorityPage === view.renderingId;\n }\n\n /**\n * @param {Object} currentlyVisiblePages\n */\n renderHighestPriority(currentlyVisiblePages) {\n if (this.idleTimeout) {\n clearTimeout(this.idleTimeout);\n this.idleTimeout = null;\n }\n\n // Pages have a higher priority than thumbnails, so check them first.\n if (this.pdfViewer.forceRendering(currentlyVisiblePages)) {\n return;\n }\n // No pages needed rendering, so check thumbnails.\n if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) {\n if (this.pdfThumbnailViewer.forceRendering()) {\n return;\n }\n }\n\n if (this.printing) {\n // If printing is currently ongoing do not reschedule cleanup.\n return;\n }\n\n if (this.onIdle) {\n this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT);\n }\n }\n\n /**\n * @param {Object} visible\n * @param {Array} views\n * @param {boolean} scrolledDown\n */\n getHighestPriority(visible, views, scrolledDown) {\n /**\n * The state has changed. Figure out which page has the highest priority to\n * render next (if any).\n *\n * Priority:\n * 1. visible pages\n * 2. if last scrolled down, the page after the visible pages, or\n * if last scrolled up, the page before the visible pages\n */\n var visibleViews = visible.views;\n\n var numVisible = visibleViews.length;\n if (numVisible === 0) {\n return false;\n }\n for (var i = 0; i < numVisible; ++i) {\n var view = visibleViews[i].view;\n if (!this.isViewFinished(view)) {\n return view;\n }\n }\n\n // All the visible views have rendered; try to render next/previous pages.\n if (scrolledDown) {\n var nextPageIndex = visible.last.id;\n // IDs start at 1, so no need to add 1.\n if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) {\n return views[nextPageIndex];\n }\n } else {\n var previousPageIndex = visible.first.id - 2;\n if (views[previousPageIndex] &&\n !this.isViewFinished(views[previousPageIndex])) {\n return views[previousPageIndex];\n }\n }\n // Everything that needs to be rendered has been.\n return null;\n }\n\n /**\n * @param {IRenderableView} view\n * @returns {boolean}\n */\n isViewFinished(view) {\n return view.renderingState === RenderingStates.FINISHED;\n }\n\n /**\n * Render a page or thumbnail view. This calls the appropriate function\n * based on the views state. If the view is already rendered it will return\n * `false`.\n *\n * @param {IRenderableView} view\n */\n renderView(view) {\n switch (view.renderingState) {\n case RenderingStates.FINISHED:\n return false;\n case RenderingStates.PAUSED:\n this.highestPriorityPage = view.renderingId;\n view.resume();\n break;\n case RenderingStates.RUNNING:\n this.highestPriorityPage = view.renderingId;\n break;\n case RenderingStates.INITIAL:\n this.highestPriorityPage = view.renderingId;\n var continueRendering = () => {\n this.renderHighestPriority();\n };\n view.draw().then(continueRendering, continueRendering);\n break;\n }\n return true;\n }\n}\n\nexport {\n RenderingStates,\n PDFRenderingQueue,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_rendering_queue.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals PDFBug, Stats */\n\nimport {\n animationStarted, DEFAULT_SCALE_VALUE, getPDFFileNameFromURL, MAX_SCALE,\n MIN_SCALE, noContextMenuHandler, normalizeWheelEventDelta,\n parseQueryString, ProgressBar, RendererType, UNKNOWN_SCALE\n} from './ui_utils';\nimport {\n build, createBlob, getDocument, getFilenameFromUrl, InvalidPDFException,\n MissingPDFException, OPS, PDFJS, shadow, UnexpectedResponseException,\n UNSUPPORTED_FEATURES, version\n} from 'pdfjs-lib';\nimport { CursorTool, PDFCursorTools } from './pdf_cursor_tools';\nimport { PDFRenderingQueue, RenderingStates } from './pdf_rendering_queue';\nimport { PDFSidebar, SidebarView } from './pdf_sidebar';\nimport { PDFViewer, PresentationModeState } from './pdf_viewer';\nimport { getGlobalEventBus } from './dom_events';\nimport { OverlayManager } from './overlay_manager';\nimport { PasswordPrompt } from './password_prompt';\nimport { PDFAttachmentViewer } from './pdf_attachment_viewer';\nimport { PDFDocumentProperties } from './pdf_document_properties';\nimport { PDFFindBar } from './pdf_find_bar';\nimport { PDFFindController } from './pdf_find_controller';\nimport { PDFHistory } from './pdf_history';\nimport { PDFLinkService } from './pdf_link_service';\nimport { PDFOutlineViewer } from './pdf_outline_viewer';\nimport { PDFPresentationMode } from './pdf_presentation_mode';\nimport { PDFThumbnailViewer } from './pdf_thumbnail_viewer';\nimport { SecondaryToolbar } from './secondary_toolbar';\nimport { Toolbar } from './toolbar';\nimport { ViewHistory } from './view_history';\n\nconst DEFAULT_SCALE_DELTA = 1.1;\nconst DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;\n\nfunction configure(PDFJS) {\n PDFJS.imageResourcesPath = './images/';\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL || GENERIC || CHROME')) {\n PDFJS.workerSrc = '../build/pdf.worker.js';\n }\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n PDFJS.cMapUrl = '../external/bcmaps/';\n PDFJS.cMapPacked = true;\n PDFJS.workerSrc = '../src/worker_loader.js';\n PDFJS.pdfjsNext = true;\n } else {\n PDFJS.cMapUrl = '../web/cmaps/';\n PDFJS.cMapPacked = true;\n }\n}\n\nconst DefaultExternalServices = {\n updateFindControlState(data) {},\n initPassiveLoading(callbacks) {},\n fallback(data, callback) {},\n reportTelemetry(data) {},\n createDownloadManager() {\n throw new Error('Not implemented: createDownloadManager');\n },\n createPreferences() {\n throw new Error('Not implemented: createPreferences');\n },\n createL10n() {\n throw new Error('Not implemented: createL10n');\n },\n supportsIntegratedFind: false,\n supportsDocumentFonts: true,\n supportsDocumentColors: true,\n supportedMouseWheelZoomModifierKeys: {\n ctrlKey: true,\n metaKey: true,\n },\n};\n\nlet PDFViewerApplication = {\n initialBookmark: document.location.hash.substring(1),\n initialDestination: null,\n initialized: false,\n fellback: false,\n appConfig: null,\n pdfDocument: null,\n pdfLoadingTask: null,\n printService: null,\n /** @type {PDFViewer} */\n pdfViewer: null,\n /** @type {PDFThumbnailViewer} */\n pdfThumbnailViewer: null,\n /** @type {PDFRenderingQueue} */\n pdfRenderingQueue: null,\n /** @type {PDFPresentationMode} */\n pdfPresentationMode: null,\n /** @type {PDFDocumentProperties} */\n pdfDocumentProperties: null,\n /** @type {PDFLinkService} */\n pdfLinkService: null,\n /** @type {PDFHistory} */\n pdfHistory: null,\n /** @type {PDFSidebar} */\n pdfSidebar: null,\n /** @type {PDFOutlineViewer} */\n pdfOutlineViewer: null,\n /** @type {PDFAttachmentViewer} */\n pdfAttachmentViewer: null,\n /** @type {PDFCursorTools} */\n pdfCursorTools: null,\n /** @type {ViewHistory} */\n store: null,\n /** @type {DownloadManager} */\n downloadManager: null,\n /** @type {OverlayManager} */\n overlayManager: null,\n /** @type {Preferences} */\n preferences: null,\n /** @type {Toolbar} */\n toolbar: null,\n /** @type {SecondaryToolbar} */\n secondaryToolbar: null,\n /** @type {EventBus} */\n eventBus: null,\n /** @type {IL10n} */\n l10n: null,\n isInitialViewSet: false,\n downloadComplete: false,\n viewerPrefs: {\n sidebarViewOnLoad: SidebarView.NONE,\n pdfBugEnabled: false,\n showPreviousViewOnLoad: true,\n defaultZoomValue: '',\n disablePageMode: false,\n disablePageLabels: false,\n renderer: 'canvas',\n enhanceTextSelection: false,\n renderInteractiveForms: false,\n enablePrintAutoRotate: false,\n },\n isViewerEmbedded: (window.parent !== window),\n url: '',\n baseUrl: '',\n externalServices: DefaultExternalServices,\n _boundEvents: {},\n\n // Called once when the document is loaded.\n initialize(appConfig) {\n this.preferences = this.externalServices.createPreferences();\n\n configure(PDFJS);\n this.appConfig = appConfig;\n\n return this._readPreferences().then(() => {\n return this._initializeL10n();\n }).then(() => {\n return this._initializeViewerComponents();\n }).then(() => {\n // Bind the various event handlers *after* the viewer has been\n // initialized, to prevent errors if an event arrives too soon.\n this.bindEvents();\n this.bindWindowEvents();\n\n // We can start UI localization now.\n let appContainer = appConfig.appContainer || document.documentElement;\n this.l10n.translate(appContainer).then(() => {\n // Dispatch the 'localized' event on the `eventBus` once the viewer\n // has been fully initialized and translated.\n this.eventBus.dispatch('localized');\n });\n\n if (this.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) {\n // Prevent external links from \"replacing\" the viewer,\n // when it's embedded in e.g. an iframe or an object.\n PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP;\n }\n\n this.initialized = true;\n });\n },\n\n /**\n * @private\n */\n _readPreferences() {\n let { preferences, viewerPrefs, } = this;\n\n return Promise.all([\n preferences.get('enableWebGL').then(function resolved(value) {\n PDFJS.disableWebGL = !value;\n }),\n preferences.get('sidebarViewOnLoad').then(function resolved(value) {\n viewerPrefs['sidebarViewOnLoad'] = value;\n }),\n preferences.get('pdfBugEnabled').then(function resolved(value) {\n viewerPrefs['pdfBugEnabled'] = value;\n }),\n preferences.get('showPreviousViewOnLoad').then(function resolved(value) {\n viewerPrefs['showPreviousViewOnLoad'] = value;\n }),\n preferences.get('defaultZoomValue').then(function resolved(value) {\n viewerPrefs['defaultZoomValue'] = value;\n }),\n preferences.get('enhanceTextSelection').then(function resolved(value) {\n viewerPrefs['enhanceTextSelection'] = value;\n }),\n preferences.get('disableTextLayer').then(function resolved(value) {\n if (PDFJS.disableTextLayer === true) {\n return;\n }\n PDFJS.disableTextLayer = value;\n }),\n preferences.get('disableRange').then(function resolved(value) {\n if (PDFJS.disableRange === true) {\n return;\n }\n PDFJS.disableRange = value;\n }),\n preferences.get('disableStream').then(function resolved(value) {\n if (PDFJS.disableStream === true) {\n return;\n }\n PDFJS.disableStream = value;\n }),\n preferences.get('disableAutoFetch').then(function resolved(value) {\n PDFJS.disableAutoFetch = value;\n }),\n preferences.get('disableFontFace').then(function resolved(value) {\n if (PDFJS.disableFontFace === true) {\n return;\n }\n PDFJS.disableFontFace = value;\n }),\n preferences.get('useOnlyCssZoom').then(function resolved(value) {\n PDFJS.useOnlyCssZoom = value;\n }),\n preferences.get('externalLinkTarget').then(function resolved(value) {\n if (PDFJS.isExternalLinkTargetSet()) {\n return;\n }\n PDFJS.externalLinkTarget = value;\n }),\n preferences.get('renderer').then(function resolved(value) {\n viewerPrefs['renderer'] = value;\n }),\n preferences.get('renderInteractiveForms').then(function resolved(value) {\n viewerPrefs['renderInteractiveForms'] = value;\n }),\n preferences.get('disablePageMode').then(function resolved(value) {\n viewerPrefs['disablePageMode'] = value;\n }),\n preferences.get('disablePageLabels').then(function resolved(value) {\n viewerPrefs['disablePageLabels'] = value;\n }),\n preferences.get('enablePrintAutoRotate').then(function resolved(value) {\n viewerPrefs['enablePrintAutoRotate'] = value;\n }),\n ]).catch(function(reason) { });\n },\n\n _initializeL10n() {\n // Locale can be changed only when special debugging flags is present in\n // the hash section of the URL, or development version of viewer is used.\n // It is not possible to change locale for Firefox extension builds.\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION') ||\n (!PDFJSDev.test('FIREFOX || MOZCENTRAL') &&\n this.viewerPrefs['pdfBugEnabled'])) {\n let hash = document.location.hash.substring(1);\n let hashParams = parseQueryString(hash);\n if ('locale' in hashParams) {\n PDFJS.locale = hashParams['locale'];\n }\n }\n this.l10n = this.externalServices.createL10n();\n return this.l10n.getDirection().then((dir) => {\n document.getElementsByTagName('html')[0].dir = dir;\n });\n },\n\n /**\n * @private\n */\n _initializeViewerComponents() {\n let appConfig = this.appConfig;\n\n return new Promise((resolve, reject) => {\n this.overlayManager = new OverlayManager();\n\n let eventBus = appConfig.eventBus || getGlobalEventBus();\n this.eventBus = eventBus;\n\n let pdfRenderingQueue = new PDFRenderingQueue();\n pdfRenderingQueue.onIdle = this.cleanup.bind(this);\n this.pdfRenderingQueue = pdfRenderingQueue;\n\n let pdfLinkService = new PDFLinkService({\n eventBus,\n });\n this.pdfLinkService = pdfLinkService;\n\n let downloadManager = this.externalServices.createDownloadManager();\n this.downloadManager = downloadManager;\n\n let container = appConfig.mainContainer;\n let viewer = appConfig.viewerContainer;\n this.pdfViewer = new PDFViewer({\n container,\n viewer,\n eventBus,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n downloadManager,\n renderer: this.viewerPrefs['renderer'],\n l10n: this.l10n,\n enhanceTextSelection: this.viewerPrefs['enhanceTextSelection'],\n renderInteractiveForms: this.viewerPrefs['renderInteractiveForms'],\n enablePrintAutoRotate: this.viewerPrefs['enablePrintAutoRotate'],\n });\n pdfRenderingQueue.setViewer(this.pdfViewer);\n pdfLinkService.setViewer(this.pdfViewer);\n\n let thumbnailContainer = appConfig.sidebar.thumbnailView;\n this.pdfThumbnailViewer = new PDFThumbnailViewer({\n container: thumbnailContainer,\n renderingQueue: pdfRenderingQueue,\n linkService: pdfLinkService,\n l10n: this.l10n,\n });\n pdfRenderingQueue.setThumbnailViewer(this.pdfThumbnailViewer);\n\n this.pdfHistory = new PDFHistory({\n linkService: pdfLinkService,\n eventBus,\n });\n pdfLinkService.setHistory(this.pdfHistory);\n\n this.findController = new PDFFindController({\n pdfViewer: this.pdfViewer,\n });\n this.findController.onUpdateResultsCount = (matchCount) => {\n if (this.supportsIntegratedFind) {\n return;\n }\n this.findBar.updateResultsCount(matchCount);\n };\n this.findController.onUpdateState = (state, previous, matchCount) => {\n if (this.supportsIntegratedFind) {\n this.externalServices.updateFindControlState({\n result: state,\n findPrevious: previous,\n });\n } else {\n this.findBar.updateUIState(state, previous, matchCount);\n }\n };\n\n this.pdfViewer.setFindController(this.findController);\n\n // TODO: improve `PDFFindBar` constructor parameter passing\n let findBarConfig = Object.create(appConfig.findBar);\n findBarConfig.findController = this.findController;\n findBarConfig.eventBus = eventBus;\n this.findBar = new PDFFindBar(findBarConfig, this.l10n);\n\n this.pdfDocumentProperties =\n new PDFDocumentProperties(appConfig.documentProperties,\n this.overlayManager, this.l10n);\n\n this.pdfCursorTools = new PDFCursorTools({\n container,\n eventBus,\n preferences: this.preferences,\n });\n\n this.toolbar = new Toolbar(appConfig.toolbar, container, eventBus,\n this.l10n);\n\n this.secondaryToolbar =\n new SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);\n\n if (this.supportsFullscreen) {\n this.pdfPresentationMode = new PDFPresentationMode({\n container,\n viewer,\n pdfViewer: this.pdfViewer,\n eventBus,\n contextMenuItems: appConfig.fullscreen,\n });\n }\n\n this.passwordPrompt = new PasswordPrompt(appConfig.passwordOverlay,\n this.overlayManager, this.l10n);\n\n this.pdfOutlineViewer = new PDFOutlineViewer({\n container: appConfig.sidebar.outlineView,\n eventBus,\n linkService: pdfLinkService,\n });\n\n this.pdfAttachmentViewer = new PDFAttachmentViewer({\n container: appConfig.sidebar.attachmentsView,\n eventBus,\n downloadManager,\n });\n\n // TODO: improve `PDFSidebar` constructor parameter passing\n let sidebarConfig = Object.create(appConfig.sidebar);\n sidebarConfig.pdfViewer = this.pdfViewer;\n sidebarConfig.pdfThumbnailViewer = this.pdfThumbnailViewer;\n sidebarConfig.pdfOutlineViewer = this.pdfOutlineViewer;\n sidebarConfig.eventBus = eventBus;\n this.pdfSidebar = new PDFSidebar(sidebarConfig, this.l10n);\n this.pdfSidebar.onToggled = this.forceRendering.bind(this);\n\n resolve(undefined);\n });\n },\n\n run(config) {\n this.initialize(config).then(webViewerInitialized);\n },\n\n zoomIn(ticks) {\n let newScale = this.pdfViewer.currentScale;\n do {\n newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.ceil(newScale * 10) / 10;\n newScale = Math.min(MAX_SCALE, newScale);\n } while (--ticks > 0 && newScale < MAX_SCALE);\n this.pdfViewer.currentScaleValue = newScale;\n },\n\n zoomOut(ticks) {\n let newScale = this.pdfViewer.currentScale;\n do {\n newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2);\n newScale = Math.floor(newScale * 10) / 10;\n newScale = Math.max(MIN_SCALE, newScale);\n } while (--ticks > 0 && newScale > MIN_SCALE);\n this.pdfViewer.currentScaleValue = newScale;\n },\n\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n },\n\n get pageRotation() {\n return this.pdfViewer.pagesRotation;\n },\n\n set page(val) {\n this.pdfViewer.currentPageNumber = val;\n },\n\n get page() {\n return this.pdfViewer.currentPageNumber;\n },\n\n get printing() {\n return !!this.printService;\n },\n\n get supportsPrinting() {\n return PDFPrintServiceFactory.instance.supportsPrinting;\n },\n\n get supportsFullscreen() {\n let support;\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('MOZCENTRAL')) {\n support = document.fullscreenEnabled === true ||\n document.mozFullScreenEnabled === true;\n } else {\n let doc = document.documentElement;\n support = !!(doc.requestFullscreen || doc.mozRequestFullScreen ||\n doc.webkitRequestFullScreen || doc.msRequestFullscreen);\n\n if (document.fullscreenEnabled === false ||\n document.mozFullScreenEnabled === false ||\n document.webkitFullscreenEnabled === false ||\n document.msFullscreenEnabled === false) {\n support = false;\n }\n }\n if (support && PDFJS.disableFullscreen === true) {\n support = false;\n }\n\n return shadow(this, 'supportsFullscreen', support);\n },\n\n get supportsIntegratedFind() {\n return this.externalServices.supportsIntegratedFind;\n },\n\n get supportsDocumentFonts() {\n return this.externalServices.supportsDocumentFonts;\n },\n\n get supportsDocumentColors() {\n return this.externalServices.supportsDocumentColors;\n },\n\n get loadingBar() {\n let bar = new ProgressBar('#loadingBar');\n return shadow(this, 'loadingBar', bar);\n },\n\n get supportedMouseWheelZoomModifierKeys() {\n return this.externalServices.supportedMouseWheelZoomModifierKeys;\n },\n\n initPassiveLoading() {\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) {\n throw new Error('Not implemented: initPassiveLoading');\n }\n this.externalServices.initPassiveLoading({\n onOpenWithTransport(url, length, transport) {\n PDFViewerApplication.open(url, { range: transport, });\n\n if (length) {\n PDFViewerApplication.pdfDocumentProperties.setFileSize(length);\n }\n },\n onOpenWithData(data) {\n PDFViewerApplication.open(data);\n },\n onOpenWithURL(url, length, originalURL) {\n let file = url, args = null;\n if (length !== undefined) {\n args = { length, };\n }\n if (originalURL !== undefined) {\n file = { file: url, originalURL, };\n }\n PDFViewerApplication.open(file, args);\n },\n onError(err) {\n PDFViewerApplication.l10n.get('loading_error', null,\n 'An error occurred while loading the PDF.').then((msg) => {\n PDFViewerApplication.error(msg, err);\n });\n },\n onProgress(loaded, total) {\n PDFViewerApplication.progress(loaded / total);\n },\n });\n },\n\n setTitleUsingUrl(url) {\n this.url = url;\n this.baseUrl = url.split('#')[0];\n let title = getPDFFileNameFromURL(url, '');\n if (!title) {\n try {\n title = decodeURIComponent(getFilenameFromUrl(url)) || url;\n } catch (ex) {\n // decodeURIComponent may throw URIError,\n // fall back to using the unprocessed url in that case\n title = url;\n }\n }\n this.setTitle(title);\n },\n\n setTitle(title) {\n if (this.isViewerEmbedded) {\n // Embedded PDF viewers should not be changing their parent page's title.\n return;\n }\n document.title = title;\n },\n\n /**\n * Closes opened PDF document.\n * @returns {Promise} - Returns the promise, which is resolved when all\n * destruction is completed.\n */\n close() {\n let errorWrapper = this.appConfig.errorWrapper.container;\n errorWrapper.setAttribute('hidden', 'true');\n\n if (!this.pdfLoadingTask) {\n return Promise.resolve();\n }\n\n let promise = this.pdfLoadingTask.destroy();\n this.pdfLoadingTask = null;\n\n if (this.pdfDocument) {\n this.pdfDocument = null;\n\n this.pdfThumbnailViewer.setDocument(null);\n this.pdfViewer.setDocument(null);\n this.pdfLinkService.setDocument(null, null);\n this.pdfDocumentProperties.setDocument(null, null);\n }\n this.store = null;\n this.isInitialViewSet = false;\n this.downloadComplete = false;\n\n this.pdfSidebar.reset();\n this.pdfOutlineViewer.reset();\n this.pdfAttachmentViewer.reset();\n\n this.findController.reset();\n this.findBar.reset();\n this.toolbar.reset();\n this.secondaryToolbar.reset();\n\n if (typeof PDFBug !== 'undefined') {\n PDFBug.cleanup();\n }\n return promise;\n },\n\n /**\n * Opens PDF document specified by URL or array with additional arguments.\n * @param {string|TypedArray|ArrayBuffer} file - PDF location or binary data.\n * @param {Object} args - (optional) Additional arguments for the getDocument\n * call, e.g. HTTP headers ('httpHeaders') or\n * alternative data transport ('range').\n * @returns {Promise} - Returns the promise, which is resolved when document\n * is opened.\n */\n open(file, args) {\n if ((typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) &&\n (arguments.length > 2 || typeof args === 'number')) {\n return Promise.reject(\n new Error('Call of open() with obsolete signature.'));\n }\n if (this.pdfLoadingTask) {\n // We need to destroy already opened document.\n return this.close().then(() => {\n // Reload the preferences if a document was previously opened.\n this.preferences.reload();\n // ... and repeat the open() call.\n return this.open(file, args);\n });\n }\n\n let parameters = Object.create(null), scale;\n if (typeof file === 'string') { // URL\n this.setTitleUsingUrl(file);\n parameters.url = file;\n } else if (file && 'byteLength' in file) { // ArrayBuffer\n parameters.data = file;\n } else if (file.url && file.originalUrl) {\n this.setTitleUsingUrl(file.originalUrl);\n parameters.url = file.url;\n }\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) {\n parameters.docBaseUrl = this.baseUrl;\n }\n\n if (args) {\n for (let prop in args) {\n parameters[prop] = args[prop];\n }\n\n if (args.scale) {\n scale = args.scale;\n }\n if (args.length) {\n this.pdfDocumentProperties.setFileSize(args.length);\n }\n }\n\n let loadingTask = getDocument(parameters);\n this.pdfLoadingTask = loadingTask;\n\n loadingTask.onPassword = (updateCallback, reason) => {\n this.passwordPrompt.setUpdateCallback(updateCallback, reason);\n this.passwordPrompt.open();\n };\n\n loadingTask.onProgress = ({ loaded, total, }) => {\n this.progress(loaded / total);\n };\n\n // Listen for unsupported features to trigger the fallback UI.\n loadingTask.onUnsupportedFeature = this.fallback.bind(this);\n\n return loadingTask.promise.then((pdfDocument) => {\n this.load(pdfDocument, scale);\n }, (exception) => {\n let message = exception && exception.message;\n let loadingErrorMessage;\n if (exception instanceof InvalidPDFException) {\n // change error message also for other builds\n loadingErrorMessage = this.l10n.get('invalid_file_error', null,\n 'Invalid or corrupted PDF file.');\n } else if (exception instanceof MissingPDFException) {\n // special message for missing PDF's\n loadingErrorMessage = this.l10n.get('missing_file_error', null,\n 'Missing PDF file.');\n } else if (exception instanceof UnexpectedResponseException) {\n loadingErrorMessage = this.l10n.get('unexpected_response_error', null,\n 'Unexpected server response.');\n } else {\n loadingErrorMessage = this.l10n.get('loading_error', null,\n 'An error occurred while loading the PDF.');\n }\n\n return loadingErrorMessage.then((msg) => {\n this.error(msg, { message, });\n throw new Error(msg);\n });\n });\n },\n\n download() {\n function downloadByUrl() {\n downloadManager.downloadUrl(url, filename);\n }\n\n let url = this.baseUrl;\n // Use this.url instead of this.baseUrl to perform filename detection based\n // on the reference fragment as ultimate fallback if needed.\n let filename = getPDFFileNameFromURL(this.url);\n let downloadManager = this.downloadManager;\n downloadManager.onerror = (err) => {\n // This error won't really be helpful because it's likely the\n // fallback won't work either (or is already open).\n this.error(`PDF failed to download: ${err}`);\n };\n\n // When the PDF document isn't ready, or the PDF file is still downloading,\n // simply download using the URL.\n if (!this.pdfDocument || !this.downloadComplete) {\n downloadByUrl();\n return;\n }\n\n this.pdfDocument.getData().then(function(data) {\n let blob = createBlob(data, 'application/pdf');\n downloadManager.download(blob, url, filename);\n }).catch(downloadByUrl); // Error occurred, try downloading with the URL.\n },\n\n fallback(featureId) {\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n // Only trigger the fallback once so we don't spam the user with messages\n // for one PDF.\n if (this.fellback) {\n return;\n }\n this.fellback = true;\n this.externalServices.fallback({\n featureId,\n url: this.baseUrl,\n }, function response(download) {\n if (!download) {\n return;\n }\n PDFViewerApplication.download();\n });\n }\n },\n\n /**\n * Show the error box.\n * @param {String} message A message that is human readable.\n * @param {Object} moreInfo (optional) Further information about the error\n * that is more technical. Should have a 'message'\n * and optionally a 'stack' property.\n */\n error(message, moreInfo) {\n let moreInfoText = [this.l10n.get('error_version_info',\n { version: version || '?', build: build || '?', },\n 'PDF.js v{{version}} (build: {{build}})')];\n if (moreInfo) {\n moreInfoText.push(\n this.l10n.get('error_message', { message: moreInfo.message, },\n 'Message: {{message}}'));\n if (moreInfo.stack) {\n moreInfoText.push(\n this.l10n.get('error_stack', { stack: moreInfo.stack, },\n 'Stack: {{stack}}'));\n } else {\n if (moreInfo.filename) {\n moreInfoText.push(\n this.l10n.get('error_file', { file: moreInfo.filename, },\n 'File: {{file}}'));\n }\n if (moreInfo.lineNumber) {\n moreInfoText.push(\n this.l10n.get('error_line', { line: moreInfo.lineNumber, },\n 'Line: {{line}}'));\n }\n }\n }\n\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n let errorWrapperConfig = this.appConfig.errorWrapper;\n let errorWrapper = errorWrapperConfig.container;\n errorWrapper.removeAttribute('hidden');\n\n let errorMessage = errorWrapperConfig.errorMessage;\n errorMessage.textContent = message;\n\n let closeButton = errorWrapperConfig.closeButton;\n closeButton.onclick = function() {\n errorWrapper.setAttribute('hidden', 'true');\n };\n\n let errorMoreInfo = errorWrapperConfig.errorMoreInfo;\n let moreInfoButton = errorWrapperConfig.moreInfoButton;\n let lessInfoButton = errorWrapperConfig.lessInfoButton;\n moreInfoButton.onclick = function() {\n errorMoreInfo.removeAttribute('hidden');\n moreInfoButton.setAttribute('hidden', 'true');\n lessInfoButton.removeAttribute('hidden');\n errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px';\n };\n lessInfoButton.onclick = function() {\n errorMoreInfo.setAttribute('hidden', 'true');\n moreInfoButton.removeAttribute('hidden');\n lessInfoButton.setAttribute('hidden', 'true');\n };\n moreInfoButton.oncontextmenu = noContextMenuHandler;\n lessInfoButton.oncontextmenu = noContextMenuHandler;\n closeButton.oncontextmenu = noContextMenuHandler;\n moreInfoButton.removeAttribute('hidden');\n lessInfoButton.setAttribute('hidden', 'true');\n Promise.all(moreInfoText).then((parts) => {\n errorMoreInfo.value = parts.join('\\n');\n });\n } else {\n console.error(message + '\\n' + moreInfoText);\n this.fallback();\n }\n },\n\n progress(level) {\n if (this.downloadComplete) {\n // Don't accidentally show the loading bar again when the entire file has\n // already been fetched (only an issue when disableAutoFetch is enabled).\n return;\n }\n let percent = Math.round(level * 100);\n // When we transition from full request to range requests, it's possible\n // that we discard some of the loaded data. This can cause the loading\n // bar to move backwards. So prevent this by only updating the bar if it\n // increases.\n if (percent > this.loadingBar.percent || isNaN(percent)) {\n this.loadingBar.percent = percent;\n\n // When disableAutoFetch is enabled, it's not uncommon for the entire file\n // to never be fetched (depends on e.g. the file structure). In this case\n // the loading bar will not be completely filled, nor will it be hidden.\n // To prevent displaying a partially filled loading bar permanently, we\n // hide it when no data has been loaded during a certain amount of time.\n if (PDFJS.disableAutoFetch && percent) {\n if (this.disableAutoFetchLoadingBarTimeout) {\n clearTimeout(this.disableAutoFetchLoadingBarTimeout);\n this.disableAutoFetchLoadingBarTimeout = null;\n }\n this.loadingBar.show();\n\n this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {\n this.loadingBar.hide();\n this.disableAutoFetchLoadingBarTimeout = null;\n }, DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT);\n }\n }\n },\n\n load(pdfDocument, scale) {\n scale = scale || UNKNOWN_SCALE;\n this.pdfDocument = pdfDocument;\n\n pdfDocument.getDownloadInfo().then(() => {\n this.downloadComplete = true;\n this.loadingBar.hide();\n\n firstPagePromise.then(() => {\n this.eventBus.dispatch('documentload', { source: this, });\n });\n });\n\n // Since the `setInitialView` call below depends on this being resolved,\n // fetch it early to avoid delaying initial rendering of the PDF document.\n let pageModePromise = pdfDocument.getPageMode().catch(\n function() { /* Avoid breaking initial rendering; ignoring errors. */ });\n\n this.toolbar.setPagesCount(pdfDocument.numPages, false);\n this.secondaryToolbar.setPagesCount(pdfDocument.numPages);\n\n let id = this.documentFingerprint = pdfDocument.fingerprint;\n let store = this.store = new ViewHistory(id);\n\n let baseDocumentUrl;\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n baseDocumentUrl = null;\n } else if (PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n baseDocumentUrl = this.baseUrl;\n } else if (PDFJSDev.test('CHROME')) {\n baseDocumentUrl = location.href.split('#')[0];\n }\n this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl);\n this.pdfDocumentProperties.setDocument(pdfDocument, this.url);\n\n let pdfViewer = this.pdfViewer;\n pdfViewer.setDocument(pdfDocument);\n let firstPagePromise = pdfViewer.firstPagePromise;\n let pagesPromise = pdfViewer.pagesPromise;\n let onePageRendered = pdfViewer.onePageRendered;\n\n let pdfThumbnailViewer = this.pdfThumbnailViewer;\n pdfThumbnailViewer.setDocument(pdfDocument);\n\n firstPagePromise.then((pdfPage) => {\n this.loadingBar.setWidth(this.appConfig.viewerContainer);\n\n if (!PDFJS.disableHistory && !this.isViewerEmbedded) {\n // The browsing history is only enabled when the viewer is standalone,\n // i.e. not when it is embedded in a web page.\n if (!this.viewerPrefs['showPreviousViewOnLoad']) {\n this.pdfHistory.clearHistoryState();\n }\n this.pdfHistory.initialize(this.documentFingerprint);\n\n if (this.pdfHistory.initialDestination) {\n this.initialDestination = this.pdfHistory.initialDestination;\n } else if (this.pdfHistory.initialBookmark) {\n this.initialBookmark = this.pdfHistory.initialBookmark;\n }\n }\n\n let initialParams = {\n destination: this.initialDestination,\n bookmark: this.initialBookmark,\n hash: null,\n };\n let storePromise = store.getMultiple({\n exists: false,\n page: '1',\n zoom: DEFAULT_SCALE_VALUE,\n scrollLeft: '0',\n scrollTop: '0',\n sidebarView: SidebarView.NONE,\n }).catch(() => { /* Unable to read from storage; ignoring errors. */ });\n\n Promise.all([storePromise, pageModePromise]).then(\n ([values = {}, pageMode]) => {\n // Initialize the default values, from user preferences.\n let hash = this.viewerPrefs['defaultZoomValue'] ?\n ('zoom=' + this.viewerPrefs['defaultZoomValue']) : null;\n let sidebarView = this.viewerPrefs['sidebarViewOnLoad'];\n\n if (values.exists && this.viewerPrefs['showPreviousViewOnLoad']) {\n hash = 'page=' + values.page +\n '&zoom=' + (this.viewerPrefs['defaultZoomValue'] || values.zoom) +\n ',' + values.scrollLeft + ',' + values.scrollTop;\n sidebarView = sidebarView || (values.sidebarView | 0);\n }\n if (pageMode && !this.viewerPrefs['disablePageMode']) {\n // Always let the user preference/history take precedence.\n sidebarView = sidebarView || apiPageModeToSidebarView(pageMode);\n }\n return {\n hash,\n sidebarView,\n };\n }).then(({ hash, sidebarView, }) => {\n this.setInitialView(hash, { sidebarView, scale, });\n initialParams.hash = hash;\n\n // Make all navigation keys work on document load,\n // unless the viewer is embedded in a web page.\n if (!this.isViewerEmbedded) {\n pdfViewer.focus();\n }\n return pagesPromise;\n }).then(() => {\n // For documents with different page sizes, once all pages are resolved,\n // ensure that the correct location becomes visible on load.\n if (!initialParams.destination && !initialParams.bookmark &&\n !initialParams.hash) {\n return;\n }\n if (pdfViewer.hasEqualPageSizes) {\n return;\n }\n this.initialDestination = initialParams.destination;\n this.initialBookmark = initialParams.bookmark;\n\n pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;\n this.setInitialView(initialParams.hash);\n }).then(function() {\n // At this point, rendering of the initial page(s) should always have\n // started (and may even have completed).\n // To prevent any future issues, e.g. the document being completely\n // blank on load, always trigger rendering here.\n pdfViewer.update();\n });\n });\n\n pdfDocument.getPageLabels().then((labels) => {\n if (!labels || this.viewerPrefs['disablePageLabels']) {\n return;\n }\n let i = 0, numLabels = labels.length;\n if (numLabels !== this.pagesCount) {\n console.error('The number of Page Labels does not match ' +\n 'the number of pages in the document.');\n return;\n }\n // Ignore page labels that correspond to standard page numbering.\n while (i < numLabels && labels[i] === (i + 1).toString()) {\n i++;\n }\n if (i === numLabels) {\n return;\n }\n\n pdfViewer.setPageLabels(labels);\n pdfThumbnailViewer.setPageLabels(labels);\n\n // Changing toolbar page display to use labels and we need to set\n // the label of the current page.\n this.toolbar.setPagesCount(pdfDocument.numPages, true);\n this.toolbar.setPageNumber(pdfViewer.currentPageNumber,\n pdfViewer.currentPageLabel);\n });\n\n pagesPromise.then(() => {\n if (!this.supportsPrinting) {\n return;\n }\n pdfDocument.getJavaScript().then((javaScript) => {\n if (javaScript.length) {\n console.warn('Warning: JavaScript is not supported');\n this.fallback(UNSUPPORTED_FEATURES.javaScript);\n }\n // Hack to support auto printing.\n let regex = /\\bprint\\s*\\(/;\n for (let i = 0, ii = javaScript.length; i < ii; i++) {\n let js = javaScript[i];\n if (js && regex.test(js)) {\n setTimeout(function() {\n window.print();\n });\n return;\n }\n }\n });\n });\n\n Promise.all([onePageRendered, animationStarted]).then(() => {\n pdfDocument.getOutline().then((outline) => {\n this.pdfOutlineViewer.render({ outline, });\n });\n pdfDocument.getAttachments().then((attachments) => {\n this.pdfAttachmentViewer.render({ attachments, });\n });\n });\n\n pdfDocument.getMetadata().then(({ info, metadata, }) => {\n this.documentInfo = info;\n this.metadata = metadata;\n\n // Provides some basic debug information\n console.log('PDF ' + pdfDocument.fingerprint + ' [' +\n info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() +\n ' / ' + (info.Creator || '-').trim() + ']' +\n ' (PDF.js: ' + (version || '-') +\n (!PDFJS.disableWebGL ? ' [WebGL]' : '') + ')');\n\n let pdfTitle;\n if (metadata && metadata.has('dc:title')) {\n let title = metadata.get('dc:title');\n // Ghostscript sometimes return 'Untitled', sets the title to 'Untitled'\n if (title !== 'Untitled') {\n pdfTitle = title;\n }\n }\n\n if (!pdfTitle && info && info['Title']) {\n pdfTitle = info['Title'];\n }\n\n if (pdfTitle) {\n this.setTitle(pdfTitle + ' - ' + document.title);\n }\n\n if (info.IsAcroFormPresent) {\n console.warn('Warning: AcroForm/XFA is not supported');\n this.fallback(UNSUPPORTED_FEATURES.forms);\n }\n\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n let versionId = String(info.PDFFormatVersion).slice(-1) | 0;\n let generatorId = 0;\n const KNOWN_GENERATORS = [\n 'acrobat distiller', 'acrobat pdfwriter', 'adobe livecycle',\n 'adobe pdf library', 'adobe photoshop', 'ghostscript', 'tcpdf',\n 'cairo', 'dvipdfm', 'dvips', 'pdftex', 'pdfkit', 'itext', 'prince',\n 'quarkxpress', 'mac os x', 'microsoft', 'openoffice', 'oracle',\n 'luradocument', 'pdf-xchange', 'antenna house', 'aspose.cells', 'fpdf'\n ];\n if (info.Producer) {\n KNOWN_GENERATORS.some(function (generator, s, i) {\n if (generator.indexOf(s) < 0) {\n return false;\n }\n generatorId = i + 1;\n return true;\n }.bind(null, info.Producer.toLowerCase()));\n }\n let formType = !info.IsAcroFormPresent ? null : info.IsXFAPresent ?\n 'xfa' : 'acroform';\n this.externalServices.reportTelemetry({\n type: 'documentInfo',\n version: versionId,\n generator: generatorId,\n formType,\n });\n }\n });\n },\n\n setInitialView(storedHash, options = {}) {\n let { scale = 0, sidebarView = SidebarView.NONE, } = options;\n\n this.isInitialViewSet = true;\n this.pdfSidebar.setInitialView(sidebarView);\n\n if (this.initialDestination) {\n this.pdfLinkService.navigateTo(this.initialDestination);\n this.initialDestination = null;\n } else if (this.initialBookmark) {\n this.pdfLinkService.setHash(this.initialBookmark);\n this.pdfHistory.push({ hash: this.initialBookmark, }, true);\n this.initialBookmark = null;\n } else if (storedHash) {\n this.pdfLinkService.setHash(storedHash);\n } else if (scale) {\n this.pdfViewer.currentScaleValue = scale;\n this.page = 1;\n }\n\n // Ensure that the correct page number is displayed in the UI,\n // even if the active page didn't change during document load.\n this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber,\n this.pdfViewer.currentPageLabel);\n this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber);\n\n if (!this.pdfViewer.currentScaleValue) {\n // Scale was not initialized: invalid bookmark or scale was not specified.\n // Setting the default one.\n this.pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n },\n\n cleanup() {\n if (!this.pdfDocument) {\n return; // run cleanup when document is loaded\n }\n this.pdfViewer.cleanup();\n this.pdfThumbnailViewer.cleanup();\n\n // We don't want to remove fonts used by active page SVGs.\n if (this.pdfViewer.renderer !== RendererType.SVG) {\n this.pdfDocument.cleanup();\n }\n },\n\n forceRendering() {\n this.pdfRenderingQueue.printing = this.printing;\n this.pdfRenderingQueue.isThumbnailViewEnabled =\n this.pdfSidebar.isThumbnailViewVisible;\n this.pdfRenderingQueue.renderHighestPriority();\n },\n\n beforePrint() {\n if (this.printService) {\n // There is no way to suppress beforePrint/afterPrint events,\n // but PDFPrintService may generate double events -- this will ignore\n // the second event that will be coming from native window.print().\n return;\n }\n\n if (!this.supportsPrinting) {\n this.l10n.get('printing_not_supported', null,\n 'Warning: Printing is not fully supported by ' +\n 'this browser.').then((printMessage) => {\n this.error(printMessage);\n });\n return;\n }\n\n // The beforePrint is a sync method and we need to know layout before\n // returning from this method. Ensure that we can get sizes of the pages.\n if (!this.pdfViewer.pageViewsReady) {\n this.l10n.get('printing_not_ready', null,\n 'Warning: The PDF is not fully loaded for printing.').\n then((notReadyMessage) => {\n window.alert(notReadyMessage);\n });\n return;\n }\n\n let pagesOverview = this.pdfViewer.getPagesOverview();\n let printContainer = this.appConfig.printContainer;\n let printService = PDFPrintServiceFactory.instance.createPrintService(\n this.pdfDocument, pagesOverview, printContainer, this.l10n);\n this.printService = printService;\n this.forceRendering();\n\n printService.layout();\n\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n this.externalServices.reportTelemetry({\n type: 'print',\n });\n }\n },\n\n afterPrint: function pdfViewSetupAfterPrint() {\n if (this.printService) {\n this.printService.destroy();\n this.printService = null;\n }\n this.forceRendering();\n },\n\n rotatePages(delta) {\n if (!this.pdfDocument) {\n return;\n }\n let { pdfViewer, pdfThumbnailViewer, } = this;\n let pageNumber = pdfViewer.currentPageNumber;\n let newRotation = (pdfViewer.pagesRotation + 360 + delta) % 360;\n\n pdfViewer.pagesRotation = newRotation;\n pdfThumbnailViewer.pagesRotation = newRotation;\n\n this.forceRendering();\n // Ensure that the active page doesn't change during rotation.\n pdfViewer.currentPageNumber = pageNumber;\n },\n\n requestPresentationMode() {\n if (!this.pdfPresentationMode) {\n return;\n }\n this.pdfPresentationMode.request();\n },\n\n bindEvents() {\n let { eventBus, _boundEvents, } = this;\n\n _boundEvents.beforePrint = this.beforePrint.bind(this);\n _boundEvents.afterPrint = this.afterPrint.bind(this);\n\n eventBus.on('resize', webViewerResize);\n eventBus.on('hashchange', webViewerHashchange);\n eventBus.on('beforeprint', _boundEvents.beforePrint);\n eventBus.on('afterprint', _boundEvents.afterPrint);\n eventBus.on('pagerendered', webViewerPageRendered);\n eventBus.on('textlayerrendered', webViewerTextLayerRendered);\n eventBus.on('updateviewarea', webViewerUpdateViewarea);\n eventBus.on('pagechanging', webViewerPageChanging);\n eventBus.on('scalechanging', webViewerScaleChanging);\n eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged);\n eventBus.on('pagemode', webViewerPageMode);\n eventBus.on('namedaction', webViewerNamedAction);\n eventBus.on('presentationmodechanged', webViewerPresentationModeChanged);\n eventBus.on('presentationmode', webViewerPresentationMode);\n eventBus.on('openfile', webViewerOpenFile);\n eventBus.on('print', webViewerPrint);\n eventBus.on('download', webViewerDownload);\n eventBus.on('firstpage', webViewerFirstPage);\n eventBus.on('lastpage', webViewerLastPage);\n eventBus.on('nextpage', webViewerNextPage);\n eventBus.on('previouspage', webViewerPreviousPage);\n eventBus.on('zoomin', webViewerZoomIn);\n eventBus.on('zoomout', webViewerZoomOut);\n eventBus.on('pagenumberchanged', webViewerPageNumberChanged);\n eventBus.on('scalechanged', webViewerScaleChanged);\n eventBus.on('rotatecw', webViewerRotateCw);\n eventBus.on('rotateccw', webViewerRotateCcw);\n eventBus.on('documentproperties', webViewerDocumentProperties);\n eventBus.on('find', webViewerFind);\n eventBus.on('findfromurlhash', webViewerFindFromUrlHash);\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n eventBus.on('fileinputchange', webViewerFileInputChange);\n }\n },\n\n bindWindowEvents() {\n let { eventBus, _boundEvents, } = this;\n\n _boundEvents.windowResize = () => {\n eventBus.dispatch('resize');\n };\n _boundEvents.windowHashChange = () => {\n eventBus.dispatch('hashchange', {\n hash: document.location.hash.substring(1),\n });\n };\n _boundEvents.windowBeforePrint = () => {\n eventBus.dispatch('beforeprint');\n };\n _boundEvents.windowAfterPrint = () => {\n eventBus.dispatch('afterprint');\n };\n\n window.addEventListener('wheel', webViewerWheel);\n window.addEventListener('click', webViewerClick);\n window.addEventListener('keydown', webViewerKeyDown);\n window.addEventListener('resize', _boundEvents.windowResize);\n window.addEventListener('hashchange', _boundEvents.windowHashChange);\n window.addEventListener('beforeprint', _boundEvents.windowBeforePrint);\n window.addEventListener('afterprint', _boundEvents.windowAfterPrint);\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n _boundEvents.windowChange = (evt) => {\n let files = evt.target.files;\n if (!files || files.length === 0) {\n return;\n }\n eventBus.dispatch('fileinputchange', {\n fileInput: evt.target,\n });\n };\n window.addEventListener('change', _boundEvents.windowChange);\n }\n },\n\n unbindEvents() {\n let { eventBus, _boundEvents, } = this;\n\n eventBus.off('resize', webViewerResize);\n eventBus.off('hashchange', webViewerHashchange);\n eventBus.off('beforeprint', _boundEvents.beforePrint);\n eventBus.off('afterprint', _boundEvents.afterPrint);\n eventBus.off('pagerendered', webViewerPageRendered);\n eventBus.off('textlayerrendered', webViewerTextLayerRendered);\n eventBus.off('updateviewarea', webViewerUpdateViewarea);\n eventBus.off('pagechanging', webViewerPageChanging);\n eventBus.off('scalechanging', webViewerScaleChanging);\n eventBus.off('sidebarviewchanged', webViewerSidebarViewChanged);\n eventBus.off('pagemode', webViewerPageMode);\n eventBus.off('namedaction', webViewerNamedAction);\n eventBus.off('presentationmodechanged', webViewerPresentationModeChanged);\n eventBus.off('presentationmode', webViewerPresentationMode);\n eventBus.off('openfile', webViewerOpenFile);\n eventBus.off('print', webViewerPrint);\n eventBus.off('download', webViewerDownload);\n eventBus.off('firstpage', webViewerFirstPage);\n eventBus.off('lastpage', webViewerLastPage);\n eventBus.off('nextpage', webViewerNextPage);\n eventBus.off('previouspage', webViewerPreviousPage);\n eventBus.off('zoomin', webViewerZoomIn);\n eventBus.off('zoomout', webViewerZoomOut);\n eventBus.off('pagenumberchanged', webViewerPageNumberChanged);\n eventBus.off('scalechanged', webViewerScaleChanged);\n eventBus.off('rotatecw', webViewerRotateCw);\n eventBus.off('rotateccw', webViewerRotateCcw);\n eventBus.off('documentproperties', webViewerDocumentProperties);\n eventBus.off('find', webViewerFind);\n eventBus.off('findfromurlhash', webViewerFindFromUrlHash);\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n eventBus.off('fileinputchange', webViewerFileInputChange);\n }\n\n _boundEvents.beforePrint = null;\n _boundEvents.afterPrint = null;\n },\n\n unbindWindowEvents() {\n let { _boundEvents, } = this;\n\n window.removeEventListener('wheel', webViewerWheel);\n window.removeEventListener('click', webViewerClick);\n window.removeEventListener('keydown', webViewerKeyDown);\n window.removeEventListener('resize', _boundEvents.windowResize);\n window.removeEventListener('hashchange', _boundEvents.windowHashChange);\n window.removeEventListener('beforeprint', _boundEvents.windowBeforePrint);\n window.removeEventListener('afterprint', _boundEvents.windowAfterPrint);\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n window.removeEventListener('change', _boundEvents.windowChange);\n _boundEvents.windowChange = null;\n }\n\n _boundEvents.windowResize = null;\n _boundEvents.windowHashChange = null;\n _boundEvents.windowBeforePrint = null;\n _boundEvents.windowAfterPrint = null;\n },\n};\n\nlet validateFileURL;\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n const HOSTED_VIEWER_ORIGINS = ['null',\n 'http://mozilla.github.io', 'https://mozilla.github.io'];\n validateFileURL = function validateFileURL(file) {\n if (file === undefined) {\n return;\n }\n try {\n let viewerOrigin = new URL(window.location.href).origin || 'null';\n if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) {\n // Hosted or local viewer, allow for any file locations\n return;\n }\n let fileOrigin = new URL(file, window.location.href).origin;\n // Removing of the following line will not guarantee that the viewer will\n // start accepting URLs from foreign origin -- CORS headers on the remote\n // server must be properly configured.\n if (fileOrigin !== viewerOrigin) {\n throw new Error('file origin does not match viewer\\'s');\n }\n } catch (ex) {\n let message = ex && ex.message;\n PDFViewerApplication.l10n.get('loading_error', null,\n 'An error occurred while loading the PDF.').\n then((loadingErrorMessage) => {\n PDFViewerApplication.error(loadingErrorMessage, { message, });\n });\n throw ex;\n }\n };\n}\n\nfunction loadAndEnablePDFBug(enabledTabs) {\n return new Promise(function (resolve, reject) {\n let appConfig = PDFViewerApplication.appConfig;\n let script = document.createElement('script');\n script.src = appConfig.debuggerScriptPath;\n script.onload = function () {\n PDFBug.enable(enabledTabs);\n PDFBug.init({\n PDFJS,\n OPS,\n }, appConfig.mainContainer);\n resolve();\n };\n script.onerror = function () {\n reject(new Error('Cannot load debugger at ' + script.src));\n };\n (document.getElementsByTagName('head')[0] || document.body).\n appendChild(script);\n });\n}\n\nfunction webViewerInitialized() {\n let appConfig = PDFViewerApplication.appConfig;\n let file;\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n let queryString = document.location.search.substring(1);\n let params = parseQueryString(queryString);\n file = 'file' in params ? params.file : appConfig.defaultUrl;\n validateFileURL(file);\n } else if (PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n file = window.location.href.split('#')[0];\n } else if (PDFJSDev.test('CHROME')) {\n file = appConfig.defaultUrl;\n }\n\n let waitForBeforeOpening = [];\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n let fileInput = document.createElement('input');\n fileInput.id = appConfig.openFileInputName;\n fileInput.className = 'fileInput';\n fileInput.setAttribute('type', 'file');\n fileInput.oncontextmenu = noContextMenuHandler;\n document.body.appendChild(fileInput);\n\n if (!window.File || !window.FileReader ||\n !window.FileList || !window.Blob) {\n appConfig.toolbar.openFile.setAttribute('hidden', 'true');\n appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');\n } else {\n fileInput.value = null;\n }\n } else {\n appConfig.toolbar.openFile.setAttribute('hidden', 'true');\n appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');\n }\n\n if ((typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) ||\n PDFViewerApplication.viewerPrefs['pdfBugEnabled']) {\n // Special debugging flags in the hash section of the URL.\n let hash = document.location.hash.substring(1);\n let hashParams = parseQueryString(hash);\n\n if ('disableworker' in hashParams) {\n PDFJS.disableWorker = (hashParams['disableworker'] === 'true');\n }\n if ('disablerange' in hashParams) {\n PDFJS.disableRange = (hashParams['disablerange'] === 'true');\n }\n if ('disablestream' in hashParams) {\n PDFJS.disableStream = (hashParams['disablestream'] === 'true');\n }\n if ('disableautofetch' in hashParams) {\n PDFJS.disableAutoFetch = (hashParams['disableautofetch'] === 'true');\n }\n if ('disablefontface' in hashParams) {\n PDFJS.disableFontFace = (hashParams['disablefontface'] === 'true');\n }\n if ('disablehistory' in hashParams) {\n PDFJS.disableHistory = (hashParams['disablehistory'] === 'true');\n }\n if ('webgl' in hashParams) {\n PDFJS.disableWebGL = (hashParams['webgl'] !== 'true');\n }\n if ('useonlycsszoom' in hashParams) {\n PDFJS.useOnlyCssZoom = (hashParams['useonlycsszoom'] === 'true');\n }\n if ('verbosity' in hashParams) {\n PDFJS.verbosity = hashParams['verbosity'] | 0;\n }\n if ('ignorecurrentpositiononzoom' in hashParams) {\n PDFJS.ignoreCurrentPositionOnZoom =\n (hashParams['ignorecurrentpositiononzoom'] === 'true');\n }\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n if ('disablebcmaps' in hashParams && hashParams['disablebcmaps']) {\n PDFJS.cMapUrl = '../external/cmaps/';\n PDFJS.cMapPacked = false;\n }\n }\n if ('textlayer' in hashParams) {\n switch (hashParams['textlayer']) {\n case 'off':\n PDFJS.disableTextLayer = true;\n break;\n case 'visible':\n case 'shadow':\n case 'hover':\n let viewer = appConfig.viewerContainer;\n viewer.classList.add('textLayer-' + hashParams['textlayer']);\n break;\n }\n }\n if ('pdfbug' in hashParams) {\n PDFJS.pdfBug = true;\n let pdfBug = hashParams['pdfbug'];\n let enabled = pdfBug.split(',');\n waitForBeforeOpening.push(loadAndEnablePDFBug(enabled));\n }\n }\n\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL') &&\n !PDFViewerApplication.supportsDocumentFonts) {\n PDFJS.disableFontFace = true;\n PDFViewerApplication.l10n.get('web_fonts_disabled', null,\n 'Web fonts are disabled: unable to use embedded PDF fonts.').\n then((msg) => {\n console.warn(msg);\n });\n }\n\n if (!PDFViewerApplication.supportsPrinting) {\n appConfig.toolbar.print.classList.add('hidden');\n appConfig.secondaryToolbar.printButton.classList.add('hidden');\n }\n\n if (!PDFViewerApplication.supportsFullscreen) {\n appConfig.toolbar.presentationModeButton.classList.add('hidden');\n appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden');\n }\n\n if (PDFViewerApplication.supportsIntegratedFind) {\n appConfig.toolbar.viewFind.classList.add('hidden');\n }\n\n appConfig.sidebar.mainContainer.addEventListener('transitionend',\n function(evt) {\n if (evt.target === /* mainContainer */ this) {\n PDFViewerApplication.eventBus.dispatch('resize');\n }\n }, true);\n\n appConfig.sidebar.toggleButton.addEventListener('click', function() {\n PDFViewerApplication.pdfSidebar.toggle();\n });\n\n Promise.all(waitForBeforeOpening).then(function () {\n webViewerOpenFileViaURL(file);\n }).catch(function (reason) {\n PDFViewerApplication.l10n.get('loading_error', null,\n 'An error occurred while opening.').then((msg) => {\n PDFViewerApplication.error(msg, reason);\n });\n });\n}\n\nlet webViewerOpenFileViaURL;\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) {\n if (file && file.lastIndexOf('file:', 0) === 0) {\n // file:-scheme. Load the contents in the main thread because QtWebKit\n // cannot load file:-URLs in a Web Worker. file:-URLs are usually loaded\n // very quickly, so there is no need to set up progress event listeners.\n PDFViewerApplication.setTitleUsingUrl(file);\n let xhr = new XMLHttpRequest();\n xhr.onload = function() {\n PDFViewerApplication.open(new Uint8Array(xhr.response));\n };\n try {\n xhr.open('GET', file);\n xhr.responseType = 'arraybuffer';\n xhr.send();\n } catch (ex) {\n PDFViewerApplication.l10n.get('loading_error', null,\n 'An error occurred while loading the PDF.').then((msg) => {\n PDFViewerApplication.error(msg, ex);\n });\n }\n return;\n }\n\n if (file) {\n PDFViewerApplication.open(file);\n }\n };\n} else if (PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) {\n webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) {\n PDFViewerApplication.setTitleUsingUrl(file);\n PDFViewerApplication.initPassiveLoading();\n };\n} else {\n webViewerOpenFileViaURL = function webViewerOpenFileURL(file) {\n if (file) {\n throw new Error('Not implemented: webViewerOpenFileURL');\n }\n };\n}\n\nfunction webViewerPageRendered(evt) {\n let pageNumber = evt.pageNumber;\n let pageIndex = pageNumber - 1;\n let pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex);\n\n // If the page is still visible when it has finished rendering,\n // ensure that the page number input loading indicator is hidden.\n if (pageNumber === PDFViewerApplication.page) {\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(false);\n }\n\n // Prevent errors in the edge-case where the PDF document is removed *before*\n // the 'pagerendered' event handler is invoked.\n if (!pageView) {\n return;\n }\n\n // Use the rendered page to set the corresponding thumbnail image.\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n let thumbnailView = PDFViewerApplication.pdfThumbnailViewer.\n getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n\n if (PDFJS.pdfBug && Stats.enabled && pageView.stats) {\n Stats.add(pageNumber, pageView.stats);\n }\n\n if (pageView.error) {\n PDFViewerApplication.l10n.get('rendering_error', null,\n 'An error occurred while rendering the page.').then((msg) => {\n PDFViewerApplication.error(msg, pageView.error);\n });\n }\n\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n PDFViewerApplication.externalServices.reportTelemetry({\n type: 'pageInfo',\n });\n // It is a good time to report stream and font types.\n PDFViewerApplication.pdfDocument.getStats().then(function (stats) {\n PDFViewerApplication.externalServices.reportTelemetry({\n type: 'documentStats',\n stats,\n });\n });\n }\n}\n\nfunction webViewerTextLayerRendered(evt) {\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL') &&\n evt.numTextDivs > 0 && !PDFViewerApplication.supportsDocumentColors) {\n PDFViewerApplication.l10n.get('document_colors_not_allowed', null,\n 'PDF documents are not allowed to use their own colors: ' +\n '\\'Allow pages to choose their own colors\\' ' +\n 'is deactivated in the browser.').\n then((msg) => {\n console.error(msg);\n });\n PDFViewerApplication.fallback();\n }\n}\n\nfunction webViewerPageMode(evt) {\n // Handle the 'pagemode' hash parameter, see also `PDFLinkService_setHash`.\n let mode = evt.mode, view;\n switch (mode) {\n case 'thumbs':\n view = SidebarView.THUMBS;\n break;\n case 'bookmarks':\n case 'outline':\n view = SidebarView.OUTLINE;\n break;\n case 'attachments':\n view = SidebarView.ATTACHMENTS;\n break;\n case 'none':\n view = SidebarView.NONE;\n break;\n default:\n console.error('Invalid \"pagemode\" hash parameter: ' + mode);\n return;\n }\n PDFViewerApplication.pdfSidebar.switchView(view, /* forceOpen = */ true);\n}\n\nfunction webViewerNamedAction(evt) {\n // Processing couple of named actions that might be useful.\n // See also PDFLinkService.executeNamedAction\n let action = evt.action;\n switch (action) {\n case 'GoToPage':\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n break;\n\n case 'Find':\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.toggle();\n }\n break;\n }\n}\n\nfunction webViewerPresentationModeChanged(evt) {\n let { active, switchInProgress, } = evt;\n PDFViewerApplication.pdfViewer.presentationModeState =\n switchInProgress ? PresentationModeState.CHANGING :\n active ? PresentationModeState.FULLSCREEN : PresentationModeState.NORMAL;\n}\n\nfunction webViewerSidebarViewChanged(evt) {\n PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled =\n PDFViewerApplication.pdfSidebar.isThumbnailViewVisible;\n\n let store = PDFViewerApplication.store;\n if (store && PDFViewerApplication.isInitialViewSet) {\n // Only update the storage when the document has been loaded *and* rendered.\n store.set('sidebarView', evt.view).catch(function() { });\n }\n}\n\nfunction webViewerUpdateViewarea(evt) {\n let location = evt.location, store = PDFViewerApplication.store;\n\n if (store && PDFViewerApplication.isInitialViewSet) {\n store.setMultiple({\n 'exists': true,\n 'page': location.pageNumber,\n 'zoom': location.scale,\n 'scrollLeft': location.left,\n 'scrollTop': location.top,\n }).catch(function() { /* unable to write to storage */ });\n }\n let href =\n PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams);\n PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;\n PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href =\n href;\n\n // Update the current bookmark in the browsing history.\n PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams,\n location.pageNumber);\n\n // Show/hide the loading indicator in the page number input element.\n let currentPage =\n PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);\n let loading = currentPage.renderingState !== RenderingStates.FINISHED;\n PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);\n}\n\nfunction webViewerResize() {\n let { pdfDocument, pdfViewer, } = PDFViewerApplication;\n if (!pdfDocument) {\n return;\n }\n let currentScaleValue = pdfViewer.currentScaleValue;\n if (currentScaleValue === 'auto' ||\n currentScaleValue === 'page-fit' ||\n currentScaleValue === 'page-width') {\n // Note: the scale is constant for 'page-actual'.\n pdfViewer.currentScaleValue = currentScaleValue;\n }\n pdfViewer.update();\n}\n\nfunction webViewerHashchange(evt) {\n if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) {\n let hash = evt.hash;\n if (!hash) {\n return;\n }\n if (!PDFViewerApplication.isInitialViewSet) {\n PDFViewerApplication.initialBookmark = hash;\n } else {\n PDFViewerApplication.pdfLinkService.setHash(hash);\n }\n }\n}\n\nlet webViewerFileInputChange;\nif (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n webViewerFileInputChange = function webViewerFileInputChange(evt) {\n let file = evt.fileInput.files[0];\n\n if (!PDFJS.disableCreateObjectURL && URL.createObjectURL) {\n PDFViewerApplication.open(URL.createObjectURL(file));\n } else {\n // Read the local file into a Uint8Array.\n let fileReader = new FileReader();\n fileReader.onload = function webViewerChangeFileReaderOnload(evt) {\n let buffer = evt.target.result;\n PDFViewerApplication.open(new Uint8Array(buffer));\n };\n fileReader.readAsArrayBuffer(file);\n }\n\n PDFViewerApplication.setTitleUsingUrl(file.name);\n\n // URL does not reflect proper document location - hiding some icons.\n let appConfig = PDFViewerApplication.appConfig;\n appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true');\n appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden',\n 'true');\n appConfig.toolbar.download.setAttribute('hidden', 'true');\n appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true');\n };\n}\n\nfunction webViewerPresentationMode() {\n PDFViewerApplication.requestPresentationMode();\n}\nfunction webViewerOpenFile() {\n let openFileInputName = PDFViewerApplication.appConfig.openFileInputName;\n document.getElementById(openFileInputName).click();\n}\nfunction webViewerPrint() {\n window.print();\n}\nfunction webViewerDownload() {\n PDFViewerApplication.download();\n}\nfunction webViewerFirstPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = 1;\n }\n}\nfunction webViewerLastPage() {\n if (PDFViewerApplication.pdfDocument) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n }\n}\nfunction webViewerNextPage() {\n PDFViewerApplication.page++;\n}\nfunction webViewerPreviousPage() {\n PDFViewerApplication.page--;\n}\nfunction webViewerZoomIn() {\n PDFViewerApplication.zoomIn();\n}\nfunction webViewerZoomOut() {\n PDFViewerApplication.zoomOut();\n}\nfunction webViewerPageNumberChanged(evt) {\n let pdfViewer = PDFViewerApplication.pdfViewer;\n pdfViewer.currentPageLabel = evt.value;\n\n // Ensure that the page number input displays the correct value, even if the\n // value entered by the user was invalid (e.g. a floating point number).\n if (evt.value !== pdfViewer.currentPageNumber.toString() &&\n evt.value !== pdfViewer.currentPageLabel) {\n PDFViewerApplication.toolbar.setPageNumber(\n pdfViewer.currentPageNumber, pdfViewer.currentPageLabel);\n }\n}\nfunction webViewerScaleChanged(evt) {\n PDFViewerApplication.pdfViewer.currentScaleValue = evt.value;\n}\nfunction webViewerRotateCw() {\n PDFViewerApplication.rotatePages(90);\n}\nfunction webViewerRotateCcw() {\n PDFViewerApplication.rotatePages(-90);\n}\nfunction webViewerDocumentProperties() {\n PDFViewerApplication.pdfDocumentProperties.open();\n}\n\nfunction webViewerFind(evt) {\n PDFViewerApplication.findController.executeCommand('find' + evt.type, {\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: evt.caseSensitive,\n highlightAll: evt.highlightAll,\n findPrevious: evt.findPrevious,\n });\n}\n\nfunction webViewerFindFromUrlHash(evt) {\n PDFViewerApplication.findController.executeCommand('find', {\n query: evt.query,\n phraseSearch: evt.phraseSearch,\n caseSensitive: false,\n highlightAll: true,\n findPrevious: false,\n });\n}\n\nfunction webViewerScaleChanging(evt) {\n PDFViewerApplication.toolbar.setPageScale(evt.presetValue, evt.scale);\n\n PDFViewerApplication.pdfViewer.update();\n}\n\nfunction webViewerPageChanging(evt) {\n let page = evt.pageNumber;\n\n PDFViewerApplication.toolbar.setPageNumber(page, evt.pageLabel || null);\n PDFViewerApplication.secondaryToolbar.setPageNumber(page);\n\n if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {\n PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);\n }\n\n // we need to update stats\n if (PDFJS.pdfBug && Stats.enabled) {\n let pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1);\n if (pageView.stats) {\n Stats.add(page, pageView.stats);\n }\n }\n}\n\nlet zoomDisabled = false, zoomDisabledTimeout;\nfunction webViewerWheel(evt) {\n let pdfViewer = PDFViewerApplication.pdfViewer;\n if (pdfViewer.isInPresentationMode) {\n return;\n }\n\n if (evt.ctrlKey || evt.metaKey) {\n let support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys;\n if ((evt.ctrlKey && !support.ctrlKey) ||\n (evt.metaKey && !support.metaKey)) {\n return;\n }\n // Only zoom the pages, not the entire viewer.\n evt.preventDefault();\n // NOTE: this check must be placed *after* preventDefault.\n if (zoomDisabled) {\n return;\n }\n\n let previousScale = pdfViewer.currentScale;\n\n let delta = normalizeWheelEventDelta(evt);\n\n const MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0;\n let ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE;\n if (ticks < 0) {\n PDFViewerApplication.zoomOut(-ticks);\n } else {\n PDFViewerApplication.zoomIn(ticks);\n }\n\n let currentScale = pdfViewer.currentScale;\n if (previousScale !== currentScale) {\n // After scaling the page via zoomIn/zoomOut, the position of the upper-\n // left corner is restored. When the mouse wheel is used, the position\n // under the cursor should be restored instead.\n let scaleCorrectionFactor = currentScale / previousScale - 1;\n let rect = pdfViewer.container.getBoundingClientRect();\n let dx = evt.clientX - rect.left;\n let dy = evt.clientY - rect.top;\n pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor;\n pdfViewer.container.scrollTop += dy * scaleCorrectionFactor;\n }\n } else {\n zoomDisabled = true;\n clearTimeout(zoomDisabledTimeout);\n zoomDisabledTimeout = setTimeout(function () {\n zoomDisabled = false;\n }, 1000);\n }\n}\n\nfunction webViewerClick(evt) {\n if (!PDFViewerApplication.secondaryToolbar.isOpen) {\n return;\n }\n let appConfig = PDFViewerApplication.appConfig;\n if (PDFViewerApplication.pdfViewer.containsElement(evt.target) ||\n (appConfig.toolbar.container.contains(evt.target) &&\n evt.target !== appConfig.secondaryToolbar.toggleButton)) {\n PDFViewerApplication.secondaryToolbar.close();\n }\n}\n\nfunction webViewerKeyDown(evt) {\n if (PDFViewerApplication.overlayManager.active) {\n return;\n }\n\n let handled = false, ensureViewerFocused = false;\n let cmd = (evt.ctrlKey ? 1 : 0) |\n (evt.altKey ? 2 : 0) |\n (evt.shiftKey ? 4 : 0) |\n (evt.metaKey ? 8 : 0);\n\n let pdfViewer = PDFViewerApplication.pdfViewer;\n let isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode;\n\n // First, handle the key bindings that are independent whether an input\n // control is selected or not.\n if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {\n // either CTRL or META key with optional SHIFT.\n switch (evt.keyCode) {\n case 70: // f\n if (!PDFViewerApplication.supportsIntegratedFind) {\n PDFViewerApplication.findBar.open();\n handled = true;\n }\n break;\n case 71: // g\n if (!PDFViewerApplication.supportsIntegratedFind) {\n let findState = PDFViewerApplication.findController.state;\n if (findState) {\n PDFViewerApplication.findController.executeCommand('findagain', {\n query: findState.query,\n phraseSearch: findState.phraseSearch,\n caseSensitive: findState.caseSensitive,\n highlightAll: findState.highlightAll,\n findPrevious: cmd === 5 || cmd === 12,\n });\n }\n handled = true;\n }\n break;\n case 61: // FF/Mac '='\n case 107: // FF '+' and '='\n case 187: // Chrome '+'\n case 171: // FF with German keyboard\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomIn();\n }\n handled = true;\n break;\n case 173: // FF/Mac '-'\n case 109: // FF '-'\n case 189: // Chrome '-'\n if (!isViewerInPresentationMode) {\n PDFViewerApplication.zoomOut();\n }\n handled = true;\n break;\n case 48: // '0'\n case 96: // '0' on Numpad of Swedish keyboard\n if (!isViewerInPresentationMode) {\n // keeping it unhandled (to restore page zoom to 100%)\n setTimeout(function () {\n // ... and resetting the scale after browser adjusts its scale\n pdfViewer.currentScaleValue = DEFAULT_SCALE_VALUE;\n });\n handled = false;\n }\n break;\n\n case 38: // up arrow\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 40: // down arrow\n if (isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n }\n }\n\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n // CTRL or META without shift\n if (cmd === 1 || cmd === 8) {\n switch (evt.keyCode) {\n case 83: // s\n PDFViewerApplication.download();\n handled = true;\n break;\n }\n }\n }\n\n // CTRL+ALT or Option+Command\n if (cmd === 3 || cmd === 10) {\n switch (evt.keyCode) {\n case 80: // p\n PDFViewerApplication.requestPresentationMode();\n handled = true;\n break;\n case 71: // g\n // focuses input#pageNumber field\n PDFViewerApplication.appConfig.toolbar.pageNumber.select();\n handled = true;\n break;\n }\n }\n\n if (handled) {\n if (ensureViewerFocused && !isViewerInPresentationMode) {\n pdfViewer.focus();\n }\n evt.preventDefault();\n return;\n }\n\n // Some shortcuts should not get handled if a control/input element\n // is selected.\n let curElement = document.activeElement || document.querySelector(':focus');\n let curElementTagName = curElement && curElement.tagName.toUpperCase();\n if (curElementTagName === 'INPUT' ||\n curElementTagName === 'TEXTAREA' ||\n curElementTagName === 'SELECT') {\n // Make sure that the secondary toolbar is closed when Escape is pressed.\n if (evt.keyCode !== 27) { // 'Esc'\n return;\n }\n }\n\n if (cmd === 0) { // no control key pressed at all.\n switch (evt.keyCode) {\n case 38: // up arrow\n case 33: // pg up\n case 8: // backspace\n if (!isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== 'page-fit') {\n break;\n }\n /* in presentation mode */\n /* falls through */\n case 37: // left arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n break;\n }\n /* falls through */\n case 75: // 'k'\n case 80: // 'p'\n if (PDFViewerApplication.page > 1) {\n PDFViewerApplication.page--;\n }\n handled = true;\n break;\n case 27: // esc key\n if (PDFViewerApplication.secondaryToolbar.isOpen) {\n PDFViewerApplication.secondaryToolbar.close();\n handled = true;\n }\n if (!PDFViewerApplication.supportsIntegratedFind &&\n PDFViewerApplication.findBar.opened) {\n PDFViewerApplication.findBar.close();\n handled = true;\n }\n break;\n case 40: // down arrow\n case 34: // pg down\n case 32: // spacebar\n if (!isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== 'page-fit') {\n break;\n }\n /* falls through */\n case 39: // right arrow\n // horizontal scrolling using arrow keys\n if (pdfViewer.isHorizontalScrollbarEnabled) {\n break;\n }\n /* falls through */\n case 74: // 'j'\n case 78: // 'n'\n if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n PDFViewerApplication.page++;\n }\n handled = true;\n break;\n\n case 36: // home\n if (isViewerInPresentationMode || PDFViewerApplication.page > 1) {\n PDFViewerApplication.page = 1;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n case 35: // end\n if (isViewerInPresentationMode ||\n PDFViewerApplication.page < PDFViewerApplication.pagesCount) {\n PDFViewerApplication.page = PDFViewerApplication.pagesCount;\n handled = true;\n ensureViewerFocused = true;\n }\n break;\n\n case 83: // 's'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.SELECT);\n break;\n case 72: // 'h'\n PDFViewerApplication.pdfCursorTools.switchTool(CursorTool.HAND);\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(90);\n break;\n }\n }\n\n if (cmd === 4) { // shift-key\n switch (evt.keyCode) {\n case 32: // spacebar\n if (!isViewerInPresentationMode &&\n pdfViewer.currentScaleValue !== 'page-fit') {\n break;\n }\n if (PDFViewerApplication.page > 1) {\n PDFViewerApplication.page--;\n }\n handled = true;\n break;\n\n case 82: // 'r'\n PDFViewerApplication.rotatePages(-90);\n break;\n }\n }\n\n if (!handled && !isViewerInPresentationMode) {\n // 33=Page Up 34=Page Down 35=End 36=Home\n // 37=Left 38=Up 39=Right 40=Down\n // 32=Spacebar\n if ((evt.keyCode >= 33 && evt.keyCode <= 40) ||\n (evt.keyCode === 32 && curElementTagName !== 'BUTTON')) {\n ensureViewerFocused = true;\n }\n }\n\n if (cmd === 2) { // alt-key\n switch (evt.keyCode) {\n case 37: // left arrow\n if (isViewerInPresentationMode) {\n PDFViewerApplication.pdfHistory.back();\n handled = true;\n }\n break;\n case 39: // right arrow\n if (isViewerInPresentationMode) {\n PDFViewerApplication.pdfHistory.forward();\n handled = true;\n }\n break;\n }\n }\n\n if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) {\n // The page container is not focused, but a page navigation key has been\n // pressed. Change the focus to the viewer container to make sure that\n // navigation by keyboard works as expected.\n pdfViewer.focus();\n }\n\n if (handled) {\n evt.preventDefault();\n }\n}\n\n/**\n * Converts API PageMode values to the format used by `PDFSidebar`.\n * NOTE: There's also a \"FullScreen\" parameter which is not possible to support,\n * since the Fullscreen API used in browsers requires that entering\n * fullscreen mode only occurs as a result of a user-initiated event.\n * @param {string} mode - The API PageMode value.\n * @returns {number} A value from {SidebarView}.\n */\nfunction apiPageModeToSidebarView(mode) {\n switch (mode) {\n case 'UseNone':\n return SidebarView.NONE;\n case 'UseThumbs':\n return SidebarView.THUMBS;\n case 'UseOutlines':\n return SidebarView.OUTLINE;\n case 'UseAttachments':\n return SidebarView.ATTACHMENTS;\n case 'UseOC':\n // Not implemented, since we don't support Optional Content Groups yet.\n }\n return SidebarView.NONE; // Default value.\n}\n\n/* Abstract factory for the print service. */\nlet PDFPrintServiceFactory = {\n instance: {\n supportsPrinting: false,\n createPrintService() {\n throw new Error('Not implemented: createPrintService');\n },\n },\n};\n\nexport {\n PDFViewerApplication,\n DefaultExternalServices,\n PDFPrintServiceFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/app.js","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalEventBus } from './dom_events';\nimport { parseQueryString } from './ui_utils';\n\n/**\n * @typedef {Object} PDFLinkServiceOptions\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * Performs navigation functions inside PDF, such as opening specified page,\n * or destination.\n * @implements {IPDFLinkService}\n */\nclass PDFLinkService {\n /**\n * @param {PDFLinkServiceOptions} options\n */\n constructor({ eventBus, } = {}) {\n this.eventBus = eventBus || getGlobalEventBus();\n this.baseUrl = null;\n this.pdfDocument = null;\n this.pdfViewer = null;\n this.pdfHistory = null;\n\n this._pagesRefCache = null;\n }\n\n setDocument(pdfDocument, baseUrl) {\n this.baseUrl = baseUrl;\n this.pdfDocument = pdfDocument;\n this._pagesRefCache = Object.create(null);\n }\n\n setViewer(pdfViewer) {\n this.pdfViewer = pdfViewer;\n }\n\n setHistory(pdfHistory) {\n this.pdfHistory = pdfHistory;\n }\n\n /**\n * @returns {number}\n */\n get pagesCount() {\n return this.pdfDocument ? this.pdfDocument.numPages : 0;\n }\n\n /**\n * @returns {number}\n */\n get page() {\n return this.pdfViewer.currentPageNumber;\n }\n\n /**\n * @param {number} value\n */\n set page(value) {\n this.pdfViewer.currentPageNumber = value;\n }\n\n /**\n * @param {string|Array} dest - The named, or explicit, PDF destination.\n */\n navigateTo(dest) {\n let goToDestination = ({ namedDest, explicitDest, }) => {\n // Dest array looks like that: \n let destRef = explicitDest[0], pageNumber;\n\n if (destRef instanceof Object) {\n pageNumber = this._cachedPageNumber(destRef);\n\n if (pageNumber === null) {\n // Fetch the page reference if it's not yet available. This could\n // only occur during loading, before all pages have been resolved.\n this.pdfDocument.getPageIndex(destRef).then((pageIndex) => {\n this.cachePageRef(pageIndex + 1, destRef);\n goToDestination({ namedDest, explicitDest, });\n }).catch(() => {\n console.error(`PDFLinkService.navigateTo: \"${destRef}\" is not ` +\n `a valid page reference, for dest=\"${dest}\".`);\n });\n return;\n }\n } else if ((destRef | 0) === destRef) { // Integer\n pageNumber = destRef + 1;\n } else {\n console.error(`PDFLinkService.navigateTo: \"${destRef}\" is not ` +\n `a valid destination reference, for dest=\"${dest}\".`);\n return;\n }\n if (!pageNumber || pageNumber < 1 || pageNumber > this.pagesCount) {\n console.error(`PDFLinkService.navigateTo: \"${pageNumber}\" is not ` +\n `a valid page number, for dest=\"${dest}\".`);\n return;\n }\n\n this.pdfViewer.scrollPageIntoView({\n pageNumber,\n destArray: explicitDest,\n });\n\n if (this.pdfHistory) { // Update the browsing history, if enabled.\n this.pdfHistory.push({\n dest: explicitDest,\n hash: namedDest,\n page: pageNumber,\n });\n }\n };\n\n new Promise((resolve, reject) => {\n if (typeof dest === 'string') {\n this.pdfDocument.getDestination(dest).then((destArray) => {\n resolve({\n namedDest: dest,\n explicitDest: destArray,\n });\n });\n return;\n }\n resolve({\n namedDest: '',\n explicitDest: dest,\n });\n }).then((data) => {\n if (!(data.explicitDest instanceof Array)) {\n console.error(`PDFLinkService.navigateTo: \"${data.explicitDest}\" is` +\n ` not a valid destination array, for dest=\"${dest}\".`);\n return;\n }\n goToDestination(data);\n });\n }\n\n /**\n * @param {string|Array} dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n if (typeof dest === 'string') {\n return this.getAnchorUrl('#' + escape(dest));\n }\n if (dest instanceof Array) {\n let str = JSON.stringify(dest);\n return this.getAnchorUrl('#' + escape(str));\n }\n return this.getAnchorUrl('');\n }\n\n /**\n * Prefix the full url on anchor links to make sure that links are resolved\n * relative to the current URL instead of the one defined in .\n * @param {String} anchor The anchor hash, including the #.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(anchor) {\n return (this.baseUrl || '') + anchor;\n }\n\n /**\n * @param {string} hash\n */\n setHash(hash) {\n let pageNumber, dest;\n if (hash.indexOf('=') >= 0) {\n let params = parseQueryString(hash);\n if ('search' in params) {\n this.eventBus.dispatch('findfromurlhash', {\n source: this,\n query: params['search'].replace(/\"/g, ''),\n phraseSearch: (params['phrase'] === 'true'),\n });\n }\n // borrowing syntax from \"Parameters for Opening PDF Files\"\n if ('nameddest' in params) {\n if (this.pdfHistory) {\n this.pdfHistory.updateNextHashParam(params.nameddest);\n }\n this.navigateTo(params.nameddest);\n return;\n }\n if ('page' in params) {\n pageNumber = (params.page | 0) || 1;\n }\n if ('zoom' in params) {\n // Build the destination array.\n let zoomArgs = params.zoom.split(','); // scale,left,top\n let zoomArg = zoomArgs[0];\n let zoomArgNumber = parseFloat(zoomArg);\n\n if (zoomArg.indexOf('Fit') === -1) {\n // If the zoomArg is a number, it has to get divided by 100. If it's\n // a string, it should stay as it is.\n dest = [null, { name: 'XYZ', },\n zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null,\n zoomArgs.length > 2 ? (zoomArgs[2] | 0) : null,\n (zoomArgNumber ? zoomArgNumber / 100 : zoomArg)];\n } else {\n if (zoomArg === 'Fit' || zoomArg === 'FitB') {\n dest = [null, { name: zoomArg, }];\n } else if ((zoomArg === 'FitH' || zoomArg === 'FitBH') ||\n (zoomArg === 'FitV' || zoomArg === 'FitBV')) {\n dest = [null, { name: zoomArg, },\n zoomArgs.length > 1 ? (zoomArgs[1] | 0) : null];\n } else if (zoomArg === 'FitR') {\n if (zoomArgs.length !== 5) {\n console.error(\n 'PDFLinkService.setHash: Not enough parameters for \"FitR\".');\n } else {\n dest = [null, { name: zoomArg, },\n (zoomArgs[1] | 0), (zoomArgs[2] | 0),\n (zoomArgs[3] | 0), (zoomArgs[4] | 0)];\n }\n } else {\n console.error(`PDFLinkService.setHash: \"${zoomArg}\" is not ` +\n 'a valid zoom value.');\n }\n }\n }\n if (dest) {\n this.pdfViewer.scrollPageIntoView({\n pageNumber: pageNumber || this.page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n } else if (pageNumber) {\n this.page = pageNumber; // simple page\n }\n if ('pagemode' in params) {\n this.eventBus.dispatch('pagemode', {\n source: this,\n mode: params.pagemode,\n });\n }\n } else { // Named (or explicit) destination.\n if ((typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) &&\n /^\\d+$/.test(hash) && hash <= this.pagesCount) {\n console.warn('PDFLinkService_setHash: specifying a page number ' +\n 'directly after the hash symbol (#) is deprecated, ' +\n `please use the \"#page=${hash}\" form instead.`);\n this.page = hash | 0;\n }\n\n dest = unescape(hash);\n try {\n dest = JSON.parse(dest);\n\n if (!(dest instanceof Array)) {\n // Avoid incorrectly rejecting a valid named destination, such as\n // e.g. \"4.3\" or \"true\", because `JSON.parse` converted its type.\n dest = dest.toString();\n }\n } catch (ex) {}\n\n if (typeof dest === 'string' || isValidExplicitDestination(dest)) {\n if (this.pdfHistory) {\n this.pdfHistory.updateNextHashParam(dest);\n }\n this.navigateTo(dest);\n return;\n }\n console.error(`PDFLinkService.setHash: \"${unescape(hash)}\" is not ` +\n 'a valid destination.');\n }\n }\n\n /**\n * @param {string} action\n */\n executeNamedAction(action) {\n // See PDF reference, table 8.45 - Named action\n switch (action) {\n case 'GoBack':\n if (this.pdfHistory) {\n this.pdfHistory.back();\n }\n break;\n\n case 'GoForward':\n if (this.pdfHistory) {\n this.pdfHistory.forward();\n }\n break;\n\n case 'NextPage':\n if (this.page < this.pagesCount) {\n this.page++;\n }\n break;\n\n case 'PrevPage':\n if (this.page > 1) {\n this.page--;\n }\n break;\n\n case 'LastPage':\n this.page = this.pagesCount;\n break;\n\n case 'FirstPage':\n this.page = 1;\n break;\n\n default:\n break; // No action according to spec\n }\n\n this.eventBus.dispatch('namedaction', {\n source: this,\n action,\n });\n }\n\n /**\n * @param {Object} params\n */\n onFileAttachmentAnnotation({ id, filename, content, }) {\n this.eventBus.dispatch('fileattachmentannotation', {\n source: this,\n id,\n filename,\n content,\n });\n }\n\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {\n let refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n this._pagesRefCache[refStr] = pageNum;\n }\n\n _cachedPageNumber(pageRef) {\n let refStr = pageRef.num + ' ' + pageRef.gen + ' R';\n return (this._pagesRefCache && this._pagesRefCache[refStr]) || null;\n }\n}\n\nfunction isValidExplicitDestination(dest) {\n if (!(dest instanceof Array)) {\n return false;\n }\n let destLength = dest.length, allowNull = true;\n if (destLength < 2) {\n return false;\n }\n let page = dest[0];\n if (!(typeof page === 'object' &&\n typeof page.num === 'number' && (page.num | 0) === page.num &&\n typeof page.gen === 'number' && (page.gen | 0) === page.gen) &&\n !(typeof page === 'number' && (page | 0) === page && page >= 0)) {\n return false;\n }\n let zoom = dest[1];\n if (!(typeof zoom === 'object' && typeof zoom.name === 'string')) {\n return false;\n }\n switch (zoom.name) {\n case 'XYZ':\n if (destLength !== 5) {\n return false;\n }\n break;\n case 'Fit':\n case 'FitB':\n return destLength === 2;\n case 'FitH':\n case 'FitBH':\n case 'FitV':\n case 'FitBV':\n if (destLength !== 3) {\n return false;\n }\n break;\n case 'FitR':\n if (destLength !== 6) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (let i = 2; i < destLength; i++) {\n let param = dest[i];\n if (!(typeof param === 'number' || (allowNull && param === null))) {\n return false;\n }\n }\n return true;\n}\n\nclass SimpleLinkService {\n /**\n * @returns {number}\n */\n get page() {\n return 0;\n }\n /**\n * @param {number} value\n */\n set page(value) {}\n /**\n * @param dest - The PDF destination object.\n */\n navigateTo(dest) {}\n /**\n * @param dest - The PDF destination object.\n * @returns {string} The hyperlink to the PDF object.\n */\n getDestinationHash(dest) {\n return '#';\n }\n /**\n * @param hash - The PDF parameters/hash.\n * @returns {string} The hyperlink to the PDF object.\n */\n getAnchorUrl(hash) {\n return '#';\n }\n /**\n * @param {string} hash\n */\n setHash(hash) {}\n /**\n * @param {string} action\n */\n executeNamedAction(action) {}\n /**\n * @param {Object} params\n */\n onFileAttachmentAnnotation({ id, filename, content, }) {}\n /**\n * @param {number} pageNum - page number.\n * @param {Object} pageRef - reference to the page.\n */\n cachePageRef(pageNum, pageRef) {}\n}\n\nexport {\n PDFLinkService,\n SimpleLinkService,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_link_service.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GrabToPan } from './grab_to_pan';\n\nconst CursorTool = {\n SELECT: 0, // The default value.\n HAND: 1,\n ZOOM: 2,\n};\n\n/**\n * @typedef {Object} PDFCursorToolsOptions\n * @property {HTMLDivElement} container - The document container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {BasePreferences} preferences - Object for reading/writing\n * persistent settings.\n */\n\nclass PDFCursorTools {\n /**\n * @param {PDFCursorToolsOptions} options\n */\n constructor({ container, eventBus, preferences, }) {\n this.container = container;\n this.eventBus = eventBus;\n\n this.active = CursorTool.SELECT;\n this.activeBeforePresentationMode = null;\n\n this.handTool = new GrabToPan({\n element: this.container,\n });\n\n this._addEventListeners();\n\n Promise.all([\n preferences.get('cursorToolOnLoad'),\n preferences.get('enableHandToolOnLoad')\n ]).then(([cursorToolPref, handToolPref]) => {\n // If the 'cursorToolOnLoad' preference has not been set to a non-default\n // value, attempt to convert the old 'enableHandToolOnLoad' preference.\n // TODO: Remove this conversion after a suitable number of releases.\n if (handToolPref === true) {\n preferences.set('enableHandToolOnLoad', false);\n\n if (cursorToolPref === CursorTool.SELECT) {\n cursorToolPref = CursorTool.HAND;\n preferences.set('cursorToolOnLoad', cursorToolPref).catch(() => { });\n }\n }\n this.switchTool(cursorToolPref);\n }).catch(() => { });\n }\n\n /**\n * @returns {number} One of the values in {CursorTool}.\n */\n get activeTool() {\n return this.active;\n }\n\n /**\n * NOTE: This method is ignored while Presentation Mode is active.\n * @param {number} tool - The cursor mode that should be switched to,\n * must be one of the values in {CursorTool}.\n */\n switchTool(tool) {\n if (this.activeBeforePresentationMode !== null) {\n return; // Cursor tools cannot be used in Presentation Mode.\n }\n if (tool === this.active) {\n return; // The requested tool is already active.\n }\n\n let disableActiveTool = () => {\n switch (this.active) {\n case CursorTool.SELECT:\n break;\n case CursorTool.HAND:\n this.handTool.deactivate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n }\n };\n\n switch (tool) { // Enable the new cursor tool.\n case CursorTool.SELECT:\n disableActiveTool();\n break;\n case CursorTool.HAND:\n disableActiveTool();\n this.handTool.activate();\n break;\n case CursorTool.ZOOM:\n /* falls through */\n default:\n console.error(`switchTool: \"${tool}\" is an unsupported value.`);\n return;\n }\n // Update the active tool *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = tool;\n\n this._dispatchEvent();\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch('cursortoolchanged', {\n source: this,\n tool: this.active,\n });\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.eventBus.on('switchcursortool', (evt) => {\n this.switchTool(evt.tool);\n });\n\n this.eventBus.on('presentationmodechanged', (evt) => {\n if (evt.switchInProgress) {\n return;\n }\n let previouslyActive;\n\n if (evt.active) {\n previouslyActive = this.active;\n\n this.switchTool(CursorTool.SELECT);\n this.activeBeforePresentationMode = previouslyActive;\n } else {\n previouslyActive = this.activeBeforePresentationMode;\n\n this.activeBeforePresentationMode = null;\n this.switchTool(previouslyActive);\n }\n });\n }\n}\n\nexport {\n CursorTool,\n PDFCursorTools,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_cursor_tools.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability } from 'pdfjs-lib';\nimport { scrollIntoView } from './ui_utils';\n\nconst FindState = {\n FOUND: 0,\n NOT_FOUND: 1,\n WRAPPED: 2,\n PENDING: 3,\n};\n\nconst FIND_SCROLL_OFFSET_TOP = -50;\nconst FIND_SCROLL_OFFSET_LEFT = -400;\nconst FIND_TIMEOUT = 250; // ms\n\nconst CHARACTERS_TO_NORMALIZE = {\n '\\u2018': '\\'', // Left single quotation mark\n '\\u2019': '\\'', // Right single quotation mark\n '\\u201A': '\\'', // Single low-9 quotation mark\n '\\u201B': '\\'', // Single high-reversed-9 quotation mark\n '\\u201C': '\"', // Left double quotation mark\n '\\u201D': '\"', // Right double quotation mark\n '\\u201E': '\"', // Double low-9 quotation mark\n '\\u201F': '\"', // Double high-reversed-9 quotation mark\n '\\u00BC': '1/4', // Vulgar fraction one quarter\n '\\u00BD': '1/2', // Vulgar fraction one half\n '\\u00BE': '3/4', // Vulgar fraction three quarters\n};\n\n/**\n * Provides search functionality to find a given string in a PDF document.\n */\nclass PDFFindController {\n constructor({ pdfViewer, }) {\n this.pdfViewer = pdfViewer;\n\n this.onUpdateResultsCount = null;\n this.onUpdateState = null;\n\n this.reset();\n\n // Compile the regular expression for text normalization once.\n let replace = Object.keys(CHARACTERS_TO_NORMALIZE).join('');\n this.normalizationRegex = new RegExp('[' + replace + ']', 'g');\n }\n\n reset() {\n this.startedTextExtraction = false;\n this.extractTextPromises = [];\n this.pendingFindMatches = Object.create(null);\n this.active = false; // If active, find results will be highlighted.\n this.pageContents = []; // Stores the text for each page.\n this.pageMatches = [];\n this.pageMatchesLength = null;\n this.matchCount = 0;\n this.selected = { // Currently selected match.\n pageIdx: -1,\n matchIdx: -1,\n };\n this.offset = { // Where the find algorithm currently is in the document.\n pageIdx: null,\n matchIdx: null,\n };\n this.pagesToSearch = null;\n this.resumePageIdx = null;\n this.state = null;\n this.dirtyMatch = false;\n this.findTimeout = null;\n\n this._firstPagePromise = new Promise((resolve) => {\n this.resolveFirstPage = resolve;\n });\n }\n\n normalize(text) {\n return text.replace(this.normalizationRegex, function (ch) {\n return CHARACTERS_TO_NORMALIZE[ch];\n });\n }\n\n /**\n * Helper for multi-term search that fills the `matchesWithLength` array\n * and handles cases where one search term includes another search term (for\n * example, \"tamed tame\" or \"this is\"). It looks for intersecting terms in\n * the `matches` and keeps elements with a longer match length.\n */\n _prepareMatches(matchesWithLength, matches, matchesLength) {\n function isSubTerm(matchesWithLength, currentIndex) {\n let currentElem = matchesWithLength[currentIndex];\n let nextElem = matchesWithLength[currentIndex + 1];\n\n // Check for cases like \"TAMEd TAME\".\n if (currentIndex < matchesWithLength.length - 1 &&\n currentElem.match === nextElem.match) {\n currentElem.skipped = true;\n return true;\n }\n\n // Check for cases like \"thIS IS\".\n for (let i = currentIndex - 1; i >= 0; i--) {\n let prevElem = matchesWithLength[i];\n if (prevElem.skipped) {\n continue;\n }\n if (prevElem.match + prevElem.matchLength < currentElem.match) {\n break;\n }\n if (prevElem.match + prevElem.matchLength >=\n currentElem.match + currentElem.matchLength) {\n currentElem.skipped = true;\n return true;\n }\n }\n return false;\n }\n\n // Sort the array of `{ match: , matchLength: }`\n // objects on increasing index first and on the length otherwise.\n matchesWithLength.sort(function(a, b) {\n return a.match === b.match ? a.matchLength - b.matchLength :\n a.match - b.match;\n });\n for (let i = 0, len = matchesWithLength.length; i < len; i++) {\n if (isSubTerm(matchesWithLength, i)) {\n continue;\n }\n matches.push(matchesWithLength[i].match);\n matchesLength.push(matchesWithLength[i].matchLength);\n }\n }\n\n calcFindPhraseMatch(query, pageIndex, pageContent) {\n let matches = [];\n let queryLen = query.length;\n let matchIdx = -queryLen;\n while (true) {\n matchIdx = pageContent.indexOf(query, matchIdx + queryLen);\n if (matchIdx === -1) {\n break;\n }\n matches.push(matchIdx);\n }\n this.pageMatches[pageIndex] = matches;\n }\n\n calcFindWordMatch(query, pageIndex, pageContent) {\n let matchesWithLength = [];\n // Divide the query into pieces and search for text in each piece.\n let queryArray = query.match(/\\S+/g);\n for (let i = 0, len = queryArray.length; i < len; i++) {\n let subquery = queryArray[i];\n let subqueryLen = subquery.length;\n let matchIdx = -subqueryLen;\n while (true) {\n matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen);\n if (matchIdx === -1) {\n break;\n }\n // Other searches do not, so we store the length.\n matchesWithLength.push({\n match: matchIdx,\n matchLength: subqueryLen,\n skipped: false,\n });\n }\n }\n\n // Prepare arrays for storing the matches.\n if (!this.pageMatchesLength) {\n this.pageMatchesLength = [];\n }\n this.pageMatchesLength[pageIndex] = [];\n this.pageMatches[pageIndex] = [];\n\n // Sort `matchesWithLength`, remove intersecting terms and put the result\n // into the two arrays.\n this._prepareMatches(matchesWithLength, this.pageMatches[pageIndex],\n this.pageMatchesLength[pageIndex]);\n }\n\n calcFindMatch(pageIndex) {\n let pageContent = this.normalize(this.pageContents[pageIndex]);\n let query = this.normalize(this.state.query);\n let caseSensitive = this.state.caseSensitive;\n let phraseSearch = this.state.phraseSearch;\n let queryLen = query.length;\n\n if (queryLen === 0) {\n // Do nothing: the matches should be wiped out already.\n return;\n }\n\n if (!caseSensitive) {\n pageContent = pageContent.toLowerCase();\n query = query.toLowerCase();\n }\n\n if (phraseSearch) {\n this.calcFindPhraseMatch(query, pageIndex, pageContent);\n } else {\n this.calcFindWordMatch(query, pageIndex, pageContent);\n }\n\n this.updatePage(pageIndex);\n if (this.resumePageIdx === pageIndex) {\n this.resumePageIdx = null;\n this.nextPageMatch();\n }\n\n // Update the match count.\n if (this.pageMatches[pageIndex].length > 0) {\n this.matchCount += this.pageMatches[pageIndex].length;\n this.updateUIResultsCount();\n }\n }\n\n extractText() {\n if (this.startedTextExtraction) {\n return;\n }\n this.startedTextExtraction = true;\n this.pageContents.length = 0;\n\n let promise = Promise.resolve();\n for (let i = 0, ii = this.pdfViewer.pagesCount; i < ii; i++) {\n let extractTextCapability = createPromiseCapability();\n this.extractTextPromises[i] = extractTextCapability.promise;\n\n promise = promise.then(() => {\n return this.pdfViewer.getPageTextContent(i).then((textContent) => {\n let textItems = textContent.items;\n let strBuf = [];\n\n for (let j = 0, jj = textItems.length; j < jj; j++) {\n strBuf.push(textItems[j].str);\n }\n // Store the pageContent as a string.\n this.pageContents[i] = strBuf.join('');\n extractTextCapability.resolve(i);\n }, (reason) => {\n console.error(`Unable to get page ${i + 1} text content`, reason);\n // Page error -- assuming no text content.\n this.pageContents[i] = '';\n extractTextCapability.resolve(i);\n });\n });\n }\n }\n\n executeCommand(cmd, state) {\n if (this.state === null || cmd !== 'findagain') {\n this.dirtyMatch = true;\n }\n this.state = state;\n this.updateUIState(FindState.PENDING);\n\n this._firstPagePromise.then(() => {\n this.extractText();\n\n clearTimeout(this.findTimeout);\n if (cmd === 'find') {\n // Trigger the find action with a small delay to avoid starting the\n // search when the user is still typing (saving resources).\n this.findTimeout = setTimeout(this.nextMatch.bind(this), FIND_TIMEOUT);\n } else {\n this.nextMatch();\n }\n });\n }\n\n updatePage(index) {\n if (this.selected.pageIdx === index) {\n // If the page is selected, scroll the page into view, which triggers\n // rendering the page, which adds the textLayer. Once the textLayer is\n // build, it will scroll onto the selected match.\n this.pdfViewer.currentPageNumber = index + 1;\n }\n\n let page = this.pdfViewer.getPageView(index);\n if (page.textLayer) {\n page.textLayer.updateMatches();\n }\n }\n\n nextMatch() {\n let previous = this.state.findPrevious;\n let currentPageIndex = this.pdfViewer.currentPageNumber - 1;\n let numPages = this.pdfViewer.pagesCount;\n\n this.active = true;\n\n if (this.dirtyMatch) {\n // Need to recalculate the matches, reset everything.\n this.dirtyMatch = false;\n this.selected.pageIdx = this.selected.matchIdx = -1;\n this.offset.pageIdx = currentPageIndex;\n this.offset.matchIdx = null;\n this.hadMatch = false;\n this.resumePageIdx = null;\n this.pageMatches = [];\n this.matchCount = 0;\n this.pageMatchesLength = null;\n\n for (let i = 0; i < numPages; i++) {\n // Wipe out any previously highlighted matches.\n this.updatePage(i);\n\n // Start finding the matches as soon as the text is extracted.\n if (!(i in this.pendingFindMatches)) {\n this.pendingFindMatches[i] = true;\n this.extractTextPromises[i].then((pageIdx) => {\n delete this.pendingFindMatches[pageIdx];\n this.calcFindMatch(pageIdx);\n });\n }\n }\n }\n\n // If there's no query there's no point in searching.\n if (this.state.query === '') {\n this.updateUIState(FindState.FOUND);\n return;\n }\n\n // If we're waiting on a page, we return since we can't do anything else.\n if (this.resumePageIdx) {\n return;\n }\n\n let offset = this.offset;\n // Keep track of how many pages we should maximally iterate through.\n this.pagesToSearch = numPages;\n // If there's already a `matchIdx` that means we are iterating through a\n // page's matches.\n if (offset.matchIdx !== null) {\n let numPageMatches = this.pageMatches[offset.pageIdx].length;\n if ((!previous && offset.matchIdx + 1 < numPageMatches) ||\n (previous && offset.matchIdx > 0)) {\n // The simple case; we just have advance the matchIdx to select\n // the next match on the page.\n this.hadMatch = true;\n offset.matchIdx = (previous ? offset.matchIdx - 1 :\n offset.matchIdx + 1);\n this.updateMatch(true);\n return;\n }\n // We went beyond the current page's matches, so we advance to\n // the next page.\n this.advanceOffsetPage(previous);\n }\n // Start searching through the page.\n this.nextPageMatch();\n }\n\n matchesReady(matches) {\n let offset = this.offset;\n let numMatches = matches.length;\n let previous = this.state.findPrevious;\n\n if (numMatches) {\n // There were matches for the page, so initialize `matchIdx`.\n this.hadMatch = true;\n offset.matchIdx = (previous ? numMatches - 1 : 0);\n this.updateMatch(true);\n return true;\n }\n // No matches, so attempt to search the next page.\n this.advanceOffsetPage(previous);\n if (offset.wrapped) {\n offset.matchIdx = null;\n if (this.pagesToSearch < 0) {\n // No point in wrapping again, there were no matches.\n this.updateMatch(false);\n // While matches were not found, searching for a page\n // with matches should nevertheless halt.\n return true;\n }\n }\n // Matches were not found (and searching is not done).\n return false;\n }\n\n /**\n * Called from the text layer when match presentation is updated.\n *\n * @param {number} pageIndex - The index of the page.\n * @param {number} matchIndex - The index of the match.\n * @param {Array} elements - Text layer `div` elements.\n * @param {number} beginIdx - Start index of the `div` array for the match.\n */\n updateMatchPosition(pageIndex, matchIndex, elements, beginIdx) {\n if (this.selected.matchIdx === matchIndex &&\n this.selected.pageIdx === pageIndex) {\n let spot = {\n top: FIND_SCROLL_OFFSET_TOP,\n left: FIND_SCROLL_OFFSET_LEFT,\n };\n scrollIntoView(elements[beginIdx], spot,\n /* skipOverflowHiddenElements = */ true);\n }\n }\n\n nextPageMatch() {\n if (this.resumePageIdx !== null) {\n console.error('There can only be one pending page.');\n }\n\n let matches = null;\n do {\n let pageIdx = this.offset.pageIdx;\n matches = this.pageMatches[pageIdx];\n if (!matches) {\n // The matches don't exist yet for processing by `matchesReady`,\n // so set a resume point for when they do exist.\n this.resumePageIdx = pageIdx;\n break;\n }\n } while (!this.matchesReady(matches));\n }\n\n advanceOffsetPage(previous) {\n let offset = this.offset;\n let numPages = this.extractTextPromises.length;\n offset.pageIdx = (previous ? offset.pageIdx - 1 : offset.pageIdx + 1);\n offset.matchIdx = null;\n\n this.pagesToSearch--;\n\n if (offset.pageIdx >= numPages || offset.pageIdx < 0) {\n offset.pageIdx = (previous ? numPages - 1 : 0);\n offset.wrapped = true;\n }\n }\n\n updateMatch(found = false) {\n let state = FindState.NOT_FOUND;\n let wrapped = this.offset.wrapped;\n this.offset.wrapped = false;\n\n if (found) {\n let previousPage = this.selected.pageIdx;\n this.selected.pageIdx = this.offset.pageIdx;\n this.selected.matchIdx = this.offset.matchIdx;\n state = (wrapped ? FindState.WRAPPED : FindState.FOUND);\n\n // Update the currently selected page to wipe out any selected matches.\n if (previousPage !== -1 && previousPage !== this.selected.pageIdx) {\n this.updatePage(previousPage);\n }\n }\n\n this.updateUIState(state, this.state.findPrevious);\n if (this.selected.pageIdx !== -1) {\n this.updatePage(this.selected.pageIdx);\n }\n }\n\n updateUIResultsCount() {\n if (this.onUpdateResultsCount) {\n this.onUpdateResultsCount(this.matchCount);\n }\n }\n\n updateUIState(state, previous) {\n if (this.onUpdateState) {\n this.onUpdateState(state, previous, this.matchCount);\n }\n }\n}\n\nexport {\n FindState,\n PDFFindController,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_find_controller.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DefaultExternalServices, PDFViewerApplication } from './app';\nimport { BasePreferences } from './preferences';\nimport { DownloadManager } from './download_manager';\nimport { GenericL10n } from './genericl10n';\nimport { PDFJS } from 'pdfjs-lib';\n\nif (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('GENERIC')) {\n throw new Error('Module \"pdfjs-web/genericcom\" shall not be used outside ' +\n 'GENERIC build.');\n}\n\nvar GenericCom = {};\n\nclass GenericPreferences extends BasePreferences {\n _writeToStorage(prefObj) {\n return new Promise(function(resolve) {\n localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj));\n resolve();\n });\n }\n\n _readFromStorage(prefObj) {\n return new Promise(function(resolve) {\n var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences'));\n resolve(readPrefs);\n });\n }\n}\n\nvar GenericExternalServices = Object.create(DefaultExternalServices);\nGenericExternalServices.createDownloadManager = function() {\n return new DownloadManager();\n};\nGenericExternalServices.createPreferences = function() {\n return new GenericPreferences();\n};\nGenericExternalServices.createL10n = function () {\n return new GenericL10n(PDFJS.locale);\n};\nPDFViewerApplication.externalServices = GenericExternalServices;\n\nexport {\n GenericCom,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/genericcom.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CSS_UNITS, NullL10n } from './ui_utils';\nimport { PDFPrintServiceFactory, PDFViewerApplication } from './app';\nimport { PDFJS } from 'pdfjs-lib';\n\nlet activeService = null;\nlet overlayManager = null;\n\n// Renders the page to the canvas of the given print service, and returns\n// the suggested dimensions of the output page.\nfunction renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size) {\n var scratchCanvas = activeService.scratchCanvas;\n\n // The size of the canvas in pixels for printing.\n var PRINT_RESOLUTION = 150;\n var PRINT_UNITS = PRINT_RESOLUTION / 72.0;\n scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);\n scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);\n\n // The physical size of the img as specified by the PDF document.\n var width = Math.floor(size.width * CSS_UNITS) + 'px';\n var height = Math.floor(size.height * CSS_UNITS) + 'px';\n\n var ctx = scratchCanvas.getContext('2d');\n ctx.save();\n ctx.fillStyle = 'rgb(255, 255, 255)';\n ctx.fillRect(0, 0, scratchCanvas.width, scratchCanvas.height);\n ctx.restore();\n\n return pdfDocument.getPage(pageNumber).then(function (pdfPage) {\n var renderContext = {\n canvasContext: ctx,\n transform: [PRINT_UNITS, 0, 0, PRINT_UNITS, 0, 0],\n viewport: pdfPage.getViewport(1, size.rotation),\n intent: 'print',\n };\n return pdfPage.render(renderContext).promise;\n }).then(function () {\n return {\n width,\n height,\n };\n });\n}\n\nfunction PDFPrintService(pdfDocument, pagesOverview, printContainer, l10n) {\n this.pdfDocument = pdfDocument;\n this.pagesOverview = pagesOverview;\n this.printContainer = printContainer;\n this.l10n = l10n || NullL10n;\n this.currentPage = -1;\n // The temporary canvas where renderPage paints one page at a time.\n this.scratchCanvas = document.createElement('canvas');\n}\n\nPDFPrintService.prototype = {\n layout() {\n this.throwIfInactive();\n\n var body = document.querySelector('body');\n body.setAttribute('data-pdfjsprinting', true);\n\n var hasEqualPageSizes = this.pagesOverview.every(function (size) {\n return size.width === this.pagesOverview[0].width &&\n size.height === this.pagesOverview[0].height;\n }, this);\n if (!hasEqualPageSizes) {\n console.warn('Not all pages have the same size. The printed ' +\n 'result may be incorrect!');\n }\n\n // Insert a @page + size rule to make sure that the page size is correctly\n // set. Note that we assume that all pages have the same size, because\n // variable-size pages are not supported yet (e.g. in Chrome & Firefox).\n // TODO(robwu): Use named pages when size calculation bugs get resolved\n // (e.g. https://crbug.com/355116) AND when support for named pages is\n // added (http://www.w3.org/TR/css3-page/#using-named-pages).\n // In browsers where @page + size is not supported (such as Firefox,\n // https://bugzil.la/851441), the next stylesheet will be ignored and the\n // user has to select the correct paper size in the UI if wanted.\n this.pageStyleSheet = document.createElement('style');\n var pageSize = this.pagesOverview[0];\n this.pageStyleSheet.textContent =\n // \"size: \" is what we need. But also add \"A4\" because\n // Firefox incorrectly reports support for the other value.\n '@supports ((size:A4) and (size:1pt 1pt)) {' +\n '@page { size: ' + pageSize.width + 'pt ' + pageSize.height + 'pt;}' +\n '}';\n body.appendChild(this.pageStyleSheet);\n },\n\n destroy() {\n if (activeService !== this) {\n // |activeService| cannot be replaced without calling destroy() first,\n // so if it differs then an external consumer has a stale reference to\n // us.\n return;\n }\n this.printContainer.textContent = '';\n if (this.pageStyleSheet && this.pageStyleSheet.parentNode) {\n this.pageStyleSheet.parentNode.removeChild(this.pageStyleSheet);\n this.pageStyleSheet = null;\n }\n this.scratchCanvas.width = this.scratchCanvas.height = 0;\n this.scratchCanvas = null;\n activeService = null;\n ensureOverlay().then(function () {\n if (overlayManager.active !== 'printServiceOverlay') {\n return; // overlay was already closed\n }\n overlayManager.close('printServiceOverlay');\n });\n },\n\n renderPages() {\n var pageCount = this.pagesOverview.length;\n var renderNextPage = (resolve, reject) => {\n this.throwIfInactive();\n if (++this.currentPage >= pageCount) {\n renderProgress(pageCount, pageCount, this.l10n);\n resolve();\n return;\n }\n var index = this.currentPage;\n renderProgress(index, pageCount, this.l10n);\n renderPage(this, this.pdfDocument, index + 1, this.pagesOverview[index])\n .then(this.useRenderedPage.bind(this))\n .then(function () {\n renderNextPage(resolve, reject);\n }, reject);\n };\n return new Promise(renderNextPage);\n },\n\n useRenderedPage(printItem) {\n this.throwIfInactive();\n var img = document.createElement('img');\n img.style.width = printItem.width;\n img.style.height = printItem.height;\n\n var scratchCanvas = this.scratchCanvas;\n if (('toBlob' in scratchCanvas) && !PDFJS.disableCreateObjectURL) {\n scratchCanvas.toBlob(function (blob) {\n img.src = URL.createObjectURL(blob);\n });\n } else {\n img.src = scratchCanvas.toDataURL();\n }\n\n var wrapper = document.createElement('div');\n wrapper.appendChild(img);\n this.printContainer.appendChild(wrapper);\n\n return new Promise(function (resolve, reject) {\n img.onload = resolve;\n img.onerror = reject;\n });\n },\n\n performPrint() {\n this.throwIfInactive();\n return new Promise((resolve) => {\n // Push window.print in the macrotask queue to avoid being affected by\n // the deprecation of running print() code in a microtask, see\n // https://github.com/mozilla/pdf.js/issues/7547.\n setTimeout(() => {\n if (!this.active) {\n resolve();\n return;\n }\n print.call(window);\n // Delay promise resolution in case print() was not synchronous.\n setTimeout(resolve, 20); // Tidy-up.\n }, 0);\n });\n },\n\n get active() {\n return this === activeService;\n },\n\n throwIfInactive() {\n if (!this.active) {\n throw new Error('This print request was cancelled or completed.');\n }\n },\n};\n\n\nvar print = window.print;\nwindow.print = function print() {\n if (activeService) {\n console.warn('Ignored window.print() because of a pending print job.');\n return;\n }\n ensureOverlay().then(function () {\n if (activeService) {\n overlayManager.open('printServiceOverlay');\n }\n });\n\n try {\n dispatchEvent('beforeprint');\n } finally {\n if (!activeService) {\n console.error('Expected print service to be initialized.');\n ensureOverlay().then(function () {\n if (overlayManager.active === 'printServiceOverlay') {\n overlayManager.close('printServiceOverlay');\n }\n });\n return; // eslint-disable-line no-unsafe-finally\n }\n var activeServiceOnEntry = activeService;\n activeService.renderPages().then(function () {\n return activeServiceOnEntry.performPrint();\n }).catch(function () {\n // Ignore any error messages.\n }).then(function () {\n // aborts acts on the \"active\" print request, so we need to check\n // whether the print request (activeServiceOnEntry) is still active.\n // Without the check, an unrelated print request (created after aborting\n // this print request while the pages were being generated) would be\n // aborted.\n if (activeServiceOnEntry.active) {\n abort();\n }\n });\n }\n};\n\nfunction dispatchEvent(eventType) {\n var event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventType, false, false, 'custom');\n window.dispatchEvent(event);\n}\n\nfunction abort() {\n if (activeService) {\n activeService.destroy();\n dispatchEvent('afterprint');\n }\n}\n\nfunction renderProgress(index, total, l10n) {\n var progressContainer = document.getElementById('printServiceOverlay');\n var progress = Math.round(100 * index / total);\n var progressBar = progressContainer.querySelector('progress');\n var progressPerc = progressContainer.querySelector('.relative-progress');\n progressBar.value = progress;\n l10n.get('print_progress_percent', { progress, }, progress + '%').\n then((msg) => {\n progressPerc.textContent = msg;\n });\n}\n\nvar hasAttachEvent = !!document.attachEvent;\n\nwindow.addEventListener('keydown', function(event) {\n // Intercept Cmd/Ctrl + P in all browsers.\n // Also intercept Cmd/Ctrl + Shift + P in Chrome and Opera\n if (event.keyCode === /* P= */ 80 && (event.ctrlKey || event.metaKey) &&\n !event.altKey && (!event.shiftKey || window.chrome || window.opera)) {\n window.print();\n if (hasAttachEvent) {\n // Only attachEvent can cancel Ctrl + P dialog in IE <=10\n // attachEvent is gone in IE11, so the dialog will re-appear in IE11.\n return;\n }\n event.preventDefault();\n if (event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n } else {\n event.stopPropagation();\n }\n return;\n }\n}, true);\nif (hasAttachEvent) {\n document.attachEvent('onkeydown', function(event) {\n event = event || window.event;\n if (event.keyCode === /* P= */ 80 && event.ctrlKey) {\n event.keyCode = 0;\n return false;\n }\n });\n}\n\nif ('onbeforeprint' in window) {\n // Do not propagate before/afterprint events when they are not triggered\n // from within this polyfill. (FF/IE).\n var stopPropagationIfNeeded = function(event) {\n if (event.detail !== 'custom' && event.stopImmediatePropagation) {\n event.stopImmediatePropagation();\n }\n };\n window.addEventListener('beforeprint', stopPropagationIfNeeded);\n window.addEventListener('afterprint', stopPropagationIfNeeded);\n}\n\nvar overlayPromise;\nfunction ensureOverlay() {\n if (!overlayPromise) {\n overlayManager = PDFViewerApplication.overlayManager;\n if (!overlayManager) {\n throw new Error('The overlay manager has not yet been initialized.');\n }\n\n overlayPromise = overlayManager.register('printServiceOverlay',\n document.getElementById('printServiceOverlay'), abort, true);\n document.getElementById('printCancel').onclick = abort;\n }\n return overlayPromise;\n}\n\nPDFPrintServiceFactory.instance = {\n supportsPrinting: true,\n\n createPrintService(pdfDocument, pagesOverview, printContainer, l10n) {\n if (activeService) {\n throw new Error('The print service is created and active.');\n }\n activeService = new PDFPrintService(pdfDocument, pagesOverview,\n printContainer, l10n);\n return activeService;\n },\n};\n\nexport {\n PDFPrintService,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_print_service.js","/**\n * Copyright (c) 2011-2013 Fabien Cazenave, Mozilla.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n/*\n Additional modifications for PDF.js project:\n - Disables language initialization on page loading.\n - Disables document translation on page loading.\n - Removes consoleWarn and consoleLog and use console.log/warn directly.\n - Removes window._ assignment.\n - Remove compatibility code for OldIE.\n*/\n\n/*jshint browser: true, devel: true, es5: true, globalstrict: true */\n'use strict';\n\ndocument.webL10n = (function(window, document, undefined) {\n var gL10nData = {};\n var gTextData = '';\n var gTextProp = 'textContent';\n var gLanguage = '';\n var gMacros = {};\n var gReadyState = 'loading';\n\n\n /**\n * Synchronously loading l10n resources significantly minimizes flickering\n * from displaying the app with non-localized strings and then updating the\n * strings. Although this will block all script execution on this page, we\n * expect that the l10n resources are available locally on flash-storage.\n *\n * As synchronous XHR is generally considered as a bad idea, we're still\n * loading l10n resources asynchronously -- but we keep this in a setting,\n * just in case... and applications using this library should hide their\n * content until the `localized' event happens.\n */\n\n var gAsyncResourceLoading = true; // read-only\n\n\n /**\n * DOM helpers for the so-called \"HTML API\".\n *\n * These functions are written for modern browsers. For old versions of IE,\n * they're overridden in the 'startup' section at the end of this file.\n */\n\n function getL10nResourceLinks() {\n return document.querySelectorAll('link[type=\"application/l10n\"]');\n }\n\n function getL10nDictionary() {\n var script = document.querySelector('script[type=\"application/l10n\"]');\n // TODO: support multiple and external JSON dictionaries\n return script ? JSON.parse(script.innerHTML) : null;\n }\n\n function getTranslatableChildren(element) {\n return element ? element.querySelectorAll('*[data-l10n-id]') : [];\n }\n\n function getL10nAttributes(element) {\n if (!element)\n return {};\n\n var l10nId = element.getAttribute('data-l10n-id');\n var l10nArgs = element.getAttribute('data-l10n-args');\n var args = {};\n if (l10nArgs) {\n try {\n args = JSON.parse(l10nArgs);\n } catch (e) {\n console.warn('could not parse arguments for #' + l10nId);\n }\n }\n return { id: l10nId, args: args };\n }\n\n function fireL10nReadyEvent(lang) {\n var evtObject = document.createEvent('Event');\n evtObject.initEvent('localized', true, false);\n evtObject.language = lang;\n document.dispatchEvent(evtObject);\n }\n\n function xhrLoadText(url, onSuccess, onFailure) {\n onSuccess = onSuccess || function _onSuccess(data) {};\n onFailure = onFailure || function _onFailure() {};\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', url, gAsyncResourceLoading);\n if (xhr.overrideMimeType) {\n xhr.overrideMimeType('text/plain; charset=utf-8');\n }\n xhr.onreadystatechange = function() {\n if (xhr.readyState == 4) {\n if (xhr.status == 200 || xhr.status === 0) {\n onSuccess(xhr.responseText);\n } else {\n onFailure();\n }\n }\n };\n xhr.onerror = onFailure;\n xhr.ontimeout = onFailure;\n\n // in Firefox OS with the app:// protocol, trying to XHR a non-existing\n // URL will raise an exception here -- hence this ugly try...catch.\n try {\n xhr.send(null);\n } catch (e) {\n onFailure();\n }\n }\n\n\n /**\n * l10n resource parser:\n * - reads (async XHR) the l10n resource matching `lang';\n * - imports linked resources (synchronously) when specified;\n * - parses the text data (fills `gL10nData' and `gTextData');\n * - triggers success/failure callbacks when done.\n *\n * @param {string} href\n * URL of the l10n resource to parse.\n *\n * @param {string} lang\n * locale (language) to parse. Must be a lowercase string.\n *\n * @param {Function} successCallback\n * triggered when the l10n resource has been successully parsed.\n *\n * @param {Function} failureCallback\n * triggered when the an error has occured.\n *\n * @return {void}\n * uses the following global variables: gL10nData, gTextData, gTextProp.\n */\n\n function parseResource(href, lang, successCallback, failureCallback) {\n var baseURL = href.replace(/[^\\/]*$/, '') || './';\n\n // handle escaped characters (backslashes) in a string\n function evalString(text) {\n if (text.lastIndexOf('\\\\') < 0)\n return text;\n return text.replace(/\\\\\\\\/g, '\\\\')\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\r')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\b/g, '\\b')\n .replace(/\\\\f/g, '\\f')\n .replace(/\\\\{/g, '{')\n .replace(/\\\\}/g, '}')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\'/g, \"'\");\n }\n\n // parse *.properties text data into an l10n dictionary\n // If gAsyncResourceLoading is false, then the callback will be called\n // synchronously. Otherwise it is called asynchronously.\n function parseProperties(text, parsedPropertiesCallback) {\n var dictionary = {};\n\n // token expressions\n var reBlank = /^\\s*|\\s*$/;\n var reComment = /^\\s*#|^\\s*$/;\n var reSection = /^\\s*\\[(.*)\\]\\s*$/;\n var reImport = /^\\s*@import\\s+url\\((.*)\\)\\s*$/i;\n var reSplit = /^([^=\\s]*)\\s*=\\s*(.+)$/; // TODO: escape EOLs with '\\'\n\n // parse the *.properties file into an associative array\n function parseRawLines(rawText, extendedSyntax, parsedRawLinesCallback) {\n var entries = rawText.replace(reBlank, '').split(/[\\r\\n]+/);\n var currentLang = '*';\n var genericLang = lang.split('-', 1)[0];\n var skipLang = false;\n var match = '';\n\n function nextEntry() {\n // Use infinite loop instead of recursion to avoid reaching the\n // maximum recursion limit for content with many lines.\n while (true) {\n if (!entries.length) {\n parsedRawLinesCallback();\n return;\n }\n var line = entries.shift();\n\n // comment or blank line?\n if (reComment.test(line))\n continue;\n\n // the extended syntax supports [lang] sections and @import rules\n if (extendedSyntax) {\n match = reSection.exec(line);\n if (match) { // section start?\n // RFC 4646, section 4.4, \"All comparisons MUST be performed\n // in a case-insensitive manner.\"\n\n currentLang = match[1].toLowerCase();\n skipLang = (currentLang !== '*') &&\n (currentLang !== lang) && (currentLang !== genericLang);\n continue;\n } else if (skipLang) {\n continue;\n }\n match = reImport.exec(line);\n if (match) { // @import rule?\n loadImport(baseURL + match[1], nextEntry);\n return;\n }\n }\n\n // key-value pair\n var tmp = line.match(reSplit);\n if (tmp && tmp.length == 3) {\n dictionary[tmp[1]] = evalString(tmp[2]);\n }\n }\n }\n nextEntry();\n }\n\n // import another *.properties file\n function loadImport(url, callback) {\n xhrLoadText(url, function(content) {\n parseRawLines(content, false, callback); // don't allow recursive imports\n }, function () {\n console.warn(url + ' not found.');\n callback();\n });\n }\n\n // fill the dictionary\n parseRawLines(text, true, function() {\n parsedPropertiesCallback(dictionary);\n });\n }\n\n // load and parse l10n data (warning: global variables are used here)\n xhrLoadText(href, function(response) {\n gTextData += response; // mostly for debug\n\n // parse *.properties text data into an l10n dictionary\n parseProperties(response, function(data) {\n\n // find attribute descriptions, if any\n for (var key in data) {\n var id, prop, index = key.lastIndexOf('.');\n if (index > 0) { // an attribute has been specified\n id = key.substring(0, index);\n prop = key.substr(index + 1);\n } else { // no attribute: assuming text content by default\n id = key;\n prop = gTextProp;\n }\n if (!gL10nData[id]) {\n gL10nData[id] = {};\n }\n gL10nData[id][prop] = data[key];\n }\n\n // trigger callback\n if (successCallback) {\n successCallback();\n }\n });\n }, failureCallback);\n }\n\n // load and parse all resources for the specified locale\n function loadLocale(lang, callback) {\n // RFC 4646, section 2.1 states that language tags have to be treated as\n // case-insensitive. Convert to lowercase for case-insensitive comparisons.\n if (lang) {\n lang = lang.toLowerCase();\n }\n\n callback = callback || function _callback() {};\n\n clear();\n gLanguage = lang;\n\n // check all nodes\n // and load the resource files\n var langLinks = getL10nResourceLinks();\n var langCount = langLinks.length;\n if (langCount === 0) {\n // we might have a pre-compiled dictionary instead\n var dict = getL10nDictionary();\n if (dict && dict.locales && dict.default_locale) {\n console.log('using the embedded JSON directory, early way out');\n gL10nData = dict.locales[lang];\n if (!gL10nData) {\n var defaultLocale = dict.default_locale.toLowerCase();\n for (var anyCaseLang in dict.locales) {\n anyCaseLang = anyCaseLang.toLowerCase();\n if (anyCaseLang === lang) {\n gL10nData = dict.locales[lang];\n break;\n } else if (anyCaseLang === defaultLocale) {\n gL10nData = dict.locales[defaultLocale];\n }\n }\n }\n callback();\n } else {\n console.log('no resource to load, early way out');\n }\n // early way out\n fireL10nReadyEvent(lang);\n gReadyState = 'complete';\n return;\n }\n\n // start the callback when all resources are loaded\n var onResourceLoaded = null;\n var gResourceCount = 0;\n onResourceLoaded = function() {\n gResourceCount++;\n if (gResourceCount >= langCount) {\n callback();\n fireL10nReadyEvent(lang);\n gReadyState = 'complete';\n }\n };\n\n // load all resource files\n function L10nResourceLink(link) {\n var href = link.href;\n // Note: If |gAsyncResourceLoading| is false, then the following callbacks\n // are synchronously called.\n this.load = function(lang, callback) {\n parseResource(href, lang, callback, function() {\n console.warn(href + ' not found.');\n // lang not found, used default resource instead\n console.warn('\"' + lang + '\" resource not found');\n gLanguage = '';\n // Resource not loaded, but we still need to call the callback.\n callback();\n });\n };\n }\n\n for (var i = 0; i < langCount; i++) {\n var resource = new L10nResourceLink(langLinks[i]);\n resource.load(lang, onResourceLoaded);\n }\n }\n\n // clear all l10n data\n function clear() {\n gL10nData = {};\n gTextData = '';\n gLanguage = '';\n // TODO: clear all non predefined macros.\n // There's no such macro /yet/ but we're planning to have some...\n }\n\n\n /**\n * Get rules for plural forms (shared with JetPack), see:\n * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html\n * https://github.com/mozilla/addon-sdk/blob/master/python-lib/plural-rules-generator.p\n *\n * @param {string} lang\n * locale (language) used.\n *\n * @return {Function}\n * returns a function that gives the plural form name for a given integer:\n * var fun = getPluralRules('en');\n * fun(1) -> 'one'\n * fun(0) -> 'other'\n * fun(1000) -> 'other'.\n */\n\n function getPluralRules(lang) {\n var locales2rules = {\n 'af': 3,\n 'ak': 4,\n 'am': 4,\n 'ar': 1,\n 'asa': 3,\n 'az': 0,\n 'be': 11,\n 'bem': 3,\n 'bez': 3,\n 'bg': 3,\n 'bh': 4,\n 'bm': 0,\n 'bn': 3,\n 'bo': 0,\n 'br': 20,\n 'brx': 3,\n 'bs': 11,\n 'ca': 3,\n 'cgg': 3,\n 'chr': 3,\n 'cs': 12,\n 'cy': 17,\n 'da': 3,\n 'de': 3,\n 'dv': 3,\n 'dz': 0,\n 'ee': 3,\n 'el': 3,\n 'en': 3,\n 'eo': 3,\n 'es': 3,\n 'et': 3,\n 'eu': 3,\n 'fa': 0,\n 'ff': 5,\n 'fi': 3,\n 'fil': 4,\n 'fo': 3,\n 'fr': 5,\n 'fur': 3,\n 'fy': 3,\n 'ga': 8,\n 'gd': 24,\n 'gl': 3,\n 'gsw': 3,\n 'gu': 3,\n 'guw': 4,\n 'gv': 23,\n 'ha': 3,\n 'haw': 3,\n 'he': 2,\n 'hi': 4,\n 'hr': 11,\n 'hu': 0,\n 'id': 0,\n 'ig': 0,\n 'ii': 0,\n 'is': 3,\n 'it': 3,\n 'iu': 7,\n 'ja': 0,\n 'jmc': 3,\n 'jv': 0,\n 'ka': 0,\n 'kab': 5,\n 'kaj': 3,\n 'kcg': 3,\n 'kde': 0,\n 'kea': 0,\n 'kk': 3,\n 'kl': 3,\n 'km': 0,\n 'kn': 0,\n 'ko': 0,\n 'ksb': 3,\n 'ksh': 21,\n 'ku': 3,\n 'kw': 7,\n 'lag': 18,\n 'lb': 3,\n 'lg': 3,\n 'ln': 4,\n 'lo': 0,\n 'lt': 10,\n 'lv': 6,\n 'mas': 3,\n 'mg': 4,\n 'mk': 16,\n 'ml': 3,\n 'mn': 3,\n 'mo': 9,\n 'mr': 3,\n 'ms': 0,\n 'mt': 15,\n 'my': 0,\n 'nah': 3,\n 'naq': 7,\n 'nb': 3,\n 'nd': 3,\n 'ne': 3,\n 'nl': 3,\n 'nn': 3,\n 'no': 3,\n 'nr': 3,\n 'nso': 4,\n 'ny': 3,\n 'nyn': 3,\n 'om': 3,\n 'or': 3,\n 'pa': 3,\n 'pap': 3,\n 'pl': 13,\n 'ps': 3,\n 'pt': 3,\n 'rm': 3,\n 'ro': 9,\n 'rof': 3,\n 'ru': 11,\n 'rwk': 3,\n 'sah': 0,\n 'saq': 3,\n 'se': 7,\n 'seh': 3,\n 'ses': 0,\n 'sg': 0,\n 'sh': 11,\n 'shi': 19,\n 'sk': 12,\n 'sl': 14,\n 'sma': 7,\n 'smi': 7,\n 'smj': 7,\n 'smn': 7,\n 'sms': 7,\n 'sn': 3,\n 'so': 3,\n 'sq': 3,\n 'sr': 11,\n 'ss': 3,\n 'ssy': 3,\n 'st': 3,\n 'sv': 3,\n 'sw': 3,\n 'syr': 3,\n 'ta': 3,\n 'te': 3,\n 'teo': 3,\n 'th': 0,\n 'ti': 4,\n 'tig': 3,\n 'tk': 3,\n 'tl': 4,\n 'tn': 3,\n 'to': 0,\n 'tr': 0,\n 'ts': 3,\n 'tzm': 22,\n 'uk': 11,\n 'ur': 3,\n 've': 3,\n 'vi': 0,\n 'vun': 3,\n 'wa': 4,\n 'wae': 3,\n 'wo': 0,\n 'xh': 3,\n 'xog': 3,\n 'yo': 0,\n 'zh': 0,\n 'zu': 3\n };\n\n // utility functions for plural rules methods\n function isIn(n, list) {\n return list.indexOf(n) !== -1;\n }\n function isBetween(n, start, end) {\n return start <= n && n <= end;\n }\n\n // list of all plural rules methods:\n // map an integer to the plural form name to use\n var pluralRules = {\n '0': function(n) {\n return 'other';\n },\n '1': function(n) {\n if ((isBetween((n % 100), 3, 10)))\n return 'few';\n if (n === 0)\n return 'zero';\n if ((isBetween((n % 100), 11, 99)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '2': function(n) {\n if (n !== 0 && (n % 10) === 0)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '3': function(n) {\n if (n == 1)\n return 'one';\n return 'other';\n },\n '4': function(n) {\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '5': function(n) {\n if ((isBetween(n, 0, 2)) && n != 2)\n return 'one';\n return 'other';\n },\n '6': function(n) {\n if (n === 0)\n return 'zero';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '7': function(n) {\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '8': function(n) {\n if ((isBetween(n, 3, 6)))\n return 'few';\n if ((isBetween(n, 7, 10)))\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '9': function(n) {\n if (n === 0 || n != 1 && (isBetween((n % 100), 1, 19)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '10': function(n) {\n if ((isBetween((n % 10), 2, 9)) && !(isBetween((n % 100), 11, 19)))\n return 'few';\n if ((n % 10) == 1 && !(isBetween((n % 100), 11, 19)))\n return 'one';\n return 'other';\n },\n '11': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if ((n % 10) === 0 ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 11, 14)))\n return 'many';\n if ((n % 10) == 1 && (n % 100) != 11)\n return 'one';\n return 'other';\n },\n '12': function(n) {\n if ((isBetween(n, 2, 4)))\n return 'few';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '13': function(n) {\n if ((isBetween((n % 10), 2, 4)) && !(isBetween((n % 100), 12, 14)))\n return 'few';\n if (n != 1 && (isBetween((n % 10), 0, 1)) ||\n (isBetween((n % 10), 5, 9)) ||\n (isBetween((n % 100), 12, 14)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '14': function(n) {\n if ((isBetween((n % 100), 3, 4)))\n return 'few';\n if ((n % 100) == 2)\n return 'two';\n if ((n % 100) == 1)\n return 'one';\n return 'other';\n },\n '15': function(n) {\n if (n === 0 || (isBetween((n % 100), 2, 10)))\n return 'few';\n if ((isBetween((n % 100), 11, 19)))\n return 'many';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '16': function(n) {\n if ((n % 10) == 1 && n != 11)\n return 'one';\n return 'other';\n },\n '17': function(n) {\n if (n == 3)\n return 'few';\n if (n === 0)\n return 'zero';\n if (n == 6)\n return 'many';\n if (n == 2)\n return 'two';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '18': function(n) {\n if (n === 0)\n return 'zero';\n if ((isBetween(n, 0, 2)) && n !== 0 && n != 2)\n return 'one';\n return 'other';\n },\n '19': function(n) {\n if ((isBetween(n, 2, 10)))\n return 'few';\n if ((isBetween(n, 0, 1)))\n return 'one';\n return 'other';\n },\n '20': function(n) {\n if ((isBetween((n % 10), 3, 4) || ((n % 10) == 9)) && !(\n isBetween((n % 100), 10, 19) ||\n isBetween((n % 100), 70, 79) ||\n isBetween((n % 100), 90, 99)\n ))\n return 'few';\n if ((n % 1000000) === 0 && n !== 0)\n return 'many';\n if ((n % 10) == 2 && !isIn((n % 100), [12, 72, 92]))\n return 'two';\n if ((n % 10) == 1 && !isIn((n % 100), [11, 71, 91]))\n return 'one';\n return 'other';\n },\n '21': function(n) {\n if (n === 0)\n return 'zero';\n if (n == 1)\n return 'one';\n return 'other';\n },\n '22': function(n) {\n if ((isBetween(n, 0, 1)) || (isBetween(n, 11, 99)))\n return 'one';\n return 'other';\n },\n '23': function(n) {\n if ((isBetween((n % 10), 1, 2)) || (n % 20) === 0)\n return 'one';\n return 'other';\n },\n '24': function(n) {\n if ((isBetween(n, 3, 10) || isBetween(n, 13, 19)))\n return 'few';\n if (isIn(n, [2, 12]))\n return 'two';\n if (isIn(n, [1, 11]))\n return 'one';\n return 'other';\n }\n };\n\n // return a function that gives the plural form name for a given integer\n var index = locales2rules[lang.replace(/-.*$/, '')];\n if (!(index in pluralRules)) {\n console.warn('plural form unknown for [' + lang + ']');\n return function() { return 'other'; };\n }\n return pluralRules[index];\n }\n\n // pre-defined 'plural' macro\n gMacros.plural = function(str, param, key, prop) {\n var n = parseFloat(param);\n if (isNaN(n))\n return str;\n\n // TODO: support other properties (l20n still doesn't...)\n if (prop != gTextProp)\n return str;\n\n // initialize _pluralRules\n if (!gMacros._pluralRules) {\n gMacros._pluralRules = getPluralRules(gLanguage);\n }\n var index = '[' + gMacros._pluralRules(n) + ']';\n\n // try to find a [zero|one|two] key if it's defined\n if (n === 0 && (key + '[zero]') in gL10nData) {\n str = gL10nData[key + '[zero]'][prop];\n } else if (n == 1 && (key + '[one]') in gL10nData) {\n str = gL10nData[key + '[one]'][prop];\n } else if (n == 2 && (key + '[two]') in gL10nData) {\n str = gL10nData[key + '[two]'][prop];\n } else if ((key + index) in gL10nData) {\n str = gL10nData[key + index][prop];\n } else if ((key + '[other]') in gL10nData) {\n str = gL10nData[key + '[other]'][prop];\n }\n\n return str;\n };\n\n\n /**\n * l10n dictionary functions\n */\n\n // fetch an l10n object, warn if not found, apply `args' if possible\n function getL10nData(key, args, fallback) {\n var data = gL10nData[key];\n if (!data) {\n console.warn('#' + key + ' is undefined.');\n if (!fallback) {\n return null;\n }\n data = fallback;\n }\n\n /** This is where l10n expressions should be processed.\n * The plan is to support C-style expressions from the l20n project;\n * until then, only two kinds of simple expressions are supported:\n * {[ index ]} and {{ arguments }}.\n */\n var rv = {};\n for (var prop in data) {\n var str = data[prop];\n str = substIndexes(str, args, key, prop);\n str = substArguments(str, args, key);\n rv[prop] = str;\n }\n return rv;\n }\n\n // replace {[macros]} with their values\n function substIndexes(str, args, key, prop) {\n var reIndex = /\\{\\[\\s*([a-zA-Z]+)\\(([a-zA-Z]+)\\)\\s*\\]\\}/;\n var reMatch = reIndex.exec(str);\n if (!reMatch || !reMatch.length)\n return str;\n\n // an index/macro has been found\n // Note: at the moment, only one parameter is supported\n var macroName = reMatch[1];\n var paramName = reMatch[2];\n var param;\n if (args && paramName in args) {\n param = args[paramName];\n } else if (paramName in gL10nData) {\n param = gL10nData[paramName];\n }\n\n // there's no macro parser yet: it has to be defined in gMacros\n if (macroName in gMacros) {\n var macro = gMacros[macroName];\n str = macro(str, param, key, prop);\n }\n return str;\n }\n\n // replace {{arguments}} with their values\n function substArguments(str, args, key) {\n var reArgs = /\\{\\{\\s*(.+?)\\s*\\}\\}/g;\n return str.replace(reArgs, function(matched_text, arg) {\n if (args && arg in args) {\n return args[arg];\n }\n if (arg in gL10nData) {\n return gL10nData[arg];\n }\n console.log('argument {{' + arg + '}} for #' + key + ' is undefined.');\n return matched_text;\n });\n }\n\n // translate an HTML element\n function translateElement(element) {\n var l10n = getL10nAttributes(element);\n if (!l10n.id)\n return;\n\n // get the related l10n object\n var data = getL10nData(l10n.id, l10n.args);\n if (!data) {\n console.warn('#' + l10n.id + ' is undefined.');\n return;\n }\n\n // translate element (TODO: security checks?)\n if (data[gTextProp]) { // XXX\n if (getChildElementCount(element) === 0) {\n element[gTextProp] = data[gTextProp];\n } else {\n // this element has element children: replace the content of the first\n // (non-empty) child textNode and clear other child textNodes\n var children = element.childNodes;\n var found = false;\n for (var i = 0, l = children.length; i < l; i++) {\n if (children[i].nodeType === 3 && /\\S/.test(children[i].nodeValue)) {\n if (found) {\n children[i].nodeValue = '';\n } else {\n children[i].nodeValue = data[gTextProp];\n found = true;\n }\n }\n }\n // if no (non-empty) textNode is found, insert a textNode before the\n // first element child.\n if (!found) {\n var textNode = document.createTextNode(data[gTextProp]);\n element.insertBefore(textNode, element.firstChild);\n }\n }\n delete data[gTextProp];\n }\n\n for (var k in data) {\n element[k] = data[k];\n }\n }\n\n // webkit browsers don't currently support 'children' on SVG elements...\n function getChildElementCount(element) {\n if (element.children) {\n return element.children.length;\n }\n if (typeof element.childElementCount !== 'undefined') {\n return element.childElementCount;\n }\n var count = 0;\n for (var i = 0; i < element.childNodes.length; i++) {\n count += element.nodeType === 1 ? 1 : 0;\n }\n return count;\n }\n\n // translate an HTML subtree\n function translateFragment(element) {\n element = element || document.documentElement;\n\n // check all translatable children (= w/ a `data-l10n-id' attribute)\n var children = getTranslatableChildren(element);\n var elementCount = children.length;\n for (var i = 0; i < elementCount; i++) {\n translateElement(children[i]);\n }\n\n // translate element itself if necessary\n translateElement(element);\n }\n\n return {\n // get a localized string\n get: function(key, args, fallbackString) {\n var index = key.lastIndexOf('.');\n var prop = gTextProp;\n if (index > 0) { // An attribute has been specified\n prop = key.substr(index + 1);\n key = key.substring(0, index);\n }\n var fallback;\n if (fallbackString) {\n fallback = {};\n fallback[prop] = fallbackString;\n }\n var data = getL10nData(key, args, fallback);\n if (data && prop in data) {\n return data[prop];\n }\n return '{{' + key + '}}';\n },\n\n // debug\n getData: function() { return gL10nData; },\n getText: function() { return gTextData; },\n\n // get|set the document language\n getLanguage: function() { return gLanguage; },\n setLanguage: function(lang, callback) {\n loadLocale(lang, function() {\n if (callback)\n callback();\n });\n },\n\n // get the direction (ltr|rtl) of the current language\n getDirection: function() {\n // http://www.w3.org/International/questions/qa-scripts\n // Arabic, Hebrew, Farsi, Pashto, Urdu\n var rtlList = ['ar', 'he', 'fa', 'ps', 'ur'];\n var shortCode = gLanguage.split('-', 1)[0];\n return (rtlList.indexOf(shortCode) >= 0) ? 'rtl' : 'ltr';\n },\n\n // translate an element or document fragment\n translate: translateFragment,\n\n // this can be used to prevent race conditions\n getReadyState: function() { return gReadyState; },\n ready: function(callback) {\n if (!callback) {\n return;\n } else if (gReadyState == 'complete' || gReadyState == 'interactive') {\n window.setTimeout(function() {\n callback();\n });\n } else if (document.addEventListener) {\n document.addEventListener('localized', function once() {\n document.removeEventListener('localized', once);\n callback();\n });\n }\n }\n };\n}) (window, document);\n\n\n\n// WEBPACK FOOTER //\n// external/webL10n/l10n.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationLayer } from 'pdfjs-lib';\nimport { NullL10n } from './ui_utils';\nimport { SimpleLinkService } from './pdf_link_service';\n\n/**\n * @typedef {Object} AnnotationLayerBuilderOptions\n * @property {HTMLDivElement} pageDiv\n * @property {PDFPage} pdfPage\n * @property {boolean} renderInteractiveForms\n * @property {IPDFLinkService} linkService\n * @property {DownloadManager} downloadManager\n * @property {IL10n} l10n - Localization service.\n */\n\nclass AnnotationLayerBuilder {\n /**\n * @param {AnnotationLayerBuilderOptions} options\n */\n constructor({ pageDiv, pdfPage, linkService, downloadManager,\n renderInteractiveForms = false, l10n = NullL10n, }) {\n this.pageDiv = pageDiv;\n this.pdfPage = pdfPage;\n this.linkService = linkService;\n this.downloadManager = downloadManager;\n this.renderInteractiveForms = renderInteractiveForms;\n this.l10n = l10n;\n\n this.div = null;\n }\n\n /**\n * @param {PageViewport} viewport\n * @param {string} intent (default value is 'display')\n */\n render(viewport, intent = 'display') {\n this.pdfPage.getAnnotations({ intent, }).then((annotations) => {\n let parameters = {\n viewport: viewport.clone({ dontFlip: true, }),\n div: this.div,\n annotations,\n page: this.pdfPage,\n renderInteractiveForms: this.renderInteractiveForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n };\n\n if (this.div) {\n // If an annotationLayer already exists, refresh its children's\n // transformation matrices.\n AnnotationLayer.update(parameters);\n } else {\n // Create an annotation layer div and render the annotations\n // if there is at least one annotation.\n if (annotations.length === 0) {\n return;\n }\n this.div = document.createElement('div');\n this.div.className = 'annotationLayer';\n this.pageDiv.appendChild(this.div);\n parameters.div = this.div;\n\n AnnotationLayer.render(parameters);\n this.l10n.translate(this.div);\n }\n });\n }\n\n hide() {\n if (!this.div) {\n return;\n }\n this.div.setAttribute('hidden', 'true');\n }\n}\n\n/**\n * @implements IPDFAnnotationLayerFactory\n */\nclass DefaultAnnotationLayerFactory {\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPage} pdfPage\n * @param {boolean} renderInteractiveForms\n * @param {IL10n} l10n\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms = false,\n l10n = NullL10n) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n renderInteractiveForms,\n linkService: new SimpleLinkService(),\n l10n,\n });\n }\n}\n\nexport {\n AnnotationLayerBuilder,\n DefaultAnnotationLayerFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/annotation_layer_builder.js","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createObjectURL, createValidAbsoluteUrl, PDFJS } from 'pdfjs-lib';\n\nif (typeof PDFJSDev !== 'undefined' && !PDFJSDev.test('CHROME || GENERIC')) {\n throw new Error('Module \"pdfjs-web/download_manager\" shall not be used ' +\n 'outside CHROME and GENERIC builds.');\n}\n\nfunction download(blobUrl, filename) {\n let a = document.createElement('a');\n if (a.click) {\n // Use a.click() if available. Otherwise, Chrome might show\n // \"Unsafe JavaScript attempt to initiate a navigation change\n // for frame with URL\" and not open the PDF at all.\n // Supported by (not mentioned = untested):\n // - Firefox 6 - 19 (4- does not support a.click, 5 ignores a.click)\n // - Chrome 19 - 26 (18- does not support a.click)\n // - Opera 9 - 12.15\n // - Internet Explorer 6 - 10\n // - Safari 6 (5.1- does not support a.click)\n a.href = blobUrl;\n a.target = '_parent';\n // Use a.download if available. This increases the likelihood that\n // the file is downloaded instead of opened by another PDF plugin.\n if ('download' in a) {\n a.download = filename;\n }\n // must be in the document for IE and recent Firefox versions.\n // (otherwise .click() is ignored)\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.parentNode.removeChild(a);\n } else {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n // If _parent == self, then opening an identical URL with different\n // location hash will only cause a navigation, not a download.\n let padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n window.open(blobUrl, '_parent');\n }\n}\n\nclass DownloadManager {\n downloadUrl(url, filename) {\n if (!createValidAbsoluteUrl(url, 'http://example.com')) {\n return; // restricted/invalid URL\n }\n download(url + '#pdfjs.action=download', filename);\n }\n\n downloadData(data, filename, contentType) {\n if (navigator.msSaveBlob) { // IE10 and above\n return navigator.msSaveBlob(new Blob([data], { type: contentType, }),\n filename);\n }\n let blobUrl = createObjectURL(data, contentType,\n PDFJS.disableCreateObjectURL);\n download(blobUrl, filename);\n }\n\n download(blob, url, filename) {\n if (navigator.msSaveBlob) {\n // IE10 / IE11\n if (!navigator.msSaveBlob(blob, filename)) {\n this.downloadUrl(url, filename);\n }\n return;\n }\n\n if (PDFJS.disableCreateObjectURL) {\n // URL.createObjectURL is not supported\n this.downloadUrl(url, filename);\n return;\n }\n\n let blobUrl = URL.createObjectURL(blob);\n download(blobUrl, filename);\n }\n}\n\nexport {\n DownloadManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/download_manager.js","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport '../external/webL10n/l10n';\n\nvar webL10n = document.webL10n;\n\nclass GenericL10n {\n constructor(lang) {\n this._lang = lang;\n this._ready = new Promise((resolve, reject) => {\n webL10n.setLanguage(lang, () => {\n resolve(webL10n);\n });\n });\n }\n\n getDirection() {\n return this._ready.then((l10n) => {\n return l10n.getDirection();\n });\n }\n\n get(property, args, fallback) {\n return this._ready.then((l10n) => {\n return l10n.get(property, args, fallback);\n });\n }\n\n translate(element) {\n return this._ready.then((l10n) => {\n return l10n.translate(element);\n });\n }\n}\n\nexport {\n GenericL10n,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/genericl10n.js","/* Copyright 2013 Rob Wu \n * https://github.com/Rob--W/grab-to-pan.js\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Construct a GrabToPan instance for a given HTML element.\n * @param options.element {Element}\n * @param options.ignoreTarget {function} optional. See `ignoreTarget(node)`\n * @param options.onActiveChanged {function(boolean)} optional. Called\n * when grab-to-pan is (de)activated. The first argument is a boolean that\n * shows whether grab-to-pan is activated.\n */\nfunction GrabToPan(options) {\n this.element = options.element;\n this.document = options.element.ownerDocument;\n if (typeof options.ignoreTarget === 'function') {\n this.ignoreTarget = options.ignoreTarget;\n }\n this.onActiveChanged = options.onActiveChanged;\n\n // Bind the contexts to ensure that `this` always points to\n // the GrabToPan instance.\n this.activate = this.activate.bind(this);\n this.deactivate = this.deactivate.bind(this);\n this.toggle = this.toggle.bind(this);\n this._onmousedown = this._onmousedown.bind(this);\n this._onmousemove = this._onmousemove.bind(this);\n this._endPan = this._endPan.bind(this);\n\n // This overlay will be inserted in the document when the mouse moves during\n // a grab operation, to ensure that the cursor has the desired appearance.\n var overlay = this.overlay = document.createElement('div');\n overlay.className = 'grab-to-pan-grabbing';\n}\nGrabToPan.prototype = {\n /**\n * Class name of element which can be grabbed\n */\n CSS_CLASS_GRAB: 'grab-to-pan-grab',\n\n /**\n * Bind a mousedown event to the element to enable grab-detection.\n */\n activate: function GrabToPan_activate() {\n if (!this.active) {\n this.active = true;\n this.element.addEventListener('mousedown', this._onmousedown, true);\n this.element.classList.add(this.CSS_CLASS_GRAB);\n if (this.onActiveChanged) {\n this.onActiveChanged(true);\n }\n }\n },\n\n /**\n * Removes all events. Any pending pan session is immediately stopped.\n */\n deactivate: function GrabToPan_deactivate() {\n if (this.active) {\n this.active = false;\n this.element.removeEventListener('mousedown', this._onmousedown, true);\n this._endPan();\n this.element.classList.remove(this.CSS_CLASS_GRAB);\n if (this.onActiveChanged) {\n this.onActiveChanged(false);\n }\n }\n },\n\n toggle: function GrabToPan_toggle() {\n if (this.active) {\n this.deactivate();\n } else {\n this.activate();\n }\n },\n\n /**\n * Whether to not pan if the target element is clicked.\n * Override this method to change the default behaviour.\n *\n * @param node {Element} The target of the event\n * @return {boolean} Whether to not react to the click event.\n */\n ignoreTarget: function GrabToPan_ignoreTarget(node) {\n // Use matchesSelector to check whether the clicked element\n // is (a child of) an input element / link\n return node[matchesSelector](\n 'a[href], a[href] *, input, textarea, button, button *, select, option'\n );\n },\n\n /**\n * @private\n */\n _onmousedown: function GrabToPan__onmousedown(event) {\n if (event.button !== 0 || this.ignoreTarget(event.target)) {\n return;\n }\n if (event.originalTarget) {\n try {\n // eslint-disable-next-line no-unused-expressions\n event.originalTarget.tagName;\n } catch (e) {\n // Mozilla-specific: element is a scrollbar (XUL element)\n return;\n }\n }\n\n this.scrollLeftStart = this.element.scrollLeft;\n this.scrollTopStart = this.element.scrollTop;\n this.clientXStart = event.clientX;\n this.clientYStart = event.clientY;\n this.document.addEventListener('mousemove', this._onmousemove, true);\n this.document.addEventListener('mouseup', this._endPan, true);\n // When a scroll event occurs before a mousemove, assume that the user\n // dragged a scrollbar (necessary for Opera Presto, Safari and IE)\n // (not needed for Chrome/Firefox)\n this.element.addEventListener('scroll', this._endPan, true);\n event.preventDefault();\n event.stopPropagation();\n\n var focusedElement = document.activeElement;\n if (focusedElement && !focusedElement.contains(event.target)) {\n focusedElement.blur();\n }\n },\n\n /**\n * @private\n */\n _onmousemove: function GrabToPan__onmousemove(event) {\n this.element.removeEventListener('scroll', this._endPan, true);\n if (isLeftMouseReleased(event)) {\n this._endPan();\n return;\n }\n var xDiff = event.clientX - this.clientXStart;\n var yDiff = event.clientY - this.clientYStart;\n var scrollTop = this.scrollTopStart - yDiff;\n var scrollLeft = this.scrollLeftStart - xDiff;\n if (this.element.scrollTo) {\n this.element.scrollTo({\n top: scrollTop,\n left: scrollLeft,\n behavior: 'instant',\n });\n } else {\n this.element.scrollTop = scrollTop;\n this.element.scrollLeft = scrollLeft;\n }\n if (!this.overlay.parentNode) {\n document.body.appendChild(this.overlay);\n }\n },\n\n /**\n * @private\n */\n _endPan: function GrabToPan__endPan() {\n this.element.removeEventListener('scroll', this._endPan, true);\n this.document.removeEventListener('mousemove', this._onmousemove, true);\n this.document.removeEventListener('mouseup', this._endPan, true);\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.overlay.remove();\n },\n};\n\n// Get the correct (vendor-prefixed) name of the matches method.\nvar matchesSelector;\n['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function(prefix) {\n var name = prefix + 'atches';\n if (name in document.documentElement) {\n matchesSelector = name;\n }\n name += 'Selector';\n if (name in document.documentElement) {\n matchesSelector = name;\n }\n return matchesSelector; // If found, then truthy, and [].some() ends.\n});\n\n// Browser sniffing because it's impossible to feature-detect\n// whether event.which for onmousemove is reliable\nvar isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;\nvar chrome = window.chrome;\nvar isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);\n// ^ Chrome 15+ ^ Opera 15+\nvar isSafari6plus = /Apple/.test(navigator.vendor) &&\n /Version\\/([6-9]\\d*|[1-5]\\d+)/.test(navigator.userAgent);\n\n/**\n * Whether the left mouse is not pressed.\n * @param event {MouseEvent}\n * @return {boolean} True if the left mouse button is not pressed.\n * False if unsure or if the left mouse button is pressed.\n */\nfunction isLeftMouseReleased(event) {\n if ('buttons' in event && isNotIEorIsIE10plus) {\n // http://www.w3.org/TR/DOM-Level-3-Events/#events-MouseEvent-buttons\n // Firefox 15+\n // Internet Explorer 10+\n return !(event.buttons & 1);\n }\n if (isChrome15OrOpera15plus || isSafari6plus) {\n // Chrome 14+\n // Opera 15+\n // Safari 6.0+\n return event.which === 0;\n }\n}\n\nexport {\n GrabToPan,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/grab_to_pan.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass OverlayManager {\n constructor() {\n this._overlays = {};\n this._active = null;\n this._keyDownBound = this._keyDown.bind(this);\n }\n\n get active() {\n return this._active;\n }\n\n /**\n * @param {string} name - The name of the overlay that is registered.\n * @param {HTMLDivElement} element - The overlay's DOM element.\n * @param {function} callerCloseMethod - (optional) The method that, if\n * present, calls `OverlayManager.close` from the object\n * registering the overlay. Access to this method is\n * necessary in order to run cleanup code when e.g.\n * the overlay is force closed. The default is `null`.\n * @param {boolean} canForceClose - (optional) Indicates if opening the\n * overlay closes an active overlay. The default is `false`.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * registered.\n */\n register(name, element, callerCloseMethod = null, canForceClose = false) {\n return new Promise((resolve) => {\n let container;\n if (!name || !element || !(container = element.parentNode)) {\n throw new Error('Not enough parameters.');\n } else if (this._overlays[name]) {\n throw new Error('The overlay is already registered.');\n }\n this._overlays[name] = {\n element,\n container,\n callerCloseMethod,\n canForceClose,\n };\n resolve();\n });\n }\n\n /**\n * @param {string} name - The name of the overlay that is unregistered.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * unregistered.\n */\n unregister(name) {\n return new Promise((resolve) => {\n if (!this._overlays[name]) {\n throw new Error('The overlay does not exist.');\n } else if (this._active === name) {\n throw new Error('The overlay cannot be removed while it is active.');\n }\n delete this._overlays[name];\n resolve();\n });\n }\n\n /**\n * @param {string} name - The name of the overlay that should be opened.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * opened.\n */\n open(name) {\n return new Promise((resolve) => {\n if (!this._overlays[name]) {\n throw new Error('The overlay does not exist.');\n } else if (this._active) {\n if (this._overlays[name].canForceClose) {\n this._closeThroughCaller();\n } else if (this._active === name) {\n throw new Error('The overlay is already active.');\n } else {\n throw new Error('Another overlay is currently active.');\n }\n }\n this._active = name;\n this._overlays[this._active].element.classList.remove('hidden');\n this._overlays[this._active].container.classList.remove('hidden');\n\n window.addEventListener('keydown', this._keyDownBound);\n resolve();\n });\n }\n\n /**\n * @param {string} name - The name of the overlay that should be closed.\n * @returns {Promise} A promise that is resolved when the overlay has been\n * closed.\n */\n close(name) {\n return new Promise((resolve) => {\n if (!this._overlays[name]) {\n throw new Error('The overlay does not exist.');\n } else if (!this._active) {\n throw new Error('The overlay is currently not active.');\n } else if (this._active !== name) {\n throw new Error('Another overlay is currently active.');\n }\n this._overlays[this._active].container.classList.add('hidden');\n this._overlays[this._active].element.classList.add('hidden');\n this._active = null;\n\n window.removeEventListener('keydown', this._keyDownBound);\n resolve();\n });\n }\n\n /**\n * @private\n */\n _keyDown(evt) {\n if (this._active && evt.keyCode === 27) { // Esc key.\n this._closeThroughCaller();\n evt.preventDefault();\n }\n }\n\n /**\n * @private\n */\n _closeThroughCaller() {\n if (this._overlays[this._active].callerCloseMethod) {\n this._overlays[this._active].callerCloseMethod();\n }\n if (this._active) {\n this.close(this._active);\n }\n }\n}\n\nexport {\n OverlayManager,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/overlay_manager.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NullL10n } from './ui_utils';\nimport { PasswordResponses } from 'pdfjs-lib';\n\n/**\n * @typedef {Object} PasswordPromptOptions\n * @property {string} overlayName - Name of the overlay for the overlay manager.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLParagraphElement} label - Label containing instructions for\n * entering the password.\n * @property {HTMLInputElement} input - Input field for entering the password.\n * @property {HTMLButtonElement} submitButton - Button for submitting the\n * password.\n * @property {HTMLButtonElement} cancelButton - Button for cancelling password\n * entry.\n */\n\nclass PasswordPrompt {\n /**\n * @param {PasswordPromptOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, overlayManager, l10n = NullL10n) {\n this.overlayName = options.overlayName;\n this.container = options.container;\n this.label = options.label;\n this.input = options.input;\n this.submitButton = options.submitButton;\n this.cancelButton = options.cancelButton;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this.updateCallback = null;\n this.reason = null;\n\n // Attach the event listeners.\n this.submitButton.addEventListener('click', this.verify.bind(this));\n this.cancelButton.addEventListener('click', this.close.bind(this));\n this.input.addEventListener('keydown', (e) => {\n if (e.keyCode === 13) { // Enter key\n this.verify();\n }\n });\n\n this.overlayManager.register(this.overlayName, this.container,\n this.close.bind(this), true);\n }\n\n open() {\n this.overlayManager.open(this.overlayName).then(() => {\n this.input.focus();\n\n let promptString;\n if (this.reason === PasswordResponses.INCORRECT_PASSWORD) {\n promptString = this.l10n.get('password_invalid', null,\n 'Invalid password. Please try again.');\n } else {\n promptString = this.l10n.get('password_label', null,\n 'Enter the password to open this PDF file.');\n }\n\n promptString.then((msg) => {\n this.label.textContent = msg;\n });\n });\n }\n\n close() {\n this.overlayManager.close(this.overlayName).then(() => {\n this.input.value = '';\n });\n }\n\n verify() {\n let password = this.input.value;\n if (password && password.length > 0) {\n this.close();\n return this.updateCallback(password);\n }\n }\n\n setUpdateCallback(updateCallback, reason) {\n this.updateCallback = updateCallback;\n this.reason = reason;\n }\n}\n\nexport {\n PasswordPrompt,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/password_prompt.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createObjectURL, createPromiseCapability, getFilenameFromUrl, PDFJS,\n removeNullCharacters\n} from 'pdfjs-lib';\n\n/**\n * @typedef {Object} PDFAttachmentViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {DownloadManager} downloadManager - The download manager.\n */\n\n/**\n * @typedef {Object} PDFAttachmentViewerRenderParameters\n * @property {Object|null} attachments - A lookup table of attachment objects.\n */\n\nclass PDFAttachmentViewer {\n /**\n * @param {PDFAttachmentViewerOptions} options\n */\n constructor({ container, eventBus, downloadManager, }) {\n this.attachments = null;\n\n this.container = container;\n this.eventBus = eventBus;\n this.downloadManager = downloadManager;\n\n this._renderedCapability = createPromiseCapability();\n this.eventBus.on('fileattachmentannotation',\n this._appendAttachment.bind(this));\n }\n\n reset(keepRenderedCapability = false) {\n this.attachments = null;\n\n // Remove the attachments from the DOM.\n this.container.textContent = '';\n\n if (!keepRenderedCapability) {\n // NOTE: The *only* situation in which the `_renderedCapability` should\n // not be replaced is when appending file attachment annotations.\n this._renderedCapability = createPromiseCapability();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent(attachmentsCount) {\n this.eventBus.dispatch('attachmentsloaded', {\n source: this,\n attachmentsCount,\n });\n\n this._renderedCapability.resolve();\n }\n\n /**\n * @private\n */\n _bindPdfLink(button, content, filename) {\n if (PDFJS.disableCreateObjectURL) {\n throw new Error('bindPdfLink: ' +\n 'Unsupported \"PDFJS.disableCreateObjectURL\" value.');\n }\n let blobUrl;\n button.onclick = function() {\n if (!blobUrl) {\n blobUrl = createObjectURL(content, 'application/pdf');\n }\n let viewerUrl;\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n // The current URL is the viewer, let's use it and append the file.\n viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename);\n } else if (PDFJSDev.test('CHROME')) {\n // In the Chrome extension, the URL is rewritten using the history API\n // in viewer.js, so an absolute URL must be generated.\n // eslint-disable-next-line no-undef\n viewerUrl = chrome.runtime.getURL('/content/web/viewer.html') +\n '?file=' + encodeURIComponent(blobUrl + '#' + filename);\n } else if (PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n // Let Firefox's content handler catch the URL and display the PDF.\n viewerUrl = blobUrl + '?' + encodeURIComponent(filename);\n }\n window.open(viewerUrl);\n return false;\n };\n }\n\n /**\n * @private\n */\n _bindLink(button, content, filename) {\n button.onclick = () => {\n this.downloadManager.downloadData(content, filename, '');\n return false;\n };\n }\n\n /**\n * @param {PDFAttachmentViewerRenderParameters} params\n */\n render({ attachments, keepRenderedCapability = false, }) {\n let attachmentsCount = 0;\n\n if (this.attachments) {\n this.reset(keepRenderedCapability === true);\n }\n this.attachments = attachments || null;\n\n if (!attachments) {\n this._dispatchEvent(attachmentsCount);\n return;\n }\n\n let names = Object.keys(attachments).sort(function(a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase());\n });\n attachmentsCount = names.length;\n\n for (let i = 0; i < attachmentsCount; i++) {\n let item = attachments[names[i]];\n let filename = removeNullCharacters(getFilenameFromUrl(item.filename));\n\n let div = document.createElement('div');\n div.className = 'attachmentsItem';\n let button = document.createElement('button');\n button.textContent = filename;\n if (/\\.pdf$/i.test(filename) && !PDFJS.disableCreateObjectURL) {\n this._bindPdfLink(button, item.content, filename);\n } else {\n this._bindLink(button, item.content, filename);\n }\n\n div.appendChild(button);\n this.container.appendChild(div);\n }\n\n this._dispatchEvent(attachmentsCount);\n }\n\n /**\n * Used to append FileAttachment annotations to the sidebar.\n * @private\n */\n _appendAttachment({ id, filename, content, }) {\n this._renderedCapability.promise.then(() => {\n let attachments = this.attachments;\n\n if (!attachments) {\n attachments = Object.create(null);\n } else {\n for (let name in attachments) {\n if (id === name) {\n return; // Ignore the new attachment if it already exists.\n }\n }\n }\n attachments[id] = {\n filename,\n content,\n };\n this.render({\n attachments,\n keepRenderedCapability: true,\n });\n });\n }\n}\n\nexport {\n PDFAttachmentViewer,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_attachment_viewer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cloneObj, getPDFFileNameFromURL, NullL10n } from './ui_utils';\nimport { createPromiseCapability } from 'pdfjs-lib';\n\nconst DEFAULT_FIELD_CONTENT = '-';\n\n/**\n * @typedef {Object} PDFDocumentPropertiesOptions\n * @property {string} overlayName - Name/identifier for the overlay.\n * @property {Object} fields - Names and elements of the overlay's fields.\n * @property {HTMLDivElement} container - Div container for the overlay.\n * @property {HTMLButtonElement} closeButton - Button for closing the overlay.\n */\n\nclass PDFDocumentProperties {\n /**\n * @param {PDFDocumentPropertiesOptions} options\n * @param {OverlayManager} overlayManager - Manager for the viewer overlays.\n * @param {IL10n} l10n - Localization service.\n */\n constructor({ overlayName, fields, container, closeButton, },\n overlayManager, l10n = NullL10n) {\n this.overlayName = overlayName;\n this.fields = fields;\n this.container = container;\n this.overlayManager = overlayManager;\n this.l10n = l10n;\n\n this._reset();\n\n if (closeButton) { // Bind the event listener for the Close button.\n closeButton.addEventListener('click', this.close.bind(this));\n }\n this.overlayManager.register(this.overlayName, this.container,\n this.close.bind(this));\n }\n\n /**\n * Open the document properties overlay.\n */\n open() {\n let freezeFieldData = (data) => {\n Object.defineProperty(this, 'fieldData', {\n value: Object.freeze(data),\n writable: false,\n enumerable: true,\n configurable: true,\n });\n };\n\n Promise.all([this.overlayManager.open(this.overlayName),\n this._dataAvailableCapability.promise]).then(() => {\n // If the document properties were previously fetched (for this PDF file),\n // just update the dialog immediately to avoid redundant lookups.\n if (this.fieldData) {\n this._updateUI();\n return;\n }\n // Get the document properties.\n this.pdfDocument.getMetadata().then(({ info, metadata, }) => {\n return Promise.all([\n info,\n metadata,\n this._parseFileSize(this.maybeFileSize),\n this._parseDate(info.CreationDate),\n this._parseDate(info.ModDate)\n ]);\n }).then(([info, metadata, fileSize, creationDate, modificationDate]) => {\n freezeFieldData({\n 'fileName': getPDFFileNameFromURL(this.url),\n 'fileSize': fileSize,\n 'title': info.Title,\n 'author': info.Author,\n 'subject': info.Subject,\n 'keywords': info.Keywords,\n 'creationDate': creationDate,\n 'modificationDate': modificationDate,\n 'creator': info.Creator,\n 'producer': info.Producer,\n 'version': info.PDFFormatVersion,\n 'pageCount': this.pdfDocument.numPages,\n });\n this._updateUI();\n\n // Get the correct fileSize, since it may not have been set (if\n // `this.setFileSize` wasn't called) or may be incorrectly set.\n return this.pdfDocument.getDownloadInfo();\n }).then(({ length, }) => {\n return this._parseFileSize(length);\n }).then((fileSize) => {\n let data = cloneObj(this.fieldData);\n data['fileSize'] = fileSize;\n\n freezeFieldData(data);\n this._updateUI();\n });\n });\n }\n\n /**\n * Close the document properties overlay.\n */\n close() {\n this.overlayManager.close(this.overlayName);\n }\n\n /**\n * Set a reference to the PDF document and the URL in order\n * to populate the overlay fields with the document properties.\n * Note that the overlay will contain no information if this method\n * is not called.\n *\n * @param {Object} pdfDocument - A reference to the PDF document.\n * @param {string} url - The URL of the document.\n */\n setDocument(pdfDocument, url) {\n if (this.pdfDocument) {\n this._reset();\n this._updateUI(true);\n }\n if (!pdfDocument) {\n return;\n }\n this.pdfDocument = pdfDocument;\n this.url = url;\n\n this._dataAvailableCapability.resolve();\n }\n\n /**\n * Set the file size of the PDF document. This method is used to\n * update the file size in the document properties overlay once it\n * is known so we do not have to wait until the entire file is loaded.\n *\n * @param {number} fileSize - The file size of the PDF document.\n */\n setFileSize(fileSize) {\n if (typeof fileSize === 'number' && fileSize > 0) {\n this.maybeFileSize = fileSize;\n }\n }\n\n /**\n * @private\n */\n _reset() {\n this.pdfDocument = null;\n this.url = null;\n\n this.maybeFileSize = 0;\n delete this.fieldData;\n this._dataAvailableCapability = createPromiseCapability();\n }\n\n /**\n * Always updates all of the dialog fields, to prevent inconsistent UI state.\n * NOTE: If the contents of a particular field is neither a non-empty string,\n * nor a number, it will fall back to `DEFAULT_FIELD_CONTENT`.\n * @private\n */\n _updateUI(reset = false) {\n if (reset || !this.fieldData) {\n for (let id in this.fields) {\n this.fields[id].textContent = DEFAULT_FIELD_CONTENT;\n }\n return;\n }\n if (this.overlayManager.active !== this.overlayName) {\n // Don't bother updating the dialog if has already been closed,\n // since it will be updated the next time `this.open` is called.\n return;\n }\n for (let id in this.fields) {\n let content = this.fieldData[id];\n this.fields[id].textContent = (content || content === 0) ?\n content : DEFAULT_FIELD_CONTENT;\n }\n }\n\n /**\n * @private\n */\n _parseFileSize(fileSize = 0) {\n let kb = fileSize / 1024;\n if (!kb) {\n return Promise.resolve(undefined);\n } else if (kb < 1024) {\n return this.l10n.get('document_properties_kb', {\n size_kb: (+kb.toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n }, '{{size_kb}} KB ({{size_b}} bytes)');\n }\n return this.l10n.get('document_properties_mb', {\n size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),\n size_b: fileSize.toLocaleString(),\n }, '{{size_mb}} MB ({{size_b}} bytes)');\n }\n\n /**\n * @private\n */\n _parseDate(inputDate) {\n if (!inputDate) {\n return;\n }\n // This is implemented according to the PDF specification, but note that\n // Adobe Reader doesn't handle changing the date to universal time\n // and doesn't use the user's time zone (they're effectively ignoring\n // the HH' and mm' parts of the date string).\n let dateToParse = inputDate;\n\n // Remove the D: prefix if it is available.\n if (dateToParse.substring(0, 2) === 'D:') {\n dateToParse = dateToParse.substring(2);\n }\n\n // Get all elements from the PDF date string.\n // JavaScript's `Date` object expects the month to be between\n // 0 and 11 instead of 1 and 12, so we're correcting for this.\n let year = parseInt(dateToParse.substring(0, 4), 10);\n let month = parseInt(dateToParse.substring(4, 6), 10) - 1;\n let day = parseInt(dateToParse.substring(6, 8), 10);\n let hours = parseInt(dateToParse.substring(8, 10), 10);\n let minutes = parseInt(dateToParse.substring(10, 12), 10);\n let seconds = parseInt(dateToParse.substring(12, 14), 10);\n let utRel = dateToParse.substring(14, 15);\n let offsetHours = parseInt(dateToParse.substring(15, 17), 10);\n let offsetMinutes = parseInt(dateToParse.substring(18, 20), 10);\n\n // As per spec, utRel = 'Z' means equal to universal time.\n // The other cases ('-' and '+') have to be handled here.\n if (utRel === '-') {\n hours += offsetHours;\n minutes += offsetMinutes;\n } else if (utRel === '+') {\n hours -= offsetHours;\n minutes -= offsetMinutes;\n }\n\n // Return the new date format from the user's locale.\n let date = new Date(Date.UTC(year, month, day, hours, minutes, seconds));\n let dateString = date.toLocaleDateString();\n let timeString = date.toLocaleTimeString();\n return this.l10n.get('document_properties_date_string',\n { date: dateString, time: timeString, },\n '{{date}}, {{time}}');\n }\n}\n\nexport {\n PDFDocumentProperties,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_document_properties.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FindState } from './pdf_find_controller';\nimport { NullL10n } from './ui_utils';\n\n/**\n * Creates a \"search bar\" given a set of DOM elements that act as controls\n * for searching or for setting search preferences in the UI. This object\n * also sets up the appropriate events for the controls. Actual searching\n * is done by PDFFindController.\n */\nclass PDFFindBar {\n constructor(options, l10n = NullL10n) {\n this.opened = false;\n\n this.bar = options.bar || null;\n this.toggleButton = options.toggleButton || null;\n this.findField = options.findField || null;\n this.highlightAll = options.highlightAllCheckbox || null;\n this.caseSensitive = options.caseSensitiveCheckbox || null;\n this.findMsg = options.findMsg || null;\n this.findResultsCount = options.findResultsCount || null;\n this.findStatusIcon = options.findStatusIcon || null;\n this.findPreviousButton = options.findPreviousButton || null;\n this.findNextButton = options.findNextButton || null;\n this.findController = options.findController || null;\n this.eventBus = options.eventBus;\n this.l10n = l10n;\n\n if (this.findController === null) {\n throw new Error('PDFFindBar cannot be used without a ' +\n 'PDFFindController instance.');\n }\n\n // Add event listeners to the DOM elements.\n this.toggleButton.addEventListener('click', () => {\n this.toggle();\n });\n\n this.findField.addEventListener('input', () => {\n this.dispatchEvent('');\n });\n\n this.bar.addEventListener('keydown', (e) => {\n switch (e.keyCode) {\n case 13: // Enter\n if (e.target === this.findField) {\n this.dispatchEvent('again', e.shiftKey);\n }\n break;\n case 27: // Escape\n this.close();\n break;\n }\n });\n\n this.findPreviousButton.addEventListener('click', () => {\n this.dispatchEvent('again', true);\n });\n\n this.findNextButton.addEventListener('click', () => {\n this.dispatchEvent('again', false);\n });\n\n this.highlightAll.addEventListener('click', () => {\n this.dispatchEvent('highlightallchange');\n });\n\n this.caseSensitive.addEventListener('click', () => {\n this.dispatchEvent('casesensitivitychange');\n });\n\n this.eventBus.on('resize', this._adjustWidth.bind(this));\n }\n\n reset() {\n this.updateUIState();\n }\n\n dispatchEvent(type, findPrev) {\n this.eventBus.dispatch('find', {\n source: this,\n type,\n query: this.findField.value,\n caseSensitive: this.caseSensitive.checked,\n phraseSearch: true,\n highlightAll: this.highlightAll.checked,\n findPrevious: findPrev,\n });\n }\n\n updateUIState(state, previous, matchCount) {\n let notFound = false;\n let findMsg = '';\n let status = '';\n\n switch (state) {\n case FindState.FOUND:\n break;\n\n case FindState.PENDING:\n status = 'pending';\n break;\n\n case FindState.NOT_FOUND:\n findMsg = this.l10n.get('find_not_found', null, 'Phrase not found');\n notFound = true;\n break;\n\n case FindState.WRAPPED:\n if (previous) {\n findMsg = this.l10n.get('find_reached_top', null,\n 'Reached top of document, continued from bottom');\n } else {\n findMsg = this.l10n.get('find_reached_bottom', null,\n 'Reached end of document, continued from top');\n }\n break;\n }\n\n if (notFound) {\n this.findField.classList.add('notFound');\n } else {\n this.findField.classList.remove('notFound');\n }\n\n this.findField.setAttribute('data-status', status);\n Promise.resolve(findMsg).then((msg) => {\n this.findMsg.textContent = msg;\n this._adjustWidth();\n });\n\n this.updateResultsCount(matchCount);\n }\n\n updateResultsCount(matchCount) {\n if (!this.findResultsCount) {\n return; // No UI control is provided.\n }\n\n if (!matchCount) {\n // If there are no matches, hide and reset the counter.\n this.findResultsCount.classList.add('hidden');\n this.findResultsCount.textContent = '';\n } else {\n // Update and show the match counter.\n this.findResultsCount.textContent = matchCount.toLocaleString();\n this.findResultsCount.classList.remove('hidden');\n }\n // Since `updateResultsCount` may be called from `PDFFindController`,\n // ensure that the width of the findbar is always updated correctly.\n this._adjustWidth();\n }\n\n open() {\n if (!this.opened) {\n this.opened = true;\n this.toggleButton.classList.add('toggled');\n this.bar.classList.remove('hidden');\n }\n this.findField.select();\n this.findField.focus();\n\n this._adjustWidth();\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toggleButton.classList.remove('toggled');\n this.bar.classList.add('hidden');\n this.findController.active = false;\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _adjustWidth() {\n if (!this.opened) {\n return;\n }\n\n // The find bar has an absolute position and thus the browser extends\n // its width to the maximum possible width once the find bar does not fit\n // entirely within the window anymore (and its elements are automatically\n // wrapped). Here we detect and fix that.\n this.bar.classList.remove('wrapContainers');\n\n let findbarHeight = this.bar.clientHeight;\n let inputContainerHeight = this.bar.firstElementChild.clientHeight;\n\n if (findbarHeight > inputContainerHeight) {\n // The findbar is taller than the input container, which means that\n // the browser wrapped some of the elements. For a consistent look,\n // wrap all of them to adjust the width of the find bar.\n this.bar.classList.add('wrapContainers');\n }\n }\n}\n\nexport {\n PDFFindBar,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_find_bar.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals chrome */\n\nimport { getGlobalEventBus } from './dom_events';\n\nfunction PDFHistory(options) {\n this.linkService = options.linkService;\n this.eventBus = options.eventBus || getGlobalEventBus();\n\n this.initialized = false;\n this.initialDestination = null;\n this.initialBookmark = null;\n}\n\nPDFHistory.prototype = {\n /**\n * @param {string} fingerprint\n */\n initialize: function pdfHistoryInitialize(fingerprint) {\n this.initialized = true;\n this.reInitialized = false;\n this.allowHashChange = true;\n this.historyUnlocked = true;\n this.isViewerInPresentationMode = false;\n\n this.previousHash = window.location.hash.substring(1);\n this.currentBookmark = '';\n this.currentPage = 0;\n this.updatePreviousBookmark = false;\n this.previousBookmark = '';\n this.previousPage = 0;\n this.nextHashParam = '';\n\n this.fingerprint = fingerprint;\n this.currentUid = this.uid = 0;\n this.current = {};\n\n var state = window.history.state;\n if (this._isStateObjectDefined(state)) {\n // This corresponds to navigating back to the document\n // from another page in the browser history.\n if (state.target.dest) {\n this.initialDestination = state.target.dest;\n } else {\n this.initialBookmark = state.target.hash;\n }\n this.currentUid = state.uid;\n this.uid = state.uid + 1;\n this.current = state.target;\n } else {\n // This corresponds to the loading of a new document.\n if (state && state.fingerprint &&\n this.fingerprint !== state.fingerprint) {\n // Reinitialize the browsing history when a new document\n // is opened in the web viewer.\n this.reInitialized = true;\n }\n this._pushOrReplaceState({ fingerprint: this.fingerprint, }, true);\n }\n\n var self = this;\n window.addEventListener('popstate', function pdfHistoryPopstate(evt) {\n if (!self.historyUnlocked) {\n return;\n }\n if (evt.state) {\n // Move back/forward in the history.\n self._goTo(evt.state);\n return;\n }\n\n // If the state is not set, then the user tried to navigate to a\n // different hash by manually editing the URL and pressing Enter, or by\n // clicking on an in-page link (e.g. the \"current view\" link).\n // Save the current view state to the browser history.\n\n // Note: In Firefox, history.null could also be null after an in-page\n // navigation to the same URL, and without dispatching the popstate\n // event: https://bugzilla.mozilla.org/show_bug.cgi?id=1183881\n\n if (self.uid === 0) {\n // Replace the previous state if it was not explicitly set.\n var previousParams = (self.previousHash && self.currentBookmark &&\n self.previousHash !== self.currentBookmark) ?\n { hash: self.currentBookmark, page: self.currentPage, } :\n { page: 1, };\n replacePreviousHistoryState(previousParams, function() {\n updateHistoryWithCurrentHash();\n });\n } else {\n updateHistoryWithCurrentHash();\n }\n });\n\n\n function updateHistoryWithCurrentHash() {\n self.previousHash = window.location.hash.slice(1);\n self._pushToHistory({ hash: self.previousHash, }, false, true);\n self._updatePreviousBookmark();\n }\n\n function replacePreviousHistoryState(params, callback) {\n // To modify the previous history entry, the following happens:\n // 1. history.back()\n // 2. _pushToHistory, which calls history.replaceState( ... )\n // 3. history.forward()\n // Because a navigation via the history API does not immediately update\n // the history state, the popstate event is used for synchronization.\n self.historyUnlocked = false;\n\n // Suppress the hashchange event to avoid side effects caused by\n // navigating back and forward.\n self.allowHashChange = false;\n window.addEventListener('popstate', rewriteHistoryAfterBack);\n history.back();\n\n function rewriteHistoryAfterBack() {\n window.removeEventListener('popstate', rewriteHistoryAfterBack);\n window.addEventListener('popstate', rewriteHistoryAfterForward);\n self._pushToHistory(params, false, true);\n history.forward();\n }\n function rewriteHistoryAfterForward() {\n window.removeEventListener('popstate', rewriteHistoryAfterForward);\n self.allowHashChange = true;\n self.historyUnlocked = true;\n callback();\n }\n }\n\n function pdfHistoryBeforeUnload() {\n var previousParams = self._getPreviousParams(null, true);\n if (previousParams) {\n var replacePrevious = (!self.current.dest &&\n self.current.hash !== self.previousHash);\n self._pushToHistory(previousParams, false, replacePrevious);\n self._updatePreviousBookmark();\n }\n // Remove the event listener when navigating away from the document,\n // since 'beforeunload' prevents Firefox from caching the document.\n window.removeEventListener('beforeunload', pdfHistoryBeforeUnload);\n }\n\n window.addEventListener('beforeunload', pdfHistoryBeforeUnload);\n\n window.addEventListener('pageshow', function pdfHistoryPageShow(evt) {\n // If the entire viewer (including the PDF file) is cached in\n // the browser, we need to reattach the 'beforeunload' event listener\n // since the 'DOMContentLoaded' event is not fired on 'pageshow'.\n window.addEventListener('beforeunload', pdfHistoryBeforeUnload);\n });\n\n self.eventBus.on('presentationmodechanged', function(e) {\n self.isViewerInPresentationMode = e.active;\n });\n },\n\n clearHistoryState: function pdfHistory_clearHistoryState() {\n this._pushOrReplaceState(null, true);\n },\n\n _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) {\n return (state && state.uid >= 0 &&\n state.fingerprint && this.fingerprint === state.fingerprint &&\n state.target && state.target.hash) ? true : false;\n },\n\n _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj,\n replace) {\n // history.state.chromecomState is managed by chromecom.js.\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') &&\n window.history.state && 'chromecomState' in window.history.state) {\n stateObj = stateObj || {};\n stateObj.chromecomState = window.history.state.chromecomState;\n }\n if (replace) {\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('GENERIC || CHROME')) {\n window.history.replaceState(stateObj, '', document.URL);\n } else {\n window.history.replaceState(stateObj, '');\n }\n } else {\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('GENERIC || CHROME')) {\n window.history.pushState(stateObj, '', document.URL);\n } else {\n window.history.pushState(stateObj, '');\n }\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME') &&\n top === window) {\n chrome.runtime.sendMessage('showPageAction');\n }\n }\n },\n\n get isHashChangeUnlocked() {\n if (!this.initialized) {\n return true;\n }\n return this.allowHashChange;\n },\n\n _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() {\n if (this.updatePreviousBookmark &&\n this.currentBookmark && this.currentPage) {\n this.previousBookmark = this.currentBookmark;\n this.previousPage = this.currentPage;\n this.updatePreviousBookmark = false;\n }\n },\n\n updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark,\n pageNum) {\n if (this.initialized) {\n this.currentBookmark = bookmark.substring(1);\n this.currentPage = pageNum | 0;\n this._updatePreviousBookmark();\n }\n },\n\n updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) {\n if (this.initialized) {\n this.nextHashParam = param;\n }\n },\n\n push: function pdfHistoryPush(params, isInitialBookmark) {\n if (!(this.initialized && this.historyUnlocked)) {\n return;\n }\n if (params.dest && !params.hash) {\n params.hash = (this.current.hash && this.current.dest &&\n this.current.dest === params.dest) ?\n this.current.hash :\n this.linkService.getDestinationHash(params.dest).split('#')[1];\n }\n if (params.page) {\n params.page |= 0;\n }\n if (isInitialBookmark) {\n var target = window.history.state.target;\n if (!target) {\n // Invoked when the user specifies an initial bookmark,\n // thus setting initialBookmark, when the document is loaded.\n this._pushToHistory(params, false);\n this.previousHash = window.location.hash.substring(1);\n }\n this.updatePreviousBookmark = this.nextHashParam ? false : true;\n if (target) {\n // If the current document is reloaded,\n // avoid creating duplicate entries in the history.\n this._updatePreviousBookmark();\n }\n return;\n }\n if (this.nextHashParam) {\n if (this.nextHashParam === params.hash) {\n this.nextHashParam = null;\n this.updatePreviousBookmark = true;\n return;\n }\n this.nextHashParam = null;\n }\n\n if (params.hash) {\n if (this.current.hash) {\n if (this.current.hash !== params.hash) {\n this._pushToHistory(params, true);\n } else {\n if (!this.current.page && params.page) {\n this._pushToHistory(params, false, true);\n }\n this.updatePreviousBookmark = true;\n }\n } else {\n this._pushToHistory(params, true);\n }\n } else if (this.current.page && params.page &&\n this.current.page !== params.page) {\n this._pushToHistory(params, true);\n }\n },\n\n _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage,\n beforeUnload) {\n if (!(this.currentBookmark && this.currentPage)) {\n return null;\n } else if (this.updatePreviousBookmark) {\n this.updatePreviousBookmark = false;\n }\n if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) {\n // Prevent the history from getting stuck in the current state,\n // effectively preventing the user from going back/forward in\n // the history.\n //\n // This happens if the current position in the document didn't change\n // when the history was previously updated. The reasons for this are\n // either:\n // 1. The current zoom value is such that the document does not need to,\n // or cannot, be scrolled to display the destination.\n // 2. The previous destination is broken, and doesn't actally point to a\n // position within the document.\n // (This is either due to a bad PDF generator, or the user making a\n // mistake when entering a destination in the hash parameters.)\n return null;\n }\n if ((!this.current.dest && !onlyCheckPage) || beforeUnload) {\n if (this.previousBookmark === this.currentBookmark) {\n return null;\n }\n } else if (this.current.page || onlyCheckPage) {\n if (this.previousPage === this.currentPage) {\n return null;\n }\n } else {\n return null;\n }\n var params = { hash: this.currentBookmark, page: this.currentPage, };\n if (this.isViewerInPresentationMode) {\n params.hash = null;\n }\n return params;\n },\n\n _stateObj: function pdfHistory_stateObj(params) {\n return { fingerprint: this.fingerprint, uid: this.uid, target: params, };\n },\n\n _pushToHistory: function pdfHistory_pushToHistory(params,\n addPrevious, overwrite) {\n if (!this.initialized) {\n return;\n }\n if (!params.hash && params.page) {\n params.hash = ('page=' + params.page);\n }\n if (addPrevious && !overwrite) {\n var previousParams = this._getPreviousParams();\n if (previousParams) {\n var replacePrevious = (!this.current.dest &&\n this.current.hash !== this.previousHash);\n this._pushToHistory(previousParams, false, replacePrevious);\n }\n }\n this._pushOrReplaceState(this._stateObj(params),\n (overwrite || this.uid === 0));\n this.currentUid = this.uid++;\n this.current = params;\n this.updatePreviousBookmark = true;\n },\n\n _goTo: function pdfHistory_goTo(state) {\n if (!(this.initialized && this.historyUnlocked &&\n this._isStateObjectDefined(state))) {\n return;\n }\n if (!this.reInitialized && state.uid < this.currentUid) {\n var previousParams = this._getPreviousParams(true);\n if (previousParams) {\n this._pushToHistory(this.current, false);\n this._pushToHistory(previousParams, false);\n this.currentUid = state.uid;\n window.history.back();\n return;\n }\n }\n this.historyUnlocked = false;\n\n if (state.target.dest) {\n this.linkService.navigateTo(state.target.dest);\n } else {\n this.linkService.setHash(state.target.hash);\n }\n this.currentUid = state.uid;\n if (state.uid > this.uid) {\n this.uid = state.uid;\n }\n this.current = state.target;\n this.updatePreviousBookmark = true;\n\n var currentHash = window.location.hash.substring(1);\n if (this.previousHash !== currentHash) {\n this.allowHashChange = false;\n }\n this.previousHash = currentHash;\n\n this.historyUnlocked = true;\n },\n\n back: function pdfHistoryBack() {\n this.go(-1);\n },\n\n forward: function pdfHistoryForward() {\n this.go(1);\n },\n\n go: function pdfHistoryGo(direction) {\n if (this.initialized && this.historyUnlocked) {\n var state = window.history.state;\n if (direction === -1 && state && state.uid > 0) {\n window.history.back();\n } else if (direction === 1 && state && state.uid < (this.uid - 1)) {\n window.history.forward();\n }\n }\n },\n};\n\nexport {\n PDFHistory,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_history.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n addLinkAttributes, PDFJS, removeNullCharacters\n} from 'pdfjs-lib';\n\nconst DEFAULT_TITLE = '\\u2013';\n\n/**\n * @typedef {Object} PDFOutlineViewerOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {EventBus} eventBus - The application event bus.\n */\n\n/**\n * @typedef {Object} PDFOutlineViewerRenderParameters\n * @property {Array|null} outline - An array of outline objects.\n */\n\nclass PDFOutlineViewer {\n /**\n * @param {PDFOutlineViewerOptions} options\n */\n constructor({ container, linkService, eventBus, }) {\n this.outline = null;\n this.lastToggleIsShow = true;\n\n this.container = container;\n this.linkService = linkService;\n this.eventBus = eventBus;\n }\n\n reset() {\n this.outline = null;\n this.lastToggleIsShow = true;\n\n // Remove the outline from the DOM.\n this.container.textContent = '';\n\n // Ensure that the left (right in RTL locales) margin is always reset,\n // to prevent incorrect outline alignment if a new document is opened.\n this.container.classList.remove('outlineWithDeepNesting');\n }\n\n /**\n * @private\n */\n _dispatchEvent(outlineCount) {\n this.eventBus.dispatch('outlineloaded', {\n source: this,\n outlineCount,\n });\n }\n\n /**\n * @private\n */\n _bindLink(element, item) {\n if (item.url) {\n addLinkAttributes(element, {\n url: item.url,\n target: (item.newWindow ? PDFJS.LinkTarget.BLANK : undefined),\n });\n return;\n }\n let destination = item.dest;\n\n element.href = this.linkService.getDestinationHash(destination);\n element.onclick = () => {\n if (destination) {\n this.linkService.navigateTo(destination);\n }\n return false;\n };\n }\n\n /**\n * @private\n */\n _setStyles(element, item) {\n let styleStr = '';\n if (item.bold) {\n styleStr += 'font-weight: bold;';\n }\n if (item.italic) {\n styleStr += 'font-style: italic;';\n }\n\n if (styleStr) {\n element.setAttribute('style', styleStr);\n }\n }\n\n /**\n * Prepend a button before an outline item which allows the user to toggle\n * the visibility of all outline items at that level.\n *\n * @private\n */\n _addToggleButton(div) {\n let toggler = document.createElement('div');\n toggler.className = 'outlineItemToggler';\n toggler.onclick = (evt) => {\n evt.stopPropagation();\n toggler.classList.toggle('outlineItemsHidden');\n\n if (evt.shiftKey) {\n let shouldShowAll = !toggler.classList.contains('outlineItemsHidden');\n this._toggleOutlineItem(div, shouldShowAll);\n }\n };\n div.insertBefore(toggler, div.firstChild);\n }\n\n /**\n * Toggle the visibility of the subtree of an outline item.\n *\n * @param {Element} root - the root of the outline (sub)tree.\n * @param {boolean} show - whether to show the outline (sub)tree. If false,\n * the outline subtree rooted at |root| will be collapsed.\n *\n * @private\n */\n _toggleOutlineItem(root, show) {\n this.lastToggleIsShow = show;\n let togglers = root.querySelectorAll('.outlineItemToggler');\n for (let i = 0, ii = togglers.length; i < ii; ++i) {\n togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden');\n }\n }\n\n /**\n * Collapse or expand all subtrees of the outline.\n */\n toggleOutlineTree() {\n if (!this.outline) {\n return;\n }\n this._toggleOutlineItem(this.container, !this.lastToggleIsShow);\n }\n\n /**\n * @param {PDFOutlineViewerRenderParameters} params\n */\n render({ outline, }) {\n let outlineCount = 0;\n\n if (this.outline) {\n this.reset();\n }\n this.outline = outline || null;\n\n if (!outline) {\n this._dispatchEvent(outlineCount);\n return;\n }\n\n let fragment = document.createDocumentFragment();\n let queue = [{ parent: fragment, items: this.outline, }];\n let hasAnyNesting = false;\n while (queue.length > 0) {\n let levelData = queue.shift();\n for (let i = 0, len = levelData.items.length; i < len; i++) {\n let item = levelData.items[i];\n\n let div = document.createElement('div');\n div.className = 'outlineItem';\n\n let element = document.createElement('a');\n this._bindLink(element, item);\n this._setStyles(element, item);\n element.textContent =\n removeNullCharacters(item.title) || DEFAULT_TITLE;\n\n div.appendChild(element);\n\n if (item.items.length > 0) {\n hasAnyNesting = true;\n this._addToggleButton(div);\n\n let itemsDiv = document.createElement('div');\n itemsDiv.className = 'outlineItems';\n div.appendChild(itemsDiv);\n queue.push({ parent: itemsDiv, items: item.items, });\n }\n\n levelData.parent.appendChild(div);\n outlineCount++;\n }\n }\n if (hasAnyNesting) {\n this.container.classList.add('outlineWithDeepNesting');\n }\n\n this.container.appendChild(fragment);\n\n this._dispatchEvent(outlineCount);\n }\n}\n\nexport {\n PDFOutlineViewer,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_outline_viewer.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n approximateFraction, CSS_UNITS, DEFAULT_SCALE, getOutputScale, NullL10n,\n RendererType, roundToDivide\n} from './ui_utils';\nimport {\n createPromiseCapability, CustomStyle, PDFJS, RenderingCancelledException,\n SVGGraphics\n} from 'pdfjs-lib';\nimport { getGlobalEventBus } from './dom_events';\nimport { RenderingStates } from './pdf_rendering_queue';\n\n/**\n * @typedef {Object} PDFPageViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} id - The page unique ID (normally its number).\n * @property {number} scale - The page scale display.\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IPDFTextLayerFactory} textLayerFactory\n * @property {IPDFAnnotationLayerFactory} annotationLayerFactory\n * @property {boolean} enhanceTextSelection - Turns on the text selection\n * enhancement. The default is `false`.\n * @property {boolean} renderInteractiveForms - Turns on rendering of\n * interactive form elements. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFPageView {\n /**\n * @param {PDFPageViewOptions} options\n */\n constructor(options) {\n let container = options.container;\n let defaultViewport = options.defaultViewport;\n\n this.id = options.id;\n this.renderingId = 'page' + this.id;\n\n this.pdfPage = null;\n this.pageLabel = null;\n this.rotation = 0;\n this.scale = options.scale || DEFAULT_SCALE;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n this.hasRestrictedScaling = false;\n this.enhanceTextSelection = options.enhanceTextSelection || false;\n this.renderInteractiveForms = options.renderInteractiveForms || false;\n\n this.eventBus = options.eventBus || getGlobalEventBus();\n this.renderingQueue = options.renderingQueue;\n this.textLayerFactory = options.textLayerFactory;\n this.annotationLayerFactory = options.annotationLayerFactory;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.paintTask = null;\n this.paintedViewportMap = new WeakMap();\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this.error = null;\n\n this.onBeforeDraw = null;\n this.onAfterDraw = null;\n\n this.annotationLayer = null;\n this.textLayer = null;\n this.zoomLayer = null;\n\n let div = document.createElement('div');\n div.className = 'page';\n div.style.width = Math.floor(this.viewport.width) + 'px';\n div.style.height = Math.floor(this.viewport.height) + 'px';\n div.setAttribute('data-page-number', this.id);\n this.div = div;\n\n container.appendChild(div);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n\n let totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport(this.scale * CSS_UNITS,\n totalRotation);\n this.stats = pdfPage.stats;\n this.reset();\n }\n\n destroy() {\n this.reset();\n if (this.pdfPage) {\n this.pdfPage.cleanup();\n this.pdfPage = null;\n }\n }\n\n /**\n * @private\n */\n _resetZoomLayer(removeFromDOM = false) {\n if (!this.zoomLayer) {\n return;\n }\n let zoomLayerCanvas = this.zoomLayer.firstChild;\n this.paintedViewportMap.delete(zoomLayerCanvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n zoomLayerCanvas.width = 0;\n zoomLayerCanvas.height = 0;\n\n if (removeFromDOM) {\n // Note: `ChildNode.remove` doesn't throw if the parent node is undefined.\n this.zoomLayer.remove();\n }\n this.zoomLayer = null;\n }\n\n reset(keepZoomLayer = false, keepAnnotations = false) {\n this.cancelRendering();\n\n let div = this.div;\n div.style.width = Math.floor(this.viewport.width) + 'px';\n div.style.height = Math.floor(this.viewport.height) + 'px';\n\n let childNodes = div.childNodes;\n let currentZoomLayerNode = (keepZoomLayer && this.zoomLayer) || null;\n let currentAnnotationNode = (keepAnnotations && this.annotationLayer &&\n this.annotationLayer.div) || null;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n let node = childNodes[i];\n if (currentZoomLayerNode === node || currentAnnotationNode === node) {\n continue;\n }\n div.removeChild(node);\n }\n div.removeAttribute('data-loaded');\n\n if (currentAnnotationNode) {\n // Hide the annotation layer until all elements are resized\n // so they are not displayed on the already resized page.\n this.annotationLayer.hide();\n } else {\n this.annotationLayer = null;\n }\n\n if (!currentZoomLayerNode) {\n if (this.canvas) {\n this.paintedViewportMap.delete(this.canvas);\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n this._resetZoomLayer();\n }\n if (this.svg) {\n this.paintedViewportMap.delete(this.svg);\n delete this.svg;\n }\n\n this.loadingIconDiv = document.createElement('div');\n this.loadingIconDiv.className = 'loadingIcon';\n div.appendChild(this.loadingIconDiv);\n }\n\n update(scale, rotation) {\n this.scale = scale || this.scale;\n if (typeof rotation !== 'undefined') { // The rotation may be zero.\n this.rotation = rotation;\n }\n\n let totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: this.scale * CSS_UNITS,\n rotation: totalRotation,\n });\n\n if (this.svg) {\n this.cssTransform(this.svg, true);\n\n this.eventBus.dispatch('pagerendered', {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n });\n return;\n }\n\n let isScalingRestricted = false;\n if (this.canvas && PDFJS.maxCanvasPixels > 0) {\n let outputScale = this.outputScale;\n if (((Math.floor(this.viewport.width) * outputScale.sx) | 0) *\n ((Math.floor(this.viewport.height) * outputScale.sy) | 0) >\n PDFJS.maxCanvasPixels) {\n isScalingRestricted = true;\n }\n }\n\n if (this.canvas) {\n if (PDFJS.useOnlyCssZoom ||\n (this.hasRestrictedScaling && isScalingRestricted)) {\n this.cssTransform(this.canvas, true);\n\n this.eventBus.dispatch('pagerendered', {\n source: this,\n pageNumber: this.id,\n cssTransform: true,\n });\n return;\n }\n if (!this.zoomLayer && !this.canvas.hasAttribute('hidden')) {\n this.zoomLayer = this.canvas.parentNode;\n this.zoomLayer.style.position = 'absolute';\n }\n }\n if (this.zoomLayer) {\n this.cssTransform(this.zoomLayer.firstChild);\n }\n this.reset(/* keepZoomLayer = */ true, /* keepAnnotations = */ true);\n }\n\n cancelRendering() {\n if (this.paintTask) {\n this.paintTask.cancel();\n this.paintTask = null;\n }\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n\n if (this.textLayer) {\n this.textLayer.cancel();\n this.textLayer = null;\n }\n }\n\n cssTransform(target, redrawAnnotations = false) {\n // Scale target (canvas or svg), its wrapper and page container.\n let width = this.viewport.width;\n let height = this.viewport.height;\n let div = this.div;\n target.style.width = target.parentNode.style.width = div.style.width =\n Math.floor(width) + 'px';\n target.style.height = target.parentNode.style.height = div.style.height =\n Math.floor(height) + 'px';\n // The canvas may have been originally rotated; rotate relative to that.\n let relativeRotation = this.viewport.rotation -\n this.paintedViewportMap.get(target).rotation;\n let absRotation = Math.abs(relativeRotation);\n let scaleX = 1, scaleY = 1;\n if (absRotation === 90 || absRotation === 270) {\n // Scale x and y because of the rotation.\n scaleX = height / width;\n scaleY = width / height;\n }\n let cssTransform = 'rotate(' + relativeRotation + 'deg) ' +\n 'scale(' + scaleX + ',' + scaleY + ')';\n CustomStyle.setProp('transform', target, cssTransform);\n\n if (this.textLayer) {\n // Rotating the text layer is more complicated since the divs inside the\n // the text layer are rotated.\n // TODO: This could probably be simplified by drawing the text layer in\n // one orientation and then rotating overall.\n let textLayerViewport = this.textLayer.viewport;\n let textRelativeRotation = this.viewport.rotation -\n textLayerViewport.rotation;\n let textAbsRotation = Math.abs(textRelativeRotation);\n let scale = width / textLayerViewport.width;\n if (textAbsRotation === 90 || textAbsRotation === 270) {\n scale = width / textLayerViewport.height;\n }\n let textLayerDiv = this.textLayer.textLayerDiv;\n let transX, transY;\n switch (textAbsRotation) {\n case 0:\n transX = transY = 0;\n break;\n case 90:\n transX = 0;\n transY = '-' + textLayerDiv.style.height;\n break;\n case 180:\n transX = '-' + textLayerDiv.style.width;\n transY = '-' + textLayerDiv.style.height;\n break;\n case 270:\n transX = '-' + textLayerDiv.style.width;\n transY = 0;\n break;\n default:\n console.error('Bad rotation value.');\n break;\n }\n CustomStyle.setProp('transform', textLayerDiv,\n 'rotate(' + textAbsRotation + 'deg) ' +\n 'scale(' + scale + ', ' + scale + ') ' +\n 'translate(' + transX + ', ' + transY + ')');\n CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%');\n }\n\n if (redrawAnnotations && this.annotationLayer) {\n this.annotationLayer.render(this.viewport, 'display');\n }\n }\n\n get width() {\n return this.viewport.width;\n }\n\n get height() {\n return this.viewport.height;\n }\n\n getPagePoint(x, y) {\n return this.viewport.convertToPdfPoint(x, y);\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error('Must be in new state before drawing');\n this.reset(); // Ensure that we reset all state to prevent issues.\n }\n\n if (!this.pdfPage) {\n this.renderingState = RenderingStates.FINISHED;\n return Promise.reject(new Error('Page is not loaded'));\n }\n\n this.renderingState = RenderingStates.RUNNING;\n\n let pdfPage = this.pdfPage;\n let div = this.div;\n // Wrap the canvas so that if it has a CSS transform for high DPI the\n // overflow will be hidden in Firefox.\n let canvasWrapper = document.createElement('div');\n canvasWrapper.style.width = div.style.width;\n canvasWrapper.style.height = div.style.height;\n canvasWrapper.classList.add('canvasWrapper');\n\n if (this.annotationLayer && this.annotationLayer.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(canvasWrapper, this.annotationLayer.div);\n } else {\n div.appendChild(canvasWrapper);\n }\n\n let textLayer = null;\n if (this.textLayerFactory) {\n let textLayerDiv = document.createElement('div');\n textLayerDiv.className = 'textLayer';\n textLayerDiv.style.width = canvasWrapper.style.width;\n textLayerDiv.style.height = canvasWrapper.style.height;\n if (this.annotationLayer && this.annotationLayer.div) {\n // The annotation layer needs to stay on top.\n div.insertBefore(textLayerDiv, this.annotationLayer.div);\n } else {\n div.appendChild(textLayerDiv);\n }\n\n textLayer = this.textLayerFactory.\n createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport,\n this.enhanceTextSelection);\n }\n this.textLayer = textLayer;\n\n let renderContinueCallback = null;\n if (this.renderingQueue) {\n renderContinueCallback = (cont) => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n }\n\n let finishPaintTask = (error) => {\n // The paintTask may have been replaced by a new one, so only remove\n // the reference to the paintTask if it matches the one that is\n // triggering this callback.\n if (paintTask === this.paintTask) {\n this.paintTask = null;\n }\n\n if (((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('PDFJS_NEXT')) && error === 'cancelled') ||\n error instanceof RenderingCancelledException) {\n this.error = null;\n return Promise.resolve(undefined);\n }\n\n this.renderingState = RenderingStates.FINISHED;\n\n if (this.loadingIconDiv) {\n div.removeChild(this.loadingIconDiv);\n delete this.loadingIconDiv;\n }\n this._resetZoomLayer(/* removeFromDOM = */ true);\n\n this.error = error;\n this.stats = pdfPage.stats;\n if (this.onAfterDraw) {\n this.onAfterDraw();\n }\n this.eventBus.dispatch('pagerendered', {\n source: this,\n pageNumber: this.id,\n cssTransform: false,\n });\n\n if (error) {\n return Promise.reject(error);\n }\n return Promise.resolve(undefined);\n };\n\n let paintTask = this.renderer === RendererType.SVG ?\n this.paintOnSvg(canvasWrapper) :\n this.paintOnCanvas(canvasWrapper);\n paintTask.onRenderContinue = renderContinueCallback;\n this.paintTask = paintTask;\n\n let resultPromise = paintTask.promise.then(function() {\n return finishPaintTask(null).then(function () {\n if (textLayer) {\n let readableStream = pdfPage.streamTextContent({\n normalizeWhitespace: true,\n });\n textLayer.setTextContentStream(readableStream);\n textLayer.render();\n }\n });\n }, function(reason) {\n return finishPaintTask(reason);\n });\n\n if (this.annotationLayerFactory) {\n if (!this.annotationLayer) {\n this.annotationLayer = this.annotationLayerFactory.\n createAnnotationLayerBuilder(div, pdfPage,\n this.renderInteractiveForms, this.l10n);\n }\n this.annotationLayer.render(this.viewport, 'display');\n }\n div.setAttribute('data-loaded', true);\n\n if (this.onBeforeDraw) {\n this.onBeforeDraw();\n }\n return resultPromise;\n }\n\n paintOnCanvas(canvasWrapper) {\n let renderCapability = createPromiseCapability();\n let result = {\n promise: renderCapability.promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n renderTask.cancel();\n },\n };\n\n let viewport = this.viewport;\n let canvas = document.createElement('canvas');\n canvas.id = this.renderingId;\n\n // Keep the canvas hidden until the first draw callback, or until drawing\n // is complete when `!this.renderingQueue`, to prevent black flickering.\n canvas.setAttribute('hidden', 'hidden');\n let isCanvasHidden = true;\n let showCanvas = function () {\n if (isCanvasHidden) {\n canvas.removeAttribute('hidden');\n isCanvasHidden = false;\n }\n };\n\n canvasWrapper.appendChild(canvas);\n this.canvas = canvas;\n\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('MOZCENTRAL || FIREFOX || GENERIC')) {\n canvas.mozOpaque = true;\n }\n\n let ctx = canvas.getContext('2d', { alpha: false, });\n let outputScale = getOutputScale(ctx);\n this.outputScale = outputScale;\n\n if (PDFJS.useOnlyCssZoom) {\n let actualSizeViewport = viewport.clone({ scale: CSS_UNITS, });\n // Use a scale that makes the canvas have the originally intended size\n // of the page.\n outputScale.sx *= actualSizeViewport.width / viewport.width;\n outputScale.sy *= actualSizeViewport.height / viewport.height;\n outputScale.scaled = true;\n }\n\n if (PDFJS.maxCanvasPixels > 0) {\n let pixelsInViewport = viewport.width * viewport.height;\n let maxScale = Math.sqrt(PDFJS.maxCanvasPixels / pixelsInViewport);\n if (outputScale.sx > maxScale || outputScale.sy > maxScale) {\n outputScale.sx = maxScale;\n outputScale.sy = maxScale;\n outputScale.scaled = true;\n this.hasRestrictedScaling = true;\n } else {\n this.hasRestrictedScaling = false;\n }\n }\n\n let sfx = approximateFraction(outputScale.sx);\n let sfy = approximateFraction(outputScale.sy);\n canvas.width = roundToDivide(viewport.width * outputScale.sx, sfx[0]);\n canvas.height = roundToDivide(viewport.height * outputScale.sy, sfy[0]);\n canvas.style.width = roundToDivide(viewport.width, sfx[1]) + 'px';\n canvas.style.height = roundToDivide(viewport.height, sfy[1]) + 'px';\n // Add the viewport so it's known what it was originally drawn with.\n this.paintedViewportMap.set(canvas, viewport);\n\n // Rendering area\n let transform = !outputScale.scaled ? null :\n [outputScale.sx, 0, 0, outputScale.sy, 0, 0];\n let renderContext = {\n canvasContext: ctx,\n transform,\n viewport: this.viewport,\n renderInteractiveForms: this.renderInteractiveForms,\n };\n let renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = function (cont) {\n showCanvas();\n if (result.onRenderContinue) {\n result.onRenderContinue(cont);\n } else {\n cont();\n }\n };\n\n renderTask.promise.then(function() {\n showCanvas();\n renderCapability.resolve(undefined);\n }, function(error) {\n showCanvas();\n renderCapability.reject(error);\n });\n return result;\n }\n\n paintOnSvg(wrapper) {\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL || CHROME')) {\n // Return a mock object, to prevent errors such as e.g.\n // \"TypeError: paintTask.promise is undefined\".\n return {\n promise: Promise.reject(new Error('SVG rendering is not supported.')),\n onRenderContinue(cont) { },\n cancel() { },\n };\n }\n\n let cancelled = false;\n let ensureNotCancelled = () => {\n if (cancelled) {\n if ((typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('PDFJS_NEXT')) || PDFJS.pdfjsNext) {\n throw new RenderingCancelledException(\n 'Rendering cancelled, page ' + this.id, 'svg');\n } else {\n throw 'cancelled'; // eslint-disable-line no-throw-literal\n }\n }\n };\n\n let pdfPage = this.pdfPage;\n let actualSizeViewport = this.viewport.clone({ scale: CSS_UNITS, });\n let promise = pdfPage.getOperatorList().then((opList) => {\n ensureNotCancelled();\n let svgGfx = new SVGGraphics(pdfPage.commonObjs, pdfPage.objs);\n return svgGfx.getSVG(opList, actualSizeViewport).then((svg) => {\n ensureNotCancelled();\n this.svg = svg;\n this.paintedViewportMap.set(svg, actualSizeViewport);\n\n svg.style.width = wrapper.style.width;\n svg.style.height = wrapper.style.height;\n this.renderingState = RenderingStates.FINISHED;\n wrapper.appendChild(svg);\n });\n });\n\n return {\n promise,\n onRenderContinue(cont) {\n cont();\n },\n cancel() {\n cancelled = true;\n },\n };\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = (typeof label === 'string' ? label : null);\n\n if (this.pageLabel !== null) {\n this.div.setAttribute('data-page-label', this.pageLabel);\n } else {\n this.div.removeAttribute('data-page-label');\n }\n }\n}\n\nexport {\n PDFPageView,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_page_view.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { normalizeWheelEventDelta } from './ui_utils';\n\nconst DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; // in ms\nconst DELAY_BEFORE_HIDING_CONTROLS = 3000; // in ms\nconst ACTIVE_SELECTOR = 'pdfPresentationMode';\nconst CONTROLS_SELECTOR = 'pdfPresentationModeControls';\nconst MOUSE_SCROLL_COOLDOWN_TIME = 50; // in ms\nconst PAGE_SWITCH_THRESHOLD = 0.1;\n\n// Number of CSS pixels for a movement to count as a swipe.\nconst SWIPE_MIN_DISTANCE_THRESHOLD = 50;\n\n// Swipe angle deviation from the x or y axis before it is not\n// considered a swipe in that direction any more.\nconst SWIPE_ANGLE_THRESHOLD = Math.PI / 6;\n\n/**\n * @typedef {Object} PDFPresentationModeOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} viewer - (optional) The viewer element.\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {EventBus} eventBus - The application event bus.\n * @property {Array} contextMenuItems - (optional) The menuitems that are added\n * to the context menu in Presentation Mode.\n */\n\nclass PDFPresentationMode {\n /**\n * @param {PDFPresentationModeOptions} options\n */\n constructor({ container, viewer = null, pdfViewer, eventBus,\n contextMenuItems = null, }) {\n this.container = container;\n this.viewer = viewer || container.firstElementChild;\n this.pdfViewer = pdfViewer;\n this.eventBus = eventBus;\n\n this.active = false;\n this.args = null;\n this.contextMenuOpen = false;\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n this.touchSwipeState = null;\n\n if (contextMenuItems) {\n contextMenuItems.contextFirstPage.addEventListener('click', () => {\n this.contextMenuOpen = false;\n this.eventBus.dispatch('firstpage');\n });\n contextMenuItems.contextLastPage.addEventListener('click', () => {\n this.contextMenuOpen = false;\n this.eventBus.dispatch('lastpage');\n });\n contextMenuItems.contextPageRotateCw.addEventListener('click', () => {\n this.contextMenuOpen = false;\n this.eventBus.dispatch('rotatecw');\n });\n contextMenuItems.contextPageRotateCcw.addEventListener('click', () => {\n this.contextMenuOpen = false;\n this.eventBus.dispatch('rotateccw');\n });\n }\n }\n\n /**\n * Request the browser to enter fullscreen mode.\n * @returns {boolean} Indicating if the request was successful.\n */\n request() {\n if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) {\n return false;\n }\n this._addFullscreenChangeListeners();\n this._setSwitchInProgress();\n this._notifyStateChange();\n\n if (this.container.requestFullscreen) {\n this.container.requestFullscreen();\n } else if (this.container.mozRequestFullScreen) {\n this.container.mozRequestFullScreen();\n } else if (this.container.webkitRequestFullscreen) {\n this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n } else if (this.container.msRequestFullscreen) {\n this.container.msRequestFullscreen();\n } else {\n return false;\n }\n\n this.args = {\n page: this.pdfViewer.currentPageNumber,\n previousScale: this.pdfViewer.currentScaleValue,\n };\n\n return true;\n }\n\n /**\n * @private\n */\n _mouseWheel(evt) {\n if (!this.active) {\n return;\n }\n\n evt.preventDefault();\n\n let delta = normalizeWheelEventDelta(evt);\n let currentTime = (new Date()).getTime();\n let storedTime = this.mouseScrollTimeStamp;\n\n // If we've already switched page, avoid accidentally switching again.\n if (currentTime > storedTime &&\n currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {\n return;\n }\n // If the scroll direction changed, reset the accumulated scroll delta.\n if ((this.mouseScrollDelta > 0 && delta < 0) ||\n (this.mouseScrollDelta < 0 && delta > 0)) {\n this._resetMouseScrollState();\n }\n this.mouseScrollDelta += delta;\n\n if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) {\n let totalDelta = this.mouseScrollDelta;\n this._resetMouseScrollState();\n let success = totalDelta > 0 ? this._goToPreviousPage()\n : this._goToNextPage();\n if (success) {\n this.mouseScrollTimeStamp = currentTime;\n }\n }\n }\n\n get isFullscreen() {\n return !!(document.fullscreenElement || document.mozFullScreen ||\n document.webkitIsFullScreen || document.msFullscreenElement);\n }\n\n /**\n * @private\n */\n _goToPreviousPage() {\n let page = this.pdfViewer.currentPageNumber;\n // If we're at the first page, we don't need to do anything.\n if (page <= 1) {\n return false;\n }\n this.pdfViewer.currentPageNumber = (page - 1);\n return true;\n }\n\n /**\n * @private\n */\n _goToNextPage() {\n let page = this.pdfViewer.currentPageNumber;\n // If we're at the last page, we don't need to do anything.\n if (page >= this.pdfViewer.pagesCount) {\n return false;\n }\n this.pdfViewer.currentPageNumber = (page + 1);\n return true;\n }\n\n /**\n * @private\n */\n _notifyStateChange() {\n this.eventBus.dispatch('presentationmodechanged', {\n source: this,\n active: this.active,\n switchInProgress: !!this.switchInProgress,\n });\n }\n\n /**\n * Used to initialize a timeout when requesting Presentation Mode,\n * i.e. when the browser is requested to enter fullscreen mode.\n * This timeout is used to prevent the current page from being scrolled\n * partially, or completely, out of view when entering Presentation Mode.\n * NOTE: This issue seems limited to certain zoom levels (e.g. page-width).\n *\n * @private\n */\n _setSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n }\n this.switchInProgress = setTimeout(() => {\n this._removeFullscreenChangeListeners();\n delete this.switchInProgress;\n this._notifyStateChange();\n }, DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS);\n }\n\n /**\n * @private\n */\n _resetSwitchInProgress() {\n if (this.switchInProgress) {\n clearTimeout(this.switchInProgress);\n delete this.switchInProgress;\n }\n }\n\n /**\n * @private\n */\n _enter() {\n this.active = true;\n this._resetSwitchInProgress();\n this._notifyStateChange();\n this.container.classList.add(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when entering\n // Presentation Mode, by waiting until fullscreen mode in enabled.\n setTimeout(() => {\n this.pdfViewer.currentPageNumber = this.args.page;\n this.pdfViewer.currentScaleValue = 'page-fit';\n }, 0);\n\n this._addWindowListeners();\n this._showControls();\n this.contextMenuOpen = false;\n this.container.setAttribute('contextmenu', 'viewerContextMenu');\n\n // Text selection is disabled in Presentation Mode, thus it's not possible\n // for the user to deselect text that is selected (e.g. with \"Select all\")\n // when entering Presentation Mode, hence we remove any active selection.\n window.getSelection().removeAllRanges();\n }\n\n /**\n * @private\n */\n _exit() {\n let page = this.pdfViewer.currentPageNumber;\n this.container.classList.remove(ACTIVE_SELECTOR);\n\n // Ensure that the correct page is scrolled into view when exiting\n // Presentation Mode, by waiting until fullscreen mode is disabled.\n setTimeout(() => {\n this.active = false;\n this._removeFullscreenChangeListeners();\n this._notifyStateChange();\n\n this.pdfViewer.currentScaleValue = this.args.previousScale;\n this.pdfViewer.currentPageNumber = page;\n this.args = null;\n }, 0);\n\n this._removeWindowListeners();\n this._hideControls();\n this._resetMouseScrollState();\n this.container.removeAttribute('contextmenu');\n this.contextMenuOpen = false;\n }\n\n /**\n * @private\n */\n _mouseDown(evt) {\n if (this.contextMenuOpen) {\n this.contextMenuOpen = false;\n evt.preventDefault();\n return;\n }\n if (evt.button === 0) {\n // Enable clicking of links in presentation mode. Note: only links\n // pointing to destinations in the current PDF document work.\n let isInternalLink = (evt.target.href &&\n evt.target.classList.contains('internalLink'));\n if (!isInternalLink) {\n // Unless an internal link was clicked, advance one page.\n evt.preventDefault();\n\n if (evt.shiftKey) {\n this._goToPreviousPage();\n } else {\n this._goToNextPage();\n }\n }\n }\n }\n\n /**\n * @private\n */\n _contextMenu() {\n this.contextMenuOpen = true;\n }\n\n /**\n * @private\n */\n _showControls() {\n if (this.controlsTimeout) {\n clearTimeout(this.controlsTimeout);\n } else {\n this.container.classList.add(CONTROLS_SELECTOR);\n }\n this.controlsTimeout = setTimeout(() => {\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }, DELAY_BEFORE_HIDING_CONTROLS);\n }\n\n /**\n * @private\n */\n _hideControls() {\n if (!this.controlsTimeout) {\n return;\n }\n clearTimeout(this.controlsTimeout);\n this.container.classList.remove(CONTROLS_SELECTOR);\n delete this.controlsTimeout;\n }\n\n /**\n * Resets the properties used for tracking mouse scrolling events.\n *\n * @private\n */\n _resetMouseScrollState() {\n this.mouseScrollTimeStamp = 0;\n this.mouseScrollDelta = 0;\n }\n\n /**\n * @private\n */\n _touchSwipe(evt) {\n if (!this.active) {\n return;\n }\n if (evt.touches.length > 1) {\n // Multiple touch points detected; cancel the swipe.\n this.touchSwipeState = null;\n return;\n }\n\n switch (evt.type) {\n case 'touchstart':\n this.touchSwipeState = {\n startX: evt.touches[0].pageX,\n startY: evt.touches[0].pageY,\n endX: evt.touches[0].pageX,\n endY: evt.touches[0].pageY,\n };\n break;\n case 'touchmove':\n if (this.touchSwipeState === null) {\n return;\n }\n this.touchSwipeState.endX = evt.touches[0].pageX;\n this.touchSwipeState.endY = evt.touches[0].pageY;\n // Avoid the swipe from triggering browser gestures (Chrome in\n // particular has some sort of swipe gesture in fullscreen mode).\n evt.preventDefault();\n break;\n case 'touchend':\n if (this.touchSwipeState === null) {\n return;\n }\n let delta = 0;\n let dx = this.touchSwipeState.endX - this.touchSwipeState.startX;\n let dy = this.touchSwipeState.endY - this.touchSwipeState.startY;\n let absAngle = Math.abs(Math.atan2(dy, dx));\n if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n (absAngle <= SWIPE_ANGLE_THRESHOLD ||\n absAngle >= (Math.PI - SWIPE_ANGLE_THRESHOLD))) {\n // Horizontal swipe.\n delta = dx;\n } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD &&\n Math.abs(absAngle - (Math.PI / 2)) <= SWIPE_ANGLE_THRESHOLD) {\n // Vertical swipe.\n delta = dy;\n }\n if (delta > 0) {\n this._goToPreviousPage();\n } else if (delta < 0) {\n this._goToNextPage();\n }\n break;\n }\n }\n\n /**\n * @private\n */\n _addWindowListeners() {\n this.showControlsBind = this._showControls.bind(this);\n this.mouseDownBind = this._mouseDown.bind(this);\n this.mouseWheelBind = this._mouseWheel.bind(this);\n this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this);\n this.contextMenuBind = this._contextMenu.bind(this);\n this.touchSwipeBind = this._touchSwipe.bind(this);\n\n window.addEventListener('mousemove', this.showControlsBind);\n window.addEventListener('mousedown', this.mouseDownBind);\n window.addEventListener('wheel', this.mouseWheelBind);\n window.addEventListener('keydown', this.resetMouseScrollStateBind);\n window.addEventListener('contextmenu', this.contextMenuBind);\n window.addEventListener('touchstart', this.touchSwipeBind);\n window.addEventListener('touchmove', this.touchSwipeBind);\n window.addEventListener('touchend', this.touchSwipeBind);\n }\n\n /**\n * @private\n */\n _removeWindowListeners() {\n window.removeEventListener('mousemove', this.showControlsBind);\n window.removeEventListener('mousedown', this.mouseDownBind);\n window.removeEventListener('wheel', this.mouseWheelBind);\n window.removeEventListener('keydown', this.resetMouseScrollStateBind);\n window.removeEventListener('contextmenu', this.contextMenuBind);\n window.removeEventListener('touchstart', this.touchSwipeBind);\n window.removeEventListener('touchmove', this.touchSwipeBind);\n window.removeEventListener('touchend', this.touchSwipeBind);\n\n delete this.showControlsBind;\n delete this.mouseDownBind;\n delete this.mouseWheelBind;\n delete this.resetMouseScrollStateBind;\n delete this.contextMenuBind;\n delete this.touchSwipeBind;\n }\n\n /**\n * @private\n */\n _fullscreenChange() {\n if (this.isFullscreen) {\n this._enter();\n } else {\n this._exit();\n }\n }\n\n /**\n * @private\n */\n _addFullscreenChangeListeners() {\n this.fullscreenChangeBind = this._fullscreenChange.bind(this);\n\n window.addEventListener('fullscreenchange', this.fullscreenChangeBind);\n window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind);\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n window.addEventListener('webkitfullscreenchange',\n this.fullscreenChangeBind);\n window.addEventListener('MSFullscreenChange',\n this.fullscreenChangeBind);\n }\n }\n\n /**\n * @private\n */\n _removeFullscreenChangeListeners() {\n window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);\n window.removeEventListener('mozfullscreenchange',\n this.fullscreenChangeBind);\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n window.removeEventListener('webkitfullscreenchange',\n this.fullscreenChangeBind);\n window.removeEventListener('MSFullscreenChange',\n this.fullscreenChangeBind);\n }\n\n delete this.fullscreenChangeBind;\n }\n}\n\nexport {\n PDFPresentationMode,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_presentation_mode.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NullL10n } from './ui_utils';\nimport { RenderingStates } from './pdf_rendering_queue';\n\nconst UI_NOTIFICATION_CLASS = 'pdfSidebarNotification';\n\nconst SidebarView = {\n NONE: 0,\n THUMBS: 1,\n OUTLINE: 2,\n ATTACHMENTS: 3,\n};\n\n/**\n * @typedef {Object} PDFSidebarOptions\n * @property {PDFViewer} pdfViewer - The document viewer.\n * @property {PDFThumbnailViewer} pdfThumbnailViewer - The thumbnail viewer.\n * @property {PDFOutlineViewer} pdfOutlineViewer - The outline viewer.\n * @property {HTMLDivElement} mainContainer - The main container\n * (in which the viewer element is placed).\n * @property {HTMLDivElement} outerContainer - The outer container\n * (encasing both the viewer and sidebar elements).\n * @property {EventBus} eventBus - The application event bus.\n * @property {HTMLButtonElement} toggleButton - The button used for\n * opening/closing the sidebar.\n * @property {HTMLButtonElement} thumbnailButton - The button used to show\n * the thumbnail view.\n * @property {HTMLButtonElement} outlineButton - The button used to show\n * the outline view.\n * @property {HTMLButtonElement} attachmentsButton - The button used to show\n * the attachments view.\n * @property {HTMLDivElement} thumbnailView - The container in which\n * the thumbnails are placed.\n * @property {HTMLDivElement} outlineView - The container in which\n * the outline is placed.\n * @property {HTMLDivElement} attachmentsView - The container in which\n * the attachments are placed.\n * @property {boolean} disableNotification - (optional) Disable the notification\n * for documents containing outline/attachments. The default value is `false`.\n */\n\nclass PDFSidebar {\n /**\n * @param {PDFSidebarOptions} options\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, l10n = NullL10n) {\n this.isOpen = false;\n this.active = SidebarView.THUMBS;\n this.isInitialViewSet = false;\n\n /**\n * Callback used when the sidebar has been opened/closed, to ensure that\n * the viewers (PDFViewer/PDFThumbnailViewer) are updated correctly.\n */\n this.onToggled = null;\n\n this.pdfViewer = options.pdfViewer;\n this.pdfThumbnailViewer = options.pdfThumbnailViewer;\n this.pdfOutlineViewer = options.pdfOutlineViewer;\n\n this.mainContainer = options.mainContainer;\n this.outerContainer = options.outerContainer;\n this.eventBus = options.eventBus;\n this.toggleButton = options.toggleButton;\n\n this.thumbnailButton = options.thumbnailButton;\n this.outlineButton = options.outlineButton;\n this.attachmentsButton = options.attachmentsButton;\n\n this.thumbnailView = options.thumbnailView;\n this.outlineView = options.outlineView;\n this.attachmentsView = options.attachmentsView;\n\n this.disableNotification = options.disableNotification || false;\n\n this.l10n = l10n;\n\n this._addEventListeners();\n }\n\n reset() {\n this.isInitialViewSet = false;\n\n this._hideUINotification(null);\n this.switchView(SidebarView.THUMBS);\n\n this.outlineButton.disabled = false;\n this.attachmentsButton.disabled = false;\n }\n\n /**\n * @returns {number} One of the values in {SidebarView}.\n */\n get visibleView() {\n return (this.isOpen ? this.active : SidebarView.NONE);\n }\n\n get isThumbnailViewVisible() {\n return (this.isOpen && this.active === SidebarView.THUMBS);\n }\n\n get isOutlineViewVisible() {\n return (this.isOpen && this.active === SidebarView.OUTLINE);\n }\n\n get isAttachmentsViewVisible() {\n return (this.isOpen && this.active === SidebarView.ATTACHMENTS);\n }\n\n /**\n * @param {number} view - The sidebar view that should become visible,\n * must be one of the values in {SidebarView}.\n */\n setInitialView(view) {\n if (this.isInitialViewSet) {\n return;\n }\n this.isInitialViewSet = true;\n\n if (this.isOpen && view === SidebarView.NONE) {\n this._dispatchEvent();\n // If the user has already manually opened the sidebar,\n // immediately closing it would be bad UX.\n return;\n }\n let isViewPreserved = (view === this.visibleView);\n this.switchView(view, /* forceOpen */ true);\n\n if (isViewPreserved) {\n // Prevent dispatching two back-to-back `sidebarviewchanged` events,\n // since `this.switchView` dispatched the event if the view changed.\n this._dispatchEvent();\n }\n }\n\n /**\n * @param {number} view - The sidebar view that should be switched to,\n * must be one of the values in {SidebarView}.\n * @param {boolean} forceOpen - (optional) Ensure that the sidebar is open.\n * The default value is `false`.\n */\n switchView(view, forceOpen = false) {\n if (view === SidebarView.NONE) {\n this.close();\n return;\n }\n let isViewChanged = (view !== this.active);\n let shouldForceRendering = false;\n\n switch (view) {\n case SidebarView.THUMBS:\n this.thumbnailButton.classList.add('toggled');\n this.outlineButton.classList.remove('toggled');\n this.attachmentsButton.classList.remove('toggled');\n\n this.thumbnailView.classList.remove('hidden');\n this.outlineView.classList.add('hidden');\n this.attachmentsView.classList.add('hidden');\n\n if (this.isOpen && isViewChanged) {\n this._updateThumbnailViewer();\n shouldForceRendering = true;\n }\n break;\n case SidebarView.OUTLINE:\n if (this.outlineButton.disabled) {\n return;\n }\n this.thumbnailButton.classList.remove('toggled');\n this.outlineButton.classList.add('toggled');\n this.attachmentsButton.classList.remove('toggled');\n\n this.thumbnailView.classList.add('hidden');\n this.outlineView.classList.remove('hidden');\n this.attachmentsView.classList.add('hidden');\n break;\n case SidebarView.ATTACHMENTS:\n if (this.attachmentsButton.disabled) {\n return;\n }\n this.thumbnailButton.classList.remove('toggled');\n this.outlineButton.classList.remove('toggled');\n this.attachmentsButton.classList.add('toggled');\n\n this.thumbnailView.classList.add('hidden');\n this.outlineView.classList.add('hidden');\n this.attachmentsView.classList.remove('hidden');\n break;\n default:\n console.error('PDFSidebar_switchView: \"' + view +\n '\" is an unsupported value.');\n return;\n }\n // Update the active view *after* it has been validated above,\n // in order to prevent setting it to an invalid state.\n this.active = view | 0;\n\n if (forceOpen && !this.isOpen) {\n this.open();\n return; // NOTE: Opening will trigger rendering, and dispatch the event.\n }\n if (shouldForceRendering) {\n this._forceRendering();\n }\n if (isViewChanged) {\n this._dispatchEvent();\n }\n this._hideUINotification(this.active);\n }\n\n open() {\n if (this.isOpen) {\n return;\n }\n this.isOpen = true;\n this.toggleButton.classList.add('toggled');\n\n this.outerContainer.classList.add('sidebarMoving');\n this.outerContainer.classList.add('sidebarOpen');\n\n if (this.active === SidebarView.THUMBS) {\n this._updateThumbnailViewer();\n }\n this._forceRendering();\n this._dispatchEvent();\n\n this._hideUINotification(this.active);\n }\n\n close() {\n if (!this.isOpen) {\n return;\n }\n this.isOpen = false;\n this.toggleButton.classList.remove('toggled');\n\n this.outerContainer.classList.add('sidebarMoving');\n this.outerContainer.classList.remove('sidebarOpen');\n\n this._forceRendering();\n this._dispatchEvent();\n }\n\n toggle() {\n if (this.isOpen) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _dispatchEvent() {\n this.eventBus.dispatch('sidebarviewchanged', {\n source: this,\n view: this.visibleView,\n });\n }\n\n /**\n * @private\n */\n _forceRendering() {\n if (this.onToggled) {\n this.onToggled();\n } else { // Fallback\n this.pdfViewer.forceRendering();\n this.pdfThumbnailViewer.forceRendering();\n }\n }\n\n /**\n * @private\n */\n _updateThumbnailViewer() {\n let { pdfViewer, pdfThumbnailViewer, } = this;\n\n // Use the rendered pages to set the corresponding thumbnail images.\n let pagesCount = pdfViewer.pagesCount;\n for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {\n let pageView = pdfViewer.getPageView(pageIndex);\n if (pageView && pageView.renderingState === RenderingStates.FINISHED) {\n let thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);\n thumbnailView.setImage(pageView);\n }\n }\n pdfThumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber);\n }\n\n /**\n * @private\n */\n _showUINotification(view) {\n if (this.disableNotification) {\n return;\n }\n\n this.l10n.get('toggle_sidebar_notification.title', null,\n 'Toggle Sidebar (document contains outline/attachments)').\n then((msg) => {\n this.toggleButton.title = msg;\n });\n\n if (!this.isOpen) {\n // Only show the notification on the `toggleButton` if the sidebar is\n // currently closed, to avoid unnecessarily bothering the user.\n this.toggleButton.classList.add(UI_NOTIFICATION_CLASS);\n } else if (view === this.active) {\n // If the sidebar is currently open *and* the `view` is visible, do not\n // bother the user with a notification on the corresponding button.\n return;\n }\n\n switch (view) {\n case SidebarView.OUTLINE:\n this.outlineButton.classList.add(UI_NOTIFICATION_CLASS);\n break;\n case SidebarView.ATTACHMENTS:\n this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS);\n break;\n }\n }\n\n /**\n * @private\n */\n _hideUINotification(view) {\n if (this.disableNotification) {\n return;\n }\n\n let removeNotification = (view) => {\n switch (view) {\n case SidebarView.OUTLINE:\n this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS);\n break;\n case SidebarView.ATTACHMENTS:\n this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS);\n break;\n }\n };\n\n if (!this.isOpen && view !== null) {\n // Only hide the notifications when the sidebar is currently open,\n // or when it is being reset (i.e. `view === null`).\n return;\n }\n this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS);\n\n if (view !== null) {\n removeNotification(view);\n return;\n }\n for (view in SidebarView) { // Remove all sidebar notifications on reset.\n removeNotification(SidebarView[view]);\n }\n\n this.l10n.get('toggle_sidebar.title', null, 'Toggle Sidebar').\n then((msg) => {\n this.toggleButton.title = msg;\n });\n }\n\n /**\n * @private\n */\n _addEventListeners() {\n this.mainContainer.addEventListener('transitionend', (evt) => {\n if (evt.target === this.mainContainer) {\n this.outerContainer.classList.remove('sidebarMoving');\n }\n });\n\n // Buttons for switching views.\n this.thumbnailButton.addEventListener('click', () => {\n this.switchView(SidebarView.THUMBS);\n });\n\n this.outlineButton.addEventListener('click', () => {\n this.switchView(SidebarView.OUTLINE);\n });\n this.outlineButton.addEventListener('dblclick', () => {\n this.pdfOutlineViewer.toggleOutlineTree();\n });\n\n this.attachmentsButton.addEventListener('click', () => {\n this.switchView(SidebarView.ATTACHMENTS);\n });\n\n // Disable/enable views.\n this.eventBus.on('outlineloaded', (evt) => {\n let outlineCount = evt.outlineCount;\n\n this.outlineButton.disabled = !outlineCount;\n\n if (outlineCount) {\n this._showUINotification(SidebarView.OUTLINE);\n } else if (this.active === SidebarView.OUTLINE) {\n // If the outline view was opened during document load, switch away\n // from it if it turns out that the document has no outline.\n this.switchView(SidebarView.THUMBS);\n }\n });\n\n this.eventBus.on('attachmentsloaded', (evt) => {\n let attachmentsCount = evt.attachmentsCount;\n\n this.attachmentsButton.disabled = !attachmentsCount;\n\n if (attachmentsCount) {\n this._showUINotification(SidebarView.ATTACHMENTS);\n } else if (this.active === SidebarView.ATTACHMENTS) {\n // If the attachment view was opened during document load, switch away\n // from it if it turns out that the document has no attachments.\n this.switchView(SidebarView.THUMBS);\n }\n });\n\n // Update the thumbnailViewer, if visible, when exiting presentation mode.\n this.eventBus.on('presentationmodechanged', (evt) => {\n if (!evt.active && !evt.switchInProgress && this.isThumbnailViewVisible) {\n this._updateThumbnailViewer();\n }\n });\n }\n}\n\nexport {\n SidebarView,\n PDFSidebar,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_sidebar.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n createPromiseCapability, RenderingCancelledException\n} from 'pdfjs-lib';\nimport { getOutputScale, NullL10n } from './ui_utils';\nimport { RenderingStates } from './pdf_rendering_queue';\n\nconst MAX_NUM_SCALING_STEPS = 3;\nconst THUMBNAIL_CANVAS_BORDER_WIDTH = 1; // px\nconst THUMBNAIL_WIDTH = 98; // px\n\n/**\n * @typedef {Object} PDFThumbnailViewOptions\n * @property {HTMLDivElement} container - The viewer element.\n * @property {number} id - The thumbnail's unique ID (normally its number).\n * @property {PageViewport} defaultViewport - The page viewport.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {boolean} disableCanvasToImageConversion - (optional) Don't convert\n * the canvas thumbnails to images. This prevents `toDataURL` calls,\n * but increases the overall memory usage. The default value is `false`.\n * @property {IL10n} l10n - Localization service.\n */\n\nconst TempImageFactory = (function TempImageFactoryClosure() {\n let tempCanvasCache = null;\n\n return {\n getCanvas(width, height) {\n let tempCanvas = tempCanvasCache;\n if (!tempCanvas) {\n tempCanvas = document.createElement('canvas');\n tempCanvasCache = tempCanvas;\n }\n tempCanvas.width = width;\n tempCanvas.height = height;\n\n // Since this is a temporary canvas, we need to fill it with a white\n // background ourselves. `_getPageDrawContext` uses CSS rules for this.\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('MOZCENTRAL || FIREFOX || GENERIC')) {\n tempCanvas.mozOpaque = true;\n }\n\n let ctx = tempCanvas.getContext('2d', { alpha: false, });\n ctx.save();\n ctx.fillStyle = 'rgb(255, 255, 255)';\n ctx.fillRect(0, 0, width, height);\n ctx.restore();\n return tempCanvas;\n },\n\n destroyCanvas() {\n let tempCanvas = tempCanvasCache;\n if (tempCanvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n tempCanvas.width = 0;\n tempCanvas.height = 0;\n }\n tempCanvasCache = null;\n },\n };\n})();\n\n/**\n * @implements {IRenderableView}\n */\nclass PDFThumbnailView {\n /**\n * @param {PDFThumbnailViewOptions} options\n */\n constructor({ container, id, defaultViewport, linkService, renderingQueue,\n disableCanvasToImageConversion = false, l10n = NullL10n, }) {\n this.id = id;\n this.renderingId = 'thumbnail' + id;\n this.pageLabel = null;\n\n this.pdfPage = null;\n this.rotation = 0;\n this.viewport = defaultViewport;\n this.pdfPageRotate = defaultViewport.rotation;\n\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n\n this.renderTask = null;\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n this.disableCanvasToImageConversion = disableCanvasToImageConversion;\n\n this.pageWidth = this.viewport.width;\n this.pageHeight = this.viewport.height;\n this.pageRatio = this.pageWidth / this.pageHeight;\n\n this.canvasWidth = THUMBNAIL_WIDTH;\n this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0;\n this.scale = this.canvasWidth / this.pageWidth;\n\n this.l10n = l10n;\n\n let anchor = document.createElement('a');\n anchor.href = linkService.getAnchorUrl('#page=' + id);\n this.l10n.get('thumb_page_title', { page: id, }, 'Page {{page}}').\n then((msg) => {\n anchor.title = msg;\n });\n anchor.onclick = function() {\n linkService.page = id;\n return false;\n };\n this.anchor = anchor;\n\n let div = document.createElement('div');\n div.className = 'thumbnail';\n div.setAttribute('data-page-number', this.id);\n this.div = div;\n\n if (id === 1) {\n // Highlight the thumbnail of the first page when no page number is\n // specified (or exists in cache) when the document is loaded.\n div.classList.add('selected');\n }\n\n let ring = document.createElement('div');\n ring.className = 'thumbnailSelectionRing';\n let borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + 'px';\n ring.style.height = this.canvasHeight + borderAdjustment + 'px';\n this.ring = ring;\n\n div.appendChild(ring);\n anchor.appendChild(div);\n container.appendChild(anchor);\n }\n\n setPdfPage(pdfPage) {\n this.pdfPage = pdfPage;\n this.pdfPageRotate = pdfPage.rotate;\n let totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = pdfPage.getViewport(1, totalRotation);\n this.reset();\n }\n\n reset() {\n this.cancelRendering();\n\n this.pageWidth = this.viewport.width;\n this.pageHeight = this.viewport.height;\n this.pageRatio = this.pageWidth / this.pageHeight;\n\n this.canvasHeight = (this.canvasWidth / this.pageRatio) | 0;\n this.scale = (this.canvasWidth / this.pageWidth);\n\n this.div.removeAttribute('data-loaded');\n let ring = this.ring;\n let childNodes = ring.childNodes;\n for (let i = childNodes.length - 1; i >= 0; i--) {\n ring.removeChild(childNodes[i]);\n }\n let borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH;\n ring.style.width = this.canvasWidth + borderAdjustment + 'px';\n ring.style.height = this.canvasHeight + borderAdjustment + 'px';\n\n if (this.canvas) {\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n if (this.image) {\n this.image.removeAttribute('src');\n delete this.image;\n }\n }\n\n update(rotation) {\n if (typeof rotation !== 'undefined') {\n this.rotation = rotation;\n }\n let totalRotation = (this.rotation + this.pdfPageRotate) % 360;\n this.viewport = this.viewport.clone({\n scale: 1,\n rotation: totalRotation,\n });\n this.reset();\n }\n\n cancelRendering() {\n if (this.renderTask) {\n this.renderTask.cancel();\n this.renderTask = null;\n }\n this.renderingState = RenderingStates.INITIAL;\n this.resume = null;\n }\n\n /**\n * @private\n */\n _getPageDrawContext(noCtxScale = false) {\n let canvas = document.createElement('canvas');\n // Keep the no-thumbnail outline visible, i.e. `data-loaded === false`,\n // until rendering/image conversion is complete, to avoid display issues.\n this.canvas = canvas;\n\n if (typeof PDFJSDev === 'undefined' ||\n PDFJSDev.test('MOZCENTRAL || FIREFOX || GENERIC')) {\n canvas.mozOpaque = true;\n }\n let ctx = canvas.getContext('2d', { alpha: false, });\n let outputScale = getOutputScale(ctx);\n\n canvas.width = (this.canvasWidth * outputScale.sx) | 0;\n canvas.height = (this.canvasHeight * outputScale.sy) | 0;\n canvas.style.width = this.canvasWidth + 'px';\n canvas.style.height = this.canvasHeight + 'px';\n\n if (!noCtxScale && outputScale.scaled) {\n ctx.scale(outputScale.sx, outputScale.sy);\n }\n return ctx;\n }\n\n /**\n * @private\n */\n _convertCanvasToImage() {\n if (!this.canvas) {\n return;\n }\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n let id = this.renderingId;\n let className = 'thumbnailImage';\n\n if (this.disableCanvasToImageConversion) {\n this.canvas.id = id;\n this.canvas.className = className;\n this.l10n.get('thumb_page_canvas', { page: this.pageId, },\n 'Thumbnail of Page {{page}}').then((msg) => {\n this.canvas.setAttribute('aria-label', msg);\n });\n\n this.div.setAttribute('data-loaded', true);\n this.ring.appendChild(this.canvas);\n return;\n }\n let image = document.createElement('img');\n image.id = id;\n image.className = className;\n this.l10n.get('thumb_page_canvas', { page: this.pageId, },\n 'Thumbnail of Page {{page}}').\n then((msg) => {\n image.setAttribute('aria-label', msg);\n });\n\n image.style.width = this.canvasWidth + 'px';\n image.style.height = this.canvasHeight + 'px';\n\n image.src = this.canvas.toDataURL();\n this.image = image;\n\n this.div.setAttribute('data-loaded', true);\n this.ring.appendChild(image);\n\n // Zeroing the width and height causes Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this.canvas.width = 0;\n this.canvas.height = 0;\n delete this.canvas;\n }\n\n draw() {\n if (this.renderingState !== RenderingStates.INITIAL) {\n console.error('Must be in new state before drawing');\n return Promise.resolve(undefined);\n }\n this.renderingState = RenderingStates.RUNNING;\n\n let renderCapability = createPromiseCapability();\n let finishRenderTask = (error) => {\n // The renderTask may have been replaced by a new one, so only remove\n // the reference to the renderTask if it matches the one that is\n // triggering this callback.\n if (renderTask === this.renderTask) {\n this.renderTask = null;\n }\n\n if (((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('PDFJS_NEXT')) && error === 'cancelled') ||\n error instanceof RenderingCancelledException) {\n renderCapability.resolve(undefined);\n return;\n }\n\n this.renderingState = RenderingStates.FINISHED;\n this._convertCanvasToImage();\n\n if (!error) {\n renderCapability.resolve(undefined);\n } else {\n renderCapability.reject(error);\n }\n };\n\n let ctx = this._getPageDrawContext();\n let drawViewport = this.viewport.clone({ scale: this.scale, });\n let renderContinueCallback = (cont) => {\n if (!this.renderingQueue.isHighestPriority(this)) {\n this.renderingState = RenderingStates.PAUSED;\n this.resume = () => {\n this.renderingState = RenderingStates.RUNNING;\n cont();\n };\n return;\n }\n cont();\n };\n\n let renderContext = {\n canvasContext: ctx,\n viewport: drawViewport,\n };\n let renderTask = this.renderTask = this.pdfPage.render(renderContext);\n renderTask.onContinue = renderContinueCallback;\n\n renderTask.promise.then(function() {\n finishRenderTask(null);\n }, function(error) {\n finishRenderTask(error);\n });\n return renderCapability.promise;\n }\n\n setImage(pageView) {\n if (this.renderingState !== RenderingStates.INITIAL) {\n return;\n }\n let img = pageView.canvas;\n if (!img) {\n return;\n }\n if (!this.pdfPage) {\n this.setPdfPage(pageView.pdfPage);\n }\n\n this.renderingState = RenderingStates.FINISHED;\n\n let ctx = this._getPageDrawContext(true);\n let canvas = ctx.canvas;\n if (img.width <= 2 * canvas.width) {\n ctx.drawImage(img, 0, 0, img.width, img.height,\n 0, 0, canvas.width, canvas.height);\n this._convertCanvasToImage();\n return;\n }\n\n // drawImage does an awful job of rescaling the image, doing it gradually.\n let reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS;\n let reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS;\n let reducedImage = TempImageFactory.getCanvas(reducedWidth,\n reducedHeight);\n let reducedImageCtx = reducedImage.getContext('2d');\n\n while (reducedWidth > img.width || reducedHeight > img.height) {\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n reducedImageCtx.drawImage(img, 0, 0, img.width, img.height,\n 0, 0, reducedWidth, reducedHeight);\n while (reducedWidth > 2 * canvas.width) {\n reducedImageCtx.drawImage(reducedImage,\n 0, 0, reducedWidth, reducedHeight,\n 0, 0, reducedWidth >> 1, reducedHeight >> 1);\n reducedWidth >>= 1;\n reducedHeight >>= 1;\n }\n ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight,\n 0, 0, canvas.width, canvas.height);\n this._convertCanvasToImage();\n }\n\n get pageId() {\n return (this.pageLabel !== null ? this.pageLabel : this.id);\n }\n\n /**\n * @param {string|null} label\n */\n setPageLabel(label) {\n this.pageLabel = (typeof label === 'string' ? label : null);\n\n this.l10n.get('thumb_page_title', { page: this.pageId, },\n 'Page {{page}}').then((msg) => {\n this.anchor.title = msg;\n });\n\n if (this.renderingState !== RenderingStates.FINISHED) {\n return;\n }\n\n this.l10n.get('thumb_page_canvas', { page: this.pageId, },\n 'Thumbnail of Page {{page}}').then((ariaLabel) => {\n if (this.image) {\n this.image.setAttribute('aria-label', ariaLabel);\n } else if (this.disableCanvasToImageConversion && this.canvas) {\n this.canvas.setAttribute('aria-label', ariaLabel);\n }\n });\n }\n\n static cleanup() {\n TempImageFactory.destroyCanvas();\n }\n}\n\nexport {\n PDFThumbnailView,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_thumbnail_view.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n getVisibleElements, NullL10n, scrollIntoView, watchScroll\n} from './ui_utils';\nimport { PDFThumbnailView } from './pdf_thumbnail_view';\n\nconst THUMBNAIL_SCROLL_MARGIN = -19;\n\n/**\n * @typedef {Object} PDFThumbnailViewerOptions\n * @property {HTMLDivElement} container - The container for the thumbnail\n * elements.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {PDFRenderingQueue} renderingQueue - The rendering queue object.\n * @property {IL10n} l10n - Localization service.\n */\n\n/**\n * Viewer control to display thumbnails for pages in a PDF document.\n *\n * @implements {IRenderableView}\n */\nclass PDFThumbnailViewer {\n /**\n * @param {PDFThumbnailViewerOptions} options\n */\n constructor({ container, linkService, renderingQueue, l10n = NullL10n, }) {\n this.container = container;\n this.linkService = linkService;\n this.renderingQueue = renderingQueue;\n this.l10n = l10n;\n\n this.scroll = watchScroll(this.container, this._scrollUpdated.bind(this));\n this._resetView();\n }\n\n /**\n * @private\n */\n _scrollUpdated() {\n this.renderingQueue.renderHighestPriority();\n }\n\n getThumbnail(index) {\n return this._thumbnails[index];\n }\n\n /**\n * @private\n */\n _getVisibleThumbs() {\n return getVisibleElements(this.container, this._thumbnails);\n }\n\n scrollThumbnailIntoView(page) {\n let selected = document.querySelector('.thumbnail.selected');\n if (selected) {\n selected.classList.remove('selected');\n }\n let thumbnail = document.querySelector(\n 'div.thumbnail[data-page-number=\"' + page + '\"]');\n if (thumbnail) {\n thumbnail.classList.add('selected');\n }\n let visibleThumbs = this._getVisibleThumbs();\n let numVisibleThumbs = visibleThumbs.views.length;\n\n // If the thumbnail isn't currently visible, scroll it into view.\n if (numVisibleThumbs > 0) {\n let first = visibleThumbs.first.id;\n // Account for only one thumbnail being visible.\n let last = (numVisibleThumbs > 1 ? visibleThumbs.last.id : first);\n if (page <= first || page >= last) {\n scrollIntoView(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN, });\n }\n }\n }\n\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n set pagesRotation(rotation) {\n if (!(typeof rotation === 'number' && rotation % 90 === 0)) {\n throw new Error('Invalid thumbnails rotation angle.');\n }\n if (!this.pdfDocument) {\n return;\n }\n this._pagesRotation = rotation;\n\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n this._thumbnails[i].update(rotation);\n }\n }\n\n cleanup() {\n PDFThumbnailView.cleanup();\n }\n\n /**\n * @private\n */\n _resetView() {\n this._thumbnails = [];\n this._pageLabels = null;\n this._pagesRotation = 0;\n this._pagesRequests = [];\n\n // Remove the thumbnails from the DOM.\n this.container.textContent = '';\n }\n\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n\n pdfDocument.getPage(1).then((firstPage) => {\n let pagesCount = pdfDocument.numPages;\n let viewport = firstPage.getViewport(1.0);\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n let thumbnail = new PDFThumbnailView({\n container: this.container,\n id: pageNum,\n defaultViewport: viewport.clone(),\n linkService: this.linkService,\n renderingQueue: this.renderingQueue,\n disableCanvasToImageConversion: false,\n l10n: this.l10n,\n });\n this._thumbnails.push(thumbnail);\n }\n }).catch((reason) => {\n console.error('Unable to initialize thumbnail viewer', reason);\n });\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n if (this._thumbnails[i]) {\n this._thumbnails[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (!(labels instanceof Array &&\n this.pdfDocument.numPages === labels.length)) {\n this._pageLabels = null;\n console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.');\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFThumbnailView` instances.\n for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {\n let label = this._pageLabels && this._pageLabels[i];\n this._thumbnails[i].setPageLabel(label);\n }\n }\n\n /**\n * @param {PDFThumbnailView} thumbView\n * @returns {PDFPage}\n * @private\n */\n _ensurePdfPageLoaded(thumbView) {\n if (thumbView.pdfPage) {\n return Promise.resolve(thumbView.pdfPage);\n }\n let pageNumber = thumbView.id;\n if (this._pagesRequests[pageNumber]) {\n return this._pagesRequests[pageNumber];\n }\n let promise = this.pdfDocument.getPage(pageNumber).then((pdfPage) => {\n thumbView.setPdfPage(pdfPage);\n this._pagesRequests[pageNumber] = null;\n return pdfPage;\n }).catch((reason) => {\n console.error('Unable to get page for thumb view', reason);\n // Page error -- there is nothing can be done.\n this._pagesRequests[pageNumber] = null;\n });\n this._pagesRequests[pageNumber] = promise;\n return promise;\n }\n\n forceRendering() {\n let visibleThumbs = this._getVisibleThumbs();\n let thumbView = this.renderingQueue.getHighestPriority(visibleThumbs,\n this._thumbnails,\n this.scroll.down);\n if (thumbView) {\n this._ensurePdfPageLoaded(thumbView).then(() => {\n this.renderingQueue.renderView(thumbView);\n });\n return true;\n }\n return false;\n }\n}\n\nexport {\n PDFThumbnailViewer,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_thumbnail_viewer.js","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createPromiseCapability, PDFJS } from 'pdfjs-lib';\nimport {\n CSS_UNITS, DEFAULT_SCALE, DEFAULT_SCALE_VALUE, getVisibleElements,\n MAX_AUTO_SCALE, NullL10n, RendererType, SCROLLBAR_PADDING, scrollIntoView,\n UNKNOWN_SCALE, VERTICAL_PADDING, watchScroll\n} from './ui_utils';\nimport { PDFRenderingQueue, RenderingStates } from './pdf_rendering_queue';\nimport { AnnotationLayerBuilder } from './annotation_layer_builder';\nimport { getGlobalEventBus } from './dom_events';\nimport { PDFPageView } from './pdf_page_view';\nimport { SimpleLinkService } from './pdf_link_service';\nimport { TextLayerBuilder } from './text_layer_builder';\n\nconst PresentationModeState = {\n UNKNOWN: 0,\n NORMAL: 1,\n CHANGING: 2,\n FULLSCREEN: 3,\n};\n\nconst DEFAULT_CACHE_SIZE = 10;\n\n/**\n * @typedef {Object} PDFViewerOptions\n * @property {HTMLDivElement} container - The container for the viewer element.\n * @property {HTMLDivElement} viewer - (optional) The viewer element.\n * @property {EventBus} eventBus - The application event bus.\n * @property {IPDFLinkService} linkService - The navigation/linking service.\n * @property {DownloadManager} downloadManager - (optional) The download\n * manager component.\n * @property {PDFRenderingQueue} renderingQueue - (optional) The rendering\n * queue object.\n * @property {boolean} removePageBorders - (optional) Removes the border shadow\n * around the pages. The default is false.\n * @property {boolean} enhanceTextSelection - (optional) Enables the improved\n * text selection behaviour. The default is `false`.\n * @property {boolean} renderInteractiveForms - (optional) Enables rendering of\n * interactive form elements. The default is `false`.\n * @property {boolean} enablePrintAutoRotate - (optional) Enables automatic\n * rotation of pages whose orientation differ from the first page upon\n * printing. The default is `false`.\n * @property {string} renderer - 'canvas' or 'svg'. The default is 'canvas'.\n * @property {IL10n} l10n - Localization service.\n */\n\nfunction PDFPageViewBuffer(size) {\n let data = [];\n this.push = function cachePush(view) {\n let i = data.indexOf(view);\n if (i >= 0) {\n data.splice(i, 1);\n }\n data.push(view);\n if (data.length > size) {\n data.shift().destroy();\n }\n };\n this.resize = function (newSize) {\n size = newSize;\n while (data.length > size) {\n data.shift().destroy();\n }\n };\n}\n\nfunction isSameScale(oldScale, newScale) {\n if (newScale === oldScale) {\n return true;\n }\n if (Math.abs(newScale - oldScale) < 1e-15) {\n // Prevent unnecessary re-rendering of all pages when the scale\n // changes only because of limited numerical precision.\n return true;\n }\n return false;\n}\n\nfunction isPortraitOrientation(size) {\n return size.width <= size.height;\n}\n\n/**\n * Simple viewer control to display PDF content/pages.\n * @implements {IRenderableView}\n */\nclass PDFViewer {\n /**\n * @param {PDFViewerOptions} options\n */\n constructor(options) {\n this.container = options.container;\n this.viewer = options.viewer || options.container.firstElementChild;\n this.eventBus = options.eventBus || getGlobalEventBus();\n this.linkService = options.linkService || new SimpleLinkService();\n this.downloadManager = options.downloadManager || null;\n this.removePageBorders = options.removePageBorders || false;\n this.enhanceTextSelection = options.enhanceTextSelection || false;\n this.renderInteractiveForms = options.renderInteractiveForms || false;\n this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;\n this.renderer = options.renderer || RendererType.CANVAS;\n this.l10n = options.l10n || NullL10n;\n\n this.defaultRenderingQueue = !options.renderingQueue;\n if (this.defaultRenderingQueue) {\n // Custom rendering queue is not specified, using default one\n this.renderingQueue = new PDFRenderingQueue();\n this.renderingQueue.setViewer(this);\n } else {\n this.renderingQueue = options.renderingQueue;\n }\n\n this.scroll = watchScroll(this.container, this._scrollUpdate.bind(this));\n this.presentationModeState = PresentationModeState.UNKNOWN;\n this._resetView();\n\n if (this.removePageBorders) {\n this.viewer.classList.add('removePageBorders');\n }\n }\n\n get pagesCount() {\n return this._pages.length;\n }\n\n getPageView(index) {\n return this._pages[index];\n }\n\n /**\n * @returns {boolean} true if all {PDFPageView} objects are initialized.\n */\n get pageViewsReady() {\n return this._pageViewsReady;\n }\n\n /**\n * @returns {number}\n */\n get currentPageNumber() {\n return this._currentPageNumber;\n }\n\n /**\n * @param {number} val - The page number.\n */\n set currentPageNumber(val) {\n if ((val | 0) !== val) { // Ensure that `val` is an integer.\n throw new Error('Invalid page number.');\n }\n if (!this.pdfDocument) {\n return;\n }\n // The intent can be to just reset a scroll position and/or scale.\n this._setCurrentPageNumber(val, /* resetCurrentPageView = */ true);\n }\n\n /**\n * @private\n */\n _setCurrentPageNumber(val, resetCurrentPageView = false) {\n if (this._currentPageNumber === val) {\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n return;\n }\n\n if (!(0 < val && val <= this.pagesCount)) {\n console.error(\n `PDFViewer._setCurrentPageNumber: \"${val}\" is out of bounds.`);\n return;\n }\n\n let arg = {\n source: this,\n pageNumber: val,\n pageLabel: this._pageLabels && this._pageLabels[val - 1],\n };\n this._currentPageNumber = val;\n this.eventBus.dispatch('pagechanging', arg);\n this.eventBus.dispatch('pagechange', arg);\n\n if (resetCurrentPageView) {\n this._resetCurrentPageView();\n }\n }\n\n /**\n * @returns {string|null} Returns the current page label,\n * or `null` if no page labels exist.\n */\n get currentPageLabel() {\n return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];\n }\n\n /**\n * @param {string} val - The page label.\n */\n set currentPageLabel(val) {\n let pageNumber = val | 0; // Fallback page number.\n if (this._pageLabels) {\n let i = this._pageLabels.indexOf(val);\n if (i >= 0) {\n pageNumber = i + 1;\n }\n }\n this.currentPageNumber = pageNumber;\n }\n\n /**\n * @returns {number}\n */\n get currentScale() {\n return this._currentScale !== UNKNOWN_SCALE ? this._currentScale :\n DEFAULT_SCALE;\n }\n\n /**\n * @param {number} val - Scale of the pages in percents.\n */\n set currentScale(val) {\n if (isNaN(val)) {\n throw new Error('Invalid numeric scale');\n }\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @returns {string}\n */\n get currentScaleValue() {\n return this._currentScaleValue;\n }\n\n /**\n * @param val - The scale of the pages (in percent or predefined value).\n */\n set currentScaleValue(val) {\n if (!this.pdfDocument) {\n return;\n }\n this._setScale(val, false);\n }\n\n /**\n * @returns {number}\n */\n get pagesRotation() {\n return this._pagesRotation;\n }\n\n /**\n * @param {number} rotation - The rotation of the pages (0, 90, 180, 270).\n */\n set pagesRotation(rotation) {\n if (!(typeof rotation === 'number' && rotation % 90 === 0)) {\n throw new Error('Invalid pages rotation angle.');\n }\n if (!this.pdfDocument) {\n return;\n }\n this._pagesRotation = rotation;\n\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n let pageView = this._pages[i];\n pageView.update(pageView.scale, rotation);\n }\n\n this._setScale(this._currentScaleValue, true);\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n /**\n * @param pdfDocument {PDFDocument}\n */\n setDocument(pdfDocument) {\n if (this.pdfDocument) {\n this._cancelRendering();\n this._resetView();\n }\n\n this.pdfDocument = pdfDocument;\n if (!pdfDocument) {\n return;\n }\n let pagesCount = pdfDocument.numPages;\n\n let pagesCapability = createPromiseCapability();\n this.pagesPromise = pagesCapability.promise;\n\n pagesCapability.promise.then(() => {\n this._pageViewsReady = true;\n this.eventBus.dispatch('pagesloaded', {\n source: this,\n pagesCount,\n });\n });\n\n let isOnePageRenderedResolved = false;\n let onePageRenderedCapability = createPromiseCapability();\n this.onePageRendered = onePageRenderedCapability.promise;\n\n let bindOnAfterAndBeforeDraw = (pageView) => {\n pageView.onBeforeDraw = () => {\n // Add the page to the buffer at the start of drawing. That way it can\n // be evicted from the buffer and destroyed even if we pause its\n // rendering.\n this._buffer.push(pageView);\n };\n pageView.onAfterDraw = () => {\n if (!isOnePageRenderedResolved) {\n isOnePageRenderedResolved = true;\n onePageRenderedCapability.resolve();\n }\n };\n };\n\n let firstPagePromise = pdfDocument.getPage(1);\n this.firstPagePromise = firstPagePromise;\n\n // Fetch a single page so we can get a viewport that will be the default\n // viewport for all pages\n firstPagePromise.then((pdfPage) => {\n let scale = this.currentScale;\n let viewport = pdfPage.getViewport(scale * CSS_UNITS);\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n let textLayerFactory = null;\n if (!PDFJS.disableTextLayer) {\n textLayerFactory = this;\n }\n let pageView = new PDFPageView({\n container: this.viewer,\n eventBus: this.eventBus,\n id: pageNum,\n scale,\n defaultViewport: viewport.clone(),\n renderingQueue: this.renderingQueue,\n textLayerFactory,\n annotationLayerFactory: this,\n enhanceTextSelection: this.enhanceTextSelection,\n renderInteractiveForms: this.renderInteractiveForms,\n renderer: this.renderer,\n l10n: this.l10n,\n });\n bindOnAfterAndBeforeDraw(pageView);\n this._pages.push(pageView);\n }\n\n // Fetch all the pages since the viewport is needed before printing\n // starts to create the correct size canvas. Wait until one page is\n // rendered so we don't tie up too many resources early on.\n onePageRenderedCapability.promise.then(() => {\n if (PDFJS.disableAutoFetch) {\n // XXX: Printing is semi-broken with auto fetch disabled.\n pagesCapability.resolve();\n return;\n }\n let getPagesLeft = pagesCount;\n for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {\n pdfDocument.getPage(pageNum).then((pdfPage) => {\n let pageView = this._pages[pageNum - 1];\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this.linkService.cachePageRef(pageNum, pdfPage.ref);\n if (--getPagesLeft === 0) {\n pagesCapability.resolve();\n }\n }, (reason) => {\n console.error(`Unable to get page ${pageNum} to initialize viewer`,\n reason);\n if (--getPagesLeft === 0) {\n pagesCapability.resolve();\n }\n });\n }\n });\n\n this.eventBus.dispatch('pagesinit', { source: this, });\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n\n if (this.findController) {\n this.findController.resolveFirstPage();\n }\n }).catch((reason) => {\n console.error('Unable to initialize viewer', reason);\n });\n }\n\n /**\n * @param {Array|null} labels\n */\n setPageLabels(labels) {\n if (!this.pdfDocument) {\n return;\n }\n if (!labels) {\n this._pageLabels = null;\n } else if (!(labels instanceof Array &&\n this.pdfDocument.numPages === labels.length)) {\n this._pageLabels = null;\n console.error('PDFViewer.setPageLabels: Invalid page labels.');\n } else {\n this._pageLabels = labels;\n }\n // Update all the `PDFPageView` instances.\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n let pageView = this._pages[i];\n let label = this._pageLabels && this._pageLabels[i];\n pageView.setPageLabel(label);\n }\n }\n\n _resetView() {\n this._pages = [];\n this._currentPageNumber = 1;\n this._currentScale = UNKNOWN_SCALE;\n this._currentScaleValue = null;\n this._pageLabels = null;\n this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE);\n this._location = null;\n this._pagesRotation = 0;\n this._pagesRequests = [];\n this._pageViewsReady = false;\n\n // Remove the pages from the DOM.\n this.viewer.textContent = '';\n }\n\n _scrollUpdate() {\n if (this.pagesCount === 0) {\n return;\n }\n this.update();\n }\n\n _setScaleDispatchEvent(newScale, newValue, preset = false) {\n let arg = {\n source: this,\n scale: newScale,\n presetValue: preset ? newValue : undefined,\n };\n this.eventBus.dispatch('scalechanging', arg);\n this.eventBus.dispatch('scalechange', arg);\n }\n\n _setScaleUpdatePages(newScale, newValue, noScroll = false, preset = false) {\n this._currentScaleValue = newValue.toString();\n\n if (isSameScale(this._currentScale, newScale)) {\n if (preset) {\n this._setScaleDispatchEvent(newScale, newValue, true);\n }\n return;\n }\n\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n this._pages[i].update(newScale);\n }\n this._currentScale = newScale;\n\n if (!noScroll) {\n let page = this._currentPageNumber, dest;\n if (this._location && !PDFJS.ignoreCurrentPositionOnZoom &&\n !(this.isInPresentationMode || this.isChangingPresentationMode)) {\n page = this._location.pageNumber;\n dest = [null, { name: 'XYZ', }, this._location.left,\n this._location.top, null];\n }\n this.scrollPageIntoView({\n pageNumber: page,\n destArray: dest,\n allowNegativeOffset: true,\n });\n }\n\n this._setScaleDispatchEvent(newScale, newValue, preset);\n\n if (this.defaultRenderingQueue) {\n this.update();\n }\n }\n\n _setScale(value, noScroll = false) {\n let scale = parseFloat(value);\n\n if (scale > 0) {\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ false);\n } else {\n let currentPage = this._pages[this._currentPageNumber - 1];\n if (!currentPage) {\n return;\n }\n let hPadding = (this.isInPresentationMode || this.removePageBorders) ?\n 0 : SCROLLBAR_PADDING;\n let vPadding = (this.isInPresentationMode || this.removePageBorders) ?\n 0 : VERTICAL_PADDING;\n let pageWidthScale = (this.container.clientWidth - hPadding) /\n currentPage.width * currentPage.scale;\n let pageHeightScale = (this.container.clientHeight - vPadding) /\n currentPage.height * currentPage.scale;\n switch (value) {\n case 'page-actual':\n scale = 1;\n break;\n case 'page-width':\n scale = pageWidthScale;\n break;\n case 'page-height':\n scale = pageHeightScale;\n break;\n case 'page-fit':\n scale = Math.min(pageWidthScale, pageHeightScale);\n break;\n case 'auto':\n let isLandscape = (currentPage.width > currentPage.height);\n // For pages in landscape mode, fit the page height to the viewer\n // *unless* the page would thus become too wide to fit horizontally.\n let horizontalScale = isLandscape ?\n Math.min(pageHeightScale, pageWidthScale) : pageWidthScale;\n scale = Math.min(MAX_AUTO_SCALE, horizontalScale);\n break;\n default:\n console.error(\n `PDFViewer._setScale: \"${value}\" is an unknown zoom value.`);\n return;\n }\n this._setScaleUpdatePages(scale, value, noScroll, /* preset = */ true);\n }\n }\n\n /**\n * Refreshes page view: scrolls to the current page and updates the scale.\n * @private\n */\n _resetCurrentPageView() {\n if (this.isInPresentationMode) {\n // Fixes the case when PDF has different page sizes.\n this._setScale(this._currentScaleValue, true);\n }\n\n let pageView = this._pages[this._currentPageNumber - 1];\n scrollIntoView(pageView.div);\n }\n\n /**\n * @typedef ScrollPageIntoViewParameters\n * @property {number} pageNumber - The page number.\n * @property {Array} destArray - (optional) The original PDF destination\n * array, in the format: \n * @property {boolean} allowNegativeOffset - (optional) Allow negative page\n * offsets. The default value is `false`.\n */\n\n /**\n * Scrolls page into view.\n * @param {ScrollPageIntoViewParameters} params\n */\n scrollPageIntoView(params) {\n if (!this.pdfDocument) {\n return;\n }\n if ((typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) &&\n (arguments.length > 1 || typeof params === 'number')) {\n console.warn('Call of scrollPageIntoView() with obsolete signature.');\n let paramObj = {};\n if (typeof params === 'number') {\n paramObj.pageNumber = params; // pageNumber argument was found.\n }\n if (arguments[1] instanceof Array) {\n paramObj.destArray = arguments[1]; // destArray argument was found.\n }\n params = paramObj;\n }\n let pageNumber = params.pageNumber || 0;\n let dest = params.destArray || null;\n let allowNegativeOffset = params.allowNegativeOffset || false;\n\n if (this.isInPresentationMode || !dest) {\n this._setCurrentPageNumber(pageNumber, /* resetCurrentPageView = */ true);\n return;\n }\n\n let pageView = this._pages[pageNumber - 1];\n if (!pageView) {\n console.error(\n 'PDFViewer.scrollPageIntoView: Invalid \"pageNumber\" parameter.');\n return;\n }\n let x = 0, y = 0;\n let width = 0, height = 0, widthScale, heightScale;\n let changeOrientation = (pageView.rotation % 180 === 0 ? false : true);\n let pageWidth = (changeOrientation ? pageView.height : pageView.width) /\n pageView.scale / CSS_UNITS;\n let pageHeight = (changeOrientation ? pageView.width : pageView.height) /\n pageView.scale / CSS_UNITS;\n let scale = 0;\n switch (dest[1].name) {\n case 'XYZ':\n x = dest[2];\n y = dest[3];\n scale = dest[4];\n // If x and/or y coordinates are not supplied, default to\n // _top_ left of the page (not the obvious bottom left,\n // since aligning the bottom of the intended page with the\n // top of the window is rarely helpful).\n x = x !== null ? x : 0;\n y = y !== null ? y : pageHeight;\n break;\n case 'Fit':\n case 'FitB':\n scale = 'page-fit';\n break;\n case 'FitH':\n case 'FitBH':\n y = dest[2];\n scale = 'page-width';\n // According to the PDF spec, section 12.3.2.2, a `null` value in the\n // parameter should maintain the position relative to the new page.\n if (y === null && this._location) {\n x = this._location.left;\n y = this._location.top;\n }\n break;\n case 'FitV':\n case 'FitBV':\n x = dest[2];\n width = pageWidth;\n height = pageHeight;\n scale = 'page-height';\n break;\n case 'FitR':\n x = dest[2];\n y = dest[3];\n width = dest[4] - x;\n height = dest[5] - y;\n let hPadding = this.removePageBorders ? 0 : SCROLLBAR_PADDING;\n let vPadding = this.removePageBorders ? 0 : VERTICAL_PADDING;\n\n widthScale = (this.container.clientWidth - hPadding) /\n width / CSS_UNITS;\n heightScale = (this.container.clientHeight - vPadding) /\n height / CSS_UNITS;\n scale = Math.min(Math.abs(widthScale), Math.abs(heightScale));\n break;\n default:\n console.error(`PDFViewer.scrollPageIntoView: \"${dest[1].name}\" ` +\n 'is not a valid destination type.');\n return;\n }\n\n if (scale && scale !== this._currentScale) {\n this.currentScaleValue = scale;\n } else if (this._currentScale === UNKNOWN_SCALE) {\n this.currentScaleValue = DEFAULT_SCALE_VALUE;\n }\n\n if (scale === 'page-fit' && !dest[4]) {\n scrollIntoView(pageView.div);\n return;\n }\n\n let boundingRect = [\n pageView.viewport.convertToViewportPoint(x, y),\n pageView.viewport.convertToViewportPoint(x + width, y + height)\n ];\n let left = Math.min(boundingRect[0][0], boundingRect[1][0]);\n let top = Math.min(boundingRect[0][1], boundingRect[1][1]);\n\n if (!allowNegativeOffset) {\n // Some bad PDF generators will create destinations with e.g. top values\n // that exceeds the page height. Ensure that offsets are not negative,\n // to prevent a previous page from becoming visible (fixes bug 874482).\n left = Math.max(left, 0);\n top = Math.max(top, 0);\n }\n scrollIntoView(pageView.div, { left, top, });\n }\n\n _updateLocation(firstPage) {\n let currentScale = this._currentScale;\n let currentScaleValue = this._currentScaleValue;\n let normalizedScaleValue =\n parseFloat(currentScaleValue) === currentScale ?\n Math.round(currentScale * 10000) / 100 : currentScaleValue;\n\n let pageNumber = firstPage.id;\n let pdfOpenParams = '#page=' + pageNumber;\n pdfOpenParams += '&zoom=' + normalizedScaleValue;\n let currentPageView = this._pages[pageNumber - 1];\n let container = this.container;\n let topLeft = currentPageView.getPagePoint(\n (container.scrollLeft - firstPage.x),\n (container.scrollTop - firstPage.y));\n let intLeft = Math.round(topLeft[0]);\n let intTop = Math.round(topLeft[1]);\n pdfOpenParams += ',' + intLeft + ',' + intTop;\n\n this._location = {\n pageNumber,\n scale: normalizedScaleValue,\n top: intTop,\n left: intLeft,\n pdfOpenParams,\n };\n }\n\n update() {\n let visible = this._getVisiblePages();\n let visiblePages = visible.views;\n if (visiblePages.length === 0) {\n return;\n }\n\n let suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE,\n 2 * visiblePages.length + 1);\n this._buffer.resize(suggestedCacheSize);\n\n this.renderingQueue.renderHighestPriority(visible);\n\n let currentId = this._currentPageNumber;\n let firstPage = visible.first;\n let stillFullyVisible = false;\n\n for (let i = 0, ii = visiblePages.length; i < ii; ++i) {\n let page = visiblePages[i];\n\n if (page.percent < 100) {\n break;\n }\n if (page.id === currentId) {\n stillFullyVisible = true;\n break;\n }\n }\n\n if (!stillFullyVisible) {\n currentId = visiblePages[0].id;\n }\n\n if (!this.isInPresentationMode) {\n this._setCurrentPageNumber(currentId);\n }\n\n this._updateLocation(firstPage);\n\n this.eventBus.dispatch('updateviewarea', {\n source: this,\n location: this._location,\n });\n }\n\n containsElement(element) {\n return this.container.contains(element);\n }\n\n focus() {\n this.container.focus();\n }\n\n get isInPresentationMode() {\n return this.presentationModeState === PresentationModeState.FULLSCREEN;\n }\n\n get isChangingPresentationMode() {\n return this.presentationModeState === PresentationModeState.CHANGING;\n }\n\n get isHorizontalScrollbarEnabled() {\n return (this.isInPresentationMode ?\n false : (this.container.scrollWidth > this.container.clientWidth));\n }\n\n _getVisiblePages() {\n if (!this.isInPresentationMode) {\n return getVisibleElements(this.container, this._pages, true);\n }\n // The algorithm in getVisibleElements doesn't work in all browsers and\n // configurations when presentation mode is active.\n let visible = [];\n let currentPage = this._pages[this._currentPageNumber - 1];\n visible.push({ id: currentPage.id, view: currentPage, });\n return { first: currentPage, last: currentPage, views: visible, };\n }\n\n cleanup() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i] &&\n this._pages[i].renderingState !== RenderingStates.FINISHED) {\n this._pages[i].reset();\n }\n }\n }\n\n /**\n * @private\n */\n _cancelRendering() {\n for (let i = 0, ii = this._pages.length; i < ii; i++) {\n if (this._pages[i]) {\n this._pages[i].cancelRendering();\n }\n }\n }\n\n /**\n * @param {PDFPageView} pageView\n * @returns {Promise} Returns a promise containing a {PDFPageProxy} object.\n * @private\n */\n _ensurePdfPageLoaded(pageView) {\n if (pageView.pdfPage) {\n return Promise.resolve(pageView.pdfPage);\n }\n let pageNumber = pageView.id;\n if (this._pagesRequests[pageNumber]) {\n return this._pagesRequests[pageNumber];\n }\n let promise = this.pdfDocument.getPage(pageNumber).then((pdfPage) => {\n if (!pageView.pdfPage) {\n pageView.setPdfPage(pdfPage);\n }\n this._pagesRequests[pageNumber] = null;\n return pdfPage;\n }).catch((reason) => {\n console.error('Unable to get page for page view', reason);\n // Page error -- there is nothing can be done.\n this._pagesRequests[pageNumber] = null;\n });\n this._pagesRequests[pageNumber] = promise;\n return promise;\n }\n\n forceRendering(currentlyVisiblePages) {\n let visiblePages = currentlyVisiblePages || this._getVisiblePages();\n let pageView = this.renderingQueue.getHighestPriority(visiblePages,\n this._pages,\n this.scroll.down);\n if (pageView) {\n this._ensurePdfPageLoaded(pageView).then(() => {\n this.renderingQueue.renderView(pageView);\n });\n return true;\n }\n return false;\n }\n\n getPageTextContent(pageIndex) {\n return this.pdfDocument.getPage(pageIndex + 1).then(function(page) {\n return page.getTextContent({\n normalizeWhitespace: true,\n });\n });\n }\n\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(textLayerDiv, pageIndex, viewport,\n enhanceTextSelection = false) {\n return new TextLayerBuilder({\n textLayerDiv,\n eventBus: this.eventBus,\n pageIndex,\n viewport,\n findController: this.isInPresentationMode ? null : this.findController,\n enhanceTextSelection: this.isInPresentationMode ? false :\n enhanceTextSelection,\n });\n }\n\n /**\n * @param {HTMLDivElement} pageDiv\n * @param {PDFPage} pdfPage\n * @param {boolean} renderInteractiveForms\n * @param {IL10n} l10n\n * @returns {AnnotationLayerBuilder}\n */\n createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms = false,\n l10n = NullL10n) {\n return new AnnotationLayerBuilder({\n pageDiv,\n pdfPage,\n renderInteractiveForms,\n linkService: this.linkService,\n downloadManager: this.downloadManager,\n l10n,\n });\n }\n\n setFindController(findController) {\n this.findController = findController;\n }\n\n /**\n * @returns {boolean} Whether all pages of the PDF document have identical\n * widths and heights.\n */\n get hasEqualPageSizes() {\n let firstPageView = this._pages[0];\n for (let i = 1, ii = this._pages.length; i < ii; ++i) {\n let pageView = this._pages[i];\n if (pageView.width !== firstPageView.width ||\n pageView.height !== firstPageView.height) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Returns sizes of the pages.\n * @returns {Array} Array of objects with width/height/rotation fields.\n */\n getPagesOverview() {\n let pagesOverview = this._pages.map(function(pageView) {\n let viewport = pageView.pdfPage.getViewport(1);\n return {\n width: viewport.width,\n height: viewport.height,\n rotation: viewport.rotation,\n };\n });\n if (!this.enablePrintAutoRotate) {\n return pagesOverview;\n }\n let isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]);\n return pagesOverview.map(function (size) {\n if (isFirstPagePortrait === isPortraitOrientation(size)) {\n return size;\n }\n return {\n width: size.height,\n height: size.width,\n rotation: (size.rotation + 90) % 360,\n };\n });\n }\n}\n\nexport {\n PresentationModeState,\n PDFViewer,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/pdf_viewer.js","/* Copyright 2013 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { cloneObj } from './ui_utils';\n\nvar defaultPreferences = null;\nfunction getDefaultPreferences() {\n if (!defaultPreferences) {\n if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PRODUCTION')) {\n defaultPreferences = Promise.resolve(\n PDFJSDev.json('$ROOT/web/default_preferences.json'));\n } else {\n defaultPreferences = new Promise(function (resolve) {\n var xhr = new XMLHttpRequest();\n xhr.open('GET', 'default_preferences.json');\n xhr.onload = xhr.onerror = function loaded() {\n try {\n resolve(JSON.parse(xhr.responseText));\n } catch (e) {\n console.error(`Unable to load default preferences: ${e}`);\n resolve({});\n }\n };\n xhr.send();\n });\n }\n }\n return defaultPreferences;\n}\n\n/**\n * BasePreferences - Abstract base class for storing persistent settings.\n * Used for settings that should be applied to all opened documents,\n * or every time the viewer is loaded.\n */\nclass BasePreferences {\n constructor() {\n if (this.constructor === BasePreferences) {\n throw new Error('Cannot initialize BasePreferences.');\n }\n this.prefs = null;\n\n this._initializedPromise = getDefaultPreferences().then((defaults) => {\n Object.defineProperty(this, 'defaults', {\n value: Object.freeze(defaults),\n writable: false,\n enumerable: true,\n configurable: false,\n });\n\n this.prefs = cloneObj(defaults);\n return this._readFromStorage(defaults);\n }).then((prefObj) => {\n if (prefObj) {\n this.prefs = prefObj;\n }\n });\n }\n\n /**\n * Stub function for writing preferences to storage.\n * @param {Object} prefObj The preferences that should be written to storage.\n * @return {Promise} A promise that is resolved when the preference values\n * have been written.\n */\n _writeToStorage(prefObj) {\n return Promise.reject(new Error('Not implemented: _writeToStorage'));\n }\n\n /**\n * Stub function for reading preferences from storage.\n * @param {Object} prefObj The preferences that should be read from storage.\n * @return {Promise} A promise that is resolved with an {Object} containing\n * the preferences that have been read.\n */\n _readFromStorage(prefObj) {\n return Promise.reject(new Error('Not implemented: _readFromStorage'));\n }\n\n /**\n * Reset the preferences to their default values and update storage.\n * @return {Promise} A promise that is resolved when the preference values\n * have been reset.\n */\n reset() {\n return this._initializedPromise.then(() => {\n this.prefs = cloneObj(this.defaults);\n return this._writeToStorage(this.defaults);\n });\n }\n\n /**\n * Replace the current preference values with the ones from storage.\n * @return {Promise} A promise that is resolved when the preference values\n * have been updated.\n */\n reload() {\n return this._initializedPromise.then(() => {\n return this._readFromStorage(this.defaults);\n }).then((prefObj) => {\n if (prefObj) {\n this.prefs = prefObj;\n }\n });\n }\n\n /**\n * Set the value of a preference.\n * @param {string} name The name of the preference that should be changed.\n * @param {boolean|number|string} value The new value of the preference.\n * @return {Promise} A promise that is resolved when the value has been set,\n * provided that the preference exists and the types match.\n */\n set(name, value) {\n return this._initializedPromise.then(() => {\n if (this.defaults[name] === undefined) {\n throw new Error(`Set preference: \"${name}\" is undefined.`);\n } else if (value === undefined) {\n throw new Error('Set preference: no value is specified.');\n }\n var valueType = typeof value;\n var defaultType = typeof this.defaults[name];\n\n if (valueType !== defaultType) {\n if (valueType === 'number' && defaultType === 'string') {\n value = value.toString();\n } else {\n throw new Error(`Set preference: \"${value}\" is a ${valueType}, ` +\n `expected a ${defaultType}.`);\n }\n } else {\n if (valueType === 'number' && (value | 0) !== value) {\n throw new Error(`Set preference: \"${value}\" must be an integer.`);\n }\n }\n this.prefs[name] = value;\n return this._writeToStorage(this.prefs);\n });\n }\n\n /**\n * Get the value of a preference.\n * @param {string} name The name of the preference whose value is requested.\n * @return {Promise} A promise that is resolved with a {boolean|number|string}\n * containing the value of the preference.\n */\n get(name) {\n return this._initializedPromise.then(() => {\n var defaultValue = this.defaults[name];\n\n if (defaultValue === undefined) {\n throw new Error(`Get preference: \"${name}\" is undefined.`);\n } else {\n var prefValue = this.prefs[name];\n\n if (prefValue !== undefined) {\n return prefValue;\n }\n }\n return defaultValue;\n });\n }\n}\n\nexport {\n BasePreferences,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/preferences.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CursorTool } from './pdf_cursor_tools';\nimport { SCROLLBAR_PADDING } from './ui_utils';\n\n/**\n * @typedef {Object} SecondaryToolbarOptions\n * @property {HTMLDivElement} toolbar - Container for the secondary toolbar.\n * @property {HTMLButtonElement} toggleButton - Button to toggle the visibility\n * of the secondary toolbar.\n * @property {HTMLDivElement} toolbarButtonContainer - Container where all the\n * toolbar buttons are placed. The maximum height of the toolbar is controlled\n * dynamically by adjusting the 'max-height' CSS property of this DOM element.\n * @property {HTMLButtonElement} presentationModeButton - Button for entering\n * presentation mode.\n * @property {HTMLButtonElement} openFileButton - Button to open a file.\n * @property {HTMLButtonElement} printButton - Button to print the document.\n * @property {HTMLButtonElement} downloadButton - Button to download the\n * document.\n * @property {HTMLLinkElement} viewBookmarkButton - Button to obtain a bookmark\n * link to the current location in the document.\n * @property {HTMLButtonElement} firstPageButton - Button to go to the first\n * page in the document.\n * @property {HTMLButtonElement} lastPageButton - Button to go to the last page\n * in the document.\n * @property {HTMLButtonElement} pageRotateCwButton - Button to rotate the pages\n * clockwise.\n * @property {HTMLButtonElement} pageRotateCcwButton - Button to rotate the\n * pages counterclockwise.\n * @property {HTMLButtonElement} cursorSelectToolButton - Button to enable the\n * select tool.\n * @property {HTMLButtonElement} cursorHandToolButton - Button to enable the\n * hand tool.\n * @property {HTMLButtonElement} documentPropertiesButton - Button for opening\n * the document properties dialog.\n */\n\nclass SecondaryToolbar {\n /**\n * @param {SecondaryToolbarOptions} options\n * @param {HTMLDivElement} mainContainer\n * @param {EventBus} eventBus\n */\n constructor(options, mainContainer, eventBus) {\n this.toolbar = options.toolbar;\n this.toggleButton = options.toggleButton;\n this.toolbarButtonContainer = options.toolbarButtonContainer;\n this.buttons = [\n { element: options.presentationModeButton, eventName: 'presentationmode',\n close: true, },\n { element: options.openFileButton, eventName: 'openfile', close: true, },\n { element: options.printButton, eventName: 'print', close: true, },\n { element: options.downloadButton, eventName: 'download', close: true, },\n { element: options.viewBookmarkButton, eventName: null, close: true, },\n { element: options.firstPageButton, eventName: 'firstpage',\n close: true, },\n { element: options.lastPageButton, eventName: 'lastpage', close: true, },\n { element: options.pageRotateCwButton, eventName: 'rotatecw',\n close: false, },\n { element: options.pageRotateCcwButton, eventName: 'rotateccw',\n close: false, },\n { element: options.cursorSelectToolButton, eventName: 'switchcursortool',\n eventDetails: { tool: CursorTool.SELECT, }, close: true, },\n { element: options.cursorHandToolButton, eventName: 'switchcursortool',\n eventDetails: { tool: CursorTool.HAND, }, close: true, },\n { element: options.documentPropertiesButton,\n eventName: 'documentproperties', close: true, },\n ];\n this.items = {\n firstPage: options.firstPageButton,\n lastPage: options.lastPageButton,\n pageRotateCw: options.pageRotateCwButton,\n pageRotateCcw: options.pageRotateCcwButton,\n };\n\n this.mainContainer = mainContainer;\n this.eventBus = eventBus;\n\n this.opened = false;\n this.containerHeight = null;\n this.previousContainerHeight = null;\n\n this.reset();\n\n // Bind the event listeners for click and cursor tool actions.\n this._bindClickListeners();\n this._bindCursorToolsListener(options);\n\n // Bind the event listener for adjusting the 'max-height' of the toolbar.\n this.eventBus.on('resize', this._setMaxHeight.bind(this));\n }\n\n /**\n * @return {boolean}\n */\n get isOpen() {\n return this.opened;\n }\n\n setPageNumber(pageNumber) {\n this.pageNumber = pageNumber;\n this._updateUIState();\n }\n\n setPagesCount(pagesCount) {\n this.pagesCount = pagesCount;\n this._updateUIState();\n }\n\n reset() {\n this.pageNumber = 0;\n this.pagesCount = 0;\n this._updateUIState();\n }\n\n _updateUIState() {\n this.items.firstPage.disabled = (this.pageNumber <= 1);\n this.items.lastPage.disabled = (this.pageNumber >= this.pagesCount);\n this.items.pageRotateCw.disabled = this.pagesCount === 0;\n this.items.pageRotateCcw.disabled = this.pagesCount === 0;\n }\n\n _bindClickListeners() {\n // Button to toggle the visibility of the secondary toolbar.\n this.toggleButton.addEventListener('click', this.toggle.bind(this));\n\n // All items within the secondary toolbar.\n for (let button in this.buttons) {\n let { element, eventName, close, eventDetails, } = this.buttons[button];\n\n element.addEventListener('click', (evt) => {\n if (eventName !== null) {\n let details = { source: this, };\n for (let property in eventDetails) {\n details[property] = eventDetails[property];\n }\n this.eventBus.dispatch(eventName, details);\n }\n if (close) {\n this.close();\n }\n });\n }\n }\n\n _bindCursorToolsListener(buttons) {\n this.eventBus.on('cursortoolchanged', function(evt) {\n buttons.cursorSelectToolButton.classList.remove('toggled');\n buttons.cursorHandToolButton.classList.remove('toggled');\n\n switch (evt.tool) {\n case CursorTool.SELECT:\n buttons.cursorSelectToolButton.classList.add('toggled');\n break;\n case CursorTool.HAND:\n buttons.cursorHandToolButton.classList.add('toggled');\n break;\n }\n });\n }\n\n open() {\n if (this.opened) {\n return;\n }\n this.opened = true;\n this._setMaxHeight();\n\n this.toggleButton.classList.add('toggled');\n this.toolbar.classList.remove('hidden');\n }\n\n close() {\n if (!this.opened) {\n return;\n }\n this.opened = false;\n this.toolbar.classList.add('hidden');\n this.toggleButton.classList.remove('toggled');\n }\n\n toggle() {\n if (this.opened) {\n this.close();\n } else {\n this.open();\n }\n }\n\n /**\n * @private\n */\n _setMaxHeight() {\n if (!this.opened) {\n return; // Only adjust the 'max-height' if the toolbar is visible.\n }\n this.containerHeight = this.mainContainer.clientHeight;\n\n if (this.containerHeight === this.previousContainerHeight) {\n return;\n }\n this.toolbarButtonContainer.setAttribute('style',\n 'max-height: ' + (this.containerHeight - SCROLLBAR_PADDING) + 'px;');\n\n this.previousContainerHeight = this.containerHeight;\n }\n}\n\nexport {\n SecondaryToolbar,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/secondary_toolbar.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobalEventBus } from './dom_events';\nimport { renderTextLayer } from 'pdfjs-lib';\n\nconst EXPAND_DIVS_TIMEOUT = 300; // ms\n\n/**\n * @typedef {Object} TextLayerBuilderOptions\n * @property {HTMLDivElement} textLayerDiv - The text layer container.\n * @property {EventBus} eventBus - The application event bus.\n * @property {number} pageIndex - The page index.\n * @property {PageViewport} viewport - The viewport of the text layer.\n * @property {PDFFindController} findController\n * @property {boolean} enhanceTextSelection - Option to turn on improved\n * text selection.\n */\n\n/**\n * The text layer builder provides text selection functionality for the PDF.\n * It does this by creating overlay divs over the PDF's text. These divs\n * contain text that matches the PDF text they are overlaying. This object\n * also provides a way to highlight text that is being searched for.\n */\nclass TextLayerBuilder {\n constructor({ textLayerDiv, eventBus, pageIndex, viewport,\n findController = null, enhanceTextSelection = false, }) {\n this.textLayerDiv = textLayerDiv;\n this.eventBus = eventBus || getGlobalEventBus();\n this.textContent = null;\n this.textContentItemsStr = [];\n this.textContentStream = null;\n this.renderingDone = false;\n this.pageIdx = pageIndex;\n this.pageNumber = this.pageIdx + 1;\n this.matches = [];\n this.viewport = viewport;\n this.textDivs = [];\n this.findController = findController;\n this.textLayerRenderTask = null;\n this.enhanceTextSelection = enhanceTextSelection;\n\n this._bindMouse();\n }\n\n /**\n * @private\n */\n _finishRendering() {\n this.renderingDone = true;\n\n if (!this.enhanceTextSelection) {\n let endOfContent = document.createElement('div');\n endOfContent.className = 'endOfContent';\n this.textLayerDiv.appendChild(endOfContent);\n }\n\n this.eventBus.dispatch('textlayerrendered', {\n source: this,\n pageNumber: this.pageNumber,\n numTextDivs: this.textDivs.length,\n });\n }\n\n /**\n * Renders the text layer.\n *\n * @param {number} timeout - (optional) wait for a specified amount of\n * milliseconds before rendering\n */\n render(timeout = 0) {\n if (!(this.textContent || this.textContentStream) || this.renderingDone) {\n return;\n }\n this.cancel();\n\n this.textDivs = [];\n let textLayerFrag = document.createDocumentFragment();\n this.textLayerRenderTask = renderTextLayer({\n textContent: this.textContent,\n textContentStream: this.textContentStream,\n container: textLayerFrag,\n viewport: this.viewport,\n textDivs: this.textDivs,\n textContentItemsStr: this.textContentItemsStr,\n timeout,\n enhanceTextSelection: this.enhanceTextSelection,\n });\n this.textLayerRenderTask.promise.then(() => {\n this.textLayerDiv.appendChild(textLayerFrag);\n this._finishRendering();\n this.updateMatches();\n }, function (reason) {\n // Cancelled or failed to render text layer; skipping errors.\n });\n }\n\n /**\n * Cancel rendering of the text layer.\n */\n cancel() {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.cancel();\n this.textLayerRenderTask = null;\n }\n }\n\n setTextContentStream(readableStream) {\n this.cancel();\n this.textContentStream = readableStream;\n }\n\n setTextContent(textContent) {\n this.cancel();\n this.textContent = textContent;\n }\n\n convertMatches(matches, matchesLength) {\n let i = 0;\n let iIndex = 0;\n let textContentItemsStr = this.textContentItemsStr;\n let end = textContentItemsStr.length - 1;\n let queryLen = (this.findController === null ?\n 0 : this.findController.state.query.length);\n let ret = [];\n if (!matches) {\n return ret;\n }\n for (let m = 0, len = matches.length; m < len; m++) {\n // Calculate the start position.\n let matchIdx = matches[m];\n\n // Loop over the divIdxs.\n while (i !== end && matchIdx >=\n (iIndex + textContentItemsStr[i].length)) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n if (i === textContentItemsStr.length) {\n console.error('Could not find a matching mapping');\n }\n\n let match = {\n begin: {\n divIdx: i,\n offset: matchIdx - iIndex,\n },\n };\n\n // Calculate the end position.\n if (matchesLength) { // Multiterm search.\n matchIdx += matchesLength[m];\n } else { // Phrase search.\n matchIdx += queryLen;\n }\n\n // Somewhat the same array as above, but use > instead of >= to get\n // the end position right.\n while (i !== end && matchIdx >\n (iIndex + textContentItemsStr[i].length)) {\n iIndex += textContentItemsStr[i].length;\n i++;\n }\n\n match.end = {\n divIdx: i,\n offset: matchIdx - iIndex,\n };\n ret.push(match);\n }\n\n return ret;\n }\n\n renderMatches(matches) {\n // Early exit if there is nothing to render.\n if (matches.length === 0) {\n return;\n }\n\n let textContentItemsStr = this.textContentItemsStr;\n let textDivs = this.textDivs;\n let prevEnd = null;\n let pageIdx = this.pageIdx;\n let isSelectedPage = (this.findController === null ?\n false : (pageIdx === this.findController.selected.pageIdx));\n let selectedMatchIdx = (this.findController === null ?\n -1 : this.findController.selected.matchIdx);\n let highlightAll = (this.findController === null ?\n false : this.findController.state.highlightAll);\n let infinity = {\n divIdx: -1,\n offset: undefined,\n };\n\n function beginText(begin, className) {\n let divIdx = begin.divIdx;\n textDivs[divIdx].textContent = '';\n appendTextToDiv(divIdx, 0, begin.offset, className);\n }\n\n function appendTextToDiv(divIdx, fromOffset, toOffset, className) {\n let div = textDivs[divIdx];\n let content = textContentItemsStr[divIdx].substring(fromOffset, toOffset);\n let node = document.createTextNode(content);\n if (className) {\n let span = document.createElement('span');\n span.className = className;\n span.appendChild(node);\n div.appendChild(span);\n return;\n }\n div.appendChild(node);\n }\n\n let i0 = selectedMatchIdx, i1 = i0 + 1;\n if (highlightAll) {\n i0 = 0;\n i1 = matches.length;\n } else if (!isSelectedPage) {\n // Not highlighting all and this isn't the selected page, so do nothing.\n return;\n }\n\n for (let i = i0; i < i1; i++) {\n let match = matches[i];\n let begin = match.begin;\n let end = match.end;\n let isSelected = (isSelectedPage && i === selectedMatchIdx);\n let highlightSuffix = (isSelected ? ' selected' : '');\n\n if (this.findController) {\n this.findController.updateMatchPosition(pageIdx, i, textDivs,\n begin.divIdx);\n }\n\n // Match inside new div.\n if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {\n // If there was a previous div, then add the text at the end.\n if (prevEnd !== null) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n // Clear the divs and set the content until the starting point.\n beginText(begin);\n } else {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);\n }\n\n if (begin.divIdx === end.divIdx) {\n appendTextToDiv(begin.divIdx, begin.offset, end.offset,\n 'highlight' + highlightSuffix);\n } else {\n appendTextToDiv(begin.divIdx, begin.offset, infinity.offset,\n 'highlight begin' + highlightSuffix);\n for (let n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {\n textDivs[n0].className = 'highlight middle' + highlightSuffix;\n }\n beginText(end, 'highlight end' + highlightSuffix);\n }\n prevEnd = end;\n }\n\n if (prevEnd) {\n appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);\n }\n }\n\n updateMatches() {\n // Only show matches when all rendering is done.\n if (!this.renderingDone) {\n return;\n }\n\n // Clear all matches.\n let matches = this.matches;\n let textDivs = this.textDivs;\n let textContentItemsStr = this.textContentItemsStr;\n let clearedUntilDivIdx = -1;\n\n // Clear all current matches.\n for (let i = 0, len = matches.length; i < len; i++) {\n let match = matches[i];\n let begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);\n for (let n = begin, end = match.end.divIdx; n <= end; n++) {\n let div = textDivs[n];\n div.textContent = textContentItemsStr[n];\n div.className = '';\n }\n clearedUntilDivIdx = match.end.divIdx + 1;\n }\n\n if (this.findController === null || !this.findController.active) {\n return;\n }\n\n // Convert the matches on the page controller into the match format\n // used for the textLayer.\n let pageMatches, pageMatchesLength;\n if (this.findController !== null) {\n pageMatches = this.findController.pageMatches[this.pageIdx] || null;\n pageMatchesLength = (this.findController.pageMatchesLength) ?\n this.findController.pageMatchesLength[this.pageIdx] || null : null;\n }\n\n this.matches = this.convertMatches(pageMatches, pageMatchesLength);\n this.renderMatches(this.matches);\n }\n\n /**\n * Improves text selection by adding an additional div where the mouse was\n * clicked. This reduces flickering of the content if the mouse is slowly\n * dragged up or down.\n *\n * @private\n */\n _bindMouse() {\n let div = this.textLayerDiv;\n let expandDivsTimer = null;\n\n div.addEventListener('mousedown', (evt) => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(true);\n if ((typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) &&\n expandDivsTimer) {\n clearTimeout(expandDivsTimer);\n expandDivsTimer = null;\n }\n return;\n }\n\n let end = div.querySelector('.endOfContent');\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n // On non-Firefox browsers, the selection will feel better if the height\n // of the `endOfContent` div is adjusted to start at mouse click\n // location. This avoids flickering when the selection moves up.\n // However it does not work when selection is started on empty space.\n let adjustTop = evt.target !== div;\n if (typeof PDFJSDev === 'undefined' || PDFJSDev.test('GENERIC')) {\n adjustTop = adjustTop && window.getComputedStyle(end).\n getPropertyValue('-moz-user-select') !== 'none';\n }\n if (adjustTop) {\n let divBounds = div.getBoundingClientRect();\n let r = Math.max(0, (evt.pageY - divBounds.top) / divBounds.height);\n end.style.top = (r * 100).toFixed(2) + '%';\n }\n }\n end.classList.add('active');\n });\n\n div.addEventListener('mouseup', () => {\n if (this.enhanceTextSelection && this.textLayerRenderTask) {\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n expandDivsTimer = setTimeout(() => {\n if (this.textLayerRenderTask) {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n expandDivsTimer = null;\n }, EXPAND_DIVS_TIMEOUT);\n } else {\n this.textLayerRenderTask.expandTextDivs(false);\n }\n return;\n }\n\n let end = div.querySelector('.endOfContent');\n if (!end) {\n return;\n }\n if (typeof PDFJSDev === 'undefined' ||\n !PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n end.style.top = '';\n }\n end.classList.remove('active');\n });\n }\n}\n\n/**\n * @implements IPDFTextLayerFactory\n */\nclass DefaultTextLayerFactory {\n /**\n * @param {HTMLDivElement} textLayerDiv\n * @param {number} pageIndex\n * @param {PageViewport} viewport\n * @param {boolean} enhanceTextSelection\n * @returns {TextLayerBuilder}\n */\n createTextLayerBuilder(textLayerDiv, pageIndex, viewport,\n enhanceTextSelection = false) {\n return new TextLayerBuilder({\n textLayerDiv,\n pageIndex,\n viewport,\n enhanceTextSelection,\n });\n }\n}\n\nexport {\n TextLayerBuilder,\n DefaultTextLayerFactory,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/text_layer_builder.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n animationStarted, DEFAULT_SCALE, DEFAULT_SCALE_VALUE, MAX_SCALE,\n MIN_SCALE, noContextMenuHandler, NullL10n\n} from './ui_utils';\n\nconst PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading';\nconst SCALE_SELECT_CONTAINER_PADDING = 8;\nconst SCALE_SELECT_PADDING = 22;\n\n/**\n * @typedef {Object} ToolbarOptions\n * @property {HTMLDivElement} container - Container for the secondary toolbar.\n * @property {HTMLSpanElement} numPages - Label that contains number of pages.\n * @property {HTMLInputElement} pageNumber - Control for display and user input\n * of the current page number.\n * @property {HTMLSpanElement} scaleSelectContainer - Container where scale\n * controls are placed. The width is adjusted on UI initialization.\n * @property {HTMLSelectElement} scaleSelect - Scale selection control.\n * @property {HTMLOptionElement} customScaleOption - The item used to display\n * a non-predefined scale.\n * @property {HTMLButtonElement} previous - Button to go to the previous page.\n * @property {HTMLButtonElement} next - Button to go to the next page.\n * @property {HTMLButtonElement} zoomIn - Button to zoom in the pages.\n * @property {HTMLButtonElement} zoomOut - Button to zoom out the pages.\n * @property {HTMLButtonElement} viewFind - Button to open find bar.\n * @property {HTMLButtonElement} openFile - Button to open a new document.\n * @property {HTMLButtonElement} presentationModeButton - Button to switch to\n * presentation mode.\n * @property {HTMLButtonElement} download - Button to download the document.\n * @property {HTMLAElement} viewBookmark - Element to link current url of\n * the page view.\n */\n\nclass Toolbar {\n /**\n * @param {ToolbarOptions} options\n * @param {HTMLDivElement} mainContainer\n * @param {EventBus} eventBus\n * @param {IL10n} l10n - Localization service.\n */\n constructor(options, mainContainer, eventBus, l10n = NullL10n) {\n this.toolbar = options.container;\n this.mainContainer = mainContainer;\n this.eventBus = eventBus;\n this.l10n = l10n;\n this.items = options;\n\n this._wasLocalized = false;\n this.reset();\n\n // Bind the event listeners for click and hand tool actions.\n this._bindListeners();\n }\n\n setPageNumber(pageNumber, pageLabel) {\n this.pageNumber = pageNumber;\n this.pageLabel = pageLabel;\n this._updateUIState(false);\n }\n\n setPagesCount(pagesCount, hasPageLabels) {\n this.pagesCount = pagesCount;\n this.hasPageLabels = hasPageLabels;\n this._updateUIState(true);\n }\n\n setPageScale(pageScaleValue, pageScale) {\n this.pageScaleValue = pageScaleValue;\n this.pageScale = pageScale;\n this._updateUIState(false);\n }\n\n reset() {\n this.pageNumber = 0;\n this.pageLabel = null;\n this.hasPageLabels = false;\n this.pagesCount = 0;\n this.pageScaleValue = DEFAULT_SCALE_VALUE;\n this.pageScale = DEFAULT_SCALE;\n this._updateUIState(true);\n }\n\n _bindListeners() {\n let { eventBus, items, } = this;\n let self = this;\n\n items.previous.addEventListener('click', function() {\n eventBus.dispatch('previouspage');\n });\n\n items.next.addEventListener('click', function() {\n eventBus.dispatch('nextpage');\n });\n\n items.zoomIn.addEventListener('click', function() {\n eventBus.dispatch('zoomin');\n });\n\n items.zoomOut.addEventListener('click', function() {\n eventBus.dispatch('zoomout');\n });\n\n items.pageNumber.addEventListener('click', function() {\n this.select();\n });\n\n items.pageNumber.addEventListener('change', function() {\n eventBus.dispatch('pagenumberchanged', {\n source: self,\n value: this.value,\n });\n });\n\n items.scaleSelect.addEventListener('change', function() {\n if (this.value === 'custom') {\n return;\n }\n eventBus.dispatch('scalechanged', {\n source: self,\n value: this.value,\n });\n });\n\n items.presentationModeButton.addEventListener('click', function() {\n eventBus.dispatch('presentationmode');\n });\n\n items.openFile.addEventListener('click', function() {\n eventBus.dispatch('openfile');\n });\n\n items.print.addEventListener('click', function() {\n eventBus.dispatch('print');\n });\n\n items.download.addEventListener('click', function() {\n eventBus.dispatch('download');\n });\n\n // Suppress context menus for some controls.\n items.scaleSelect.oncontextmenu = noContextMenuHandler;\n\n eventBus.on('localized', () => {\n this._localized();\n });\n }\n\n _localized() {\n this._wasLocalized = true;\n this._adjustScaleWidth();\n this._updateUIState(true);\n }\n\n _updateUIState(resetNumPages = false) {\n if (!this._wasLocalized) {\n // Don't update the UI state until we localize the toolbar.\n return;\n }\n let { pageNumber, pagesCount, items, } = this;\n let scaleValue = (this.pageScaleValue || this.pageScale).toString();\n let scale = this.pageScale;\n\n if (resetNumPages) {\n if (this.hasPageLabels) {\n items.pageNumber.type = 'text';\n } else {\n items.pageNumber.type = 'number';\n this.l10n.get('of_pages', { pagesCount, }, 'of {{pagesCount}}').\n then((msg) => {\n items.numPages.textContent = msg;\n });\n }\n items.pageNumber.max = pagesCount;\n }\n\n if (this.hasPageLabels) {\n items.pageNumber.value = this.pageLabel;\n this.l10n.get('page_of_pages', { pageNumber, pagesCount, },\n '({{pageNumber}} of {{pagesCount}})').then((msg) => {\n items.numPages.textContent = msg;\n });\n } else {\n items.pageNumber.value = pageNumber;\n }\n\n items.previous.disabled = (pageNumber <= 1);\n items.next.disabled = (pageNumber >= pagesCount);\n\n items.zoomOut.disabled = (scale <= MIN_SCALE);\n items.zoomIn.disabled = (scale >= MAX_SCALE);\n\n let customScale = Math.round(scale * 10000) / 100;\n this.l10n.get('page_scale_percent', { scale: customScale, },\n '{{scale}}%').then((msg) => {\n let options = items.scaleSelect.options;\n let predefinedValueFound = false;\n for (let i = 0, ii = options.length; i < ii; i++) {\n let option = options[i];\n if (option.value !== scaleValue) {\n option.selected = false;\n continue;\n }\n option.selected = true;\n predefinedValueFound = true;\n }\n if (!predefinedValueFound) {\n items.customScaleOption.textContent = msg;\n items.customScaleOption.selected = true;\n }\n });\n }\n\n updateLoadingIndicatorState(loading = false) {\n let pageNumberInput = this.items.pageNumber;\n\n if (loading) {\n pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR);\n } else {\n pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR);\n }\n }\n\n _adjustScaleWidth() {\n let container = this.items.scaleSelectContainer;\n let select = this.items.scaleSelect;\n\n animationStarted.then(function() {\n // Adjust the width of the zoom box to fit the content.\n // Note: If the window is narrow enough that the zoom box is not\n // visible, we temporarily show it to be able to adjust its width.\n if (container.clientWidth === 0) {\n container.setAttribute('style', 'display: inherit;');\n }\n if (container.clientWidth > 0) {\n select.setAttribute('style', 'min-width: inherit;');\n let width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING;\n select.setAttribute('style', 'min-width: ' +\n (width + SCALE_SELECT_PADDING) + 'px;');\n container.setAttribute('style', 'min-width: ' + width + 'px; ' +\n 'max-width: ' + width + 'px;');\n }\n });\n }\n}\n\nexport {\n Toolbar,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/toolbar.js","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20;\n\n/**\n * View History - This is a utility for saving various view parameters for\n * recently opened files.\n *\n * The way that the view parameters are stored depends on how PDF.js is built,\n * for 'gulp ' the following cases exist:\n * - FIREFOX or MOZCENTRAL - uses sessionStorage.\n * - GENERIC or CHROME - uses localStorage, if it is available.\n */\nclass ViewHistory {\n constructor(fingerprint, cacheSize = DEFAULT_VIEW_HISTORY_CACHE_SIZE) {\n this.fingerprint = fingerprint;\n this.cacheSize = cacheSize;\n\n this._initializedPromise = this._readFromStorage().then((databaseStr) => {\n let database = JSON.parse(databaseStr || '{}');\n if (!('files' in database)) {\n database.files = [];\n }\n if (database.files.length >= this.cacheSize) {\n database.files.shift();\n }\n let index;\n for (let i = 0, length = database.files.length; i < length; i++) {\n let branch = database.files[i];\n if (branch.fingerprint === this.fingerprint) {\n index = i;\n break;\n }\n }\n if (typeof index !== 'number') {\n index = database.files.push({ fingerprint: this.fingerprint, }) - 1;\n }\n this.file = database.files[index];\n this.database = database;\n });\n }\n\n _writeToStorage() {\n return new Promise((resolve) => {\n let databaseStr = JSON.stringify(this.database);\n\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n sessionStorage.setItem('pdfjs.history', databaseStr);\n } else {\n localStorage.setItem('pdfjs.history', databaseStr);\n }\n resolve();\n });\n }\n\n _readFromStorage() {\n return new Promise(function(resolve) {\n if (typeof PDFJSDev !== 'undefined' &&\n PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n resolve(sessionStorage.getItem('pdfjs.history'));\n } else {\n let value = localStorage.getItem('pdfjs.history');\n\n // TODO: Remove this key-name conversion after a suitable time-frame.\n // Note that we only remove the old 'database' entry if it looks like\n // it was created by PDF.js, to avoid removing someone else's data.\n if (!value) {\n let databaseStr = localStorage.getItem('database');\n if (databaseStr) {\n try {\n let database = JSON.parse(databaseStr);\n if (typeof database.files[0].fingerprint === 'string') {\n localStorage.setItem('pdfjs.history', databaseStr);\n localStorage.removeItem('database');\n value = databaseStr;\n }\n } catch (ex) { }\n }\n }\n resolve(value);\n }\n });\n }\n\n set(name, val) {\n return this._initializedPromise.then(() => {\n this.file[name] = val;\n return this._writeToStorage();\n });\n }\n\n setMultiple(properties) {\n return this._initializedPromise.then(() => {\n for (let name in properties) {\n this.file[name] = properties[name];\n }\n return this._writeToStorage();\n });\n }\n\n get(name, defaultValue) {\n return this._initializedPromise.then(() => {\n let val = this.file[name];\n return val !== undefined ? val : defaultValue;\n });\n }\n\n getMultiple(properties) {\n return this._initializedPromise.then(() => {\n let values = Object.create(null);\n\n for (let name in properties) {\n let val = this.file[name];\n values[name] = val !== undefined ? val : properties[name];\n }\n return values;\n });\n }\n}\n\nexport {\n ViewHistory,\n};\n\n\n\n// WEBPACK FOOTER //\n// web/view_history.js","/* Copyright 2016 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals chrome */\n\n'use strict';\n\nlet DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf';\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n (function rewriteUrlClosure() {\n // Run this code outside DOMContentLoaded to make sure that the URL\n // is rewritten as soon as possible.\n let queryString = document.location.search.slice(1);\n let m = /(^|&)file=([^&]*)/.exec(queryString);\n DEFAULT_URL = m ? decodeURIComponent(m[2]) : '';\n\n // Example: chrome-extension://.../http://example.com/file.pdf\n let humanReadableUrl = '/' + DEFAULT_URL + location.hash;\n history.replaceState(history.state, '', humanReadableUrl);\n if (top === window) {\n chrome.runtime.sendMessage('showPageAction');\n }\n })();\n}\n\nlet pdfjsWebApp;\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('PRODUCTION')) {\n pdfjsWebApp = require('./app.js');\n}\n\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('FIREFOX || MOZCENTRAL')) {\n require('./firefoxcom.js');\n require('./firefox_print_service.js');\n}\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('GENERIC')) {\n require('./genericcom.js');\n}\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME')) {\n require('./chromecom.js');\n}\nif (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('CHROME || GENERIC')) {\n require('./pdf_print_service.js');\n}\n\nfunction getViewerConfiguration() {\n return {\n appContainer: document.body,\n mainContainer: document.getElementById('viewerContainer'),\n viewerContainer: document.getElementById('viewer'),\n eventBus: null, // using global event bus with DOM events\n toolbar: {\n container: document.getElementById('toolbarViewer'),\n numPages: document.getElementById('numPages'),\n pageNumber: document.getElementById('pageNumber'),\n scaleSelectContainer: document.getElementById('scaleSelectContainer'),\n scaleSelect: document.getElementById('scaleSelect'),\n customScaleOption: document.getElementById('customScaleOption'),\n previous: document.getElementById('previous'),\n next: document.getElementById('next'),\n zoomIn: document.getElementById('zoomIn'),\n zoomOut: document.getElementById('zoomOut'),\n viewFind: document.getElementById('viewFind'),\n openFile: document.getElementById('openFile'),\n print: document.getElementById('print'),\n presentationModeButton: document.getElementById('presentationMode'),\n download: document.getElementById('download'),\n viewBookmark: document.getElementById('viewBookmark'),\n },\n secondaryToolbar: {\n toolbar: document.getElementById('secondaryToolbar'),\n toggleButton: document.getElementById('secondaryToolbarToggle'),\n toolbarButtonContainer:\n document.getElementById('secondaryToolbarButtonContainer'),\n presentationModeButton:\n document.getElementById('secondaryPresentationMode'),\n openFileButton: document.getElementById('secondaryOpenFile'),\n printButton: document.getElementById('secondaryPrint'),\n downloadButton: document.getElementById('secondaryDownload'),\n viewBookmarkButton: document.getElementById('secondaryViewBookmark'),\n firstPageButton: document.getElementById('firstPage'),\n lastPageButton: document.getElementById('lastPage'),\n pageRotateCwButton: document.getElementById('pageRotateCw'),\n pageRotateCcwButton: document.getElementById('pageRotateCcw'),\n cursorSelectToolButton: document.getElementById('cursorSelectTool'),\n cursorHandToolButton: document.getElementById('cursorHandTool'),\n documentPropertiesButton: document.getElementById('documentProperties'),\n },\n fullscreen: {\n contextFirstPage: document.getElementById('contextFirstPage'),\n contextLastPage: document.getElementById('contextLastPage'),\n contextPageRotateCw: document.getElementById('contextPageRotateCw'),\n contextPageRotateCcw: document.getElementById('contextPageRotateCcw'),\n },\n sidebar: {\n // Divs (and sidebar button)\n mainContainer: document.getElementById('mainContainer'),\n outerContainer: document.getElementById('outerContainer'),\n toggleButton: document.getElementById('sidebarToggle'),\n // Buttons\n thumbnailButton: document.getElementById('viewThumbnail'),\n outlineButton: document.getElementById('viewOutline'),\n attachmentsButton: document.getElementById('viewAttachments'),\n // Views\n thumbnailView: document.getElementById('thumbnailView'),\n outlineView: document.getElementById('outlineView'),\n attachmentsView: document.getElementById('attachmentsView'),\n },\n findBar: {\n bar: document.getElementById('findbar'),\n toggleButton: document.getElementById('viewFind'),\n findField: document.getElementById('findInput'),\n highlightAllCheckbox: document.getElementById('findHighlightAll'),\n caseSensitiveCheckbox: document.getElementById('findMatchCase'),\n findMsg: document.getElementById('findMsg'),\n findResultsCount: document.getElementById('findResultsCount'),\n findStatusIcon: document.getElementById('findStatusIcon'),\n findPreviousButton: document.getElementById('findPrevious'),\n findNextButton: document.getElementById('findNext'),\n },\n passwordOverlay: {\n overlayName: 'passwordOverlay',\n container: document.getElementById('passwordOverlay'),\n label: document.getElementById('passwordText'),\n input: document.getElementById('password'),\n submitButton: document.getElementById('passwordSubmit'),\n cancelButton: document.getElementById('passwordCancel'),\n },\n documentProperties: {\n overlayName: 'documentPropertiesOverlay',\n container: document.getElementById('documentPropertiesOverlay'),\n closeButton: document.getElementById('documentPropertiesClose'),\n fields: {\n 'fileName': document.getElementById('fileNameField'),\n 'fileSize': document.getElementById('fileSizeField'),\n 'title': document.getElementById('titleField'),\n 'author': document.getElementById('authorField'),\n 'subject': document.getElementById('subjectField'),\n 'keywords': document.getElementById('keywordsField'),\n 'creationDate': document.getElementById('creationDateField'),\n 'modificationDate': document.getElementById('modificationDateField'),\n 'creator': document.getElementById('creatorField'),\n 'producer': document.getElementById('producerField'),\n 'version': document.getElementById('versionField'),\n 'pageCount': document.getElementById('pageCountField'),\n },\n },\n errorWrapper: {\n container: document.getElementById('errorWrapper'),\n errorMessage: document.getElementById('errorMessage'),\n closeButton: document.getElementById('errorClose'),\n errorMoreInfo: document.getElementById('errorMoreInfo'),\n moreInfoButton: document.getElementById('errorShowMore'),\n lessInfoButton: document.getElementById('errorShowLess'),\n },\n printContainer: document.getElementById('printContainer'),\n openFileInputName: 'fileInput',\n debuggerScriptPath: './debugger.js',\n defaultUrl: DEFAULT_URL,\n };\n}\n\nfunction webViewerLoad() {\n let config = getViewerConfiguration();\n if (typeof PDFJSDev === 'undefined' || !PDFJSDev.test('PRODUCTION')) {\n Promise.all([\n SystemJS.import('pdfjs-web/app'),\n SystemJS.import('pdfjs-web/genericcom'),\n SystemJS.import('pdfjs-web/pdf_print_service'),\n ]).then(function([app, ...otherModules]) {\n window.PDFViewerApplication = app.PDFViewerApplication;\n app.PDFViewerApplication.run(config);\n });\n } else {\n window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;\n pdfjsWebApp.PDFViewerApplication.run(config);\n }\n}\n\nif (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n webViewerLoad();\n} else {\n document.addEventListener('DOMContentLoaded', webViewerLoad, true);\n}\n\n\n\n// WEBPACK FOOTER //\n// web/viewer.js"],"sourceRoot":""} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..036fc61 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/src/api/dashboard.js b/src/api/dashboard.js new file mode 100644 index 0000000..a48a6c4 --- /dev/null +++ b/src/api/dashboard.js @@ -0,0 +1,35 @@ +import api from '@/utils/api' + +/** + * 进入首页查询TransactionTable + */ +export function transactionTable(userId, departmentId, roleId, ifClaimant, clientType) { + return api({ + url: '/dashboard/transactionTable', + method: 'post', + params: { + userId: userId, + departmentId: departmentId, + roleId: roleId, + ifClaimant: ifClaimant, + clientType: clientType + }, + paramsSerializer: function(params) { + return require('qs').stringify(params, { indices: false }) + } + }) +} + +/** + * 首页报告统计柱状图数据查询 + */ +export function getBarChartData(bglx, departmentId) { + return api({ + url: '/dashboard/getBarChartData', + method: 'post', + params: { + bglx: bglx, + departmentId: departmentId + } + }) +} diff --git a/src/api/jyxm.js b/src/api/jyxm.js new file mode 100644 index 0000000..48de5b2 --- /dev/null +++ b/src/api/jyxm.js @@ -0,0 +1,25 @@ +import api from '@/utils/api' + +export default { + getCyJyxm: (modelId, sort) => { + return api({ + url: '/jyxm/getCyJyxm', + method: 'get', + params: { + templateId: modelId, + order: sort + } + }) + }, + getCyJyxmByYsjl: (ysjlId, isReport, sort) => { + return api({ + url: '/jyxm/getCyJyxmByYsjl', + method: 'get', + params: { + ysjlId: ysjlId, + isReport: isReport, + order: sort + } + }) + } +} diff --git a/src/api/message.js b/src/api/message.js new file mode 100644 index 0000000..1bd5683 --- /dev/null +++ b/src/api/message.js @@ -0,0 +1,27 @@ +import api from '@/utils/api' + +/** + * 根据消息通知主键获取消息信息 + * @param messageId 消息通知主键 + */ +export function findMessageById(messageId) { + return api({ + url: '/message/getById', + method: 'get', + params: { messageId } + }) +} + +/** + * 消息设置已读 + */ +export function settingReadMessage(userId, messageId) { + return api({ + url: '/message/settingReadMessage', + method: 'post', + data: { + userId: userId, + messageId: messageId + } + }) +} diff --git a/src/api/renwu.js b/src/api/renwu.js new file mode 100644 index 0000000..a18801a --- /dev/null +++ b/src/api/renwu.js @@ -0,0 +1,26 @@ +import api from '@/utils/api' +import apibjd from '@/utils/apibjd' + +/** + * 我的任务列表查询 + */ +export function getOwnList(query) { + return api({ + url: '/renwu/ownList', + method: 'get', + params: query + }) +} + +/** + * 任务列表 综合调用 + * @param query + * @param urlPath + */ +export function getRenwuListByPath(query, urlPath) { + return apibjd({ + url: '/renwu/' + urlPath, + method: 'get', + params: query + }) +} diff --git a/src/api/template.js b/src/api/template.js new file mode 100644 index 0000000..64d8389 --- /dev/null +++ b/src/api/template.js @@ -0,0 +1,11 @@ +import api from '@/utils/api' + +export default { + getList: (params) => { + return api({ + url: '/template/getTemplateList', + method: 'get', + params: params + }) + } +} diff --git a/src/api/ysjl.js b/src/api/ysjl.js new file mode 100644 index 0000000..8b64b78 --- /dev/null +++ b/src/api/ysjl.js @@ -0,0 +1,130 @@ +import api from '@/utils/api' +import preview from '@/utils/preview' +import qs from 'qs' + +export default { + /** + * 初始化原始记录 + * @param data + */ + initYsjl: (data) => { + return api({ + url: '/ysjl/initYsjl', + method: 'post', + data: { + modelId: data.modelId, + renwuId: data.renwuId, + neibuleibie: data.neibuleibie, + sblbdm: data.sblbdm, + sblbmc: data.sblbmc, + sbpzdm: data.sbpzdm, + sbpzmc: data.sbpzmc + } + }) + }, + /** + * 获取原始记录 + * @param ysjlId + */ + getYsjl: (ysjlId) => { + return api({ + url: '/ysjl/getYsjlById', + method: 'get', + params: { + ysjlId: ysjlId + } + }) + }, + /** + * 获取参数 + * @param ysjlId + * @param sbzldm + */ + getParamByYsjlId: (ysjlId, sbzldm) => { + return api({ + url: '/ysjl/getParamByYsjlId', + method: 'get', + params: { + ysjlId: ysjlId, + sbzldm: sbzldm + } + }) + }, + judgeRepeat: (ysjlId, bianhao) => { + return api({ + url: '/ysjl/judgeRepeat', + method: 'get', + params: { + ysjlId: ysjlId, + bianhao: bianhao + } + }) + }, + judgeInCirculate: (ysjlIds) => { + return api({ + url: '/ysjl/judgeInCirculate', + method: 'get', + params: { + ysjlIds: ysjlIds + } + }) + }, + getResetRecordsList: (ysjlId) => { + return api({ + url: '/ysjl/getResetRecordsList', + method: 'get', + params: { + ysjlId: ysjlId + } + }) + }, + exportExcel +} +/** + * 办结报告重启申请保存备份 + */ +export function initYsjlBackups(data) { + return api({ + url: '/ysjl/doYsjlBackups', + method: 'post', + data: { + ysjl: data.ysjl, + param: data.param, + jyxm: JSON.stringify(data.jyxm), + flag: data.flag, + fbjyxm: data.fbjyxm, + fxObjArray: data.fxObjArray, + bgjyxm: data.bgjyxm + } + }) +} + +/** + * 获得原始记录所有信息 + */ +export function getYsjlAllDetail(ysjlId) { + return api({ + url: '/ysjl/getYsjlAllDetail', + method: 'get', + params: { ysjlId: ysjlId } + }) +} + +/** + * 列表查询 + */ +export function getNeedRecordList(query) { + return api({ + url: '/ysjl/getList', + method: 'get', + params: query + }) +} + +export function exportExcel(params) { + return preview({ + url: '/download/downloadGrantList' + '?' + qs.stringify(params, { indices: false }), + method: 'get', + responseType: 'blob' + }) +} diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/src/assets/bjd/search.png b/src/assets/bjd/search.png new file mode 100644 index 0000000000000000000000000000000000000000..46f7ab3ee619f720867c4ef5b6035a744cc827ab GIT binary patch literal 75691 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.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-select-dropdown__item.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-select-dropdown__item.is-disabled:hover{background-color:#fff}.custom-theme .el-select-dropdown__item.hover,.custom-theme .el-select-dropdown__item:hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown__item.selected{color:#262729;font-weight:700}.custom-theme .el-select-dropdown__item span{line-height:34px!important}.custom-theme .el-select-group{margin:0;padding:0}.custom-theme .el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.custom-theme .el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.custom-theme .el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#dfe4ed}.custom-theme .el-select-group__title{padding-left:20px;font-size:12px;color:#0a76a4;line-height:30px}.custom-theme .el-select-group .el-select-dropdown__item{padding-left:20px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-select{display:inline-block;position:relative}.custom-theme .el-select:hover .el-input__inner{border-color:#b4bccc}.custom-theme .el-select .el-input__inner{cursor:pointer;padding-right:35px}.custom-theme .el-select .el-input__inner:focus{border-color:#262729}.custom-theme .el-select .el-input .el-select__caret{color:#b4bccc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.custom-theme .el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.custom-theme .el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#b4bccc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover{color:#878d99}.custom-theme .el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover{border-color:#dfe4ed}.custom-theme .el-select>.el-input{display:block}.custom-theme .el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.custom-theme .el-select__input.is-mini{height:14px}.custom-theme .el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#b4bccc;line-height:18px;font-size:14px}.custom-theme .el-select__close:hover{color:#878d99}.custom-theme .el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.custom-theme .el-select .el-tag__close{margin-top:-2px}.custom-theme .el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:3px 0 3px 6px;background-color:#f0f2f5}.custom-theme .el-select .el-tag__close.el-icon-close{background-color:#b4bccc;right:-7px;color:#fff}.custom-theme .el-select .el-tag__close.el-icon-close:hover{background-color:#878d99}.custom-theme .el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.custom-theme .el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#262729}.custom-theme .el-select__tag .el-icon-close{font-size:14px}.custom-theme .el-pagination{white-space:nowrap;padding:2px 5px;color:#2d2f33;font-weight:700}.custom-theme .el-pagination::after,.custom-theme .el-pagination::before{display:table;content:""}.custom-theme .el-pagination::after{clear:both}.custom-theme .el-pagination button,.custom-theme .el-pagination span:not([class*=suffix]){display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;vertical-align:top;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-pagination .el-input__inner{text-align:center}.custom-theme .el-pagination .el-input__suffix{right:0;-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-pagination .el-select .el-input{width:100px;margin:0 5px}.custom-theme .el-pagination .el-select .el-input .el-input__inner{padding-right:25px;border-radius:3px;height:28px}.custom-theme .el-pagination button{border:none;padding:0 6px;background:0 0}.custom-theme .el-pagination button:focus{outline:0}.custom-theme .el-pagination button:hover{color:#262729}.custom-theme .el-pagination button.disabled{color:#b4bccc;background-color:#fff;cursor:not-allowed}.custom-theme .el-pagination .btn-next,.custom-theme .el-pagination .btn-prev{background:center center no-repeat;background-size:16px;background-color:#fff;cursor:pointer;margin:0;color:#2d2f33}.custom-theme .el-pagination .btn-next .el-icon,.custom-theme .el-pagination .btn-prev .el-icon{display:block;font-size:12px}.custom-theme .el-pagination .btn-prev{padding-right:12px}.custom-theme .el-pagination .btn-next{padding-left:12px}.custom-theme .el-pagination--small .btn-next,.custom-theme .el-pagination--small .btn-prev,.custom-theme .el-pagination--small .el-pager li,.custom-theme .el-pagination--small .el-pager li:last-child{border-color:transparent;font-size:12px;line-height:22px;height:22px;min-width:22px}.custom-theme .el-pagination--small .arrow.disabled{visibility:hidden}.custom-theme .el-pagination__sizes{margin:0 10px 0 0;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__sizes .el-input .el-input__inner{font-size:13px;padding-left:8px}.custom-theme .el-pagination__sizes .el-input .el-input__inner:hover{border-color:#262729}.custom-theme .el-pagination__total{margin-right:10px;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__jump{margin-left:24px;font-weight:400;color:#5a5e66}.custom-theme .el-pagination__jump .el-input__inner{padding:0 3px}.custom-theme .el-pagination__rightwrapper{float:right}.custom-theme .el-pagination__editor{line-height:18px;padding:0 2px;height:28px;text-align:center;margin:0 2px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:3px;-moz-appearance:textfield}.custom-theme .el-pagination__editor.el-input{width:50px}.custom-theme .el-pagination__editor.el-input .el-input__inner{height:28px}.custom-theme .el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.custom-theme .el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.custom-theme .el-pager{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;list-style:none;display:inline-block;vertical-align:top;font-size:0;padding:0;margin:0}.custom-theme .el-pager .el-icon-more::before{vertical-align:-4px}.custom-theme .el-pager li{padding:0 4px;background:#fff;vertical-align:top;display:inline-block;font-size:13px;min-width:35.5px;height:28px;line-height:28px;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;margin:0}.custom-theme .el-pager li.btn-quicknext,.custom-theme .el-pager li.btn-quickprev{line-height:28px;color:#2d2f33}.custom-theme .el-pager li.btn-quickprev:hover{cursor:pointer}.custom-theme .el-pager li.btn-quicknext:hover{cursor:pointer}.custom-theme .el-pager li.active+li{border-left:0}.custom-theme .el-pager li:hover{color:#262729}.custom-theme .el-pager li.active{color:#262729;cursor:default}.custom-theme .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.custom-theme .v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@-webkit-keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-in{0%{opacity:0}}@-webkit-keyframes v-modal-out{100%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.custom-theme .v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.custom-theme .el-dialog{position:relative;margin:0 auto 50px;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,.3);box-shadow:0 1px 3px rgba(0,0,0,.3);-webkit-box-sizing:border-box;box-sizing:border-box;width:50%}.custom-theme .el-dialog.is-fullscreen{width:100%;margin-top:0;margin-bottom:0;height:100%;overflow:auto}.custom-theme .el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.custom-theme .el-dialog__header{padding:15px;padding-bottom:10px}.custom-theme .el-dialog__headerbtn{position:absolute;top:15px;right:15px;padding:0;background:0 0;border:none;outline:0;cursor:pointer;font-size:16px}.custom-theme .el-dialog__headerbtn .el-dialog__close{color:#0a76a4}.custom-theme .el-dialog__headerbtn:focus .el-dialog__close,.custom-theme .el-dialog__headerbtn:hover .el-dialog__close{color:#262729}.custom-theme .el-dialog__title{line-height:24px;font-size:18px;color:#2d2f33}.custom-theme .el-dialog__body{padding:30px 20px;color:#5a5e66;line-height:24px;font-size:14px}.custom-theme .el-dialog__footer{padding:15px;padding-top:10px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-dialog--center{text-align:center}.custom-theme .el-dialog--center .el-dialog__header{padding-top:30px}.custom-theme .el-dialog--center .el-dialog__body{text-align:initial;padding:25px 27px 30px}.custom-theme .el-dialog--center .el-dialog__footer{text-align:inherit;padding-bottom:30px}.custom-theme .dialog-fade-enter-active{-webkit-animation:dialog-fade-in .3s;animation:dialog-fade-in .3s}.custom-theme .dialog-fade-leave-active{-webkit-animation:dialog-fade-out .3s;animation:dialog-fade-out .3s}@-webkit-keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes dialog-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-autocomplete{position:relative;display:inline-block}.custom-theme .el-autocomplete-suggestion{margin:5px 0;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:4px}.custom-theme .el-autocomplete-suggestion.el-popper .popper__arrow{left:24px!important}.custom-theme .el-autocomplete-suggestion__wrap{max-height:280px;padding:10px 0;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:auto;background-color:#fff;border:1px solid #dfe4ed;border-radius:4px}.custom-theme .el-autocomplete-suggestion__list{margin:0;padding:0}.custom-theme .el-autocomplete-suggestion li{padding:0 20px;margin:0;line-height:34px;cursor:pointer;color:#5a5e66;font-size:14px;list-style:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-theme .el-autocomplete-suggestion li:hover{background-color:#f5f7fa}.custom-theme .el-autocomplete-suggestion li.highlighted{background-color:#f5f7fa}.custom-theme .el-autocomplete-suggestion li.divider{margin-top:6px;border-top:1px solid #000}.custom-theme .el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.custom-theme .el-autocomplete-suggestion.is-loading li{text-align:center;height:100px;line-height:100px;font-size:20px;color:#999}.custom-theme .el-autocomplete-suggestion.is-loading li::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-autocomplete-suggestion.is-loading li:hover{background-color:#fff}.custom-theme .el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-dropdown{display:inline-block;position:relative;color:#5a5e66;font-size:14px}.custom-theme .el-dropdown .el-button-group{display:block}.custom-theme .el-dropdown .el-button-group .el-button{float:none}.custom-theme .el-dropdown .el-dropdown__caret-button{padding-left:5px;padding-right:5px;position:relative;border-left:none}.custom-theme .el-dropdown .el-dropdown__caret-button::before{content:'';position:absolute;display:block;width:1px;top:5px;bottom:5px;left:0;background:rgba(255,255,255,.5)}.custom-theme .el-dropdown .el-dropdown__caret-button:hover::before{top:0;bottom:0}.custom-theme .el-dropdown .el-dropdown__caret-button .el-dropdown__icon{padding-left:0}.custom-theme .el-dropdown__icon{font-size:12px;margin:0 3px}.custom-theme .el-dropdown-menu{position:absolute;top:0;left:0;z-index:10;padding:10px 0;margin:5px 0;background-color:#fff;border:1px solid #e6ebf5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-dropdown-menu__item{list-style:none;line-height:36px;padding:0 20px;margin:0;font-size:14px;color:#5a5e66;cursor:pointer}.custom-theme .el-dropdown-menu__item:not(.is-disabled):hover{background-color:#e9e9ea;color:#515254}.custom-theme .el-dropdown-menu__item--divided{position:relative;margin-top:6px;border-top:1px solid #e6ebf5}.custom-theme .el-dropdown-menu__item--divided:before{content:'';height:6px;display:block;margin:0 -20px;background-color:#fff}.custom-theme .el-dropdown-menu__item.is-disabled{cursor:default;color:#bbb;pointer-events:none}.custom-theme .el-dropdown-menu--medium{padding:6px 0}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item{line-height:30px;padding:0 17px;font-size:14px}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:6px}.custom-theme .el-dropdown-menu--medium .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:6px;margin:0 -17px}.custom-theme .el-dropdown-menu--small{padding:6px 0}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item{line-height:27px;padding:0 15px;font-size:13px}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:4px}.custom-theme .el-dropdown-menu--small .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:4px;margin:0 -15px}.custom-theme .el-dropdown-menu--mini{padding:3px 0}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item{line-height:24px;padding:0 10px;font-size:12px}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided{margin-top:3px}.custom-theme .el-dropdown-menu--mini .el-dropdown-menu__item.el-dropdown-menu__item--divided:before{height:3px;margin:0 -10px}.custom-theme .el-menu{border-right:solid 1px #e6e6e6;list-style:none;position:relative;margin:0;padding-left:0;background-color:#fff}.custom-theme .el-menu::after,.custom-theme .el-menu::before{display:table;content:""}.custom-theme .el-menu::after{clear:both}.custom-theme .el-menu li{list-style:none}.custom-theme .el-menu--horizontal{border-right:none;border-bottom:solid 1px #e6e6e6}.custom-theme .el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:2px solid transparent;color:#878d99}.custom-theme .el-menu--horizontal .el-menu-item a,.custom-theme .el-menu--horizontal .el-menu-item a:hover{color:inherit}.custom-theme .el-menu--horizontal .el-menu-item:focus,.custom-theme .el-menu--horizontal .el-menu-item:hover{background-color:#fff}.custom-theme .el-menu--horizontal .el-submenu{float:left;position:relative}.custom-theme .el-menu--horizontal .el-submenu:focus{outline:0}.custom-theme .el-menu--horizontal .el-submenu:focus>.el-submenu__title{color:#2d2f33}.custom-theme .el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:none;padding:5px 0;background-color:#fff;z-index:100;min-width:100%;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:2px solid transparent;color:#878d99}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__title:hover{background-color:#fff}.custom-theme .el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.custom-theme .el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:8px;margin-top:-3px}.custom-theme .el-menu--horizontal .el-menu-item:focus,.custom-theme .el-menu--horizontal .el-menu-item:hover,.custom-theme .el-menu--horizontal .el-submenu__title:hover{outline:0;color:#2d2f33}.custom-theme .el-menu--horizontal>.el-menu-item.is-active,.custom-theme .el-menu--horizontal>.el-submenu.is-active .el-submenu__title{border-bottom:2px solid #262729;color:#2d2f33}.custom-theme .el-menu--collapse{width:64px}.custom-theme .el-menu--collapse>.el-menu-item [class^=el-icon-],.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title [class^=el-icon-]{margin:0;vertical-align:middle;width:24px;text-align:center}.custom-theme .el-menu--collapse>.el-menu-item .el-submenu__icon-arrow,.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}.custom-theme .el-menu--collapse>.el-menu-item span,.custom-theme .el-menu--collapse>.el-submenu>.el-submenu__title span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.custom-theme .el-menu--collapse>.el-menu-item.is-active i{color:inherit}.custom-theme .el-menu--collapse .el-menu .el-submenu{min-width:200px}.custom-theme .el-menu--collapse .el-submenu{position:relative}.custom-theme .el-menu--collapse .el-submenu .el-menu{position:absolute;margin-left:5px;top:0;left:100%;z-index:10;border:1px solid #dfe4ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-menu--collapse .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:none;transform:none}.custom-theme .el-menu-item{height:56px;line-height:56px;font-size:14px;color:#2d2f33;padding:0 20px;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.custom-theme .el-menu-item [class^=el-icon-]{margin-right:5px;width:24px;text-align:center;font-size:18px}.custom-theme .el-menu-item *{vertical-align:middle}.custom-theme .el-menu-item:first-child{margin-left:0}.custom-theme .el-menu-item:last-child{margin-right:0}.custom-theme .el-menu-item:focus,.custom-theme .el-menu-item:hover{outline:0;background-color:#e9e9ea}.custom-theme .el-menu-item i{color:#878d99}.custom-theme .el-menu-item.is-active{color:#262729}.custom-theme .el-menu-item.is-active i{color:inherit}.custom-theme .el-submenu__title{position:relative;height:56px;line-height:56px;font-size:14px;color:#2d2f33;padding:0 20px;cursor:pointer;position:relative;-webkit-transition:border-color .3s,background-color .3s,color .3s;transition:border-color .3s,background-color .3s,color .3s;-webkit-box-sizing:border-box;box-sizing:border-box;white-space:nowrap}.custom-theme .el-submenu__title *{vertical-align:middle}.custom-theme .el-submenu__title i{color:#878d99}.custom-theme .el-submenu__title:hover{background-color:#e9e9ea}.custom-theme .el-submenu .el-menu{border:none}.custom-theme .el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px;min-width:200px}.custom-theme .el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:12px}.custom-theme .el-submenu.is-active .el-submenu__title{border-bottom-color:#262729}.custom-theme .el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.custom-theme .el-submenu [class^=el-icon-]{vertical-align:middle;margin-right:5px;width:24px;text-align:center;font-size:18px}.custom-theme .el-menu-item-group>ul{padding:0}.custom-theme .el-menu-item-group__title{padding:7px 0 7px 20px;line-height:normal;font-size:12px;color:#878d99}.custom-theme .horizontal-collapse-transition .el-submenu__title .el-submenu__icon-arrow{-webkit-transition:.2s;transition:.2s;opacity:0}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.custom-theme .el-input-number .el-input{display:block}.custom-theme .el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.custom-theme .el-input-number__decrease,.custom-theme .el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#5a5e66;cursor:pointer;font-size:13px}.custom-theme .el-input-number__decrease:hover,.custom-theme .el-input-number__increase:hover{color:#262729}.custom-theme .el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.custom-theme .el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#262729}.custom-theme .el-input-number__decrease.is-disabled,.custom-theme .el-input-number__increase.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #d8dce5}.custom-theme .el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #d8dce5}.custom-theme .el-input-number.is-disabled .el-input-number__decrease,.custom-theme .el-input-number.is-disabled .el-input-number__increase{border-color:#dfe4ed;color:#dfe4ed}.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover,.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover{color:#dfe4ed;cursor:not-allowed}.custom-theme .el-input-number--medium{width:200px;line-height:34px}.custom-theme .el-input-number--medium .el-input-number__decrease,.custom-theme .el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.custom-theme .el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.custom-theme .el-input-number--small{width:130px;line-height:30px}.custom-theme .el-input-number--small .el-input-number__decrease,.custom-theme .el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.custom-theme .el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.custom-theme .el-input-number--mini{width:130px;line-height:26px}.custom-theme .el-input-number--mini .el-input-number__decrease,.custom-theme .el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.custom-theme .el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.custom-theme .el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease,.custom-theme .el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #d8dce5}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #d8dce5;border-radius:0 0 4px 0}.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.custom-theme .el-radio{color:#5a5e66;font-weight:500;line-height:1;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;outline:0;font-size:14px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.custom-theme .el-radio.is-bordered{padding:10px 20px 10px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-radio.is-bordered.is-checked{border-color:#262729}.custom-theme .el-radio.is-bordered.is-disabled{cursor:not-allowed;border-color:#e6ebf5}.custom-theme .el-radio.is-bordered+.el-radio.is-bordered{margin-left:10px}.custom-theme .el-radio--medium.is-bordered{padding:8px 20px 8px 10px;border-radius:4px}.custom-theme .el-radio--medium.is-bordered .el-radio__label{font-size:14px}.custom-theme .el-radio--medium.is-bordered .el-radio__inner{height:14px;width:14px}.custom-theme .el-radio--small.is-bordered{padding:6px 15px 6px 10px;border-radius:3px}.custom-theme .el-radio--small.is-bordered .el-radio__label{font-size:12px}.custom-theme .el-radio--small.is-bordered .el-radio__inner{height:12px;width:12px}.custom-theme .el-radio--mini.is-bordered{padding:4px 15px 4px 10px;border-radius:3px}.custom-theme .el-radio--mini.is-bordered .el-radio__label{font-size:12px}.custom-theme .el-radio--mini.is-bordered .el-radio__inner{height:12px;width:12px}.custom-theme .el-radio+.el-radio{margin-left:30px}.custom-theme .el-radio__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-radio__input.is-disabled .el-radio__inner{background-color:#f5f7fa;border-color:#dfe4ed;cursor:not-allowed}.custom-theme .el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:#f5f7fa}.custom-theme .el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:#f5f7fa;border-color:#dfe4ed}.custom-theme .el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#b4bccc}.custom-theme .el-radio__input.is-disabled+span.el-radio__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-radio__input.is-checked .el-radio__inner{border-color:#262729;background:#262729}.custom-theme .el-radio__input.is-checked .el-radio__inner::after{-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.custom-theme .el-radio__input.is-checked+.el-radio__label{color:#262729}.custom-theme .el-radio__input.is-focus .el-radio__inner{border-color:#262729}.custom-theme .el-radio__inner{border:1px solid #d8dce5;border-radius:100%;width:14px;height:14px;background-color:#fff;position:relative;cursor:pointer;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-radio__inner:hover{border-color:#262729}.custom-theme .el-radio__inner::after{width:4px;height:4px;border-radius:100%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6);transition:transform .15s cubic-bezier(.71,-.46,.88,.6),-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6)}.custom-theme .el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.custom-theme .el-radio:focus:not(.is-focus):not(:active) .el-radio__inner{-webkit-box-shadow:0 0 2px 2px #262729;box-shadow:0 0 2px 2px #262729}.custom-theme .el-radio__label{font-size:14px;padding-left:10px}.custom-theme .el-radio-group{display:inline-block;line-height:1;vertical-align:middle;font-size:0}.custom-theme .el-radio-button{position:relative;display:inline-block;outline:0}.custom-theme .el-radio-button__inner{display:inline-block;line-height:1;white-space:nowrap;vertical-align:middle;background:#fff;border:1px solid #d8dce5;font-weight:500;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;cursor:pointer;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-radio-button__inner.is-round{padding:12px 20px}.custom-theme .el-radio-button__inner:hover{color:#262729}.custom-theme .el-radio-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.custom-theme .el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #262729;box-shadow:-1px 0 0 0 #262729}.custom-theme .el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-radio-button__orig-radio:disabled:checked+.el-radio-button__inner{background-color:#edf2fc}.custom-theme .el-radio-button:first-child .el-radio-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:4px}.custom-theme .el-radio-button--medium .el-radio-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-radio-button--medium .el-radio-button__inner.is-round{padding:10px 20px}.custom-theme .el-radio-button--small .el-radio-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-radio-button--small .el-radio-button__inner.is-round{padding:9px 15px}.custom-theme .el-radio-button--mini .el-radio-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-radio-button--mini .el-radio-button__inner.is-round{padding:7px 15px}.custom-theme .el-radio-button:focus:not(.is-focus):not(:active){-webkit-box-shadow:0 0 2px 2px #262729;box-shadow:0 0 2px 2px #262729}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-switch{display:inline-block;position:relative;font-size:14px;line-height:20px;height:20px;vertical-align:middle}.custom-theme .el-switch.is-disabled .el-switch__core,.custom-theme .el-switch.is-disabled .el-switch__label{cursor:not-allowed}.custom-theme .el-switch__label{-webkit-transition:.2s;transition:.2s;height:20px;display:inline-block;font-size:14px;font-weight:500;cursor:pointer;vertical-align:middle;color:#2d2f33}.custom-theme .el-switch__label.is-active{color:#262729}.custom-theme .el-switch__label--left{margin-right:10px}.custom-theme .el-switch__label--right{margin-left:10px}.custom-theme .el-switch__label *{line-height:1;font-size:14px;display:inline-block}.custom-theme .el-switch__input{position:absolute;width:0;height:0;opacity:0;margin:0}.custom-theme .el-switch__input:focus~.el-switch__core{outline:1px solid #262729}.custom-theme .el-switch__core{margin:0;display:inline-block;position:relative;width:40px;height:20px;border:1px solid #d8dce5;outline:0;border-radius:10px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#d8dce5;cursor:pointer;-webkit-transition:border-color .3s,background-color .3s;transition:border-color .3s,background-color .3s;vertical-align:middle}.custom-theme .el-switch__core .el-switch__button{position:absolute;top:1px;left:1px;border-radius:100%;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;width:16px;height:16px;background-color:#fff}.custom-theme .el-switch.is-checked .el-switch__core{border-color:#262729;background-color:#262729}.custom-theme .el-switch.is-disabled{opacity:.6}.custom-theme .el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.custom-theme .el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.custom-theme .el-switch .label-fade-enter,.custom-theme .el-switch .label-fade-leave-active{opacity:0}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-select-dropdown{position:absolute;z-index:1001;border:solid 1px #dfe4ed;border-radius:4px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:5px 0}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#262729;background-color:#fff}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:20px;font-family:element-icons;content:"\E611";font-size:12px;font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.custom-theme .el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.custom-theme .el-select-dropdown .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-select-dropdown.is-arrow-fixed .popper__arrow{-webkit-transform:translateX(-200%);transform:translateX(-200%)}.custom-theme .el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.custom-theme .el-select-dropdown__wrap{max-height:274px}.custom-theme .el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-select-dropdown__item{font-size:14px;padding:0 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:34px;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-select-dropdown__item.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-select-dropdown__item.is-disabled:hover{background-color:#fff}.custom-theme .el-select-dropdown__item.hover,.custom-theme .el-select-dropdown__item:hover{background-color:#f5f7fa}.custom-theme .el-select-dropdown__item.selected{color:#262729;font-weight:700}.custom-theme .el-select-dropdown__item span{line-height:34px!important}.custom-theme .el-select-group{margin:0;padding:0}.custom-theme .el-select-group__wrap{position:relative;list-style:none;margin:0;padding:0}.custom-theme .el-select-group__wrap:not(:last-of-type){padding-bottom:24px}.custom-theme .el-select-group__wrap:not(:last-of-type)::after{content:'';position:absolute;display:block;left:20px;right:20px;bottom:12px;height:1px;background:#dfe4ed}.custom-theme .el-select-group__title{padding-left:20px;font-size:12px;color:#0a76a4;line-height:30px}.custom-theme .el-select-group .el-select-dropdown__item{padding-left:20px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-select{display:inline-block;position:relative}.custom-theme .el-select:hover .el-input__inner{border-color:#b4bccc}.custom-theme .el-select .el-input__inner{cursor:pointer;padding-right:35px}.custom-theme .el-select .el-input__inner:focus{border-color:#262729}.custom-theme .el-select .el-input .el-select__caret{color:#b4bccc;font-size:14px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);line-height:16px;cursor:pointer}.custom-theme .el-select .el-input .el-select__caret.is-reverse{-webkit-transform:rotateZ(0);transform:rotateZ(0)}.custom-theme .el-select .el-input .el-select__caret.is-show-close{font-size:14px;text-align:center;-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg);border-radius:100%;color:#b4bccc;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-select .el-input .el-select__caret.is-show-close:hover{color:#878d99}.custom-theme .el-select .el-input.is-disabled .el-input__inner{cursor:not-allowed}.custom-theme .el-select .el-input.is-disabled .el-input__inner:hover{border-color:#dfe4ed}.custom-theme .el-select>.el-input{display:block}.custom-theme .el-select__input{border:none;outline:0;padding:0;margin-left:15px;color:#666;font-size:14px;vertical-align:baseline;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:28px;background-color:transparent}.custom-theme .el-select__input.is-mini{height:14px}.custom-theme .el-select__close{cursor:pointer;position:absolute;top:8px;z-index:1000;right:25px;color:#b4bccc;line-height:18px;font-size:14px}.custom-theme .el-select__close:hover{color:#878d99}.custom-theme .el-select__tags{position:absolute;line-height:normal;white-space:normal;z-index:1;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.custom-theme .el-select .el-tag__close{margin-top:-2px}.custom-theme .el-select .el-tag{-webkit-box-sizing:border-box;box-sizing:border-box;border-color:transparent;margin:3px 0 3px 6px;background-color:#f0f2f5}.custom-theme .el-select .el-tag__close.el-icon-close{background-color:#b4bccc;right:-7px;color:#fff}.custom-theme .el-select .el-tag__close.el-icon-close:hover{background-color:#878d99}.custom-theme .el-select .el-tag__close.el-icon-close::before{display:block;-webkit-transform:translate(0,.5px);transform:translate(0,.5px)}.custom-theme .el-select__tag{display:inline-block;height:24px;line-height:24px;font-size:14px;border-radius:4px;color:#fff;background-color:#262729}.custom-theme .el-select__tag .el-icon-close{font-size:14px}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-table{position:relative;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%;max-width:100%;background-color:#fff;font-size:14px;color:#5a5e66}.custom-theme .el-table__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.custom-theme .el-table__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:color(#262729 s(16%) l(44%))}.custom-theme .el-table__expand-column .cell{padding:0;text-align:center}.custom-theme .el-table__expand-icon{position:relative;cursor:pointer;color:#666;font-size:12px;-webkit-transition:-webkit-transform .2s ease-in-out;transition:-webkit-transform .2s ease-in-out;transition:transform .2s ease-in-out;transition:transform .2s ease-in-out,-webkit-transform .2s ease-in-out;height:20px}.custom-theme .el-table__expand-icon--expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-table__expand-icon>.el-icon{position:absolute;left:50%;top:50%;margin-left:-5px;margin-top:-5px}.custom-theme .el-table__expanded-cell{background-color:#fff}.custom-theme .el-table__expanded-cell[class*=cell]{padding:20px 50px}.custom-theme .el-table__expanded-cell:hover{background-color:#f5f7fa!important}.custom-theme .el-table--fit{border-right:0;border-bottom:0}.custom-theme .el-table--fit td.gutter,.custom-theme .el-table--fit th.gutter{border-right-width:1px}.custom-theme .el-table thead{color:#878d99;font-weight:500}.custom-theme .el-table thead.is-group th{background:#f5f7fa}.custom-theme .el-table td,.custom-theme .el-table th{padding:12px 0;min-width:0;-webkit-box-sizing:border-box;box-sizing:border-box;text-overflow:ellipsis;vertical-align:middle;position:relative}.custom-theme .el-table td.is-center,.custom-theme .el-table th.is-center{text-align:center}.custom-theme .el-table td.is-left,.custom-theme .el-table th.is-left{text-align:left}.custom-theme .el-table td.is-right,.custom-theme .el-table th.is-right{text-align:right}.custom-theme .el-table td.gutter,.custom-theme .el-table th.gutter{width:15px;border-right-width:0;border-bottom-width:0;padding:0}.custom-theme .el-table td.is-hidden>*,.custom-theme .el-table th.is-hidden>*{visibility:hidden}.custom-theme .el-table--medium td,.custom-theme .el-table--medium th{padding:10px 0}.custom-theme .el-table--small{font-size:12px}.custom-theme .el-table--small td,.custom-theme .el-table--small th{padding:8px 0}.custom-theme .el-table--mini{font-size:12px}.custom-theme .el-table--mini td,.custom-theme .el-table--mini th{padding:6px 0}.custom-theme .el-table tr{background-color:#fff}.custom-theme .el-table tr input[type=checkbox]{margin:0}.custom-theme .el-table td,.custom-theme .el-table th.is-leaf{border-bottom:1px solid #e6ebf5}.custom-theme .el-table th.is-sortable{cursor:pointer}.custom-theme .el-table th{white-space:nowrap;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:left}.custom-theme .el-table th div{display:inline-block;padding-left:10px;padding-right:10px;line-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.custom-theme .el-table th>.cell{position:relative;word-wrap:normal;text-overflow:ellipsis;display:inline-block;vertical-align:middle;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-table th>.cell.highlight{color:#262729}.custom-theme .el-table th.required>div::before{display:inline-block;content:"";width:8px;height:8px;border-radius:50%;background:#ff4d51;margin-right:5px;vertical-align:middle}.custom-theme .el-table td div{-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-table td.gutter{width:0}.custom-theme .el-table .cell{-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis;white-space:normal;word-break:break-all;line-height:23px;padding-left:10px;padding-right:10px}.custom-theme .el-table .cell.el-tooltip{white-space:nowrap;min-width:50px}.custom-theme .el-table td:first-child .cell,.custom-theme .el-table th:first-child .cell{padding-left:0}.custom-theme .el-table--border,.custom-theme .el-table--group{border:1px solid #e6ebf5}.custom-theme .el-table--border::after,.custom-theme .el-table--group::after,.custom-theme .el-table::before{content:'';position:absolute;background-color:#e6ebf5;z-index:1}.custom-theme .el-table--border::after,.custom-theme .el-table--group::after{top:0;right:0;width:1px;height:100%}.custom-theme .el-table::before{left:0;bottom:0;width:100%;height:1px}.custom-theme .el-table--border{border-right:none;border-bottom:none}.custom-theme .el-table--border td,.custom-theme .el-table--border th{border-right:1px solid #e6ebf5}.custom-theme .el-table--border td:first-child .cell,.custom-theme .el-table--border th:first-child .cell{padding-left:10px}.custom-theme .el-table--border .has-gutter td:nth-last-of-type(2),.custom-theme .el-table--border .has-gutter th:nth-last-of-type(2){border-right:none}.custom-theme .el-table--border th.gutter:last-of-type{border-bottom:1px solid #e6ebf5;border-bottom-width:1px}.custom-theme .el-table--border th{border-bottom:1px solid #e6ebf5}.custom-theme .el-table--hidden{visibility:hidden}.custom-theme .el-table__fixed,.custom-theme .el-table__fixed-right{position:absolute;top:0;left:0;overflow-x:hidden;-webkit-box-shadow:0 0 10px rgba(0,0,0,.12);box-shadow:0 0 10px rgba(0,0,0,.12)}.custom-theme .el-table__fixed-right::before,.custom-theme .el-table__fixed::before{content:'';position:absolute;left:0;bottom:0;width:100%;height:1px;background-color:#e6ebf5;z-index:4}.custom-theme .el-table__fixed-right-patch{position:absolute;top:-1px;right:0;background-color:#fff;border-bottom:1px solid #e6ebf5}.custom-theme .el-table__fixed-right{top:0;left:auto;right:0}.custom-theme .el-table__fixed-right .el-table__fixed-body-wrapper,.custom-theme .el-table__fixed-right .el-table__fixed-footer-wrapper,.custom-theme .el-table__fixed-right .el-table__fixed-header-wrapper{left:auto;right:0}.custom-theme .el-table__fixed-header-wrapper{position:absolute;left:0;top:0;z-index:3}.custom-theme .el-table__fixed-footer-wrapper{position:absolute;left:0;bottom:0;z-index:3}.custom-theme .el-table__fixed-footer-wrapper tbody td{border-top:1px solid #e6ebf5;background-color:#f5f7fa;color:#5a5e66}.custom-theme .el-table__fixed-body-wrapper{position:absolute;left:0;top:37px;overflow:hidden;z-index:3}.custom-theme .el-table__body-wrapper,.custom-theme .el-table__footer-wrapper,.custom-theme .el-table__header-wrapper{width:100%}.custom-theme .el-table__footer-wrapper{margin-top:-1px}.custom-theme .el-table__footer-wrapper td{border-top:1px solid #e6ebf5}.custom-theme .el-table__body,.custom-theme .el-table__footer,.custom-theme .el-table__header{table-layout:fixed}.custom-theme .el-table__footer-wrapper,.custom-theme .el-table__header-wrapper{overflow:hidden}.custom-theme .el-table__footer-wrapper tbody td,.custom-theme .el-table__header-wrapper tbody td{background-color:#f5f7fa;color:#5a5e66}.custom-theme .el-table__body-wrapper{overflow:auto;position:relative}.custom-theme .el-table__body-wrapper.is-scroll-none~.el-table__fixed,.custom-theme .el-table__body-wrapper.is-scroll-none~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper.is-scroll-left~.el-table__fixed{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper.is-scroll-right~.el-table__fixed-right{-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-right~.el-table__fixed-right{border-left:1px solid #e6ebf5}.custom-theme .el-table__body-wrapper .el-table--border.is-scroll-left~.el-table__fixed{border-right:1px solid #e6ebf5}.custom-theme .el-table .caret-wrapper{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:13px;width:24px;cursor:pointer;overflow:initial}.custom-theme .el-table .sort-caret{color:#0a76a4;width:14px;overflow:hidden;font-size:13px}.custom-theme .el-table .ascending .sort-caret.ascending{color:#262729}.custom-theme .el-table .descending .sort-caret.descending{color:#262729}.custom-theme .el-table .hidden-columns{visibility:hidden;position:absolute;z-index:-1}.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped td{background:#fafafa}.custom-theme .el-table--striped .el-table__body tr.el-table__row--striped.current-row td{background-color:#e9e9ea}.custom-theme .el-table__body tr.hover-row.current-row>td,.custom-theme .el-table__body tr.hover-row.el-table__row--striped.current-row>td,.custom-theme .el-table__body tr.hover-row.el-table__row--striped>td,.custom-theme .el-table__body tr.hover-row>td{background-color:#e9e9ea}.custom-theme .el-table__body tr.current-row>td{background-color:#e9e9ea}.custom-theme .el-table__column-resize-proxy{position:absolute;left:200px;top:0;bottom:0;width:0;border-left:1px solid #e6ebf5;z-index:10}.custom-theme .el-table__column-filter-trigger{display:inline-block;line-height:34px;cursor:pointer}.custom-theme .el-table__column-filter-trigger i{color:#0a76a4;font-size:12px;-webkit-transform:scale(.75);transform:scale(.75)}.custom-theme .el-table--enable-row-transition .el-table__body td{-webkit-transition:background-color .25s ease;transition:background-color .25s ease}.custom-theme .el-table--enable-row-hover .el-table__body tr:hover>td{background-color:#f5f7fa}.custom-theme .el-table--fluid-height .el-table__fixed,.custom-theme .el-table--fluid-height .el-table__fixed-right{bottom:0;overflow:hidden}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-table-column--selection .cell{padding-left:14px;padding-right:14px}.custom-theme .el-table-filter{border:solid 1px #e6ebf5;border-radius:2px;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-box-sizing:border-box;box-sizing:border-box;margin:2px 0}.custom-theme .el-table-filter__list{padding:5px 0;margin:0;list-style:none;min-width:100px}.custom-theme .el-table-filter__list-item{line-height:36px;padding:0 10px;cursor:pointer;font-size:14px}.custom-theme .el-table-filter__list-item:hover{background-color:#e9e9ea;color:#515254}.custom-theme .el-table-filter__list-item.is-active{background-color:#262729;color:#fff}.custom-theme .el-table-filter__content{min-width:100px}.custom-theme .el-table-filter__bottom{border-top:1px solid #e6ebf5;padding:8px}.custom-theme .el-table-filter__bottom button{background:0 0;border:none;color:#5a5e66;cursor:pointer;font-size:13px;padding:0 3px}.custom-theme .el-table-filter__bottom button:hover{color:#262729}.custom-theme .el-table-filter__bottom button:focus{outline:0}.custom-theme .el-table-filter__bottom button.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-table-filter__checkbox-group{padding:10px}.custom-theme .el-table-filter__checkbox-group label.el-checkbox{display:block;margin-bottom:8px;margin-left:5px}.custom-theme .el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.custom-theme .el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover div{background-color:#edf2fc}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:#5a5e66}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:first-child div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.custom-theme .el-date-table.is-week-mode .el-date-table__row:hover td:last-child div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.custom-theme .el-date-table.is-week-mode .el-date-table__row.current div{background-color:#edf2fc}.custom-theme .el-date-table td{width:32px;height:30px;padding:4px 0;-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;cursor:pointer;position:relative}.custom-theme .el-date-table td div{height:30px;padding:3px 0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-table td span{width:24px;height:24px;display:block;margin:0 auto;line-height:24px;position:absolute;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border-radius:50%}.custom-theme .el-date-table td.next-month,.custom-theme .el-date-table td.prev-month{color:#b4bccc}.custom-theme .el-date-table td.today{position:relative}.custom-theme .el-date-table td.today span{color:#262729}.custom-theme .el-date-table td.today.end-date span,.custom-theme .el-date-table td.today.start-date span{color:#fff}.custom-theme .el-date-table td.available:hover{color:#262729}.custom-theme .el-date-table td.in-range div{background-color:#edf2fc}.custom-theme .el-date-table td.in-range div:hover{background-color:#edf2fc}.custom-theme .el-date-table td.current:not(.disabled) span{color:#fff;background-color:#262729}.custom-theme .el-date-table td.end-date div,.custom-theme .el-date-table td.start-date div{color:#fff}.custom-theme .el-date-table td.end-date span,.custom-theme .el-date-table td.start-date span{background-color:#262729}.custom-theme .el-date-table td.start-date div{margin-left:5px;border-top-left-radius:15px;border-bottom-left-radius:15px}.custom-theme .el-date-table td.end-date div{margin-right:5px;border-top-right-radius:15px;border-bottom-right-radius:15px}.custom-theme .el-date-table td.disabled div{background-color:#f5f7fa;opacity:1;cursor:not-allowed;color:#b4bccc}.custom-theme .el-date-table td.week{font-size:80%;color:#5a5e66}.custom-theme .el-date-table th{padding:5px;color:#5a5e66;font-weight:400;border-bottom:solid 1px #e6ebf5}.custom-theme .el-month-table{font-size:12px;margin:-1px;border-collapse:collapse}.custom-theme .el-month-table td{text-align:center;padding:20px 3px;cursor:pointer}.custom-theme .el-month-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#b4bccc}.custom-theme .el-month-table td.disabled .cell:hover{color:#b4bccc}.custom-theme .el-month-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#5a5e66;margin:0 auto}.custom-theme .el-month-table td .cell:hover{color:#262729}.custom-theme .el-month-table td.current:not(.disabled) .cell{color:#262729}.custom-theme .el-year-table{font-size:12px;margin:-1px;border-collapse:collapse}.custom-theme .el-year-table .el-icon{color:#2d2f33}.custom-theme .el-year-table td{text-align:center;padding:20px 3px;cursor:pointer}.custom-theme .el-year-table td.disabled .cell{background-color:#f5f7fa;cursor:not-allowed;color:#b4bccc}.custom-theme .el-year-table td.disabled .cell:hover{color:#b4bccc}.custom-theme .el-year-table td .cell{width:48px;height:32px;display:block;line-height:32px;color:#5a5e66;margin:0 auto}.custom-theme .el-year-table td .cell:hover{color:#262729}.custom-theme .el-year-table td.current:not(.disabled) .cell{color:#262729}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.custom-theme .el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.custom-theme .el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.custom-theme .el-time-spinner__arrow{font-size:12px;color:#878d99;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.custom-theme .el-time-spinner__arrow:hover{color:#262729}.custom-theme .el-time-spinner__arrow.el-icon-arrow-up{top:10px}.custom-theme .el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.custom-theme .el-time-spinner__input.el-input{width:70%}.custom-theme .el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.custom-theme .el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.custom-theme .el-time-spinner__list::after,.custom-theme .el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.custom-theme .el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#5a5e66}.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.custom-theme .el-time-spinner__item.active:not(.disabled){color:#2d2f33;font-weight:700}.custom-theme .el-time-spinner__item.disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-picker-panel{color:#5a5e66;border:1px solid #dfe4ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.custom-theme .el-picker-panel__body-wrapper::after,.custom-theme .el-picker-panel__body::after{content:"";display:table;clear:both}.custom-theme .el-picker-panel__content{position:relative;margin:15px}.custom-theme .el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.custom-theme .el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#5a5e66;padding-left:12px;text-align:left;outline:0;cursor:pointer}.custom-theme .el-picker-panel__shortcut:hover{color:#262729}.custom-theme .el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#262729}.custom-theme .el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-picker-panel__icon-btn{font-size:12px;color:#2d2f33;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.custom-theme .el-picker-panel__icon-btn:hover{color:#262729}.custom-theme .el-picker-panel__icon-btn.is-disabled{color:#bbb}.custom-theme .el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.custom-theme .el-picker-panel__link-btn{vertical-align:middle}.custom-theme .el-picker-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-picker-panel [slot=sidebar],.custom-theme .el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.custom-theme .el-picker-panel [slot=sidebar]+.el-picker-panel__body,.custom-theme .el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.custom-theme .el-date-picker{width:322px}.custom-theme .el-date-picker.has-sidebar.has-time{width:434px}.custom-theme .el-date-picker.has-sidebar{width:438px}.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.custom-theme .el-date-picker .el-picker-panel__content{width:292px}.custom-theme .el-date-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-picker__header{margin:12px;text-align:center}.custom-theme .el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #e6ebf5}.custom-theme .el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.custom-theme .el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#5a5e66}.custom-theme .el-date-picker__header-label:hover{color:#262729}.custom-theme .el-date-picker__header-label.active{color:#262729}.custom-theme .el-date-picker__prev-btn{float:left}.custom-theme .el-date-picker__next-btn{float:right}.custom-theme .el-date-picker__time-wrap{padding:10px;text-align:center}.custom-theme .el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.custom-theme .el-date-range-picker{width:646px}.custom-theme .el-date-range-picker.has-sidebar{width:756px}.custom-theme .el-date-range-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-range-picker .el-picker-panel__body{min-width:513px}.custom-theme .el-date-range-picker .el-picker-panel__content{margin:0}.custom-theme .el-date-range-picker__header{position:relative;text-align:center;height:28px}.custom-theme .el-date-range-picker__header [class*=arrow-left]{float:left}.custom-theme .el-date-range-picker__header [class*=arrow-right]{float:right}.custom-theme .el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.custom-theme .el-date-range-picker__content{float:left;width:50%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:16px}.custom-theme .el-date-range-picker__content.is-left{border-right:1px solid #e4e4e4}.custom-theme .el-date-range-picker__content.is-right .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.custom-theme .el-date-range-picker__editors-wrap{-webkit-box-sizing:border-box;box-sizing:border-box;display:table-cell}.custom-theme .el-date-range-picker__editors-wrap.is-right{text-align:right}.custom-theme .el-date-range-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-range-picker__time-header>.el-icon-arrow-right{font-size:20px;vertical-align:middle;display:table-cell;color:#2d2f33}.custom-theme .el-date-range-picker__time-picker-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-range-picker__time-picker-wrap .el-picker-panel{position:absolute;top:13px;right:0;z-index:1;background:#fff}.custom-theme .el-time-range-picker{width:354px;overflow:visible}.custom-theme .el-time-range-picker__content{position:relative;text-align:center;padding:10px}.custom-theme .el-time-range-picker__cell{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:4px 7px 7px;width:50%;display:inline-block}.custom-theme .el-time-range-picker__header{margin-bottom:5px;text-align:center;font-size:14px}.custom-theme .el-time-range-picker__body{border-radius:2px;border:1px solid #dfe4ed}.custom-theme .el-time-panel{margin:5px 0;border:solid 1px #dfe4ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-time-panel__content{font-size:0;position:relative;overflow:hidden}.custom-theme .el-time-panel__content::after,.custom-theme .el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #dfe4ed;border-bottom:1px solid #dfe4ed}.custom-theme .el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.custom-theme .el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.custom-theme .el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.custom-theme .el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.custom-theme .el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#2d2f33}.custom-theme .el-time-panel__btn.confirm{font-weight:800;color:#262729}.custom-theme .el-time-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-picker-panel{color:#5a5e66;border:1px solid #dfe4ed;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);background:#fff;border-radius:4px;line-height:30px;margin:5px 0}.custom-theme .el-picker-panel__body-wrapper::after,.custom-theme .el-picker-panel__body::after{content:"";display:table;clear:both}.custom-theme .el-picker-panel__content{position:relative;margin:15px}.custom-theme .el-picker-panel__footer{border-top:1px solid #e4e4e4;padding:4px;text-align:right;background-color:#fff;position:relative;font-size:0}.custom-theme .el-picker-panel__shortcut{display:block;width:100%;border:0;background-color:transparent;line-height:28px;font-size:14px;color:#5a5e66;padding-left:12px;text-align:left;outline:0;cursor:pointer}.custom-theme .el-picker-panel__shortcut:hover{color:#262729}.custom-theme .el-picker-panel__shortcut.active{background-color:#e6f1fe;color:#262729}.custom-theme .el-picker-panel__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-picker-panel__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-picker-panel__icon-btn{font-size:12px;color:#2d2f33;border:0;background:0 0;cursor:pointer;outline:0;margin-top:8px}.custom-theme .el-picker-panel__icon-btn:hover{color:#262729}.custom-theme .el-picker-panel__icon-btn.is-disabled{color:#bbb}.custom-theme .el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.custom-theme .el-picker-panel__link-btn{vertical-align:middle}.custom-theme .el-picker-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-picker-panel [slot=sidebar],.custom-theme .el-picker-panel__sidebar{position:absolute;top:0;bottom:0;width:110px;border-right:1px solid #e4e4e4;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;background-color:#fff;overflow:auto}.custom-theme .el-picker-panel [slot=sidebar]+.el-picker-panel__body,.custom-theme .el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.custom-theme .el-date-picker{width:322px}.custom-theme .el-date-picker.has-sidebar.has-time{width:434px}.custom-theme .el-date-picker.has-sidebar{width:438px}.custom-theme .el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.custom-theme .el-date-picker .el-picker-panel__content{width:292px}.custom-theme .el-date-picker table{table-layout:fixed;width:100%}.custom-theme .el-date-picker__editor-wrap{position:relative;display:table-cell;padding:0 5px}.custom-theme .el-date-picker__time-header{position:relative;border-bottom:1px solid #e4e4e4;font-size:12px;padding:8px 5px 5px 5px;display:table;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-date-picker__header{margin:12px;text-align:center}.custom-theme .el-date-picker__header--bordered{margin-bottom:0;padding-bottom:12px;border-bottom:solid 1px #e6ebf5}.custom-theme .el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.custom-theme .el-date-picker__header-label{font-size:16px;font-weight:500;padding:0 5px;line-height:22px;text-align:center;cursor:pointer;color:#5a5e66}.custom-theme .el-date-picker__header-label:hover{color:#262729}.custom-theme .el-date-picker__header-label.active{color:#262729}.custom-theme .el-date-picker__prev-btn{float:left}.custom-theme .el-date-picker__next-btn{float:right}.custom-theme .el-date-picker__time-wrap{padding:10px;text-align:center}.custom-theme .el-date-picker__time-label{float:left;cursor:pointer;line-height:30px;margin-left:10px}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .time-select{margin:5px 0;min-width:0}.custom-theme .time-select .el-picker-panel__content{max-height:200px;margin:0}.custom-theme .time-select-item{padding:8px 10px;font-size:14px;line-height:20px}.custom-theme .time-select-item.selected:not(.disabled){color:#262729;font-weight:700}.custom-theme .time-select-item.disabled{color:#dfe4ed;cursor:not-allowed}.custom-theme .time-select-item:hover{background-color:#f5f7fa;font-weight:700;cursor:pointer}.custom-theme .fade-in-linear-enter-active,.custom-theme .fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .fade-in-linear-enter,.custom-theme .fade-in-linear-leave,.custom-theme .fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-linear-enter-active,.custom-theme .el-fade-in-linear-leave-active{-webkit-transition:opacity .2s linear;transition:opacity .2s linear}.custom-theme .el-fade-in-linear-enter,.custom-theme .el-fade-in-linear-leave,.custom-theme .el-fade-in-linear-leave-active{opacity:0}.custom-theme .el-fade-in-enter-active,.custom-theme .el-fade-in-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-fade-in-enter,.custom-theme .el-fade-in-leave-active{opacity:0}.custom-theme .el-zoom-in-center-enter-active,.custom-theme .el-zoom-in-center-leave-active{-webkit-transition:all .3s cubic-bezier(.55,0,.1,1);transition:all .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-zoom-in-center-enter,.custom-theme .el-zoom-in-center-leave-active{opacity:0;-webkit-transform:scaleX(0);transform:scaleX(0)}.custom-theme .el-zoom-in-top-enter-active,.custom-theme .el-zoom-in-top-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center top;transform-origin:center top}.custom-theme .el-zoom-in-top-enter,.custom-theme .el-zoom-in-top-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-bottom-enter-active,.custom-theme .el-zoom-in-bottom-leave-active{opacity:1;-webkit-transform:scaleY(1);transform:scaleY(1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:center bottom;transform-origin:center bottom}.custom-theme .el-zoom-in-bottom-enter,.custom-theme .el-zoom-in-bottom-leave-active{opacity:0;-webkit-transform:scaleY(0);transform:scaleY(0)}.custom-theme .el-zoom-in-left-enter-active,.custom-theme .el-zoom-in-left-leave-active{opacity:1;-webkit-transform:scale(1,1);transform:scale(1,1);-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;-webkit-transform-origin:top left;transform-origin:top left}.custom-theme .el-zoom-in-left-enter,.custom-theme .el-zoom-in-left-leave-active{opacity:0;-webkit-transform:scale(.45,.45);transform:scale(.45,.45)}.custom-theme .collapse-transition{-webkit-transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out;transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.custom-theme .horizontal-collapse-transition{-webkit-transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out;transition:.3s width ease-in-out,.3s padding-left ease-in-out,.3s padding-right ease-in-out}.custom-theme .el-list-enter-active,.custom-theme .el-list-leave-active{-webkit-transition:all 1s;transition:all 1s}.custom-theme .el-list-enter,.custom-theme .el-list-leave-active{opacity:0;-webkit-transform:translateY(-30px);transform:translateY(-30px)}.custom-theme .el-opacity-transition{-webkit-transition:opacity .3s cubic-bezier(.55,0,.1,1);transition:opacity .3s cubic-bezier(.55,0,.1,1)}.custom-theme .el-date-editor{position:relative;display:inline-block;text-align:left}.custom-theme .el-date-editor.el-input,.custom-theme .el-date-editor.el-input__inner{width:220px}.custom-theme .el-date-editor--daterange.el-input,.custom-theme .el-date-editor--daterange.el-input__inner,.custom-theme .el-date-editor--timerange.el-input,.custom-theme .el-date-editor--timerange.el-input__inner{width:350px}.custom-theme .el-date-editor--datetimerange.el-input,.custom-theme .el-date-editor--datetimerange.el-input__inner{width:400px}.custom-theme .el-date-editor .el-range__icon{font-size:14px;margin-left:-5px;color:#b4bccc;float:left;line-height:32px}.custom-theme .el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;outline:0;display:inline-block;height:100%;margin:0;padding:0;width:39%;text-align:center;font-size:14px;color:#5a5e66}.custom-theme .el-date-editor .el-range-input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-input::placeholder{color:#b4bccc}.custom-theme .el-date-editor .el-range-separator{display:inline-block;height:100%;padding:0 5px;margin:0;text-align:center;line-height:32px;font-size:14px;width:5%;color:#2d2f33}.custom-theme .el-date-editor .el-range__close-icon{font-size:14px;color:#b4bccc;width:25px;display:inline-block;float:right;line-height:32px}.custom-theme .el-range-editor.el-input__inner{padding:3px 10px}.custom-theme .el-range-editor.is-active{border-color:#262729}.custom-theme .el-range-editor.is-active:hover{border-color:#262729}.custom-theme .el-range-editor--medium.el-input__inner{height:36px}.custom-theme .el-range-editor--medium .el-range-separator{line-height:28px;font-size:14px}.custom-theme .el-range-editor--medium .el-range-input{font-size:14px}.custom-theme .el-range-editor--medium .el-range__close-icon,.custom-theme .el-range-editor--medium .el-range__icon{line-height:28px}.custom-theme .el-range-editor--small.el-input__inner{height:32px}.custom-theme .el-range-editor--small .el-range-separator{line-height:24px;font-size:13px}.custom-theme .el-range-editor--small .el-range-input{font-size:13px}.custom-theme .el-range-editor--small .el-range__close-icon,.custom-theme .el-range-editor--small .el-range__icon{line-height:24px}.custom-theme .el-range-editor--mini.el-input__inner{height:28px}.custom-theme .el-range-editor--mini .el-range-separator{line-height:20px;font-size:12px}.custom-theme .el-range-editor--mini .el-range-input{font-size:12px}.custom-theme .el-range-editor--mini .el-range__close-icon,.custom-theme .el-range-editor--mini .el-range__icon{line-height:20px}.custom-theme .el-range-editor.is-disabled{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled:focus,.custom-theme .el-range-editor.is-disabled:hover{border-color:#dfe4ed}.custom-theme .el-range-editor.is-disabled input{background-color:#f5f7fa;color:#b4bccc;cursor:not-allowed}.custom-theme .el-range-editor.is-disabled input::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled input::placeholder{color:#b4bccc}.custom-theme .el-range-editor.is-disabled .el-range-separator{color:#b4bccc}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.custom-theme .el-time-spinner.has-seconds .el-time-spinner__wrapper:nth-child(2){margin-left:1%}.custom-theme .el-time-spinner__wrapper{max-height:190px;overflow:auto;display:inline-block;width:50%;vertical-align:top;position:relative}.custom-theme .el-time-spinner__wrapper .el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.custom-theme .el-time-spinner__wrapper.is-arrow{-webkit-box-sizing:border-box;box-sizing:border-box;text-align:center;overflow:hidden}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__list{-webkit-transform:translateY(-32px);transform:translateY(-32px)}.custom-theme .el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.disabled):not(.active){background:#fff;cursor:default}.custom-theme .el-time-spinner__arrow{font-size:12px;color:#878d99;position:absolute;left:0;width:100%;z-index:1;text-align:center;height:30px;line-height:30px;cursor:pointer}.custom-theme .el-time-spinner__arrow:hover{color:#262729}.custom-theme .el-time-spinner__arrow.el-icon-arrow-up{top:10px}.custom-theme .el-time-spinner__arrow.el-icon-arrow-down{bottom:10px}.custom-theme .el-time-spinner__input.el-input{width:70%}.custom-theme .el-time-spinner__input.el-input .el-input__inner{padding:0;text-align:center}.custom-theme .el-time-spinner__list{padding:0;margin:0;list-style:none;text-align:center}.custom-theme .el-time-spinner__list::after,.custom-theme .el-time-spinner__list::before{content:'';display:block;width:100%;height:80px}.custom-theme .el-time-spinner__item{height:32px;line-height:32px;font-size:12px;color:#5a5e66}.custom-theme .el-time-spinner__item:hover:not(.disabled):not(.active){background:#f5f7fa;cursor:pointer}.custom-theme .el-time-spinner__item.active:not(.disabled){color:#2d2f33;font-weight:700}.custom-theme .el-time-spinner__item.disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-time-panel{margin:5px 0;border:solid 1px #dfe4ed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);border-radius:2px;position:absolute;width:180px;left:0;z-index:1000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-time-panel__content{font-size:0;position:relative;overflow:hidden}.custom-theme .el-time-panel__content::after,.custom-theme .el-time-panel__content::before{content:"";top:50%;position:absolute;margin-top:-15px;height:32px;z-index:-1;left:0;right:0;-webkit-box-sizing:border-box;box-sizing:border-box;padding-top:6px;text-align:left;border-top:1px solid #dfe4ed;border-bottom:1px solid #dfe4ed}.custom-theme .el-time-panel__content::after{left:50%;margin-left:12%;margin-right:12%}.custom-theme .el-time-panel__content::before{padding-left:50%;margin-right:12%;margin-left:12%}.custom-theme .el-time-panel__content.has-seconds::after{left:calc(100% / 3 * 2)}.custom-theme .el-time-panel__content.has-seconds::before{padding-left:calc(100% / 3)}.custom-theme .el-time-panel__footer{border-top:1px solid #e4e4e4;padding:4px;height:36px;line-height:25px;text-align:right;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-time-panel__btn{border:none;line-height:28px;padding:0 5px;margin:0 5px;cursor:pointer;background-color:transparent;outline:0;font-size:12px;color:#2d2f33}.custom-theme .el-time-panel__btn.confirm{font-weight:800;color:#262729}.custom-theme .el-time-panel .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-popover{position:absolute;background:#fff;min-width:150px;border-radius:4px;border:1px solid #e6ebf5;padding:12px;z-index:2000;color:#5a5e66;line-height:1.4;text-align:justify;word-break:break-all;font-size:14px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-popover--plain{padding:18px 20px}.custom-theme .el-popover__title{color:#2d2f33;font-size:16px;line-height:1;margin-bottom:12px}.custom-theme .el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.custom-theme .el-tooltip__popper .popper__arrow,.custom-theme .el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-tooltip__popper .popper__arrow{border-width:6px}.custom-theme .el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.custom-theme .el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=right]{margin-left:12px}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=left]{margin-right:12px}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-dark{background:#2d2f33;color:#fff}.custom-theme .el-tooltip__popper.is-light{background:#fff;border:1px solid #2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.custom-theme .v-modal-enter{-webkit-animation:v-modal-in .2s ease;animation:v-modal-in .2s ease}.custom-theme .v-modal-leave{-webkit-animation:v-modal-out .2s ease forwards;animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.custom-theme .v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-message-box{display:inline-block;width:420px;padding-bottom:10px;vertical-align:middle;background-color:#fff;border-radius:4px;border:1px solid #e6ebf5;font-size:18px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);text-align:left;overflow:hidden;-webkit-backface-visibility:hidden;backface-visibility:hidden}.custom-theme .el-message-box__wrapper{position:fixed;top:0;bottom:0;left:0;right:0;text-align:center}.custom-theme .el-message-box__wrapper::after{content:"";display:inline-block;height:100%;width:0;vertical-align:middle}.custom-theme .el-message-box__header{position:relative;padding:15px;padding-bottom:10px}.custom-theme .el-message-box__title{padding-left:0;margin-bottom:0;font-size:18px;line-height:1;color:#2d2f33}.custom-theme .el-message-box__headerbtn{position:absolute;top:15px;right:15px;padding:0;border:none;outline:0;background:0 0;font-size:16px;cursor:pointer}.custom-theme .el-message-box__headerbtn .el-message-box__close{color:#0a76a4}.custom-theme .el-message-box__headerbtn:focus .el-message-box__close,.custom-theme .el-message-box__headerbtn:hover .el-message-box__close{color:#262729}.custom-theme .el-message-box__content{position:relative;padding:10px 15px;color:#5a5e66;font-size:14px}.custom-theme .el-message-box__input{padding-top:15px}.custom-theme .el-message-box__input input.invalid{border-color:#b3450e}.custom-theme .el-message-box__input input.invalid:focus{border-color:#b3450e}.custom-theme .el-message-box__status{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);font-size:24px!important}.custom-theme .el-message-box__status::before{padding-left:1px}.custom-theme .el-message-box__status+.el-message-box__message{padding-left:36px;padding-right:12px}.custom-theme .el-message-box__status.el-icon-success{color:#409167}.custom-theme .el-message-box__status.el-icon-info{color:#0a76a4}.custom-theme .el-message-box__status.el-icon-warning{color:#9da408}.custom-theme .el-message-box__status.el-icon-error{color:#b3450e}.custom-theme .el-message-box__message{margin:0}.custom-theme .el-message-box__message p{margin:0;line-height:24px}.custom-theme .el-message-box__errormsg{color:#b3450e;font-size:12px;min-height:18px;margin-top:2px}.custom-theme .el-message-box__btns{padding:5px 15px 0;text-align:right}.custom-theme .el-message-box__btns button:nth-child(2){margin-left:10px}.custom-theme .el-message-box__btns-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.custom-theme .el-message-box--center{padding-bottom:30px}.custom-theme .el-message-box--center .el-message-box__header{padding-top:30px}.custom-theme .el-message-box--center .el-message-box__title{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-message-box--center .el-message-box__status{position:relative;top:auto;padding-right:5px;text-align:center;-webkit-transform:translateY(-1px);transform:translateY(-1px)}.custom-theme .el-message-box--center .el-message-box__message{margin-left:0}.custom-theme .el-message-box--center .el-message-box__btns,.custom-theme .el-message-box--center .el-message-box__content{text-align:center}.custom-theme .el-message-box--center .el-message-box__content{padding-left:27px;padding-right:27px}.custom-theme .msgbox-fade-enter-active{-webkit-animation:msgbox-fade-in .3s;animation:msgbox-fade-in .3s}.custom-theme .msgbox-fade-leave-active{-webkit-animation:msgbox-fade-out .3s;animation:msgbox-fade-out .3s}@-webkit-keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@keyframes msgbox-fade-in{0%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}}@-webkit-keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}@keyframes msgbox-fade-out{0%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}100%{-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0);opacity:0}}.custom-theme .el-breadcrumb{font-size:14px;line-height:1}.custom-theme .el-breadcrumb::after,.custom-theme .el-breadcrumb::before{display:table;content:""}.custom-theme .el-breadcrumb::after{clear:both}.custom-theme .el-breadcrumb__separator{margin:0 9px;font-weight:700;color:#b4bccc}.custom-theme .el-breadcrumb__separator[class*=icon]{margin:0 6px;font-weight:400}.custom-theme .el-breadcrumb__item{float:left}.custom-theme .el-breadcrumb__inner,.custom-theme .el-breadcrumb__inner a{font-weight:700;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1);color:#2d2f33}.custom-theme .el-breadcrumb__inner a:hover,.custom-theme .el-breadcrumb__inner:hover{color:#262729;cursor:pointer}.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{font-weight:400;color:#5a5e66;cursor:text}.custom-theme .el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.custom-theme .el-form--label-left .el-form-item__label{text-align:left}.custom-theme .el-form--label-top .el-form-item__label{float:none;display:inline-block;text-align:left;padding:0 0 10px 0}.custom-theme .el-form--inline .el-form-item{display:inline-block;margin-right:10px;vertical-align:top}.custom-theme .el-form--inline .el-form-item__label{float:none;display:inline-block}.custom-theme .el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.custom-theme .el-form--inline.el-form--label-top .el-form-item__content{display:block}.custom-theme .el-form-item{margin-bottom:22px}.custom-theme .el-form-item::after,.custom-theme .el-form-item::before{display:table;content:""}.custom-theme .el-form-item::after{clear:both}.custom-theme .el-form-item .el-form-item{margin-bottom:0}.custom-theme .el-form-item .el-input__validateIcon{display:none}.custom-theme .el-form-item--medium .el-form-item__label{line-height:36px}.custom-theme .el-form-item--medium .el-form-item__content{line-height:36px}.custom-theme .el-form-item--small .el-form-item__label{line-height:32px}.custom-theme .el-form-item--small .el-form-item__content{line-height:32px}.custom-theme .el-form-item--small.el-form-item{margin-bottom:18px}.custom-theme .el-form-item--small .el-form-item__error{padding-top:2px}.custom-theme .el-form-item--mini .el-form-item__label{line-height:28px}.custom-theme .el-form-item--mini .el-form-item__content{line-height:28px}.custom-theme .el-form-item--mini.el-form-item{margin-bottom:18px}.custom-theme .el-form-item--mini .el-form-item__error{padding-top:1px}.custom-theme .el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:#5a5e66;line-height:40px;padding:0 12px 0 0;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-form-item__content{line-height:40px;position:relative;font-size:14px}.custom-theme .el-form-item__content::after,.custom-theme .el-form-item__content::before{display:table;content:""}.custom-theme .el-form-item__content::after{clear:both}.custom-theme .el-form-item__error{color:#b3450e;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}.custom-theme .el-form-item__error--inline{position:relative;top:auto;left:auto;display:inline-block;margin-left:10px}.custom-theme .el-form-item.is-required .el-form-item__label:before{content:'*';color:#b3450e;margin-right:4px}.custom-theme .el-form-item.is-error .el-input__inner,.custom-theme .el-form-item.is-error .el-input__inner:focus,.custom-theme .el-form-item.is-error .el-textarea__inner,.custom-theme .el-form-item.is-error .el-textarea__inner:focus{border-color:#b3450e}.custom-theme .el-form-item.is-error .el-input-group__append .el-input__inner,.custom-theme .el-form-item.is-error .el-input-group__prepend .el-input__inner{border-color:transparent}.custom-theme .el-form-item.is-error .el-input__validateIcon{color:#b3450e}.custom-theme .el-form-item.is-success .el-input__inner,.custom-theme .el-form-item.is-success .el-input__inner:focus,.custom-theme .el-form-item.is-success .el-textarea__inner,.custom-theme .el-form-item.is-success .el-textarea__inner:focus{border-color:#409167}.custom-theme .el-form-item.is-success .el-input-group__append .el-input__inner,.custom-theme .el-form-item.is-success .el-input-group__prepend .el-input__inner{border-color:transparent}.custom-theme .el-form-item.is-success .el-input__validateIcon{color:#409167}.custom-theme .el-form-item--feedback .el-input__validateIcon{display:inline-block}.custom-theme .el-tabs__header{padding:0;position:relative;margin:0 0 15px}.custom-theme .el-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:#262729;z-index:1;-webkit-transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:-webkit-transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1);transition:transform .3s cubic-bezier(.645,.045,.355,1),-webkit-transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.custom-theme .el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;-webkit-transition:all .15s;transition:all .15s}.custom-theme .el-tabs__new-tab .el-icon-plus{-webkit-transform:scale(.8,.8);transform:scale(.8,.8)}.custom-theme .el-tabs__new-tab:hover{color:#262729}.custom-theme .el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.custom-theme .el-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:#dfe4ed;z-index:1}.custom-theme .el-tabs__nav-wrap.is-scrollable{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-tabs__nav-scroll{overflow:hidden}.custom-theme .el-tabs__nav-next,.custom-theme .el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:#878d99}.custom-theme .el-tabs__nav-next{right:0}.custom-theme .el-tabs__nav-prev{left:0}.custom-theme .el-tabs__nav{white-space:nowrap;position:relative;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:left;z-index:2}.custom-theme .el-tabs__item{padding:0 20px;height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;line-height:40px;display:inline-block;list-style:none;font-size:14px;font-weight:500;color:#2d2f33;position:relative}.custom-theme .el-tabs__item:focus,.custom-theme .el-tabs__item:focus:active{outline:0}.custom-theme .el-tabs__item .el-icon-close{border-radius:50%;text-align:center;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.custom-theme .el-tabs__item .el-icon-close:before{-webkit-transform:scale(.9);transform:scale(.9);display:inline-block}.custom-theme .el-tabs__item .el-icon-close:hover{background-color:#b4bccc;color:#fff}.custom-theme .el-tabs__item.is-active{color:#262729}.custom-theme .el-tabs__item:hover{color:#262729;cursor:pointer}.custom-theme .el-tabs__item.is-disabled{color:#b4bccc;cursor:default}.custom-theme .el-tabs__content{overflow:hidden;position:relative}.custom-theme .el-tabs--card>.el-tabs__header{border-bottom:1px solid #dfe4ed}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid #dfe4ed;border-bottom:none;border-radius:4px 4px 0 0}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-webkit-transform-origin:100% 50%;transform-origin:100% 50%}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid #dfe4ed;-webkit-transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1);transition:color .3s cubic-bezier(.645,.045,.355,1),padding .3s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:#fff}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.custom-theme .el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close{width:14px}.custom-theme .el-tabs--border-card{background:#fff;border:1px solid #d8dce5;-webkit-box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.custom-theme .el-tabs--border-card>.el-tabs__content{padding:15px}.custom-theme .el-tabs--border-card>.el-tabs__header{background-color:#f5f7fa;border-bottom:1px solid #dfe4ed;margin:0}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap::after{content:none}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item{-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;margin:-1px -1px 0;color:#878d99}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{color:#262729;background-color:#fff;border-right-color:#d8dce5;border-left-color:#d8dce5}.custom-theme .el-tabs--border-card>.el-tabs__header .el-tabs__item:hover{color:#262729}.custom-theme .el-tabs--bottom:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2),.custom-theme .el-tabs--top:not(.el-tabs--border-card):not(.el-tabs--card) .el-tabs__item:nth-child(2){padding-left:0}.custom-theme .el-tabs--bottom .el-tabs__header{margin-bottom:0;margin-top:10px}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__header{border-bottom:0;border-top:1px solid #d8dce5}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap{margin-top:-1px;margin-bottom:0}.custom-theme .el-tabs--bottom.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:0 -1px -1px -1px}.custom-theme .el-tabs--left,.custom-theme .el-tabs--right{overflow:hidden}.custom-theme .el-tabs--left .el-tabs__header,.custom-theme .el-tabs--left .el-tabs__nav-scroll,.custom-theme .el-tabs--left .el-tabs__nav-wrap,.custom-theme .el-tabs--right .el-tabs__header,.custom-theme .el-tabs--right .el-tabs__nav-scroll,.custom-theme .el-tabs--right .el-tabs__nav-wrap{height:100%}.custom-theme .el-tabs--left .el-tabs__active-bar,.custom-theme .el-tabs--right .el-tabs__active-bar{top:0;bottom:auto;width:2px;height:auto}.custom-theme .el-tabs--left .el-tabs__nav-wrap,.custom-theme .el-tabs--right .el-tabs__nav-wrap{margin-bottom:0}.custom-theme .el-tabs--left .el-tabs__nav-wrap.is-scrollable,.custom-theme .el-tabs--right .el-tabs__nav-wrap.is-scrollable{padding:30px 0}.custom-theme .el-tabs--left .el-tabs__nav-wrap::after,.custom-theme .el-tabs--right .el-tabs__nav-wrap::after{height:100%;width:2px;bottom:auto;top:0}.custom-theme .el-tabs--left .el-tabs__nav,.custom-theme .el-tabs--right .el-tabs__nav{float:none}.custom-theme .el-tabs--left .el-tabs__item,.custom-theme .el-tabs--right .el-tabs__item{display:block}.custom-theme .el-tabs--left .el-tabs__nav-next,.custom-theme .el-tabs--left .el-tabs__nav-prev,.custom-theme .el-tabs--right .el-tabs__nav-next,.custom-theme .el-tabs--right .el-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.custom-theme .el-tabs--left .el-tabs__nav-next i,.custom-theme .el-tabs--left .el-tabs__nav-prev i,.custom-theme .el-tabs--right .el-tabs__nav-next i,.custom-theme .el-tabs--right .el-tabs__nav-prev i{-webkit-transform:rotateZ(90deg);transform:rotateZ(90deg)}.custom-theme .el-tabs--left .el-tabs__nav-prev,.custom-theme .el-tabs--right .el-tabs__nav-prev{left:auto;top:0}.custom-theme .el-tabs--left .el-tabs__nav-next,.custom-theme .el-tabs--right .el-tabs__nav-next{right:auto;bottom:0}.custom-theme .el-tabs--left .el-tabs__header{float:left;margin-bottom:0;margin-right:10px}.custom-theme .el-tabs--left .el-tabs__nav-wrap{margin-right:-1px}.custom-theme .el-tabs--left .el-tabs__nav-wrap::after{left:auto;right:0}.custom-theme .el-tabs--left .el-tabs__active-bar{right:0;left:auto}.custom-theme .el-tabs--left .el-tabs__item{text-align:right}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__active-bar{display:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item{border-left:none;border-right:1px solid #dfe4ed;border-bottom:none;border-top:1px solid #dfe4ed}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item:first-child{border-right:1px solid #dfe4ed;border-top:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active{border:1px solid #dfe4ed;border-right-color:#fff;border-left:none;border-bottom:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:first-child{border-top:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__item.is-active:last-child{border-bottom:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid #dfe4ed;border-right:none}.custom-theme .el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__header{border-right:1px solid #dfe4ed}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:-1px 0 -1px -1px}.custom-theme .el-tabs--left.el-tabs--border-card .el-tabs__item.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.custom-theme .el-tabs--right .el-tabs__header{float:right;margin-bottom:0;margin-left:10px}.custom-theme .el-tabs--right .el-tabs__nav-wrap{margin-left:-1px}.custom-theme .el-tabs--right .el-tabs__nav-wrap::after{left:0;right:auto}.custom-theme .el-tabs--right .el-tabs__active-bar{left:0}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__active-bar{display:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item{border-bottom:none;border-top:1px solid #dfe4ed}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item:first-child{border-left:1px solid #dfe4ed;border-top:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active{border:1px solid #dfe4ed;border-left-color:#fff;border-right:none;border-bottom:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:first-child{border-top:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__item.is-active:last-child{border-bottom:none}.custom-theme .el-tabs--right.el-tabs--card .el-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid #dfe4ed;border-left:none}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__header{border-left:1px solid #dfe4ed}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item{border:1px solid transparent;margin:-1px -1px -1px 0}.custom-theme .el-tabs--right.el-tabs--border-card .el-tabs__item.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.custom-theme .slideInLeft-transition,.custom-theme .slideInRight-transition{display:inline-block}.custom-theme .slideInRight-enter{-webkit-animation:slideInRight-enter .3s;animation:slideInRight-enter .3s}.custom-theme .slideInRight-leave{position:absolute;left:0;right:0;-webkit-animation:slideInRight-leave .3s;animation:slideInRight-leave .3s}.custom-theme .slideInLeft-enter{-webkit-animation:slideInLeft-enter .3s;animation:slideInLeft-enter .3s}.custom-theme .slideInLeft-leave{position:absolute;left:0;right:0;-webkit-animation:slideInLeft-leave .3s;animation:slideInLeft-leave .3s}@-webkit-keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInRight-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@keyframes slideInRight-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(100%);transform:translateX(100%);opacity:0}}@-webkit-keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes slideInLeft-enter{0%{opacity:0;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}to{opacity:1;-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}@keyframes slideInLeft-leave{0%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(0);transform:translateX(0);opacity:1}100%{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-transform:translateX(-100%);transform:translateX(-100%);opacity:0}}.custom-theme .el-tag{background-color:rgba(38,39,41,.1);display:inline-block;padding:0 10px;height:32px;line-height:30px;font-size:12px;color:#262729;border-radius:4px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid rgba(38,39,41,.2);white-space:nowrap}.custom-theme .el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-5px;color:#262729}.custom-theme .el-tag .el-icon-close::before{display:block}.custom-theme .el-tag .el-icon-close:hover{background-color:#262729;color:#fff}.custom-theme .el-tag--info{background-color:rgba(10,118,164,.1);border-color:rgba(10,118,164,.2);color:#0a76a4}.custom-theme .el-tag--info.is-hit{border-color:#0a76a4}.custom-theme .el-tag--info .el-tag__close{color:#0a76a4}.custom-theme .el-tag--info .el-tag__close:hover{background-color:#0a76a4;color:#fff}.custom-theme .el-tag--success{background-color:rgba(64,145,103,.1);border-color:rgba(64,145,103,.2);color:#409167}.custom-theme .el-tag--success.is-hit{border-color:#409167}.custom-theme .el-tag--success .el-tag__close{color:#409167}.custom-theme .el-tag--success .el-tag__close:hover{background-color:#409167;color:#fff}.custom-theme .el-tag--warning{background-color:rgba(157,164,8,.1);border-color:rgba(157,164,8,.2);color:#9da408}.custom-theme .el-tag--warning.is-hit{border-color:#9da408}.custom-theme .el-tag--warning .el-tag__close{color:#9da408}.custom-theme .el-tag--warning .el-tag__close:hover{background-color:#9da408;color:#fff}.custom-theme .el-tag--danger{background-color:rgba(179,69,14,.1);border-color:rgba(179,69,14,.2);color:#b3450e}.custom-theme .el-tag--danger.is-hit{border-color:#b3450e}.custom-theme .el-tag--danger .el-tag__close{color:#b3450e}.custom-theme .el-tag--danger .el-tag__close:hover{background-color:#b3450e;color:#fff}.custom-theme .el-tag--medium{height:28px;line-height:26px}.custom-theme .el-tag--medium .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--small{height:24px;padding:0 8px;line-height:22px}.custom-theme .el-tag--small .el-icon-close{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-tag--mini{height:20px;padding:0 5px;line-height:19px}.custom-theme .el-tag--mini .el-icon-close{margin-left:-3px;-webkit-transform:scale(.7);transform:scale(.7)}.custom-theme .el-tree{cursor:default;background:#fff;color:#5a5e66}.custom-theme .el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.custom-theme .el-tree__empty-text{position:absolute;left:50%;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#623615}.custom-theme .el-tree-node{white-space:nowrap}.custom-theme .el-tree-node__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;height:26px;cursor:pointer}.custom-theme .el-tree-node__content>.el-tree-node__expand-icon{padding:6px}.custom-theme .el-tree-node__content>.el-checkbox{margin-right:8px}.custom-theme .el-tree-node__content:hover{background-color:#f5f7fa}.custom-theme .el-tree-node__expand-icon{cursor:pointer;color:#b4bccc;font-size:12px;-webkit-transform:rotate(0);transform:rotate(0);-webkit-transition:-webkit-transform .3s ease-in-out;transition:-webkit-transform .3s ease-in-out;transition:transform .3s ease-in-out;transition:transform .3s ease-in-out,-webkit-transform .3s ease-in-out}.custom-theme .el-tree-node__expand-icon.expanded{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default}.custom-theme .el-tree-node__label{font-size:14px}.custom-theme .el-tree-node__loading-icon{margin-right:8px;font-size:14px;color:#b4bccc}.custom-theme .el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.custom-theme .el-tree-node.is-expanded>.el-tree-node__children{display:block}.custom-theme .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:#eee}.custom-theme .el-alert{width:100%;padding:8px 16px;margin:0;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;opacity:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-transition:opacity .2s;transition:opacity .2s}.custom-theme .el-alert.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-alert--success{background-color:#ecf4f0;color:#409167}.custom-theme .el-alert--success .el-alert__description{color:#409167}.custom-theme .el-alert--info{background-color:#e7f1f6;color:#0a76a4}.custom-theme .el-alert--info .el-alert__description{color:#0a76a4}.custom-theme .el-alert--warning{background-color:#f5f6e6;color:#9da408}.custom-theme .el-alert--warning .el-alert__description{color:#9da408}.custom-theme .el-alert--error{background-color:#f7ece7;color:#b3450e}.custom-theme .el-alert--error .el-alert__description{color:#b3450e}.custom-theme .el-alert__content{display:table-cell;padding:0 8px}.custom-theme .el-alert__icon{font-size:16px;width:16px}.custom-theme .el-alert__icon.is-big{font-size:28px;width:28px}.custom-theme .el-alert__title{font-size:13px;line-height:18px}.custom-theme .el-alert__title.is-bold{font-weight:700}.custom-theme .el-alert .el-alert__description{font-size:12px;margin:5px 0 0 0}.custom-theme .el-alert__closebtn{font-size:12px;color:#b4bccc;opacity:1;position:absolute;top:12px;right:15px;cursor:pointer}.custom-theme .el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.custom-theme .el-alert-fade-enter,.custom-theme .el-alert-fade-leave-active{opacity:0}.custom-theme .el-notification{display:-webkit-box;display:-ms-flexbox;display:flex;width:330px;padding:14px 26px 14px 13px;border-radius:8px;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #e6ebf5;position:fixed;background-color:#fff;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);-webkit-transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s;transition:opacity .3s,transform .3s,left .3s,right .3s,top .4s,bottom .3s,-webkit-transform .3s;overflow:hidden}.custom-theme .el-notification.right{right:16px}.custom-theme .el-notification.left{left:16px}.custom-theme .el-notification__group{margin-left:13px}.custom-theme .el-notification__title{font-weight:700;font-size:16px;color:#2d2f33;margin:0}.custom-theme .el-notification__content{font-size:14px;line-height:21px;margin:6px 0 0 0;color:#5a5e66;text-align:justify}.custom-theme .el-notification__content p{margin:0}.custom-theme .el-notification__icon{height:24px;width:24px;font-size:24px;-webkit-transform:translateY(4px);transform:translateY(4px)}.custom-theme .el-notification__closeBtn{position:absolute;top:15px;right:15px;cursor:pointer;color:#878d99;font-size:16px}.custom-theme .el-notification__closeBtn:hover{color:#5a5e66}.custom-theme .el-notification .el-icon-success{color:#409167}.custom-theme .el-notification .el-icon-error{color:#b3450e}.custom-theme .el-notification .el-icon-info{color:#0a76a4}.custom-theme .el-notification .el-icon-warning{color:#9da408}.custom-theme .el-notification-fade-enter.right{right:0;-webkit-transform:translateX(100%);transform:translateX(100%)}.custom-theme .el-notification-fade-enter.left{left:0;-webkit-transform:translateX(-100%);transform:translateX(-100%)}.custom-theme .el-notification-fade-leave-active{opacity:0}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-input-number{position:relative;display:inline-block;width:180px;line-height:38px}.custom-theme .el-input-number .el-input{display:block}.custom-theme .el-input-number .el-input__inner{-webkit-appearance:none;padding-left:50px;padding-right:50px;text-align:center}.custom-theme .el-input-number__decrease,.custom-theme .el-input-number__increase{position:absolute;z-index:1;top:1px;width:40px;height:auto;text-align:center;background:#f5f7fa;color:#5a5e66;cursor:pointer;font-size:13px}.custom-theme .el-input-number__decrease:hover,.custom-theme .el-input-number__increase:hover{color:#262729}.custom-theme .el-input-number__decrease:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled),.custom-theme .el-input-number__increase:hover:not(.is-disabled)~.el-input .el-input__inner:not(.is-disabled){border-color:#262729}.custom-theme .el-input-number__decrease.is-disabled,.custom-theme .el-input-number__increase.is-disabled{color:#b4bccc;cursor:not-allowed}.custom-theme .el-input-number__increase{right:1px;border-radius:0 4px 4px 0;border-left:1px solid #d8dce5}.custom-theme .el-input-number__decrease{left:1px;border-radius:4px 0 0 4px;border-right:1px solid #d8dce5}.custom-theme .el-input-number.is-disabled .el-input-number__decrease,.custom-theme .el-input-number.is-disabled .el-input-number__increase{border-color:#dfe4ed;color:#dfe4ed}.custom-theme .el-input-number.is-disabled .el-input-number__decrease:hover,.custom-theme .el-input-number.is-disabled .el-input-number__increase:hover{color:#dfe4ed;cursor:not-allowed}.custom-theme .el-input-number--medium{width:200px;line-height:34px}.custom-theme .el-input-number--medium .el-input-number__decrease,.custom-theme .el-input-number--medium .el-input-number__increase{width:36px;font-size:14px}.custom-theme .el-input-number--medium .el-input__inner{padding-left:43px;padding-right:43px}.custom-theme .el-input-number--small{width:130px;line-height:30px}.custom-theme .el-input-number--small .el-input-number__decrease,.custom-theme .el-input-number--small .el-input-number__increase{width:32px;font-size:13px}.custom-theme .el-input-number--small .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--small .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.9);transform:scale(.9)}.custom-theme .el-input-number--small .el-input__inner{padding-left:39px;padding-right:39px}.custom-theme .el-input-number--mini{width:130px;line-height:26px}.custom-theme .el-input-number--mini .el-input-number__decrease,.custom-theme .el-input-number--mini .el-input-number__increase{width:28px;font-size:12px}.custom-theme .el-input-number--mini .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number--mini .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number--mini .el-input__inner{padding-left:35px;padding-right:35px}.custom-theme .el-input-number.is-without-controls .el-input__inner{padding-left:15px;padding-right:15px}.custom-theme .el-input-number.is-controls-right .el-input__inner{padding-left:15px;padding-right:50px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease,.custom-theme .el-input-number.is-controls-right .el-input-number__increase{height:auto;line-height:19px}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.custom-theme .el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{-webkit-transform:scale(.8);transform:scale(.8)}.custom-theme .el-input-number.is-controls-right .el-input-number__increase{border-radius:0 4px 0 0;border-bottom:1px solid #d8dce5}.custom-theme .el-input-number.is-controls-right .el-input-number__decrease{right:1px;bottom:1px;top:auto;left:auto;border-right:none;border-left:1px solid #d8dce5;border-radius:0 0 4px 0}.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=medium] [class*=increase]{line-height:17px}.custom-theme .el-input-number.is-controls-right[class*=small] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=small] [class*=increase]{line-height:15px}.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=decrease],.custom-theme .el-input-number.is-controls-right[class*=mini] [class*=increase]{line-height:13px}.custom-theme .el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.custom-theme .el-tooltip__popper .popper__arrow,.custom-theme .el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-tooltip__popper .popper__arrow{border-width:6px}.custom-theme .el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.custom-theme .el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:#2d2f33;border-bottom-width:0}.custom-theme .el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=right]{margin-left:12px}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:#2d2f33;border-left-width:0}.custom-theme .el-tooltip__popper[x-placement^=left]{margin-right:12px}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-dark{background:#2d2f33;color:#fff}.custom-theme .el-tooltip__popper.is-light{background:#fff;border:1px solid #2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:#2d2f33}.custom-theme .el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.custom-theme .el-slider::after,.custom-theme .el-slider::before{display:table;content:""}.custom-theme .el-slider::after{clear:both}.custom-theme .el-slider__runway{width:100%;height:6px;margin:16px 0;background-color:#dfe4ed;border-radius:3px;position:relative;cursor:pointer;vertical-align:middle}.custom-theme .el-slider__runway.show-input{margin-right:160px;width:auto}.custom-theme .el-slider__runway.disabled{cursor:default}.custom-theme .el-slider__runway.disabled .el-slider__bar{background-color:#b4bccc}.custom-theme .el-slider__runway.disabled .el-slider__button{border-color:#b4bccc}.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.hover,.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button-wrapper.dragging{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button.dragging,.custom-theme .el-slider__runway.disabled .el-slider__button.hover,.custom-theme .el-slider__runway.disabled .el-slider__button:hover{-webkit-transform:scale(1);transform:scale(1)}.custom-theme .el-slider__runway.disabled .el-slider__button.hover,.custom-theme .el-slider__runway.disabled .el-slider__button:hover{cursor:not-allowed}.custom-theme .el-slider__runway.disabled .el-slider__button.dragging{cursor:not-allowed}.custom-theme .el-slider__input{float:right;margin-top:3px}.custom-theme .el-slider__bar{height:6px;background-color:#262729;border-top-left-radius:3px;border-bottom-left-radius:3px;position:absolute}.custom-theme .el-slider__button-wrapper{height:36px;width:36px;position:absolute;z-index:1001;top:-15px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:transparent;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-slider__button-wrapper::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-slider__button-wrapper .el-tooltip{vertical-align:middle;display:inline-block}.custom-theme .el-slider__button-wrapper.hover,.custom-theme .el-slider__button-wrapper:hover{cursor:-webkit-grab;cursor:grab}.custom-theme .el-slider__button-wrapper.dragging{cursor:-webkit-grabbing;cursor:grabbing}.custom-theme .el-slider__button{width:16px;height:16px;border:solid 2px #262729;background-color:#fff;border-radius:50%;-webkit-transition:.2s;transition:.2s;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-slider__button.dragging,.custom-theme .el-slider__button.hover,.custom-theme .el-slider__button:hover{-webkit-transform:scale(1.2);transform:scale(1.2)}.custom-theme .el-slider__button.hover,.custom-theme .el-slider__button:hover{cursor:-webkit-grab;cursor:grab}.custom-theme .el-slider__button.dragging{cursor:-webkit-grabbing;cursor:grabbing}.custom-theme .el-slider__stop{position:absolute;height:6px;width:6px;border-radius:100%;background-color:#fff;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.custom-theme .el-slider.is-vertical{position:relative}.custom-theme .el-slider.is-vertical .el-slider__runway{width:4px;height:100%;margin:0 16px}.custom-theme .el-slider.is-vertical .el-slider__bar{width:4px;height:auto;border-radius:0 0 3px 3px}.custom-theme .el-slider.is-vertical .el-slider__button-wrapper{top:auto;left:-15px;-webkit-transform:translateY(50%);transform:translateY(50%)}.custom-theme .el-slider.is-vertical .el-slider__stop{-webkit-transform:translateY(50%);transform:translateY(50%)}.custom-theme .el-slider.is-vertical.el-slider--with-input{padding-bottom:58px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input{overflow:visible;float:none;position:absolute;bottom:22px;width:36px;margin-top:15px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input__inner{text-align:center;padding-left:5px;padding-right:5px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{top:32px;margin-top:-1px;border:1px solid #d8dce5;line-height:20px;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__decrease{width:18px;right:18px;border-bottom-left-radius:4px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase{width:19px;border-bottom-right-radius:4px}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input .el-input-number__increase~.el-input .el-input__inner{border-bottom-left-radius:0;border-bottom-right-radius:0}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:hover .el-input-number__increase{border-color:#b4bccc}.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__decrease,.custom-theme .el-slider.is-vertical.el-slider--with-input .el-slider__input:active .el-input-number__increase{border-color:#262729}.custom-theme .el-loading-parent--relative{position:relative!important}.custom-theme .el-loading-parent--hidden{overflow:hidden!important}.custom-theme .el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;-webkit-transition:opacity .3s;transition:opacity .3s}.custom-theme .el-loading-mask.is-fullscreen{position:fixed}.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.custom-theme .el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:50px;width:50px}.custom-theme .el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.custom-theme .el-loading-spinner .el-loading-text{color:#262729;margin:3px 0;font-size:14px}.custom-theme .el-loading-spinner .circular{height:42px;width:42px;-webkit-animation:loading-rotate 2s linear infinite;animation:loading-rotate 2s linear infinite}.custom-theme .el-loading-spinner .path{-webkit-animation:loading-dash 1.5s ease-in-out infinite;animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#262729;stroke-linecap:round}.custom-theme .el-loading-spinner i{color:#262729}.custom-theme .el-loading-fade-enter,.custom-theme .el-loading-fade-leave-active{opacity:0}@-webkit-keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes loading-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.custom-theme .el-row{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-row::after,.custom-theme .el-row::before{display:table;content:""}.custom-theme .el-row::after{clear:both}.custom-theme .el-row--flex{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-row--flex:after,.custom-theme .el-row--flex:before{display:none}.custom-theme .el-row--flex.is-justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-row--flex.is-justify-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.custom-theme .el-row--flex.is-justify-space-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.custom-theme .el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.custom-theme .el-row--flex.is-align-middle{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-row--flex.is-align-bottom{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.custom-theme [class*=el-col-]{float:left;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-col-0{display:none}.custom-theme .el-col-1{width:4.16667%}.custom-theme .el-col-offset-1{margin-left:4.16667%}.custom-theme .el-col-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-push-1{position:relative;left:4.16667%}.custom-theme .el-col-2{width:8.33333%}.custom-theme .el-col-offset-2{margin-left:8.33333%}.custom-theme .el-col-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-push-2{position:relative;left:8.33333%}.custom-theme .el-col-3{width:12.5%}.custom-theme .el-col-offset-3{margin-left:12.5%}.custom-theme .el-col-pull-3{position:relative;right:12.5%}.custom-theme .el-col-push-3{position:relative;left:12.5%}.custom-theme .el-col-4{width:16.66667%}.custom-theme .el-col-offset-4{margin-left:16.66667%}.custom-theme .el-col-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-push-4{position:relative;left:16.66667%}.custom-theme .el-col-5{width:20.83333%}.custom-theme .el-col-offset-5{margin-left:20.83333%}.custom-theme .el-col-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-push-5{position:relative;left:20.83333%}.custom-theme .el-col-6{width:25%}.custom-theme .el-col-offset-6{margin-left:25%}.custom-theme .el-col-pull-6{position:relative;right:25%}.custom-theme .el-col-push-6{position:relative;left:25%}.custom-theme .el-col-7{width:29.16667%}.custom-theme .el-col-offset-7{margin-left:29.16667%}.custom-theme .el-col-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-push-7{position:relative;left:29.16667%}.custom-theme .el-col-8{width:33.33333%}.custom-theme .el-col-offset-8{margin-left:33.33333%}.custom-theme .el-col-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-push-8{position:relative;left:33.33333%}.custom-theme .el-col-9{width:37.5%}.custom-theme .el-col-offset-9{margin-left:37.5%}.custom-theme .el-col-pull-9{position:relative;right:37.5%}.custom-theme .el-col-push-9{position:relative;left:37.5%}.custom-theme .el-col-10{width:41.66667%}.custom-theme .el-col-offset-10{margin-left:41.66667%}.custom-theme .el-col-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-push-10{position:relative;left:41.66667%}.custom-theme .el-col-11{width:45.83333%}.custom-theme .el-col-offset-11{margin-left:45.83333%}.custom-theme .el-col-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-push-11{position:relative;left:45.83333%}.custom-theme .el-col-12{width:50%}.custom-theme .el-col-offset-12{margin-left:50%}.custom-theme .el-col-pull-12{position:relative;right:50%}.custom-theme .el-col-push-12{position:relative;left:50%}.custom-theme .el-col-13{width:54.16667%}.custom-theme .el-col-offset-13{margin-left:54.16667%}.custom-theme .el-col-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-push-13{position:relative;left:54.16667%}.custom-theme .el-col-14{width:58.33333%}.custom-theme .el-col-offset-14{margin-left:58.33333%}.custom-theme .el-col-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-push-14{position:relative;left:58.33333%}.custom-theme .el-col-15{width:62.5%}.custom-theme .el-col-offset-15{margin-left:62.5%}.custom-theme .el-col-pull-15{position:relative;right:62.5%}.custom-theme .el-col-push-15{position:relative;left:62.5%}.custom-theme .el-col-16{width:66.66667%}.custom-theme .el-col-offset-16{margin-left:66.66667%}.custom-theme .el-col-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-push-16{position:relative;left:66.66667%}.custom-theme .el-col-17{width:70.83333%}.custom-theme .el-col-offset-17{margin-left:70.83333%}.custom-theme .el-col-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-push-17{position:relative;left:70.83333%}.custom-theme .el-col-18{width:75%}.custom-theme .el-col-offset-18{margin-left:75%}.custom-theme .el-col-pull-18{position:relative;right:75%}.custom-theme .el-col-push-18{position:relative;left:75%}.custom-theme .el-col-19{width:79.16667%}.custom-theme .el-col-offset-19{margin-left:79.16667%}.custom-theme .el-col-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-push-19{position:relative;left:79.16667%}.custom-theme .el-col-20{width:83.33333%}.custom-theme .el-col-offset-20{margin-left:83.33333%}.custom-theme .el-col-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-push-20{position:relative;left:83.33333%}.custom-theme .el-col-21{width:87.5%}.custom-theme .el-col-offset-21{margin-left:87.5%}.custom-theme .el-col-pull-21{position:relative;right:87.5%}.custom-theme .el-col-push-21{position:relative;left:87.5%}.custom-theme .el-col-22{width:91.66667%}.custom-theme .el-col-offset-22{margin-left:91.66667%}.custom-theme .el-col-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-push-22{position:relative;left:91.66667%}.custom-theme .el-col-23{width:95.83333%}.custom-theme .el-col-offset-23{margin-left:95.83333%}.custom-theme .el-col-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-push-23{position:relative;left:95.83333%}.custom-theme .el-col-24{width:100%}.custom-theme .el-col-offset-24{margin-left:100%}.custom-theme .el-col-pull-24{position:relative;right:100%}.custom-theme .el-col-push-24{position:relative;left:100%}@media only screen and (max-width:768px){.custom-theme .el-col-xs-0{display:none}.custom-theme .el-col-xs-1{width:4.16667%}.custom-theme .el-col-xs-offset-1{margin-left:4.16667%}.custom-theme .el-col-xs-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-xs-push-1{position:relative;left:4.16667%}.custom-theme .el-col-xs-2{width:8.33333%}.custom-theme .el-col-xs-offset-2{margin-left:8.33333%}.custom-theme .el-col-xs-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-xs-push-2{position:relative;left:8.33333%}.custom-theme .el-col-xs-3{width:12.5%}.custom-theme .el-col-xs-offset-3{margin-left:12.5%}.custom-theme .el-col-xs-pull-3{position:relative;right:12.5%}.custom-theme .el-col-xs-push-3{position:relative;left:12.5%}.custom-theme .el-col-xs-4{width:16.66667%}.custom-theme .el-col-xs-offset-4{margin-left:16.66667%}.custom-theme .el-col-xs-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-xs-push-4{position:relative;left:16.66667%}.custom-theme .el-col-xs-5{width:20.83333%}.custom-theme .el-col-xs-offset-5{margin-left:20.83333%}.custom-theme .el-col-xs-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-xs-push-5{position:relative;left:20.83333%}.custom-theme .el-col-xs-6{width:25%}.custom-theme .el-col-xs-offset-6{margin-left:25%}.custom-theme .el-col-xs-pull-6{position:relative;right:25%}.custom-theme .el-col-xs-push-6{position:relative;left:25%}.custom-theme .el-col-xs-7{width:29.16667%}.custom-theme .el-col-xs-offset-7{margin-left:29.16667%}.custom-theme .el-col-xs-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-xs-push-7{position:relative;left:29.16667%}.custom-theme .el-col-xs-8{width:33.33333%}.custom-theme .el-col-xs-offset-8{margin-left:33.33333%}.custom-theme .el-col-xs-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-xs-push-8{position:relative;left:33.33333%}.custom-theme .el-col-xs-9{width:37.5%}.custom-theme .el-col-xs-offset-9{margin-left:37.5%}.custom-theme .el-col-xs-pull-9{position:relative;right:37.5%}.custom-theme .el-col-xs-push-9{position:relative;left:37.5%}.custom-theme .el-col-xs-10{width:41.66667%}.custom-theme .el-col-xs-offset-10{margin-left:41.66667%}.custom-theme .el-col-xs-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-xs-push-10{position:relative;left:41.66667%}.custom-theme .el-col-xs-11{width:45.83333%}.custom-theme .el-col-xs-offset-11{margin-left:45.83333%}.custom-theme .el-col-xs-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-xs-push-11{position:relative;left:45.83333%}.custom-theme .el-col-xs-12{width:50%}.custom-theme .el-col-xs-offset-12{margin-left:50%}.custom-theme .el-col-xs-pull-12{position:relative;right:50%}.custom-theme .el-col-xs-push-12{position:relative;left:50%}.custom-theme .el-col-xs-13{width:54.16667%}.custom-theme .el-col-xs-offset-13{margin-left:54.16667%}.custom-theme .el-col-xs-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-xs-push-13{position:relative;left:54.16667%}.custom-theme .el-col-xs-14{width:58.33333%}.custom-theme .el-col-xs-offset-14{margin-left:58.33333%}.custom-theme .el-col-xs-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-xs-push-14{position:relative;left:58.33333%}.custom-theme .el-col-xs-15{width:62.5%}.custom-theme .el-col-xs-offset-15{margin-left:62.5%}.custom-theme .el-col-xs-pull-15{position:relative;right:62.5%}.custom-theme .el-col-xs-push-15{position:relative;left:62.5%}.custom-theme .el-col-xs-16{width:66.66667%}.custom-theme .el-col-xs-offset-16{margin-left:66.66667%}.custom-theme .el-col-xs-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-xs-push-16{position:relative;left:66.66667%}.custom-theme .el-col-xs-17{width:70.83333%}.custom-theme .el-col-xs-offset-17{margin-left:70.83333%}.custom-theme .el-col-xs-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-xs-push-17{position:relative;left:70.83333%}.custom-theme .el-col-xs-18{width:75%}.custom-theme .el-col-xs-offset-18{margin-left:75%}.custom-theme .el-col-xs-pull-18{position:relative;right:75%}.custom-theme .el-col-xs-push-18{position:relative;left:75%}.custom-theme .el-col-xs-19{width:79.16667%}.custom-theme .el-col-xs-offset-19{margin-left:79.16667%}.custom-theme .el-col-xs-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-xs-push-19{position:relative;left:79.16667%}.custom-theme .el-col-xs-20{width:83.33333%}.custom-theme .el-col-xs-offset-20{margin-left:83.33333%}.custom-theme .el-col-xs-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-xs-push-20{position:relative;left:83.33333%}.custom-theme .el-col-xs-21{width:87.5%}.custom-theme .el-col-xs-offset-21{margin-left:87.5%}.custom-theme .el-col-xs-pull-21{position:relative;right:87.5%}.custom-theme .el-col-xs-push-21{position:relative;left:87.5%}.custom-theme .el-col-xs-22{width:91.66667%}.custom-theme .el-col-xs-offset-22{margin-left:91.66667%}.custom-theme .el-col-xs-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-xs-push-22{position:relative;left:91.66667%}.custom-theme .el-col-xs-23{width:95.83333%}.custom-theme .el-col-xs-offset-23{margin-left:95.83333%}.custom-theme .el-col-xs-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-xs-push-23{position:relative;left:95.83333%}.custom-theme .el-col-xs-24{width:100%}.custom-theme .el-col-xs-offset-24{margin-left:100%}.custom-theme .el-col-xs-pull-24{position:relative;right:100%}.custom-theme .el-col-xs-push-24{position:relative;left:100%}}@media only screen and (min-width:768px){.custom-theme .el-col-sm-0{display:none}.custom-theme .el-col-sm-1{width:4.16667%}.custom-theme .el-col-sm-offset-1{margin-left:4.16667%}.custom-theme .el-col-sm-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-sm-push-1{position:relative;left:4.16667%}.custom-theme .el-col-sm-2{width:8.33333%}.custom-theme .el-col-sm-offset-2{margin-left:8.33333%}.custom-theme .el-col-sm-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-sm-push-2{position:relative;left:8.33333%}.custom-theme .el-col-sm-3{width:12.5%}.custom-theme .el-col-sm-offset-3{margin-left:12.5%}.custom-theme .el-col-sm-pull-3{position:relative;right:12.5%}.custom-theme .el-col-sm-push-3{position:relative;left:12.5%}.custom-theme .el-col-sm-4{width:16.66667%}.custom-theme .el-col-sm-offset-4{margin-left:16.66667%}.custom-theme .el-col-sm-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-sm-push-4{position:relative;left:16.66667%}.custom-theme .el-col-sm-5{width:20.83333%}.custom-theme .el-col-sm-offset-5{margin-left:20.83333%}.custom-theme .el-col-sm-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-sm-push-5{position:relative;left:20.83333%}.custom-theme .el-col-sm-6{width:25%}.custom-theme .el-col-sm-offset-6{margin-left:25%}.custom-theme .el-col-sm-pull-6{position:relative;right:25%}.custom-theme .el-col-sm-push-6{position:relative;left:25%}.custom-theme .el-col-sm-7{width:29.16667%}.custom-theme .el-col-sm-offset-7{margin-left:29.16667%}.custom-theme .el-col-sm-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-sm-push-7{position:relative;left:29.16667%}.custom-theme .el-col-sm-8{width:33.33333%}.custom-theme .el-col-sm-offset-8{margin-left:33.33333%}.custom-theme .el-col-sm-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-sm-push-8{position:relative;left:33.33333%}.custom-theme .el-col-sm-9{width:37.5%}.custom-theme .el-col-sm-offset-9{margin-left:37.5%}.custom-theme .el-col-sm-pull-9{position:relative;right:37.5%}.custom-theme .el-col-sm-push-9{position:relative;left:37.5%}.custom-theme .el-col-sm-10{width:41.66667%}.custom-theme .el-col-sm-offset-10{margin-left:41.66667%}.custom-theme .el-col-sm-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-sm-push-10{position:relative;left:41.66667%}.custom-theme .el-col-sm-11{width:45.83333%}.custom-theme .el-col-sm-offset-11{margin-left:45.83333%}.custom-theme .el-col-sm-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-sm-push-11{position:relative;left:45.83333%}.custom-theme .el-col-sm-12{width:50%}.custom-theme .el-col-sm-offset-12{margin-left:50%}.custom-theme .el-col-sm-pull-12{position:relative;right:50%}.custom-theme .el-col-sm-push-12{position:relative;left:50%}.custom-theme .el-col-sm-13{width:54.16667%}.custom-theme .el-col-sm-offset-13{margin-left:54.16667%}.custom-theme .el-col-sm-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-sm-push-13{position:relative;left:54.16667%}.custom-theme .el-col-sm-14{width:58.33333%}.custom-theme .el-col-sm-offset-14{margin-left:58.33333%}.custom-theme .el-col-sm-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-sm-push-14{position:relative;left:58.33333%}.custom-theme .el-col-sm-15{width:62.5%}.custom-theme .el-col-sm-offset-15{margin-left:62.5%}.custom-theme .el-col-sm-pull-15{position:relative;right:62.5%}.custom-theme .el-col-sm-push-15{position:relative;left:62.5%}.custom-theme .el-col-sm-16{width:66.66667%}.custom-theme .el-col-sm-offset-16{margin-left:66.66667%}.custom-theme .el-col-sm-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-sm-push-16{position:relative;left:66.66667%}.custom-theme .el-col-sm-17{width:70.83333%}.custom-theme .el-col-sm-offset-17{margin-left:70.83333%}.custom-theme .el-col-sm-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-sm-push-17{position:relative;left:70.83333%}.custom-theme .el-col-sm-18{width:75%}.custom-theme .el-col-sm-offset-18{margin-left:75%}.custom-theme .el-col-sm-pull-18{position:relative;right:75%}.custom-theme .el-col-sm-push-18{position:relative;left:75%}.custom-theme .el-col-sm-19{width:79.16667%}.custom-theme .el-col-sm-offset-19{margin-left:79.16667%}.custom-theme .el-col-sm-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-sm-push-19{position:relative;left:79.16667%}.custom-theme .el-col-sm-20{width:83.33333%}.custom-theme .el-col-sm-offset-20{margin-left:83.33333%}.custom-theme .el-col-sm-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-sm-push-20{position:relative;left:83.33333%}.custom-theme .el-col-sm-21{width:87.5%}.custom-theme .el-col-sm-offset-21{margin-left:87.5%}.custom-theme .el-col-sm-pull-21{position:relative;right:87.5%}.custom-theme .el-col-sm-push-21{position:relative;left:87.5%}.custom-theme .el-col-sm-22{width:91.66667%}.custom-theme .el-col-sm-offset-22{margin-left:91.66667%}.custom-theme .el-col-sm-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-sm-push-22{position:relative;left:91.66667%}.custom-theme .el-col-sm-23{width:95.83333%}.custom-theme .el-col-sm-offset-23{margin-left:95.83333%}.custom-theme .el-col-sm-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-sm-push-23{position:relative;left:95.83333%}.custom-theme .el-col-sm-24{width:100%}.custom-theme .el-col-sm-offset-24{margin-left:100%}.custom-theme .el-col-sm-pull-24{position:relative;right:100%}.custom-theme .el-col-sm-push-24{position:relative;left:100%}}@media only screen and (min-width:992px){.custom-theme .el-col-md-0{display:none}.custom-theme .el-col-md-1{width:4.16667%}.custom-theme .el-col-md-offset-1{margin-left:4.16667%}.custom-theme .el-col-md-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-md-push-1{position:relative;left:4.16667%}.custom-theme .el-col-md-2{width:8.33333%}.custom-theme .el-col-md-offset-2{margin-left:8.33333%}.custom-theme .el-col-md-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-md-push-2{position:relative;left:8.33333%}.custom-theme .el-col-md-3{width:12.5%}.custom-theme .el-col-md-offset-3{margin-left:12.5%}.custom-theme .el-col-md-pull-3{position:relative;right:12.5%}.custom-theme .el-col-md-push-3{position:relative;left:12.5%}.custom-theme .el-col-md-4{width:16.66667%}.custom-theme .el-col-md-offset-4{margin-left:16.66667%}.custom-theme .el-col-md-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-md-push-4{position:relative;left:16.66667%}.custom-theme .el-col-md-5{width:20.83333%}.custom-theme .el-col-md-offset-5{margin-left:20.83333%}.custom-theme .el-col-md-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-md-push-5{position:relative;left:20.83333%}.custom-theme .el-col-md-6{width:25%}.custom-theme .el-col-md-offset-6{margin-left:25%}.custom-theme .el-col-md-pull-6{position:relative;right:25%}.custom-theme .el-col-md-push-6{position:relative;left:25%}.custom-theme .el-col-md-7{width:29.16667%}.custom-theme .el-col-md-offset-7{margin-left:29.16667%}.custom-theme .el-col-md-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-md-push-7{position:relative;left:29.16667%}.custom-theme .el-col-md-8{width:33.33333%}.custom-theme .el-col-md-offset-8{margin-left:33.33333%}.custom-theme .el-col-md-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-md-push-8{position:relative;left:33.33333%}.custom-theme .el-col-md-9{width:37.5%}.custom-theme .el-col-md-offset-9{margin-left:37.5%}.custom-theme .el-col-md-pull-9{position:relative;right:37.5%}.custom-theme .el-col-md-push-9{position:relative;left:37.5%}.custom-theme .el-col-md-10{width:41.66667%}.custom-theme .el-col-md-offset-10{margin-left:41.66667%}.custom-theme .el-col-md-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-md-push-10{position:relative;left:41.66667%}.custom-theme .el-col-md-11{width:45.83333%}.custom-theme .el-col-md-offset-11{margin-left:45.83333%}.custom-theme .el-col-md-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-md-push-11{position:relative;left:45.83333%}.custom-theme .el-col-md-12{width:50%}.custom-theme .el-col-md-offset-12{margin-left:50%}.custom-theme .el-col-md-pull-12{position:relative;right:50%}.custom-theme .el-col-md-push-12{position:relative;left:50%}.custom-theme .el-col-md-13{width:54.16667%}.custom-theme .el-col-md-offset-13{margin-left:54.16667%}.custom-theme .el-col-md-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-md-push-13{position:relative;left:54.16667%}.custom-theme .el-col-md-14{width:58.33333%}.custom-theme .el-col-md-offset-14{margin-left:58.33333%}.custom-theme .el-col-md-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-md-push-14{position:relative;left:58.33333%}.custom-theme .el-col-md-15{width:62.5%}.custom-theme .el-col-md-offset-15{margin-left:62.5%}.custom-theme .el-col-md-pull-15{position:relative;right:62.5%}.custom-theme .el-col-md-push-15{position:relative;left:62.5%}.custom-theme .el-col-md-16{width:66.66667%}.custom-theme .el-col-md-offset-16{margin-left:66.66667%}.custom-theme .el-col-md-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-md-push-16{position:relative;left:66.66667%}.custom-theme .el-col-md-17{width:70.83333%}.custom-theme .el-col-md-offset-17{margin-left:70.83333%}.custom-theme .el-col-md-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-md-push-17{position:relative;left:70.83333%}.custom-theme .el-col-md-18{width:75%}.custom-theme .el-col-md-offset-18{margin-left:75%}.custom-theme .el-col-md-pull-18{position:relative;right:75%}.custom-theme .el-col-md-push-18{position:relative;left:75%}.custom-theme .el-col-md-19{width:79.16667%}.custom-theme .el-col-md-offset-19{margin-left:79.16667%}.custom-theme .el-col-md-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-md-push-19{position:relative;left:79.16667%}.custom-theme .el-col-md-20{width:83.33333%}.custom-theme .el-col-md-offset-20{margin-left:83.33333%}.custom-theme .el-col-md-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-md-push-20{position:relative;left:83.33333%}.custom-theme .el-col-md-21{width:87.5%}.custom-theme .el-col-md-offset-21{margin-left:87.5%}.custom-theme .el-col-md-pull-21{position:relative;right:87.5%}.custom-theme .el-col-md-push-21{position:relative;left:87.5%}.custom-theme .el-col-md-22{width:91.66667%}.custom-theme .el-col-md-offset-22{margin-left:91.66667%}.custom-theme .el-col-md-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-md-push-22{position:relative;left:91.66667%}.custom-theme .el-col-md-23{width:95.83333%}.custom-theme .el-col-md-offset-23{margin-left:95.83333%}.custom-theme .el-col-md-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-md-push-23{position:relative;left:95.83333%}.custom-theme .el-col-md-24{width:100%}.custom-theme .el-col-md-offset-24{margin-left:100%}.custom-theme .el-col-md-pull-24{position:relative;right:100%}.custom-theme .el-col-md-push-24{position:relative;left:100%}}@media only screen and (min-width:1200px){.custom-theme .el-col-lg-0{display:none}.custom-theme .el-col-lg-1{width:4.16667%}.custom-theme .el-col-lg-offset-1{margin-left:4.16667%}.custom-theme .el-col-lg-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-lg-push-1{position:relative;left:4.16667%}.custom-theme .el-col-lg-2{width:8.33333%}.custom-theme .el-col-lg-offset-2{margin-left:8.33333%}.custom-theme .el-col-lg-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-lg-push-2{position:relative;left:8.33333%}.custom-theme .el-col-lg-3{width:12.5%}.custom-theme .el-col-lg-offset-3{margin-left:12.5%}.custom-theme .el-col-lg-pull-3{position:relative;right:12.5%}.custom-theme .el-col-lg-push-3{position:relative;left:12.5%}.custom-theme .el-col-lg-4{width:16.66667%}.custom-theme .el-col-lg-offset-4{margin-left:16.66667%}.custom-theme .el-col-lg-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-lg-push-4{position:relative;left:16.66667%}.custom-theme .el-col-lg-5{width:20.83333%}.custom-theme .el-col-lg-offset-5{margin-left:20.83333%}.custom-theme .el-col-lg-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-lg-push-5{position:relative;left:20.83333%}.custom-theme .el-col-lg-6{width:25%}.custom-theme .el-col-lg-offset-6{margin-left:25%}.custom-theme .el-col-lg-pull-6{position:relative;right:25%}.custom-theme .el-col-lg-push-6{position:relative;left:25%}.custom-theme .el-col-lg-7{width:29.16667%}.custom-theme .el-col-lg-offset-7{margin-left:29.16667%}.custom-theme .el-col-lg-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-lg-push-7{position:relative;left:29.16667%}.custom-theme .el-col-lg-8{width:33.33333%}.custom-theme .el-col-lg-offset-8{margin-left:33.33333%}.custom-theme .el-col-lg-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-lg-push-8{position:relative;left:33.33333%}.custom-theme .el-col-lg-9{width:37.5%}.custom-theme .el-col-lg-offset-9{margin-left:37.5%}.custom-theme .el-col-lg-pull-9{position:relative;right:37.5%}.custom-theme .el-col-lg-push-9{position:relative;left:37.5%}.custom-theme .el-col-lg-10{width:41.66667%}.custom-theme .el-col-lg-offset-10{margin-left:41.66667%}.custom-theme .el-col-lg-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-lg-push-10{position:relative;left:41.66667%}.custom-theme .el-col-lg-11{width:45.83333%}.custom-theme .el-col-lg-offset-11{margin-left:45.83333%}.custom-theme .el-col-lg-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-lg-push-11{position:relative;left:45.83333%}.custom-theme .el-col-lg-12{width:50%}.custom-theme .el-col-lg-offset-12{margin-left:50%}.custom-theme .el-col-lg-pull-12{position:relative;right:50%}.custom-theme .el-col-lg-push-12{position:relative;left:50%}.custom-theme .el-col-lg-13{width:54.16667%}.custom-theme .el-col-lg-offset-13{margin-left:54.16667%}.custom-theme .el-col-lg-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-lg-push-13{position:relative;left:54.16667%}.custom-theme .el-col-lg-14{width:58.33333%}.custom-theme .el-col-lg-offset-14{margin-left:58.33333%}.custom-theme .el-col-lg-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-lg-push-14{position:relative;left:58.33333%}.custom-theme .el-col-lg-15{width:62.5%}.custom-theme .el-col-lg-offset-15{margin-left:62.5%}.custom-theme .el-col-lg-pull-15{position:relative;right:62.5%}.custom-theme .el-col-lg-push-15{position:relative;left:62.5%}.custom-theme .el-col-lg-16{width:66.66667%}.custom-theme .el-col-lg-offset-16{margin-left:66.66667%}.custom-theme .el-col-lg-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-lg-push-16{position:relative;left:66.66667%}.custom-theme .el-col-lg-17{width:70.83333%}.custom-theme .el-col-lg-offset-17{margin-left:70.83333%}.custom-theme .el-col-lg-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-lg-push-17{position:relative;left:70.83333%}.custom-theme .el-col-lg-18{width:75%}.custom-theme .el-col-lg-offset-18{margin-left:75%}.custom-theme .el-col-lg-pull-18{position:relative;right:75%}.custom-theme .el-col-lg-push-18{position:relative;left:75%}.custom-theme .el-col-lg-19{width:79.16667%}.custom-theme .el-col-lg-offset-19{margin-left:79.16667%}.custom-theme .el-col-lg-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-lg-push-19{position:relative;left:79.16667%}.custom-theme .el-col-lg-20{width:83.33333%}.custom-theme .el-col-lg-offset-20{margin-left:83.33333%}.custom-theme .el-col-lg-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-lg-push-20{position:relative;left:83.33333%}.custom-theme .el-col-lg-21{width:87.5%}.custom-theme .el-col-lg-offset-21{margin-left:87.5%}.custom-theme .el-col-lg-pull-21{position:relative;right:87.5%}.custom-theme .el-col-lg-push-21{position:relative;left:87.5%}.custom-theme .el-col-lg-22{width:91.66667%}.custom-theme .el-col-lg-offset-22{margin-left:91.66667%}.custom-theme .el-col-lg-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-lg-push-22{position:relative;left:91.66667%}.custom-theme .el-col-lg-23{width:95.83333%}.custom-theme .el-col-lg-offset-23{margin-left:95.83333%}.custom-theme .el-col-lg-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-lg-push-23{position:relative;left:95.83333%}.custom-theme .el-col-lg-24{width:100%}.custom-theme .el-col-lg-offset-24{margin-left:100%}.custom-theme .el-col-lg-pull-24{position:relative;right:100%}.custom-theme .el-col-lg-push-24{position:relative;left:100%}}@media only screen and (min-width:1920px){.custom-theme .el-col-xl-0{display:none}.custom-theme .el-col-xl-1{width:4.16667%}.custom-theme .el-col-xl-offset-1{margin-left:4.16667%}.custom-theme .el-col-xl-pull-1{position:relative;right:4.16667%}.custom-theme .el-col-xl-push-1{position:relative;left:4.16667%}.custom-theme .el-col-xl-2{width:8.33333%}.custom-theme .el-col-xl-offset-2{margin-left:8.33333%}.custom-theme .el-col-xl-pull-2{position:relative;right:8.33333%}.custom-theme .el-col-xl-push-2{position:relative;left:8.33333%}.custom-theme .el-col-xl-3{width:12.5%}.custom-theme .el-col-xl-offset-3{margin-left:12.5%}.custom-theme .el-col-xl-pull-3{position:relative;right:12.5%}.custom-theme .el-col-xl-push-3{position:relative;left:12.5%}.custom-theme .el-col-xl-4{width:16.66667%}.custom-theme .el-col-xl-offset-4{margin-left:16.66667%}.custom-theme .el-col-xl-pull-4{position:relative;right:16.66667%}.custom-theme .el-col-xl-push-4{position:relative;left:16.66667%}.custom-theme .el-col-xl-5{width:20.83333%}.custom-theme .el-col-xl-offset-5{margin-left:20.83333%}.custom-theme .el-col-xl-pull-5{position:relative;right:20.83333%}.custom-theme .el-col-xl-push-5{position:relative;left:20.83333%}.custom-theme .el-col-xl-6{width:25%}.custom-theme .el-col-xl-offset-6{margin-left:25%}.custom-theme .el-col-xl-pull-6{position:relative;right:25%}.custom-theme .el-col-xl-push-6{position:relative;left:25%}.custom-theme .el-col-xl-7{width:29.16667%}.custom-theme .el-col-xl-offset-7{margin-left:29.16667%}.custom-theme .el-col-xl-pull-7{position:relative;right:29.16667%}.custom-theme .el-col-xl-push-7{position:relative;left:29.16667%}.custom-theme .el-col-xl-8{width:33.33333%}.custom-theme .el-col-xl-offset-8{margin-left:33.33333%}.custom-theme .el-col-xl-pull-8{position:relative;right:33.33333%}.custom-theme .el-col-xl-push-8{position:relative;left:33.33333%}.custom-theme .el-col-xl-9{width:37.5%}.custom-theme .el-col-xl-offset-9{margin-left:37.5%}.custom-theme .el-col-xl-pull-9{position:relative;right:37.5%}.custom-theme .el-col-xl-push-9{position:relative;left:37.5%}.custom-theme .el-col-xl-10{width:41.66667%}.custom-theme .el-col-xl-offset-10{margin-left:41.66667%}.custom-theme .el-col-xl-pull-10{position:relative;right:41.66667%}.custom-theme .el-col-xl-push-10{position:relative;left:41.66667%}.custom-theme .el-col-xl-11{width:45.83333%}.custom-theme .el-col-xl-offset-11{margin-left:45.83333%}.custom-theme .el-col-xl-pull-11{position:relative;right:45.83333%}.custom-theme .el-col-xl-push-11{position:relative;left:45.83333%}.custom-theme .el-col-xl-12{width:50%}.custom-theme .el-col-xl-offset-12{margin-left:50%}.custom-theme .el-col-xl-pull-12{position:relative;right:50%}.custom-theme .el-col-xl-push-12{position:relative;left:50%}.custom-theme .el-col-xl-13{width:54.16667%}.custom-theme .el-col-xl-offset-13{margin-left:54.16667%}.custom-theme .el-col-xl-pull-13{position:relative;right:54.16667%}.custom-theme .el-col-xl-push-13{position:relative;left:54.16667%}.custom-theme .el-col-xl-14{width:58.33333%}.custom-theme .el-col-xl-offset-14{margin-left:58.33333%}.custom-theme .el-col-xl-pull-14{position:relative;right:58.33333%}.custom-theme .el-col-xl-push-14{position:relative;left:58.33333%}.custom-theme .el-col-xl-15{width:62.5%}.custom-theme .el-col-xl-offset-15{margin-left:62.5%}.custom-theme .el-col-xl-pull-15{position:relative;right:62.5%}.custom-theme .el-col-xl-push-15{position:relative;left:62.5%}.custom-theme .el-col-xl-16{width:66.66667%}.custom-theme .el-col-xl-offset-16{margin-left:66.66667%}.custom-theme .el-col-xl-pull-16{position:relative;right:66.66667%}.custom-theme .el-col-xl-push-16{position:relative;left:66.66667%}.custom-theme .el-col-xl-17{width:70.83333%}.custom-theme .el-col-xl-offset-17{margin-left:70.83333%}.custom-theme .el-col-xl-pull-17{position:relative;right:70.83333%}.custom-theme .el-col-xl-push-17{position:relative;left:70.83333%}.custom-theme .el-col-xl-18{width:75%}.custom-theme .el-col-xl-offset-18{margin-left:75%}.custom-theme .el-col-xl-pull-18{position:relative;right:75%}.custom-theme .el-col-xl-push-18{position:relative;left:75%}.custom-theme .el-col-xl-19{width:79.16667%}.custom-theme .el-col-xl-offset-19{margin-left:79.16667%}.custom-theme .el-col-xl-pull-19{position:relative;right:79.16667%}.custom-theme .el-col-xl-push-19{position:relative;left:79.16667%}.custom-theme .el-col-xl-20{width:83.33333%}.custom-theme .el-col-xl-offset-20{margin-left:83.33333%}.custom-theme .el-col-xl-pull-20{position:relative;right:83.33333%}.custom-theme .el-col-xl-push-20{position:relative;left:83.33333%}.custom-theme .el-col-xl-21{width:87.5%}.custom-theme .el-col-xl-offset-21{margin-left:87.5%}.custom-theme .el-col-xl-pull-21{position:relative;right:87.5%}.custom-theme .el-col-xl-push-21{position:relative;left:87.5%}.custom-theme .el-col-xl-22{width:91.66667%}.custom-theme .el-col-xl-offset-22{margin-left:91.66667%}.custom-theme .el-col-xl-pull-22{position:relative;right:91.66667%}.custom-theme .el-col-xl-push-22{position:relative;left:91.66667%}.custom-theme .el-col-xl-23{width:95.83333%}.custom-theme .el-col-xl-offset-23{margin-left:95.83333%}.custom-theme .el-col-xl-pull-23{position:relative;right:95.83333%}.custom-theme .el-col-xl-push-23{position:relative;left:95.83333%}.custom-theme .el-col-xl-24{width:100%}.custom-theme .el-col-xl-offset-24{margin-left:100%}.custom-theme .el-col-xl-pull-24{position:relative;right:100%}.custom-theme .el-col-xl-push-24{position:relative;left:100%}}.custom-theme .el-progress{position:relative;line-height:1}.custom-theme .el-progress__text{font-size:14px;color:#5a5e66;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.custom-theme .el-progress__text i{vertical-align:middle;display:block}.custom-theme .el-progress--circle{display:inline-block}.custom-theme .el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.custom-theme .el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.custom-theme .el-progress--without-text .el-progress__text{display:none}.custom-theme .el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.custom-theme .el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.custom-theme .el-progress.is-success .el-progress-bar__inner{background-color:#409167}.custom-theme .el-progress.is-success .el-progress__text{color:#409167}.custom-theme .el-progress.is-exception .el-progress-bar__inner{background-color:#b3450e}.custom-theme .el-progress.is-exception .el-progress__text{color:#b3450e}.custom-theme .el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e6ebf5;overflow:hidden;position:relative;vertical-align:middle}.custom-theme .el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#262729;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.custom-theme .el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@-webkit-keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.custom-theme .el-upload{display:inline-block;text-align:center;cursor:pointer}.custom-theme .el-upload__input{display:none}.custom-theme .el-upload__tip{font-size:12px;color:#5a5e66;margin-top:7px}.custom-theme .el-upload iframe{position:absolute;z-index:-1;top:0;left:0;opacity:0}.custom-theme .el-upload--picture-card{background-color:#fbfdff;border:1px dashed #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;cursor:pointer;line-height:146px;vertical-align:top}.custom-theme .el-upload--picture-card i{font-size:28px;color:#8c939d}.custom-theme .el-upload--picture-card:hover{border-color:#262729;color:#262729}.custom-theme .el-upload-dragger{background-color:#fff;border:1px dashed #d9d9d9;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:360px;height:180px;text-align:center;cursor:pointer;position:relative;overflow:hidden}.custom-theme .el-upload-dragger .el-icon-upload{font-size:67px;color:#b4bccc;margin:40px 0 16px;line-height:50px}.custom-theme .el-upload-dragger+.el-upload__tip{text-align:center}.custom-theme .el-upload-dragger~.el-upload__files{border-top:1px solid #d8dce5;margin-top:7px;padding-top:5px}.custom-theme .el-upload-dragger .el-upload__text{color:#5a5e66;font-size:14px;text-align:center}.custom-theme .el-upload-dragger .el-upload__text em{color:#262729;font-style:normal}.custom-theme .el-upload-dragger:hover{border-color:#262729}.custom-theme .el-upload-dragger.is-dragover{background-color:rgba(32,159,255,.06);border:2px dashed #262729}.custom-theme .el-upload-list{margin:0;padding:0;list-style:none}.custom-theme .el-upload-list__item{-webkit-transition:all .5s cubic-bezier(.55,0,.1,1);transition:all .5s cubic-bezier(.55,0,.1,1);font-size:14px;color:#5a5e66;line-height:1.8;margin-top:5px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;width:100%}.custom-theme .el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.custom-theme .el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.custom-theme .el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.custom-theme .el-upload-list__item:first-child{margin-top:10px}.custom-theme .el-upload-list__item .el-icon-upload-success{color:#409167}.custom-theme .el-upload-list__item .el-icon-close{display:none;position:absolute;top:5px;right:5px;cursor:pointer;opacity:.75;color:#5a5e66}.custom-theme .el-upload-list__item .el-icon-close:hover{opacity:1}.custom-theme .el-upload-list__item .el-icon-close-tip{display:none;position:absolute;top:5px;right:0;cursor:pointer;opacity:1;color:#262729;-webkit-transform:translate(15%,0);transform:translate(15%,0)}.custom-theme .el-upload-list__item:hover{background-color:#f5f7fa}.custom-theme .el-upload-list__item:hover .el-icon-close{display:inline-block}.custom-theme .el-upload-list__item:hover .el-progress__text{display:none}.custom-theme .el-upload-list__item.is-success .el-upload-list__item-status-label{display:block}.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:focus,.custom-theme .el-upload-list__item.is-success .el-upload-list__item-name:hover{color:#262729;cursor:pointer}.custom-theme .el-upload-list__item.is-success:focus .el-icon-close-tip{display:inline-block}.custom-theme .el-upload-list__item.is-success:active,.custom-theme .el-upload-list__item.is-success:focus:not(.focusing){outline-width:0}.custom-theme .el-upload-list__item.is-success:active .el-icon-close-tip,.custom-theme .el-upload-list__item.is-success:focus:not(.focusing) .el-icon-close-tip{display:none}.custom-theme .el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.custom-theme .el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none}.custom-theme .el-upload-list.is-disabled .el-upload-list__item:hover .el-upload-list__item-status-label{display:block}.custom-theme .el-upload-list__item-name{color:#5a5e66;display:block;margin-right:40px;overflow:hidden;padding-left:4px;text-overflow:ellipsis;-webkit-transition:color .3s;transition:color .3s;white-space:nowrap}.custom-theme .el-upload-list__item-name [class^=el-icon]{height:100%;margin-right:7px;color:#878d99;line-height:inherit}.custom-theme .el-upload-list__item-status-label{position:absolute;right:5px;top:0;line-height:inherit;display:none}.custom-theme .el-upload-list__item-delete{position:absolute;right:10px;top:0;font-size:12px;color:#5a5e66;display:none}.custom-theme .el-upload-list__item-delete:hover{color:#262729}.custom-theme .el-upload-list--picture-card{margin:0;display:inline;vertical-align:top}.custom-theme .el-upload-list--picture-card .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;width:148px;height:148px;margin:0 8px 8px 0;display:inline-block}.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-check,.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-circle-check{color:#fff}.custom-theme .el-upload-list--picture-card .el-upload-list__item .el-icon-close{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.custom-theme .el-upload-list--picture-card .el-upload-list__item-name{display:none}.custom-theme .el-upload-list--picture-card .el-upload-list__item-thumbnail{width:100%;height:100%}.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.custom-theme .el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions{position:absolute;width:100%;height:100%;left:0;top:0;cursor:default;text-align:center;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);-webkit-transition:opacity .3s;transition:opacity .3s}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span{display:none;cursor:pointer}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:15px}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{position:static;font-size:inherit;color:inherit}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.custom-theme .el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-block}.custom-theme .el-upload-list--picture-card .el-progress{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);bottom:auto;width:126px}.custom-theme .el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.custom-theme .el-upload-list--picture .el-upload-list__item{overflow:hidden;background-color:#fff;border:1px solid #c0ccda;border-radius:6px;-webkit-box-sizing:border-box;box-sizing:border-box;margin-top:10px;padding:10px 10px 10px 90px;height:92px}.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-check,.custom-theme .el-upload-list--picture .el-upload-list__item .el-icon-circle-check{color:#fff}.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{background:0 0;-webkit-box-shadow:none;box-shadow:none;top:-2px;right:-12px}.custom-theme .el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name{line-height:70px;margin-top:0}.custom-theme .el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.custom-theme .el-upload-list--picture .el-upload-list__item-thumbnail{vertical-align:middle;display:inline-block;width:70px;height:70px;float:left;position:relative;z-index:1;margin-left:-80px}.custom-theme .el-upload-list--picture .el-upload-list__item-name{display:block;margin-top:20px}.custom-theme .el-upload-list--picture .el-upload-list__item-name i{font-size:70px;line-height:1;position:absolute;left:9px;top:10px}.custom-theme .el-upload-list--picture .el-upload-list__item-status-label{position:absolute;right:-17px;top:-7px;width:46px;height:26px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 1px 1px #ccc;box-shadow:0 1px 1px #ccc}.custom-theme .el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}.custom-theme .el-upload-list--picture .el-progress{position:relative;top:-7px}.custom-theme .el-upload-cover{position:absolute;left:0;top:0;width:100%;height:100%;overflow:hidden;z-index:10;cursor:default}.custom-theme .el-upload-cover::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-upload-cover img{display:block;width:100%;height:100%}.custom-theme .el-upload-cover__label{position:absolute;right:-15px;top:-6px;width:40px;height:24px;background:#13ce66;text-align:center;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-box-shadow:0 0 1pc 1px rgba(0,0,0,.2);box-shadow:0 0 1pc 1px rgba(0,0,0,.2)}.custom-theme .el-upload-cover__label i{font-size:12px;margin-top:11px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);color:#fff}.custom-theme .el-upload-cover__progress{display:inline-block;vertical-align:middle;position:static;width:243px}.custom-theme .el-upload-cover__progress+.el-upload__inner{opacity:0}.custom-theme .el-upload-cover__content{position:absolute;top:0;left:0;width:100%;height:100%}.custom-theme .el-upload-cover__interact{position:absolute;bottom:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.72);text-align:center}.custom-theme .el-upload-cover__interact .btn{display:inline-block;color:#fff;font-size:14px;cursor:pointer;vertical-align:middle;-webkit-transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s,-webkit-transform .3s cubic-bezier(.23,1,.32,1) .1s;margin-top:60px}.custom-theme .el-upload-cover__interact .btn i{margin-top:0}.custom-theme .el-upload-cover__interact .btn span{opacity:0;-webkit-transition:opacity .15s linear;transition:opacity .15s linear}.custom-theme .el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.custom-theme .el-upload-cover__interact .btn:hover{-webkit-transform:translateY(-13px);transform:translateY(-13px)}.custom-theme .el-upload-cover__interact .btn:hover span{opacity:1}.custom-theme .el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.custom-theme .el-upload-cover__title{position:absolute;bottom:0;left:0;background-color:#fff;height:36px;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;text-align:left;padding:0 10px;margin:0;line-height:36px;font-size:14px;color:#2d2f33}.custom-theme .el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.custom-theme .el-progress{position:relative;line-height:1}.custom-theme .el-progress__text{font-size:14px;color:#5a5e66;display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.custom-theme .el-progress__text i{vertical-align:middle;display:block}.custom-theme .el-progress--circle{display:inline-block}.custom-theme .el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-webkit-transform:translate(0,-50%);transform:translate(0,-50%)}.custom-theme .el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.custom-theme .el-progress--without-text .el-progress__text{display:none}.custom-theme .el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.custom-theme .el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.custom-theme .el-progress.is-success .el-progress-bar__inner{background-color:#409167}.custom-theme .el-progress.is-success .el-progress__text{color:#409167}.custom-theme .el-progress.is-exception .el-progress-bar__inner{background-color:#b3450e}.custom-theme .el-progress.is-exception .el-progress__text{color:#b3450e}.custom-theme .el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-progress-bar__outer{height:6px;border-radius:100px;background-color:#e6ebf5;overflow:hidden;position:relative;vertical-align:middle}.custom-theme .el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#262729;text-align:right;border-radius:100px;line-height:1;white-space:nowrap}.custom-theme .el-progress-bar__inner::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}.custom-theme .el-time-spinner{width:100%;white-space:nowrap}.custom-theme .el-spinner{display:inline-block;vertical-align:middle}.custom-theme .el-spinner-inner{-webkit-animation:rotate 2s linear infinite;animation:rotate 2s linear infinite;width:50px;height:50px}.custom-theme .el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;-webkit-animation:dash 1.5s ease-in-out infinite;animation:dash 1.5s ease-in-out infinite}@-webkit-keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@-webkit-keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}.custom-theme .el-message{min-width:380px;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:4px;border-width:1px;border-style:solid;border-color:#e6ebf5;position:fixed;left:50%;top:20px;-webkit-transform:translateX(-50%);transform:translateX(-50%);background-color:#edf2fc;-webkit-transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,-webkit-transform .4s;transition:opacity .3s,transform .4s;transition:opacity .3s,transform .4s,-webkit-transform .4s;overflow:hidden;padding:15px 15px 15px 20px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-message.is-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-message p{margin:0}.custom-theme .el-message--info .el-message__content{color:#0a76a4}.custom-theme .el-message--success{background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-message--success .el-message__content{color:#409167}.custom-theme .el-message--warning{background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-message--warning .el-message__content{color:#9da408}.custom-theme .el-message--error{background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-message--error .el-message__content{color:#b3450e}.custom-theme .el-message__icon{margin-right:10px}.custom-theme .el-message__content{padding:0;font-size:14px;line-height:1}.custom-theme .el-message__content:focus{outline-width:0}.custom-theme .el-message__closeBtn{position:absolute;top:50%;right:15px;-webkit-transform:translateY(-50%);transform:translateY(-50%);cursor:pointer;color:#b4bccc;font-size:16px}.custom-theme .el-message__closeBtn:focus{outline-width:0}.custom-theme .el-message__closeBtn:hover{color:#878d99}.custom-theme .el-message .el-icon-success{color:#409167}.custom-theme .el-message .el-icon-error{color:#b3450e}.custom-theme .el-message .el-icon-info{color:#0a76a4}.custom-theme .el-message .el-icon-warning{color:#9da408}.custom-theme .el-message-fade-enter,.custom-theme .el-message-fade-leave-active{opacity:0;-webkit-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}.custom-theme .el-badge{position:relative;vertical-align:middle;display:inline-block}.custom-theme .el-badge__content{background-color:#b3450e;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.custom-theme .el-badge__content.is-fixed{position:absolute;top:0;right:10px;-webkit-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.custom-theme .el-badge__content.is-fixed.is-dot{right:5px}.custom-theme .el-badge__content.is-dot{height:8px;width:8px;padding:0;right:0;border-radius:50%}.custom-theme .el-card{border-radius:4px;border:1px solid #e6ebf5;background-color:#fff;overflow:hidden;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1);color:#2d2f33}.custom-theme .el-card__header{padding:18px 20px;border-bottom:1px solid #e6ebf5;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-card__body{padding:20px}.custom-theme .el-rate{height:20px;line-height:1}.custom-theme .el-rate:active,.custom-theme .el-rate:focus{outline-width:0}.custom-theme .el-rate__item{display:inline-block;position:relative;font-size:0;vertical-align:middle}.custom-theme .el-rate__icon{position:relative;display:inline-block;font-size:18px;margin-right:6px;color:#b4bccc;-webkit-transition:.3s;transition:.3s}.custom-theme .el-rate__icon.hover{-webkit-transform:scale(1.15);transform:scale(1.15)}.custom-theme .el-rate__icon .path2{position:absolute;left:0;top:0}.custom-theme .el-rate__decimal{position:absolute;top:0;left:0;display:inline-block;overflow:hidden}.custom-theme .el-rate__text{font-size:14px;vertical-align:middle}.custom-theme .el-steps{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-steps--simple{padding:13px 8%;border-radius:4px;background:#f5f7fa}.custom-theme .el-steps--horizontal{white-space:nowrap}.custom-theme .el-steps--vertical{height:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-flow:column;flex-flow:column}.custom-theme .el-step{position:relative;-ms-flex-negative:1;flex-shrink:1}.custom-theme .el-step:last-of-type .el-step__line{display:none}.custom-theme .el-step:last-of-type.is-flex{-ms-flex-preferred-size:auto!important;flex-basis:auto!important;-ms-flex-negative:0;flex-shrink:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0}.custom-theme .el-step:last-of-type .el-step__description,.custom-theme .el-step:last-of-type .el-step__main{padding-right:0}.custom-theme .el-step__head{position:relative;width:100%}.custom-theme .el-step__head.is-process{color:#2d2f33;border-color:#2d2f33}.custom-theme .el-step__head.is-wait{color:#b4bccc;border-color:#b4bccc}.custom-theme .el-step__head.is-success{color:#409167;border-color:#409167}.custom-theme .el-step__head.is-error{color:#b3450e;border-color:#b3450e}.custom-theme .el-step__head.is-finish{color:#262729;border-color:#262729}.custom-theme .el-step__icon{position:relative;z-index:1;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:24px;height:24px;font-size:14px;-webkit-box-sizing:border-box;box-sizing:border-box;background:#fff;-webkit-transition:.15s ease-out;transition:.15s ease-out}.custom-theme .el-step__icon.is-text{border-radius:50%;border:2px solid;border-color:inherit}.custom-theme .el-step__icon.is-icon{width:40px}.custom-theme .el-step__icon-inner{display:inline-block;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-align:center;font-weight:700;line-height:1;color:inherit}.custom-theme .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.custom-theme .el-step__icon-inner.is-status{-webkit-transform:translateY(1px);transform:translateY(1px)}.custom-theme .el-step__line{position:absolute;border-color:inherit;background-color:#b4bccc}.custom-theme .el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;-webkit-transition:.15s ease-out;transition:.15s ease-out;-webkit-box-sizing:border-box;box-sizing:border-box;width:0;height:0}.custom-theme .el-step__main{white-space:normal;text-align:left}.custom-theme .el-step__title{font-size:16px;line-height:38px}.custom-theme .el-step__title.is-process{font-weight:700;color:#2d2f33}.custom-theme .el-step__title.is-wait{color:#b4bccc}.custom-theme .el-step__title.is-success{color:#409167}.custom-theme .el-step__title.is-error{color:#b3450e}.custom-theme .el-step__title.is-finish{color:#262729}.custom-theme .el-step__description{padding-right:10%;margin-top:-5px;font-size:12px;line-height:20px;font-weight:400}.custom-theme .el-step__description.is-process{color:#2d2f33}.custom-theme .el-step__description.is-wait{color:#b4bccc}.custom-theme .el-step__description.is-success{color:#409167}.custom-theme .el-step__description.is-error{color:#b3450e}.custom-theme .el-step__description.is-finish{color:#262729}.custom-theme .el-step.is-horizontal{display:inline-block}.custom-theme .el-step.is-horizontal .el-step__line{height:2px;top:11px;left:0;right:0}.custom-theme .el-step.is-vertical{display:-webkit-box;display:-ms-flexbox;display:flex}.custom-theme .el-step.is-vertical .el-step__head{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;width:24px}.custom-theme .el-step.is-vertical .el-step__main{padding-left:10px;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.custom-theme .el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.custom-theme .el-step.is-vertical .el-step__line{width:2px;top:0;bottom:0;left:11px}.custom-theme .el-step.is-vertical .el-step__icon.is-icon{width:24px}.custom-theme .el-step.is-center .el-step__head{text-align:center}.custom-theme .el-step.is-center .el-step__main{text-align:center}.custom-theme .el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.custom-theme .el-step.is-center .el-step__line{left:50%;right:-50%}.custom-theme .el-step.is-simple{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.custom-theme .el-step.is-simple .el-step__head{width:auto;font-size:0;padding-right:10px}.custom-theme .el-step.is-simple .el-step__icon{background:0 0;width:16px;height:16px;font-size:12px}.custom-theme .el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.custom-theme .el-step.is-simple .el-step__icon-inner.is-status{-webkit-transform:scale(.8) translateY(1px);transform:scale(.8) translateY(1px)}.custom-theme .el-step.is-simple .el-step__main{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.custom-theme .el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.custom-theme .el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;word-break:break-all}.custom-theme .el-step.is-simple .el-step__arrow{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.custom-theme .el-step.is-simple .el-step__arrow::after,.custom-theme .el-step.is-simple .el-step__arrow::before{content:'';display:inline-block;position:absolute;height:15px;width:1px;background:#b4bccc}.custom-theme .el-step.is-simple .el-step__arrow::before{-webkit-transform:rotate(-45deg) translateY(-4px);transform:rotate(-45deg) translateY(-4px);-webkit-transform-origin:0 0;transform-origin:0 0}.custom-theme .el-step.is-simple .el-step__arrow::after{-webkit-transform:rotate(45deg) translateY(4px);transform:rotate(45deg) translateY(4px);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.custom-theme .el-step.is-simple:last-of-type .el-step__arrow{display:none}.custom-theme .el-carousel{overflow-x:hidden;position:relative}.custom-theme .el-carousel__container{position:relative;height:300px}.custom-theme .el-carousel__arrow{border:none;outline:0;padding:0;margin:0;height:36px;width:36px;cursor:pointer;-webkit-transition:.3s;transition:.3s;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-webkit-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.custom-theme .el-carousel__arrow--left{left:16px}.custom-theme .el-carousel__arrow--right{right:16px}.custom-theme .el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.custom-theme .el-carousel__arrow i{cursor:pointer}.custom-theme .el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.custom-theme .el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-webkit-transform:none;transform:none}.custom-theme .el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.custom-theme .el-carousel__indicators--outside button{background-color:#b4bccc;opacity:.24}.custom-theme .el-carousel__indicators--labels{left:0;right:0;-webkit-transform:none;transform:none;text-align:center}.custom-theme .el-carousel__indicators--labels .el-carousel__button{height:auto;width:auto;padding:2px 18px;font-size:12px}.custom-theme .el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.custom-theme .el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.custom-theme .el-carousel__indicator:hover button{opacity:.72}.custom-theme .el-carousel__indicator.is-active button{opacity:1}.custom-theme .el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;outline:0;padding:0;margin:0;cursor:pointer;-webkit-transition:.3s;transition:.3s}.custom-theme .carousel-arrow-left-enter,.custom-theme .carousel-arrow-left-leave-active{-webkit-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.custom-theme .carousel-arrow-right-enter,.custom-theme .carousel-arrow-right-leave-active{-webkit-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}.custom-theme .el-scrollbar{overflow:hidden;position:relative}.custom-theme .el-scrollbar:active>.el-scrollbar__bar,.custom-theme .el-scrollbar:focus>.el-scrollbar__bar,.custom-theme .el-scrollbar:hover>.el-scrollbar__bar{opacity:1;-webkit-transition:opacity 340ms ease-out;transition:opacity 340ms ease-out}.custom-theme .el-scrollbar__wrap{overflow:scroll;height:100%}.custom-theme .el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.custom-theme .el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(135,141,153,.3);-webkit-transition:.3s background-color;transition:.3s background-color}.custom-theme .el-scrollbar__thumb:hover{background-color:rgba(135,141,153,.5)}.custom-theme .el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;-webkit-transition:opacity 120ms ease-out;transition:opacity 120ms ease-out}.custom-theme .el-scrollbar__bar.is-vertical{width:6px;top:2px}.custom-theme .el-scrollbar__bar.is-vertical>div{width:100%}.custom-theme .el-scrollbar__bar.is-horizontal{height:6px;left:2px}.custom-theme .el-scrollbar__bar.is-horizontal>div{height:100%}.custom-theme .el-carousel__item{position:absolute;top:0;left:0;width:100%;height:100%;display:inline-block;overflow:hidden;z-index:0}.custom-theme .el-carousel__item.is-active{z-index:2}.custom-theme .el-carousel__item.is-animating{-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.custom-theme .el-carousel__item--card{width:50%;-webkit-transition:-webkit-transform .4s ease-in-out;transition:-webkit-transform .4s ease-in-out;transition:transform .4s ease-in-out;transition:transform .4s ease-in-out,-webkit-transform .4s ease-in-out}.custom-theme .el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.custom-theme .el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.custom-theme .el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.custom-theme .el-carousel__item--card.is-active{z-index:2}.custom-theme .el-carousel__mask{position:absolute;width:100%;height:100%;top:0;left:0;background-color:#fff;opacity:.24;-webkit-transition:.2s;transition:.2s}.custom-theme .el-collapse{border-top:1px solid #e6ebf5;border-bottom:1px solid #e6ebf5}.custom-theme .el-collapse-item__header{height:48px;line-height:48px;background-color:#fff;color:#2d2f33;cursor:pointer;border-bottom:1px solid #e6ebf5;font-size:13px;font-weight:500;-webkit-transition:border-bottom-color .3s;transition:border-bottom-color .3s}.custom-theme .el-collapse-item__header:active,.custom-theme .el-collapse-item__header:focus:not(.focusing){outline-width:0}.custom-theme .el-collapse-item__arrow{margin-right:8px;-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;float:right;line-height:48px;font-weight:300}.custom-theme .el-collapse-item__wrap{will-change:height;background-color:#fff;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;border-bottom:1px solid #e6ebf5}.custom-theme .el-collapse-item__content{padding-bottom:25px;font-size:13px;color:#2d2f33;line-height:1.769230769230769}.custom-theme .el-collapse-item.is-active .el-collapse-item__header{border-bottom-color:transparent}.custom-theme .el-collapse-item.is-active .el-collapse-item__header .el-collapse-item__arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.custom-theme .el-collapse-item:last-child{margin-bottom:-1px}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-popper .popper__arrow,.custom-theme .el-popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.custom-theme .el-popper .popper__arrow{border-width:6px;-webkit-filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03));filter:drop-shadow(0 2px 12px rgba(0, 0, 0, .03))}.custom-theme .el-popper .popper__arrow::after{content:" ";border-width:6px}.custom-theme .el-popper[x-placement^=top]{margin-bottom:12px}.custom-theme .el-popper[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:#e6ebf5;border-bottom-width:0}.custom-theme .el-popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.custom-theme .el-popper[x-placement^=bottom]{margin-top:12px}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:#e6ebf5}.custom-theme .el-popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.custom-theme .el-popper[x-placement^=right]{margin-left:12px}.custom-theme .el-popper[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:#e6ebf5;border-left-width:0}.custom-theme .el-popper[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.custom-theme .el-popper[x-placement^=left]{margin-right:12px}.custom-theme .el-popper[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:#e6ebf5}.custom-theme .el-popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.custom-theme .el-cascader{display:inline-block;position:relative;font-size:14px;line-height:40px}.custom-theme .el-cascader .el-input,.custom-theme .el-cascader .el-input__inner{cursor:pointer}.custom-theme .el-cascader .el-input__icon{-webkit-transition:none;transition:none}.custom-theme .el-cascader .el-icon-arrow-down{-webkit-transition:-webkit-transform .3s;transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;font-size:14px}.custom-theme .el-cascader .el-icon-arrow-down.is-reverse{-webkit-transform:rotateZ(180deg);transform:rotateZ(180deg)}.custom-theme .el-cascader .el-icon-circle-close{z-index:2;-webkit-transition:color .2s cubic-bezier(.645,.045,.355,1);transition:color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-cascader .el-icon-circle-close:hover{color:#878d99}.custom-theme .el-cascader__clearIcon{z-index:2;position:relative}.custom-theme .el-cascader__label{position:absolute;left:0;top:0;height:100%;padding:0 25px 0 15px;color:#5a5e66;width:100%;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer;text-align:left;font-size:inherit}.custom-theme .el-cascader__label span{color:#000}.custom-theme .el-cascader--medium{font-size:14px;line-height:36px}.custom-theme .el-cascader--small{font-size:13px;line-height:32px}.custom-theme .el-cascader--mini{font-size:12px;line-height:28px}.custom-theme .el-cascader.is-disabled .el-cascader__label{z-index:2;color:#b4bccc}.custom-theme .el-cascader-menus{white-space:nowrap;background:#fff;position:absolute;margin:5px 0;z-index:2;border:solid 1px #dfe4ed;border-radius:2px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-cascader-menus .popper__arrow{-webkit-transform:translateX(-400%);transform:translateX(-400%)}.custom-theme .el-cascader-menu{display:inline-block;vertical-align:top;height:204px;overflow:auto;border-right:solid 1px #dfe4ed;background-color:#fff;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;padding:6px 0;min-width:160px}.custom-theme .el-cascader-menu:last-child{border-right:0}.custom-theme .el-cascader-menu__item{font-size:14px;padding:8px 20px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5a5e66;height:34px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;cursor:pointer}.custom-theme .el-cascader-menu__item--extensible:after{font-family:element-icons;content:"\e604";font-size:14px;color:#bfcbd9;position:absolute;right:15px}.custom-theme .el-cascader-menu__item.is-disabled{color:#b4bccc;background-color:#fff;cursor:not-allowed}.custom-theme .el-cascader-menu__item.is-disabled:hover{background-color:#fff}.custom-theme .el-cascader-menu__item.is-active{color:#262729}.custom-theme .el-cascader-menu__item:hover{background-color:#f5f7fa}.custom-theme .el-cascader-menu__item.selected{color:#fff;background-color:#f5f7fa}.custom-theme .el-cascader-menu__item__keyword{font-weight:700}.custom-theme .el-cascader-menu--flexible{height:auto;max-height:180px;overflow:auto}.custom-theme .el-cascader-menu--flexible .el-cascader-menu__item{overflow:visible}.custom-theme .el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.custom-theme .el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.custom-theme .el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.custom-theme .el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.custom-theme .el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.custom-theme .el-color-svpanel{position:relative;width:280px;height:180px}.custom-theme .el-color-svpanel__black,.custom-theme .el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.custom-theme .el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.custom-theme .el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(transparent));background:linear-gradient(to top,#000,transparent)}.custom-theme .el-color-svpanel__cursor{position:absolute}.custom-theme .el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.custom-theme .el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.custom-theme .el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.custom-theme .el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.custom-theme .el-color-alpha-slider.is-vertical{width:20px;height:180px}.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.custom-theme .el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.custom-theme .el-color-dropdown{width:300px}.custom-theme .el-color-dropdown__main-wrapper{margin-bottom:6px}.custom-theme .el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.custom-theme .el-color-dropdown__btns{margin-top:6px;text-align:right}.custom-theme .el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.custom-theme .el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.custom-theme .el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.custom-theme .el-color-dropdown__btn:hover{color:#262729;border-color:#262729}.custom-theme .el-color-dropdown__link-btn{cursor:pointer;color:#262729;text-decoration:none;padding:15px;font-size:12px}.custom-theme .el-color-dropdown__link-btn:hover{color:tint(#262729,20%)}.custom-theme .el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.custom-theme .el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.custom-theme .el-color-picker--medium{height:36px}.custom-theme .el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.custom-theme .el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.custom-theme .el-color-picker--small{height:32px}.custom-theme .el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.custom-theme .el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.custom-theme .el-color-picker--small .el-color-picker__empty,.custom-theme .el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.custom-theme .el-color-picker--mini{height:28px}.custom-theme .el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.custom-theme .el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.custom-theme .el-color-picker--mini .el-color-picker__empty,.custom-theme .el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.custom-theme .el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.custom-theme .el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.custom-theme .el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.custom-theme .el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.custom-theme .el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.custom-theme .el-color-picker__empty{font-size:12px;color:#999;position:absolute;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.custom-theme .el-color-picker__icon{display:inline-block;position:absolute;width:100%;top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#fff;text-align:center;font-size:12px}.custom-theme .el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid #e6ebf5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.custom-theme .el-input{position:relative;font-size:14px;display:inline-block;width:100%}.custom-theme .el-input::-webkit-scrollbar{z-index:11;width:6px}.custom-theme .el-input::-webkit-scrollbar:horizontal{height:6px}.custom-theme .el-input::-webkit-scrollbar-thumb{border-radius:5px;width:6px;background:#b4bccc}.custom-theme .el-input::-webkit-scrollbar-corner{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track{background:#fff}.custom-theme .el-input::-webkit-scrollbar-track-piece{background:#fff;width:6px}.custom-theme .el-input__inner{-webkit-appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid #d8dce5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#5a5e66;display:inline-block;font-size:inherit;height:40px;line-height:1;outline:0;padding:0 15px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.custom-theme .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input__inner:hover{border-color:#b4bccc}.custom-theme .el-input__inner:focus{outline:0;border-color:#262729}.custom-theme .el-input__suffix{position:absolute;height:100%;right:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s;pointer-events:none}.custom-theme .el-input__suffix-inner{pointer-events:all}.custom-theme .el-input__prefix{position:absolute;height:100%;left:5px;top:0;text-align:center;color:#b4bccc;-webkit-transition:all .3s;transition:all .3s}.custom-theme .el-input__icon{height:100%;width:25px;text-align:center;-webkit-transition:all .3s;transition:all .3s;line-height:40px}.custom-theme .el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.custom-theme .el-input__validateIcon{pointer-events:none}.custom-theme .el-input.is-active .el-input__inner{outline:0;border-color:#262729}.custom-theme .el-input.is-disabled .el-input__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__inner::placeholder{color:#b4bccc}.custom-theme .el-input.is-disabled .el-input__icon{cursor:not-allowed}.custom-theme .el-input--suffix .el-input__inner{padding-right:30px}.custom-theme .el-input--prefix .el-input__inner{padding-left:30px}.custom-theme .el-input--medium{font-size:14px}.custom-theme .el-input--medium .el-input__inner{height:36px}.custom-theme .el-input--medium .el-input__icon{line-height:36px}.custom-theme .el-input--small{font-size:13px}.custom-theme .el-input--small .el-input__inner{height:32px}.custom-theme .el-input--small .el-input__icon{line-height:32px}.custom-theme .el-input--mini{font-size:12px}.custom-theme .el-input--mini .el-input__inner{height:28px}.custom-theme .el-input--mini .el-input__icon{line-height:28px}.custom-theme .el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.custom-theme .el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.custom-theme .el-input-group__append,.custom-theme .el-input-group__prepend{background-color:#f5f7fa;color:#0a76a4;vertical-align:middle;display:table-cell;position:relative;border:1px solid #d8dce5;border-radius:4px;padding:0 20px;width:1px;white-space:nowrap}.custom-theme .el-input-group__append:focus,.custom-theme .el-input-group__prepend:focus{outline:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-select,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-select{display:inline-block;margin:-20px}.custom-theme .el-input-group__append button.el-button,.custom-theme .el-input-group__append div.el-select .el-input__inner,.custom-theme .el-input-group__append div.el-select:hover .el-input__inner,.custom-theme .el-input-group__prepend button.el-button,.custom-theme .el-input-group__prepend div.el-select .el-input__inner,.custom-theme .el-input-group__prepend div.el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.custom-theme .el-input-group__append .el-button,.custom-theme .el-input-group__append .el-input,.custom-theme .el-input-group__prepend .el-button,.custom-theme .el-input-group__prepend .el-input{font-size:inherit}.custom-theme .el-input-group__prepend{border-right:0;border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-input-group__append{border-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--prepend .el-input__inner{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-input-group--append .el-input__inner{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-textarea{display:inline-block;width:100%;vertical-align:bottom}.custom-theme .el-textarea__inner{display:block;resize:vertical;padding:5px 15px;line-height:1.5;-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;font-size:14px;color:#5a5e66;background-color:#fff;background-image:none;border:1px solid #d8dce5;border-radius:4px;-webkit-transition:border-color .2s cubic-bezier(.645,.045,.355,1);transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.custom-theme .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-textarea__inner:hover{border-color:#b4bccc}.custom-theme .el-textarea__inner:focus{outline:0;border-color:#262729}.custom-theme .el-textarea.is-disabled .el-textarea__inner{background-color:#f5f7fa;border-color:#dfe4ed;color:#b4bccc;cursor:not-allowed}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::-ms-input-placeholder{color:#b4bccc}.custom-theme .el-textarea.is-disabled .el-textarea__inner::placeholder{color:#b4bccc}.custom-theme .el-button{display:inline-block;line-height:1;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-color:#d8dce5;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;-webkit-transition:.1s;transition:.1s;font-weight:500;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button+.el-button{margin-left:10px}.custom-theme .el-button.is-round{padding:12px 20px}.custom-theme .el-button:focus,.custom-theme .el-button:hover{color:#262729;border-color:#bebebf;background-color:#e9e9ea}.custom-theme .el-button:active{color:#222325;border-color:#222325;outline:0}.custom-theme .el-button::-moz-focus-inner{border:0}.custom-theme .el-button [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-button.is-plain:focus,.custom-theme .el-button.is-plain:hover{background:#fff;border-color:#262729;color:#262729}.custom-theme .el-button.is-plain:active{background:#fff;border-color:#222325;color:#222325;outline:0}.custom-theme .el-button.is-active{color:#222325;border-color:#222325}.custom-theme .el-button.is-disabled,.custom-theme .el-button.is-disabled:focus,.custom-theme .el-button.is-disabled:hover{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5}.custom-theme .el-button.is-disabled.el-button--text{background-color:transparent}.custom-theme .el-button.is-disabled.is-plain,.custom-theme .el-button.is-disabled.is-plain:focus,.custom-theme .el-button.is-disabled.is-plain:hover{background-color:#fff;border-color:#e6ebf5;color:#b4bccc}.custom-theme .el-button.is-loading{position:relative;pointer-events:none}.custom-theme .el-button.is-loading:before{pointer-events:none;content:'';position:absolute;left:-1px;top:-1px;right:-1px;bottom:-1px;border-radius:inherit;background-color:rgba(255,255,255,.35)}.custom-theme .el-button.is-round{border-radius:20px;padding:12px 23px}.custom-theme .el-button--primary{color:#fff;background-color:#262729;border-color:#262729}.custom-theme .el-button--primary:focus,.custom-theme .el-button--primary:hover{background:#515254;border-color:#515254;color:#fff}.custom-theme .el-button--primary:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-active{background:#222325;border-color:#222325;color:#fff}.custom-theme .el-button--primary.is-disabled,.custom-theme .el-button--primary.is-disabled:active,.custom-theme .el-button--primary.is-disabled:focus,.custom-theme .el-button--primary.is-disabled:hover{color:#fff;background-color:#939394;border-color:#939394}.custom-theme .el-button--primary.is-plain{color:#262729;background:#e9e9ea;border-color:#a8a9a9}.custom-theme .el-button--primary.is-plain:focus,.custom-theme .el-button--primary.is-plain:hover{background:#262729;border-color:#262729;color:#fff}.custom-theme .el-button--primary.is-plain:active{background:#222325;border-color:#222325;color:#fff;outline:0}.custom-theme .el-button--primary.is-plain.is-disabled,.custom-theme .el-button--primary.is-plain.is-disabled:active,.custom-theme .el-button--primary.is-plain.is-disabled:focus,.custom-theme .el-button--primary.is-plain.is-disabled:hover{color:#7d7d7f;background-color:#e9e9ea;border-color:#d4d4d4}.custom-theme .el-button--success{color:#fff;background-color:#409167;border-color:#409167}.custom-theme .el-button--success:focus,.custom-theme .el-button--success:hover{background:#66a785;border-color:#66a785;color:#fff}.custom-theme .el-button--success:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-active{background:#3a835d;border-color:#3a835d;color:#fff}.custom-theme .el-button--success.is-disabled,.custom-theme .el-button--success.is-disabled:active,.custom-theme .el-button--success.is-disabled:focus,.custom-theme .el-button--success.is-disabled:hover{color:#fff;background-color:#a0c8b3;border-color:#a0c8b3}.custom-theme .el-button--success.is-plain{color:#409167;background:#ecf4f0;border-color:#b3d3c2}.custom-theme .el-button--success.is-plain:focus,.custom-theme .el-button--success.is-plain:hover{background:#409167;border-color:#409167;color:#fff}.custom-theme .el-button--success.is-plain:active{background:#3a835d;border-color:#3a835d;color:#fff;outline:0}.custom-theme .el-button--success.is-plain.is-disabled,.custom-theme .el-button--success.is-plain.is-disabled:active,.custom-theme .el-button--success.is-plain.is-disabled:focus,.custom-theme .el-button--success.is-plain.is-disabled:hover{color:#8cbda4;background-color:#ecf4f0;border-color:#d9e9e1}.custom-theme .el-button--warning{color:#fff;background-color:#9da408;border-color:#9da408}.custom-theme .el-button--warning:focus,.custom-theme .el-button--warning:hover{background:#b1b639;border-color:#b1b639;color:#fff}.custom-theme .el-button--warning:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-active{background:#8d9407;border-color:#8d9407;color:#fff}.custom-theme .el-button--warning.is-disabled,.custom-theme .el-button--warning.is-disabled:active,.custom-theme .el-button--warning.is-disabled:focus,.custom-theme .el-button--warning.is-disabled:hover{color:#fff;background-color:#ced284;border-color:#ced284}.custom-theme .el-button--warning.is-plain{color:#9da408;background:#f5f6e6;border-color:#d8db9c}.custom-theme .el-button--warning.is-plain:focus,.custom-theme .el-button--warning.is-plain:hover{background:#9da408;border-color:#9da408;color:#fff}.custom-theme .el-button--warning.is-plain:active{background:#8d9407;border-color:#8d9407;color:#fff;outline:0}.custom-theme .el-button--warning.is-plain.is-disabled,.custom-theme .el-button--warning.is-plain.is-disabled:active,.custom-theme .el-button--warning.is-plain.is-disabled:focus,.custom-theme .el-button--warning.is-plain.is-disabled:hover{color:#c4c86b;background-color:#f5f6e6;border-color:#ebedce}.custom-theme .el-button--danger{color:#fff;background-color:#b3450e;border-color:#b3450e}.custom-theme .el-button--danger:focus,.custom-theme .el-button--danger:hover{background:#c26a3e;border-color:#c26a3e;color:#fff}.custom-theme .el-button--danger:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-active{background:#a13e0d;border-color:#a13e0d;color:#fff}.custom-theme .el-button--danger.is-disabled,.custom-theme .el-button--danger.is-disabled:active,.custom-theme .el-button--danger.is-disabled:focus,.custom-theme .el-button--danger.is-disabled:hover{color:#fff;background-color:#d9a287;border-color:#d9a287}.custom-theme .el-button--danger.is-plain{color:#b3450e;background:#f7ece7;border-color:#e1b59f}.custom-theme .el-button--danger.is-plain:focus,.custom-theme .el-button--danger.is-plain:hover{background:#b3450e;border-color:#b3450e;color:#fff}.custom-theme .el-button--danger.is-plain:active{background:#a13e0d;border-color:#a13e0d;color:#fff;outline:0}.custom-theme .el-button--danger.is-plain.is-disabled,.custom-theme .el-button--danger.is-plain.is-disabled:active,.custom-theme .el-button--danger.is-plain.is-disabled:focus,.custom-theme .el-button--danger.is-plain.is-disabled:hover{color:#d18f6e;background-color:#f7ece7;border-color:#f0dacf}.custom-theme .el-button--info{color:#fff;background-color:#0a76a4;border-color:#0a76a4}.custom-theme .el-button--info:focus,.custom-theme .el-button--info:hover{background:#3b91b6;border-color:#3b91b6;color:#fff}.custom-theme .el-button--info:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-active{background:#096a94;border-color:#096a94;color:#fff}.custom-theme .el-button--info.is-disabled,.custom-theme .el-button--info.is-disabled:active,.custom-theme .el-button--info.is-disabled:focus,.custom-theme .el-button--info.is-disabled:hover{color:#fff;background-color:#85bbd2;border-color:#85bbd2}.custom-theme .el-button--info.is-plain{color:#0a76a4;background:#e7f1f6;border-color:#9dc8db}.custom-theme .el-button--info.is-plain:focus,.custom-theme .el-button--info.is-plain:hover{background:#0a76a4;border-color:#0a76a4;color:#fff}.custom-theme .el-button--info.is-plain:active{background:#096a94;border-color:#096a94;color:#fff;outline:0}.custom-theme .el-button--info.is-plain.is-disabled,.custom-theme .el-button--info.is-plain.is-disabled:active,.custom-theme .el-button--info.is-plain.is-disabled:focus,.custom-theme .el-button--info.is-plain.is-disabled:hover{color:#6cadc8;background-color:#e7f1f6;border-color:#cee4ed}.custom-theme .el-button--medium{padding:10px 20px;font-size:14px;border-radius:4px}.custom-theme .el-button--medium.is-round{padding:10px 20px}.custom-theme .el-button--small{padding:9px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--small.is-round{padding:9px 15px}.custom-theme .el-button--mini{padding:7px 15px;font-size:12px;border-radius:3px}.custom-theme .el-button--mini.is-round{padding:7px 15px}.custom-theme .el-button--text{border:none;color:#262729;background:0 0;padding-left:0;padding-right:0}.custom-theme .el-button--text:focus,.custom-theme .el-button--text:hover{color:#515254;border-color:transparent;background-color:transparent}.custom-theme .el-button--text:active{color:#222325;border-color:transparent;background-color:transparent}.custom-theme .el-button-group{display:inline-block;vertical-align:middle}.custom-theme .el-button-group::after,.custom-theme .el-button-group::before{display:table;content:""}.custom-theme .el-button-group::after{clear:both}.custom-theme .el-button-group .el-button{float:left;position:relative}.custom-theme .el-button-group .el-button+.el-button{margin-left:0}.custom-theme .el-button-group .el-button:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.custom-theme .el-button-group .el-button:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.custom-theme .el-button-group .el-button:not(:first-child):not(:last-child){border-radius:0}.custom-theme .el-button-group .el-button:not(:last-child){margin-right:-1px}.custom-theme .el-button-group .el-button:active,.custom-theme .el-button-group .el-button:focus,.custom-theme .el-button-group .el-button:hover{z-index:1}.custom-theme .el-button-group .el-button.is-active{z-index:1}.custom-theme .el-button-group .el-button--primary:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:first-child{border-right-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:last-child{border-left-color:rgba(255,255,255,.5)}.custom-theme .el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:rgba(255,255,255,.5);border-right-color:rgba(255,255,255,.5)}.custom-theme .el-checkbox{color:#5a5e66;font-weight:500;font-size:14px;position:relative;cursor:pointer;display:inline-block;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.custom-theme .el-checkbox.is-bordered{padding:9px 20px 9px 10px;border-radius:4px;border:1px solid #d8dce5}.custom-theme .el-checkbox.is-bordered.is-checked{border-color:#262729}.custom-theme .el-checkbox.is-bordered.is-disabled{border-color:#e6ebf5;cursor:not-allowed}.custom-theme .el-checkbox.is-bordered+.el-checkbox.is-bordered{margin-left:10px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium{padding:7px 20px 7px 10px;border-radius:4px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__label{line-height:17px;font-size:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--medium .el-checkbox__inner{height:14px;width:14px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small{padding:3px 15px 7px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{line-height:15px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini{padding:1px 15px 5px 10px;border-radius:3px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__label{line-height:12px;font-size:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner{height:12px;width:12px}.custom-theme .el-checkbox.is-bordered.el-checkbox--mini .el-checkbox__inner::after{height:6px;width:2px}.custom-theme .el-checkbox__input{white-space:nowrap;cursor:pointer;outline:0;display:inline-block;line-height:1;position:relative;vertical-align:middle}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5;cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:#edf2fc;border-color:#d8dce5}.custom-theme .el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{background-color:#b4bccc;border-color:#b4bccc}.custom-theme .el-checkbox__input.is-disabled+span.el-checkbox__label{color:#b4bccc;cursor:not-allowed}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-checked .el-checkbox__inner::after{-webkit-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.custom-theme .el-checkbox__input.is-checked+.el-checkbox__label{color:#262729}.custom-theme .el-checkbox__input.is-focus .el-checkbox__inner{border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#262729;border-color:#262729}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;background-color:#fff;height:2px;-webkit-transform:scale(.5);transform:scale(.5);left:0;right:0;top:5px}.custom-theme .el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.custom-theme .el-checkbox__inner{display:inline-block;position:relative;border:1px solid #d8dce5;border-radius:2px;-webkit-box-sizing:border-box;box-sizing:border-box;width:14px;height:14px;background-color:#fff;z-index:1;-webkit-transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46);transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.custom-theme .el-checkbox__inner:hover{border-color:#262729}.custom-theme .el-checkbox__inner::after{-webkit-box-sizing:content-box;box-sizing:content-box;content:"";border:1px solid #fff;border-left:0;border-top:0;height:7px;left:4px;position:absolute;top:1px;-webkit-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:3px;-webkit-transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms,-webkit-transform .15s cubic-bezier(.71,-.46,.88,.6) 50ms;-webkit-transform-origin:center;transform-origin:center}.custom-theme .el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;width:0;height:0;left:-999px}.custom-theme .el-checkbox__label{display:inline-block;padding-left:10px;line-height:19px;font-size:14px}.custom-theme .el-checkbox+.el-checkbox{margin-left:30px}.custom-theme .el-checkbox-button{position:relative;display:inline-block}.custom-theme .el-checkbox-button__inner{display:inline-block;line-height:1;font-weight:500;white-space:nowrap;vertical-align:middle;cursor:pointer;background:#fff;border:1px solid #d8dce5;border-left:0;color:#5a5e66;-webkit-appearance:none;text-align:center;-webkit-box-sizing:border-box;box-sizing:border-box;outline:0;margin:0;position:relative;-webkit-transition:all .3s cubic-bezier(.645,.045,.355,1);transition:all .3s cubic-bezier(.645,.045,.355,1);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;padding:12px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button__inner.is-round{padding:12px 20px}.custom-theme .el-checkbox-button__inner:hover{color:#262729}.custom-theme .el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.custom-theme .el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.custom-theme .el-checkbox-button__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.custom-theme .el-checkbox-button.is-checked .el-checkbox-button__inner{color:#fff;background-color:#262729;border-color:#262729;-webkit-box-shadow:-1px 0 0 0 #7d7d7f;box-shadow:-1px 0 0 0 #7d7d7f}.custom-theme .el-checkbox-button.is-disabled .el-checkbox-button__inner{color:#b4bccc;cursor:not-allowed;background-image:none;background-color:#fff;border-color:#e6ebf5;-webkit-box-shadow:none;box-shadow:none}.custom-theme .el-checkbox-button:first-child .el-checkbox-button__inner{border-left:1px solid #d8dce5;border-radius:4px 0 0 4px;-webkit-box-shadow:none!important;box-shadow:none!important}.custom-theme .el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:#262729}.custom-theme .el-checkbox-button:last-child .el-checkbox-button__inner{border-radius:0 4px 4px 0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner{padding:10px 20px;font-size:14px;border-radius:0}.custom-theme .el-checkbox-button--medium .el-checkbox-button__inner.is-round{padding:10px 20px}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner{padding:9px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:9px 15px}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner{padding:7px 15px;font-size:12px;border-radius:0}.custom-theme .el-checkbox-button--mini .el-checkbox-button__inner.is-round{padding:7px 15px}.custom-theme .el-checkbox-group{font-size:0}.custom-theme .el-transfer{font-size:14px}.custom-theme .el-transfer__buttons{display:inline-block;vertical-align:middle;padding:0 30px}.custom-theme .el-transfer__button{display:block;margin:0 auto;padding:10px;border-radius:50%;color:#fff;background-color:#262729;font-size:0}.custom-theme .el-transfer__button.is-with-texts{border-radius:4px}.custom-theme .el-transfer__button.is-disabled{border:1px solid #d8dce5;background-color:#f5f7fa;color:#b4bccc}.custom-theme .el-transfer__button.is-disabled:hover{border:1px solid #d8dce5;background-color:#f5f7fa;color:#b4bccc}.custom-theme .el-transfer__button:first-child{margin-bottom:10px}.custom-theme .el-transfer__button:nth-child(2){margin:0}.custom-theme .el-transfer__button i,.custom-theme .el-transfer__button span{font-size:14px}.custom-theme .el-transfer__button [class*=el-icon-]+span{margin-left:0}.custom-theme .el-transfer-panel{border:1px solid #e6ebf5;border-radius:4px;overflow:hidden;background:#fff;display:inline-block;vertical-align:middle;width:200px;-webkit-box-sizing:border-box;box-sizing:border-box;position:relative}.custom-theme .el-transfer-panel__body{height:246px}.custom-theme .el-transfer-panel__body.is-with-footer{padding-bottom:40px}.custom-theme .el-transfer-panel__list{margin:0;padding:6px 0;list-style:none;height:246px;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-transfer-panel__list.is-filterable{height:194px;padding-top:0}.custom-theme .el-transfer-panel__item{height:30px;line-height:30px;padding-left:15px;display:block}.custom-theme .el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.custom-theme .el-transfer-panel__item.el-checkbox{color:#5a5e66}.custom-theme .el-transfer-panel__item:hover{color:#262729}.custom-theme .el-transfer-panel__item.el-checkbox .el-checkbox__label{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;padding-left:24px;line-height:30px}.custom-theme .el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.custom-theme .el-transfer-panel__filter{text-align:center;margin:15px;-webkit-box-sizing:border-box;box-sizing:border-box;display:block;width:auto}.custom-theme .el-transfer-panel__filter .el-input__inner{height:32px;width:100%;font-size:12px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;border-radius:16px;padding-right:10px;padding-left:30px}.custom-theme .el-transfer-panel__filter .el-input__icon{margin-left:5px}.custom-theme .el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.custom-theme .el-transfer-panel .el-transfer-panel__header{height:40px;line-height:40px;background:#f5f7fa;margin:0;padding-left:15px;border-bottom:1px solid #e6ebf5;-webkit-box-sizing:border-box;box-sizing:border-box;color:#000}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox{display:block;line-height:40px}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{font-size:16px;color:#2d2f33;font-weight:400}.custom-theme .el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{position:absolute;right:15px;color:#878d99;font-size:12px;font-weight:400}.custom-theme .el-transfer-panel .el-transfer-panel__footer{height:40px;background:#fff;margin:0;padding:0;border-top:1px solid #e6ebf5;position:absolute;bottom:0;left:0;width:100%;z-index:1}.custom-theme .el-transfer-panel .el-transfer-panel__footer::after{display:inline-block;content:"";height:100%;vertical-align:middle}.custom-theme .el-transfer-panel .el-transfer-panel__footer .el-checkbox{padding-left:20px;color:#5a5e66}.custom-theme .el-transfer-panel .el-transfer-panel__empty{margin:0;height:30px;line-height:30px;padding:6px 15px 0;color:#878d99}.custom-theme .el-transfer-panel .el-checkbox__label{padding-left:8px}.custom-theme .el-transfer-panel .el-checkbox__inner{height:14px;width:14px;border-radius:3px}.custom-theme .el-transfer-panel .el-checkbox__inner::after{height:6px;width:3px;left:4px}.custom-theme .el-container{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-flex:1;-ms-flex:1;flex:1;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-container.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.custom-theme .el-header{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-aside{overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box}.custom-theme .el-main{-webkit-box-flex:1;-ms-flex:1;flex:1;overflow:auto;-webkit-box-sizing:border-box;box-sizing:border-box;padding:20px}.custom-theme .el-footer{padding:0 20px;-webkit-box-sizing:border-box;box-sizing:border-box} \ No newline at end of file diff --git a/src/assets/fangwei/error.png b/src/assets/fangwei/error.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ccbf03dbf9b92039727cabc9600005a41652c1 GIT binary patch literal 425 zcmV;a0apHrP)`g;1dLH;9kB*@laP z5S5R;YwwZSST?(R#ZEV8-g)MI&&&ul!%rm^(3VlqAz(z{AyUpn$U7w`+kgLlSG`55 zC%$Wrfyr9v?_8chm%Si7sMLM{zH2moW8KPZ1yTlFxh5m9Rx1;@P#A6mZjZvY;Uu40zeb8r00000NkvXXu0mjfgv`J# literal 0 HcmV?d00001 diff --git a/src/assets/fangwei/success.png b/src/assets/fangwei/success.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef016c00f7d1e1e8d753e9b0badcfbaecf83d32 GIT binary patch literal 660 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 literal 0 HcmV?d00001 diff --git a/src/assets/logo/jnsei.jpg b/src/assets/logo/jnsei.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a998944caae08835ba055f43530170030028d906 GIT binary patch literal 43139 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 DF~K^& literal 0 HcmV?d00001 diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f23b7580ba11f743862f6d4a462531f761edb469 GIT binary patch literal 8567 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 + + + + {{ item.meta.title }} + {{ item.meta.title }} + + + + + + + + diff --git a/src/components/Charts/MixBar.vue b/src/components/Charts/MixBar.vue new file mode 100644 index 0000000..5e7b5ad --- /dev/null +++ b/src/components/Charts/MixBar.vue @@ -0,0 +1,139 @@ + + + + + diff --git a/src/components/Charts/MixChart.vue b/src/components/Charts/MixChart.vue new file mode 100644 index 0000000..2b4f1eb --- /dev/null +++ b/src/components/Charts/MixChart.vue @@ -0,0 +1,293 @@ + + + diff --git a/src/components/Charts/MixCharts.vue b/src/components/Charts/MixCharts.vue new file mode 100644 index 0000000..e391256 --- /dev/null +++ b/src/components/Charts/MixCharts.vue @@ -0,0 +1,65 @@ + + + + + diff --git a/src/components/Charts/mixins/resize.js b/src/components/Charts/mixins/resize.js new file mode 100644 index 0000000..dccaf1a --- /dev/null +++ b/src/components/Charts/mixins/resize.js @@ -0,0 +1,34 @@ +import { debounce } from '@/utils' + +export default { + data() { + return { + $_sidebarElm: null + } + }, + mounted() { + this.__resizeHandler = debounce(() => { + if (this.chart) { + this.chart.resize() + } + }, 100) + window.addEventListener('resize', this.__resizeHandler) + + this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0] + this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler) + }, + beforeDestroy() { + window.removeEventListener('resize', this.__resizeHandler) + + this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler) + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_sidebarResizeHandler(e) { + if (e.propertyName === 'width') { + this.__resizeHandler() + } + } + } +} diff --git a/src/components/ColorPicker/index.vue b/src/components/ColorPicker/index.vue new file mode 100644 index 0000000..2c1b4a0 --- /dev/null +++ b/src/components/ColorPicker/index.vue @@ -0,0 +1,238 @@ + + + + + diff --git a/src/components/ConnectUsImg/index.vue b/src/components/ConnectUsImg/index.vue new file mode 100644 index 0000000..0718914 --- /dev/null +++ b/src/components/ConnectUsImg/index.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/src/components/Download/index.vue b/src/components/Download/index.vue new file mode 100644 index 0000000..6d99be6 --- /dev/null +++ b/src/components/Download/index.vue @@ -0,0 +1,54 @@ + + + + + diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue new file mode 100644 index 0000000..f2a944b --- /dev/null +++ b/src/components/Hamburger/index.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue new file mode 100644 index 0000000..2bc35de --- /dev/null +++ b/src/components/HeaderSearch/index.vue @@ -0,0 +1,182 @@ + + + + + diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue new file mode 100644 index 0000000..f17a1a3 --- /dev/null +++ b/src/components/IconSelect/index.vue @@ -0,0 +1,68 @@ + + + + + diff --git a/src/components/IconSelect/requireIcons.js b/src/components/IconSelect/requireIcons.js new file mode 100644 index 0000000..56edb9f --- /dev/null +++ b/src/components/IconSelect/requireIcons.js @@ -0,0 +1,10 @@ +const req = require.context('../../icons/svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys() + +const re = /\.\/(.*)\.svg/ + +const icons = requireAll(req).map(i => { + return i.match(re)[1] +}) + +export default icons diff --git a/src/components/Iframe/index.vue b/src/components/Iframe/index.vue new file mode 100644 index 0000000..104611b --- /dev/null +++ b/src/components/Iframe/index.vue @@ -0,0 +1,66 @@ +

    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�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/Jdo_c~kHdPMS{`l_2f6M4`Y5+kc z2cS1`PnYm0Dyhmg?UTS)ArXFWqn&EY)uqA?>$#W00+M9)9LnkvdZwvUp%>RAP>b72 zTCr7ocF+jvB>kY!;ML)qE%Qe?y>y+;y^jmEL`TO~=za-`7jEr4Y^z4=Er@K;LLu}I z7qSD7XIC-7y;1x7+Y$TWkM@+4wDd++aN34-`}JyFe8)GT^u-^6EBykXLhnB6t$g41 z&KnvL%UV6CAL_(PsHoc3;7sMYPex<>4PaedM6Z6iz7SKp8#KW zIp^<$){6n*HTrX{AQhU+n|umop7b+YS`smia`{tethA)gkryoEJb_I?^&%wqlSHWn~mi2ERB^d*gR?bO%~NP&o5cz`lBz~uU{=*H-7v`vJm{;A6z@D^GTD? z^IOKz8gj5ls^koRA{ysHS0&X(3}LVefNgrLUehiaVgbE=2#D83PSm0LP^jGF6?EqF z4Kxu87d09mF+<-&PN#!448i(S1M)fY-eqz%0Y*h*U2p~qR)2UOqR7sPQ4z^t z7{Y3b!RkolY%eU<-F^$5^BmU;*ByqsoPQ5*co5;v8Fxd5t2=mfQztAXpn+(yzyZfT z0^pvMhOhu=-7`Cf@ygZx&xT?%zrwhaKZ|UDJTVk{okW@zAF?;ah-&*w_ ze{`zHKkoeE7Jn^z=03|I40~>khjY|Kp{8}49H{}orG;RZ77uitm;H~>__Ccan}Cqu z+58UXP zX2*p>QwGvacSg|V^+zX$2p<(7U_uGA-sl;GwI}6D)tQDSuKBJ+1#o+PM{W`G;d* z2j@8E|GlGDDa1dFkmZgX9s*2As8uvXXoc`js$%?Ekwg{lwIYi`f@S*cj)(VdBgD-l zELv2{&kxiM_#c`u9dUZz5AINCa_ShWF_w+@T^^aS-!aaxqKhfEPbxae#lnF!AQ#8B>5L2-GXFdk#HW=Wqv?7!(3n+&0PXa=8 zc-!{LT!7ceVJB~qi@4!f*pKLo;^gx!^R^`Scaz_TG>+jpJKOm9nXhx8C+)p%8c)dcMCn+5SPlX!#um zGLZH0;{3#eKkkhlniE!1+3qXjjRr4j{D;OR)8);<_VPA8;lHkhM6Dk75?6gbe&m*K zRs)_`5<6cz^SbaO>${0*q9U16$u#NxEQ7`77r+Jo^Xm&}Rfj9nNtmW%%(??;wnmca7ge?j}bI7gxPzU;A_W zt?SPxkWq}j3sGw0opoC-=S&QN+9}w4t)3tbDko*AFK@}!o|-0+It5+KU$ds;cM?)4 z(QTJ@XM0g>LQljHI(pL4S&>9OmR~k08S@dcOKFxfC`3i8iQP{YnPw$C)eSGS!s%XC zO=&OzsFjQ@wAx$UQBt&GXHdnQc-`FD*@~FE!9*Y9Xr2RbX7MJU$qUp8U#VviD`cx9 z@njGc#IH{VR$=G%wl;k9o_RHzzgz58*$oW6pwT$VL*T{Dh(HO*zhsa8rA_~#|IWO9 z+lo+OmDDY^s?68Co70(ljKu1GpBY>=&(Q|v9fBDd0Q)cWI=1&OC=B42yL+NL>n8jU z*C?jL=JBiF9lR&vXJ;~l8;*Lh2?^$sB+f;yP+-`F4YYp?1lp?! z@w}N%IMahRdd);%93kf{ITlMDrOPFt$dN_NTWG;?q30RKWl`sH0fxIYRs+LAt^|R! zF&ZK7b&^sF$igp9lgfsmtL<_igQzAMIk4_JD!-eEFN}&}kYgbFGQ3x0yY+6oX=7L& z$N{)gzv~NIyqz>TtLKfQPoY!pjiDhiNiLlY29QS2sjR{JjPKPurM<$>fe>NI00otE z36nOZ+Bb390QY#d0&xAv2z#YHapT-3L_XFnt`)8Kc*?J>^wJ{@#fuF0o(Idq?SucHCx+P&v zgzqOOT(*H_V=#5gpC7|;^_ELcJEX*jQ)2l8Ryjq|hflBAMrUl<%MvGuUpn53y-x>A z=pN_p=IxjG_D+;AMXs|d{fEZR{r=y*N z@>ecL6C86OVs=?ed7i+BPt&|Ofd6pJdU||3I{5@Qc$ByG z)w5>&l#jxj7Vm0GASImpvNx|GBNiuJDDt*O?VG!}qnP z7yCBMV^LjJfY2)_OmwjB@I(QN8Y(za1n=bRPq$-abJog+$F}w6Y8Q0!-TUa4*+VnD z%*0IGA(7`k)Ypl_IrOVfxD6~3qoSBn8HX*Ly5*3}uzWw7ug}I}VbqBjV-EbBdHq;o zG$5=sjQ3#m(BXFZqhwP?*LpivE{Z98HhiyS7r290Ea#NdRS~lOdglJzarc994QK!3 z%j2MMAcIKX*HZ7q%=grUEA-^7Ix~9VH?y#R981*g^!?I5vOe~p&#{c6>PPi3g$)t% zdY~uJaCf}*BEBuB=0hZ>qYJ1eOE?o*5bnJi5>H&K8y?&0T_u`Y z7T?)tv3o|)$rFm`i4!0$y`?g{^0iaC4vlt@@YGK{z@zkYN$sST>%ZYVtG%ONJeFWWy}i?Xc{KZwI9jh3t{Qf8x3?sW;=Idw zd1d$C_wZ8)QR}tOdq3-Mwk`oJ_XRnx@p{p;+~=(yrULFj;w;$9pXZ!mPz-e=8nBw+ z84KyDtuh^!H>_NhiKFj@HSLx;a(Znun_={4h2Seb*I6Cm6KY-ASPm4Io_wLc1bwH& zX&d!DPOh5x=XT34)8`Yle|;%-pDtpcA#5!C2Mu}}Icoa-ucUPhL0=+@6idh9a?X#m z%Tmd~B&KO=+wRtA1+ZFiS|$f=$VIumw`Q<9 zG%PAxSjm#DcPVDDCb5LKSGh(V?jdKTHw6ITL(#9*vxu6*;yasZ-}ZFr+RdRpa^4*!z?uKP z<^RFQ7bf0qOFcTrsu#Ajo4a^zQy%oHtN1o(uSeu$QCIJ!to6fM7`UokvwA34<2QuTn8 z?iH&M1ew&r(ZMiq%iZ*>dKgDnu;&piQ1r_-j_x_7%c-4mop=qi+exg|tgp_2io#-f zlAE$$&E}kLbqfshR=FqPill27L%+(XaPxRdbIC?6%uhM{*qO9h3>w%~7c4fzJGcsb z1(va9yY*9~q2}`LhhB?2B@FijvCR#1MzfZmyiFJJ4N7p1W>6K^8WOJEntrzJGY!)qX?1d~_86?1V>KnB_!)}OV zLmHb~l9bmXTU&_I5ABU(pWYnRP5fOP9%tbWfmJJasa;P&U9DT7A?!>^+udZ|72Ouf z77VtOj21ag-*vlweSyNbr=wrht%Sk?t^8BgE!YQ#n|asEYc`Lp&no3r(S&&`a>9e{ zcBK&6jxiUR@n0)IwF$#f@rJg!R&-#va1nHE>Ql>n9+xY2-vA#!;B)u$sIt|%`xnZt z2M~}e*+FzWjZhoyjzj9pcRwfMBAN=y{&}h{TiN@EPt^jFsYg=>7d{D)L!2|$s%OGw zgO?AicV<5F;OT%r3ThSy$Pm<8Z|5}-S%4SKJiu*Ar@afCsF&QpZ_6 z^X@PIfxI4PV_5k1I=LV!RJP@0b#cdWKPWlYazC0}2@ zpw=yLDkpT};L+wExs`mLp>PVHAr~|s=ZPejG?EnI-5-vY0eczy_D~PZB za@X<6Xn5(U!4f4icy5V66(ACNi(F3-2joTK zyGW!T8=7oc&c$!r>Bh3n%I~J*45`xBMq1$-8o>Uh=QFo~qhy($9#cET?dvO2^#s%j zMJ_)?_Bwa2uW#;M9u3q~?QL-n&Q@i(z_pP2t4GZTI`T8EX_Y#m+qi%$rW4hB4hAG9 zuIvzlIH$D0^j59+60xm>Ci_8%X>$odVLs?GernmQl8ytyC;_$2x#H4yXBu%D`^)jg z)!~=(+sY^o&(z$nc)=Ux$JLYWK{-jC-$@G!J)HlWX~($zbQ1KXr0WlW-W~+ZoDZQ* z-`pfGrdg4&QKvhfmmtlh<#c0ZC(D%rC7s#B$P7qgLTmI~Z0^1u=O z3AI8gOd8PSx4Tg6=^VAF+z)ra4ps!6=5L-vKgFBYsksfRsgA4Ntd6QtR~SheKFuJv zLFK<21Z%={cL4@eAOp`Ag!?B z3f@K-t&v(N)tIl!Wz<=IARd< z==pM760{)dVWQ6QuQXSY-*5k7$tb#ZwxjFeD8qnmR^rl@;a*&lw#wiTxv*5c1{Map z9?D`@KRptaiLAYR&!Ixbg1t@jgj$-Vv$M#Pa{ikJH@w^|gGcQczf|G|k)$X^cXEwf z6IF2StP4)^U0yN`9^0FNNg;Jeskum&n$|I<8{hY_$Oy#2!SQWs|x&gxTt)#$eTq4#=)zMN1a zarJWdCgerrBCqk8%7aK+A$WbA@Ac3>b+^pp;9M3UD-4y|05BTc)BM%1KM6pAGMu*g zPXdF~MXBSCrHIX%v=c6{9{L`!LH+v3vGrK!$$)7kX%>!@|J`r!sk6hXS`_}SL z0%nM^h?(AqeLX3D^6`yN0(D^?CsqT1tgOCuM)m~$;gdkj@F#(MsbR#X3*tyJ;n?^j z=S3*sCPUroP53F7y&~?=psJn0MxxV7S}nDb$tn8|VE56`EK*!`NlU_bpP%OO`?;Cf zes*zckSdds38NKxFwt6TQq7@R>+4?YOCREYm>$+HQ!^{BD{p&NB4u|VS{?rL(I11M zF}&)`R(bl&p4bo}!aZY*?aaqlMx2tBUZ3jmJ?QtfyjES}9{Q}walz}bWBkFY-`3(( z=H(Co&|S>Lom2(3bc|1g1nIqB@!K8MRNZ8@m=0^_n>vBeR-sqs{`OLp|K>idz5MTL zJKz_O>DPV|kjF=?*iUSNKM9DhM|1+!vz&w_>H(a3a?$7{_mjXc|I$mU{@P2Gh&AF8-Z1MaGm!|8wgJk#tgMDw& ztp2k=ya3DuDdWh)%=Pky|AtXtO7rAF_-$a- zG#J{snMD~HoEXj=J5)y*&keyFb=YNW@$t%@vbBDxWB&Xob_F+w77E+m;b!ZG`tJ0Z544B> z+S0RG-m0w9Q@N$G+Q4EpuB0nh9zxw4dR74B1hHm5moY840w@-iIG3teX5^TtSemZW zV8dTag%^Q3BQ=;7WB(S_xOB+>*wC@~r=r36YFkVDX2WCz+?<-G>&AWy{H~D(M}6Xj z3v=;-A#s<2H1qYev(QZg7#l;_V{o50TG? zcC$`GIz|`bw0AbP@CmyVVz?fh<}yi6qc$G?c*Iq==;Z^DWf8PjUxUH-kYfPtswB@0MJ zr)Pre-Dw%agLYT@Zukc}yx|(s$Wqr?KH#FU-NTnq=t{+_f@^}$53Sx5m==QNVJ^^Q zUF|c~{iJ9V%V#gwv`0hh=N@BCfYRHD85s04jwF?QXfcLAxe<>^ehTZtCyT1H_~jY1 z^zUM_;OXaCEKxlx`9jsCVi|I#lE_o&m_~`oTzXut2s9BY|839?u2@uREg*OUtzQUx z@|-62$CgQXo;V$5m`xKYQ?hh3^`Ek5o;MS_QLy)Zf`h2}cyE0ib}0ty$9Ym;HR<0y zH?4$zwW_4w;TWbr9k;sg8a`~^vFCvAZvJ0W&-Vp8F_B!zrpsQF58Jvq392DxiSWdF zE>pHQKC^G1R^fr7bF++(%Zid|^2YgeXdgFvToXAF%J4($0{GtRp=%mSEsn;+#pQ2i z1NXN#7UDq3J4gW68c1`VDgSchF;*~(AT|x8@DK7|rU!tMtypY=(B|_V89YSSU_)uk zCP5@SxfX-kCj8J=1g!T^{K=U<3#fI`+8E!Y`rA$yAC0TnhXVl&PPD`1RZLT@l*)wJ zV?$U+DA}nWnr)YkO(>DEK(S^FYJhcZ8^+J-R=?Xa)#g~B7S$;yyt4;#IJLUWY~dwf zZD)bgF^YEb&8g%B}10N zQ53xAUt)>8CxR|*C6(@;Pi^!3^SWuyc?G{IeWCPY{hww;WN_|L3>yjxgMnPntV~Rm zgS%(l{yo`&X)D9Zy$7l+eq3w}o>Bvex>J53-6P{L$-39xJQT?8te18USU*%>zE{ok zOv&>fY7(bjW$Hb)(!b=S6S{u0I)>d~02TJR*>Q#`>qZKdM@!rmdY7yMxDX+)k zUYPC}Ob}LA{V-LR z6k3g3f^*nF4q-3^@b%-LMtnR2u24la2i|J}hCOA{FgMSZ&irg9(mzQc=Ex|>1s@C^~?MZoVE^N#xw zWoB0Sren=$%C}RoD4p9GL=5Y;`O@|xLoF1XnAz?CB&v>2yUu_NWF=RqfPN8MHfLw#9zu4AyD zS-72xGBw9g>#%?;bXXJ z7fm33ruZ1LKj5&Dz`ioHgsnYl9pAYfCYO$Tbeo7Y=)Z?sF*xwQZwm%LX7^vvsNX5S zxjf}kzZ$5D^34qP*u)US&v=K`X7gKvU{`A0`^scX9&phqu-ofBqn`wn!*7JPl{T=} zNPZMz53R(M?-o-symu~JRw5$0aaSR$U?gA)hce@#uPjD1nVYUm`3B?S?2lTXXyh36 zZ0C>Enpf}YlMfqrl%}xg!X-{y=RVAC=P0>SudzBr$|$sA)1&8;zz_I*>B{-iw=7l- z&rf@KA$BFaJYVc648<@vx6%_aAbV+cz5=?s)lQ$qP8qst?LZl2-rq0wfV0dw@(FHo z9+ga<4^N+OLc6^48Y)c4EAtvI<`wT}SMA@Zs(YsNA37(CVb!ExVkP^cLJgUq2GrRb zN0*qMHd~dttuF^w|L2fW*}L5JM{>GJiF*-^j4fEhyoLVSUSJkZ!vTEXLZ72+;h_{| z(&=)RueaovG*bZs!31$>3PY=sN!4HebgwSh_?J6yU)CQ5#tEmcY#6j*+<|lw@~xws zC|BAoku07&giEhG&=5ykga*?!4Wz{<+(2WW{%e(N{7tIL>;}q1L=G%G zA@O~otU9!D9o|)h8nr0Sa%0&cksy6}O}aYA`7QYTV#G&*%sMi)tlHiUZ=W`cyVKb*N{`y#a6!=e;6PR!ORh zneaRB5^muX@vAfmXy?mTJGK}j6>h2%a%*BW69Pal4P)Nsc zxv61vh?cI;NZ^nEp{@T>AHNF-XY+DyCGH;p;8C&ONQ$X^N}4K(zHjYL&GC7>7DE0w zyc>*YOh~oQCv;p=UFGh~%>)%h2AdOK;!R03Jv+{~zH42l85xTzHqpn+a`b>^rOIpH z*O$043S4zZH;l;;UDJ{>c)CB&p*oT_SX1fEJnJpzP1DsAoM}icw#l7bo60nP%g@wT zok9ciuP7HI_Za&pq`m#@Fvh1X0LF+G~a==MqUNi!ftZ{204eC6-P{3iCJPoMhY zuZgO6$<#0Ft#Ix&xIhb+g*}ku_n_9$l`Tew=OtIwcGSL%q5SRhbDGtlxT}iZvF9<% zu#?FZSjMIUJ^t)3&DRMy7B(siKc`i~Fw>cK*1|YHoTDJE#oNOZg8UL6gRY>1D@@ay z7xa;LKv(V&ghm?Qn}US605AVCE3%%I0fE4zb&U(#u=fKYxdY3Zp7s?ecZ{46irasJ zJE}jhoMo+z9_D+bs~yAcFKye_;{B|7?#=4qsw3c(f^@~m7#EeESqKDze>ATr`#!>E z+g%Df>W%gYpx+^KBzw9{cX%*xmIrmm!(UHgC`g~zG*vcL98TsHg;hT-T4;b`6*3XW zr;ZX&Rwg34wkKwkJU$6PfT+<2fU1#L%wGi}36jBICwLur9pCu(-zR&51i}VwK$cV5 z8VDT(%}eTaeeBw~xP5Wc=&&~IlYkT_;&gw(Zr)YU^@7$JJ1M4VujprwBI|M*WKx7X9wYG`lHPrVk>-FxX z4~7NQ&rYskqgA~&7|e0F7;8wQ2z_NOp;13`-l6uQ239v2DAQxCa>0)cCU0LfYB?TW z3kkm)ZXepZMRi%#UR{guszuxyn=?+iq-SPjnw)Z|MAezDg_~!>BOKkPZQ6!g_Cxv? z9iL2i`5!;`GM8*oPaYVHi^q2XF z?4>MXUwniOsg$4ZUyvZ*u3UR5ni z(*kpOC<0w@nRz;lWnT&_BITv(ZktSNX4`Lxn;R-;p z$GgO*=UJR}LREe6xZa3Hr_$kw^%`9TlBhf7kMej%eUxVXwG1J)p(|Ebcg%~O?>5)J zv^-Y430Hp0u5oWwTBw=Ng0*Nem@u8mZEdxMVVc@P7pgAI&c(2hQ>^J#^WQ{C_^L)8QgnMxr%j#ZK{xHA z(&b~c=zglj)mBTv_&C=@RYkhVfq02Qxw#pC@X0_0j=%D8mu%v2ONfaD;xNT2wUd+; zIsaPjn;iT<|0RfqS~@(Du*7|3XrlqL*;d36PJd>KC91X~xfu7lbaV&ssj>s+2d%PA z7jY?)Gx3na3gxS$;mw>SOniPAwImyI7ju0%eVr=L-`=b(zQhR-^n$tv{BAA-@YI3sX`ZzqNRkT5;uOO?r2_ZHye7qMq9+h)KdE5owEq z#SZc!1B5%|8p^xDpHcm63+ZBCn*KYWE+r7I$p#)g6<0_i+WbbhY@2#tY`gW{gs<{1 zK64M)|KJi0m`hEP;%Ko;TVo7Rj)l>#VUg|~)xAD=uu2;ukLJxaZjc35@XSbr=+?e)uF zQ{I*2Z8x;4ZRXTn(dBav^?{hB!xDcp;`ayRYKPr`OCgZtNCOH^EP=d=|HLFPy=_S? z;zKrul{){c{r3Ov`vKcj#;^+)NZa1{B?|oO3xPj5T)AyZdU#KBdmW(q4v7Gqv?RE3 zxBgC(JRg-C8|}ndT69!*RAuAWgRHyKD09)}<56*q94+IlC=fcv8Gzf;pPqI)r-6MH ziQ2&6XtzMOIBa)~E4n=zGQF!(R_7cn;1~db7>BZBzFGgx_@TFPeBO0wnG(gQOt!NK z*?^96^}zYr!W&~j>WNou@|+7FI)%?^0|J`B90j!Z^uNzi z(#Z)6s1~gMFpdBH?7KlznHg3mCa5g%)%0QOh0(Q**L^}}6tf|EjI>xasmQSCDF#0r zGVFewqr4lNPM`v!95+L)dapRSmO~A%SWPX-o_c^~=u&=Ie;~W6XSVbxJd+>Z6#8l* z9^d)f|6POsKl84-fsZ>rWR`vkUBY;ViU<;^Lf~#3e-1tJDOTLDgYT`FirD?&%cEpj| zuZW|u!$ov4%lpB(wSks*a~WPI(`sIL&@DUEPm+pO--6X+DxjD6WjEtn?rib4Jq;rB z${i&%HjXbFc-%*NVq9K~*J0n#3L6G#&|t7|bcnk_Y!Wn?v$RwpFJU!+Eiim{t6o04 zcj!e?n~*oMpBzKPyvq|OWkWJDg(ntvlhuLR#j1%W^6Mx@%&T`*&s!q^lsjD>WNHAg zq&O=EZer>3YUTN(=lj~8jvpb+zch}~t`9CTpbfc*+u6j&AT#eYymHJUxUJ$aQQ%wP z`v%rtnhGNhCsaJ#jWrrBg)p!F?lTSZfz&eql7DLbfFJgv!UJJYlWl<&i#x0_nR0%)Ao zSW9;|n`mQ-RuR(A%BL+GQm6Dw(%|G3{gymCqbShL^4e2xGCbwDad<0lfDQUj-MY=E zGiUWkhtS$}O4l%3+mqKUD@4xb;q3_)xWO6%8iGlJ#L%8^K@>>Uafu(Ildssg*|aIm zQeq+B1B(`cuW+L*Q-8(D8#n*IQ6T-j$L9-8#%nl;^OT!mv53$81-LdM#fZX`gApX8 z+k^q^TUu|NImsC8ECC*Nr^gx!7eRLVjJahDF) z-@7I*{(0n5DMDHqKkxbO4$0K=p}R(imp1sZ%(O?Xa8!v|Eaw}jH*2c#`+~=jE=6^g z#BVJvg+;o|5lET_3~pEneNgkhXxc>j%$R9xXVZWz*b0VnaEFzReCP-Dcfst>q`b8c zQ=?eNc*%5GwO$0U-z61(&r5(_ZY8UJ`e(S{^Qg{3RZUedR%i*2+IR+kw}-&zFIOK2_VgnDm^y6vHhGs4UNSec)N8Qt z_uB7&^y{B>D>{H~r4hHZ)&LNPW7o1kKpJcw>(~tV@ie2YE^%mni*edMX%T-sDCx(q zysb$NJ+iIkNUTjD+Ts!~YqdmBsn!VSLQihs4btRfyq*MBzx;bQ-+`5?@%eSMQ7R<2 zlvwumMn-lDc`+A+rK4rMkJx_EA}Ws*>vwxW|ePdGs}DjOOVeG49QTRpNEY*G!v z!-&Q;jmO_b<|aJLwDNM$ET!8fVP0O#bHNIlp?o=)R`{a>Ly5H40$)B=!)*}QP8gzi zEYEN(z}!@0Fcyp#^>%ggT~Nv@ps`E{ge$rOp2qE>`Q+vp?V$9dzj@!ThO=-LRqa4Cm~({3|P;!I_5L^ z{A6+b19wokba3}w^^-hD`AXZS2X9TR1uLqH86#J>O$u)pq#Jige(7h-h6LCD0#&TA zaLz=sWi%8P*!8gx+YC=vSwRTx7t{c2(p>pPSs@6}vs-ii*pz*JyqEuSCP=8fbI$zK zn@#m2dtfP$5|#QbV`zjb<&DBrh`~YJc=njpd?bygU4I+$AgY@DGY(+k*%R)PtCc85 zWU<`Nyc$5|S)(2}75xtAlRyF3p8%FJUH#g{tkx>oZH=CZq2ThFSIe#A`73}OaMg)V zDIzH1)$T+d_nA?nE9(dZg_IQi%i;L!Hoe82qbqgFmYv+uCxlfXAX5eDg# zfaR@;_r9#Q9ux z#yd8-hG2i4Ut#mQM2<{K&3+J>+c=e{;Uz7^Qy2#e6|r~<4s>=QgdmRbiuSZ0z_g?p z;~?}OTT0ECFUy;qy`7^dpzAEA0=pjui@)AqV-I&*>9|-}^g6OFiiuh2-=2&T`<2xx zb7X0=-sui~knoJSLsCQ5(G_addjJuDQsp6zSDKj&79yoi+b@u~`DdT{;m3uwv@d$E z?9IdZutq3e3%6_=b)~*e?0Vai)*Mf6^U?Z60 zXyJI;OsIyZx&=YKN*Q@3f>Q?TTGE2x1kW+7RWT87(aB47G&Qr0&NY<*f{{>6Dz3M{ zIEo~PA^auvtC8C(r-3!Yd@PK4N;T$1WE&RMzGI}8SBMw)GN8YS0sxa`Nh&vNY4Jh$$atn(cD>w81shKz5?~_+isY z?m(w4aROqOk(5H-(iZ)Nu4(xfNf{#x2#Nf`;e*HG_|of5-G+32ZScBof)Z^aCSYDS z;c6ZZs&2%Mc7DkGjxJ2f657ifye*byD*GnVIOZM(Qw?>exlE5VCLr=39@}?awKb;T zpirD{*d!>f>hq{^_9rN;TIfH?rpu>MYW1vJ3#px=E~pkI}KY#oJ{m197H{Y+4% z0iK(abl2@NnoSAE9bxu$VulO~g#rp3wfjYp|9XU)_J`@Fonb|8*e=Aq{~d_}deW^r zfbJ@KRw%A6&!jJD=)L6c)p8bTD9iIO8{<0MH#X^4WiN{m;9hsnYRN7hdO=(-Hk*jE z>DFiAD9zgMkbW*#Hc@SGahU;);Get{4Bi?@yQw*zQ)lsXW?Q^(sJVeCGKMOHX7Xw< zR4*9b=S_!$g~h8?7s{Uv*4`3LeggG)cUN;Yv*N>`krhG0DG%rDg>iY^@sQDV2Zwzk z-A@#eFV-;lp)S{nVyZMEl%H1Dqe{-79(u4mbl)L4J9ng zcr0}>LsvJ$t0$kBUtX;p%2x6_5U;pZlG#{RyW>$4!1L9Al#pz$6giwP=gHr8o#tw* zxm@@<5op$b^vj>vJ<8|%)$bmG5DZ)2u%(>i8tk5W-}qci%vwlk>pQQxp@^t8{|t%N zDsGy2!%BtQMhDa0pd&H%Y7xUgV`Hl@{kCn10j6*$zP7(0Ixs~(TwD#La;MbKHriBH z#0siiEi{61aUsLc*?g!Qsg1aRHWIm??roug{5i}mrJ#m5(in5ilsjdrxUc0NnQN-? zWAr(YZMGQ_H+K9!^CaDswO?(Wtm(^%kWyU;`z9qaE3*mpL;Ll`n&mCjE5iAPS`)_G z1L#PU;z)uJ=}D3FxHbVZQG$2$W!)GMz8a@v7Y7PHYDRs?`v?l zL9tDYO_x+KR?K8D`SMHX4D)PMW(-&mDZ-exEiY0MiB3Ybd)cH2!SVFbSL^PArQ@Pler(eMSyJB}$_l};D2*Re9ag4d(XWcJfQe}RKwm&0StQcXu- zY8_`LE(d-2>^WPt%{RK96iyjUP{fZYZ$m+AfLC z9WWSJE#5FlhUE)QRvWuBUM((LmyuMlDU0#7?UufOaF}Ldh~mT#(Plln$<$L_g5N`Q zEpX!-3+Jj`$&s{CH5En=NYw0;0PTJ(+_=v8s&h;+>Uw8M_B(QJgTC1GvpSoYZWy4W zaf}^fRQ$l@{U7Gu1FWfZ?fZ4l=!~eNLls0}8z6`j4WWZDJ>GcPV2* z2n3iI1ww$#&^u!2p^QL?NCHAALg>Bs-aLzW_q(sXzwf-)Ip6Ga?R^&4m8_JNwOG%y z?sY%q|NGz2;`hoO(0wVdoqS5r_7|UO*=psBOTCG-iuUekTXP);I=Uo-Es633_mfHu z<-DOwUFt=^t_KB#1oQ`|Roq)_!B$@)X1i{*7%?yj=OxTdFP#fs!J z`_5fo%5caq6x0%K$+X2cqYJLaITWY|6CCN zrcXp1%6B*wHH|nD?=|=Q_?m&eBrLwrg|g@s?|a3Bwt{+QJgha+**3c?(&_n5qqZbG zE40CQ6I&i#Ij9X#yJ3#pz)Vk_xo9slm7$qw*HoekOy^U!OA~iRrL@811abVLcM_r& zT~TsfquPBCA%gOIm2XoK>w*mk${KjZegJ8ZR$SkuxE`#z~LkMPN+D^D<2cY>8ciIqAMpf6P@coJj7mu!v|zWo5q1M z5Mjfz-g;`r(Ul&MTW|@HBs?;~?L1NA)g%2Bp2F_#G0s^z@2634Q$po0dOj1RcThw9 z*v$439XPYN%l32yrfZ&@0q{)urEIR@N{V4E*hmssGK0gPMtGBYVa+Or$+&RX?PIXl z?Zv@+$!y>|9#=np^C@&T$t-{lviMIElT%+IV)Ht+nZ zdxdjS!&xdUUZ-tn*6(8*B@H7I>m!yMnzuD4!+Mv}8k4rAJN<(j>W?b+wUnni6PG@^ zu2P}Zi;6;N&DF*h!@<_U`!&JV2+T%lmcK25Ky-&Mkq>h2Ci~^qKdj2^4>Nt7E||RR zhl#s(hbtLJN;6v~QJ$7w4R~BQmvVfud$MvS8JNPH-(OM|O#&uHi@cBC^LUf{#zEoW zyMNOq{`cLWG1m*y^?O22~KV$3qqyOGM;cNTI*GJN+c(S>?^ANM9!~w5udl$8;}wby06n_rH2420KWipF2-p50@1X>)-@k$k%hU#|S_9I(#aP6x?r~T}nY|v{Q<7}%{3NlvtK0+zX zu)CIc!#P#0zM9)D@+VdoeqS-j(mcO2lNX{tdH=#Yx_)ZFekD$6xVev?L~ctln0PHi z4?OI1Pnm0hF-A5@B+F9LpZEKkL8M<4y?kloNGuI3>EGMwC`JY_A+?i9bPFb33 zr(TrJnwc@XC{x;{Y+tKfcm3!fNWmlZKsT1vOfMuq{M269IOSwbc#SqTs#gurmW?@v zYIu-Rn5#*h8$KogG`sYM>GalI+%=SODo8ZLD|%SPat_7i3i$fbs>E9=PFoN~F#1qk zu$NjeVWt;cR~HOc=;ODyjrG`AN4w)C`CBFV+_>7>_>zGMJl7l>aL}{%NLya+1W~?J z30nZbtnAl z{T3XHnvx`l?~6!Q7&I{m-sdd9$T#1Uf01=N-}~-~_PeKc_s4H%Xj`|$E);V;{pqLd z->+V{&E<8jDd${E&KJ*p^~9L(eBpmBI`@v3_l+6Pgit;jw7?2L!GlTVpUkCufmF{Z9nk)!x#v z<>?m}mqC+IcT>%sV|J$~-_BI`xC%Czvz^N%PLowyCaD}>`@1Yn!0Mr~aDFQ&x1;QZ zd`}De%I%*hYA%}k+%F*OAscjoN${^A4gECE%-w@Tu~Kb4yymT<%@)#{09p)#fVvys zvsx>WhK?zn&KvjwA#Jp1mYnyWsi~*h-Z>Dh3v`h8>zOl`jF1bR!-tw_8J37Q$+#&K@??y4-oE_>u$|9T0qIXr+TOQ>FaAc~D8gcR}1A z>kBYDpR5DTCN!%(s>$5n;AC+yG{N!V*Uigjyz@{fL@_RXNUtGZ>2=9)p&{=_Nx|%9 zs9%=0j>M3-J4MS|NZg6=+_4PlslXTmBb5p)s%J|hdh!uWe~*JC9;6slaObIL2VIKa-h$rIu{SU9wp~hqvu=igE4AIBvoW56MO)D4r9|j z1ihI|mRR^jUMb*aiXFPw?n6{yNt9;2mSI}lHvNRRX@W{#$s;NpSk7&ML8S$zP7V06 zg?oz?TSkMddyQvVz8lNO)@e1BE#XC-BjYMd#j4@$wZnEA#0345JJpl4l99%Wt|W)r zMPsA6|4ga=eXp}@%%;C}-xM&$T9O)M>mIhalGew$A}R?^m*p*e_~S_2wHie%o7^~8 zPO_0n2IyKHyrfVDofLkUn{PVb0OXYv8_&xk z;X8A_r!FmdQe4lAP4gyCpqwmWx|hp5SW2TX>U< zu)iKi+2F(S`Yvw8x|zg!CiTQ*cOf2t5BSf*bm+BbTYcZxS}`1zxu19u7v2yxztNWJ zTs}~eKx!XdTD@~kTG(~CY`Mk-gevG9Nw^cD19LL|1cWMr5N|xBI)O{gs>f;`it#dZ=qgHW@g4Lp!Oj#@?#|TTk_v1&)kvZwwMQWcI;| zdkw2eiA*z*NdJW%pMmAsa>}dLqoh|ir-h!_yU3%HJ%_htbX)Sd?L0WNK`zRr7X-PR zQuYm__lKRdx6Mx*(|?g{11MhG4Qb~$|9JiP%JuJCL9Y}^%~BVwN;375crE~AD*R2~ zr?eQ|E3*UUYqz06-lNqO8V@wG!GIwoTkw5~?T3cP7wh^wGaNmb(i7Dm9G*s8X*q2r1O_%%M5b%>-=!Ej=-;;UM`vyPqr-aCwlY9#m~2{7y#$$k$hO&4XRX)p&BSifM`&NAcTj=$))p(EJtKkV^|14I>!Z@+jREwYus2ydwi zjV>wH#vC_IyA>((N0-i_(KZ{Y99#+Say=y(xNLIVZa@G6Y%pn}L=TUY3~hQSIHL$C z5w2qvWhQ#yX68Aao>|rS0rFg;w)FHiU^eH61^|MtG;u~}2Fi#4WlW^;R6}n7!d(r86FF#Cjk$0m+;T^!Mj9&a0T{;3xGK-D1 za_YUA5}5}XLUlpr5Pa1J`cKU(1p2+*esq^bVDu(u2oYa6r|T7Z|Mlj#M6GKG3-Zgi zS0$X}46<4bhVspO2eU@C&o}&LP#}RqI!e5IQhD*&m+n{3Ib!54yaRGCY-F|cx$nIY zz!iW7b2a>2fl{=)8JjpEwF^{uJi1CsBPEiY3<5)rxl*%qq{NvmKlR=x;JF&e?A6#8 znVwbWQeXO5f!t05802Z) zHOBT%Sh()QOjp#x@2Csi7Yu$_#9)0vkhu zI}FNfP~{Yvm$g|;_fZVl$T*WDKbr_(ynVnR7u52tbSA7x27>TY8uzYrhhjYo#Ry#2Da0sv&yM8f4b zajGXzk|_d6>D{`*ryW9a-#AgUgJ4=7=v(2Lw>TeCF%@yc5QKFMSO&z^_3VXDPba^-sy`==oH& z(D_(zdmX^j)#YOcgrGzOI86Z;eUd}L(B~^wo42{5V}r-*J*;zut_DPcDn@r?Cx3`v zt=D`w6KnKo*(&AfZPFl0Uec)Up37D_-ag=iNsTq$7l~Zq-I4_qvK`Vs?N_xS(XB2w z7O$#iJ^aes*#FYU6#0Z$*VjgpNSuV1j^8}COJrYG zVDMhfF4C@O_Qd_%$M=quJ^#YV5@|y}`i350GCcb{Oj8Of4X_4d5W}?m*n1FG9;?vJ zs`SR*Pe2mU{4#tCjuLcdgn+*_0kVxCZKkSFPrkdcivFc$^K_nKS(P6YzZw6=JvxUy z11LfCNX0*OY9xK?Ri-Mk6;t1^^2Te_97biFeaSzj`=-dkFQyXtYHr)$CX$qfg44ed zXKvjhLc3h~?@K<>;jzWD!pij9$S=byB2yhPz>vqBU)UAKF&I4)n1?-4` zL`ypE9)GGw?QMmBYmNQKor%+Pgm2&e85n1P+O!Hfu38o7EgeVqt}1!s zU!roI(X_zB=iw00b$0-0N$|_3b9Jy>r@!Pqo9>a?0De-(zvP=L>TRzmfZpC ze2PE?2)}v#PP(PoEA_(SImBJl5zRMtNm3AQeq2k9oHY(m2I;&+POCsf1}$V-urav|?4$=OxF7+0YDAYbD`ulzBOM@4D(iXx$NQgNj{j zZ;*m$5_xOq(ulPWjWvyI6m{yMHowK$C@iw85D>Y@A$7oc9LU}67h^#@aG1^e6^awU`h)|%Va%CXM|f}Vw~2oy6m#F_xTJhzCmlwC#}l!npk*a>8AQw zm~p>of-X%Ozx=$wDjMJCCJb_UUuc+SUBS&AzdzZ@M{aXOf+|d;?ADURVcy^*8Al96 zF`AT+JM>{zuu70FdD(U+dvdBwP?6h+OiEow(F+jZATS21)JxOoz(Hco3BbE z(FF4CUk!Ai`b|9Huo@o#{qHQv?R$Va(F&5%ABXM(6MIF3V zW{g_(d7+h3qPq3yOi*Ya2;|0V4G$sdaOu|qT=I*FFkM8Y?o%}U$h{AZfvX(TlwNa- zpuJ=bfmKR_S*b>*x~bbH;99iPd+Uzn)e+ab_#i8O79#=``=FyT^43fc-yT zcovH*2WsbIv6bM(l3Ju}<);`XvxA%aB4AT5$joBG?8d*{3!D{Y0!T$olLYqfvXl z&YKW-rV-U0*0QF#e^@-fK0kPD_GXgZJmhV@5C`GTMUbN@nSwC-F#RD!8Oq=Jn6zq= zXOcI!)d29PER{Xmy>tBG9mQ$|Xw6rX5Jd}RE4Vpqw6`NI@Z10M6a2qy@ufm^%KGFM z;Db9()cY0qPy(ZX@M+?~;wE5hLtgte9Pb1ZzS_(<$C7Wu2<)#S6`*C<+ zw3zI2UCeK3`*pj_`}i#8QV#c9jKud+dZ{j44oH-c6S0zjb7S+FDLpD;nvdo6IG8Ez`BRFj(+k9P5CRq=zn zz9cq1>iagj^8vYGEBNuCTCjL`+4Ts0)smEG^xS-k?pGNYK{7I+7j>x%x2NPe**-VX zn?)~Ej2nsb03S%=$chum-ZszCgi2a)Qx7lRJgWtJGSTBi*t>TLtaQNO$>>JD4aXW& zBrRSCP}HQ80*=&*Yay}4Y5lOe)R5U&JD*3C>`Ok6*lihp3m+af_Rsk$sIp&2(48h< zleyPsY`5)&Cw(bnv+T~yfYbxVv#9BbUV5SXbhiU;Ht6U7<+T6XUVa-e(mB|8S+>{J zokCCb@mWb&^{ze4JnjzES-p{J5z7bVLRk2`vyWLhKxorjnW8 zCScsJ&KnKeulA8P<{f$ z!`zXf?n1Bj-~r>A{?C+7wnE12p?E`utP;RzWgJo^B7%AK+N#yP8|lWa;$sKCI@n`` znrLQUQD_(AqN}0YQ6?IpvFnh^Ou@Z3Tg@!__f7AkjQYNG*n@j(H_sr zcAO!lL2M=*?x$#<)~&OE(aibyf?I#8o*mV$?h8;)V)H(qIro^w`FtiKbA56)Dwc8> z7lG4)?!P@YIC`_Hl}MSLZ5Qneju_h%)mpVYrVXFOga?IPscqc7iaD^_&)%hNW^P&i zsYCe3jlO_eARmcE{RQNmefqzlkzlvx1*`O@P2xsn5H>(}F@jk`uz)3kUW$1#fF^w6 zM^IvFqp`z)>?%~Q?a$0+esd^1H+JoO>dvYiT*~N z2z7cpBllri?OVTl=mcf$G*xSYRjUsm?j|{V)vA~X4$DPEk#&{g4#EZ3ysxK*R99eo z{*!3&WqV5b*4Dx{;>gO_*rIDUuob(mRotYEUTN_31 zL>W^l*4x6YKYHWp3-kutmn0#>my(5CW6TfJv1T_Q zR--Sp3|ziZbnm;VMf~V7S}zhlUN_pyCt5H9d;vMTFKE?e)=CU3zdn)j< zb9W2-!42C$uNmsI2Yj}ElVv!fOrlKm<>Tw4Al5Ce*F~v6t^7J?CcL2x6WJ?{P58_=D85iEp)rGOrhE6 z%v5Daq5TjbBr8UPaDa{!4*_sqKz5p9^iv+Djk{NHb$p`3^mQB+!p3_{R0T;)!t9|6 zzb6-2D&>4im*TOwuiMOP!rx&!jheuR-qnBSx^5L6_ncJ-^<$iiF2_}nkwMvA+=jQ{ zY=|NWH`GJdCNS0Fb(Mnavz!k={L zyV70)NbudX=4unxEbE3FcMr5gG=qWw@o07b9&uBPe5a?h{qp8M<|I6{?ARsg@_?Up2?zR!5DXwsOkj-pV23s>-U;mo~difsn>afF0DOGp}QFX zN9OX*=LH(Wx4kVNtJjJ}O7j;CK=mQocm#ML83T)qgxFeJXLc@mIBmA#R;yseInpv4-onx&_ zK`I``_v~yc7s7Q(lmB7~{mIS0c3r-ak#?=#qIx{Q*r8 z(gKTkjYjr?1}lfFsdpPKu$2|9uk>RuHRV zSmjpP)3Z|&UHZ?X7nrOMtrw-aBV|~o02IftcmS7zrt-o2z-=)yMt~%J-SI6hD90+x zNV3b2ns1g0k(Z;eR#{Dj00XUvHk7+OG;6|25$y$ z0KeD#XqabUkcbUD;8rN(V-5i7Q~MSc_u6Dt;Fk(G>K{LVskIbQ$yB!{2ljU%EpJJ) zuVW72(;!p1qVDt__#3b+dT@2?&bjCeO~JIoJ?^s|3TYN8W*(yY1WP49->pMSpDIAX z)(zYC$zVQ!IN9n0f_B6&=n7K2=#WibIWS`|tFIw)+@Sl9O7aC92ZdXfjt{`ys?gV~ zW2ON8$j^VW`uzVaVFL2ktD)vO`v)yW*gq_YjAF@J7IKy4t*=0s3{Ih))P3aBSEO{U zVL5=@L0mbqb)zx(JO84&O0T5Vc|+eJK-Av(`SK0@b^R39y=uY>sTm?rL1v!-H6+12 z169DF1Clnq6ulJiAdD3tTQUQ3B^4PFzX3V}yMH=hU0_LzPhRT%0A~-?^ORs>OhfAC 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 literal 0 HcmV?d00001 diff --git a/public/static/login/illustratio.png b/public/static/login/illustratio.png new file mode 100644 index 0000000000000000000000000000000000000000..921e0fac7ac7f7cd3c7b40e068955bd2591a8e42 GIT binary patch literal 81939 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 literal 0 HcmV?d00001 diff --git a/public/static/login/login_title_new.png b/public/static/login/login_title_new.png new file mode 100644 index 0000000000000000000000000000000000000000..26b4bc8e0b414d202800a0032bb002df99025c89 GIT binary patch literal 33822 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78-EUC-H.bcmap b/public/static/web/cmaps/78-EUC-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..2655fc70ae706c7ba52a5d647cbfdfad6072c697 GIT binary patch literal 2404 zcmW+#SyWV47TvdAJ*r+6RRxF)G8F|XpkSd0DozL*KyfC)0pS@-L>YX5;1pdiNgJS` zL=Y%uFUFQ8f-Z~Eh|{myy!p1b$i=bHX> zys+`=ji%a~OD*o~?c2SXo4wxc?t%-A=Y8%IH=0{~_08^*hPNA=t~NHQExrp`wt~7k z_y6}dyPJH?zNXf1lP7#Wch;suC58JBpV$uq9mEuPwC72IzEbHXNYZPniTj*hqlSv? zy9b^WRK9;h_c*@u*1JTx7ix*U7ZnnF&#SLHey>!|EdL-u&xrn@*&5w$*NfflDK2+= zkrwuXqTL7MnA~22Pf9KA4fr?~%bt+->oAUIcL2r-sbdR_la`KcFv>|sf##T_){a6L zZz>&SFy1nCRKTb(b)1E9TI#5Vab|sosCYJ_)2Z3#X-H=>j7lt*z&MxFxdBF1Os5K? znsnZRp`!DS7QR5yc^Ag{L_fj2D*Kc1G--`L4aVDMe-VreA^uVrKH@))*=&=)9L7b- ze@e40Qn$YnMh&K$tX+cWC8^7XMR$0Y3r1~Bmq(SCsM3`${#?eYt^)$EU{}`}E&L@# zcPxy$knT7b^=rCQu(H|Gy$41^e0MR7M!EYUjH_~YJq!)qEijtU-Ks^sqNeUP7|r3` zf_Y15zzO4;B@hpz)f89@qm2a8VO%!{HsZCz64(smhCPrE<7P-e6ul({j>5RD%CBie zpj>cy2lha%z&qF(Xw_WHRJkwOeAjk=HyD)rrC=oHemQ0;UH2QoOmYvvB&o*&W;XYP zs+JX+-4iZyG9r441ct!gQz6g-rN^f!29ReQNEi0ZYj2)4&qthisov>87Kbo+0Qh$=>`~j8wQ^3-&*x>3Hw9>=- zcY6s*N`t`uwl zJ1hsAweX+N_@Hq1h-oMq>}c3f9AU@ILs^8KkcPH`l}kfA2z!$Z?FFl_4HaUk-ZFGV zbNrNAhJ^G}&Y^0s)A2)B!Ol2`g^y>kAUv%!4GW9Tg$<`_j-OG}u&7jJ9o`OBjbTAg z^$ZKU&W8@yg1sF++y-{RI%3npeois6iZGvTBnqqsQ~4MXj$I-nYr$%j5iuHDe6<}sNk|Fmn#UW714D_*&efd>yQ_i2~OPOauHUkuj&1aB|`CO7Re_m7mPE89T7)~S$Ht^iY1qXPZcOeCQn{%ODQ~p827A}Bq zPhV(7m(#MC48Fs;m;s(|S=^zLZ$3wVhU)l+Zdlw$)+{y>Wyvm9l2ziFj!tF)!oDx|dspKQGU!)^ENB-zje1rJn-dodCW^Ovqk+2Y7)PjD4}- zg_`Z3H071Z9I(Br0)NB&>I!&q+$#-%Z1586YnMv?MJr#&XtsY-`|DQlQpd7*1_xcs k5om7%Ka{$hiq3Rpxm1<^LpLp-6zwQO#)>TPFtC#SKLc+9MgRZ+ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78-EUC-V.bcmap b/public/static/web/cmaps/78-EUC-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f1ed8538287499647d923d7d8f517a00cdac4e3a GIT binary patch literal 173 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVQ!)88tSa;k;uAm5#wHeUdFwF voJ@OznOOFQu?X&sb`)LsaBps_Jp&^YN;1fUS!@iAMpy(B8JB)#+{Xj}Q4TH^ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78-H.bcmap b/public/static/web/cmaps/78-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..39e89d3339c74cbe06e7e4f76d60bf3556b0d4b6 GIT binary patch literal 2379 zcmW+#`CAjo7Cn_tlXOB7KxC0E6;J^M1G0!Hh@b)rDv093(r8qa#RddiM!%k!=Kz6- zAR+9oPaY$vEGl%>eDkNgKjqcDAL=`OZ&%$q=bl@p|JIdvKX}yBe&=qVJEy3~o0aSJ z7P-rAb+`H4^^bb{e4V}Ss;-;eJrBBj)IQ&>Y+G4Jhx`Bgd)+<0USCiDKgoKZ&z*hf zTvhq0+WJ$3P^#}Vsdh@6et)EU9RIrVD^XsATjF2DgvGz`>igTdVHlSz!$)8= zkl`}TkwdM+YY0@hN4GKOM$Rv%dnytuTKz3?K2= zVJ*kxZ-8-I@?X_#dDQK1f^i2cJ=Re{^sY2&!=^iO)CHqGZq%d7`BWJ#7Ju$x*XU`1 z_i=pmx)xbLF%}P_BWx@IM(3WfRP5wh#!6vyC5~0X=$6NB!+0Q%b;8gv)(4{pWBpo8 zAvKK+!03$}6U_U<15OwZErCQB{ieWP7y~4b0b|e{IEbGPOCT4ULyiuS9%D7Kcim5y<&RNNLKbV5?M_@Ml_!BUD z#Vf07Jx2Gvsu8;#zczp_tCci!d=JC81TT_)OJ7H<^R4ifpq^T6mSw`ilRIqex zcDbemt&GU2V_=zN>O9y1=TsfoLF-f-SXT5@hvqs-6M_UR+Zjv-JLCvvgL&oPaj+a) zumUXC9K1l-VL5mOEFZyU%~ek2U<+6Qg0~4PB*AvViX6dCu;QHHQ?O&w^dYe0@^l_p z37Ia|Top87TGT65rmumWz_bsnj7$saCoz2wtX!Jzz~5)(X$|l5J=23)!YPVS0$7C< zN&-72hdf}X!$KKgXDp!{uu4nlC|DHr(K(@ZSbg@~C1!Y-O;vI(n~X7a%rq?x0HT_!Upz#45c<=E=9 z%$(O8XQ*XHNWbcwX$8BMIP(DPx^q_ecmo^4(Qq!!c)MA}20&B&r zpr?9fgEM}u|Q=Y?I}N%O+r2j=-|&3Tq$UKp&&^B2K--1CiK zy-D+rv2)nG5D(TDwvd9q4&u!r^Fq4jI!6yIWPv@jEeKEg%?r1|2FOAO*x>GkZmbI# zkFaO~dyGY)@`+}zp%IIAu&0TO!joT2i^X8i%!{Si$#X0UiO-`KFR8X#nz7hUvX-Jv zrlkr!)wxtjq@_kemYPWXQmbB*xAYiT*pK~hyec_gfVBZtu00EmY{H4Y7hH0In=Rn7 zrd*^6ZyLeFtZyEITTE}BgIn=d0$03mWtG&?rnd!}Qcs=lqQPy}cWK~u&%11Jhy7h0 zxHIZqi%PBz!oOeLb%}c3^^oNEF~IZy;@=nOo`m-oNZR{OvggAt-GdL=2)xNT171=RQ}dVa*r7lYVOePdNhaj=@g8o(E3NgnKlljVh}#;AzFH6fe85 z+KkXeX|)x6uXEL>T5i(x)jojlgLN%g;C_MWfd3Lw)^auF7L8pKT~4>J-N(|6#5K`| z4C@zBFVpqKt(w|Bc=fOlez!{6v#}_vi9QS%Fz7{Bl|Mq@8>Ux`|+@q$AFw7>C4I6kt^o9ex(7TZee#E)apegrh#KtY~qKu7xj5;lw z6#S@jGZVbnvUyY`9W|KBR2?1kz~)J^XS16qTXwNxbkD&pH%Z*8CD`g9t}QVumaS(b z>br%+eNQ0!zUK>nzTZ%-9qr)9#LdU`tKcO`;H6?hPUuI$%fw)uj0Z2*Y!7Ja50N=- z`_Te^#{A|N;KN^GfuPhQ2Wn*@M_1lcm`)(+ff)A06&+uoraMN ZWxHCHd+DL=OQIb$$lQ?y)&e^@{{yR6zuEu* literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78-RKSJ-H.bcmap b/public/static/web/cmaps/78-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..e4167cb51f66c60ef7d9500b450303b5da175574 GIT binary patch literal 2398 zcmW+%X4)d#tmFZT%e3CqAV65xJ4VEnS`dH zL7+EQ*O3^3$f82sn)^Iqy?t_}J*`zImsoz3p0` zy|l8@v3sw>QE9Ke(tX)&Z@Sal=kDya*LQu@-E*_MN9}W8DKXb}blCqN-)rx2_qu!f z|99EscH2w#d|vN5biC;h2nIpOpu(y_p41TXQQ54v6J!szwG#WK!8X-8s5t+0hZO($ zz+kTYO|+EuO)`HR#>Q_Njyu22B+1`iFr|FkYf2fiwA+XBVr)ZoByOlliyd0PkQ@3b zai|SHHAq8U_%RKexlu#6p*NO#0li7^mO(!)c@IE8L%g+`#jBXSF6d`v?=k4-4Blqw z%?9rU=wAxnR_Nz5yl&0v^_YhZ&@ZG7+n`^>W;%}}aVdOB!8^{_tuf_R1*&}zMcSMb* zL+{)+nuo2u(r69zu8h$m(7VOatI%(Xqn*$-jP^nA!Dzo0Golzq2cY-HjdK2d(SAPN zEy6>+>9)I`SnL1m2J0X193?}1vjKQ^h7-*f13i6Q!NKQT@i z4cQYGmprkH$P*Q$V4_wf{=Z?hP!;`u1-05hZ6cvDouF}M(0DCw%ww6jPH2KKahuR2 z+r$IVl;}wwmujBO08LArECAhRn&dO23zJ7cGtwrHsp7a|nr!35GqHP8!FR4O&Y=ocE^)T?cgup$`0XR19f&UY;AettCt<2&aSA3E@o8Lt;1=^l((T z5cD%CTnc(b3LgZmCt(+8gE4%V(4#{57?xV3aHEzs=@G)b&oNWD1&b$za64XC2;nZ! zkbJ_T@7*F;%=6J7L<~gogzj5v==m44HJ8?T{t{badoI9A8K<{Fn z4|z|MLrUzt1@wN#Joo2o!#p?lfpNYDTlFq9BR4uc6XU`7c{)Z~bg{-hZ! z%Jk$Gm}GeJ5X^+90+<~4R8-0I&j<~u@e$AcrztMmvqWNgmQQk@l@L5@B<5#Lr2JV6 z$$Fkl(w-{9}^>Jc)-K&c8SHRMYVB2!Q(s{>>N0nfit^7y#=&)+~s5oEWCwbpjk^SGdlB73j zM0(?J$!`u2;f>3%`%S${KK=(=<*M=H3$W}1VD=8M93x@5n*4W9!J7fF{HmoKjCEn@ z62hm1rB<-*wk5YJ{j3x$^#N=LOv_mucXBKMe5Zlsy_)>9r((GbtiZB-0}B^2mT!X< znpTp*iegsms^uR_%8G+$?E+TnITk}+Im&T2QdiCr*Ge}(mtg-7`&`Z+IyCD)J;K{v zV0(nO4lsxGwj8W9>#Y-PulV*7SlRx!Zm@mwYL+VfqF|Ntczg@y)goYCMA2#m=Vga+ z^|B`a;>lTU!*mu|GlNwmu5lyxJJz_R2W)F+RPk3OcI^u9U5UcAeqh7~vYw+^e)Wj! zJm#Qny$GzTZ2cetMcdZ9!K&pA3)m;}MzSjWrW9}3d9D+&8^<-vZyw7=3s?;{xTZ?V zMi*FZ{5!t9pQgS`2XpOsSFV!Z73aGPn)!Fnr|K!Rk#P zVpQ^n;{1@Rng8$8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TX>Oq#ygOX=*YO&pO=jMENuV) literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78-V.bcmap b/public/static/web/cmaps/78-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..d7af99b5e2ae9a21d534f1965c35a2b572143322 GIT binary patch literal 169 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TVs4@9k;tm3#JJa=mvL_(C)3_w qCYHTnEP{KZ9Yqxr_vW_RGcZD-B!fJd#m3NRgheosQMHtD9}@un{3-|l literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78ms-RKSJ-H.bcmap b/public/static/web/cmaps/78ms-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..37077d01e26f9ee2427592f6deebb145d628e731 GIT binary patch literal 2651 zcmW+&>su379)3?IlVlPI_nQO=7v(Aj5fH&R7(l=(3boRT!dN4sTpU0UwHkd20)c>B zl5n?bS84?+7Zv6VTibnh{|&dhz3ubte%bx9{j_KMVV?IlGv{}E-`~tRn)fx1_UpYJ z%}rOjtT}~+w!QmpwnA&krS^+XYi)05m$S9gTG{q#d&l+m4yns|Dce}m(qjF6eW$g< z+3D=){{O>Tr_-9f?}JK5*~!{65ZnhL_eHfB%z{z!J&v^D)zC+!d8NaVwML)61g zL)3t&**cIMWF9CbAp^Cit)DM$7idCtX2BdE5^wI&L^3mynek^WK^AjaN>oayL>`K9 z3MU6XY#>S^b}mCn!Oj&Zd$4nrC~4SfAxb88t`Q|0JMB6phk4w^J5ClJx;W(^c6yA; zVf5WXUoZNJPN_gYh*B*F4=iH93FS0D(1dTR^aE|!iNRKqZr~=Anw&vEspST9p?s(x zJP73s87z@agQ8*30p%lM@C1~zn!!3Kb(+C?D4%eHjZn^62Ay)?pvyRI+UAQPZr(=a-RKi;INDH zN1UAB{Ym1ze#9>dHgPDRKNsV7j2xdfX0MRq=D`-Ot2nexrqu; zOU%Rxi60XU6YS%mao9T{GmHm6X_d`mF3<%1WGbjNV$ueh7(aOoG%0Da2{c)lG7*}> zPel>Bhnq@}O^-x=Dj75l8*M>TnV{(*Q^lYeWU3l8(>zrJnk9!kav7#Bg6_3VwSZ=u zz44&?0=?OwHr{&}G{@*=Z0*;2PZ65Sd(VRA!Fxd##zo%S0Gbc)WkL&xx0%qwKridN zDA9XIju>|Z`BJp~pG@2`o40 z{WWsTgp2dDJSPnP1}vT8{LOfg&-vRxPbT?0L8~>>QJ|-Sr(+2{t)0#$w3eIB13kk{ zA0qT4GA)AE8K)iCY}HR!OZrJsKYf$x$ZQE{OWyL9sj*vZ1xOZj z@z$-KzYN+#=Gjc#jF@l78Y8C{3wqF7SYS=wmIa>}ykG*oV_9JOe5P4o;@;IR9KrSh z?LwJk^0^EPRm8sVA=$eauF))(mYNqU2)9^A$l`etv)Gt*VDT0(pNiDSHi`JpV5LXW z`36Dn9f68$qLOl`To6>P9x5*j(_-x7I;c9s;~P-*n#cE`8t?@NRS5Zlm&nWy@Ug9C z+I8oPD2Mq;I59j)AxTfN37*st#WuEQrKD3nS;A z*&OyS14!bR$H~WEwmIy7sE~x2YN$p5swo+2U?5a;KGdN5F;Ii|Kn<}#4ShhMhReoz z7t{#ja|6^!|G zF)ld>mY81tE8v$-lcuFQhy5#&O-m-ENYPw-H5^6@!s#P-mO^jN#F|SNuwUS{L zgw^8=_ab`rBjQ+XXLdFUzB%Bqf72od{@umB%7nU)du4-a)4$4tniK!Z4s}2O>H^f< zf>%zc2ZXhFN&lmWHCD%?8!)bA01G@a*78|hR%q8Q%EFJX#I+{O#FKR+)co*uCS-wa zok@DoynaUFe-eY&FR|Q(NMG*;hRq-wiL&V@7r(*Q95QcYKrPDMIE1N;T^sFCi-k=S z)WgDNq{RI!W^G!TuN}dgCuP&mF4JZM)FaqroQhGKZBR=>U$fyo8vQyJs$_%p#y8C4nD)&zs1>nqWO#C*RvO+0N#s}2{x(`R{_4tjdlqU{;1-+o z<3U@Y7+@NGkg}D6p>$!ZN+SRIFZ$Xg^3M&7R!Zi7i2JsfBI*eQZu7*l9medF&~E2| zd|TfaYk!wYa^GDh$G+R;uzz=vw0xha5&mc)nw>IP_)TP{phU5F>>kQdD2Lc#h@F0t c-la;q-(1!2s=%@!^LOuZa_4*AVfvHif0(Q+AOHXW literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/78ms-RKSJ-V.bcmap b/public/static/web/cmaps/78ms-RKSJ-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..acf23231aea22e1a95761f7eafd35f1d42ea6b84 GIT binary patch literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZElfUtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)to?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6ERIW@ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/83pv-RKSJ-H.bcmap b/public/static/web/cmaps/83pv-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..2359bc529d160857cce4c1d1bfca1322290205c1 GIT binary patch literal 905 zcmaiy;cpXl7{{OI+O^wmYtyl`HDmR3WD>!x+fX(zk2fF27#QYSGOjrry9(r-~(pVo1{Nw?mtLYJ4UUE`k0lkkCo*kO1UE(D(}Ha zIX$MVRMvM&ErC!&C=p47ic-|WsE3L1&Ed_Vp)Ij3En2goQt2?lasb+wwgN2;Lt;6| zwA_i2WgTGY5s;UQrFk$;02m7ZCI-O-t-D+~RMwf^W)!C+rc;Y3P7~9a-6+nSV0x#B z;@u~h&i0`=n`3$}i{kw*rgPg+oO_k&gBcVbb~2ssKyiMW>7z*$A19bDw4u20BGV`1 zC_arcUEGA?Vv6arQ52ttm@dgEF74;u%JB9>6;J2#3n;#bF|D?uSWPosc^1W&VWz81 zD6Sr0`f4AFuf2cP{3zC#>6(h-+M*UPR}ZZ3Otn{i7_C0k7_RpF0@Zzp)zK+0oTa^* zw4u^B0>!txwbtKNy55iCdXee70*deZm~JFd+{iNhFpJ{HZA>?}qPRK3^iu}K&mBy+ z6co26nSPl-@oO8??Kq0t<4kv+!-v;5Y52z#{B2@hzN>;4wmsUkBG4YIH)P39qY?Al z&-;u-#D2+V?9k-9C&B0ku;<`WW7q$+Vyxj_#Xjl|yL;UscaO{N)9#?F&dc}K;$|A` ze8QXqy8u=**sp^X2K#uO6#={Gx8h?Bj%vT*Jnrmp`kY>;$4NTfPM79$M&eedr~f9j zS?YYFb5gPx0b5+mtNTAx&)Lh;5 ZujiWNPKIm#2-aGseD|Rg2PkC##Gk&38VCRY literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/90ms-RKSJ-H.bcmap b/public/static/web/cmaps/90ms-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..af8293829c90ce63cc4c5eda0318003785ffcba1 GIT binary patch literal 721 zcmW-eTTc^l5XJwq#gw8#R@%k}Gf`{k zMMO~)MNz7F#ryrXv0C+m@CEc;pImvE1P@4ZMh0a$e!5_#hJh!c`*BVy;Neh zTkWo5mpv{y40IUiYAY)$v->KYl_e^qm8H6=e}1|X^yMOVNa&R!*CX^Qk?RA!TI52Y zyG8CW=pK;^oAnw)aZ=<>{nqqplU^rs@wxhDkvt)i10n@xy-}nD=&hzZk)D1k^M|e31e5HzTtO9tf zi|}eE@HH3Vcq#Dse!}Z*z&9L(6AOSR{De1Kfp6IfCvCu!&9pYVV^v4ixO00S@Es@N z)I#8?0O8%;!1sy>@6Q9izmxDmBk)5D;iCfJN2E$w1*a9@=~D-cn9ek)@cWNQhE@3W zR*W>Mt{DX%Gw_p*giq^$pT-HF#ekpJ629;PzX%h)3<1A#6TYqnejOxy(+&K#g7BRT z{H~MmeLL`nQo@gmfIqeoe%cG=pBD)D)}AcI{0gYeAA%j u^{--}Rd*VGj9%#5gucOu!1#H2euZlOd%88>EDV>zJ*#d2{xOGaKc#=yUE^>7 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/90ms-RKSJ-V.bcmap b/public/static/web/cmaps/90ms-RKSJ-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..780549de19de05b6cbea4ccd4737351bc9ff6104 GIT binary patch literal 290 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TZE28OtQ+JV?4|3G$lSPsp*5L- zp*4wtu{9x)to?* z-GEF#OMV%BCslD3bEiU{_ISp9EDQ%Z8TPR=9292Q$H{O|h;bh`!$AqgeS8cDWf=Df PG8~jmWNdF>+$RD6C)7)p literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/90msp-RKSJ-H.bcmap b/public/static/web/cmaps/90msp-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..bfd3119c62d9976dde9b1e59c572c678cf5811a0 GIT binary patch literal 715 zcmW-eTTc^l5XJw~VoNEO2&Pqmx?BQ85Gy1Kg5&B40vb?if-xX2vLIS5w2cHZ5is;3 zUQoQDs8tjNMNzzg8>r(=1dvVfUk4O5y@0Wb4U-e!1H*~A2RJ`p_EmhUK zs|1K40Wc(gs}%5L55S7NSSf+n3@1T40ZQtSjKh6U6fCovgKDBFc+P4I2F&J=F+qf^ zjh0Zdd1J_~mn)$$R9BDTOt6QW6CGiHq9bDMk|H@Nw#a^17jYkvhNEA18d6O*i_N*t zY3nuEb+qf~Y|2Q9qDB-#>D2`>}yh(Xyh zBIC#a@D(JyS^<2upYU2Q@bw*pqou&3KEfMb;G4ySV}-zDX9#a~0^iOfypscbr;YG# zEATxh;dnam_;JGfO~4QAgcE7N6ODuq8-O3#2p?O4AJ`z>C7g2s&v^;od4S&+63!O@&vz1jXb1k7L-e=3qL;^Px1}0SA^g5iYfXXF1DY`JMrWSXGZ@Ro2m> pIdngIFSLC^+oeaK|2#XMub5T`8{&0BcPR@0tE+*R*O2w6;V*K+;HLlp literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/90msp-RKSJ-V.bcmap b/public/static/web/cmaps/90msp-RKSJ-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..25ef14ab4af42f4b70ccac76cddac8f3b22d8813 GIT binary patch literal 291 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|TV`-3ET%a4|9qgs+k;vS*f}u5; zfuS{tfw46qk*(2@aj!owG3?DvWNLI~IN-y;a3IK0v~kS= zzs90gM@9w+lw^69KH^V^*#(jJY2W1%d Q2{Ig%O=N6uVB9AH0G^~w2LJ#7 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/90pv-RKSJ-H.bcmap b/public/static/web/cmaps/90pv-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..02f713bb838a8cd46f5b262c934d0edc8c6e8fe9 GIT binary patch literal 982 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 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Add-RKSJ-H.bcmap b/public/static/web/cmaps/Add-RKSJ-H.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..a3065e441a0e1f1a65e9109ec9bc4f826fccac24 GIT binary patch literal 2413 zcmW+&Yg<#t7JgTDc9NYyAOwPxTexVs69h$s#!VxNsHort6_ss`c;R9I;draTQz>^5 zB-}yKw$@sywYJqgd*Ivo8$RvnH=n29&!;oze3<>NJu~k+Yt~xN%$Pnj1Uj$X=(^l` zsmEJVQQ<4x>ho22t1on(4|*GKboT_?yS@85zUb__*4d@?1TPfXtJ~VV|DWIO?Fx1W zyL$iE*%%CZi;55I3)Iv%)_~9tqJGt=0zKYE^g(@B;gL7U}%yTf_E$7&sr%ouPqC<9T}qydj;K6ArB9ZcM_-~V+gdA@G8C4Sv)OB{4u z_6}ynI0tu=Yq0T%_p6on<)%1`Q*oxb(wu!Jk1##LOgoVhlj5w&PRx$0HVv)}2JzSN zQ1svv=U^*%l69~TdPB(&pf}P`DflNC+7A7wb!Z3lV>DD9iXKvJLjmZ=twRUFlQDE0 z`U%re6L^Ygs2TbxX{ZJI>6D?Mm>RYZo1ix*4LhNq!Ei40vt`5i(9g-k8hEN}_!9IM zY50~V4XYTwD^@*^su2oB4~Oj|e&`o0BX!V&@<;>pi`gS5p|>g{ccEYMjM|}J-ZYx2 z$s?*VS}B-U;2zy0@G84aeD1G1$MURD}9&~}3tu@a#Q3Iv5M$O zJ6L5#P#irE@kEvn2MPoShY0M3Kl4uX$!?oshCX$ z+bzweg4M{gnP7V?v$%d<}SB-25@H^Xc=K z!7kVq?4jss6$@@+LHmM`Xr%?Qp-Z%|8SJvMAbh_PwNMInHFlvoUaZsPh-zItBz)_Fcdl88sIc}ZlZkCxiN{^3~?b$kQMRV{XI5?o@L1T7Pm%NSb#gtCY1@-Ts(Dhc*=LS`-4+SEBY}OH z0Cu;74B7)jih*Ia!jSJtFf8In(WIIGfEV5qnJel6FAgd5s&h3ShTXQB4Z{(&S_JNk zU#)@>jnxJ*9Ja4E!f=9@l&!YFhymZa`Dr3}sq3j_@0!2!dQ2P3h+07jA+PS(r|v*2atiEq1C2VUOq z1K$x+R>JuHE_lWM7lN8+}oo?e^C7|Zd2S3l@#;CAu9i& zh0+CEa& z_S2@dK8#}NwGW2R`g$9T zlFhIEFiK-z2f=swUiWFz$GsQ;aQ~)gH?)+$RR7O8l=^ckee%X)^1aC-=bK}J*f$rb z;7u>dzhu$5U-Bsats_wI)=RN(>uJl|a}@WhmDFF81O8u|ss6WQD){Ycp#1kuB>#Sd z@_s)-(eEUReHTZ?@3I5M?~au$E;rrIsR73IE0M@*l19U hBiJ~FjYe!VVdI#~IGtd0&_=Ch`g=^e-y*oZ{{`ID*(m@3 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Add-RKSJ-V.bcmap b/public/static/web/cmaps/Add-RKSJ-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..040014cfc0880371c20a89212942727c5dc30a78 GIT binary patch literal 287 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T<(QJ98{{4ArR$N%-RQ`;*Pnsm zfDaG{aWn1>~Fdm56S{nsR6Mn5Gw+)3Jb$Qmev}EgS-IcxJ}{! literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Add-V.bcmap b/public/static/web/cmaps/Add-V.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..2f816d320f08b8671498299c4d00e4564d2ece6c GIT binary patch literal 282 zcmZR65agU+P+63jo>8J;XlZGnYh++xso>knU|bjRFGekSdyBe z$K{xlqX1T4tWcC%oLW={5)4jFRnXJ-@pN|e3wC|T>X?$E>ygNGht``8&6_OUQ99OMMjtU#KJf$^YlAa{AfKF&6QHh#7?i8gWe mHX)Wa;Wmy$_VR4TgR($XYCxDx8|p%l=LmHM8lDo74dk4_$_P(g(w!-Hg>R!685l< z1014^3aY5#2*)_VDe5@GIWEvZ6D?e#jSjAGjT_wJ4)^Hd0grgXGhWccE8ft@07Hy0 T#ycjM;sc-f!Z&`z(oFmT7oB|o literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-1.bcmap b/public/static/web/cmaps/Adobe-CNS1-1.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..03a501477c91d8156723f0c274a37d397ed65bad GIT binary patch literal 371 zcmW;IQAa~@7{~FmUG^&eZ(!@RyK_0)E=Ic8c?GTgwb(lAe~#GII?0+zl4K@HGLs}p zW|AaHlF3YxOp+u?l9{CMiRbhDcsy4>e>V}aa(Oi|o_55LVd#O7t{WnpvXWAmdE1d$ zTf`^FES0m=s3TLsfp8`x{{L;Eq%GC7cQmCG!NK8pBsOBkd_GNc=L=I&qQJ~z4n>qu z#sU_xgk`K?6%|ymhIMRU6I-aEj&1B<7kk*p0S?hX6Gu442~Kf_b6nsOSGYzCH)x}S qTioFu59s0%Pk6=)Uh#%^eBcvb_(l(X{NNYvjJLc7T(1JRsQm#8LY3P9 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-2.bcmap b/public/static/web/cmaps/Adobe-CNS1-2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..2aa95141f9f5802818e34b0aa626e34e7cfee805 GIT binary patch literal 376 zcmW;I(MLmJ7{~FmF8eFqf1vHu-MQP$xfto9^A}WmtyrDyJxAWRfH^ z$xM>WB$*^hCP|WHk|gPS;`uy39?#XUt34QZGdVSu8udl5WtlyFrfG>-(jAt<$$7pU z_e5f1#8nwr4f!$|?vAC?;{V?hN_tXF21iFq5svgH;`V@JheC#-XY*N`$TL%z#te#> z!#ozSh$SqegcYn}4eQvzCbqDRGIp?wJ?!HE6;yGEBh*mGF-~xbGc?e|IWBOC7OrrO s8{Fa!_h{n*k9fi}Uhs-HyrY8;eBuk=_`xr9Ay`2JI;cR?K~xuwKLRC}r~m)} literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-3.bcmap b/public/static/web/cmaps/Adobe-CNS1-3.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..86d8b8c79cfa3907281aa3f25a46f178b87aedfa GIT binary patch literal 401 zcmW;IK`TU26u|K}mcGN({Q|~g_m$`K@18oH)xWONo(l2>)7#w>sV2{J8=76$Q^{=5sg+*{Bi$FO zOn+Bk@`34ybT(0+%;nVoeW;8MwHdTaUu%_UY|W(7ZGJiya~zo}4zw_eykU%>gi(xP z921yC8Pk}-Eaote1uS9-%UHoG*07EZY+?)B*ugILu#W>A;t0n$!70vgjtgAk3fH*7 zE$(oS2UPHgDr$JbGhXnDH@xEmpZLNze((z!vY#y=Hi6g%Vk3yHAU1>84nl~yl$}3x CU7_Cq literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-4.bcmap b/public/static/web/cmaps/Adobe-CNS1-4.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f50fc6c14e67a228c4ba9a61b1357c16410e8228 GIT binary patch literal 405 zcmW;IK`TU26u|K}mexMN{Q|~g_m#NRlK?k|s%# zBuSDaNs^>Vk|arzB>7);fA`estp0Vij%1K8n7*FgNHu$&+t}i|o=RkbF0K4R80r2{ zrE}eZ$p@x0(wTUDBAZqJ_n|U6)Mn5weXUizsV$vMwfm`9%yDG8IMB){@`f>jQH)_6 z6PUylN+@FnvzWs?7O;pVETe)ItYQsStYZV4*upk;u!}wH;{b;^!ZA*8iZh(!0++bL zHEwW=JJfKG2Rz~l&v?Nr-tdkOeBuk=_`xq^$bPnf*aTu5h>ak&g4hgVJBSS-C8t5k F&L0K8qip~H literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-5.bcmap b/public/static/web/cmaps/Adobe-CNS1-5.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..6caf4a83146a60a2db652647b9cfed5fb71bd97c GIT binary patch literal 406 zcmW;IK`TU26u|K}mNve^{Q|~g_mN!#-X5)|zBpQ#PGx_A`luPwPmMBxy;KBx#c*Ns=T< zk|arzv`LaANs=W0qwepXI-RF~O|>;06pCSYXIE?*JkPCbbY0J+azVQ_eldz|Ph_&a z9YI(K!nWAvlC`OP-u&N3CbW?a`*rDCYm)WN*>tAG&m-sM?B#fFL=cp-tmD?eBm2E_=ODUrv*e4h&B+7AX-5*gJ=iQ5JCxG%FZ9F CgrqG1 literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-CNS1-UCS2.bcmap b/public/static/web/cmaps/Adobe-CNS1-UCS2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..69d79a2c2c2b00207ab27b68ebf4404aa17c6f2c GIT binary patch literal 41193 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 R!5J=ag&W-A0Z)>CkuT=vPT>Fm literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-GB1-1.bcmap b/public/static/web/cmaps/Adobe-GB1-1.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..707bb1065c76d69551c287141cb258519132ef8e GIT binary patch literal 250 zcmW;C!HPjq0LJmd(o>ur8(emGDOo64xKA)R4P{);y(uf1rfHfqO`0Z2k|asfBuSDa zNgD6qQRYv5zs=X*d(Fh{N?jKp3$BcqrV)%9hACrtJFBEscU<-4$YeQZ>x!)(T$K;` zVx^M2_m0%cQMz_JEu~~AoJz(MX)EFJ2ytmt{X#Sw>=`e3#T(wy!UsOl#uvWPK^Hyr kF~ATbj4{C!GyLEeb1bmL3Ttez#SVKMaKs5`(G2{Fe=CDsrT_o{ literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-GB1-2.bcmap b/public/static/web/cmaps/Adobe-GB1-2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..f7648cc3ff02c44e9594ccbd71deec742e253c2f GIT binary patch literal 465 zcmW;IK`TU26u|K}mOjP(0>)!E%W0a$lq|f3HRgsI^TvBGHLGzXNs=TL-VlZ{f>DfN z921zt6s9qQS&{5KST4 dLNtbG4bdE;Jw$_u77-d=%W0a$lq7Fsi@BkOH{N@xS&bt}k|arzBx%w#BuSDa zNs=TU}~*Hl|me!dX&bah9j!F3aLjfsS7l3BmQ8m|yWwl_4H zzD_^L`$2nTv+>$wE@%GlLlfB01_QeEtTplarc5f`?4@Hd$C0&Se;cF78^SO~Fp4pZ zV*-4l~8|5gz6Tq;Wr6vm{3v&eie4&Qnn@L%5OOhl>k|arzBuSDaNs=T< zlB5Yqk|arzT(^3E?^93D>MAPKr?QAtrsV)XL*F@Qk~ zVHhJA#Tdphfk{kZ8Z(&19OkirMJ!<%D_F%E*0F(2Y+)Na*u@_9aezY{;TR`4#Tm|V zflFNB8aKE_0e5)7BcAY#7rf#P@A$wczVMA7{6c;HTtH4BH;^O9732(Z2RVdXLQWyK zkYmU-4m-=_tMvz_6R8WHFJ2IRbyaP#C_M$ZFh@BuSDaNs=TCWD$wYeo5lqC}J;_`Sr5mYp#8^R#fo5_alnIPHG zn2tKrQGGUSDk-XHYYYDGGeHz)!l>KJR2T*&r8UXQs@halK|w60mt0p5BggB<00uFH zVT@oDV;IK-CNYI+%wQICn8yMZv4mx;U=?dv#|AdBg>CF$7kk*p0S|+(wQg*OBwcedIuLAvuxUNRA{|k~7Jj ijwRQUbIHBrU~(}zncPf{rl(l7o@0OOeg}^L literal 0 HcmV?d00001 diff --git a/public/static/web/cmaps/Adobe-GB1-UCS2.bcmap b/public/static/web/cmaps/Adobe-GB1-UCS2.bcmap new file mode 100644 index 0000000000000000000000000000000000000000..7586525936cc5398b86d3752a4eb45b15825b25c GIT binary patch literal 33974 zcmbSyg#^~;Dq`SLCNL%sw+i2N{zNG!^ z$?Yk$5++TC7EIHnbl@j zL>j^%M!o;^j0oPervI<+6Q?2wVGh2R4+reFD~3GkG$FYsWlU|O`ryo7Cx}AGcZY)y zxsPa^R$VF>bccxgAnSh6i^M5Kw40o9+-AI+wOSW<^;T!D3K)+#RruRmSh72~5X)V# z-T|%ochcM4uxZZv7+gyHqKeh!_-lLDY)7n!H8Eo%`FO!4GknRxko>LUi&DGoCuy}s zfAX&z;xJptdPg7;|?<=Zs- znM9ir8jGLO2K){r-Ozd>nt4A?g zlM(Vbk|{oJLa=XV{LRK8tzHA77?akx>58?KiL!3{8tsAHL;kyru_^u}qty~6qGoG) zWXmSP3#+77PeXmua`g*Ic&)V06D^fD7WKFdv4ydxV^_L|0EtGDStAtM!rM) zw#F6Kfq-AL>LhWDj{$=xvV_GEMI6d}Gy~g$_r#&qw%QZfXF_Z2urmU;TqlcaopB}x zha?9LCiBL;rmQbUU`nrDeOKPU0jQbTA&yOk|IWQpw$vFXTp`M=VVz4RI@NGW_m#p% zSIPaRCj^8O&bWTne-wsl#y!PTPE8W;)v-Sp0~Cy;)&;z&JS>mnG1%yEKpy*i`p3d?YxKWwJqxHWdtrs5x!9#vjH{k`K)eT>ep )hMjqg! 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