[epiphany/mcatanzaro/pdfjs-2.7] Update to PDF.js 2.7.570




commit 20d15c36f993ec58bc4a154df5629933c5978a6f
Author: Michael Catanzaro <mcatanzaro gnome org>
Date:   Mon Apr 5 16:17:20 2021 -0500

    Update to PDF.js 2.7.570

 third-party/pdfjs/build/pdf.js                     |  2334 +-
 third-party/pdfjs/build/pdf.sandbox.js             |   312 +
 third-party/pdfjs/build/pdf.worker.js              | 24276 ++++++-------------
 third-party/pdfjs/epiphany-pdfjs-changes.patch     |    49 +-
 third-party/pdfjs/pdfjs.gresource.xml              |     2 +-
 third-party/pdfjs/web/debugger.js                  |    21 +-
 third-party/pdfjs/web/locale/ach/viewer.properties |     1 +
 third-party/pdfjs/web/locale/af/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/an/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ar/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ast/viewer.properties |   100 +-
 third-party/pdfjs/web/locale/az/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/be/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/bg/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/bn/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/bo/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/br/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/brx/viewer.properties |     1 +
 third-party/pdfjs/web/locale/bs/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ca/viewer.properties  |     9 +-
 third-party/pdfjs/web/locale/cak/viewer.properties |     3 +-
 third-party/pdfjs/web/locale/ckb/viewer.properties |     7 +-
 third-party/pdfjs/web/locale/cs/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/cy/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/da/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/de/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/dsb/viewer.properties |     1 +
 third-party/pdfjs/web/locale/el/viewer.properties  |     1 +
 .../pdfjs/web/locale/en-CA/viewer.properties       |     9 +-
 .../pdfjs/web/locale/en-GB/viewer.properties       |     1 +
 .../pdfjs/web/locale/en-US/viewer.properties       |    10 +-
 third-party/pdfjs/web/locale/eo/viewer.properties  |     3 +-
 .../pdfjs/web/locale/es-AR/viewer.properties       |     2 +-
 .../pdfjs/web/locale/es-CL/viewer.properties       |     3 +-
 .../pdfjs/web/locale/es-ES/viewer.properties       |     3 +-
 .../pdfjs/web/locale/es-MX/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/et/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/eu/viewer.properties  |     5 +-
 third-party/pdfjs/web/locale/fa/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ff/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/fi/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/fr/viewer.properties  |     3 +-
 .../pdfjs/web/locale/fy-NL/viewer.properties       |     3 +-
 .../pdfjs/web/locale/ga-IE/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/gd/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/gl/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/gn/viewer.properties  |     3 +-
 .../pdfjs/web/locale/gu-IN/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/he/viewer.properties  |     3 +-
 .../pdfjs/web/locale/hi-IN/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/hr/viewer.properties  |    15 +-
 third-party/pdfjs/web/locale/hsb/viewer.properties |     1 +
 third-party/pdfjs/web/locale/hu/viewer.properties  |     1 +
 .../pdfjs/web/locale/hy-AM/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/hye/viewer.properties |     7 +-
 third-party/pdfjs/web/locale/ia/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/id/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/is/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/it/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/ja/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/ka/viewer.properties  |     7 +-
 third-party/pdfjs/web/locale/kab/viewer.properties |     3 +-
 third-party/pdfjs/web/locale/kk/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/km/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/kn/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ko/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/lij/viewer.properties |     1 +
 third-party/pdfjs/web/locale/lo/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/lt/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/ltg/viewer.properties |     1 +
 third-party/pdfjs/web/locale/lv/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/mk/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/mr/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ms/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/my/viewer.properties  |     1 +
 .../pdfjs/web/locale/nb-NO/viewer.properties       |     1 +
 .../pdfjs/web/locale/ne-NP/viewer.properties       |     1 +
 third-party/pdfjs/web/locale/nl/viewer.properties  |     5 +-
 .../pdfjs/web/locale/nn-NO/viewer.properties       |     3 +-
 third-party/pdfjs/web/locale/oc/viewer.properties  |     3 +-
 .../pdfjs/web/locale/pa-IN/viewer.properties       |     5 +-
 third-party/pdfjs/web/locale/pl/viewer.properties  |     3 +-
 .../pdfjs/web/locale/pt-BR/viewer.properties       |    25 +-
 .../pdfjs/web/locale/pt-PT/viewer.properties       |     3 +-
 third-party/pdfjs/web/locale/rm/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/ro/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ru/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/si/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/sk/viewer.properties  |     5 +-
 third-party/pdfjs/web/locale/sl/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/son/viewer.properties |     1 +
 third-party/pdfjs/web/locale/sq/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/sr/viewer.properties  |     3 +-
 .../pdfjs/web/locale/sv-SE/viewer.properties       |     6 +-
 third-party/pdfjs/web/locale/szl/viewer.properties |     3 +-
 third-party/pdfjs/web/locale/ta/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/te/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/th/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/tl/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/tr/viewer.properties  |     5 +-
 third-party/pdfjs/web/locale/trs/viewer.properties |     1 +
 third-party/pdfjs/web/locale/uk/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/ur/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/uz/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/vi/viewer.properties  |     3 +-
 third-party/pdfjs/web/locale/wo/viewer.properties  |     1 +
 third-party/pdfjs/web/locale/xh/viewer.properties  |     1 +
 .../pdfjs/web/locale/zh-CN/viewer.properties       |     1 +
 .../pdfjs/web/locale/zh-TW/viewer.properties       |     1 +
 third-party/pdfjs/web/viewer.css                   |  1838 +-
 third-party/pdfjs/web/viewer.html                  |    23 +-
 third-party/pdfjs/web/viewer.js                    |  2622 +-
 112 files changed, 11898 insertions(+), 19950 deletions(-)
---
diff --git a/third-party/pdfjs/build/pdf.js b/third-party/pdfjs/build/pdf.js
index 7293ddd1d..e2c2e2be1 100644
--- a/third-party/pdfjs/build/pdf.js
+++ b/third-party/pdfjs/build/pdf.js
@@ -2,7 +2,7 @@
  * @licstart The following is the entire license notice for the
  * Javascript code in this page
  *
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2020 Mozilla Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -33,7 +33,256 @@
 return /******/ (() => { // webpackBootstrap
 /******/       "use strict";
 /******/       var __webpack_modules__ = ([
-/* 0 */,
+/* 0 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+Object.defineProperty(exports, "addLinkAttributes", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.addLinkAttributes;
+  }
+}));
+Object.defineProperty(exports, "getFilenameFromUrl", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.getFilenameFromUrl;
+  }
+}));
+Object.defineProperty(exports, "LinkTarget", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.LinkTarget;
+  }
+}));
+Object.defineProperty(exports, "loadScript", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.loadScript;
+  }
+}));
+Object.defineProperty(exports, "PDFDateString", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.PDFDateString;
+  }
+}));
+Object.defineProperty(exports, "RenderingCancelledException", ({
+  enumerable: true,
+  get: function () {
+    return _display_utils.RenderingCancelledException;
+  }
+}));
+Object.defineProperty(exports, "build", ({
+  enumerable: true,
+  get: function () {
+    return _api.build;
+  }
+}));
+Object.defineProperty(exports, "getDocument", ({
+  enumerable: true,
+  get: function () {
+    return _api.getDocument;
+  }
+}));
+Object.defineProperty(exports, "LoopbackPort", ({
+  enumerable: true,
+  get: function () {
+    return _api.LoopbackPort;
+  }
+}));
+Object.defineProperty(exports, "PDFDataRangeTransport", ({
+  enumerable: true,
+  get: function () {
+    return _api.PDFDataRangeTransport;
+  }
+}));
+Object.defineProperty(exports, "PDFWorker", ({
+  enumerable: true,
+  get: function () {
+    return _api.PDFWorker;
+  }
+}));
+Object.defineProperty(exports, "version", ({
+  enumerable: true,
+  get: function () {
+    return _api.version;
+  }
+}));
+Object.defineProperty(exports, "CMapCompressionType", ({
+  enumerable: true,
+  get: function () {
+    return _util.CMapCompressionType;
+  }
+}));
+Object.defineProperty(exports, "createObjectURL", ({
+  enumerable: true,
+  get: function () {
+    return _util.createObjectURL;
+  }
+}));
+Object.defineProperty(exports, "createPromiseCapability", ({
+  enumerable: true,
+  get: function () {
+    return _util.createPromiseCapability;
+  }
+}));
+Object.defineProperty(exports, "createValidAbsoluteUrl", ({
+  enumerable: true,
+  get: function () {
+    return _util.createValidAbsoluteUrl;
+  }
+}));
+Object.defineProperty(exports, "InvalidPDFException", ({
+  enumerable: true,
+  get: function () {
+    return _util.InvalidPDFException;
+  }
+}));
+Object.defineProperty(exports, "MissingPDFException", ({
+  enumerable: true,
+  get: function () {
+    return _util.MissingPDFException;
+  }
+}));
+Object.defineProperty(exports, "OPS", ({
+  enumerable: true,
+  get: function () {
+    return _util.OPS;
+  }
+}));
+Object.defineProperty(exports, "PasswordResponses", ({
+  enumerable: true,
+  get: function () {
+    return _util.PasswordResponses;
+  }
+}));
+Object.defineProperty(exports, "PermissionFlag", ({
+  enumerable: true,
+  get: function () {
+    return _util.PermissionFlag;
+  }
+}));
+Object.defineProperty(exports, "removeNullCharacters", ({
+  enumerable: true,
+  get: function () {
+    return _util.removeNullCharacters;
+  }
+}));
+Object.defineProperty(exports, "shadow", ({
+  enumerable: true,
+  get: function () {
+    return _util.shadow;
+  }
+}));
+Object.defineProperty(exports, "UnexpectedResponseException", ({
+  enumerable: true,
+  get: function () {
+    return _util.UnexpectedResponseException;
+  }
+}));
+Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
+  enumerable: true,
+  get: function () {
+    return _util.UNSUPPORTED_FEATURES;
+  }
+}));
+Object.defineProperty(exports, "Util", ({
+  enumerable: true,
+  get: function () {
+    return _util.Util;
+  }
+}));
+Object.defineProperty(exports, "VerbosityLevel", ({
+  enumerable: true,
+  get: function () {
+    return _util.VerbosityLevel;
+  }
+}));
+Object.defineProperty(exports, "AnnotationLayer", ({
+  enumerable: true,
+  get: function () {
+    return _annotation_layer.AnnotationLayer;
+  }
+}));
+Object.defineProperty(exports, "apiCompatibilityParams", ({
+  enumerable: true,
+  get: function () {
+    return _api_compatibility.apiCompatibilityParams;
+  }
+}));
+Object.defineProperty(exports, "GlobalWorkerOptions", ({
+  enumerable: true,
+  get: function () {
+    return _worker_options.GlobalWorkerOptions;
+  }
+}));
+Object.defineProperty(exports, "renderTextLayer", ({
+  enumerable: true,
+  get: function () {
+    return _text_layer.renderTextLayer;
+  }
+}));
+Object.defineProperty(exports, "SVGGraphics", ({
+  enumerable: true,
+  get: function () {
+    return _svg.SVGGraphics;
+  }
+}));
+
+var _display_utils = __w_pdfjs_require__(1);
+
+var _api = __w_pdfjs_require__(5);
+
+var _util = __w_pdfjs_require__(2);
+
+var _annotation_layer = __w_pdfjs_require__(19);
+
+var _api_compatibility = __w_pdfjs_require__(9);
+
+var _worker_options = __w_pdfjs_require__(12);
+
+var _text_layer = __w_pdfjs_require__(21);
+
+var _svg = __w_pdfjs_require__(22);
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+{
+  const {
+    isNodeJS
+  } = __w_pdfjs_require__(4);
+
+  if (isNodeJS) {
+    const PDFNodeStream = __w_pdfjs_require__(23).PDFNodeStream;
+
+    (0, _api.setPDFNetworkStreamFactory)(params => {
+      return new PDFNodeStream(params);
+    });
+  } else {
+    const PDFNetworkStream = __w_pdfjs_require__(26).PDFNetworkStream;
+
+    let PDFFetchStream;
+
+    if ((0, _display_utils.isFetchSupported)()) {
+      PDFFetchStream = __w_pdfjs_require__(27).PDFFetchStream;
+    }
+
+    (0, _api.setPDFNetworkStreamFactory)(params => {
+      if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {
+        return new PDFFetchStream(params);
+      }
+
+      return new PDFNetworkStream(params);
+    });
+  }
+}
+
+/***/ }),
 /* 1 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
@@ -45,10 +294,7 @@ Object.defineProperty(exports, "__esModule", ({
 exports.addLinkAttributes = addLinkAttributes;
 exports.deprecated = deprecated;
 exports.getFilenameFromUrl = getFilenameFromUrl;
-exports.getPdfFilenameFromUrl = getPdfFilenameFromUrl;
-exports.isDataScheme = isDataScheme;
 exports.isFetchSupported = isFetchSupported;
-exports.isPdfFile = isPdfFile;
 exports.isValidFetchUrl = isValidFetchUrl;
 exports.loadScript = loadScript;
 exports.StatTimer = exports.RenderingCancelledException = exports.PDFDateString = exports.PageViewport = 
exports.LinkTarget = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = 
exports.DEFAULT_LINK_REL = exports.BaseCMapReaderFactory = exports.BaseCanvasFactory = void 0;
@@ -268,11 +514,8 @@ class PageViewport {
     const centerX = (viewBox[2] + viewBox[0]) / 2;
     const centerY = (viewBox[3] + viewBox[1]) / 2;
     let rotateA, rotateB, rotateC, rotateD;
-    rotation %= 360;
-
-    if (rotation < 0) {
-      rotation += 360;
-    }
+    rotation = rotation % 360;
+    rotation = rotation < 0 ? rotation + 360 : rotation;
 
     switch (rotation) {
       case 180:
@@ -434,21 +677,6 @@ function addLinkAttributes(link, {
   link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
 }
 
-function isDataScheme(url) {
-  const ii = url.length;
-  let i = 0;
-
-  while (i < ii && url[i].trim() === "") {
-    i++;
-  }
-
-  return url.substring(i, i + 5).toLowerCase() === "data:";
-}
-
-function isPdfFile(filename) {
-  return typeof filename === "string" && /\.pdf$/i.test(filename);
-}
-
 function getFilenameFromUrl(url) {
   const anchor = url.indexOf("#");
   const query = url.indexOf("?");
@@ -456,34 +684,6 @@ function getFilenameFromUrl(url) {
   return url.substring(url.lastIndexOf("/", end) + 1, end);
 }
 
-function getPdfFilenameFromUrl(url, defaultFilename = "document.pdf") {
-  if (typeof url !== "string") {
-    return defaultFilename;
-  }
-
-  if (isDataScheme(url)) {
-    (0, _util.warn)('getPdfFilenameFromUrl: ignore "data:"-URL for performance reasons.');
-    return defaultFilename;
-  }
-
-  const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
-  const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
-  const splitURI = reURI.exec(url);
-  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || 
reFilename.exec(splitURI[3]);
-
-  if (suggestedFilename) {
-    suggestedFilename = suggestedFilename[0];
-
-    if (suggestedFilename.includes("%")) {
-      try {
-        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
-      } catch (ex) {}
-    }
-  }
-
-  return suggestedFilename || defaultFilename;
-}
-
 class StatTimer {
   constructor() {
     this.started = Object.create(null);
@@ -638,9 +838,9 @@ exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
-exports.createObjectURL = createObjectURL;
 exports.createPromiseCapability = createPromiseCapability;
 exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.encodeToXmlString = encodeToXmlString;
 exports.escapeString = escapeString;
 exports.getModificationDate = getModificationDate;
 exports.getVerbosityLevel = getVerbosityLevel;
@@ -652,7 +852,7 @@ exports.isBool = isBool;
 exports.isNum = isNum;
 exports.isSameOrigin = isSameOrigin;
 exports.isString = isString;
-exports.objectFromMap = objectFromMap;
+exports.objectFromEntries = objectFromEntries;
 exports.objectSize = objectSize;
 exports.removeNullCharacters = removeNullCharacters;
 exports.setVerbosityLevel = setVerbosityLevel;
@@ -665,7 +865,7 @@ exports.stringToUTF8String = stringToUTF8String;
 exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -1240,14 +1440,8 @@ function objectSize(obj) {
   return Object.keys(obj).length;
 }
 
-function objectFromMap(map) {
-  const obj = Object.create(null);
-
-  for (const [key, value] of map) {
-    obj[key] = value;
-  }
-
-  return obj;
+function objectFromEntries(iterable) {
+  return Object.assign(Object.create(null), Object.fromEntries(iterable));
 }
 
 function isLittleEndian() {
@@ -1329,7 +1523,7 @@ class Util {
     const c = m[2] * transpose[0] + m[3] * transpose[2];
     const d = m[2] * transpose[1] + m[3] * transpose[3];
     const first = (a + d) / 2;
-    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
+    const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
     const sx = first + second || 1;
     const sy = first - second || 1;
     return [Math.sqrt(sx), Math.sqrt(sy)];
@@ -1463,13 +1657,9 @@ function isArrayEqual(arr1, arr2) {
     return false;
   }
 
-  for (let i = 0, ii = arr1.length; i < ii; i++) {
-    if (arr1[i] !== arr2[i]) {
-      return false;
-    }
-  }
-
-  return true;
+  return arr1.every(function (element, index) {
+    return element === arr2[index];
+  });
 }
 
 function getModificationDate(date = new Date()) {
@@ -1500,28 +1690,84 @@ function createPromiseCapability() {
   return capability;
 }
 
-function createObjectURL(data, contentType = "", forceDataSchema = false) {
-  if (URL.createObjectURL && !forceDataSchema) {
-    return URL.createObjectURL(new Blob([data], {
-      type: contentType
-    }));
+const createObjectURL = function createObjectURLClosure() {
+  const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+  return function createObjectURL(data, contentType, forceDataSchema = false) {
+    if (!forceDataSchema && URL.createObjectURL) {
+      const blob = new Blob([data], {
+        type: contentType
+      });
+      return URL.createObjectURL(blob);
+    }
+
+    let buffer = `data:${contentType};base64,`;
+
+    for (let i = 0, ii = data.length; i < ii; i += 3) {
+      const b1 = data[i] & 0xff;
+      const b2 = data[i + 1] & 0xff;
+      const b3 = data[i + 2] & 0xff;
+      const d1 = b1 >> 2,
+            d2 = (b1 & 3) << 4 | b2 >> 4;
+      const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
+      const d4 = i + 2 < ii ? b3 & 0x3f : 64;
+      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+    }
+
+    return buffer;
+  };
+}();
+
+exports.createObjectURL = createObjectURL;
+const XMLEntities = {
+  0x3c: "&lt;",
+  0x3e: "&gt;",
+  0x26: "&amp;",
+  0x22: "&quot;",
+  0x27: "&apos;"
+};
+
+function encodeToXmlString(str) {
+  const buffer = [];
+  let start = 0;
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.codePointAt(i);
+
+    if (0x20 <= char && char <= 0x7e) {
+      const entity = XMLEntities[char];
+
+      if (entity) {
+        if (start < i) {
+          buffer.push(str.substring(start, i));
+        }
+
+        buffer.push(entity);
+        start = i + 1;
+      }
+    } else {
+      if (start < i) {
+        buffer.push(str.substring(start, i));
+      }
+
+      buffer.push(`&#x${char.toString(16).toUpperCase()};`);
+
+      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
+        i++;
+      }
+
+      start = i + 1;
+    }
   }
 
-  const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-  let buffer = `data:${contentType};base64,`;
+  if (buffer.length === 0) {
+    return str;
+  }
 
-  for (let i = 0, ii = data.length; i < ii; i += 3) {
-    const b1 = data[i] & 0xff;
-    const b2 = data[i + 1] & 0xff;
-    const b3 = data[i + 2] & 0xff;
-    const d1 = b1 >> 2,
-          d2 = (b1 & 3) << 4 | b2 >> 4;
-    const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
-    const d4 = i + 2 < ii ? b3 & 0x3f : 64;
-    buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+  if (start < str.length) {
+    buffer.push(str.substring(start, str.length));
   }
 
-  return buffer;
+  return buffer.join("");
 }
 
 /***/ }),
@@ -1582,11 +1828,11 @@ var _message_handler = __w_pdfjs_require__(13);
 
 var _metadata = __w_pdfjs_require__(14);
 
-var _optional_content_config = __w_pdfjs_require__(15);
+var _optional_content_config = __w_pdfjs_require__(16);
 
-var _transport_stream = __w_pdfjs_require__(16);
+var _transport_stream = __w_pdfjs_require__(17);
 
-var _webgl = __w_pdfjs_require__(17);
+var _webgl = __w_pdfjs_require__(18);
 
 const DEFAULT_RANGE_CHUNK_SIZE = 65536;
 const RENDERING_CANCELLED_TIMEOUT = 100;
@@ -1604,7 +1850,7 @@ function getDocument(src) {
   const task = new PDFDocumentLoadingTask();
   let source;
 
-  if (typeof src === "string" || src instanceof URL) {
+  if (typeof src === "string") {
     source = {
       url: src
     };
@@ -1618,7 +1864,7 @@ function getDocument(src) {
     };
   } else {
     if (typeof src !== "object") {
-      throw new Error("Invalid parameter in getDocument, " + "need either string, URL, Uint8Array, or 
parameter object.");
+      throw new Error("Invalid parameter in getDocument, " + "need either Uint8Array, string or a parameter 
object");
     }
 
     if (!src.url && !src.data && !src.range) {
@@ -1633,51 +1879,32 @@ function getDocument(src) {
       worker = null;
 
   for (const key in source) {
-    const value = source[key];
-
-    switch (key) {
-      case "url":
-        if (typeof window !== "undefined") {
-          try {
-            params[key] = new URL(value, window.location).href;
-            continue;
-          } catch (ex) {
-            (0, _util.warn)(`Cannot create valid URL: "${ex}".`);
-          }
-        } else if (typeof value === "string" || value instanceof URL) {
-          params[key] = value.toString();
-          continue;
-        }
-
-        throw new Error("Invalid PDF url data: " + "either string or URL-object is expected in the url 
property.");
-
-      case "range":
-        rangeTransport = value;
-        continue;
-
-      case "worker":
-        worker = value;
-        continue;
-
-      case "data":
-        if (_is_node.isNodeJS && typeof Buffer !== "undefined" && value instanceof Buffer) {
-          params[key] = new Uint8Array(value);
-        } else if (value instanceof Uint8Array) {
-          break;
-        } else if (typeof value === "string") {
-          params[key] = (0, _util.stringToBytes)(value);
-        } else if (typeof value === "object" && value !== null && !isNaN(value.length)) {
-          params[key] = new Uint8Array(value);
-        } else if ((0, _util.isArrayBuffer)(value)) {
-          params[key] = new Uint8Array(value);
-        } else {
-          throw new Error("Invalid PDF binary data: either typed array, " + "string, or array-like object is 
expected in the data property.");
-        }
+    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)) {
+      const pdfBytes = source[key];
+
+      if (typeof pdfBytes === "string") {
+        params[key] = (0, _util.stringToBytes)(pdfBytes);
+      } else if (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;
+      continue;
     }
 
-    params[key] = value;
+    params[key] = source[key];
   }
 
   params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
@@ -1685,11 +1912,6 @@ function getDocument(src) {
   params.ignoreErrors = params.stopAtErrors !== true;
   params.fontExtraProperties = params.fontExtraProperties === true;
   params.pdfBug = params.pdfBug === true;
-  params.enableXfa = params.enableXfa === true;
-
-  if (typeof params.docBaseUrl !== "string" || (0, _display_utils.isDataScheme)(params.docBaseUrl)) {
-    params.docBaseUrl = null;
-  }
 
   if (!Number.isInteger(params.maxImageSize)) {
     params.maxImageSize = -1;
@@ -1746,7 +1968,6 @@ function getDocument(src) {
           length: params.length,
           initialData: params.initialData,
           progressiveDone: params.progressiveDone,
-          contentDispositionFilename: params.contentDispositionFilename,
           disableRange: params.disableRange,
           disableStream: params.disableStream
         }, rangeTransport);
@@ -1788,12 +2009,11 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
     source.length = pdfDataRangeTransport.length;
     source.initialData = pdfDataRangeTransport.initialData;
     source.progressiveDone = pdfDataRangeTransport.progressiveDone;
-    source.contentDispositionFilename = pdfDataRangeTransport.contentDispositionFilename;
   }
 
   return worker.messageHandler.sendWithPromise("GetDocRequest", {
     docId,
-    apiVersion: '2.8.335',
+    apiVersion: '2.7.570',
     source: {
       data: source.data,
       url: source.url,
@@ -1808,8 +2028,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
     docBaseUrl: source.docBaseUrl,
     ignoreErrors: source.ignoreErrors,
     isEvalSupported: source.isEvalSupported,
-    fontExtraProperties: source.fontExtraProperties,
-    enableXfa: source.enableXfa
+    fontExtraProperties: source.fontExtraProperties
   }).then(function (workerId) {
     if (worker.destroyed) {
       throw new Error("Worker was destroyed");
@@ -1858,11 +2077,10 @@ const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
 }();
 
 class PDFDataRangeTransport {
-  constructor(length, initialData, progressiveDone = false, contentDispositionFilename = null) {
+  constructor(length, initialData, progressiveDone = false) {
     this.length = length;
     this.initialData = initialData;
     this.progressiveDone = progressiveDone;
-    this.contentDispositionFilename = contentDispositionFilename;
     this._rangeListeners = [];
     this._progressListeners = [];
     this._progressiveReadListeners = [];
@@ -1948,10 +2166,6 @@ class PDFDocumentProxy {
     return this._pdfInfo.fingerprint;
   }
 
-  get isPureXfa() {
-    return this._pdfInfo.isPureXfa;
-  }
-
   getPage(pageNumber) {
     return this._transport.getPage(pageNumber);
   }
@@ -2032,8 +2246,8 @@ class PDFDocumentProxy {
     return this._transport.getStats();
   }
 
-  cleanup(keepLoadedFonts = false) {
-    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);
+  cleanup() {
+    return this._transport.startCleanup();
   }
 
   destroy() {
@@ -2124,22 +2338,18 @@ class PDFPageProxy {
   getAnnotations({
     intent = null
   } = {}) {
-    if (!this._annotationsPromise || this._annotationsIntent !== intent) {
-      this._annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
-      this._annotationsIntent = intent;
+    if (!this.annotationsPromise || this.annotationsIntent !== intent) {
+      this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
+      this.annotationsIntent = intent;
     }
 
-    return this._annotationsPromise;
+    return this.annotationsPromise;
   }
 
   getJSActions() {
     return this._jsActionsPromise || (this._jsActionsPromise = 
this._transport.getPageJSActions(this._pageIndex));
   }
 
-  getXfa() {
-    return this._xfaPromise || (this._xfaPromise = this._transport.getPageXfa(this._pageIndex));
-  }
-
   render({
     canvasContext,
     viewport,
@@ -2153,8 +2363,6 @@ class PDFPageProxy {
     annotationStorage = null,
     optionalContentConfigPromise = null
   }) {
-    var _intentState;
-
     if (this._stats) {
       this._stats.time("Overall");
     }
@@ -2202,12 +2410,16 @@ class PDFPageProxy {
         pageIndex: this._pageIndex,
         intent: renderingIntent,
         renderInteractiveForms: renderInteractiveForms === true,
-        annotationStorage: annotationStorage?.serializable || null
+        annotationStorage: annotationStorage?.getAll() || null
       });
     }
 
     const complete = error => {
-      intentState.renderTasks.delete(internalRenderTask);
+      const i = intentState.renderTasks.indexOf(internalRenderTask);
+
+      if (i >= 0) {
+        intentState.renderTasks.splice(i, 1);
+      }
 
       if (this.cleanupAfterRender || renderingIntent === "print") {
         this.pendingCleanup = true;
@@ -2251,7 +2463,12 @@ class PDFPageProxy {
       useRequestAnimationFrame: renderingIntent !== "print",
       pdfBug: this._pdfBug
     });
-    ((_intentState = intentState).renderTasks || (_intentState.renderTasks = new 
Set())).add(internalRenderTask);
+
+    if (!intentState.renderTasks) {
+      intentState.renderTasks = [];
+    }
+
+    intentState.renderTasks.push(internalRenderTask);
     const renderTask = internalRenderTask.task;
     Promise.all([intentState.displayReadyCapability.promise, 
optionalContentConfigPromise]).then(([transparency, optionalContentConfig]) => {
       if (this.pendingCleanup) {
@@ -2276,7 +2493,11 @@ class PDFPageProxy {
     function operatorListChanged() {
       if (intentState.operatorList.lastChunk) {
         intentState.opListReadCapability.resolve(intentState.operatorList);
-        intentState.renderTasks.delete(opListTask);
+        const i = intentState.renderTasks.indexOf(opListTask);
+
+        if (i >= 0) {
+          intentState.renderTasks.splice(i, 1);
+        }
       }
     }
 
@@ -2293,12 +2514,11 @@ class PDFPageProxy {
     let opListTask;
 
     if (!intentState.opListReadCapability) {
-      var _intentState2;
-
       opListTask = Object.create(null);
       opListTask.operatorListChanged = operatorListChanged;
       intentState.opListReadCapability = (0, _util.createPromiseCapability)();
-      ((_intentState2 = intentState).renderTasks || (_intentState2.renderTasks = new Set())).add(opListTask);
+      intentState.renderTasks = [];
+      intentState.renderTasks.push(opListTask);
       intentState.operatorList = {
         fnArray: [],
         argsArray: [],
@@ -2388,9 +2608,8 @@ class PDFPageProxy {
     }
 
     this.objs.clear();
-    this._annotationsPromise = null;
+    this.annotationsPromise = null;
     this._jsActionsPromise = null;
-    this._xfaPromise = null;
     this.pendingCleanup = false;
     return Promise.all(waitOn);
   }
@@ -2409,7 +2628,7 @@ class PDFPageProxy {
       renderTasks,
       operatorList
     } of this._intentStates.values()) {
-      if (renderTasks.size > 0 || !operatorList.lastChunk) {
+      if (renderTasks.length !== 0 || !operatorList.lastChunk) {
         return false;
       }
     }
@@ -2417,9 +2636,8 @@ class PDFPageProxy {
     this._intentStates.clear();
 
     this.objs.clear();
-    this._annotationsPromise = null;
+    this.annotationsPromise = null;
     this._jsActionsPromise = null;
-    this._xfaPromise = null;
 
     if (resetStats && this._stats) {
       this._stats = new _display_utils.StatTimer();
@@ -2453,8 +2671,8 @@ class PDFPageProxy {
 
     intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
 
-    for (const internalRenderTask of intentState.renderTasks) {
-      internalRenderTask.operatorListChanged();
+    for (let i = 0; i < intentState.renderTasks.length; i++) {
+      intentState.renderTasks[i].operatorListChanged();
     }
 
     if (operatorListChunk.lastChunk) {
@@ -2500,8 +2718,8 @@ class PDFPageProxy {
         if (intentState.operatorList) {
           intentState.operatorList.lastChunk = true;
 
-          for (const internalRenderTask of intentState.renderTasks) {
-            internalRenderTask.operatorListChanged();
+          for (let i = 0; i < intentState.renderTasks.length; i++) {
+            intentState.renderTasks[i].operatorListChanged();
           }
 
           this._tryCleanup();
@@ -2532,7 +2750,7 @@ class PDFPageProxy {
     }
 
     if (!force) {
-      if (intentState.renderTasks.size > 0) {
+      if (intentState.renderTasks.length !== 0) {
         return;
       }
 
@@ -2577,8 +2795,9 @@ class PDFPageProxy {
 exports.PDFPageProxy = PDFPageProxy;
 
 class LoopbackPort {
-  constructor() {
+  constructor(defer = true) {
     this._listeners = [];
+    this._defer = defer;
     this._deferred = Promise.resolve(undefined);
   }
 
@@ -2605,28 +2824,6 @@ class LoopbackPort {
         return result;
       }
 
-      if (value instanceof Map) {
-        result = new Map();
-        cloned.set(value, result);
-
-        for (const [key, val] of value) {
-          result.set(key, cloneValue(val));
-        }
-
-        return result;
-      }
-
-      if (value instanceof Set) {
-        result = new Set();
-        cloned.set(value, result);
-
-        for (const val of value) {
-          result.add(cloneValue(val));
-        }
-
-        return result;
-      }
-
       result = Array.isArray(value) ? [] : {};
       cloned.set(value, result);
 
@@ -2643,7 +2840,7 @@ class LoopbackPort {
         }
 
         if (typeof desc.value === "function") {
-          if (value.hasOwnProperty?.(i)) {
+          if (value.hasOwnProperty && value.hasOwnProperty(i)) {
             throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);
           }
 
@@ -2656,15 +2853,25 @@ class LoopbackPort {
       return result;
     }
 
+    if (!this._defer) {
+      this._listeners.forEach(listener => {
+        listener.call(this, {
+          data: obj
+        });
+      });
+
+      return;
+    }
+
     const cloned = new WeakMap();
-    const event = {
+    const e = {
       data: cloneValue(obj)
     };
 
     this._deferred.then(() => {
-      for (const listener of this._listeners) {
-        listener.call(this, event);
-      }
+      this._listeners.forEach(listener => {
+        listener.call(this, e);
+      });
     });
   }
 
@@ -3442,7 +3649,7 @@ class WorkerTransport {
   saveDocument(annotationStorage) {
     return this.messageHandler.sendWithPromise("SaveDocument", {
       numPages: this._numPages,
-      annotationStorage: annotationStorage?.serializable || null,
+      annotationStorage: annotationStorage?.getAll() || null,
       filename: this._fullReader?.filename ?? null
     }).finally(() => {
       if (annotationStorage) {
@@ -3515,12 +3722,6 @@ class WorkerTransport {
     });
   }
 
-  getPageXfa(pageIndex) {
-    return this.messageHandler.sendWithPromise("GetPageXfa", {
-      pageIndex
-    });
-  }
-
   getOutline() {
     return this.messageHandler.sendWithPromise("GetOutline", null);
   }
@@ -3554,34 +3755,24 @@ class WorkerTransport {
     return this.messageHandler.sendWithPromise("GetStats", null);
   }
 
-  async startCleanup(keepLoadedFonts = false) {
-    await this.messageHandler.sendWithPromise("Cleanup", null);
-
-    if (this.destroyed) {
-      return;
-    }
-
-    for (let i = 0, ii = this.pageCache.length; i < ii; i++) {
-      const page = this.pageCache[i];
+  startCleanup() {
+    return this.messageHandler.sendWithPromise("Cleanup", null).then(() => {
+      for (let i = 0, ii = this.pageCache.length; i < ii; i++) {
+        const page = this.pageCache[i];
 
-      if (!page) {
-        continue;
-      }
+        if (page) {
+          const cleanupSuccessful = page.cleanup();
 
-      const cleanupSuccessful = page.cleanup();
-
-      if (!cleanupSuccessful) {
-        throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);
+          if (!cleanupSuccessful) {
+            throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);
+          }
+        }
       }
-    }
 
-    this.commonObjs.clear();
-
-    if (!keepLoadedFonts) {
+      this.commonObjs.clear();
       this.fontLoader.clear();
-    }
-
-    this._hasJSActionsPromise = null;
+      this._hasJSActionsPromise = null;
+    });
   }
 
   get loadingParams() {
@@ -3695,7 +3886,6 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
       this.cancelled = false;
       this.capability = (0, _util.createPromiseCapability)();
       this.task = new RenderTask(this);
-      this._cancelBound = this.cancel.bind(this);
       this._continueBound = this._continue.bind(this);
       this._scheduleNextBound = this._scheduleNext.bind(this);
       this._nextBound = this._next.bind(this);
@@ -3802,10 +3992,10 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
     _scheduleNext() {
       if (this._useRequestAnimationFrame) {
         window.requestAnimationFrame(() => {
-          this._nextBound().catch(this._cancelBound);
+          this._nextBound().catch(this.cancel.bind(this));
         });
       } else {
-        Promise.resolve().then(this._nextBound).catch(this._cancelBound);
+        Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
       }
     }
 
@@ -3836,9 +4026,9 @@ const InternalRenderTask = function InternalRenderTaskClosure() {
   return InternalRenderTask;
 }();
 
-const version = '2.8.335';
+const version = '2.7.570';
 exports.version = version;
-const build = '228adbf67';
+const build = 'f2c7338b0';
 exports.build = build;
 
 /***/ }),
@@ -4131,7 +4321,7 @@ class FontFaceObject {
     isEvalSupported = true,
     disableFontFace = false,
     ignoreErrors = false,
-    onUnsupportedFeature,
+    onUnsupportedFeature = null,
     fontRegistry = null
   }) {
     this.compiledGlyphs = Object.create(null);
@@ -4191,9 +4381,11 @@ class FontFaceObject {
         throw ex;
       }
 
-      this._onUnsupportedFeature({
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath
-      });
+      if (this._onUnsupportedFeature) {
+        this._onUnsupportedFeature({
+          featureId: _util.UNSUPPORTED_FEATURES.errorFontGetPath
+        });
+      }
 
       (0, _util.warn)(`getPathGenerator - ignoring character: "${ex}".`);
       return this.compiledGlyphs[character] = function (c, size) {};
@@ -4317,8 +4509,6 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.AnnotationStorage = void 0;
 
-var _display_utils = __w_pdfjs_require__(1);
-
 var _util = __w_pdfjs_require__(2);
 
 class AnnotationStorage {
@@ -4329,15 +4519,7 @@ class AnnotationStorage {
     this.onResetModified = null;
   }
 
-  getValue(key, defaultValue) {
-    const obj = this._storage.get(key);
-
-    return obj !== undefined ? obj : defaultValue;
-  }
-
   getOrCreateValue(key, defaultValue) {
-    (0, _display_utils.deprecated)("Use getValue instead.");
-
     if (this._storage.has(key)) {
       return this._storage.get(key);
     }
@@ -4371,7 +4553,11 @@ class AnnotationStorage {
   }
 
   getAll() {
-    return this._storage.size > 0 ? (0, _util.objectFromMap)(this._storage) : null;
+    if (this._storage.size === 0) {
+      return null;
+    }
+
+    return (0, _util.objectFromEntries)(this._storage);
   }
 
   get size() {
@@ -4398,10 +4584,6 @@ class AnnotationStorage {
     }
   }
 
-  get serializable() {
-    return this._storage.size > 0 ? this._storage : null;
-  }
-
 }
 
 exports.AnnotationStorage = AnnotationStorage;
@@ -4451,7 +4633,6 @@ const MAX_GROUP_SIZE = 4096;
 const COMPILE_TYPE3_GLYPHS = true;
 const MAX_SIZE_TO_COMPILE = 1000;
 const FULL_CHUNK_HEIGHT = 16;
-const LINEWIDTH_SCALE_FACTOR = 1.000001;
 
 function addContextCurrentTransform(ctx) {
   if (!ctx.mozCurrentTransform) {
@@ -4462,24 +4643,8 @@ function addContextCurrentTransform(ctx) {
     ctx._originalTranslate = ctx.translate;
     ctx._originalTransform = ctx.transform;
     ctx._originalSetTransform = ctx.setTransform;
-    ctx._originalResetTransform = ctx.resetTransform;
     ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];
     ctx._transformStack = [];
-
-    try {
-      const desc = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(ctx), "lineWidth");
-      ctx._setLineWidth = desc.set;
-      ctx._getLineWidth = desc.get;
-      Object.defineProperty(ctx, "lineWidth", {
-        set: function setLineWidth(width) {
-          this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);
-        },
-        get: function getLineWidth() {
-          return this._getLineWidth();
-        }
-      });
-    } catch (_) {}
-
     Object.defineProperty(ctx, "mozCurrentTransform", {
       get: function getCurrentTransform() {
         return this._transformMatrix;
@@ -4551,12 +4716,6 @@ function addContextCurrentTransform(ctx) {
       ctx._originalSetTransform(a, b, c, d, e, f);
     };
 
-    ctx.resetTransform = function ctxResetTransform() {
-      this._transformMatrix = [1, 0, 0, 1, 0, 0];
-
-      ctx._originalResetTransform();
-    };
-
     ctx.rotate = function ctxRotate(angle) {
       const cosValue = Math.cos(angle);
       const sinValue = Math.sin(angle);
@@ -5811,7 +5970,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
     },
     setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
       this.current.textMatrix = [a, b, c, d, e, f];
-      this.current.textMatrixScale = Math.hypot(a, b);
+      this.current.textMatrixScale = Math.sqrt(a * a + b * b);
       this.current.x = this.current.lineX = 0;
       this.current.y = this.current.lineY = 0;
     },
@@ -6520,8 +6679,12 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
       this.save();
       ctx.scale(1 / width, -1 / height);
       const currentTransform = ctx.mozCurrentTransformInverse;
-      let widthScale = Math.max(Math.hypot(currentTransform[0], currentTransform[1]), 1);
-      let heightScale = Math.max(Math.hypot(currentTransform[2], currentTransform[3]), 1);
+      const a = currentTransform[0],
+            b = currentTransform[1];
+      let widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
+      const c = currentTransform[2],
+            d = currentTransform[3];
+      let heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
       let imgToPaint, tmpCanvas, tmpCtx;
 
       if (typeof HTMLElement === "function" && imgData instanceof HTMLElement || !imgData.data) {
@@ -6669,7 +6832,7 @@ const CanvasGraphics = function CanvasGraphicsClosure() {
         if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {
           this._cachedGetSinglePixelWidth = -(this._combinedScaleFactor * pixelHeight);
         } else if (absDet > Number.EPSILON) {
-          this._cachedGetSinglePixelWidth = pixelHeight;
+          this._cachedGetSinglePixelWidth = pixelHeight * 1.0000001;
         } else {
           this._cachedGetSinglePixelWidth = 1;
         }
@@ -7685,58 +7848,721 @@ class MessageHandler {
     }
   }
 
-  destroy() {
-    this.comObj.removeEventListener("message", this._onComObjOnMessage);
+  destroy() {
+    this.comObj.removeEventListener("message", this._onComObjOnMessage);
+  }
+
+}
+
+exports.MessageHandler = MessageHandler;
+
+/***/ }),
+/* 14 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.Metadata = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+var _xml_parser = __w_pdfjs_require__(15);
+
+class Metadata {
+  constructor(data) {
+    (0, _util.assert)(typeof data === "string", "Metadata: input is not a string");
+    data = this._repair(data);
+    const parser = new _xml_parser.SimpleXMLParser({
+      lowerCaseName: true
+    });
+    const xmlDocument = parser.parseFromString(data);
+    this._metadataMap = new Map();
+
+    if (xmlDocument) {
+      this._parse(xmlDocument);
+    }
+
+    this._data = data;
+  }
+
+  _repair(data) {
+    return data.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, function (all, codes) {
+      const bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
+        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
+      }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
+        switch (name) {
+          case "amp":
+            return "&";
+
+          case "apos":
+            return "'";
+
+          case "gt":
+            return ">";
+
+          case "lt":
+            return "<";
+
+          case "quot":
+            return '"';
+        }
+
+        throw new Error(`_repair: ${name} isn't defined.`);
+      });
+      let chars = "";
+
+      for (let i = 0, ii = bytes.length; i < ii; i += 2) {
+        const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+
+        if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
+          chars += String.fromCharCode(code);
+        } else {
+          chars += "&#x" + (0x10000 + code).toString(16).substring(1) + ";";
+        }
+      }
+
+      return ">" + chars;
+    });
+  }
+
+  _getSequence(entry) {
+    const name = entry.nodeName;
+
+    if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") {
+      return null;
+    }
+
+    return entry.childNodes.filter(node => node.nodeName === "rdf:li");
+  }
+
+  _getCreators(entry) {
+    if (entry.nodeName !== "dc:creator") {
+      return false;
+    }
+
+    if (!entry.hasChildNodes()) {
+      return true;
+    }
+
+    const seqNode = entry.childNodes[0];
+    const authors = this._getSequence(seqNode) || [];
+
+    this._metadataMap.set(entry.nodeName, authors.map(node => node.textContent.trim()));
+
+    return true;
+  }
+
+  _parse(xmlDocument) {
+    let rdf = xmlDocument.documentElement;
+
+    if (rdf.nodeName !== "rdf:rdf") {
+      rdf = rdf.firstChild;
+
+      while (rdf && rdf.nodeName !== "rdf:rdf") {
+        rdf = rdf.nextSibling;
+      }
+    }
+
+    if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
+      return;
+    }
+
+    for (const desc of rdf.childNodes) {
+      if (desc.nodeName !== "rdf:description") {
+        continue;
+      }
+
+      for (const entry of desc.childNodes) {
+        const name = entry.nodeName;
+
+        if (name === "#text") {
+          continue;
+        }
+
+        if (this._getCreators(entry)) {
+          continue;
+        }
+
+        this._metadataMap.set(name, entry.textContent.trim());
+      }
+    }
+  }
+
+  getRaw() {
+    return this._data;
+  }
+
+  get(name) {
+    return this._metadataMap.get(name) ?? null;
+  }
+
+  getAll() {
+    return (0, _util.objectFromEntries)(this._metadataMap);
+  }
+
+  has(name) {
+    return this._metadataMap.has(name);
+  }
+
+}
+
+exports.Metadata = Metadata;
+
+/***/ }),
+/* 15 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
+
+var _util = __w_pdfjs_require__(2);
+
+const XMLParserErrorCode = {
+  NoError: 0,
+  EndOfDocument: -1,
+  UnterminatedCdat: -2,
+  UnterminatedXmlDeclaration: -3,
+  UnterminatedDoctypeDeclaration: -4,
+  UnterminatedComment: -5,
+  MalformedElement: -6,
+  OutOfMemory: -7,
+  UnterminatedAttributeValue: -8,
+  UnterminatedElement: -9,
+  ElementNeverBegun: -10
+};
+
+function isWhitespace(s, index) {
+  const ch = s[index];
+  return ch === " " || ch === "\n" || ch === "\r" || ch === "\t";
+}
+
+function isWhitespaceString(s) {
+  for (let i = 0, ii = s.length; i < ii; i++) {
+    if (!isWhitespace(s, i)) {
+      return false;
+    }
+  }
+
+  return true;
+}
+
+class XMLParserBase {
+  _resolveEntities(s) {
+    return s.replace(/&([^;]+);/g, (all, entity) => {
+      if (entity.substring(0, 2) === "#x") {
+        return String.fromCodePoint(parseInt(entity.substring(2), 16));
+      } else if (entity.substring(0, 1) === "#") {
+        return String.fromCodePoint(parseInt(entity.substring(1), 10));
+      }
+
+      switch (entity) {
+        case "lt":
+          return "<";
+
+        case "gt":
+          return ">";
+
+        case "amp":
+          return "&";
+
+        case "quot":
+          return '"';
+      }
+
+      return this.onResolveEntity(entity);
+    });
+  }
+
+  _parseContent(s, start) {
+    const attributes = [];
+    let pos = start;
+
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
+      }
+    }
+
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
+    }
+
+    const name = s.substring(start, pos);
+    skipWs();
+
+    while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") {
+      skipWs();
+      let attrName = "",
+          attrValue = "";
+
+      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") {
+        attrName += s[pos];
+        ++pos;
+      }
+
+      skipWs();
+
+      if (s[pos] !== "=") {
+        return null;
+      }
+
+      ++pos;
+      skipWs();
+      const attrEndChar = s[pos];
+
+      if (attrEndChar !== '"' && attrEndChar !== "'") {
+        return null;
+      }
+
+      const attrEndIndex = s.indexOf(attrEndChar, ++pos);
+
+      if (attrEndIndex < 0) {
+        return null;
+      }
+
+      attrValue = s.substring(pos, attrEndIndex);
+      attributes.push({
+        name: attrName,
+        value: this._resolveEntities(attrValue)
+      });
+      pos = attrEndIndex + 1;
+      skipWs();
+    }
+
+    return {
+      name,
+      attributes,
+      parsed: pos - start
+    };
+  }
+
+  _parseProcessingInstruction(s, start) {
+    let pos = start;
+
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
+      }
+    }
+
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
+    }
+
+    const name = s.substring(start, pos);
+    skipWs();
+    const attrStart = pos;
+
+    while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) {
+      ++pos;
+    }
+
+    const value = s.substring(attrStart, pos);
+    return {
+      name,
+      value,
+      parsed: pos - start
+    };
+  }
+
+  parseXml(s) {
+    let i = 0;
+
+    while (i < s.length) {
+      const ch = s[i];
+      let j = i;
+
+      if (ch === "<") {
+        ++j;
+        const ch2 = s[j];
+        let q;
+
+        switch (ch2) {
+          case "/":
+            ++j;
+            q = s.indexOf(">", j);
+
+            if (q < 0) {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
+
+            this.onEndElement(s.substring(j, q));
+            j = q + 1;
+            break;
+
+          case "?":
+            ++j;
+
+            const pi = this._parseProcessingInstruction(s, j);
+
+            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") {
+              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
+              return;
+            }
+
+            this.onPi(pi.name, pi.value);
+            j += pi.parsed + 2;
+            break;
+
+          case "!":
+            if (s.substring(j + 1, j + 3) === "--") {
+              q = s.indexOf("-->", j + 3);
+
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedComment);
+                return;
+              }
+
+              this.onComment(s.substring(j + 3, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "[CDATA[") {
+              q = s.indexOf("]]>", j + 8);
+
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedCdat);
+                return;
+              }
+
+              this.onCdata(s.substring(j + 8, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "DOCTYPE") {
+              const q2 = s.indexOf("[", j + 8);
+              let complexDoctype = false;
+              q = s.indexOf(">", j + 8);
+
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                return;
+              }
+
+              if (q2 > 0 && q > q2) {
+                q = s.indexOf("]>", j + 8);
+
+                if (q < 0) {
+                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                  return;
+                }
+
+                complexDoctype = true;
+              }
+
+              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
+              this.onDoctype(doctypeContent);
+              j = q + (complexDoctype ? 2 : 1);
+            } else {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
+            }
+
+            break;
+
+          default:
+            const content = this._parseContent(s, j);
+
+            if (content === null) {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
+            }
+
+            let isClosed = false;
+
+            if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") {
+              isClosed = true;
+            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
+
+            this.onBeginElement(content.name, content.attributes, isClosed);
+            j += content.parsed + (isClosed ? 2 : 1);
+            break;
+        }
+      } else {
+        while (j < s.length && s[j] !== "<") {
+          j++;
+        }
+
+        const text = s.substring(i, j);
+        this.onText(this._resolveEntities(text));
+      }
+
+      i = j;
+    }
+  }
+
+  onResolveEntity(name) {
+    return `&${name};`;
+  }
+
+  onPi(name, value) {}
+
+  onComment(text) {}
+
+  onCdata(text) {}
+
+  onDoctype(doctypeContent) {}
+
+  onText(text) {}
+
+  onBeginElement(name, attributes, isEmpty) {}
+
+  onEndElement(name) {}
+
+  onError(code) {}
+
+}
+
+class SimpleDOMNode {
+  constructor(nodeName, nodeValue) {
+    this.nodeName = nodeName;
+    this.nodeValue = nodeValue;
+    Object.defineProperty(this, "parentNode", {
+      value: null,
+      writable: true
+    });
+  }
+
+  get firstChild() {
+    return this.childNodes && this.childNodes[0];
+  }
+
+  get nextSibling() {
+    const childNodes = this.parentNode.childNodes;
+
+    if (!childNodes) {
+      return undefined;
+    }
+
+    const index = childNodes.indexOf(this);
+
+    if (index === -1) {
+      return undefined;
+    }
+
+    return childNodes[index + 1];
+  }
+
+  get textContent() {
+    if (!this.childNodes) {
+      return this.nodeValue || "";
+    }
+
+    return this.childNodes.map(function (child) {
+      return child.textContent;
+    }).join("");
+  }
+
+  hasChildNodes() {
+    return this.childNodes && this.childNodes.length > 0;
+  }
+
+  searchNode(paths, pos) {
+    if (pos >= paths.length) {
+      return this;
+    }
+
+    const component = paths[pos];
+    const stack = [];
+    let node = this;
+
+    while (true) {
+      if (component.name === node.nodeName) {
+        if (component.pos === 0) {
+          const res = node.searchNode(paths, pos + 1);
+
+          if (res !== null) {
+            return res;
+          }
+        } else if (stack.length === 0) {
+          return null;
+        } else {
+          const [parent] = stack.pop();
+          let siblingPos = 0;
+
+          for (const child of parent.childNodes) {
+            if (component.name === child.nodeName) {
+              if (siblingPos === component.pos) {
+                return child.searchNode(paths, pos + 1);
+              }
+
+              siblingPos++;
+            }
+          }
+
+          return node.searchNode(paths, pos + 1);
+        }
+      }
+
+      if (node.childNodes && node.childNodes.length !== 0) {
+        stack.push([node, 0]);
+        node = node.childNodes[0];
+      } else if (stack.length === 0) {
+        return null;
+      } else {
+        while (stack.length !== 0) {
+          const [parent, currentPos] = stack.pop();
+          const newPos = currentPos + 1;
+
+          if (newPos < parent.childNodes.length) {
+            stack.push([parent, newPos]);
+            node = parent.childNodes[newPos];
+            break;
+          }
+        }
+
+        if (stack.length === 0) {
+          return null;
+        }
+      }
+    }
+  }
+
+  dump(buffer) {
+    if (this.nodeName === "#text") {
+      buffer.push((0, _util.encodeToXmlString)(this.nodeValue));
+      return;
+    }
+
+    buffer.push(`<${this.nodeName}`);
+
+    if (this.attributes) {
+      for (const attribute of this.attributes) {
+        buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`);
+      }
+    }
+
+    if (this.hasChildNodes()) {
+      buffer.push(">");
+
+      for (const child of this.childNodes) {
+        child.dump(buffer);
+      }
+
+      buffer.push(`</${this.nodeName}>`);
+    } else if (this.nodeValue) {
+      buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
+    } else {
+      buffer.push("/>");
+    }
+  }
+
+}
+
+exports.SimpleDOMNode = SimpleDOMNode;
+
+class SimpleXMLParser extends XMLParserBase {
+  constructor({
+    hasAttributes = false,
+    lowerCaseName = false
+  }) {
+    super();
+    this._currentFragment = null;
+    this._stack = null;
+    this._errorCode = XMLParserErrorCode.NoError;
+    this._hasAttributes = hasAttributes;
+    this._lowerCaseName = lowerCaseName;
+  }
+
+  parseFromString(data) {
+    this._currentFragment = [];
+    this._stack = [];
+    this._errorCode = XMLParserErrorCode.NoError;
+    this.parseXml(data);
+
+    if (this._errorCode !== XMLParserErrorCode.NoError) {
+      return undefined;
+    }
+
+    const [documentElement] = this._currentFragment;
+
+    if (!documentElement) {
+      return undefined;
+    }
+
+    return {
+      documentElement
+    };
+  }
+
+  onResolveEntity(name) {
+    switch (name) {
+      case "apos":
+        return "'";
+    }
+
+    return super.onResolveEntity(name);
+  }
+
+  onText(text) {
+    if (isWhitespaceString(text)) {
+      return;
+    }
+
+    const node = new SimpleDOMNode("#text", text);
+
+    this._currentFragment.push(node);
   }
 
-}
+  onCdata(text) {
+    const node = new SimpleDOMNode("#text", text);
 
-exports.MessageHandler = MessageHandler;
+    this._currentFragment.push(node);
+  }
 
-/***/ }),
-/* 14 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+  onBeginElement(name, attributes, isEmpty) {
+    if (this._lowerCaseName) {
+      name = name.toLowerCase();
+    }
 
+    const node = new SimpleDOMNode(name);
+    node.childNodes = [];
 
+    if (this._hasAttributes) {
+      node.attributes = attributes;
+    }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Metadata = void 0;
+    this._currentFragment.push(node);
 
-var _util = __w_pdfjs_require__(2);
+    if (isEmpty) {
+      return;
+    }
 
-class Metadata {
-  constructor({
-    parsedData,
-    rawData
-  }) {
-    this._metadataMap = parsedData;
-    this._data = rawData;
-  }
+    this._stack.push(this._currentFragment);
 
-  getRaw() {
-    return this._data;
+    this._currentFragment = node.childNodes;
   }
 
-  get(name) {
-    return this._metadataMap.get(name) ?? null;
-  }
+  onEndElement(name) {
+    this._currentFragment = this._stack.pop() || [];
+    const lastElement = this._currentFragment[this._currentFragment.length - 1];
 
-  getAll() {
-    return (0, _util.objectFromMap)(this._metadataMap);
+    if (!lastElement) {
+      return;
+    }
+
+    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
+      lastElement.childNodes[i].parentNode = lastElement;
+    }
   }
 
-  has(name) {
-    return this._metadataMap.has(name);
+  onError(code) {
+    this._errorCode = code;
   }
 
 }
 
-exports.Metadata = Metadata;
+exports.SimpleXMLParser = SimpleXMLParser;
 
 /***/ }),
-/* 15 */
+/* 16 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -7888,7 +8714,11 @@ class OptionalContentConfig {
   }
 
   getGroups() {
-    return this._groups.size > 0 ? (0, _util.objectFromMap)(this._groups) : null;
+    if (!this._groups.size) {
+      return null;
+    }
+
+    return (0, _util.objectFromEntries)(this._groups);
   }
 
   getGroup(id) {
@@ -7900,7 +8730,7 @@ class OptionalContentConfig {
 exports.OptionalContentConfig = OptionalContentConfig;
 
 /***/ }),
-/* 16 */
+/* 17 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -7912,14 +8742,11 @@ exports.PDFDataTransportStream = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _display_utils = __w_pdfjs_require__(1);
-
 class PDFDataTransportStream {
   constructor(params, pdfDataRangeTransport) {
     (0, _util.assert)(pdfDataRangeTransport, 'PDFDataTransportStream - missing required 
"pdfDataRangeTransport" argument.');
     this._queuedChunks = [];
     this._progressiveDone = params.progressiveDone || false;
-    this._contentDispositionFilename = params.contentDispositionFilename || null;
     const initialData = params.initialData;
 
     if (initialData?.length > 0) {
@@ -8031,7 +8858,7 @@ class PDFDataTransportStream {
     (0, _util.assert)(!this._fullRequestReader, "PDFDataTransportStream.getFullReader can only be called 
once.");
     const queuedChunks = this._queuedChunks;
     this._queuedChunks = null;
-    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone, 
this._contentDispositionFilename);
+    return new PDFDataTransportStreamReader(this, queuedChunks, this._progressiveDone);
   }
 
   getRangeReader(begin, end) {
@@ -8067,10 +8894,10 @@ class PDFDataTransportStream {
 exports.PDFDataTransportStream = PDFDataTransportStream;
 
 class PDFDataTransportStreamReader {
-  constructor(stream, queuedChunks, progressiveDone = false, contentDispositionFilename = null) {
+  constructor(stream, queuedChunks, progressiveDone = false) {
     this._stream = stream;
     this._done = progressiveDone || false;
-    this._filename = (0, _display_utils.isPdfFile)(contentDispositionFilename) ? contentDispositionFilename 
: null;
+    this._filename = null;
     this._queuedChunks = queuedChunks || [];
     this._loaded = 0;
 
@@ -8257,7 +9084,7 @@ class PDFDataTransportStreamRangeReader {
 }
 
 /***/ }),
-/* 17 */
+/* 18 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -8700,7 +9527,7 @@ const WebGLUtils = function WebGLUtilsClosure() {
 }();
 
 /***/ }),
-/* 18 */
+/* 19 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -8716,7 +9543,7 @@ var _util = __w_pdfjs_require__(2);
 
 var _annotation_storage = __w_pdfjs_require__(8);
 
-var _scripting_utils = __w_pdfjs_require__(19);
+var _scripting_utils = __w_pdfjs_require__(20);
 
 class AnnotationElementFactory {
   static create(parameters) {
@@ -9141,43 +9968,6 @@ class WidgetAnnotationElement extends AnnotationElement {
     }
   }
 
-  _setColor(event) {
-    const {
-      detail,
-      target
-    } = event;
-    const {
-      style
-    } = target;
-
-    for (const name of ["bgColor", "fillColor", "fgColor", "textColor", "borderColor", "strokeColor"]) {
-      let color = detail[name];
-
-      if (!color) {
-        continue;
-      }
-
-      color = _scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
-
-      switch (name) {
-        case "bgColor":
-        case "fillColor":
-          style.backgroundColor = color;
-          break;
-
-        case "fgColor":
-        case "textColor":
-          style.color = color;
-          break;
-
-        case "borderColor":
-        case "strokeColor":
-          style.borderColor = color;
-          break;
-      }
-    }
-  }
-
 }
 
 class TextWidgetAnnotationElement extends WidgetAnnotationElement {
@@ -9195,11 +9985,9 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
     let element = null;
 
     if (this.renderInteractiveForms) {
-      const storedData = storage.getValue(id, {
-        value: this.data.fieldValue,
-        valueAsString: this.data.fieldValue
-      });
-      const textContent = storedData.valueAsString || storedData.value || "";
+      const textContent = storage.getOrCreateValue(id, {
+        value: this.data.fieldValue
+      }).value;
       const elementData = {
         userValue: null,
         formattedValue: null,
@@ -9239,7 +10027,7 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
             event.target.value = elementData.userValue;
           }
         });
-        element.addEventListener("updatefromsandbox", event => {
+        element.addEventListener("updatefromsandbox", function (event) {
           const {
             detail
           } = event;
@@ -9294,47 +10082,34 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
               if (selStart >= 0 && selEnd < event.target.value.length) {
                 event.target.setSelectionRange(selStart, selEnd);
               }
+            },
+
+            strokeColor() {
+              const color = detail.strokeColor;
+              event.target.style.color = 
_scripting_utils.ColorConverters[`${color[0]}_HTML`](color.slice(1));
             }
 
           };
           Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
-
-          this._setColor(event);
         });
-        element.addEventListener("keydown", event => {
-          elementData.beforeInputValue = event.target.value;
-          let commitKey = -1;
-
-          if (event.key === "Escape") {
-            commitKey = 0;
-          } else if (event.key === "Enter") {
-            commitKey = 2;
-          } else if (event.key === "Tab") {
-            commitKey = 3;
-          }
 
-          if (commitKey === -1) {
-            return;
-          }
+        if (this.data.actions) {
+          element.addEventListener("keydown", event => {
+            elementData.beforeInputValue = event.target.value;
+            let commitKey = -1;
+
+            if (event.key === "Escape") {
+              commitKey = 0;
+            } else if (event.key === "Enter") {
+              commitKey = 2;
+            } else if (event.key === "Tab") {
+              commitKey = 3;
+            }
 
-          elementData.userValue = event.target.value;
-          this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
-            source: this,
-            detail: {
-              id,
-              name: "Keystroke",
-              value: event.target.value,
-              willCommit: true,
-              commitKey,
-              selStart: event.target.selectionStart,
-              selEnd: event.target.selectionEnd
+            if (commitKey === -1) {
+              return;
             }
-          });
-        });
-        const _blurListener = blurListener;
-        blurListener = null;
-        element.addEventListener("blur", event => {
-          if (this._mouseState.isDown) {
+
             elementData.userValue = event.target.value;
             this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
               source: this,
@@ -9343,53 +10118,72 @@ class TextWidgetAnnotationElement extends WidgetAnnotationElement {
                 name: "Keystroke",
                 value: event.target.value,
                 willCommit: true,
-                commitKey: 1,
+                commitKey,
                 selStart: event.target.selectionStart,
                 selEnd: event.target.selectionEnd
               }
             });
-          }
+          });
+          const _blurListener = blurListener;
+          blurListener = null;
+          element.addEventListener("blur", event => {
+            if (this._mouseState.isDown) {
+              elementData.userValue = event.target.value;
+              this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+                source: this,
+                detail: {
+                  id,
+                  name: "Keystroke",
+                  value: event.target.value,
+                  willCommit: true,
+                  commitKey: 1,
+                  selStart: event.target.selectionStart,
+                  selEnd: event.target.selectionEnd
+                }
+              });
+            }
 
-          _blurListener(event);
-        });
-        element.addEventListener("mousedown", event => {
-          elementData.beforeInputValue = event.target.value;
-          elementData.beforeInputSelectionRange = null;
-        });
-        element.addEventListener("keyup", event => {
-          if (event.target.selectionStart === event.target.selectionEnd) {
+            _blurListener(event);
+          });
+          element.addEventListener("mousedown", event => {
+            elementData.beforeInputValue = event.target.value;
             elementData.beforeInputSelectionRange = null;
-          }
-        });
-        element.addEventListener("select", event => {
-          elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
-        });
-
-        if (this.data.actions?.Keystroke) {
-          element.addEventListener("input", event => {
-            let selStart = -1;
-            let selEnd = -1;
-
-            if (elementData.beforeInputSelectionRange) {
-              [selStart, selEnd] = elementData.beforeInputSelectionRange;
+          });
+          element.addEventListener("keyup", event => {
+            if (event.target.selectionStart === event.target.selectionEnd) {
+              elementData.beforeInputSelectionRange = null;
             }
+          });
+          element.addEventListener("select", event => {
+            elementData.beforeInputSelectionRange = [event.target.selectionStart, event.target.selectionEnd];
+          });
 
-            this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
-              source: this,
-              detail: {
-                id,
-                name: "Keystroke",
-                value: elementData.beforeInputValue,
-                change: event.data,
-                willCommit: false,
-                selStart,
-                selEnd
+          if ("Keystroke" in this.data.actions) {
+            element.addEventListener("input", event => {
+              let selStart = -1;
+              let selEnd = -1;
+
+              if (elementData.beforeInputSelectionRange) {
+                [selStart, selEnd] = elementData.beforeInputSelectionRange;
               }
+
+              this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
+                source: this,
+                detail: {
+                  id,
+                  name: "Keystroke",
+                  value: elementData.beforeInputValue,
+                  change: event.data,
+                  willCommit: false,
+                  selStart,
+                  selEnd
+                }
+              });
             });
-          });
-        }
+          }
 
-        this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse Down"], 
["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => 
event.target.value);
+          this._setEventListeners(element, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse 
Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => 
event.target.value);
+        }
       }
 
       if (blurListener) {
@@ -9454,8 +10248,8 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
     const storage = this.annotationStorage;
     const data = this.data;
     const id = data.id;
-    const value = storage.getValue(id, {
-      value: data.fieldValue && (data.exportValue && data.exportValue === data.fieldValue || 
!data.exportValue && data.fieldValue !== "Off")
+    const value = storage.getOrCreateValue(id, {
+      value: data.fieldValue && data.fieldValue !== "Off"
     }).value;
     this.container.className = "buttonWidgetAnnotation checkBox";
     const element = document.createElement("input");
@@ -9517,8 +10311,6 @@ class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
 
         };
         Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
-
-        this._setColor(event);
       });
 
       this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
@@ -9542,7 +10334,7 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
     const storage = this.annotationStorage;
     const data = this.data;
     const id = data.id;
-    const value = storage.getValue(id, {
+    const value = storage.getOrCreateValue(id, {
       value: data.fieldValue === data.buttonValue
     }).value;
     const element = document.createElement("input");
@@ -9554,6 +10346,7 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
       element.setAttribute("checked", true);
     }
 
+    element.setAttribute("pdfButtonValue", data.buttonValue);
     element.setAttribute("id", id);
     element.addEventListener("change", function (event) {
       const {
@@ -9574,21 +10367,27 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
     });
 
     if (this.enableScripting && this.hasJSActions) {
-      const pdfButtonValue = data.buttonValue;
       element.addEventListener("updatefromsandbox", event => {
         const {
           detail
         } = event;
         const actions = {
           value() {
-            const checked = pdfButtonValue === detail.value;
+            const fieldValue = detail.value;
 
             for (const radio of document.getElementsByName(event.target.name)) {
               const radioId = radio.getAttribute("id");
-              radio.checked = radioId === id && checked;
-              storage.setValue(radioId, {
-                value: radio.checked
-              });
+
+              if (fieldValue === radio.getAttribute("pdfButtonValue")) {
+                radio.setAttribute("checked", true);
+                storage.setValue(radioId, {
+                  value: true
+                });
+              } else {
+                storage.setValue(radioId, {
+                  value: false
+                });
+              }
             }
           },
 
@@ -9611,8 +10410,6 @@ class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
 
         };
         Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
-
-        this._setColor(event);
       });
 
       this._setEventListeners(element, [["change", "Validate"], ["change", "Action"], ["focus", "Focus"], 
["blur", "Blur"], ["mousedown", "Mouse Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], 
["mouseup", "Mouse Up"]], event => event.target.checked);
@@ -9649,7 +10446,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
     this.container.className = "choiceWidgetAnnotation";
     const storage = this.annotationStorage;
     const id = this.data.id;
-    storage.getValue(id, {
+    storage.getOrCreateValue(id, {
       value: this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined
     });
     const selectElement = document.createElement("select");
@@ -9677,26 +10474,10 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
       selectElement.appendChild(optionElement);
     }
 
-    const getValue = (event, isExport) => {
-      const name = isExport ? "value" : "textContent";
-      const options = event.target.options;
-
-      if (!event.target.multiple) {
-        return options.selectedIndex === -1 ? null : options[options.selectedIndex][name];
-      }
-
-      return Array.prototype.filter.call(options, option => option.selected).map(option => option[name]);
-    };
-
-    const getItems = event => {
+    function getValue(event) {
       const options = event.target.options;
-      return Array.prototype.map.call(options, option => {
-        return {
-          displayValue: option.textContent,
-          exportValue: option.value
-        };
-      });
-    };
+      return options[options.selectedIndex].value;
+    }
 
     if (this.enableScripting && this.hasJSActions) {
       selectElement.addEventListener("updatefromsandbox", event => {
@@ -9705,107 +10486,16 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
         } = event;
         const actions = {
           value() {
-            const options = selectElement.options;
+            const options = event.target.options;
             const value = detail.value;
-            const values = new Set(Array.isArray(value) ? value : [value]);
-            Array.prototype.forEach.call(options, option => {
-              option.selected = values.has(option.value);
-            });
-            storage.setValue(id, {
-              value: getValue(event, true)
-            });
-          },
-
-          multipleSelection() {
-            selectElement.multiple = true;
-          },
-
-          remove() {
-            const options = selectElement.options;
-            const index = detail.remove;
-            options[index].selected = false;
-            selectElement.remove(index);
-
-            if (options.length > 0) {
-              const i = Array.prototype.findIndex.call(options, option => option.selected);
-
-              if (i === -1) {
-                options[0].selected = true;
-              }
-            }
-
-            storage.setValue(id, {
-              value: getValue(event, true),
-              items: getItems(event)
-            });
-          },
+            const i = options.indexOf(value);
 
-          clear() {
-            while (selectElement.length !== 0) {
-              selectElement.remove(0);
-            }
-
-            storage.setValue(id, {
-              value: null,
-              items: []
-            });
-          },
-
-          insert() {
-            const {
-              index,
-              displayValue,
-              exportValue
-            } = detail.insert;
-            const optionElement = document.createElement("option");
-            optionElement.textContent = displayValue;
-            optionElement.value = exportValue;
-            selectElement.insertBefore(optionElement, selectElement.children[index]);
-            storage.setValue(id, {
-              value: getValue(event, true),
-              items: getItems(event)
-            });
-          },
-
-          items() {
-            const {
-              items
-            } = detail;
-
-            while (selectElement.length !== 0) {
-              selectElement.remove(0);
-            }
-
-            for (const item of items) {
-              const {
-                displayValue,
-                exportValue
-              } = item;
-              const optionElement = document.createElement("option");
-              optionElement.textContent = displayValue;
-              optionElement.value = exportValue;
-              selectElement.appendChild(optionElement);
-            }
-
-            if (selectElement.options.length > 0) {
-              selectElement.options[0].selected = true;
+            if (i !== -1) {
+              options.selectedIndex = i;
+              storage.setValue(id, {
+                value
+              });
             }
-
-            storage.setValue(id, {
-              value: getValue(event, true),
-              items: getItems(event)
-            });
-          },
-
-          indices() {
-            const indices = new Set(detail.indices);
-            const options = event.target.options;
-            Array.prototype.forEach.call(options, (option, i) => {
-              option.selected = indices.has(i);
-            });
-            storage.setValue(id, {
-              value: getValue(event, true)
-            });
           },
 
           focus() {
@@ -9827,22 +10517,18 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
 
         };
         Object.keys(detail).filter(name => name in actions).forEach(name => actions[name]());
-
-        this._setColor(event);
       });
       selectElement.addEventListener("input", event => {
-        const exportValue = getValue(event, true);
-        const value = getValue(event, false);
+        const value = getValue(event);
         storage.setValue(id, {
-          value: exportValue
+          value
         });
         this.linkService.eventBus?.dispatch("dispatcheventinsandbox", {
           source: this,
           detail: {
             id,
             name: "Keystroke",
-            value,
-            changeEx: exportValue,
+            changeEx: value,
             willCommit: true,
             commitKey: 1,
             keyDown: false
@@ -9850,7 +10536,7 @@ class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
         });
       });
 
-      this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse 
Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"], ["input", 
"Action"]], event => event.target.checked);
+      this._setEventListeners(selectElement, [["focus", "Focus"], ["blur", "Blur"], ["mousedown", "Mouse 
Down"], ["mouseenter", "Mouse Enter"], ["mouseleave", "Mouse Exit"], ["mouseup", "Mouse Up"]], event => 
event.target.checked);
     } else {
       selectElement.addEventListener("input", function (event) {
         storage.setValue(id, {
@@ -9928,7 +10614,7 @@ class PopupElement {
     const wrapper = document.createElement("div");
     wrapper.className = "popupWrapper";
     this.hideElement = this.hideWrapper ? wrapper : this.container;
-    this.hideElement.hidden = true;
+    this.hideElement.setAttribute("hidden", true);
     const popup = document.createElement("div");
     popup.className = "popup";
     const color = this.color;
@@ -10004,8 +10690,8 @@ class PopupElement {
       this.pinned = true;
     }
 
-    if (this.hideElement.hidden) {
-      this.hideElement.hidden = false;
+    if (this.hideElement.hasAttribute("hidden")) {
+      this.hideElement.removeAttribute("hidden");
       this.container.style.zIndex += 1;
     }
   }
@@ -10015,8 +10701,8 @@ class PopupElement {
       this.pinned = false;
     }
 
-    if (!this.hideElement.hidden && !this.pinned) {
-      this.hideElement.hidden = true;
+    if (!this.hideElement.hasAttribute("hidden") && !this.pinned) {
+      this.hideElement.setAttribute("hidden", true);
       this.container.style.zIndex -= 1;
     }
   }
@@ -10416,7 +11102,12 @@ class FileAttachmentAnnotationElement extends AnnotationElement {
   }
 
   _download() {
-    this.downloadManager?.openOrDownloadData(this.container, this.content, this.filename);
+    if (!this.downloadManager) {
+      (0, _util.warn)("Download cannot be started due to unavailable download manager");
+      return;
+    }
+
+    this.downloadManager.downloadData(this.content, this.filename, "");
   }
 
 }
@@ -10452,7 +11143,7 @@ class AnnotationLayer {
         linkService: parameters.linkService,
         downloadManager: parameters.downloadManager,
         imageResourcesPath: parameters.imageResourcesPath || "",
-        renderInteractiveForms: parameters.renderInteractiveForms !== false,
+        renderInteractiveForms: typeof parameters.renderInteractiveForms === "boolean" ? 
parameters.renderInteractiveForms : true,
         svgFactory: new _display_utils.DOMSVGFactory(),
         annotationStorage: parameters.annotationStorage || new _annotation_storage.AnnotationStorage(),
         enableScripting: parameters.enableScripting,
@@ -10497,7 +11188,7 @@ class AnnotationLayer {
       }
     }
 
-    parameters.div.hidden = false;
+    parameters.div.removeAttribute("hidden");
   }
 
 }
@@ -10505,7 +11196,7 @@ class AnnotationLayer {
 exports.AnnotationLayer = AnnotationLayer;
 
 /***/ }),
-/* 19 */
+/* 20 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -10573,7 +11264,7 @@ class ColorConverters {
 exports.ColorConverters = ColorConverters;
 
 /***/ }),
-/* 20 */
+/* 21 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -10587,73 +11278,13 @@ var _util = __w_pdfjs_require__(2);
 
 const renderTextLayer = function renderTextLayerClosure() {
   const MAX_TEXT_DIVS_TO_RENDER = 100000;
-  const DEFAULT_FONT_SIZE = 30;
-  const DEFAULT_FONT_ASCENT = 0.8;
-  const ascentCache = new Map();
   const NonWhitespaceRegexp = /\S/;
 
   function isAllWhitespace(str) {
     return !NonWhitespaceRegexp.test(str);
   }
 
-  function getAscent(fontFamily, ctx) {
-    const cachedAscent = ascentCache.get(fontFamily);
-
-    if (cachedAscent) {
-      return cachedAscent;
-    }
-
-    ctx.save();
-    ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;
-    const metrics = ctx.measureText("");
-    let ascent = metrics.fontBoundingBoxAscent;
-    let descent = Math.abs(metrics.fontBoundingBoxDescent);
-
-    if (ascent) {
-      ctx.restore();
-      const ratio = ascent / (ascent + descent);
-      ascentCache.set(fontFamily, ratio);
-      return ratio;
-    }
-
-    ctx.strokeStyle = "red";
-    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
-    ctx.strokeText("g", 0, 0);
-    let pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
-    descent = 0;
-
-    for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {
-      if (pixels[i] > 0) {
-        descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);
-        break;
-      }
-    }
-
-    ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);
-    ctx.strokeText("A", 0, DEFAULT_FONT_SIZE);
-    pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;
-    ascent = 0;
-
-    for (let i = 0, ii = pixels.length; i < ii; i += 4) {
-      if (pixels[i] > 0) {
-        ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);
-        break;
-      }
-    }
-
-    ctx.restore();
-
-    if (ascent) {
-      const ratio = ascent / (ascent + descent);
-      ascentCache.set(fontFamily, ratio);
-      return ratio;
-    }
-
-    ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);
-    return DEFAULT_FONT_ASCENT;
-  }
-
-  function appendText(task, geom, styles, ctx) {
+  function appendText(task, geom, styles) {
     const textDiv = document.createElement("span");
     const textDivProperties = {
       angle: 0,
@@ -10686,8 +11317,15 @@ const renderTextLayer = function renderTextLayerClosure() {
       angle += Math.PI / 2;
     }
 
-    const fontHeight = Math.hypot(tx[2], tx[3]);
-    const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);
+    const fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
+    let fontAscent = fontHeight;
+
+    if (style.ascent) {
+      fontAscent = style.ascent * fontAscent;
+    } else if (style.descent) {
+      fontAscent = (1 + style.descent) * fontAscent;
+    }
+
     let left, top;
 
     if (angle === 0) {
@@ -10703,7 +11341,6 @@ const renderTextLayer = function renderTextLayerClosure() {
     textDiv.style.fontSize = `${fontHeight}px`;
     textDiv.style.fontFamily = style.fontFamily;
     textDiv.textContent = geom.str;
-    textDiv.dir = geom.dir;
 
     if (task._fontInspectorEnabled) {
       textDiv.dataset.fontName = geom.fontName;
@@ -11125,7 +11762,7 @@ const renderTextLayer = function renderTextLayerClosure() {
       for (let i = 0, len = items.length; i < len; i++) {
         this._textContentItemsStr.push(items[i].str);
 
-        appendText(this, items[i], styleCache, this._layoutTextCtx);
+        appendText(this, items[i], styleCache);
       }
     },
 
@@ -11183,7 +11820,6 @@ const renderTextLayer = function renderTextLayerClosure() {
 
       const canvas = this._document.createElement("canvas");
 
-      canvas.height = canvas.width = DEFAULT_FONT_SIZE;
       canvas.mozOpaque = true;
       this._layoutTextCtx = canvas.getContext("2d", {
         alpha: false
@@ -11325,7 +11961,7 @@ const renderTextLayer = function renderTextLayerClosure() {
 exports.renderTextLayer = renderTextLayer;
 
 /***/ }),
-/* 21 */
+/* 22 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -12001,7 +12637,7 @@ exports.SVGGraphics = SVGGraphics;
     setTextMatrix(a, b, c, d, e, f) {
       const current = this.current;
       current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
-      current.textMatrixScale = Math.hypot(a, b);
+      current.textMatrixScale = Math.sqrt(a * a + b * b);
       current.x = current.lineX = 0;
       current.y = current.lineY = 0;
       current.xcoords = [];
@@ -12849,95 +13485,6 @@ exports.SVGGraphics = SVGGraphics;
   };
 }
 
-/***/ }),
-/* 22 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XfaLayer = void 0;
-
-class XfaLayer {
-  static setAttributes(html, attrs) {
-    for (const [key, value] of Object.entries(attrs)) {
-      if (value === null || value === undefined) {
-        continue;
-      }
-
-      if (key !== "style") {
-        html.setAttribute(key, value);
-      } else {
-        Object.assign(html.style, value);
-      }
-    }
-  }
-
-  static render(parameters) {
-    const root = parameters.xfa;
-    const rootHtml = document.createElement(root.name);
-
-    if (root.attributes) {
-      XfaLayer.setAttributes(rootHtml, root.attributes);
-    }
-
-    const stack = [[root, -1, rootHtml]];
-    const rootDiv = parameters.div;
-    rootDiv.appendChild(rootHtml);
-    const coeffs = parameters.viewport.transform.join(",");
-    rootDiv.style.transform = `matrix(${coeffs})`;
-    rootDiv.setAttribute("class", "xfaLayer xfaFont");
-
-    while (stack.length > 0) {
-      const [parent, i, html] = stack[stack.length - 1];
-
-      if (i + 1 === parent.children.length) {
-        stack.pop();
-        continue;
-      }
-
-      const child = parent.children[++stack[stack.length - 1][1]];
-
-      if (child === null) {
-        continue;
-      }
-
-      const {
-        name
-      } = child;
-
-      if (name === "#text") {
-        html.appendChild(document.createTextNode(child.value));
-        continue;
-      }
-
-      const childHtml = document.createElement(name);
-      html.appendChild(childHtml);
-
-      if (child.attributes) {
-        XfaLayer.setAttributes(childHtml, child.attributes);
-      }
-
-      if (child.children && child.children.length > 0) {
-        stack.push([child, -1, childHtml]);
-      } else if (child.value) {
-        childHtml.appendChild(document.createTextNode(child.value));
-      }
-    }
-  }
-
-  static update(parameters) {
-    const transform = `matrix(${parameters.viewport.transform.join(",")})`;
-    parameters.div.style.transform = transform;
-    parameters.div.hidden = false;
-  }
-
-}
-
-exports.XfaLayer = XfaLayer;
-
 /***/ }),
 /* 23 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -13424,8 +13971,6 @@ var _util = __w_pdfjs_require__(2);
 
 var _content_disposition = __w_pdfjs_require__(25);
 
-var _display_utils = __w_pdfjs_require__(1);
-
 function validateRangeRequestCapabilities({
   getResponseHeader,
   isHttp,
@@ -13479,7 +14024,7 @@ function extractFilenameFromHeader(getResponseHeader) {
       } catch (ex) {}
     }
 
-    if ((0, _display_utils.isPdfFile)(filename)) {
+    if (/\.pdf$/i.test(filename)) {
       return filename;
     }
   }
@@ -13492,7 +14037,7 @@ function createResponseStatusError(status, url) {
     return new _util.MissingPDFException('Missing PDF "' + url + '".');
   }
 
-  return new _util.UnexpectedResponseException(`Unexpected server response (${status}) while retrieving PDF 
"${url}".`, status);
+  return new _util.UnexpectedResponseException("Unexpected server response (" + status + ') while retrieving 
PDF "' + url + '".', status);
 }
 
 function validateResponseStatus(status) {
@@ -14530,9 +15075,8 @@ class PDFFetchStreamRangeReader {
 /******/       // The require function
 /******/       function __w_pdfjs_require__(moduleId) {
 /******/               // Check if module is in cache
-/******/               var cachedModule = __webpack_module_cache__[moduleId];
-/******/               if (cachedModule !== undefined) {
-/******/                       return cachedModule.exports;
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
 /******/               }
 /******/               // Create a new module (and put it into the cache)
 /******/               var module = __webpack_module_cache__[moduleId] = {
@@ -14549,278 +15093,10 @@ class PDFFetchStreamRangeReader {
 /******/       }
 /******/       
 /************************************************************************/
-var __webpack_exports__ = {};
-// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.
-(() => {
-var exports = __webpack_exports__;
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-Object.defineProperty(exports, "addLinkAttributes", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.addLinkAttributes;
-  }
-}));
-Object.defineProperty(exports, "getFilenameFromUrl", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.getFilenameFromUrl;
-  }
-}));
-Object.defineProperty(exports, "getPdfFilenameFromUrl", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.getPdfFilenameFromUrl;
-  }
-}));
-Object.defineProperty(exports, "isPdfFile", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.isPdfFile;
-  }
-}));
-Object.defineProperty(exports, "LinkTarget", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.LinkTarget;
-  }
-}));
-Object.defineProperty(exports, "loadScript", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.loadScript;
-  }
-}));
-Object.defineProperty(exports, "PDFDateString", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.PDFDateString;
-  }
-}));
-Object.defineProperty(exports, "RenderingCancelledException", ({
-  enumerable: true,
-  get: function () {
-    return _display_utils.RenderingCancelledException;
-  }
-}));
-Object.defineProperty(exports, "build", ({
-  enumerable: true,
-  get: function () {
-    return _api.build;
-  }
-}));
-Object.defineProperty(exports, "getDocument", ({
-  enumerable: true,
-  get: function () {
-    return _api.getDocument;
-  }
-}));
-Object.defineProperty(exports, "LoopbackPort", ({
-  enumerable: true,
-  get: function () {
-    return _api.LoopbackPort;
-  }
-}));
-Object.defineProperty(exports, "PDFDataRangeTransport", ({
-  enumerable: true,
-  get: function () {
-    return _api.PDFDataRangeTransport;
-  }
-}));
-Object.defineProperty(exports, "PDFWorker", ({
-  enumerable: true,
-  get: function () {
-    return _api.PDFWorker;
-  }
-}));
-Object.defineProperty(exports, "version", ({
-  enumerable: true,
-  get: function () {
-    return _api.version;
-  }
-}));
-Object.defineProperty(exports, "CMapCompressionType", ({
-  enumerable: true,
-  get: function () {
-    return _util.CMapCompressionType;
-  }
-}));
-Object.defineProperty(exports, "createObjectURL", ({
-  enumerable: true,
-  get: function () {
-    return _util.createObjectURL;
-  }
-}));
-Object.defineProperty(exports, "createPromiseCapability", ({
-  enumerable: true,
-  get: function () {
-    return _util.createPromiseCapability;
-  }
-}));
-Object.defineProperty(exports, "createValidAbsoluteUrl", ({
-  enumerable: true,
-  get: function () {
-    return _util.createValidAbsoluteUrl;
-  }
-}));
-Object.defineProperty(exports, "InvalidPDFException", ({
-  enumerable: true,
-  get: function () {
-    return _util.InvalidPDFException;
-  }
-}));
-Object.defineProperty(exports, "MissingPDFException", ({
-  enumerable: true,
-  get: function () {
-    return _util.MissingPDFException;
-  }
-}));
-Object.defineProperty(exports, "OPS", ({
-  enumerable: true,
-  get: function () {
-    return _util.OPS;
-  }
-}));
-Object.defineProperty(exports, "PasswordResponses", ({
-  enumerable: true,
-  get: function () {
-    return _util.PasswordResponses;
-  }
-}));
-Object.defineProperty(exports, "PermissionFlag", ({
-  enumerable: true,
-  get: function () {
-    return _util.PermissionFlag;
-  }
-}));
-Object.defineProperty(exports, "removeNullCharacters", ({
-  enumerable: true,
-  get: function () {
-    return _util.removeNullCharacters;
-  }
-}));
-Object.defineProperty(exports, "shadow", ({
-  enumerable: true,
-  get: function () {
-    return _util.shadow;
-  }
-}));
-Object.defineProperty(exports, "UnexpectedResponseException", ({
-  enumerable: true,
-  get: function () {
-    return _util.UnexpectedResponseException;
-  }
-}));
-Object.defineProperty(exports, "UNSUPPORTED_FEATURES", ({
-  enumerable: true,
-  get: function () {
-    return _util.UNSUPPORTED_FEATURES;
-  }
-}));
-Object.defineProperty(exports, "Util", ({
-  enumerable: true,
-  get: function () {
-    return _util.Util;
-  }
-}));
-Object.defineProperty(exports, "VerbosityLevel", ({
-  enumerable: true,
-  get: function () {
-    return _util.VerbosityLevel;
-  }
-}));
-Object.defineProperty(exports, "AnnotationLayer", ({
-  enumerable: true,
-  get: function () {
-    return _annotation_layer.AnnotationLayer;
-  }
-}));
-Object.defineProperty(exports, "apiCompatibilityParams", ({
-  enumerable: true,
-  get: function () {
-    return _api_compatibility.apiCompatibilityParams;
-  }
-}));
-Object.defineProperty(exports, "GlobalWorkerOptions", ({
-  enumerable: true,
-  get: function () {
-    return _worker_options.GlobalWorkerOptions;
-  }
-}));
-Object.defineProperty(exports, "renderTextLayer", ({
-  enumerable: true,
-  get: function () {
-    return _text_layer.renderTextLayer;
-  }
-}));
-Object.defineProperty(exports, "SVGGraphics", ({
-  enumerable: true,
-  get: function () {
-    return _svg.SVGGraphics;
-  }
-}));
-Object.defineProperty(exports, "XfaLayer", ({
-  enumerable: true,
-  get: function () {
-    return _xfa_layer.XfaLayer;
-  }
-}));
-
-var _display_utils = __w_pdfjs_require__(1);
-
-var _api = __w_pdfjs_require__(5);
-
-var _util = __w_pdfjs_require__(2);
-
-var _annotation_layer = __w_pdfjs_require__(18);
-
-var _api_compatibility = __w_pdfjs_require__(9);
-
-var _worker_options = __w_pdfjs_require__(12);
-
-var _text_layer = __w_pdfjs_require__(20);
-
-var _svg = __w_pdfjs_require__(21);
-
-var _xfa_layer = __w_pdfjs_require__(22);
-
-const pdfjsVersion = '2.8.335';
-const pdfjsBuild = '228adbf67';
-{
-  const {
-    isNodeJS
-  } = __w_pdfjs_require__(4);
-
-  if (isNodeJS) {
-    const PDFNodeStream = __w_pdfjs_require__(23).PDFNodeStream;
-
-    (0, _api.setPDFNetworkStreamFactory)(params => {
-      return new PDFNodeStream(params);
-    });
-  } else {
-    const PDFNetworkStream = __w_pdfjs_require__(26).PDFNetworkStream;
-
-    let PDFFetchStream;
-
-    if ((0, _display_utils.isFetchSupported)()) {
-      PDFFetchStream = __w_pdfjs_require__(27).PDFFetchStream;
-    }
-
-    (0, _api.setPDFNetworkStreamFactory)(params => {
-      if (PDFFetchStream && (0, _display_utils.isValidFetchUrl)(params.url)) {
-        return new PDFFetchStream(params);
-      }
-
-      return new PDFNetworkStream(params);
-    });
-  }
-}
-})();
-
-/******/       return __webpack_exports__;
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
 /******/ })()
 ;
 });
diff --git a/third-party/pdfjs/build/pdf.sandbox.js b/third-party/pdfjs/build/pdf.sandbox.js
new file mode 100644
index 000000000..c890e54c7
--- /dev/null
+++ b/third-party/pdfjs/build/pdf.sandbox.js
@@ -0,0 +1,312 @@
+/**
+ * @licstart The following is the entire license notice for the
+ * Javascript code in this page
+ *
+ * Copyright 2020 Mozilla Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @licend The above is the entire license notice for the
+ * Javascript code in this page
+ */
+
+(function webpackUniversalModuleDefinition(root, factory) {
+       if(typeof exports === 'object' && typeof module === 'object')
+               module.exports = factory();
+       else if(typeof define === 'function' && define.amd)
+               define("pdfjs-dist/build/pdf.sandbox", [], factory);
+       else if(typeof exports === 'object')
+               exports["pdfjs-dist/build/pdf.sandbox"] = factory();
+       else
+               root["pdfjs-dist/build/pdf.sandbox"] = root.pdfjsSandbox = factory();
+})(this, function() {
+return /******/ (() => { // webpackBootstrap
+/******/       "use strict";
+/******/       var __webpack_modules__ = ([
+/* 0 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.QuickJSSandbox = QuickJSSandbox;
+
+var _quickjsEval = _interopRequireDefault(__w_pdfjs_require__(1));
+
+var _pdfSandboxExternal = __w_pdfjs_require__(2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+const TESTING = false;
+
+class SandboxSupport extends _pdfSandboxExternal.SandboxSupportBase {
+  exportValueToSandbox(val) {
+    return JSON.stringify(val);
+  }
+
+  importValueFromSandbox(val) {
+    return val;
+  }
+
+  createErrorForSandbox(errorMessage) {
+    return new Error(errorMessage);
+  }
+
+}
+
+class Sandbox {
+  constructor(win, module) {
+    this.support = new SandboxSupport(win, this);
+    module.externalCall = this.support.createSandboxExternals();
+    this._module = module;
+    this._alertOnError = 0;
+  }
+
+  create(data) {
+    if (TESTING) {
+      this._module.ccall("nukeSandbox", null, []);
+    }
+
+    const sandboxData = JSON.stringify(data);
+    const code = ['(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.scripting", [], factory);\n\telse if(typeof 
exports === \'object\')\n\t\texports["pdfjs-dist/build/pdf.scripting"] = 
factory();\n\telse\n\t\troot.pdfjsScripting = factory();\n})(this, function() {\nreturn /******/ (() => { // 
webpackBootstrap\n/******/ \t"use strict";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nObject.defineProperty(exports, "initSandbox", ({\n  enumerable: 
true,\n  get: function () {\n    return _initialization.initSandbox;\n  }\n}));\n\nvar _initialization = 
__w_pdfjs_require__(1);\n\nconst pdfjsVersion = \'2.7.570\';\nconst pdfjsBuild = \'f2c7338b
 0\';\n\n/***/ }),\n/* 1 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.initSandbox = 
initSandbox;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _field = __w_pdfjs_require__(3);\n\nvar 
_aform = __w_pdfjs_require__(8);\n\nvar _app = __w_pdfjs_require__(9);\n\nvar _color = 
__w_pdfjs_require__(4);\n\nvar _console = __w_pdfjs_require__(13);\n\nvar _doc = 
__w_pdfjs_require__(14);\n\nvar _proxy = __w_pdfjs_require__(16);\n\nvar _util = 
__w_pdfjs_require__(17);\n\nfunction initSandbox(params) {\n  delete globalThis.pdfjsScripting;\n  const 
externalCall = globalThis.callExternalFunction;\n  delete globalThis.callExternalFunction;\n\n  const 
globalEval = code => globalThis.eval(code);\n\n  const send = data => externalCall("send", [data]);\n\n  
const proxyHandler = new _proxy.ProxyHandler();\n  const {\n    data\n  } = params;\n  const doc = new 
_doc.Doc({\n    send,\n    globalE
 val,\n    ...data.docInfo\n  });\n  const _document = {\n    obj: doc,\n    wrapped: new Proxy(doc, 
proxyHandler)\n  };\n  const app = new _app.App({\n    send,\n    globalEval,\n    externalCall,\n    
_document,\n    calculationOrder: data.calculationOrder,\n    proxyHandler,\n    ...data.appInfo\n  });\n  
const util = new _util.Util({\n    externalCall\n  });\n\n  if (data.objects) {\n    for (const [name, objs] 
of Object.entries(data.objects)) {\n      const obj = objs[0];\n      obj.send = send;\n      obj.globalEval 
= globalEval;\n      obj.doc = _document.wrapped;\n      let field;\n\n      if (obj.type === "radiobutton") 
{\n        const otherButtons = objs.slice(1);\n        field = new _field.RadioButtonField(otherButtons, 
obj);\n      } else if (obj.type === "checkbox") {\n        const otherButtons = objs.slice(1);\n        
field = new _field.CheckboxField(otherButtons, obj);\n      } else {\n        field = new 
_field.Field(obj);\n      }\n\n      const wrapped = new Pro
 xy(field, proxyHandler);\n\n      doc._addField(name, wrapped);\n\n      const _object = {\n        obj: 
field,\n        wrapped\n      };\n\n      for (const object of objs) {\n        app._objects[object.id] = 
_object;\n      }\n    }\n  }\n\n  const color = new _color.Color();\n  globalThis.event = null;\n  
globalThis.global = Object.create(null);\n  globalThis.app = new Proxy(app, proxyHandler);\n  
globalThis.color = new Proxy(color, proxyHandler);\n  globalThis.console = new Proxy(new _console.Console({\n 
   send\n  }), proxyHandler);\n  globalThis.util = new Proxy(util, proxyHandler);\n  globalThis.border = 
_constants.Border;\n  globalThis.cursor = _constants.Cursor;\n  globalThis.display = _constants.Display;\n  
globalThis.font = _constants.Font;\n  globalThis.highlight = _constants.Highlight;\n  globalThis.position = 
_constants.Position;\n  globalThis.scaleHow = _constants.ScaleHow;\n  globalThis.scaleWhen = 
_constants.ScaleWhen;\n  globalThis.style = _constants.Style;\n  gl
 obalThis.trans = _constants.Trans;\n  globalThis.zoomtype = _constants.ZoomType;\n  const aform = new 
_aform.AForm(doc, app, util, color);\n\n  for (const name of 
Object.getOwnPropertyNames(_aform.AForm.prototype)) {\n    if (name !== "constructor" && 
!name.startsWith("_")) {\n      globalThis[name] = aform[name].bind(aform);\n    }\n  }\n\n  for (const 
[name, value] of Object.entries(_constants.GlobalConstants)) {\n    Object.defineProperty(globalThis, name, 
{\n      value,\n      writable: false\n    });\n  }\n\n  Object.defineProperties(globalThis, {\n    
ColorConvert: {\n      value: color.convert.bind(color),\n      writable: true\n    },\n    ColorEqual: {\n   
   value: color.equal.bind(color),\n      writable: true\n    }\n  });\n  const properties = 
Object.create(null);\n\n  for (const name of Object.getOwnPropertyNames(_doc.Doc.prototype)) {\n    if (name 
=== "constructor" || name.startsWith("_")) {\n      continue;\n    }\n\n    const descriptor = 
Object.getOwnPropertyDesc
 riptor(_doc.Doc.prototype, name);\n\n    if (descriptor.get) {\n      properties[name] = {\n        get: 
descriptor.get.bind(doc),\n        set: descriptor.set.bind(doc)\n      };\n    } else {\n      
properties[name] = {\n        value: _doc.Doc.prototype[name].bind(doc)\n      };\n    }\n  }\n\n  
Object.defineProperties(globalThis, properties);\n  const functions = {\n    dispatchEvent: 
app._dispatchEvent.bind(app),\n    timeoutCb: app._evalCallback.bind(app)\n  };\n  return (name, args) => {\n 
   try {\n      functions[name](args);\n    } catch (error) {\n      const value = 
`${error.toString()}\\n${error.stack}`;\n      send({\n        command: "error",\n        value\n      });\n  
  }\n  };\n}\n\n/***/ }),\n/* 2 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.ZoomType = 
exports.Trans = exports.Style = exports.ScaleWhen = exports.ScaleHow = exports.Position = exports.Highlight = 
exports.Globa
 lConstants = exports.Font = exports.Display = exports.Cursor = exports.Border = void 0;\nconst Border = 
Object.freeze({\n  s: "solid",\n  d: "dashed",\n  b: "beveled",\n  i: "inset",\n  u: 
"underline"\n});\nexports.Border = Border;\nconst Cursor = Object.freeze({\n  visible: 0,\n  hidden: 1,\n  
delay: 2\n});\nexports.Cursor = Cursor;\nconst Display = Object.freeze({\n  visible: 0,\n  hidden: 1,\n  
noPrint: 2,\n  noView: 3\n});\nexports.Display = Display;\nconst Font = Object.freeze({\n  Times: 
"Times-Roman",\n  TimesB: "Times-Bold",\n  TimesI: "Times-Italic",\n  TimesBI: "Times-BoldItalic",\n  Helv: 
"Helvetica",\n  HelvB: "Helvetica-Bold",\n  HelvI: "Helvetica-Oblique",\n  HelvBI: "Helvetica-BoldOblique",\n 
 Cour: "Courier",\n  CourB: "Courier-Bold",\n  CourI: "Courier-Oblique",\n  CourBI: "Courier-BoldOblique",\n  
Symbol: "Symbol",\n  ZapfD: "ZapfDingbats",\n  KaGo: "HeiseiKakuGo-W5-UniJIS-UCS2-H",\n  KaMi: 
"HeiseiMin-W3-UniJIS-UCS2-H"\n});\nexports.Font = Font;\nconst Highlight = 
 Object.freeze({\n  n: "none",\n  i: "invert",\n  p: "push",\n  o: "outline"\n});\nexports.Highlight = 
Highlight;\nconst Position = Object.freeze({\n  textOnly: 0,\n  iconOnly: 1,\n  iconTextV: 2,\n  textIconV: 
3,\n  iconTextH: 4,\n  textIconH: 5,\n  overlay: 6\n});\nexports.Position = Position;\nconst ScaleHow = 
Object.freeze({\n  proportional: 0,\n  anamorphic: 1\n});\nexports.ScaleHow = ScaleHow;\nconst ScaleWhen = 
Object.freeze({\n  always: 0,\n  never: 1,\n  tooBig: 2,\n  tooSmall: 3\n});\nexports.ScaleWhen = 
ScaleWhen;\nconst Style = Object.freeze({\n  ch: "check",\n  cr: "cross",\n  di: "diamond",\n  ci: 
"circle",\n  st: "star",\n  sq: "square"\n});\nexports.Style = Style;\nconst Trans = Object.freeze({\n  
blindsH: "BlindsHorizontal",\n  blindsV: "BlindsVertical",\n  boxI: "BoxIn",\n  boxO: "BoxOut",\n  dissolve: 
"Dissolve",\n  glitterD: "GlitterDown",\n  glitterR: "GlitterRight",\n  glitterRD: "GlitterRightDown",\n  
random: "Random",\n  replace: "Replace",\n  splitHI: "SplitH
 orizontalIn",\n  splitHO: "SplitHorizontalOut",\n  splitVI: "SplitVerticalIn",\n  splitVO: 
"SplitVerticalOut",\n  wipeD: "WipeDown",\n  wipeL: "WipeLeft",\n  wipeR: "WipeRight",\n  wipeU: 
"WipeUp"\n});\nexports.Trans = Trans;\nconst ZoomType = Object.freeze({\n  none: "NoVary",\n  fitP: 
"FitPage",\n  fitW: "FitWidth",\n  fitH: "FitHeight",\n  fitV: "FitVisibleWidth",\n  pref: "Preferred",\n  
refW: "ReflowWidth"\n});\nexports.ZoomType = ZoomType;\nconst GlobalConstants = Object.freeze({\n  
IDS_GREATER_THAN: "Invalid value: must be greater than or equal to % s.",\n  IDS_GT_AND_LT: "Invalid value: 
must be greater than or equal to % s " + "and less than or equal to % s.",\n  IDS_LESS_THAN: "Invalid value: 
must be less than or equal to % s.",\n  IDS_INVALID_MONTH: "** Invalid **",\n  IDS_INVALID_DATE: "Invalid 
date / time: please ensure that the date / time exists.Field",\n  IDS_INVALID_DATE2: " should match format 
",\n  IDS_INVALID_VALUE: "The value entered does not match the format of 
 the field",\n  IDS_AM: "am",\n  IDS_PM: "pm",\n  IDS_MONTH_INFO: "January[1] February[2] March[3] April[4] 
May[5] " + "June[6] July[7] August[8] September[9] October[10] " + "November[11] December[12] Sept[9] Jan[1] 
Feb[2] Mar[3] " + "Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]",\n  IDS_STARTUP_CONSOLE_MSG: 
"** ^ _ ^ **",\n  RE_NUMBER_ENTRY_DOT_SEP: ["[+-]?\\\\d*\\\\.?\\\\d*"],\n  RE_NUMBER_COMMIT_DOT_SEP: 
["[+-]?\\\\d+(\\\\.\\\\d+)?", "[+-]?\\\\.\\\\d+", "[+-]?\\\\d+\\\\."],\n  RE_NUMBER_ENTRY_COMMA_SEP: 
["[+-]?\\\\d*,?\\\\d*"],\n  RE_NUMBER_COMMIT_COMMA_SEP: ["[+-]?\\\\d+([.,]\\\\d+)?", "[+-]?[.,]\\\\d+", 
"[+-]?\\\\d+[.,]"],\n  RE_ZIP_ENTRY: ["\\\\d{0,5}"],\n  RE_ZIP_COMMIT: ["\\\\d{5}"],\n  RE_ZIP4_ENTRY: 
["\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_ZIP4_COMMIT: ["\\\\d{5}(\\\\.|[- ])?\\\\d{4}"],\n  
RE_PHONE_ENTRY: ["\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\(\\\\d{0,3}", 
"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\
 \\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "\\\\d{0,3}\\\\)(\\\\.|[- 
])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}", "011(\\\\.|[- \\\\d])*"],\n  RE_PHONE_COMMIT: ["\\\\d{3}(\\\\.|[- 
])?\\\\d{4}", "\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "\\\\(\\\\d{3}\\\\)(\\\\.|[- 
])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}", "011(\\\\.|[- \\\\d])*"],\n  RE_SSN_ENTRY: ["\\\\d{0,3}(\\\\.|[- 
])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}"],\n  RE_SSN_COMMIT: ["\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- 
])?\\\\d{4}"]\n});\nexports.GlobalConstants = GlobalConstants;\n\n/***/ }),\n/* 3 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.RadioButtonField = exports.Field = exports.CheckboxField = 
void 0;\n\nvar _color = __w_pdfjs_require__(4);\n\nvar _common = __w_pdfjs_require__(7);\n\nvar _pdf_object = 
__w_pdfjs_require__(6);\n\nclass Field extends _pdf_object.PDFObject {\n  constructor(data) {\n    
 super(data);\n    this.alignment = data.alignment || "left";\n    this.borderStyle = data.borderStyle || 
"";\n    this.buttonAlignX = data.buttonAlignX || 50;\n    this.buttonAlignY = data.buttonAlignY || 50;\n    
this.buttonFitBounds = data.buttonFitBounds;\n    this.buttonPosition = data.buttonPosition;\n    
this.buttonScaleHow = data.buttonScaleHow;\n    this.ButtonScaleWhen = data.buttonScaleWhen;\n    
this.calcOrderIndex = data.calcOrderIndex;\n    this.charLimit = data.charLimit;\n    this.comb = 
data.comb;\n    this.commitOnSelChange = data.commitOnSelChange;\n    this.currentValueIndices = 
data.currentValueIndices;\n    this.defaultStyle = data.defaultStyle;\n    this.defaultValue = 
data.defaultValue;\n    this.doNotScroll = data.doNotScroll;\n    this.doNotSpellCheck = 
data.doNotSpellCheck;\n    this.delay = data.delay;\n    this.display = data.display;\n    this.doc = 
data.doc;\n    this.editable = data.editable;\n    this.exportValues = data.exportValues;\n    this.fileSe
 lect = data.fileSelect;\n    this.hidden = data.hidden;\n    this.highlight = data.highlight;\n    
this.lineWidth = data.lineWidth;\n    this.multiline = data.multiline;\n    this.multipleSelection = 
!!data.multipleSelection;\n    this.name = data.name;\n    this.numItems = data.numItems;\n    this.page = 
data.page;\n    this.password = data.password;\n    this.print = data.print;\n    this.radiosInUnison = 
data.radiosInUnison;\n    this.readonly = data.readonly;\n    this.rect = data.rect;\n    this.required = 
data.required;\n    this.richText = data.richText;\n    this.richValue = data.richValue;\n    this.rotation = 
data.rotation;\n    this.style = data.style;\n    this.submitName = data.submitName;\n    this.textFont = 
data.textFont;\n    this.textSize = data.textSize;\n    this.type = data.type;\n    this.userName = 
data.userName;\n    this._document = data.doc;\n    this._value = data.value || "";\n    this._valueAsString 
= data.valueAsString;\n    this._actions = (0, _common.
 createActionsMap)(data.actions);\n    this._fillColor = data.fillColor || ["T"];\n    this._strokeColor = 
data.strokeColor || ["G", 0];\n    this._textColor = data.textColor || ["G", 0];\n    this._globalEval = 
data.globalEval;\n  }\n\n  get fillColor() {\n    return this._fillColor;\n  }\n\n  set fillColor(color) {\n  
  if (_color.Color._isValidColor(color)) {\n      this._fillColor = color;\n    }\n  }\n\n  get strokeColor() 
{\n    return this._strokeColor;\n  }\n\n  set strokeColor(color) {\n    if 
(_color.Color._isValidColor(color)) {\n      this._strokeColor = color;\n    }\n  }\n\n  get textColor() {\n  
  return this._textColor;\n  }\n\n  set textColor(color) {\n    if (_color.Color._isValidColor(color)) {\n    
  this._textColor = color;\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set value(value) 
{\n    if (!this.multipleSelection) {\n      this._value = value;\n    }\n  }\n\n  get valueAsString() {\n    
return this._valueAsString;\n  }\n\n  set valueAsS
 tring(val) {\n    this._valueAsString = val ? val.toString() : "";\n  }\n\n  checkThisBox(nWidget, bCheckIt 
= true) {}\n\n  isBoxChecked(nWidget) {\n    return false;\n  }\n\n  isDefaultChecked(nWidget) {\n    return 
false;\n  }\n\n  setAction(cTrigger, cScript) {\n    if (typeof cTrigger !== "string" || typeof cScript !== 
"string") {\n      return;\n    }\n\n    if (!(cTrigger in this._actions)) {\n      this._actions[cTrigger] = 
[];\n    }\n\n    this._actions[cTrigger].push(cScript);\n  }\n\n  setFocus() {\n    this._send({\n      id: 
this._id,\n      focus: true\n    });\n  }\n\n  _isButton() {\n    return false;\n  }\n\n  _runActions(event) 
{\n    const eventName = event.name;\n\n    if (!this._actions.has(eventName)) {\n      return false;\n    
}\n\n    const actions = this._actions.get(eventName);\n\n    try {\n      for (const action of actions) {\n  
      this._globalEval(action);\n      }\n    } catch (error) {\n      event.rc = false;\n      throw 
error;\n    }\n\n    ret
 urn true;\n  }\n\n}\n\nexports.Field = Field;\n\nclass RadioButtonField extends Field {\n  
constructor(otherButtons, data) {\n    super(data);\n    this.exportValues = [this.exportValues];\n    
this._radioIds = [this._id];\n    this._radioActions = [this._actions];\n\n    for (const radioData of 
otherButtons) {\n      this.exportValues.push(radioData.exportValues);\n\n      
this._radioIds.push(radioData.id);\n\n      this._radioActions.push((0, 
_common.createActionsMap)(radioData.actions));\n\n      if (this._value === radioData.exportValues) {\n       
 this._id = radioData.id;\n      }\n    }\n  }\n\n  get value() {\n    return this._value;\n  }\n\n  set 
value(value) {\n    const i = this.exportValues.indexOf(value);\n\n    if (0 <= i && i < 
this._radioIds.length) {\n      this._id = this._radioIds[i];\n      this._value = value;\n    } else if 
(value === "Off" && this._radioIds.length === 2) {\n      const nextI = (1 + 
this._radioIds.indexOf(this._id)) % 2;\n      this._id = this.
 _radioIds[nextI];\n      this._value = this.exportValues[nextI];\n    }\n  }\n\n  checkThisBox(nWidget, 
bCheckIt = true) {\n    if (nWidget < 0 || nWidget >= this._radioIds.length || !bCheckIt) {\n      return;\n  
  }\n\n    this._id = this._radioIds[nWidget];\n    this._value = this.exportValues[nWidget];\n\n    
this._send({\n      id: this._id,\n      value: this._value\n    });\n  }\n\n  isBoxChecked(nWidget) {\n    
return nWidget >= 0 && nWidget < this._radioIds.length && this._id === this._radioIds[nWidget];\n  }\n\n  
isDefaultChecked(nWidget) {\n    return nWidget >= 0 && nWidget < this.exportValues.length && 
this.defaultValue === this.exportValues[nWidget];\n  }\n\n  _getExportValue(state) {\n    const i = 
this._radioIds.indexOf(this._id);\n\n    return this.exportValues[i];\n  }\n\n  _runActions(event) {\n    
const i = this._radioIds.indexOf(this._id);\n\n    this._actions = this._radioActions[i];\n    return 
super._runActions(event);\n  }\n\n  _isButton() {\n    return true
 ;\n  }\n\n}\n\nexports.RadioButtonField = RadioButtonField;\n\nclass CheckboxField extends RadioButtonField 
{\n  get value() {\n    return this._value;\n  }\n\n  set value(value) {\n    if (value === "Off") {\n      
this._value = "Off";\n    } else {\n      super.value = value;\n    }\n  }\n\n  _getExportValue(state) {\n    
return state ? super._getExportValue(state) : "Off";\n  }\n\n  isBoxChecked(nWidget) {\n    if (this._value 
=== "Off") {\n      return false;\n    }\n\n    return super.isBoxChecked(nWidget);\n  }\n\n  
isDefaultChecked(nWidget) {\n    if (this.defaultValue === "Off") {\n      return this._value === "Off";\n    
}\n\n    return super.isDefaultChecked(nWidget);\n  }\n\n  checkThisBox(nWidget, bCheckIt = true) {\n    if 
(nWidget < 0 || nWidget >= this._radioIds.length) {\n      return;\n    }\n\n    this._id = 
this._radioIds[nWidget];\n    this._value = bCheckIt ? this.exportValues[nWidget] : "Off";\n\n    
this._send({\n      id: this._id,\n      value: this._value\n
     });\n  }\n\n}\n\nexports.CheckboxField = CheckboxField;\n\n/***/ }),\n/* 4 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Color = void 0;\n\nvar _scripting_utils = 
__w_pdfjs_require__(5);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Color extends 
_pdf_object.PDFObject {\n  constructor() {\n    super({});\n    this.transparent = ["T"];\n    this.black = 
["G", 0];\n    this.white = ["G", 1];\n    this.red = ["RGB", 1, 0, 0];\n    this.green = ["RGB", 0, 1, 0];\n 
   this.blue = ["RGB", 0, 0, 1];\n    this.cyan = ["CMYK", 1, 0, 0, 0];\n    this.magenta = ["CMYK", 0, 1, 0, 
0];\n    this.yellow = ["CMYK", 0, 0, 1, 0];\n    this.dkGray = ["G", 0.25];\n    this.gray = ["G", 0.5];\n   
 this.ltGray = ["G", 0.75];\n  }\n\n  static _isValidSpace(cColorSpace) {\n    return typeof cColorSpace === 
"string" && (cColorSpace === "T" || cColorSpace === "G" || cColorSpace === "RGB"
  || cColorSpace === "CMYK");\n  }\n\n  static _isValidColor(colorArray) {\n    if 
(!Array.isArray(colorArray) || colorArray.length === 0) {\n      return false;\n    }\n\n    const space = 
colorArray[0];\n\n    if (!Color._isValidSpace(space)) {\n      return false;\n    }\n\n    switch (space) 
{\n      case "T":\n        if (colorArray.length !== 1) {\n          return false;\n        }\n\n        
break;\n\n      case "G":\n        if (colorArray.length !== 2) {\n          return false;\n        }\n\n     
   break;\n\n      case "RGB":\n        if (colorArray.length !== 4) {\n          return false;\n        
}\n\n        break;\n\n      case "CMYK":\n        if (colorArray.length !== 5) {\n          return false;\n  
      }\n\n        break;\n\n      default:\n        return false;\n    }\n\n    return 
colorArray.slice(1).every(c => typeof c === "number" && c >= 0 && c <= 1);\n  }\n\n  static 
_getCorrectColor(colorArray) {\n    return Color._isValidColor(colorArray) ? colorArray : 
 ["G", 0];\n  }\n\n  convert(colorArray, cColorSpace) {\n    if (!Color._isValidSpace(cColorSpace)) {\n      
return this.black;\n    }\n\n    if (cColorSpace === "T") {\n      return ["T"];\n    }\n\n    colorArray = 
Color._getCorrectColor(colorArray);\n\n    if (colorArray[0] === cColorSpace) {\n      return colorArray;\n   
 }\n\n    if (colorArray[0] === "T") {\n      return this.convert(this.black, cColorSpace);\n    }\n\n    
return _scripting_utils.ColorConverters[`${colorArray[0]}_${cColorSpace}`](colorArray.slice(1));\n  }\n\n  
equal(colorArray1, colorArray2) {\n    colorArray1 = Color._getCorrectColor(colorArray1);\n    colorArray2 = 
Color._getCorrectColor(colorArray2);\n\n    if (colorArray1[0] === "T" || colorArray2[0] === "T") {\n      
return colorArray1[0] === "T" && colorArray2[0] === "T";\n    }\n\n    if (colorArray1[0] !== colorArray2[0]) 
{\n      colorArray2 = this.convert(colorArray2, colorArray1[0]);\n    }\n\n    return 
colorArray1.slice(1).every((c, i) => c === co
 lorArray2[i + 1]);\n  }\n\n}\n\nexports.Color = Color;\n\n/***/ }),\n/* 5 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ColorConverters = void 0;\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, 
Math.min(1, n)) * 255).toString(16).padStart(2, "0");\n}\n\nclass ColorConverters {\n  static CMYK_G([c, y, 
m, k]) {\n    return ["G", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n  }\n\n  static G_CMYK([g]) 
{\n    return ["CMYK", 0, 0, 0, 1 - g];\n  }\n\n  static G_RGB([g]) {\n    return ["RGB", g, g, g];\n  }\n\n  
static G_HTML([g]) {\n    const G = makeColorComp(g);\n    return `#${G}${G}${G}`;\n  }\n\n  static RGB_G([r, 
g, b]) {\n    return ["G", 0.3 * r + 0.59 * g + 0.11 * b];\n  }\n\n  static RGB_HTML([r, g, b]) {\n    const 
R = makeColorComp(r);\n    const G = makeColorComp(g);\n    const B = makeColorComp(b);\n    return 
`#${R}${G}${B}`;\n  }\n\n  static T_HTML() {\n    r
 eturn "#00000000";\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return ["RGB", 1 - Math.min(1, c + k), 1 - 
Math.min(1, m + k), 1 - Math.min(1, y + k)];\n  }\n\n  static CMYK_HTML(components) {\n    return 
this.RGB_HTML(this.CMYK_RGB(components));\n  }\n\n  static RGB_CMYK([r, g, b]) {\n    const c = 1 - r;\n    
const m = 1 - g;\n    const y = 1 - b;\n    const k = Math.min(c, m, y);\n    return ["CMYK", c, m, y, k];\n  
}\n\n}\n\nexports.ColorConverters = ColorConverters;\n\n/***/ }),\n/* 6 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.PDFObject 
= void 0;\n\nclass PDFObject {\n  constructor(data) {\n    this._expandos = Object.create(null);\n    
this._send = data.send || null;\n    this._id = data.id || null;\n  }\n\n}\n\nexports.PDFObject = 
PDFObject;\n\n/***/ }),\n/* 7 */\n/***/ ((__unused_webpack_module, exports) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n})
 );\nexports.createActionsMap = createActionsMap;\n\nfunction createActionsMap(actions) {\n  const actionsMap 
= new Map();\n\n  if (actions) {\n    for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n 
     actionsMap.set(eventType, actionsForEvent);\n    }\n  }\n\n  return actionsMap;\n}\n\n/***/ }),\n/* 8 
*/\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.AForm = void 0;\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass AForm {\n  constructor(document, app, util, color) {\n    this._document = 
document;\n    this._app = app;\n    this._util = util;\n    this._color = color;\n    this._dateFormats = 
["m/d", "m/d/yy", "mm/dd/yy", "mm/yy", "d-mmm", "d-mmm-yy", "dd-mmm-yy", "yy-mm-dd", "mmm-yy", "mmmm-yy", 
"mmm d, yyyy", "mmmm d, yyyy", "m/d/yy h:MM tt", "m/d/yy HH:MM"];\n    this._timeFormats = ["HH:MM", "h:MM 
tt", "HH:MM:ss", "h:MM:ss tt"];\n    this._emailRe
 gex = new RegExp("^[a-zA-Z0-9.!#$%&\'*+\\\\/=?^_`{|}~-]+" + "@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?" 
+ "(?:\\\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$");\n  }\n\n  _mkTargetName(event) {\n    return 
event.target ? `[ ${event.target.name} ]` : "";\n  }\n\n  _parseDate(cFormat, cDate) {\n    const ddate = 
Date.parse(cDate);\n\n    if (isNaN(ddate)) {\n      try {\n        return this._util.scand(cFormat, 
cDate);\n      } catch (error) {\n        return null;\n      }\n    } else {\n      return new 
Date(ddate);\n    }\n  }\n\n  AFMergeChange(event = globalThis.event) {\n    if (event.willCommit) {\n      
return event.value.toString();\n    }\n\n    return this._app._eventDispatcher.mergeChange(event);\n  }\n\n  
AFParseDateEx(cString, cOrder) {\n    return this._parseDate(cOrder, cString);\n  }\n\n  AFExtractNums(str) 
{\n    if (typeof str === "number") {\n      return [str];\n    }\n\n    if (!str || typeof str !== "string") 
{\n      return null;\n    }\n\n    const 
 first = str.charAt(0);\n\n    if (first === "." || first === ",") {\n      str = `0${str}`;\n    }\n\n    
const numbers = str.match(/([0-9]+)/g);\n\n    if (numbers.length === 0) {\n      return null;\n    }\n\n    
return numbers;\n  }\n\n  AFMakeNumber(str) {\n    if (typeof str === "number") {\n      return str;\n    
}\n\n    if (typeof str !== "string") {\n      return null;\n    }\n\n    str = str.trim().replace(",", 
".");\n    const number = parseFloat(str);\n\n    if (isNaN(number) || !isFinite(number)) {\n      return 
null;\n    }\n\n    return number;\n  }\n\n  AFMakeArrayFromList(string) {\n    if (typeof string === 
"string") {\n      return string.split(/, ?/g);\n    }\n\n    return string;\n  }\n\n  AFNumber_Format(nDec, 
sepStyle, negStyle, currStyle, strCurrency, bCurrencyPrepend) {\n    const event = globalThis.event;\n\n    
if (!event.value) {\n      return;\n    }\n\n    let value = this.AFMakeNumber(event.value);\n\n    if (value 
=== null) {\n      event.value = "";\
 n      return;\n    }\n\n    const sign = Math.sign(value);\n    const buf = [];\n    let hasParen = 
false;\n\n    if (sign === -1 && bCurrencyPrepend && negStyle === 0) {\n      buf.push("-");\n    }\n\n    if 
((negStyle === 2 || negStyle === 3) && sign === -1) {\n      buf.push("(");\n      hasParen = true;\n    
}\n\n    if (bCurrencyPrepend) {\n      buf.push(strCurrency);\n    }\n\n    sepStyle = Math.min(Math.max(0, 
Math.floor(sepStyle)), 4);\n    buf.push("%,");\n    buf.push(sepStyle);\n    buf.push(".");\n    
buf.push(nDec.toString());\n    buf.push("f");\n\n    if (!bCurrencyPrepend) {\n      
buf.push(strCurrency);\n    }\n\n    if (hasParen) {\n      buf.push(")");\n    }\n\n    if (negStyle === 1 
|| negStyle === 3) {\n      event.target.textColor = sign === 1 ? this._color.black : this._color.red;\n    
}\n\n    if ((negStyle !== 0 || bCurrencyPrepend) && sign === -1) {\n      value = -value;\n    }\n\n    
const formatStr = buf.join("");\n    event.value = this._util.print
 f(formatStr, value);\n  }\n\n  AFNumber_Keystroke(nDec, sepStyle, negStyle, currStyle, strCurrency, 
bCurrencyPrepend) {\n    const event = globalThis.event;\n    let value = this.AFMergeChange(event);\n\n    
if (!value) {\n      return;\n    }\n\n    value = value.trim();\n    let pattern;\n\n    if (sepStyle > 1) 
{\n      pattern = event.willCommit ? /^[+-]?([0-9]+(,[0-9]*)?|,[0-9]+)$/ : /^[+-]?[0-9]*,?[0-9]*$/;\n    } 
else {\n      pattern = event.willCommit ? /^[+-]?([0-9]+(\\.[0-9]*)?|\\.[0-9]+)$/ : 
/^[+-]?[0-9]*\\.?[0-9]*$/;\n    }\n\n    if (!pattern.test(value)) {\n      if (event.willCommit) {\n        
const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} ${this._mkTargetName(event)}`;\n\n        
this._app.alert(err);\n      }\n\n      event.rc = false;\n    }\n\n    if (event.willCommit && sepStyle > 1) 
{\n      event.value = parseFloat(value.replace(",", "."));\n    }\n  }\n\n  AFPercent_Format(nDec, sepStyle, 
percentPrepend = false) {\n    if (typeof nDec !== "numb
 er") {\n      return;\n    }\n\n    if (typeof sepStyle !== "number") {\n      return;\n    }\n\n    if 
(nDec < 0) {\n      throw new Error("Invalid nDec value in AFPercent_Format");\n    }\n\n    const event = 
globalThis.event;\n\n    if (nDec > 512) {\n      event.value = "%";\n      return;\n    }\n\n    nDec = 
Math.floor(nDec);\n    sepStyle = Math.min(Math.max(0, Math.floor(sepStyle)), 4);\n    let value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      event.value = "%";\n      return;\n    
}\n\n    const formatStr = `%,${sepStyle}.${nDec}f`;\n    value = this._util.printf(formatStr, value * 
100);\n\n    if (percentPrepend) {\n      event.value = `%${value}`;\n    } else {\n      event.value = 
`${value}%`;\n    }\n  }\n\n  AFPercent_Keystroke(nDec, sepStyle) {\n    this.AFNumber_Keystroke(nDec, 
sepStyle, 0, 0, "", true);\n  }\n\n  AFDate_FormatEx(cFormat) {\n    const event = globalThis.event;\n    
const value = event.value;\n\n    if (!value) {\n      retu
 rn;\n    }\n\n    const date = this._parseDate(cFormat, value);\n\n    if (date !== null) {\n      
event.value = this._util.printd(cFormat, date);\n    }\n  }\n\n  AFDate_Format(pdf) {\n    if (pdf >= 0 && 
pdf < this._dateFormats.length) {\n      this.AFDate_FormatEx(this._dateFormats[pdf]);\n    }\n  }\n\n  
AFDate_KeystrokeEx(cFormat) {\n    const event = globalThis.event;\n\n    if (!event.willCommit) {\n      
return;\n    }\n\n    const value = this.AFMergeChange(event);\n\n    if (!value) {\n      return;\n    }\n\n 
   if (this._parseDate(cFormat, value) === null) {\n      const invalid = 
_constants.GlobalConstants.IDS_INVALID_DATE;\n      const invalid2 = 
_constants.GlobalConstants.IDS_INVALID_DATE2;\n      const err = `${invalid} 
${this._mkTargetName(event)}${invalid2}${cFormat}`;\n\n      this._app.alert(err);\n\n      event.rc = 
false;\n    }\n  }\n\n  AFDate_Keystroke(pdf) {\n    if (pdf >= 0 && pdf < this._dateFormats.length) {\n      
this.AFDate_KeystrokeEx(this._dateForm
 ats[pdf]);\n    }\n  }\n\n  AFRange_Validate(bGreaterThan, nGreaterThan, bLessThan, nLessThan) {\n    const 
event = globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    const value = 
this.AFMakeNumber(event.value);\n\n    if (value === null) {\n      return;\n    }\n\n    bGreaterThan = 
!!bGreaterThan;\n    bLessThan = !!bLessThan;\n\n    if (bGreaterThan) {\n      nGreaterThan = 
this.AFMakeNumber(nGreaterThan);\n\n      if (nGreaterThan === null) {\n        return;\n      }\n    }\n\n   
 if (bLessThan) {\n      nLessThan = this.AFMakeNumber(nLessThan);\n\n      if (nLessThan === null) {\n       
 return;\n      }\n    }\n\n    let err = "";\n\n    if (bGreaterThan && bLessThan) {\n      if (value < 
nGreaterThan || value > nLessThan) {\n        err = 
this._util.printf(_constants.GlobalConstants.IDS_GT_AND_LT, nGreaterThan, nLessThan);\n      }\n    } else if 
(bGreaterThan) {\n      if (value < nGreaterThan) {\n        err = this._util.printf(_constants.GlobalCons
 tants.IDS_GREATER_THAN, nGreaterThan);\n      }\n    } else if (value > nLessThan) {\n      err = 
this._util.printf(_constants.GlobalConstants.IDS_LESS_THAN, nLessThan);\n    }\n\n    if (err) {\n      
this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  AFSimple(cFunction, nValue1, nValue2) {\n   
 const value1 = this.AFMakeNumber(nValue1);\n\n    if (value1 === null) {\n      throw new Error("Invalid 
nValue1 in AFSimple");\n    }\n\n    const value2 = this.AFMakeNumber(nValue2);\n\n    if (value2 === null) 
{\n      throw new Error("Invalid nValue2 in AFSimple");\n    }\n\n    switch (cFunction) {\n      case 
"AVG":\n        return (value1 + value2) / 2;\n\n      case "SUM":\n        return value1 + value2;\n\n      
case "PRD":\n        return value1 * value2;\n\n      case "MIN":\n        return Math.min(value1, 
value2);\n\n      case "MAX":\n        return Math.max(value1, value2);\n    }\n\n    throw new 
Error("Invalid cFunction in AFSimple");\n  }\n\n  AFSimple_Calc
 ulate(cFunction, cFields) {\n    const actions = {\n      AVG: args => args.reduce((acc, value) => acc + 
value, 0) / args.length,\n      SUM: args => args.reduce((acc, value) => acc + value, 0),\n      PRD: args => 
args.reduce((acc, value) => acc * value, 1),\n      MIN: args => args.reduce((acc, value) => Math.min(acc, 
value), Number.MAX_VALUE),\n      MAX: args => args.reduce((acc, value) => Math.max(acc, value), 
Number.MIN_VALUE)\n    };\n\n    if (!(cFunction in actions)) {\n      throw new TypeError("Invalid function 
in AFSimple_Calculate");\n    }\n\n    const event = globalThis.event;\n    const values = [];\n\n    for 
(const cField of cFields) {\n      const field = this._document.getField(cField);\n\n      const number = 
this.AFMakeNumber(field.value);\n\n      if (number !== null) {\n        values.push(number);\n      }\n    
}\n\n    if (values.length === 0) {\n      event.value = cFunction === "PRD" ? 1 : 0;\n      return;\n    
}\n\n    const res = actions[cFunction](val
 ues);\n    event.value = Math.round(1e6 * res) / 1e6;\n  }\n\n  AFSpecial_Format(psf) {\n    const event = 
globalThis.event;\n\n    if (!event.value) {\n      return;\n    }\n\n    psf = this.AFMakeNumber(psf);\n\n   
 if (psf === null) {\n      throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    let formatStr = 
"";\n\n    switch (psf) {\n      case 0:\n        formatStr = "99999";\n        break;\n\n      case 1:\n     
   formatStr = "99999-9999";\n        break;\n\n      case 2:\n        if (this._util.printx("9999999999", 
event.value).length >= 10) {\n          formatStr = "(999) 999-9999";\n        } else {\n          formatStr 
= "999-9999";\n        }\n\n        break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        
break;\n\n      default:\n        throw new Error("Invalid psf in AFSpecial_Format");\n    }\n\n    
event.value = this._util.printx(formatStr, event.value);\n  }\n\n  AFSpecial_KeystrokeEx(cMask) {\n    if 
(!cMask) {\n      return;\n    }\
 n\n    const event = globalThis.event;\n    const value = this.AFMergeChange(event);\n    const checkers = 
new Map([["9", char => char >= "0" && char <= "9"], ["A", char => "a" <= char && char <= "z" || "A" <= char 
&& char <= "Z"], ["O", char => "a" <= char && char <= "z" || "A" <= char && char <= "Z" || "0" <= char && 
char <= "9"], ["X", char => true]]);\n\n    function _checkValidity(_value, _cMask) {\n      for (let i = 0, 
ii = value.length; i < ii; i++) {\n        const mask = _cMask.charAt(i);\n\n        const char = 
_value.charAt(i);\n\n        const checker = checkers.get(mask);\n\n        if (checker) {\n          if 
(!checker(char)) {\n            return false;\n          }\n        } else if (mask !== char) {\n          
return false;\n        }\n      }\n\n      return true;\n    }\n\n    if (!value) {\n      return;\n    }\n\n 
   const err = `${_constants.GlobalConstants.IDS_INVALID_VALUE} = "${cMask}"`;\n\n    if (value.length > 
cMask.length) {\n      this._app.alert(err
 );\n\n      event.rc = false;\n      return;\n    }\n\n    if (event.willCommit) {\n      if (value.length < 
cMask.length) {\n        this._app.alert(err);\n\n        event.rc = false;\n        return;\n      }\n\n     
 if (!_checkValidity(value, cMask)) {\n        this._app.alert(err);\n\n        event.rc = false;\n        
return;\n      }\n\n      event.value += cMask.subString(value.length);\n      return;\n    }\n\n    if 
(value.length < cMask.length) {\n      cMask = cMask.substring(0, value.length);\n    }\n\n    if 
(!_checkValidity(value, cMask)) {\n      this._app.alert(err);\n\n      event.rc = false;\n    }\n  }\n\n  
AFSpecial_Keystroke(psf) {\n    const event = globalThis.event;\n\n    if (!event.value) {\n      return;\n   
 }\n\n    psf = this.AFMakeNumber(psf);\n\n    if (psf === null) {\n      throw new Error("Invalid psf in 
AFSpecial_Keystroke");\n    }\n\n    let formatStr;\n\n    switch (psf) {\n      case 0:\n        formatStr = 
"99999";\n        break;\n\n      ca
 se 1:\n        formatStr = "99999-9999";\n        break;\n\n      case 2:\n        const finalLen = 
event.value.length + event.change.length + event.selStart - event.selEnd;\n\n        if (finalLen >= 8) {\n   
       formatStr = "(999) 999-9999";\n        } else {\n          formatStr = "999-9999";\n        }\n\n      
  break;\n\n      case 3:\n        formatStr = "999-99-9999";\n        break;\n\n      default:\n        
throw new Error("Invalid psf in AFSpecial_Keystroke");\n    }\n\n    this.AFSpecial_KeystrokeEx(formatStr);\n 
 }\n\n  AFTime_FormatEx(cFormat) {\n    this.AFDate_FormatEx(cFormat);\n  }\n\n  AFTime_Format(pdf) {\n    if 
(pdf >= 0 && pdf < this._timeFormats.length) {\n      this.AFDate_FormatEx(this._timeFormats[pdf]);\n    }\n  
}\n\n  AFTime_KeystrokeEx(cFormat) {\n    this.AFDate_KeystrokeEx(cFormat);\n  }\n\n  AFTime_Keystroke(pdf) 
{\n    if (pdf >= 0 && pdf < this._timeFormats.length) {\n      
this.AFDate_KeystrokeEx(this._timeFormats[pdf]);\n    }\n  }\n\n  eMai
 lValidate(str) {\n    return this._emailRegex.test(str);\n  }\n\n}\n\nexports.AForm = AForm;\n\n/***/ 
}),\n/* 9 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.App = void 0;\n\nvar 
_color = __w_pdfjs_require__(4);\n\nvar _event = __w_pdfjs_require__(10);\n\nvar _fullscreen = 
__w_pdfjs_require__(11);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nvar _thermometer = 
__w_pdfjs_require__(12);\n\nconst VIEWER_TYPE = "PDF.js";\nconst VIEWER_VARIATION = "Full";\nconst 
VIEWER_VERSION = "10.0";\nconst FORMS_VERSION = undefined;\n\nclass App extends _pdf_object.PDFObject {\n  
constructor(data) {\n    super(data);\n    this.calculate = true;\n    this._constants = null;\n    
this._focusRect = true;\n    this._fs = null;\n    this._language = App._getLanguage(data.language);\n    
this._openInPlace = false;\n    this._platform = App._getPlatform(data.platform);\n    this._runtimeHighligh
 t = false;\n    this._runtimeHighlightColor = ["T"];\n    this._thermometer = null;\n    this._toolbar = 
false;\n    this._document = data._document;\n    this._proxyHandler = data.proxyHandler;\n    this._objects 
= Object.create(null);\n    this._eventDispatcher = new _event.EventDispatcher(this._document, 
data.calculationOrder, this._objects);\n    this._timeoutIds = new WeakMap();\n\n    if (typeof 
FinalizationRegistry !== "undefined") {\n      this._timeoutIdsRegistry = new 
FinalizationRegistry(this._cleanTimeout.bind(this));\n    } else {\n      this._timeoutIdsRegistry = null;\n  
  }\n\n    this._timeoutCallbackIds = new Map();\n    this._timeoutCallbackId = 0;\n    this._globalEval = 
data.globalEval;\n    this._externalCall = data.externalCall;\n  }\n\n  _dispatchEvent(pdfEvent) {\n    
this._eventDispatcher.dispatch(pdfEvent);\n  }\n\n  _registerTimeoutCallback(cExpr) {\n    const id = 
this._timeoutCallbackId++;\n\n    this._timeoutCallbackIds.set(id, cExpr);\n\n    return id
 ;\n  }\n\n  _unregisterTimeoutCallback(id) {\n    this._timeoutCallbackIds.delete(id);\n  }\n\n  
_evalCallback({\n    callbackId,\n    interval\n  }) {\n    const expr = 
this._timeoutCallbackIds.get(callbackId);\n\n    if (!interval) {\n      
this._unregisterTimeoutCallback(callbackId);\n    }\n\n    if (expr) {\n      this._globalEval(expr);\n    
}\n  }\n\n  _registerTimeout(callbackId, interval) {\n    const timeout = Object.create(null);\n    const id 
= {\n      callbackId,\n      interval\n    };\n\n    this._timeoutIds.set(timeout, id);\n\n    if 
(this._timeoutIdsRegistry) {\n      this._timeoutIdsRegistry.register(timeout, id);\n    }\n\n    return 
timeout;\n  }\n\n  _unregisterTimeout(timeout) {\n    if (this._timeoutIdsRegistry) {\n      
this._timeoutIdsRegistry.unregister(timeout);\n    }\n\n    const data = this._timeoutIds.get(timeout);\n\n   
 if (!data) {\n      return;\n    }\n\n    this._timeoutIds.delete(timeout);\n\n    
this._cleanTimeout(data);\n  }\n\n  _cleanTimeo
 ut({\n    callbackId,\n    interval\n  }) {\n    this._unregisterTimeoutCallback(callbackId);\n\n    if 
(interval) {\n      this._externalCall("clearInterval", [callbackId]);\n    } else {\n      
this._externalCall("clearTimeout", [callbackId]);\n    }\n  }\n\n  static _getPlatform(platform) {\n    if 
(typeof platform === "string") {\n      platform = platform.toLowerCase();\n\n      if 
(platform.includes("win")) {\n        return "WIN";\n      } else if (platform.includes("mac")) {\n        
return "MAC";\n      }\n    }\n\n    return "UNIX";\n  }\n\n  static _getLanguage(language) {\n    const 
[main, sub] = language.toLowerCase().split(/[-_]/);\n\n    switch (main) {\n      case "zh":\n        if (sub 
=== "cn" || sub === "sg") {\n          return "CHS";\n        }\n\n        return "CHT";\n\n      case 
"da":\n        return "DAN";\n\n      case "de":\n        return "DEU";\n\n      case "es":\n        return 
"ESP";\n\n      case "fr":\n        return "FRA";\n\n      case "it":\n   
      return "ITA";\n\n      case "ko":\n        return "KOR";\n\n      case "ja":\n        return "JPN";\n\n 
     case "nl":\n        return "NLD";\n\n      case "no":\n        return "NOR";\n\n      case "pt":\n       
 if (sub === "br") {\n          return "PTB";\n        }\n\n        return "ENU";\n\n      case "fi":\n       
 return "SUO";\n\n      case "SV":\n        return "SVE";\n\n      default:\n        return "ENU";\n    }\n  
}\n\n  get activeDocs() {\n    return [this._document.wrapped];\n  }\n\n  set activeDocs(_) {\n    throw new 
Error("app.activeDocs is read-only");\n  }\n\n  get constants() {\n    if (!this._constants) {\n      
this._constants = Object.freeze({\n        align: Object.freeze({\n          left: 0,\n          center: 1,\n 
         right: 2,\n          top: 3,\n          bottom: 4\n        })\n      });\n    }\n\n    return 
this._constants;\n  }\n\n  set constants(_) {\n    throw new Error("app.constants is read-only");\n  }\n\n  
get focusRect() {\n    retu
 rn this._focusRect;\n  }\n\n  set focusRect(val) {\n    this._focusRect = val;\n  }\n\n  get formsVersion() 
{\n    return FORMS_VERSION;\n  }\n\n  set formsVersion(_) {\n    throw new Error("app.formsVersion is 
read-only");\n  }\n\n  get fromPDFConverters() {\n    return [];\n  }\n\n  set fromPDFConverters(_) {\n    
throw new Error("app.fromPDFConverters is read-only");\n  }\n\n  get fs() {\n    if (this._fs === null) {\n   
   this._fs = new Proxy(new _fullscreen.FullScreen({\n        send: this._send\n      }), 
this._proxyHandler);\n    }\n\n    return this._fs;\n  }\n\n  set fs(_) {\n    throw new Error("app.fs is 
read-only");\n  }\n\n  get language() {\n    return this._language;\n  }\n\n  set language(_) {\n    throw 
new Error("app.language is read-only");\n  }\n\n  get media() {\n    return undefined;\n  }\n\n  set media(_) 
{\n    throw new Error("app.media is read-only");\n  }\n\n  get monitors() {\n    return [];\n  }\n\n  set 
monitors(_) {\n    throw new Error("app.monitors 
 is read-only");\n  }\n\n  get numPlugins() {\n    return 0;\n  }\n\n  set numPlugins(_) {\n    throw new 
Error("app.numPlugins is read-only");\n  }\n\n  get openInPlace() {\n    return this._openInPlace;\n  }\n\n  
set openInPlace(val) {\n    this._openInPlace = val;\n  }\n\n  get platform() {\n    return this._platform;\n 
 }\n\n  set platform(_) {\n    throw new Error("app.platform is read-only");\n  }\n\n  get plugins() {\n    
return [];\n  }\n\n  set plugins(_) {\n    throw new Error("app.plugins is read-only");\n  }\n\n  get 
printColorProfiles() {\n    return [];\n  }\n\n  set printColorProfiles(_) {\n    throw new 
Error("app.printColorProfiles is read-only");\n  }\n\n  get printerNames() {\n    return [];\n  }\n\n  set 
printerNames(_) {\n    throw new Error("app.printerNames is read-only");\n  }\n\n  get runtimeHighlight() {\n 
   return this._runtimeHighlight;\n  }\n\n  set runtimeHighlight(val) {\n    this._runtimeHighlight = val;\n  
}\n\n  get runtimeHighlightColor() {\n    re
 turn this._runtimeHighlightColor;\n  }\n\n  set runtimeHighlightColor(val) {\n    if 
(_color.Color._isValidColor(val)) {\n      this._runtimeHighlightColor = val;\n    }\n  }\n\n  get 
thermometer() {\n    if (this._thermometer === null) {\n      this._thermometer = new Proxy(new 
_thermometer.Thermometer({\n        send: this._send\n      }), this._proxyHandler);\n    }\n\n    return 
this._thermometer;\n  }\n\n  set thermometer(_) {\n    throw new Error("app.thermometer is read-only");\n  
}\n\n  get toolbar() {\n    return this._toolbar;\n  }\n\n  set toolbar(val) {\n    this._toolbar = val;\n  
}\n\n  get toolbarHorizontal() {\n    return this.toolbar;\n  }\n\n  set toolbarHorizontal(value) {\n    
this.toolbar = value;\n  }\n\n  get toolbarVertical() {\n    return this.toolbar;\n  }\n\n  set 
toolbarVertical(value) {\n    this.toolbar = value;\n  }\n\n  get viewerType() {\n    return VIEWER_TYPE;\n  
}\n\n  set viewerType(_) {\n    throw new Error("app.viewerType is read-only");\n  }\n
 \n  get viewerVariation() {\n    return VIEWER_VARIATION;\n  }\n\n  set viewerVariation(_) {\n    throw new 
Error("app.viewerVariation is read-only");\n  }\n\n  get viewerVersion() {\n    return VIEWER_VERSION;\n  
}\n\n  set viewerVersion(_) {\n    throw new Error("app.viewerVersion is read-only");\n  }\n\n  addMenuItem() 
{}\n\n  addSubMenu() {}\n\n  addToolButton() {}\n\n  alert(cMsg, nIcon = 0, nType = 0, cTitle = "PDF.js", 
oDoc = null, oCheckbox = null) {\n    this._externalCall("alert", [cMsg]);\n  }\n\n  beep() {}\n\n  
beginPriv() {}\n\n  browseForDoc() {}\n\n  clearInterval(oInterval) {\n    
this._unregisterTimeout(oInterval);\n  }\n\n  clearTimeOut(oTime) {\n    this._unregisterTimeout(oTime);\n  
}\n\n  endPriv() {}\n\n  execDialog() {}\n\n  execMenuItem() {}\n\n  getNthPlugInName() {}\n\n  getPath() 
{}\n\n  goBack() {}\n\n  goForward() {}\n\n  hideMenuItem() {}\n\n  hideToolbarButton() {}\n\n  launchURL() 
{}\n\n  listMenuItems() {}\n\n  listToolbarButtons() {}\n\n  loadPolic
 yFile() {}\n\n  mailGetAddrs() {}\n\n  mailMsg() {}\n\n  newDoc() {}\n\n  newCollection() {}\n\n  newFDF() 
{}\n\n  openDoc() {}\n\n  openFDF() {}\n\n  popUpMenu() {}\n\n  popUpMenuEx() {}\n\n  removeToolButton() 
{}\n\n  response(cQuestion, cTitle = "", cDefault = "", bPassword = "", cLabel = "") {\n    return 
this._externalCall("prompt", [cQuestion, cDefault || ""]);\n  }\n\n  setInterval(cExpr, nMilliseconds) {\n    
if (typeof cExpr !== "string") {\n      throw new TypeError("First argument of app.setInterval must be a 
string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw new TypeError("Second argument 
of app.setInterval must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setInterval", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, true);\n  }\n\n  setTimeOut(cExpr, 
nMilliseconds) {\n    if (typeof cExpr !== "string") {\n      throw new TypeError("First argument 
 of app.setTimeOut must be a string");\n    }\n\n    if (typeof nMilliseconds !== "number") {\n      throw 
new TypeError("Second argument of app.setTimeOut must be a number");\n    }\n\n    const callbackId = 
this._registerTimeoutCallback(cExpr);\n\n    this._externalCall("setTimeout", [callbackId, 
nMilliseconds]);\n\n    return this._registerTimeout(callbackId, false);\n  }\n\n  trustedFunction() {}\n\n  
trustPropagatorFunction() {}\n\n}\n\nexports.App = App;\n\n/***/ }),\n/* 10 */\n/***/ 
((__unused_webpack_module, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.EventDispatcher = exports.Event = void 0;\n\nclass Event {\n  constructor(data) {\n    
this.change = data.change || "";\n    this.changeEx = data.changeEx || null;\n    this.commitKey = 
data.commitKey || 0;\n    this.fieldFull = data.fieldFull || false;\n    this.keyDown = data.keyDown || 
false;\n    this.modifier = data.modifier || false;\n    this.name = data.name;\n    th
 is.rc = true;\n    this.richChange = data.richChange || [];\n    this.richChangeEx = data.richChangeEx || 
[];\n    this.richValue = data.richValue || [];\n    this.selEnd = data.selEnd || -1;\n    this.selStart = 
data.selStart || -1;\n    this.shift = data.shift || false;\n    this.source = data.source || null;\n    
this.target = data.target || null;\n    this.targetName = "";\n    this.type = "Field";\n    this.value = 
data.value || "";\n    this.willCommit = data.willCommit || false;\n  }\n\n}\n\nexports.Event = 
Event;\n\nclass EventDispatcher {\n  constructor(document, calculationOrder, objects) {\n    this._document = 
document;\n    this._calculationOrder = calculationOrder;\n    this._objects = objects;\n    
this._document.obj._eventDispatcher = this;\n  }\n\n  mergeChange(event) {\n    let value = event.value;\n\n  
  if (typeof value !== "string") {\n      value = value.toString();\n    }\n\n    const prefix = 
event.selStart >= 0 ? value.substring(0, event.selStart) : "";\n   
  const postfix = event.selEnd >= 0 && event.selEnd <= value.length ? value.substring(event.selEnd) : "";\n   
 return `${prefix}${event.change}${postfix}`;\n  }\n\n  dispatch(baseEvent) {\n    const id = 
baseEvent.id;\n\n    if (!(id in this._objects)) {\n      let event;\n\n      if (id === "doc" || id === 
"page") {\n        event = globalThis.event = new Event(baseEvent);\n        event.source = event.target = 
this._document.wrapped;\n        event.name = baseEvent.name;\n      }\n\n      if (id === "doc") {\n        
this._document.obj._dispatchDocEvent(event.name);\n      } else if (id === "page") {\n        
this._document.obj._dispatchPageEvent(event.name, baseEvent.actions, baseEvent.pageNumber);\n      }\n\n      
return;\n    }\n\n    const name = baseEvent.name;\n    const source = this._objects[id];\n    const event = 
globalThis.event = new Event(baseEvent);\n    let savedChange;\n\n    if (source.obj._isButton()) {\n      
source.obj._id = id;\n      event.value = source.obj.
 _getExportValue(event.value);\n\n      if (name === "Action") {\n        source.obj._value = event.value;\n  
    }\n    }\n\n    if (name === "Keystroke") {\n      savedChange = {\n        value: event.value,\n        
change: event.change,\n        selStart: event.selStart,\n        selEnd: event.selEnd\n      };\n    } else 
if (name === "Blur" || name === "Focus") {\n      Object.defineProperty(event, "value", {\n        
configurable: false,\n        writable: false,\n        enumerable: true,\n        value: event.value\n      
});\n    } else if (name === "Validate") {\n      this.runValidation(source, event);\n      return;\n    
}\n\n    this.runActions(source, source, event, name);\n\n    if (name === "Keystroke") {\n      if 
(event.rc) {\n        if (event.willCommit) {\n          this.runValidation(source, event);\n        } else 
if (event.change !== savedChange.change || event.selStart !== savedChange.selStart || event.selEnd !== 
savedChange.selEnd) {\n          source.wrappe
 d.value = this.mergeChange(event);\n        }\n      } else if (!event.willCommit) {\n        
source.obj._send({\n          id: source.obj._id,\n          value: savedChange.value,\n          selRange: 
[savedChange.selStart, savedChange.selEnd]\n        });\n      }\n    }\n  }\n\n  runValidation(source, 
event) {\n    const hasRan = this.runActions(source, source, event, "Validate");\n\n    if (event.rc) {\n     
 if (hasRan) {\n        source.wrapped.value = event.value;\n      } else {\n        source.obj.value = 
event.value;\n      }\n\n      if (this._document.obj.calculate) {\n        this.runCalculate(source, 
event);\n      }\n\n      event.value = source.obj.value;\n      this.runActions(source, source, event, 
"Format");\n      source.wrapped.valueAsString = event.value;\n    }\n  }\n\n  runActions(source, target, 
event, eventName) {\n    event.source = source.wrapped;\n    event.target = target.wrapped;\n    event.name = 
eventName;\n    event.targetName = target.obj.name;\n  
   event.rc = true;\n    return target.obj._runActions(event);\n  }\n\n  calculateNow() {\n    if 
(!this._calculationOrder) {\n      return;\n    }\n\n    const first = this._calculationOrder[0];\n    const 
source = this._objects[first];\n    globalThis.event = new Event({});\n    this.runCalculate(source, 
globalThis.event);\n  }\n\n  runCalculate(source, event) {\n    if (!this._calculationOrder) {\n      
return;\n    }\n\n    for (const targetId of this._calculationOrder) {\n      if (!(targetId in 
this._objects)) {\n        continue;\n      }\n\n      const target = this._objects[targetId];\n      
this.runActions(source, target, event, "Calculate");\n      this.runActions(target, target, event, 
"Validate");\n\n      if (!event.rc) {\n        continue;\n      }\n\n      target.wrapped.value = 
event.value;\n      this.runActions(target, target, event, "Format");\n      target.wrapped.valueAsString = 
event.value;\n    }\n  }\n\n}\n\nexports.EventDispatcher = EventDispatcher;\n\n/***/
  }),\n/* 11 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.FullScreen = void 
0;\n\nvar _constants = __w_pdfjs_require__(2);\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass 
FullScreen extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    
this._backgroundColor = [];\n    this._clickAdvances = true;\n    this._cursor = _constants.Cursor.hidden;\n  
  this._defaultTransition = "";\n    this._escapeExits = true;\n    this._isFullScreen = true;\n    
this._loop = false;\n    this._timeDelay = 3600;\n    this._usePageTiming = false;\n    this._useTimer = 
false;\n  }\n\n  get backgroundColor() {\n    return this._backgroundColor;\n  }\n\n  set backgroundColor(_) 
{}\n\n  get clickAdvances() {\n    return this._clickAdvances;\n  }\n\n  set clickAdvances(_) {}\n\n  get 
cursor() {\n    return this._cursor;\n  }\n\n  set cursor(_) {}\n\n  get defaultTransition
 () {\n    return this._defaultTransition;\n  }\n\n  set defaultTransition(_) {}\n\n  get escapeExits() {\n   
 return this._escapeExits;\n  }\n\n  set escapeExits(_) {}\n\n  get isFullScreen() {\n    return 
this._isFullScreen;\n  }\n\n  set isFullScreen(_) {}\n\n  get loop() {\n    return this._loop;\n  }\n\n  set 
loop(_) {}\n\n  get timeDelay() {\n    return this._timeDelay;\n  }\n\n  set timeDelay(_) {}\n\n  get 
transitions() {\n    return ["Replace", "WipeRight", "WipeLeft", "WipeDown", "WipeUp", "SplitHorizontalIn", 
"SplitHorizontalOut", "SplitVerticalIn", "SplitVerticalOut", "BlindsHorizontal", "BlindsVertical", "BoxIn", 
"BoxOut", "GlitterRight", "GlitterDown", "GlitterRightDown", "Dissolve", "Random"];\n  }\n\n  set 
transitions(_) {\n    throw new Error("fullscreen.transitions is read-only");\n  }\n\n  get usePageTiming() 
{\n    return this._usePageTiming;\n  }\n\n  set usePageTiming(_) {}\n\n  get useTimer() {\n    return 
this._useTimer;\n  }\n\n  set useTimer(_) {}\n\n}\n\nex
 ports.FullScreen = FullScreen;\n\n/***/ }),\n/* 12 */\n/***/ ((__unused_webpack_module, exports, 
__w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.Thermometer = void 0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Thermometer 
extends _pdf_object.PDFObject {\n  constructor(data) {\n    super(data);\n    this._cancelled = false;\n    
this._duration = 100;\n    this._text = "";\n    this._value = 0;\n  }\n\n  get cancelled() {\n    return 
this._cancelled;\n  }\n\n  set cancelled(_) {\n    throw new Error("thermometer.cancelled is read-only");\n  
}\n\n  get duration() {\n    return this._duration;\n  }\n\n  set duration(val) {\n    this._duration = 
val;\n  }\n\n  get text() {\n    return this._text;\n  }\n\n  set text(val) {\n    this._text = val;\n  }\n\n 
 get value() {\n    return this._value;\n  }\n\n  set value(val) {\n    this._value = val;\n  }\n\n  begin() 
{}\n\n  end() {}\n\n}\n\nexports.Thermometer = Thermome
 ter;\n\n/***/ }),\n/* 13 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Console = void 
0;\n\nvar _pdf_object = __w_pdfjs_require__(6);\n\nclass Console extends _pdf_object.PDFObject {\n  clear() 
{\n    this._send({\n      id: "clear"\n    });\n  }\n\n  hide() {}\n\n  println(msg) {\n    if (typeof msg 
=== "string") {\n      this._send({\n        command: "println",\n        value: "PDF.js Console:: " + msg\n  
    });\n    }\n  }\n\n  show() {}\n\n}\n\nexports.Console = Console;\n\n/***/ }),\n/* 14 */\n/***/ 
((__unused_webpack_module, exports, __w_pdfjs_require__) => {\n\n\n\nObject.defineProperty(exports, 
"__esModule", ({\n  value: true\n}));\nexports.Doc = void 0;\n\nvar _common = __w_pdfjs_require__(7);\n\nvar 
_pdf_object = __w_pdfjs_require__(6);\n\nvar _print_params = __w_pdfjs_require__(15);\n\nvar _constants = 
__w_pdfjs_require__(2);\n\nclass InfoProxyHandler {\n  stat
 ic get(obj, prop) {\n    return obj[prop.toLowerCase()];\n  }\n\n  static set(obj, prop, value) {\n    throw 
new Error(`doc.info.${prop} is read-only`);\n  }\n\n}\n\nclass Doc extends _pdf_object.PDFObject {\n  
constructor(data) {\n    super(data);\n    this._expandos = globalThis;\n    this._baseURL = data.baseURL || 
"";\n    this._calculate = true;\n    this._delay = false;\n    this._dirty = false;\n    this._disclosed = 
false;\n    this._media = undefined;\n    this._metadata = data.metadata || "";\n    this._noautocomplete = 
undefined;\n    this._nocache = undefined;\n    this._spellDictionaryOrder = [];\n    
this._spellLanguageOrder = [];\n    this._printParams = null;\n    this._fields = new Map();\n    
this._fieldNames = [];\n    this._event = null;\n    this._author = data.Author || "";\n    this._creator = 
data.Creator || "";\n    this._creationDate = this._getDate(data.CreationDate) || null;\n    this._docID = 
data.docID || ["", ""];\n    this._documentFileName = data.fil
 ename || "";\n    this._filesize = data.filesize || 0;\n    this._keywords = data.Keywords || "";\n    
this._layout = data.layout || "";\n    this._modDate = this._getDate(data.ModDate) || null;\n    
this._numFields = 0;\n    this._numPages = data.numPages || 1;\n    this._pageNum = data.pageNum || 0;\n    
this._producer = data.Producer || "";\n    this._subject = data.Subject || "";\n    this._title = data.Title 
|| "";\n    this._URL = data.URL || "";\n    this._info = new Proxy({\n      title: this._title,\n      
author: this._author,\n      authors: data.authors || [this._author],\n      subject: this._subject,\n      
keywords: this._keywords,\n      creator: this._creator,\n      producer: this._producer,\n      
creationdate: this._creationDate,\n      moddate: this._modDate,\n      trapped: data.Trapped || "Unknown"\n  
  }, InfoProxyHandler);\n    this._zoomType = _constants.ZoomType.none;\n    this._zoom = data.zoom || 100;\n 
   this._actions = (0, _common.createActionsMap)(da
 ta.actions);\n    this._globalEval = data.globalEval;\n    this._pageActions = new Map();\n  }\n\n  
_dispatchDocEvent(name) {\n    if (name === "Open") {\n      const dontRun = new Set(["WillClose", 
"WillSave", "DidSave", "WillPrint", "DidPrint", "OpenAction"]);\n\n      for (const actionName of 
this._actions.keys()) {\n        if (!dontRun.has(actionName)) {\n          this._runActions(actionName);\n   
     }\n      }\n\n      this._runActions("OpenAction");\n    } else {\n      this._runActions(name);\n    
}\n  }\n\n  _dispatchPageEvent(name, actions, pageNumber) {\n    if (name === "PageOpen") {\n      if 
(!this._pageActions.has(pageNumber)) {\n        this._pageActions.set(pageNumber, (0, 
_common.createActionsMap)(actions));\n      }\n\n      this._pageNum = pageNumber - 1;\n    }\n\n    actions 
= this._pageActions.get(pageNumber)?.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _runActions(name
 ) {\n    const actions = this._actions.get(name);\n\n    if (actions) {\n      for (const action of actions) 
{\n        this._globalEval(action);\n      }\n    }\n  }\n\n  _addField(name, field) {\n    
this._fields.set(name, field);\n\n    this._fieldNames.push(name);\n\n    this._numFields++;\n  }\n\n  
_getDate(date) {\n    if (!date || date.length < 15 || !date.startsWith("D:")) {\n      return date;\n    
}\n\n    date = date.substring(2);\n    const year = date.substring(0, 4);\n    const month = 
date.substring(4, 6);\n    const day = date.substring(6, 8);\n    const hour = date.substring(8, 10);\n    
const minute = date.substring(10, 12);\n    const o = date.charAt(12);\n    let second, offsetPos;\n\n    if 
(o === "Z" || o === "+" || o === "-") {\n      second = "00";\n      offsetPos = 12;\n    } else {\n      
second = date.substring(12, 14);\n      offsetPos = 14;\n    }\n\n    const offset = 
date.substring(offsetPos).replaceAll("\'", "");\n    return new Date(`${year}-${month
 }-${day}T${hour}:${minute}:${second}${offset}`);\n  }\n\n  get author() {\n    return this._author;\n  }\n\n 
 set author(_) {\n    throw new Error("doc.author is read-only");\n  }\n\n  get baseURL() {\n    return 
this._baseURL;\n  }\n\n  set baseURL(baseURL) {\n    this._baseURL = baseURL;\n  }\n\n  get bookmarkRoot() 
{\n    return undefined;\n  }\n\n  set bookmarkRoot(_) {\n    throw new Error("doc.bookmarkRoot is 
read-only");\n  }\n\n  get calculate() {\n    return this._calculate;\n  }\n\n  set calculate(calculate) {\n  
  this._calculate = calculate;\n  }\n\n  get creator() {\n    return this._creator;\n  }\n\n  set creator(_) 
{\n    throw new Error("doc.creator is read-only");\n  }\n\n  get dataObjects() {\n    return [];\n  }\n\n  
set dataObjects(_) {\n    throw new Error("doc.dataObjects is read-only");\n  }\n\n  get delay() {\n    
return this._delay;\n  }\n\n  set delay(delay) {\n    this._delay = delay;\n  }\n\n  get dirty() {\n    
return this._dirty;\n  }\n\n  set dirty(dir
 ty) {\n    this._dirty = dirty;\n  }\n\n  get disclosed() {\n    return this._disclosed;\n  }\n\n  set 
disclosed(disclosed) {\n    this._disclosed = disclosed;\n  }\n\n  get docID() {\n    return this._docID;\n  
}\n\n  set docID(_) {\n    throw new Error("doc.docID is read-only");\n  }\n\n  get documentFileName() {\n    
return this._documentFileName;\n  }\n\n  set documentFileName(_) {\n    throw new Error("doc.documentFileName 
is read-only");\n  }\n\n  get dynamicXFAForm() {\n    return false;\n  }\n\n  set dynamicXFAForm(_) {\n    
throw new Error("doc.dynamicXFAForm is read-only");\n  }\n\n  get external() {\n    return true;\n  }\n\n  
set external(_) {\n    throw new Error("doc.external is read-only");\n  }\n\n  get filesize() {\n    return 
this._filesize;\n  }\n\n  set filesize(_) {\n    throw new Error("doc.filesize is read-only");\n  }\n\n  get 
hidden() {\n    return false;\n  }\n\n  set hidden(_) {\n    throw new Error("doc.hidden is read-only");\n  
}\n\n  get hostContainer()
  {\n    return undefined;\n  }\n\n  set hostContainer(_) {\n    throw new Error("doc.hostContainer is 
read-only");\n  }\n\n  get icons() {\n    return undefined;\n  }\n\n  set icons(_) {\n    throw new 
Error("doc.icons is read-only");\n  }\n\n  get info() {\n    return this._info;\n  }\n\n  set info(_) {\n    
throw new Error("doc.info is read-only");\n  }\n\n  get innerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set innerAppWindowRect(_) {\n    throw new Error("doc.innerAppWindowRect is read-only");\n  }\n\n  get 
innerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set innerDocWindowRect(_) {\n    throw new 
Error("doc.innerDocWindowRect is read-only");\n  }\n\n  get isModal() {\n    return false;\n  }\n\n  set 
isModal(_) {\n    throw new Error("doc.isModal is read-only");\n  }\n\n  get keywords() {\n    return 
this._keywords;\n  }\n\n  set keywords(_) {\n    throw new Error("doc.keywords is read-only");\n  }\n\n  get 
layout() {\n    return this._layout;\n  }\n\n  set
  layout(value) {\n    if (typeof value !== "string") {\n      return;\n    }\n\n    if (value !== 
"SinglePage" && value !== "OneColumn" && value !== "TwoColumnLeft" && value !== "TwoPageLeft" && value !== 
"TwoColumnRight" && value !== "TwoPageRight") {\n      value = "SinglePage";\n    }\n\n    this._send({\n     
 command: "layout",\n      value\n    });\n\n    this._layout = value;\n  }\n\n  get media() {\n    return 
this._media;\n  }\n\n  set media(media) {\n    this._media = media;\n  }\n\n  get metadata() {\n    return 
this._metadata;\n  }\n\n  set metadata(metadata) {\n    this._metadata = metadata;\n  }\n\n  get modDate() 
{\n    return this._modDate;\n  }\n\n  set modDate(_) {\n    throw new Error("doc.modDate is read-only");\n  
}\n\n  get mouseX() {\n    return 0;\n  }\n\n  set mouseX(_) {\n    throw new Error("doc.mouseX is 
read-only");\n  }\n\n  get mouseY() {\n    return 0;\n  }\n\n  set mouseY(_) {\n    throw new 
Error("doc.mouseY is read-only");\n  }\n\n  get noautocompl
 ete() {\n    return this._noautocomplete;\n  }\n\n  set noautocomplete(noautocomplete) {\n    
this._noautocomplete = noautocomplete;\n  }\n\n  get nocache() {\n    return this._nocache;\n  }\n\n  set 
nocache(nocache) {\n    this._nocache = nocache;\n  }\n\n  get numFields() {\n    return this._numFields;\n  
}\n\n  set numFields(_) {\n    throw new Error("doc.numFields is read-only");\n  }\n\n  get numPages() {\n    
return this._numPages;\n  }\n\n  set numPages(_) {\n    throw new Error("doc.numPages is read-only");\n  
}\n\n  get numTemplates() {\n    return 0;\n  }\n\n  set numTemplates(_) {\n    throw new 
Error("doc.numTemplates is read-only");\n  }\n\n  get outerAppWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set outerAppWindowRect(_) {\n    throw new Error("doc.outerAppWindowRect is read-only");\n  }\n\n  get 
outerDocWindowRect() {\n    return [0, 0, 0, 0];\n  }\n\n  set outerDocWindowRect(_) {\n    throw new 
Error("doc.outerDocWindowRect is read-only");\n  }\n\n  get pageN
 um() {\n    return this._pageNum;\n  }\n\n  set pageNum(value) {\n    if (typeof value !== "number" || value 
< 0 || value >= this._numPages) {\n      return;\n    }\n\n    this._send({\n      command: "page-num",\n     
 value\n    });\n\n    this._pageNum = value;\n  }\n\n  get pageWindowRect() {\n    return [0, 0, 0, 0];\n  
}\n\n  set pageWindowRect(_) {\n    throw new Error("doc.pageWindowRect is read-only");\n  }\n\n  get path() 
{\n    return "";\n  }\n\n  set path(_) {\n    throw new Error("doc.path is read-only");\n  }\n\n  get 
permStatusReady() {\n    return true;\n  }\n\n  set permStatusReady(_) {\n    throw new 
Error("doc.permStatusReady is read-only");\n  }\n\n  get producer() {\n    return this._producer;\n  }\n\n  
set producer(_) {\n    throw new Error("doc.producer is read-only");\n  }\n\n  get requiresFullSave() {\n    
return false;\n  }\n\n  set requiresFullSave(_) {\n    throw new Error("doc.requiresFullSave is 
read-only");\n  }\n\n  get securityHandler() {\n    retur
 n null;\n  }\n\n  set securityHandler(_) {\n    throw new Error("doc.securityHandler is read-only");\n  
}\n\n  get selectedAnnots() {\n    return [];\n  }\n\n  set selectedAnnots(_) {\n    throw new 
Error("doc.selectedAnnots is read-only");\n  }\n\n  get sounds() {\n    return [];\n  }\n\n  set sounds(_) 
{\n    throw new Error("doc.sounds is read-only");\n  }\n\n  get spellDictionaryOrder() {\n    return 
this._spellDictionaryOrder;\n  }\n\n  set spellDictionaryOrder(spellDictionaryOrder) {\n    
this._spellDictionaryOrder = spellDictionaryOrder;\n  }\n\n  get spellLanguageOrder() {\n    return 
this._spellLanguageOrder;\n  }\n\n  set spellLanguageOrder(spellLanguageOrder) {\n    
this._spellLanguageOrder = spellLanguageOrder;\n  }\n\n  get subject() {\n    return this._subject;\n  }\n\n  
set subject(_) {\n    throw new Error("doc.subject is read-only");\n  }\n\n  get templates() {\n    return 
[];\n  }\n\n  set templates(_) {\n    throw new Error("doc.templates is read-only");\n  }\n\n 
  get title() {\n    return this._title;\n  }\n\n  set title(_) {\n    throw new Error("doc.title is 
read-only");\n  }\n\n  get URL() {\n    return this._URL;\n  }\n\n  set URL(_) {\n    throw new 
Error("doc.URL is read-only");\n  }\n\n  get viewState() {\n    return undefined;\n  }\n\n  set viewState(_) 
{\n    throw new Error("doc.viewState is read-only");\n  }\n\n  get xfa() {\n    return this._xfa;\n  }\n\n  
set xfa(_) {\n    throw new Error("doc.xfa is read-only");\n  }\n\n  get XFAForeground() {\n    return 
false;\n  }\n\n  set XFAForeground(_) {\n    throw new Error("doc.XFAForeground is read-only");\n  }\n\n  get 
zoomType() {\n    return this._zoomType;\n  }\n\n  set zoomType(type) {\n    if (typeof type !== "string") 
{\n      return;\n    }\n\n    switch (type) {\n      case _constants.ZoomType.none:\n        this._send({\n  
        command: "zoom",\n          value: 1\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitP:\n        this._send({\n          comm
 and: "zoom",\n          value: "page-fit"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitW:\n        this._send({\n          command: "zoom",\n          value: "page-width"\n  
      });\n\n        break;\n\n      case _constants.ZoomType.fitH:\n        this._send({\n          command: 
"zoom",\n          value: "page-height"\n        });\n\n        break;\n\n      case 
_constants.ZoomType.fitV:\n        this._send({\n          command: "zoom",\n          value: "auto"\n        
});\n\n        break;\n\n      case _constants.ZoomType.pref:\n      case _constants.ZoomType.refW:\n        
break;\n\n      default:\n        return;\n    }\n\n    this._zoomType = type;\n  }\n\n  get zoom() {\n    
return this._zoom;\n  }\n\n  set zoom(value) {\n    if (typeof value !== "number" || value < 8.33 || value > 
6400) {\n      return;\n    }\n\n    this._send({\n      command: "zoom",\n      value: value / 100\n    
});\n  }\n\n  addAnnot() {}\n\n  addField() {}\n\n  addIcon() {}\
 n\n  addLink() {}\n\n  addRecipientListCryptFilter() {}\n\n  addRequirement() {}\n\n  addScript() {}\n\n  
addThumbnails() {}\n\n  addWatermarkFromFile() {}\n\n  addWatermarkFromText() {}\n\n  addWeblinks() {}\n\n  
bringToFront() {}\n\n  calculateNow() {\n    this._eventDispatcher.calculateNow();\n  }\n\n  closeDoc() 
{}\n\n  colorConvertPage() {}\n\n  createDataObject() {}\n\n  createTemplate() {}\n\n  deletePages() {}\n\n  
deleteSound() {}\n\n  embedDocAsDataObject() {}\n\n  embedOutputIntent() {}\n\n  encryptForRecipients() 
{}\n\n  encryptUsingPolicy() {}\n\n  exportAsFDF() {}\n\n  exportAsFDFStr() {}\n\n  exportAsText() {}\n\n  
exportAsXFDF() {}\n\n  exportAsXFDFStr() {}\n\n  exportDataObject() {}\n\n  exportXFAData() {}\n\n  
extractPages() {}\n\n  flattenPages() {}\n\n  getAnnot() {}\n\n  getAnnots() {}\n\n  getAnnot3D() {}\n\n  
getAnnots3D() {}\n\n  getColorConvertAction() {}\n\n  getDataObject() {}\n\n  getDataObjectContents() {}\n\n  
getField(cName) {\n    if (typeof cName !==
  "string") {\n      throw new TypeError("Invalid field name: must be a string");\n    }\n\n    const 
searchedField = this._fields.get(cName);\n\n    if (searchedField) {\n      return searchedField;\n    }\n\n  
  for (const [name, field] of this._fields.entries()) {\n      if (name.includes(cName)) {\n        return 
field;\n      }\n    }\n\n    return undefined;\n  }\n\n  getIcon() {}\n\n  getLegalWarnings() {}\n\n  
getLinks() {}\n\n  getNthFieldName(nIndex) {\n    if (typeof nIndex !== "number") {\n      throw new 
TypeError("Invalid field index: must be a number");\n    }\n\n    if (0 <= nIndex && nIndex < this.numFields) 
{\n      return this._fieldNames[Math.trunc(nIndex)];\n    }\n\n    return null;\n  }\n\n  getNthTemplate() 
{\n    return null;\n  }\n\n  getOCGs() {}\n\n  getOCGOrder() {}\n\n  getPageBox() {}\n\n  getPageLabel() 
{}\n\n  getPageNthWord() {}\n\n  getPageNthWordQuads() {}\n\n  getPageNumWords() {}\n\n  getPageRotation() 
{}\n\n  getPageTransition() {}\n\n  getPrint
 Params() {\n    if (!this._printParams) {\n      this._printParams = new _print_params.PrintParams({\n       
 lastPage: this._numPages - 1\n      });\n    }\n\n    return this._printParams;\n  }\n\n  getSound() {}\n\n  
getTemplate() {}\n\n  getURL() {}\n\n  gotoNamedDest() {}\n\n  importAnFDF() {}\n\n  importAnXFDF() {}\n\n  
importDataObject() {}\n\n  importIcon() {}\n\n  importSound() {}\n\n  importTextData() {}\n\n  
importXFAData() {}\n\n  insertPages() {}\n\n  mailDoc() {}\n\n  mailForm() {}\n\n  movePage() {}\n\n  
newPage() {}\n\n  openDataObject() {}\n\n  print(bUI = true, nStart = 0, nEnd = -1, bSilent = false, 
bShrinkToFit = false, bPrintAsImage = false, bReverse = false, bAnnotations = true, printParams = null) {\n   
 if (printParams) {\n      nStart = printParams.firstPage;\n      nEnd = printParams.lastPage;\n    }\n\n    
if (typeof nStart === "number") {\n      nStart = Math.max(0, Math.trunc(nStart));\n    } else {\n      
nStart = 0;\n    }\n\n    if (typeof nEnd === "nu
 mber") {\n      nEnd = Math.max(0, Math.trunc(nEnd));\n    } else {\n      nEnd = -1;\n    }\n\n    
this._send({\n      command: "print",\n      start: nStart,\n      end: nEnd\n    });\n  }\n\n  
removeDataObject() {}\n\n  removeField() {}\n\n  removeIcon() {}\n\n  removeLinks() {}\n\n  
removeRequirement() {}\n\n  removeScript() {}\n\n  removeTemplate() {}\n\n  removeThumbnails() {}\n\n  
removeWeblinks() {}\n\n  replacePages() {}\n\n  resetForm(aFields = null) {\n    let mustCalculate = 
false;\n\n    if (aFields) {\n      for (const fieldName of aFields) {\n        const field = 
this.getField(fieldName);\n\n        if (field) {\n          field.value = field.defaultValue;\n          
field.valueAsString = field.value;\n          mustCalculate = true;\n        }\n      }\n    } else {\n      
mustCalculate = this._fields.size !== 0;\n\n      for (const field of this._fields.values()) {\n        
field.value = field.defaultValue;\n        field.valueAsString = field.value;\n      }\n    
 }\n\n    if (mustCalculate) {\n      this.calculateNow();\n    }\n  }\n\n  saveAs() {}\n\n  scroll() {}\n\n  
selectPageNthWord() {}\n\n  setAction() {}\n\n  setDataObjectContents() {}\n\n  setOCGOrder() {}\n\n  
setPageAction() {}\n\n  setPageBoxes() {}\n\n  setPageLabels() {}\n\n  setPageRotations() {}\n\n  
setPageTabOrder() {}\n\n  setPageTransitions() {}\n\n  spawnPageFromTemplate() {}\n\n  submitForm() {}\n\n  
syncAnnotScan() {}\n\n}\n\nexports.Doc = Doc;\n\n/***/ }),\n/* 15 */\n/***/ ((__unused_webpack_module, 
exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.PrintParams = void 0;\n\nclass PrintParams {\n  constructor(data) {\n    this.binaryOk = 
true;\n    this.bitmapDPI = 150;\n    this.booklet = {\n      binding: 0,\n      duplexMode: 0,\n      
subsetFrom: 0,\n      subsetTo: -1\n    };\n    this.colorOverride = 0;\n    this.colorProfile = "";\n    
this.constants = Object.freeze({\n      bookletBindings: Object.freeze({\n      
   Left: 0,\n        Right: 1,\n        LeftTall: 2,\n        RightTall: 3\n      }),\n      
bookletDuplexMode: Object.freeze({\n        BothSides: 0,\n        FrontSideOnly: 1,\n        BasicSideOnly: 
2\n      }),\n      colorOverrides: Object.freeze({\n        auto: 0,\n        gray: 1,\n        mono: 2\n    
  }),\n      fontPolicies: Object.freeze({\n        everyPage: 0,\n        jobStart: 1,\n        pageRange: 
2\n      }),\n      handling: Object.freeze({\n        none: 0,\n        fit: 1,\n        shrink: 2,\n        
tileAll: 3,\n        tileLarge: 4,\n        nUp: 5,\n        booklet: 6\n      }),\n      interactionLevel: 
Object.freeze({\n        automatic: 0,\n        full: 1,\n        silent: 2\n      }),\n      nUpPageOrders: 
Object.freeze({\n        Horizontal: 0,\n        HorizontalReversed: 1,\n        Vertical: 2\n      }),\n     
 printContents: Object.freeze({\n        doc: 0,\n        docAndComments: 1,\n        formFieldsOnly: 2\n     
 }),\n      flagValues: Object.
 freeze({\n        applyOverPrint: 1,\n        applySoftProofSettings: 1 << 1,\n        
applyWorkingColorSpaces: 1 << 2,\n        emitHalftones: 1 << 3,\n        emitPostScriptXObjects: 1 << 4,\n   
     emitFormsAsPSForms: 1 << 5,\n        maxJP2KRes: 1 << 6,\n        setPageSize: 1 << 7,\n        
suppressBG: 1 << 8,\n        suppressCenter: 1 << 9,\n        suppressCJKFontSubst: 1 << 10,\n        
suppressCropClip: 1 << 1,\n        suppressRotate: 1 << 12,\n        suppressTransfer: 1 << 13,\n        
suppressUCR: 1 << 14,\n        useTrapAnnots: 1 << 15,\n        usePrintersMarks: 1 << 16\n      }),\n      
rasterFlagValues: Object.freeze({\n        textToOutline: 1,\n        strokesToOutline: 1 << 1,\n        
allowComplexClip: 1 << 2,\n        preserveOverprint: 1 << 3\n      }),\n      subsets: Object.freeze({\n     
   all: 0,\n        even: 1,\n        odd: 2\n      }),\n      tileMarks: Object.freeze({\n        none: 0,\n 
       west: 1,\n        east: 2\n      }),\n      usages: 
 Object.freeze({\n        auto: 0,\n        use: 1,\n        noUse: 2\n      })\n    });\n    
this.downloadFarEastFonts = false;\n    this.fileName = "";\n    this.firstPage = 0;\n    this.flags = 0;\n   
 this.fontPolicy = 0;\n    this.gradientDPI = 150;\n    this.interactive = 1;\n    this.lastPage = 
data.lastPage;\n    this.npUpAutoRotate = false;\n    this.npUpNumPagesH = 2;\n    this.npUpNumPagesV = 2;\n  
  this.npUpPageBorder = false;\n    this.npUpPageOrder = 0;\n    this.pageHandling = 0;\n    this.pageSubset 
= 0;\n    this.printAsImage = false;\n    this.printContent = 0;\n    this.printerName = "";\n    
this.psLevel = 0;\n    this.rasterFlags = 0;\n    this.reversePages = false;\n    this.tileLabel = false;\n   
 this.tileMark = 0;\n    this.tileOverlap = 0;\n    this.tileScale = 1.0;\n    this.transparencyLevel = 75;\n 
   this.usePrinterCRD = 0;\n    this.useT1Conversion = 0;\n  }\n\n}\n\nexports.PrintParams = 
PrintParams;\n\n/***/ }),\n/* 16 */\n/***/ ((__unused_webpack_mod
 ule, exports) => {\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: 
true\n}));\nexports.ProxyHandler = void 0;\n\nclass ProxyHandler {\n  get(obj, prop) {\n    if (prop in 
obj._expandos) {\n      const val = obj._expandos[prop];\n\n      if (typeof val === "function") {\n        
return val.bind(obj);\n      }\n\n      return val;\n    }\n\n    if (typeof prop === "string" && 
!prop.startsWith("_") && prop in obj) {\n      const val = obj[prop];\n\n      if (typeof val === "function") 
{\n        return val.bind(obj);\n      }\n\n      return val;\n    }\n\n    return undefined;\n  }\n\n  
set(obj, prop, value) {\n    if (typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      
const old = obj[prop];\n      obj[prop] = value;\n\n      if (obj._send && obj._id !== null && typeof old !== 
"function") {\n        const data = {\n          id: obj._id\n        };\n        data[prop] = obj[prop];\n\n 
       obj._send(data);\n      }\n    } else {\n      obj._e
 xpandos[prop] = value;\n    }\n\n    return true;\n  }\n\n  has(obj, prop) {\n    return prop in 
obj._expandos || typeof prop === "string" && !prop.startsWith("_") && prop in obj;\n  }\n\n  
getPrototypeOf(obj) {\n    return null;\n  }\n\n  setPrototypeOf(obj, proto) {\n    return false;\n  }\n\n  
isExtensible(obj) {\n    return true;\n  }\n\n  preventExtensions(obj) {\n    return false;\n  }\n\n  
getOwnPropertyDescriptor(obj, prop) {\n    if (prop in obj._expandos) {\n      return {\n        
configurable: true,\n        enumerable: true,\n        value: obj._expandos[prop]\n      };\n    }\n\n    if 
(typeof prop === "string" && !prop.startsWith("_") && prop in obj) {\n      return {\n        configurable: 
true,\n        enumerable: true,\n        value: obj[prop]\n      };\n    }\n\n    return undefined;\n  }\n\n 
 defineProperty(obj, key, descriptor) {\n    Object.defineProperty(obj._expandos, key, descriptor);\n    
return true;\n  }\n\n  deleteProperty(obj, prop) {\n    if (prop in
  obj._expandos) {\n      delete obj._expandos[prop];\n    }\n  }\n\n  ownKeys(obj) {\n    const fromExpandos 
= Reflect.ownKeys(obj._expandos);\n    const fromObj = Reflect.ownKeys(obj).filter(k => 
!k.startsWith("_"));\n    return fromExpandos.concat(fromObj);\n  }\n\n}\n\nexports.ProxyHandler = 
ProxyHandler;\n\n/***/ }),\n/* 17 */\n/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => 
{\n\n\n\nObject.defineProperty(exports, "__esModule", ({\n  value: true\n}));\nexports.Util = void 0;\n\nvar 
_pdf_object = __w_pdfjs_require__(6);\n\nclass Util extends _pdf_object.PDFObject {\n  constructor(data) {\n  
  super(data);\n    this._scandCache = new Map();\n    this._months = ["January", "February", "March", 
"April", "May", "June", "July", "August", "September", "October", "November", "December"];\n    this._days = 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];\n    this.MILLISECONDS_IN_DAY 
= 86400000;\n    this.MILLISECONDS_IN_WEEK = 604800000;\
 n    this._externalCall = data.externalCall;\n  }\n\n  printf(...args) {\n    if (args.length === 0) {\n     
 throw new Error("Invalid number of params in printf");\n    }\n\n    if (typeof args[0] !== "string") {\n    
  throw new TypeError("First argument of printf must be a string");\n    }\n\n    const pattern = 
/%(,[0-4])?([+ 0#]+)?([0-9]+)?(\\.[0-9]+)?(.)/g;\n    const PLUS = 1;\n    const SPACE = 2;\n    const ZERO = 
4;\n    const HASH = 8;\n    let i = 0;\n    return args[0].replace(pattern, function (match, nDecSep, 
cFlags, nWidth, nPrecision, cConvChar) {\n      if (cConvChar !== "d" && cConvChar !== "f" && cConvChar !== 
"s" && cConvChar !== "x") {\n        const buf = ["%"];\n\n        for (const str of [nDecSep, cFlags, 
nWidth, nPrecision, cConvChar]) {\n          if (str) {\n            buf.push(str);\n          }\n        
}\n\n        return buf.join("");\n      }\n\n      i++;\n\n      if (i === args.length) {\n        throw new 
Error("Not enough arguments in printf");
 \n      }\n\n      const arg = args[i];\n\n      if (cConvChar === "s") {\n        return arg.toString();\n  
    }\n\n      let flags = 0;\n\n      if (cFlags) {\n        for (const flag of cFlags) {\n          switch 
(flag) {\n            case "+":\n              flags |= PLUS;\n              break;\n\n            case " 
":\n              flags |= SPACE;\n              break;\n\n            case "0":\n              flags |= 
ZERO;\n              break;\n\n            case "#":\n              flags |= HASH;\n              break;\n    
      }\n        }\n      }\n\n      cFlags = flags;\n\n      if (nWidth) {\n        nWidth = 
parseInt(nWidth);\n      }\n\n      let intPart = Math.trunc(arg);\n\n      if (cConvChar === "x") {\n        
let hex = Math.abs(intPart).toString(16).toUpperCase();\n\n        if (nWidth !== undefined) {\n          hex 
= hex.padStart(nWidth, cFlags & ZERO ? "0" : " ");\n        }\n\n        if (cFlags & HASH) {\n          hex 
= `0x${hex}`;\n        }\n\n       
  return hex;\n      }\n\n      if (nPrecision) {\n        nPrecision = parseInt(nPrecision.substring(1));\n  
    }\n\n      nDecSep = nDecSep ? nDecSep.substring(1) : "0";\n      const separators = {\n        0: [",", 
"."],\n        1: ["", "."],\n        2: [".", ","],\n        3: ["", ","],\n        4: ["\'", "."]\n      
};\n      const [thousandSep, decimalSep] = separators[nDecSep];\n      let decPart = "";\n\n      if 
(cConvChar === "f") {\n        if (nPrecision !== undefined) {\n          decPart = Math.abs(arg - 
intPart).toFixed(nPrecision);\n        } else {\n          decPart = Math.abs(arg - intPart).toString();\n    
    }\n\n        if (decPart.length > 2) {\n          decPart = `${decimalSep}${decPart.substring(2)}`;\n     
   } else if (cFlags & HASH) {\n          decPart = ".";\n        } else {\n          decPart = "";\n        
}\n      }\n\n      let sign = "";\n\n      if (intPart < 0) {\n        sign = "-";\n        intPart = 
-intPart;\n      } else if (cFlags & PL
 US) {\n        sign = "+";\n      } else if (cFlags & SPACE) {\n        sign = " ";\n      }\n\n      if 
(thousandSep && intPart >= 1000) {\n        const buf = [];\n\n        while (true) {\n          
buf.push((intPart % 1000).toString().padStart(3, "0"));\n          intPart = Math.trunc(intPart / 1000);\n\n  
        if (intPart < 1000) {\n            buf.push(intPart.toString());\n            break;\n          }\n   
     }\n\n        intPart = buf.reverse().join(thousandSep);\n      } else {\n        intPart = 
intPart.toString();\n      }\n\n      let n = `${intPart}${decPart}`;\n\n      if (nWidth !== undefined) {\n  
      n = n.padStart(nWidth - sign.length, cFlags & ZERO ? "0" : " ");\n      }\n\n      return 
`${sign}${n}`;\n    });\n  }\n\n  iconStreamFromIcon() {}\n\n  printd(cFormat, oDate) {\n    switch (cFormat) 
{\n      case 0:\n        return this.printd("D:yyyymmddHHMMss", oDate);\n\n      case 1:\n        return 
this.printd("yyyy.mm.dd HH:MM:ss", oDate);\n\n      case 
 2:\n        return this.printd("m/d/yy h:MM:ss tt", oDate);\n    }\n\n    const handlers = {\n      mmmm: 
data => {\n        return this._months[data.month];\n      },\n      mmm: data => {\n        return 
this._months[data.month].substring(0, 3);\n      },\n      mm: data => {\n        return (data.month + 
1).toString().padStart(2, "0");\n      },\n      m: data => {\n        return (data.month + 1).toString();\n  
    },\n      dddd: data => {\n        return this._days[data.dayOfWeek];\n      },\n      ddd: data => {\n   
     return this._days[data.dayOfWeek].substring(0, 3);\n      },\n      dd: data => {\n        return 
data.day.toString().padStart(2, "0");\n      },\n      d: data => {\n        return data.day.toString();\n    
  },\n      yyyy: data => {\n        return data.year.toString();\n      },\n      yy: data => {\n        
return (data.year % 100).toString().padStart(2, "0");\n      },\n      HH: data => {\n        return 
data.hours.toString().padStart(2, "0");\n      }
 ,\n      H: data => {\n        return data.hours.toString();\n      },\n      hh: data => {\n        return 
(1 + (data.hours + 11) % 12).toString().padStart(2, "0");\n      },\n      h: data => {\n        return (1 + 
(data.hours + 11) % 12).toString();\n      },\n      MM: data => {\n        return 
data.minutes.toString().padStart(2, "0");\n      },\n      M: data => {\n        return 
data.minutes.toString();\n      },\n      ss: data => {\n        return data.seconds.toString().padStart(2, 
"0");\n      },\n      s: data => {\n        return data.seconds.toString();\n      },\n      tt: data => {\n 
       return data.hours < 12 ? "am" : "pm";\n      },\n      t: data => {\n        return data.hours < 12 ? 
"a" : "p";\n      }\n    };\n    const data = {\n      year: oDate.getFullYear(),\n      month: 
oDate.getMonth(),\n      day: oDate.getDate(),\n      dayOfWeek: oDate.getDay(),\n      hours: 
oDate.getHours(),\n      minutes: oDate.getMinutes(),\n      seconds: oDate.getSeconds()\n 
    };\n    const patterns = /(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t|\\\\.)/g;\n    
return cFormat.replace(patterns, function (match, pattern) {\n      if (pattern in handlers) {\n        
return handlers[pattern](data);\n      }\n\n      return pattern.charCodeAt(1);\n    });\n  }\n\n  
printx(cFormat, cSource) {\n    const handlers = [x => x, x => x.toUpperCase(), x => x.toLowerCase()];\n    
const buf = [];\n    let i = 0;\n    const ii = cSource.length;\n    let currCase = handlers[0];\n    let 
escaped = false;\n\n    for (const command of cFormat) {\n      if (escaped) {\n        buf.push(command);\n  
      escaped = false;\n        continue;\n      }\n\n      if (i >= ii) {\n        break;\n      }\n\n      
switch (command) {\n        case "?":\n          buf.push(currCase(cSource.charAt(i++)));\n          
break;\n\n        case "X":\n          while (i < ii) {\n            const char = cSource.charAt(i++);\n\n    
        if ("a" <= char && char <= "z" || "A
 " <= char && char <= "Z" || "0" <= char && char <= "9") {\n              buf.push(currCase(char));\n         
     break;\n            }\n          }\n\n          break;\n\n        case "A":\n          while (i < ii) 
{\n            const char = cSource.charAt(i++);\n\n            if ("a" <= char && char <= "z" || "A" <= char 
&& char <= "Z") {\n              buf.push(currCase(char));\n              break;\n            }\n          
}\n\n          break;\n\n        case "9":\n          while (i < ii) {\n            const char = 
cSource.charAt(i++);\n\n            if ("0" <= char && char <= "9") {\n              buf.push(char);\n        
      break;\n            }\n          }\n\n          break;\n\n        case "*":\n          while (i < ii) 
{\n            buf.push(currCase(cSource.charAt(i++)));\n          }\n\n          break;\n\n        case 
"\\\\":\n          escaped = true;\n          break;\n\n        case ">":\n          currCase = 
handlers[1];\n          break;\n\n        case "
 <":\n          currCase = handlers[2];\n          break;\n\n        case "=":\n          currCase = 
handlers[0];\n          break;\n\n        default:\n          buf.push(command);\n      }\n    }\n\n    
return buf.join("");\n  }\n\n  scand(cFormat, cDate) {\n    switch (cFormat) {\n      case 0:\n        return 
this.scand("D:yyyymmddHHMMss", cDate);\n\n      case 1:\n        return this.scand("yyyy.mm.dd HH:MM:ss", 
cDate);\n\n      case 2:\n        return this.scand("m/d/yy h:MM:ss tt", cDate);\n    }\n\n    if 
(!this._scandCache.has(cFormat)) {\n      const months = this._months;\n      const days = this._days;\n      
const handlers = {\n        mmmm: {\n          pattern: `(${months.join("|")})`,\n          action: (value, 
data) => {\n            data.month = months.indexOf(value);\n          }\n        },\n        mmm: {\n        
  pattern: `(${months.map(month => month.substring(0, 3)).join("|")})`,\n          action: (value, data) => 
{\n            data.month = months.findInde
 x(month => month.substring(0, 3) === value);\n          }\n        },\n        mm: {\n          pattern: 
`([0-9]{2})`,\n          action: (value, data) => {\n            data.month = parseInt(value) - 1;\n          
}\n        },\n        m: {\n          pattern: `([0-9]{1,2})`,\n          action: (value, data) => {\n       
     data.month = parseInt(value) - 1;\n          }\n        },\n        dddd: {\n          pattern: 
`(${days.join("|")})`,\n          action: (value, data) => {\n            data.day = days.indexOf(value);\n   
       }\n        },\n        ddd: {\n          pattern: `(${days.map(day => day.substring(0, 
3)).join("|")})`,\n          action: (value, data) => {\n            data.day = days.findIndex(day => 
day.substring(0, 3) === value);\n          }\n        },\n        dd: {\n          pattern: "([0-9]{2})",\n   
       action: (value, data) => {\n            data.day = parseInt(value);\n          }\n        },\n        
d: {\n          pattern: "([0-9]{1,2})",\n    
       action: (value, data) => {\n            data.day = parseInt(value);\n          }\n        },\n        
yyyy: {\n          pattern: "([0-9]{4})",\n          action: (value, data) => {\n            data.year = 
parseInt(value);\n          }\n        },\n        yy: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.year = 2000 + parseInt(value);\n          }\n        },\n        HH: {\n 
         pattern: "([0-9]{2})",\n          action: (value, data) => {\n            data.hours = 
parseInt(value);\n          }\n        },\n        H: {\n          pattern: "([0-9]{1,2})",\n          
action: (value, data) => {\n            data.hours = parseInt(value);\n          }\n        },\n        hh: 
{\n          pattern: "([0-9]{2})",\n          action: (value, data) => {\n            data.hours = 
parseInt(value);\n          }\n        },\n        h: {\n          pattern: "([0-9]{1,2})",\n          
action: (value, data) => {\n            data.hours = p
 arseInt(value);\n          }\n        },\n        MM: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.minutes = parseInt(value);\n          }\n        },\n        M: {\n      
    pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.minutes = 
parseInt(value);\n          }\n        },\n        ss: {\n          pattern: "([0-9]{2})",\n          action: 
(value, data) => {\n            data.seconds = parseInt(value);\n          }\n        },\n        s: {\n      
    pattern: "([0-9]{1,2})",\n          action: (value, data) => {\n            data.seconds = 
parseInt(value);\n          }\n        },\n        tt: {\n          pattern: "([aApP][mM])",\n          
action: (value, data) => {\n            const char = value.charAt(0);\n            data.am = char === "a" || 
char === "A";\n          }\n        },\n        t: {\n          pattern: "([aApP])",\n          action: 
(value, data) => {\n            data.am = value ===
  "a" || value === "A";\n          }\n        }\n      };\n      const escapedFormat = 
cFormat.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, "\\\\$&");\n      const patterns = 
/(mmmm|mmm|mm|m|dddd|ddd|dd|d|yyyy|yy|HH|H|hh|h|MM|M|ss|s|tt|t)/g;\n      const actions = [];\n      const re 
= escapedFormat.replace(patterns, function (match, patternElement) {\n        const {\n          pattern,\n   
       action\n        } = handlers[patternElement];\n        actions.push(action);\n        return 
pattern;\n      });\n\n      this._scandCache.set(cFormat, [new RegExp(re, "g"), actions]);\n    }\n\n    
const [regexForFormat, actions] = this._scandCache.get(cFormat);\n\n    const matches = 
regexForFormat.exec(cDate);\n\n    if (matches.length !== actions.length + 1) {\n      throw new 
Error("Invalid date in util.scand");\n    }\n\n    const data = {\n      year: 0,\n      month: 0,\n      
day: 0,\n      hours: 0,\n      minutes: 0,\n      seconds: 0,\n      am: null\n    };\n    
actions.forEach((actio
 n, i) => action(matches[i + 1], data));\n\n    if (data.am !== null) {\n      data.hours = data.hours % 12 + 
(data.am ? 0 : 12);\n    }\n\n    return new Date(data.year, data.month, data.day, data.hours, data.minutes, 
data.seconds);\n  }\n\n  spansToXML() {}\n\n  stringFromStream() {}\n\n  xmlToSpans() {}\n\n}\n\nexports.Util 
= Util;\n\n/***/ })\n/******/ 
\t]);\n/************************************************************************/\n/******/ \t// The module 
cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require 
function\n/******/ \tfunction __w_pdfjs_require__(moduleId) {\n/******/ \t\t// Check if module is in 
cache\n/******/ \t\tif(__webpack_module_cache__[moduleId]) {\n/******/ \t\t\treturn 
__webpack_module_cache__[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it 
into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no 
module.id needed\n/******/ \t\t\t// no m
 odule.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the 
module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, 
__w_pdfjs_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn 
module.exports;\n/******/ \t}\n/******/ 
\t\n/************************************************************************/\n/******/ \t// module exports 
must be returned from runtime so entry inlining is disabled\n/******/ \t// startup\n/******/ \t// Load entry 
module and return exports\n/******/ \treturn __w_pdfjs_require__(0);\n/******/ })()\n;\n});', 
`pdfjsScripting.initSandbox({ data: ${sandboxData} })`];
+
+    if (!TESTING) {
+      code.push("delete dump;");
+    } else {
+      code.unshift(`globalThis.sendResultForTesting = callExternalFunction.bind(null, "send");`);
+    }
+
+    let success = false;
+
+    try {
+      success = !!this._module.ccall("init", "number", ["string", "number"], [code.join("\n"), 
this._alertOnError]);
+    } catch (error) {
+      console.error(error);
+    }
+
+    if (success) {
+      this.support.commFun = this._module.cwrap("commFun", null, ["string", "string"]);
+    } else {
+      this.nukeSandbox();
+      throw new Error("Cannot start sandbox");
+    }
+  }
+
+  dispatchEvent(event) {
+    this.support.callSandboxFunction("dispatchEvent", event);
+  }
+
+  dumpMemoryUse() {
+    if (this._module) {
+      this._module.ccall("dumpMemoryUse", null, []);
+    }
+  }
+
+  nukeSandbox() {
+    if (this._module !== null) {
+      this.support.destroy();
+      this.support = null;
+
+      this._module.ccall("nukeSandbox", null, []);
+
+      this._module = null;
+    }
+  }
+
+  evalForTesting(code, key) {
+    if (TESTING) {
+      this._module.ccall("evalInSandbox", null, ["string", "int"], [`try {
+             sendResultForTesting([{ id: "${key}", result: ${code} }]);
+          } catch (error) {
+             sendResultForTesting([{ id: "${key}", result: error.message }]);
+          }`, this._alertOnError]);
+    }
+  }
+
+}
+
+function QuickJSSandbox() {
+  return (0, _quickjsEval.default)().then(module => {
+    return new Sandbox(window, module);
+  });
+}
+
+/***/ }),
+/* 1 */
+/***/ ((__unused_webpack_module, exports) => {
+
+Object.defineProperty(exports, "__esModule", ({value:true}));exports.default=void 0;var 
Module=function(){var _scriptDir=typeof 
document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return 
function(Module){Module=Module||{};var b;b||(b=typeof Module!=='undefined'?Module:{});var h,n;b.ready=new 
Promise(function(a,c){h=a;n=c;});var q={},r;for(r in b)b.hasOwnProperty(r)&&(q[r]=b[r]);var 
t="";"undefined"!==typeof 
document&&document.currentScript&&(t=document.currentScript.src);_scriptDir&&(t=_scriptDir);0!==t.indexOf("blob:")?t=t.substr(0,t.lastIndexOf("/")+1):t="";var
 aa=b.print||console.log.bind(console),u=b.printErr||console.warn.bind(console);for(r in 
q)q.hasOwnProperty(r)&&(b[r]=q[r]);q=null;var v;b.wasmBinary&&(v=b.wasmBinary);var 
noExitRuntime;b.noExitRuntime&&(noExitRuntime=b.noExitRuntime);"object"!==typeof WebAssembly&&w("no native 
wasm support detected");var x,y=!1;function A(a){var c=b["_"+a];c||w("Assertion failed: Cannot call unknown 
function 
 "+(a+", make sure it is exported"));return c;}function B(a,c,d,e){var f={string:function(l){var 
p=0;if(null!==l&&void 0!==l&&0!==l){var W=(l.length<<2)+1;p=C(W);D(l,E,p,W);}return p;},array:function(l){var 
p=C(l.length);F.set(l,p);return p;}},g=A(a),k=[];a=0;if(e)for(var m=0;m<e.length;m++){var 
z=f[d[m]];z?(0===a&&(a=G()),k[m]=z(e[m])):k[m]=e[m];}d=g.apply(null,k);d=function(l){return"string"===c?H(l):"boolean"===c?!!l:l;}(d);0!==a&&I(a);return
 d;}var J="undefined"!==typeof TextDecoder?new TextDecoder("utf8"):void 0;function ba(a,c,d){var 
e=c+d;for(d=c;a[d]&&!(d>=e);)++d;if(16<d-c&&a.subarray&&J)return J.decode(a.subarray(c,d));for(e="";c<d;){var 
f=a[c++];if(f&128){var g=a[c++]&63;if(192==(f&224))e+=String.fromCharCode((f&31)<<6|g);else{var 
k=a[c++]&63;f=224==(f&240)?(f&15)<<12|g<<6|k:(f&7)<<18|g<<12|k<<6|a[c++]&63;65536>f?e+=String.fromCharCode(f):(f-=65536,e+=String.fromCharCode(55296|f>>10,56320|f&1023));}}else
 e+=String.fromCharCode(f);}return e;}function H(a){return a?ba(E,a,vo
 id 0):"";}function D(a,c,d,e){if(0<e){e=d+e-1;for(var f=0;f<a.length;++f){var 
g=a.charCodeAt(f);if(55296<=g&&57343>=g){var 
k=a.charCodeAt(++f);g=65536+((g&1023)<<10)|k&1023;}if(127>=g){if(d>=e)break;c[d++]=g;}else{if(2047>=g){if(d+1>=e)break;c[d++]=192|g>>6;}else{if(65535>=g){if(d+2>=e)break;c[d++]=224|g>>12;}else{if(d+3>=e)break;c[d++]=240|g>>18;c[d++]=128|g>>12&63;}c[d++]=128|g>>6&63;}c[d++]=128|g&63;}}c[d]=0;}}function
 ca(a){for(var c=0,d=0;d<a.length;++d){var 
e=a.charCodeAt(d);55296<=e&&57343>=e&&(e=65536+((e&1023)<<10)|a.charCodeAt(++d)&1023);127>=e?++c:c=2047>=e?c+2:65535>=e?c+3:c+4;}return
 c;}function da(a){var c=ca(a)+1,d=K(c);d&&D(a,F,d,c);return d;}var 
L,F,E,M,N=b.INITIAL_MEMORY||16777216;b.wasmMemory?x=b.wasmMemory:x=new 
WebAssembly.Memory({initial:N/65536,maximum:N/65536});x&&(L=x.buffer);N=L.byteLength;var 
O=L;L=O;b.HEAP8=F=new Int8Array(O);b.HEAP16=new Int16Array(O);b.HEAP32=M=new Int32Array(O);b.HEAPU8=E=new 
Uint8Array(O);b.HEAPU16=new Uint16Array(O);b.HEAPU32=new Uin
 t32Array(O);b.HEAPF32=new Float32Array(O);b.HEAPF64=new Float64Array(O);var 
P,ea=[],fa=[],ha=[],ia=[];function ja(){var a=b.preRun.shift();ea.unshift(a);}var 
Q=0,R=null,S=null;b.preloadedImages={};b.preloadedAudios={};function 
w(a){if(b.onAbort)b.onAbort(a);u(a);y=!0;a=new WebAssembly.RuntimeError("abort("+a+"). Build with -s 
ASSERTIONS=1 for more info.");n(a);throw a;}function T(a){return 
String.prototype.startsWith?a.startsWith("data:application/octet-stream;base64,"):0===a.indexOf("data:application/octet-stream;base64,");}var
 
U="data:application/octet-stream;base64,AGFzbQEAAAABpQd5YAN/f38Bf2ACf38Bf2AEf35/fwF+YAJ/fwBgAX8Bf2ADf39/AGAFf35/f38BfmABfwBgAn9+AX5gBH9/f38Bf2ACf34Bf2ABfAF8YAJ/fwF+YAJ/fgBgA39/fgF/YAF+AX9gA39+fwF+YAN/fn8AYAN/fn8Bf2AFf39/f38Bf2AGf35/f39/AX5gA39/fwF+YAN/fn4BfmAGf35+f39/AX5gBH9/fn8Bf2AGf39/f39/AX9gAX8BfmACfHwBfGAEf39/fwBgBH9/f38BfmADf35+AX9gBX9/f39/AGAFf35+fn4AYAd/f39/f39/AX9gBH9+fn8BfmAFf35+f38BfmABfgF+YAABf2AFf35/fn8Bf2AHf35/fn5+fwF/YAAAYAN/f34AYAN/fn4AYAR/fn
 
5/AGAEf35+fwF/YAR/fn5+AX9gBX9+fn5/AX9gAn5/AX9gBH9+f38AYAV/fn5/fwBgAn5/AGAJf39/f39/f39/AX9gBH9+f38Bf2AGf35/fn5/AX9gA35/fwF/YAZ/f39/f38BfmAHf35/f39/fwF+YAR/fn9+AX5gBH9+fn4BfmAGf39/f39/AGAHf39/f39/fwBgBH9/fn8AYAh/f39/f39/fwF/YAR/f39+AX9gBH9+f34Bf2AGf3x/f39/AX9gBX9/f39/AX5gAn5+AX5gAnx/AXxgA3x8fwF8YAN/f3wAYAV/fn9/fwBgBH9+f34AYAZ/fn9+fn8AYAJ/fQBgAn98AGADf3x/AGAFf3x/f38AYAF+AGAHfH9/f39/fwBgCn9/f39/f39/f38Bf2AGf39/fn5/AX9gB39/f35+fn8Bf2AFf39+f38Bf2AEf39+fgF/YAV/f35+fwF/YAZ/f35+f38Bf2AGf39+fn5+AX9gBX9+f39/AX9gBn9+f39/fwF/YAV/fn9/fgF/YAV/fn5+fgF/YAZ/fn5+fn8Bf2AEf3x/fwF/YAJ+fgF/YAN+fn4Bf2AEfn5+fgF/YAF8AX9gAnx/AX9gBnx/f39/fwF/YAJ8fAF/YAABfmAHf39/f39/fgF+YAV/f39/fgF+YAR/f39+AX5gA39/fgF+YAR/f35/AX5gBH9/fn4BfmAFf39+fn4BfmAFf35/fn8BfmAFf35+fn8BfmAHf35+fn9/fwF+YAh/fn5+fn9+fgF+YAN/fnwBfmAFf3x/f38BfmABfAF+YAF/AXxgAn9/AXxgA39/fwF8YAF+AXxgAn5+AXwCTQwBYQFiABwBYQFjACgBYQFkAAEBYQFlAAkBYQFmAAABYQFnAAQBYQFoAAMBYQFpAAABYQFqAAEBYQFrAAcBYQFsABwBYQFhAgGAAoACA8AKvgoNDwMkAwQPA20FBXMDAQMmAwADAykDDxEjADANBwQIDwAICgE
 
BAwEMIAUEIwMaAwoKARoIBQ4vAAQFBwQHDkB3AQADGgEQCAMPCQcACR4OCQQDBAQIUwUDAAwFChIFAwEDEC0HAAcWDB8AJwASEAQgKxNXCQMBAAQPGAEsMgEKCg8tEwQaDQQBBQAACgQSHQ8mCBYKMgwFBzMEAAc7CQMuBCIOBAISAQ8ACSpLBQoBPgQFagEEChAODg4OBQcBRDcASGcTEjwZBwQTABYBDhI0LAAuA28AATcABQEBASo8AQcHAQAWBAQDEA8ECgMECAAcFQUEB2AAACYDUAEEEyFmBgo2Aw4DAA4eAUAmCiwAAAEDBwQEAy8LATEFCBYFEwAEAQUABA4GNANPAQEEaQxCBAZHABYcB3IuGBADEwUFAQABABUrCQsbRQsEBBkBBwUfCgQ3FR0JAAEJBQkABAMEAAQAAQNDPQ4kAlwQBANdBAwcBwMWA3ULCgwVGSNZBRAAAAUjBhADCgMJAQFVAQEMAA8vMAkDAAcLCwEyBAQBAQkABAEEAQUCAAMCAQMACQEzAAcAAQEBEwoACQEJCQEcAyQPWCkDEgMPBAEWDgcZHBMBBAURAwRbIhUPAxIZCFRWbAI6HQEaGgoWAAEKUSoJDhcCDjYDBAEACVIYCAoPBAQVCAgDBRAYAQMBAQMAIAcFIRMEaAtiCwEBAAAFCQQABD4BBQMIEwQAAgJwJAgGAgYmHhkZAAMCAzMAAwEBAQ0AAwEEAAEABwQBEwAPEwQEBAAAACRDDAZxND0DCAMFAA45AwgJBwwCAyQABQ0XCA8eGygGDA8DEAUGCRwAAQcHEQwGZQIOAwMDKwYGBh8BHTgMAQEjAQAEAQMFAAEuHhIMGDoDAQcODgUICQEKDhgMByUeHh8ADwMEFQAVBAABAQEAAwIEBQcEIBsDAXggX3QaKyAEBgAqHAREAQRFG0YLAwQZAQEBAhwEBwQJBAEBAAEEAAEhIQEAZBAQAgAACggoAgoGAgICAgICAgIBBgYC
 
AgICAgYGAg8GAAICAgYCAgYCBgYKAgIICAICAgIGBhYIAgICAgICAgYCAgIGBgICAgIGAgYCAgAhBAcoAQUZBwEDBwQBAQEEBwAABwEEBAcEBwAHAwAABAMABAQAAQEBAwICAQMaAgICBgICAhQpKQYUDAYCAhQGFBQUAgICAAIVAxENEQ0NAQ0RDRQUAwYGBxAGBgYGDgYUCAI1ORJuJxIEPxgRDQICFAgCAgICChYKAgIHAgIQCAgVDgIHJxIYBwESAAABCBUUCBUnY0wSdgkAEwEADB0dHQQFBQMDAwMDAAAAAxENEQ0NDRENEQ0NDRENEQ0RDRENDRENEQ0iIgoFIggECQcVGiMAHTAAAAAMGQEBAQoPEgEBAQEBAAABIVotLRYBCQABAQAFGAAJABUBCB4eHRpCFQpNBA5OFw8DSRcXCQ8XCAQKCgoACCwFAwMDAwMHBwEBAQAEByUHEAAXXgsLGxsXAQQXShclJSUDOx8DAgQEBAQAEAQDQS82AQIDAwAHBwILCwsLCwsLCxsbCwIJCwsLCwsLBgsLAwEBAQABAAEDEwEXCQAEAQEBAgE4AQIZBQUFBQUFAgUFBQUTHwEDBgZrAgIADAAMAAwADAAMAAwADAIADAYGAAICAgIGBwICCAY6AhAIAgYQFAICCAICAgICAgICAgICAgICCxoCAgsLGxsGFAEGAQYCAggCBgYGAgICAgIGBgYCAgICAgICAgJhAgICAgYDBAcBcAH3AvcCBgkBfwFB8LPEAgsHRg4BbQEAAW4AiwYBbwDICgFwAP0EAXEAogcBcgDzBgFzANYGAXQAnwIBdQCKCQF2AIkJAXcAiAkBeAD4CAF5APcIAXoA9ggJ8wUBAEEBC/YCigThCN4I3QjZCO8I7gjtCJoHwgTMBrAGnwbHCrIDmQqPCoYG8wnXCc8JzQnLCcQJ8QW2Ca4JogmcCd8FjwmHCYUJggn8CM4F9AOiCOcI5Qf+BOMH4wGmB
 
5sHnAjvB/IEsweVB5QHkweRB4wHiAekBvgJmAiXCJYIlQiUCIsFkwiSCJEIkAiPCI4IjQiMCIsIigiJCIgIhwiGCIUI3wOECN8DgwiCCIEIgAjmB9oH2QfYB90HiAX/B/4HwAe/B74HvQe7B7oHuAe3B7YHpQekB6MH3wOhB4sFoAefB54HnQfzB/IH8QfWB9MH0gfRB9AHzwfNB8wHyAfHB8YHxQfEB8MHwgfBB7UHsgewB68HrgetB6wHqgepB6cHmAeXB5YHiwKSB5AHjweOB4sHhweNBYYHhQeEB4MH4gSCB4EH/QaPBfwG0QbQBs8GzgbNBssGygbJBpYFyAbHBrsExgbFBsQGuQTDBsIGwQa6BMAGvwa+Br0GvAa7BroGuQa4BrcGjwO2BrUGtAazBrIGsQauBq0GrAarBqoGqQbtA6gGpwaVBZcFpgalBqMGoQagBp4GnQacBpsGmga1BLQEmQaYBpYGlQaUBpMGkgaRBpAGjwaOBowGxgrFCsQKwwrBCsAKvwq+Cr0KvAq7CroKuQq4CrcKtgq1CrQKswqyCrEKsAqvCq4KrQqrCqoKqQqnCqUKpAqzCacJqQmhCrQJsAmlCaAErAmtCaIE0QL8BKQJqgmjCaAKqAmyCbUJpgm4CbEJogKkA/8I/gi3CZ8KngqcCpsKmgqYCpcKlgqVCpQKkwqSCpEKkAqOCo0KjAqLCooKiQqICocKhgqFBoUKhAaECoIKgQqACv8J/Qn8CfsJ+gn5CfcJ9gnkCeMJ4QngCfIJ9QnwCe4J7AnqCegJ5gnxCfQJ7wntCesJ6QnnCeUJggbbCdoJ2QnYCdYJ1QnUCdMJ0gnRCfUDggafCZgJlwmVCeAFlAmKBIoE+wj6CAqg4hK+CjUBAX8CQCABQiCIp0F1SQ0AIAGnIgIgAigCACICQX9qNgIAIAJBAUoNACAAKAIQIAEQ9wQLCxMAIABCgICAgHCDQoCAgIDgAFELTQECfyAAKA
 
JAIgJBgAJqIQMgAigCnAIgACgCBEcEQCADQcABEA8gAyAAKAIEEB0gAiAAKAIENgKcAgsgAiACKAKEAjYCmAIgAyABEA8LIgEBfyAAQiCIp0F1TwRAIACnIgEgASgCAEEBajYCAAsgAAsoAQF/IwBBEGsiAiQAIAIgAToADyAAIAJBD2pBARCUARogAkEQaiQAC58WAgZ/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIABBADYCMCAAIAAoAhQ2AgQDQCAAIAE2AhggACAAKAIIIgM2AhQCQAJAAn8CQAJAAkACQAJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgASwAACIFQf8BcSIGDn0AFxcXFxcXFxcEAwQEAhcXFxcXFxcXFxcXFxcXFxcXFwQSGAgHDBMYFxcLDRcOCQUKHBwcHBwcHBwcFxcPERAWFwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHFwYXFAcBBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcXFRcLIAEgACgCPEkNGiAEQap/NgIADB8LIAAgAUEBahDJAw0cIAIgACgCODYCDAweCyABQQFqIAEgAS0AAUEKRhshAQsgAiABQQFqNgIMDB4LIAIgAUEBajYCDAweCwJAAkAgAS0AASIDQSpHBEAgA0EvRg0BIANBPUcNAiACIAFBAmo2AgwgBEGGfzYCAAwdCyACIAFBAmoiATYCDANAAkACQAJAAkACQAJAIAEtAAAiA0F2ag4EAQMDAgALIANBKkcEQCADDQMgASAAKAI8SQ0EIABBwNQAQQAQFAwhCyABLQABQS9HDQMgAiABQQJqNgIMDCULIABBATYCMCAAIAAoAghBAWo2AgggAiABQQFqNgIMDAMLIABBATYCMCACIAFBAWo2AgwMAgsgA0EYdEE
 
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
 
FIAAgARALIAVBAEgNAiAFRQ0AIAgtAABBEHEEQCAAIAgpAxgQCyAAIAgpAxAgA0EAQQAQNiEKDAULIAgpAwghCgwECyAGKAIQKAIsIgYNAAtCgICAgDAhCiAERQ0CIAAgAhDGAgtCgICAgOAAIQoMAQtCgICAgDAhCgsgCEEgaiQAIAoLXgECfyMAQRBrIgQkACAAKAIAIQMgBCACNgIMIANBAyABIAJBABC/BSADIAMoAhApA3ggACgCDCAAKAIIIAAoAkAiAAR/IAAoAmhBAEdBAXQFQQALEL0CIARBEGokAAsmAQF/IwBBEGsiAyQAIAMgAjYCDCAAQQQgASACEPsBIANBEGokAAs3AQF+QoCAgIDAfiAAvSIBQoCAgIDA/v+DgH98IAFC////////////AINCgICAgICAgPj/AFYbCw8AIAAoAkBBgAJqIAEQMAsrACABEPABRQRAIAAoAhAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABCwsAIAAoAhAgARAgCykAIAAgASACIANCgICAgDBCgICAgDAgBEGAzgByEHUhAiAAIAMQCyACCw8AIAAgACgCACABEBgQOQtKACAAEOgCRQRAQX8PCyACQX9MBEAgABA1IQILIAAgAUH/AXEQDSAAIAIQOSAAKAJAKAKkAiACQRRsaiIAIAAoAgBBAWo2AgAgAgsoAQF/IwBBEGsiAiQAIAIgATYCDCAAIAJBDGpBBBCUARogAkEQaiQACzEAIAFBAE4EQCAAQbQBEA0gACABEDkgACgCQCIAKAKkAiABQRRsaiAAKAKEAjYCBAsLGAEBfiABKQMAIQMgASACNwMAIAAgAxALCxEAIABBEGogASAAKAIEEQMACwsAIABC/////29WCxgAIAFCIIinQX5PBEAgACABpyACEQMACwsXACAAIAEgAkKAgICAMCADIARBAhDfAQuCBAEDfyACQYAETwRAIAAgASACEAQaIAAP
 
CyAAIAJqIQMCQCAAIAFzQQNxRQRAAkAgAkEBSARAIAAhAgwBCyAAQQNxRQRAIAAhAgwBCyAAIQIDQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADTw0BIAJBA3ENAAsLAkAgA0F8cSIEQcAASQ0AIAIgBEFAaiIFSw0AA0AgAiABKAIANgIAIAIgASgCBDYCBCACIAEoAgg2AgggAiABKAIMNgIMIAIgASgCEDYCECACIAEoAhQ2AhQgAiABKAIYNgIYIAIgASgCHDYCHCACIAEoAiA2AiAgAiABKAIkNgIkIAIgASgCKDYCKCACIAEoAiw2AiwgAiABKAIwNgIwIAIgASgCNDYCNCACIAEoAjg2AjggAiABKAI8NgI8IAFBQGshASACQUBrIgIgBU0NAAsLIAIgBE8NAQNAIAIgASgCADYCACABQQRqIQEgAkEEaiICIARJDQALDAELIANBBEkEQCAAIQIMAQsgA0F8aiIEIABJBEAgACECDAELIAAhAgNAIAIgAS0AADoAACACIAEtAAE6AAEgAiABLQACOgACIAIgAS0AAzoAAyABQQRqIQEgAkEEaiICIARNDQALCyACIANJBEADQCACIAEtAAA6AAAgAUEBaiEBIAJBAWoiAiADRw0ACwsgAAtIAQN/IANBACADQQBKGyEDA0AgAyAERkUEQCAAIAEgACACIARBBHRqIgUoAgAQmQUiBiAFEKcIIAAgBhASIARBAWohBAwBCwsLMgEBfwJAIAFCIIinQXVJDQAgAaciAiACKAIAIgJBf2o2AgAgAkEBSg0AIAAgARD3BAsLCwAgAEGUF0EAEBULBwAgAEEwagufAQEBfgJAAkACQAJAAkACQAJAIAEQU0EIag4QBQMAAAAAAAECBAAAAAABAgALIABBgM4AQQAQFUKAgICA4AAPCyABEA4PCyAAQQQQoAEhAgwDCyAAIABBBRCgASICQTAgAacpAgRC/////weDQQAQG
 
hoMAgsgAEEGEKABIQIMAQsgAEEHEKABIQILIAIQDEUEQCAAIAIgARAOEOgBCyACCxIAIABCgICAgHCDQoCAgIAgUQuzBAELfyMAQRBrIggkACAAKAIAIQUgCCACNgIMQX8hCQJAA0ACQCAIIAIiA0EEaiICNgIMIAMoAgAiB0F/Rg0AIAAoAgQhCgNAIAEiBCAKTg0DIAQgBCAFaiILLQAAIgZBAnQiDEGQMWotAABqIgEgCkoNAyAGQcABRgRAIAsoAAEhCQwBCwsgBiAHRwRAIAZFIAdBgAJJciAHQf8BcSAGRiAHQQh2Qf8BcSAGRnIgB0EQdkH/AXEgBkZyRUEAIAdBGHYgBkcbcg0DIAAgBjYCEAsgBEEBaiEEAkACQAJAAkACQAJAAkACQCAMQZMxai0AAEF7ag4YAAkACQkBCQkBCQkBAQECAgICBAUGBwkDCQsgBCAFai0AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwJCyADIARGDQgMCQsgBCAFai8AACEEIAggA0EIaiICNgIMIAMoAgQiA0F/RgRAIAAgBDYCFAwICyADIARGDQcMCAsgACAEIAVqKAAANgIYDAYLIAAgBCAFaiIDKAAANgIYIAAgAy8ABDYCHAwFCyAAIAQgBWooAAA2AiAMBAsgACAEIAVqIgMoAAA2AiAgACADLQAENgIcDAMLIAAgBCAFaiIDKAAANgIgIAAgAy8ABDYCHAwCCyAAIAQgBWoiAygAADYCICAAIAMoAAQ2AhggACADLQAINgIcDAELCyAAIAk2AgwgACABNgIIQQEhDQsgCEEQaiQAIA0LCwAgACABQQAQkQQLvwEDAn8BfgF8QX8hAgJAAkACQAJAAkACQCABQiCIpyIDQQdqDg4CBAQEBAQDAAEBAQQEBQQLIAGnQQBHDwsgAacPCyABpykCBCEEIAAgARALIARC/////weDQgBSDwsgAactAAUhAi
 
AAIAEQCyACQX9zQYABcUEHdg8LIANBC2pBEk8EQCABEEoiBUQAAAAAAAAAAGIgBb1C////////////AINCgYCAgICAgPj/AFRxDwsgACABEAtBASECCyACCxkAIAAoAhAgARDnASIBRQRAIAAQxwELIAELPwEBfyMAQRBrIgIkAAJ/IAEgACgCEEcEQCACIAE2AgAgAEHt1gAgAhAUQX8MAQsgABAQCyEAIAJBEGokACAACygBAX8jAEEQayICJAAgAiABOwEOIAAgAkEOakECEJQBGiACQRBqJAALIQAgACgCBEF/TARAIAAgAUEBdGovARAPCyAAIAFqLQAQCwsAIAAgAUEBEMYFC6QLAgV/CX4jAEHgAGsiBSQAIAJCIIYgAUIgiIQhESAEQi+GIANCEYiEIQ0gBEL///////8/gyIOQg+GIANCMYiEIQ8gAiAEhUKAgICAgICAgIB/gyEKIAJC////////P4MiC0IgiCEQIA5CEYghEiAEQjCIp0H//wFxIQcCQAJ/IAJCMIinQf//AXEiCUF/akH9/wFNBEBBACAHQX9qQf7/AUkNARoLIAFQIAJC////////////AIMiDEKAgICAgIDA//8AVCAMQoCAgICAgMD//wBRG0UEQCACQoCAgICAgCCEIQoMAgsgA1AgBEL///////////8AgyICQoCAgICAgMD//wBUIAJCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhCiADIQEMAgsgASAMQoCAgICAgMD//wCFhFAEQCACIAOEUARAQoCAgICAgOD//wAhCkIAIQEMAwsgCkKAgICAgIDA//8AhCEKQgAhAQwCCyADIAJCgICAgICAwP//AIWEUARAIAEgDIQhAkIAIQEgAlAEQEKAgICAgIDg//8AIQoMAwsgCkKAgICAgIDA//8AhCEKDAILIAEgDIRQBEBCACEBDAILIAIgA4RQBEBCACEBDAILIAxC///////
 
/P1gEQCAFQdAAaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNYIgtCIIYgBSkDUCIBQiCIhCERIAtCIIghEEEQIAZrIQYLIAYgAkL///////8/Vg0AGiAFQUBrIAMgDiADIA4gDlAiCBt5IAhBBnStfKciCEFxahB7IAUpA0giAkIPhiAFKQNAIgNCMYiEIQ8gAkIvhiADQhGIhCENIAJCEYghEiAGIAhrQRBqCyEGIA9C/////w+DIgIgC0L/////D4MiBH4iDiANQv////8PgyILIBBCgIAEhCIMfnwiDSAOVK0gDSASQv////8Hg0KAgICACIQiDiARQv////8PgyIRfnwiDyANVK18IA8gCyARfiIQIANCD4ZCgID+/w+DIgMgBH58Ig0gEFStIA0gAiABQv////8PgyIBfnwiECANVK18fCINIA9UrXwgDCAOfnwgBCAOfiISIAIgDH58Ig8gElStQiCGIA9CIIiEfCANIA9CIIZ8Ig8gDVStfCAPIAQgC34iDSADIAx+fCIEIAIgEX58IgIgASAOfnwiDEIgiCAMIAJUrSAEIA1UrSACIARUrXx8QiCGhHwiAiAPVK18IAIgECABIAt+IgQgAyARfnwiDkIgiCAOIARUrUIghoR8IgQgEFStIAQgDEIghnwiDCAEVK18fCIEIAJUrXwiAkKAgICAgIDAAIMiC0IwiKciCCAHIAlqIAZqakGBgH9qIgZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsgAkIBhiAEQj+IhCACIAtQIgcbIQsgDkIghiICIAEgA358IgEgAlStIAx8IgMgCEEBc60iDIYgAUIBiCAIQT5yrYiEIQIgBEIBhiADQj+IhCAEIAcbIQQgASAMhiEBAn4gBkEATARAQQEgBmsiB0GAAU8EQEIAIQEMAwsgBUEwaiABIAIgBkH/AGoiBhB7IAVBIGogBCALIAYQeyAFQRBq
 
IAEgAiAHEM8CIAUgBCALIAcQzwIgBSkDMCAFKQM4hEIAUq0gBSkDICAFKQMQhIQhASAFKQMoIAUpAxiEIQIgBSkDACEEIAUpAwgMAQsgC0L///////8/gyAGrUIwhoQLIAqEIQogAVAgAkJ/VSACQoCAgICAgICAgH9RG0UEQCAKIARCAXwiASAEVK18IQoMAQsgASACQoCAgICAgICAgH+FhFBFBEAgBCEBDAELIAogBCAEQgGDfCIBIARUrXwhCgsgACABNwMAIAAgCjcDCCAFQeAAaiQAC2oBAn8CQCAAKALYAiIDRQ0AIAAoAuACIgQgACgC3AJODQAgACgC6AIgAUsNACAAKALkAiACRg0AIAMgBEEDdGoiAyACNgIEIAMgATYCACAAIAE2AugCIAAgBEEBajYC4AIgACACNgLkAgsLDAAgACgCQEF/EMADCyEAIAAgASACQoCAgIAwIAMgBEECEN8BIQIgACABEAsgAgsZACABBEAgACABQXBqrUKAgICAkH+EEAsLC+sBAgJ/AX5CgICAgOAAIQMgACgCFAR+QoCAgIDgAAUgACgCBCEBIAAoAggiAkUEQCAAKAIAIAEQGSAAQQA2AgQgACgCAEEvEDIPCyACIAAoAgxIBEAgACgCACgCECABIAIgACgCECIBdCABa0ERahDjASIBRQRAIAAoAgQhAQsgACABNgIECyABIAAoAhAiAgR/IAIFIAEgACgCCGpBADoAECAAKAIQC0EfdK0gASkCBEL/////d4OEIgM3AgQgASADQoCAgIB4gyAANQIIQv////8Hg4Q3AgQgAEEANgIEIAGtQoCAgICQf4QLCw8AIAAoAkBBgAJqIAEQHQtyAQF/AkAgAUIgiKciAkF4RwRAIAINASABpyICQQBIDQEgAhCRAQ8LIAAgACgCECABpxDMAhAYDwtBACECIAAgARCHBCIBEAwEf0EABSABQoCAgIBwg0KAgICAgH9RBEAgA
 
CABEJcCDwsgACABpxCVBAsLSwECfyABQoCAgIBwWgR/IAGnIgMvAQYiAkENRgRAQQEPCyACQSlGBEAgAygCIC0AEA8LIAAoAhAoAkQgAkEYbGooAhBBAEcFQQALC3IBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgACAAKAIIIgJBAWo2AgggAiAAKAIEaiABOgAQC0EACwsQACAAIAAoAigpAwhBARBQCxQBAX4gACABECwhAiAAIAEQCyACCywBAX8jAEEQayIDJAAgAyACNgIMIABB3ABqQYABIAEgAhDQAhogA0EQaiQACygAIAAgAkEwIAJBABATIgIQDARAIAFCADcDAEF/DwsgACABIAIQrQELKAEBfwJAIABCgICAgHBUDQAgASAApyIBLwEGRw0AIAEoAiAhAgsgAgsNACAAIAEgAkEAEJ8DC5ABAQN/IAAhAQJAAkAgAEEDcUUNACAALQAARQRAQQAPCwNAIAFBAWoiAUEDcUUNASABLQAADQALDAELA0AgASICQQRqIQEgAigCACIDQX9zIANB//37d2pxQYCBgoR4cUUNAAsgA0H/AXFFBEAgAiAAaw8LA0AgAi0AASEDIAJBAWoiASECIAMNAAsLIAEgAGsLJgEBfyMAQRBrIgMkACADIAI2AgwgAEEGIAEgAhD7ASADQRBqJAALFQAgACgCACAAKAIEEBkgAEEANgIECwoAIABBUGpBCkkLIwECfyAAKAIAIgEgACgCBCICNgIEIAIgATYCACAAQgA3AgALDAAgACABIAIQDhBZCxEAIAAgASACIANBgIABEJYCCxEAIABCgICAgMCBgPz/AHy/CwwAIAAgASAAIAFKGwvzAgICfwF+AkAgAkUNACAAIAJqIgNBf2ogAToAACAAIAE6AAAgAkEDSQ0AIA
 
NBfmogAToAACAAIAE6AAEgA0F9aiABOgAAIAAgAToAAiACQQdJDQAgA0F8aiABOgAAIAAgAToAAyACQQlJDQAgAEEAIABrQQNxIgRqIgMgAUH/AXFBgYKECGwiATYCACADIAIgBGtBfHEiBGoiAkF8aiABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBeGogATYCACACQXRqIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQXBqIAE2AgAgAkFsaiABNgIAIAJBaGogATYCACACQWRqIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrSIFQiCGIAWEIQUgAyAEaiEBA0AgASAFNwMYIAEgBTcDECABIAU3AwggASAFNwMAIAFBIGohASACQWBqIgJBH0sNAAsLIAALDgAgACABKAIAIAEQgwULEQAgACAAKAIkEJ4CQQIQxAULJgEBfwJAIAAoAhBBg39HDQAgACgCICABRw0AIAAoAiRFIQILIAILQgECfwJAIAAoAhAgARDXBCIDEPIIIgQEQCAEEJ4CIQMMAQsgACADQQIQ1gQiAw0AQoCAgIDgAA8LIAAgAyACEMQFCwoAIAAgAUEBEFALHQAgACABKQMQEAsgACABKQMYEAsgACABKQMIEAsLFwEBf0EHIABCIIinIgEgAUELakERSxsLKgEBfyMAQRBrIgQkACAEIAM2AgwgACABIAIgAxDQAiEAIARBEGokACAACxcAIAAoAgwgACgCCEEAIAAoAhARAAAaC40BAQJ/IAEoAnwiBEGAgAROBEAgAEHG+gBBABBEQX8PC0F/IQMgACABQfQAakEQIAFB+ABqIARBAWoQfAR/QX8FIAEgASgCfCIDQQFqNgJ8IAEoAnQgA0EEdGoiA0IANwIAIANCADcCCCADIAAgAhAYNgIAIAMgAygCDEGA////B3I2AgwgASgCfEF/agsLQgEBfyA
 
DIAJLBH8gASgCBEF/TARAIAAgASACQQF0akEQaiADIAJrEN8HDwsgACABIAJqQRBqIAMgAmsQmgIFQQALCxEAIAAgARAOIAIQDkEBENsBCz4BAX8gAkIgiKciA0ECTQRAIAEgAqe3OQMAQQAPCyADQQtqQRJPBEAgASACEEo5AwBBAA8LIAAgASACENcIC7AEAgN/AX4CQAJAAkACQAJAA0AgAigCECIFIAUoAhggA3FBf3NBAnRqKAIAIQQgBRAoIQYDQCAERQ0EIAMgBiAEQX9qQQN0IgRqIgUoAgRHBEAgBSgCAEH///8fcSEEDAELCyACKAIUIARqIQQgBSgCACEGIAFFDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFCgICAgDA3AwggASAGQRp2QQdxIgY2AgACQAJAAkACQCAFKAIAQR52QQFrDgMAAQIDCyABIAZBEHI2AgAgBCgCACIABEAgASAArUKAgICAcIQQDjcDEAtBASEFIAQoAgQiAEUNByABIACtQoCAgIBwhBAONwMYQQEPCyAEKAIAKAIQKQMAIgcQgwENBCABIAcQDjcDCEEBDwsgACACIAMgBCAFEMcCRQ0BDAYLCyABIAQpAwAQDjcDCEEBDwtBASEFIAZBgICAgHxxQYCAgIB4Rw0CIAQoAgAoAhApAwAQgwFFDQILIAAgAxDeAQwCC0EAIQUgAi0ABSIEQQRxRQ0AIARBCHEEQCADEF1FDQEgAxB5IgMgAigCKCIESSEFIAFFIAMgBE9yDQEgAUKAgICAMDcDGCABQoCAgIAwNwMQIAFBBzYCACABIAAgAq1CgICAgHCEIAMQeDcDCEEBDwsgACgCECgCRCACLwEGQRhsaigCFCIERQ0AIAQoAgAiBEUNACAAIAEgAq1CgICAgHCEIAMgBBEYACEFCyAFDwtBfwuvAQIDfwF+AkACQCAAKQNwIgRQRQRAIAApA3ggBFkNAQsgABCQCSIDQX9K
 
DQELIABBADYCaEF/DwsgAAJ/IAAoAggiASAAKQNwIgRQDQAaIAEgBCAAKQN4Qn+FfCIEIAEgACgCBCICa6xZDQAaIAIgBKdqCzYCaCAAKAIEIQIgAQRAIAAgACkDeCABIAJrQQFqrHw3A3gLIAJBf2oiAC0AACADRwRAIAAgAzoAAAsgAwsJACAAIAE2AAALBwAgAEEfdgsJACAAQQEQuQELLQAgAUKAgICAYINCgICAgCBRBEAgAEGBzABBABAVQoCAgIDgAA8LIAAgARAsC0wBAX8CQAJAIAAgASACEA4QsgUiBQ0AIAEoAgAiAEEASA0BIAAgA0wNACABIAM2AgALIAUPCyABQQAgACAEaiIAIABBAEgbNgIAQQALGAAgAC0AAEEgcUUEQCABIAIgABCYBBoLCwwAIAAgAUH/AXEQDwvdAQEGfyAAQQFqIQYgAC0AACIDQRh0QRh1IgVBAE4EQCACIAY2AgAgAw8LQX8hAwJAIAVBQGsiBEH/AXFBPUsNACAEQRh0QRh1QQJ0QZTdAWooAgAiBCABTg0AIARBf2ohByAAIARqQQFqIQggBSAEQevcAWotAABxIQFBACEAA0AgACAERwRAIAYsAAAiBUF/SiAFQf8BcUG/AUtyDQIgBUE/cSABQQZ0ciEBIABBAWohACAGQQFqIQYMAQsLIAEgB0ECdEGA3QFqKAIASQ0AIAIgCDYCACABIQMLIAMLCwAgACABQQAQxgULrgIAAkACQAJAAkAgAkEDTARAAkACQAJAAkACQAJAAkACQAJAIAFBqH9qDgkAAQIDBAUGBwgKCyAAIAJBQ2pB/wFxEA8PCyAAIAJBR2pB/wFxEA8PCyAAIAJBS2pB/wFxEA8PCyAAIAJBT2pB/wFxEA8PCyAAIAJBU2pB/wFxEA8PCyAAIAJBV2pB/wFxEA8PCyAAIAJBW2pB/wFxEA8PCyAAIAJBX2pB/wFxEA8PCyAAIAJBY2pB/wFxEA8PC
 
yACQf8BSg0BAkACQAJAIAFBqH9qDgMAAQIECyAAQcABEA8MBQsgAEHBARAPDAQLIABBwgEQDwwDCyABQSJGDQELIAAgAUH/AXEQDyAAIAJB//8DcRAwDwsgACACQWxqQf8BcRAPDwsgACACQf8BcRAPCxwBAX8gACABEDsEf0EABSAAQY/EAEEAEBVBfwsLGQEBfyABIAIQQSIDRQRAIAAgAhCRAwsgAwszAQF/IAEEQANAIAIgA0ZFBEAgACABIANBA3RqKAIEEBIgA0EBaiEDDAELCyAAIAEQGQsLJgEBfyMAQRBrIgIkACACQQA2AgwgAEEBIAFBABD7ASACQRBqJAALGQAgACgCECABEJsCIgFFBEAgABDHAQsgAQsPACAAKAJAQYACaiABEA8LbwIBfwF+IAAhAwJAAkAgARARDQAgACABQTsgAUEAEBMiBBAMBEAgBA8LIAQQIQ0BIAAgBBALIAAgARCDAyIDDQBCgICAgOAADwsgAygCKCACQQN0aikDABAOIQQLIAAgBCACEFAhASAAIAQQCyABCzEAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgA0GHgAEQwwILEAAgACAANgIEIAAgADYCAAtjAAJAAkAgAUEASA0AIAAoAqwCIAFMDQAgACgCpAIgAUEUbGoiACAAKAIAIAJqIgA2AgAgAEF/TA0BIAAPC0GdigFBoQ1B6qcBQcKKARAAAAtBz4oBQaENQe2nAUHCigEQAAALDAAgAEG80AFBABAVC0UBAX8gAkL/////B1gEQCAAIAEgAhCdAQ8LIAAgAhCSAyIDRQRAQoCAgIDgAA8LIAAgASADIAFBABATIQEgACADEBIgAQsNACAAIAEgARBDEPwBC20BAX8jAEGAAmsiBSQAIARBgMAEcSACIANMckUEQCAFIAFB/wFxIAIgA2siAkGAAiACQYACSSIBGxBMGiABRQRAA0AgAC
 
AFQYACEGEgAkGAfmoiAkH/AUsNAAsLIAAgBSACEGELIAVBgAJqJAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkF/aiICDQEMAgsLIAQgBWshAwsgAwv9DAEIfyMAQRBrIgokAAJAAkAgAUL/////b1gEQCAAECcMAQsgBkGAwABxIQwgBkGAMHEhDiABpyEJAkACQAJAAkACQANAIAkoAhAiByAHKAIYIAJxQX9zQQJ0aigCACELIAcQKCEIAkADQCALRQ0BIAIgCCALQX9qQQN0IgtqIgcoAgRHBEAgBygCAEH///8fcSELDAELCyAJKAIUIAtqIQggCiAHNgIMAn8gDEUgBygCACILQYCAgIACcUVyRQRAIAAgCkEIaiADEA5BABDEAg0JAn4gCigCCCIHQQBOBEAgB60MAQsgB7gQFgshAyAJKAIQIgggCCgCGCACcUF/c0ECdGooAgAhByAIECghCAJAA0AgBwRAIAggB0F/akEDdCILaiIHKAIEIAJGDQIgBygCAEH///8fcSEHDAELC0G7F0GhDUGqxgBBxxcQAAALIAkoAhQgC2ohCCAKIAc2AgwgBygCACELCyALQRp2Ig0LIAYQlgNFDQYgDUEwcSINQTBGBEAgACAJIAIgCCAHEMcCRQ0CDAgLIAZBgPQAcUUNBSAOBEAgBKdBACAAIAQQOxshAiAFp0EAIAAgBRA7GyEMAkAgC0GAgICAfHFBgICAgARHBEBBfyEHIAAgCSAKQQxqEOABDQsCQCAKKAIMKAIAQYCAgIB8cUGAgICAeEYEQCAAKAIQIAgoAgAQ9wEMAQsgACAIKQMAEAsLIAooAgwiByAHKAIAQf///78BcUGAgICABHI2AgAgCEIANwMADAELIAtBgICAIHENACAGQYAQcQRAIAIgCCgCAEcNCQsgBkGAIHFFDQAgDCAIKAIERw0ICyAGQYAQcQRAIAg
 
oAgAiBwRAIAAgB61CgICAgHCEEAsLIAIEQCAEEA4aCyAIIAI2AgALIAZBgCBxRQ0GIAgoAgQiAgRAIAAgAq1CgICAgHCEEAsLIAwEQCAFEA4aCyAIIAw2AgQMBgsgDUEgRg0EIA1BEEYEQEF/IQcgACAJIApBDGoQ4AENCSAIKAIAIgIEQCAAIAKtQoCAgIBwhBALCyAIKAIEIgIEQCAAIAKtQoCAgIBwhBALCyAKKAIMIgIgAigCAEH///+/A3E2AgAgCEKAgICAMDcDACAKKAIMKAIAIQsMBQsgDEUgC0GAgIDgAHFyDQRBASEHIAAgAyAIKQMAEFhFDQYMCAsgCkEANgIMIAktAAVBCHFFDQIgCS8BBiIHQQJHDQEgAhBdRQ0CIAIQeSIIIAkoAihPDQIgDkVBACAGQQcQggRBB0YbRQRAIAAgCRCVA0UNAQwHCwtBASEHIAxFDQYgACAJKAIkIAhBA3RqIAMQDhAfDAYLIAdBa2pB//8DcUEISw0AAkACQCACEF1FBEAgACACELoFIgEQEQ0DQX8hByABEAwNCCAAIAEQtwUiAkF/TARAIAAgARALDAkLIAJFBEAgACABEAsgACAGQfYXEHYhBwwJCyABEOAIIQIgACABEAsgAkUNASAAIAZBlxgQdiEHDAgLIAIQeSICIAkQgQRJDQELIAAgBkG1GBB2IQcMBgsgDkVBACAGQQcQggRBB0YbRQRAIAAgBkHXGBB2IQcMBgtBASEHIAxFDQUgACABIAKtIAMQDiAGEN0BIQcMBQsgACAJIAIgAyAEIAUgBhCFBCEHDAQLIAtBgICAgHxxQYCAgIB4RgRAIAwEQCAJLwEGQQtGBEAgACADIAgoAgAoAhApAwAQWEUNBAsgACAIKAIAKAIQIAMQDhAfCyAGQYIEcUGABEcNAUF/IQcgACAJIApBDGoQ4AENBCAIKAIAKAIQKQMAEA4hASAAKAIQIAgoAgAQ9wEgCCABNwMA
 
IAooAgwiAiACKAIAQf///78DcTYCAAwBCyALQYCAgIACcQRAQQEhAiAMBEAgACAJIAMQDiAGELkFIQILIAZBggRxQYAERgRAIAogCSgCEBAoIgY2AgxBfyEHIAAgCSAKQQxqIAYoAgBBGnZBPXEQlAMNBQsgAiEHDAQLIAwEQCAAIAgpAwAQCyAIIAMQDjcDAAsgBkGABHFFDQBBfyEHIAAgCSAKQQxqIAooAgwoAgBBGnZBPXEgBkECcXIQlAMNAwtBf0EBIAAgCSAKQQxqIAZBCHZBBXEiAEF/cyAKKAIMKAIAQRp2cSAAIAZxchCUAxshBwwCCyAAIAZB2RcQdiEHDAELQX8hBwsgCkEQaiQAIAcLTAECfyMAQRBrIgMkAAJAIAFBgIABcUUEQCABQYCAAnFFDQEgABD4AUUNAQsgA0EANgIMIABBBCACQQAQ+wFBfyEECyADQRBqJAAgBAvMAQECfwJAAkAgAUKAgICAcFoEQCABpyEDA0ACQCADLQAFQQRxRQ0AIAAoAhAoAkQgAy8BBkEYbGooAhQiBEUNACAEKAIQRQ0AIAAgA61CgICAgHCEEA4iASACIAQoAhAREgAhAiAAIAEQCyACDwsgA61CgICAgHCEEA4hASAAQQAgAyACEFohBCAAIAEQCyAEDQIgAy8BBkFrakH//wNxQQhNBEAgACACEJkDIgQNBAsgAygCECgCLCIDDQALC0EAIQQLIAQPCyAEQR91CxoAIAAgASACQQBOBH4gAq0FIAK4EBYLEJ0BCwsAIABB/////wdxC9MJAgR/BH4jAEHwAGsiBSQAIARC////////////AIMhCgJAAkAgAUJ/fCILQn9RIAJC////////////AIMiCSALIAFUrXxCf3wiC0L///////+///8AViALQv///////7///wBRG0UEQCADQn98IgtCf1IgCiALIANUrXxCf3wiC0L///////+///8AVCALQv///////
 
7///wBRGw0BCyABUCAJQoCAgICAgMD//wBUIAlCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhBCABIQMMAgsgA1AgCkKAgICAgIDA//8AVCAKQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQQMAgsgASAJQoCAgICAgMD//wCFhFAEQEKAgICAgIDg//8AIAIgASADhSACIASFQoCAgICAgICAgH+FhFAiBhshBEIAIAEgBhshAwwCCyADIApCgICAgICAwP//AIWEUA0BIAEgCYRQBEAgAyAKhEIAUg0CIAEgA4MhAyACIASDIQQMAgsgAyAKhFBFDQAgASEDIAIhBAwBCyADIAEgAyABViAKIAlWIAkgClEbIgcbIQogBCACIAcbIgtC////////P4MhCSACIAQgBxsiAkIwiKdB//8BcSEIIAtCMIinQf//AXEiBkUEQCAFQeAAaiAKIAkgCiAJIAlQIgYbeSAGQQZ0rXynIgZBcWoQeyAFKQNoIQkgBSkDYCEKQRAgBmshBgsgASADIAcbIQMgAkL///////8/gyEEIAhFBEAgBUHQAGogAyAEIAMgBCAEUCIHG3kgB0EGdK18pyIHQXFqEHtBECAHayEIIAUpA1ghBCAFKQNQIQMLIARCA4YgA0I9iIRCgICAgICAgASEIQQgCUIDhiAKQj2IhCEJIAIgC4UhDAJ+IANCA4YiASAGIAhrIgdFDQAaIAdB/wBLBEBCACEEQgEMAQsgBUFAayABIARBgAEgB2sQeyAFQTBqIAEgBCAHEM8CIAUpAzghBCAFKQMwIAUpA0AgBSkDSIRCAFKthAshAiAJQoCAgICAgIAEhCEJIApCA4YhAwJAIAxCf1cEQCADIAJ9IgEgCSAEfSADIAJUrX0iBIRQBEBCACEDQgAhBAwDCyAEQv////////8DVg0BIAVBIGogASAEIAEgBCAEUCIHG3kgB0EGdK18p0F0aiIHEHsgBi
 
AHayEGIAUpAyghBCAFKQMgIQEMAQsgAiADfCIBIAJUrSAEIAl8fCIEQoCAgICAgIAIg1ANACABQgGDIARCP4YgAUIBiISEIQEgBkEBaiEGIARCAYghBAsgC0KAgICAgICAgIB/gyECIAZB//8BTgRAIAJCgICAgICAwP//AIQhBEIAIQMMAQtBACEHAkAgBkEASgRAIAYhBwwBCyAFQRBqIAEgBCAGQf8AahB7IAUgASAEQQEgBmsQzwIgBSkDACAFKQMQIAUpAxiEQgBSrYQhASAFKQMIIQQLIAGnQQdxIgZBBEutIARCPYYgAUIDiIQiAXwiAyABVK0gBEIDiEL///////8/gyAChCAHrUIwhoR8IQQCQCAGQQRGBEAgBCADIANCAYMiAXwiAyABVK18IQQMAQsgBkUNAQsLIAAgAzcDACAAIAQ3AwggBUHwAGokAAtQAQF+AkAgA0HAAHEEQCABIANBQGqthiECQgAhAQwBCyADRQ0AIAIgA60iBIYgAUHAACADa62IhCECIAEgBIYhAQsgACABNwMAIAAgAjcDCAsfAQF/IAMoAgAgBEgEfyAAIAEgAiADIAQQ7QcFQQALC08AAkAgACABIAIQDhCxBSIADQAgASkDACICQn9XBEAgASACIAV8IgI3AwALIAIgA1MEQCABIAM3AwAgAA8LIAIgBFcNACABIAQ3AwALIAALiQIBA38gAUEQaiEFAkACQCABKAIQIgQtABBFDQAgACgCECAEIAIgAxDfCCIGBEAgBigCHCICIAQoAhxHBEAgACABKAIUIAJBA3QQmQIiAkUNAyABIAI2AhQLIAEgBhCeAiICNgIQIAAoAhAgBBCcAiABKAIUIAIoAiBBA3RqQXhqDwsgBCgCAEEBRg0AIAAgBBC2BSIERQ0BIARBAToAECAAKAIQIAQQkwMgACgCECAFKAIAEJwCIAUgBDYCAAsgBCgCAEEBRgRAQQAhBCAAIAUgASACIAM
 
Q1QQEf0EABSABKAIUIAEoAhAoAiBBA3RqQXhqCw8LQdTAAEGhDUG2PkH0wAAQAAALQQALfgICfwF+IwBBEGsiAyQAIAACfiABRQRAQgAMAQsgAyABIAFBH3UiAmogAnMiAq1CACACZyICQdEAahB7IAMpAwhCgICAgICAwACFQZ6AASACa61CMIZ8IAFBgICAgHhxrUIghoQhBCADKQMACzcDACAAIAQ3AwggA0EQaiQAC6oFAQV/IwBB4ABrIgQkACAEIAE2AlxBACEBAkACQAJAAkACQAJAAkACQAJAAkACQANAIAFBFGwiAyAEakFsaiEFA0ACQCAEIAQoAlwiAkEEajYCXAJAAkACQAJAAkAgAigCACIGDggAAQIDAwMECAULIAFBBE4NECAEIAJBCGo2AlwgAigCBCECIAMgBGoiAyAAKAIMIAAoAhAQkwEgAUEBaiEBIAMgAhDvBUUNBgwJCyABQQRODQ4gBCACQQhqNgJcIAIoAgQhAiADIARqIgMgACgCDCAAKAIQEJMBIAFBAWohASADIAIQ7gVFDQUMCAsgAUEETg0MIAQgAkEIajYCXCACKAIEIQIgAyAEaiIDIAAoAgwgACgCEBCTASABQQFqIQEgAyACEKkDRQ0EDAcLIAFBAUwNCiABQQRODQkgAyAEaiICIAAoAgwgACgCEBCTASACIAJBWGoiAygCCCADKAIAIAJBbGoiBSgCCCAFKAIAIAZBfWoQ1wINBSABQX9qIQEgAxBVIAUQVSADIAIoAhA2AhAgAyACKQIINwIIIAMgAikCADcCAAwDCyABQQBMDQcgBRDWAkUNAQwFCwsLEAEACyABQQFHDQIgACAEEMMJIQEgBBBVDAkLIAFBAWohAQtBACEAIAFBACABQQBKGyEBA0AgACABRgRAQX8hAQwJBSAEIABBFGxqEFUgAEEBaiEADAELAAsAC0G15ANB7OMDQaYKQYbkAxAAAAtBpuQDQezjA0Gb
 
CkGG5AMQAAALQc7jA0Hs4wNBjApBhuQDEAAAC0GX5ANB7OMDQYsKQYbkAxAAAAtBzuMDQezjA0GACkGG5AMQAAALQc7jA0Hs4wNB+QlBhuQDEAAAC0HO4wNB7OMDQfIJQYbkAxAAAAsgBEHgAGokACABC2kBAn8CfyAAKAIAIgNBAmoiBCAAKAIESgRAQX8gACAEEKoDDQEaIAAoAgAhAwsgACADQQFqNgIAIAAoAggiBCADQQJ0aiABNgIAIAAgACgCACIAQQFqNgIAIAQgAEECdGogAjYCAEEACwulAgEGfyMAQRBrIgUkAAJAIAAoAkAiAUUEQAwBCwJAIAECfyABKALIASICIAEoAsQBIgRIBEAgASgCzAEhAyACDAELIAJBAWogBEEDbEECbRBLIQQgACgCACEDAkAgASgCzAEiBiABQdABakYEQCADQQAgBEEDdCAFQQxqELQBIgNFDQMgAyABKALMASABKALIAUEDdBAkGgwBCyADIAYgBEEDdCAFQQxqELQBIgNFDQILIAUoAgwhBiABIAM2AswBIAEgBkEDdiAEajYCxAEgASgCyAELQQFqNgLIASADIAJBA3RqIgQgASgCvAE2AgAgBCABKALAATYCBCAAQbIBEA0gACACQf//A3EQFyABIAI2ArwBDAELQX8hAgsgBUEQaiQAIAILEwAgAEKAgICAcINCgICAgMAAUQtJAQJ/IAJBKRBBIgQtABEEQCAAEMECQQAPCyAAIAQpAwgiAiADIAJBABATIgIQDAR/QQAFIAFCgICAgDAgAiACECobNwMAIAQLCywBAX8jAEEQayICJAAgAiAAKAI4NgIMIAJBDGogARCuCCEAIAJBEGokACAAC58BAQJ/AkACQCACQv////8HWARAIAAgASACpxCRARB3IgRBAUgNAUF/IAQgACABIAIQnQEiAhAMGyEEDAILIAAgAhCSAyIFRQRAQX8hBAwBCwJAIAAgASAFEHciB
 
EEBSARAQoCAgIAwIQIMAQtBfyAEIAAgASAFIAFBABATIgIQDBshBAsgACAFEBIMAQtCgICAgDAhAgsgAyACNwMAIAQLFgAgAEKAgICAcFoEQCAApyABNgIgCwsNACAAIAEgARBDEJoCC3sBAX9BfyECIAAoAhQEf0F/BSABQoCAgIBwg0KAgICAkH9SBEAgACgCACABECwiARAMBEAgABD9AkF/DwsgACABpyICQQAgAigCBEH/////B3EQVyECIAAoAgAgARALIAIPCyAAIAGnIgBBACAAKAIEQf////8HcRBXCwtqAQF/IAAoAhQEQCAAKAIAIAEQC0F/DwsCQCABQoCAgIBwg0KAgICAkH9RDQAgACgCACABED4iARAMRQ0AIAAQ/QJBfw8LIAAgAaciAkEAIAIoAgRB/////wdxEFchAiAAKAIAIAEQCyACCxYBAX8gAEIgiKciAUUgAUELakERS3ILSgECfyACQv////8HWARAIAAgASACIANBgIABEN0BDwsgACACEJIDIgRFBEAgACADEAtBfw8LIAAgASAEIAMQSSEFIAAgBBASIAULggoBEn8jAEEwayIHJAAgAUEANgIAIAJBADYCACAHQQA2AiwgB0EANgIoIARBMHEhDiAEQRBxIREgAygCECIJECghBQJAAkACQAJ/A0AgCCAJKAIgSARAAkAgBSgCBCINRQ0AQQAgESAFKAIAQYCAgIABcRsgBCAAIA0QmAMiC3ZBAXFFcg0AAkAgDkUNACAFKAIAQYCAgIB8cUGAgICAeEcNACADKAIUIAhBA3RqKAIAKAIQKQMAEIMBRQ0AIAAgBSgCBBDeAUF/DAQLIAAgB0EkaiANELMBBEAgDEEBaiEMDAELIAtFBEAgD0EBaiEPDAELIApBAWohCgsgBUEIaiEFIAhBAWohCAwBCwtBACEFAkAgAy0ABSIGQQRxRQ0AIAZBCHEEQCAEQQFxRQ0BIAMoAiggDGohDA
 
wBCyADLwEGIgZBBUYEQCAEQQFxRQ0BIAOtQoCAgIBwhBCJBCAMaiEMDAELIAAoAhAoAkQgBkEYbGooAhQiBkUNACAGKAIEIgZFDQBBfyAAIAdBLGogB0EoaiADrUKAgICAcIQgBhE/AA0BGiAEQQR2QX9zQQFxIQtBACEIA0AgCCAHKAIoTw0BIAQgACAIQQN0IgkgBygCLGooAgQiBhCYA3ZBAXEEQAJAIA5FBEBBACEGDAELIAAgByADIAYQWiIGQX9MBEAgACAHKAIsIAcoAigQaEF/DAULIAYEfyAHKAIAIQYgACAHEFIgBkECdkEBcQVBAAshBiAHKAIsIAlqIAY2AgALIAYgC3IgBWohBQsgCEEBaiEIDAALAAsgACAMIA9qIg8gCmogBWoiE0EBEEtBA3QQLiIQRQRAIAAgBygCLCAHKAIoEGhBfwwBC0EAIQkgAygCECIVECghBSAMIQYgDyEKQQEhFEEAIQgDQCAIIBUoAiBORQRAAkAgBSgCBCISRQ0AQQAgESAFKAIAQYCAgIABcSINGyAEIAAgEhCYAyILdkEBcUVyDQAgDUEcdiEWAn8gACAHQSRqIBIQswEEQCAJQQFqIQ5BACEUIAYhDSAKDAELIAtFBEAgBkEBaiENIAkhDiAGIQkgCgwBCyAJIQ4gBiENIAohCSAKQQFqCyELIAAgEhAYIQogECAJQQN0aiIGIBY2AgAgBiAKNgIEIA4hCSANIQYgCyEKCyAFQQhqIQUgCEEBaiEIDAELCwJAIAMtAAUiC0EEcUUNAAJ/IAtBCHEEQCAEQQFxRQ0CIAMoAigMAQsgAy8BBkEFRwRAQQAhBQNAIAUgBygCKE9FBEACQEEAIBEgBygCLCAFQQN0aiIDKAIAIg0bIAQgACADKAIEIgsQmAN2QQFxRXJFBEAgECAKQQN0aiIDIA02AgAgAyALNgIEIApBAWohCgwBCyAAIAsQEgsgBUEBaiEFDAELCyAAIAc
 
oAiwQGQwCCyAEQQFxRQ0BIAOtQoCAgIBwhBCJBAshCEEAIQUgCEEAIAhBAEobIQQDQCAEIAVGDQEgECAJQQN0aiIDQQE2AgAgAyAFEJEBNgIEIAVBAWohBSAJQQFqIQkMAAsACyAJIAxHDQEgBiAPRw0CIAogE0cNAyAMRSAUckUEQCAQIAxBCEEnIAAQ2wILIAEgEDYCACACIBM2AgBBAAshBSAHQTBqJAAgBQ8LQcI+QaENQbQ7Qd4+EAAAC0H9PkGhDUG1O0HePhAAAAtBqj9BoQ1BtjtB3j4QAAALJQECfyAAIAAoAtgBIgFBf2o2AtgBIAFBAUwEfyAAEPQHBUEACwsdAQF+IAAoAhAiACkDeCEBIABCgICAgCA3A3ggAQsXACAAIAAoAhAiACkDeBALIAAgATcDeAsLACAAQYCAgIB4cgtkAQF/AkAgACgCCCICIAAoAgxODQAgACgCEARAIAAgAkEBajYCCCAAKAIEIAJBAXRqIAE7ARBBAA8LIAFB/wFLDQAgACACQQFqNgIIIAAoAgQgAmogAToAEEEADwsgACABEPMICyQAIAAgATYCDCAAQQA2AgggAEIANwIAIAAgAkHsAiACGzYCEAtMAQJ/An8gACgCBCIDIAJqIgQgACgCCEsEf0F/IAAgBBDmAQ0BGiAAKAIEBSADCyAAKAIAaiABIAIQJBogACAAKAIEIAJqNgIEQQALCw4AIAAoAhAgASACEMAFCy0BAn9BfyEDIAAgAUEAEJgBIgIEfyACEKsBBEAgABBwQX8PCyACKAIoBUF/CwsJACAAQQEQ1AQLagEDfyMAQRBrIgMkAAJAAkAgAUKAgICAcFQNACABpyIELwEGIQUgAgRAIAVBHkcNAQwCCyAFQWtqQf//A3FBCUkNAQsgA0HyHkHVHiACGzYCACAAQdTQASADEBVBACEECyADQRBqJAAgBAuFAgEDfyACIAEoAgQiBEH/////B3EgA0dyRQRA
 
IAGtQoCAgICQf4QQDg8LIAMgAmsiBUEBSCAEQX9KckUEQCADIAIgAyACShshBkEAIQQgAiEDA0AgAyAGRkUEQCAEIAEgA0EBdGovARByIQQgA0EBaiEDDAELCyAEQYACTgRAIAAgASACQQF0akEQaiAFEIwEDwtBACEDIAAgBUEAEPoBIgBFBEBCgICAgOAADwsgAEEQaiEEA0AgAyAFRkUEQCADIARqIAEgAiADakEBdGotABA6AAAgA0EBaiEDDAELCyAEIAVqQQA6AAAgAK1CgICAgJB/hA8LIAAgASACakEQaiAFEM4CCxMAIABCgICAgHCDQoCAgICQf1ELHgAgACABIAJBAE4EfiACrQUgArgQFgsgAyAEEMMCCwkAIAAgARDiCAvNAgEDfwJAIAFCgICAgHBUIAJC/////w9Wcg0AIAGnIgMoAiggAqciBE0NAAJAAkACQAJAAkACQAJAAkACQAJAIAMvAQYiBUF4ag4WAQoKCgoKCgoKCgoKCgMCAwQFBgcICQALIAVBAkcNCQsgAygCJCAEQQN0aikDABAODwsgAygCJCAEajAAAEL/////D4MPCyADKAIkIARqMQAADwsgAygCJCAEQQF0ajIBAEL/////D4MPCyADKAIkIARBAXRqMwEADwsgAygCJCAEQQJ0ajUCAA8LIAMoAiQgBEECdGooAgAiAEEATgRAIACtDwsgALgQFg8LIAMoAiQgBEECdGoqAgC7EBYPCyADKAIkIARBA3RqKwMAEBYPCyAAIAIQOiEDIAAgAhALIANFBEBCgICAgOAADwsgACABIAMgAUEAEBMhASAAIAMQEiABCzEBAX8gAUKAgICAcFQEQEEADwsgAaciAi8BBkEpRgRAIAAgARDlCA8LIAItAAVBAXELHgAgAEKAgICAcINCgICAgJB/UQRAIACnIAEQjwQLCxYAIAAgACgCKCABQQN0aikDACABEFALJAEBfyMAQRBrIgMkA
 
CADIAI2AgwgACABIAIQmwQgA0EQaiQACzUBAX8gACgCACIBBEAgACgCFCABQQAgACgCEBEAABoLIABCADcCACAAQgA3AhAgAEIANwIICxkAIAAgASACQQEgAyAEIAUgBiAHIAgQhQILIQECfyAAKAKYAiICQQBOBH8gACgCgAIgAmotAAAFQQALC+wEAQd/IwBBkAJrIgUkACAFQQA6ABAgACAFEO8CIABBEGohCUEBIQQCQAJAA0BBfiEIAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAkoAgAiA0H+AGoOBQEKCgoGAAsCQAJAAkACQAJAIANBWGoOAgECAAsCQCADQUVqDgMGDggACwJAIANBpX9qDgMBDgMACwJAIANBhX9qDgMBDgQACyADQaV/Rg0GIANBL0YNCCADQap/Rw0NDBELIARB/wFNDQkMDwsgBEF/aiIEIAVBEGpqLQAAQShHDQ4MCgsgBEF/aiIEIAVBEGpqLQAAQdsARw0NDAkLQf0AIQYgBEF/aiIEIAVBEGpqLQAAIghB+wBGDQpBqn8hAyAIQeAARw0NIAAgCRCOAiAAQQA2AjAgACAAKAIUNgIEIAAgACgCOBDJAw0NCyAAKAIoQeAARg0HIARB/wFLDQsgBUEQaiAEakHgADoAAAwGCyAHIARBAkZyIQdBOyEGDAgLIAdBAnIgByAEQQJGGyEHQaV/IQYMBwsgB0EEciEHQT0hBgwGC0F/IQgLIAYQ6wZFDQIgACAAKAI4IAhqNgI4IAAQzgQNBgwCCyAFQRBqIARqIAM6AAALIARBAWohBAsgCSgCACEDCyADQYN/RwRAIAMhBgwBC0FZIQYgAEHDABBPDQAgAEEtEE8NAEGDfyEGCyAAEBANASAEQQFLDQALQVkgACgCECAAQcMAEE8bIQMgAkUNASADQQogACgCBCAAKAIURhshAwwBC0GqfyEDCyABBEAgASAHNgIACyAAIAUQ7gIhACAFQZ
 
ACaiQAQX8gAyAAGwsRACAAIAAoArACKAIANgKwAgtOACABIAAoArACNgIAIAAgATYCsAIgAUF/NgIUIAEgBTYCECABIAQ2AgwgASADNgIIIAEgAjYCBCAAKAK8ASEAIAFBADYCHCABIAA2AhgLywUBBn8gACgCACEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMOBwQAAAAAAQIDCyABIAIgASgCwAFBARDFAyIGQQBIDQUCQCAGQf////8DTARAIAEoAnQiByAGQQR0aiIIKAIEIgUgASgCvAEiCUYEQCADQQNHDQIgAS0AbkEBcQ0CIAcgBkEEdGooAgxB+ABxQQhHDQIMCQsgBUECaiAJRw0HIAgoAgxB+ABxQRhGDQEMBwsgASgCvAEgASgC8AFHDQYLIABBwfwAQQAQFAwHCyAEIAEgAkEDEOYCDwsgASACIAEoAsABQQAQxQNBAE4NAiABKAIoBEACQCABIAIQrAIiA0UNACADLQAEQQJxRQ0AIAMoAgggASgCvAFHDQAgASgCJEEBRg0EC0GAgICABEF/IAQgASACEOcCGw8LIAEgAhCGAiIAQX9KDQggBCABIAIQViIAQQBIDQgCQCACQc0ARw0AIAEoAkhFDQAgASAANgKYAQsgASgCdCAAQQR0aiABKAK8ATYCCCAADwsQAQALIAQgASACQQAQ5gIhAAwGCyAAQcH8AEEAEBQMAgsgASgCvAEhBSADQX1qQQJJDQAgBSABKALwAUcNACABIAIQ0ARBAEgNACAAQez8AEEAEBQMAQsgASACIAUQ7QZBAE4EQCAAQZP9AEEAEBQMAQsCQCABKAIoRQ0AIAEgAhCsAiIGRQ0AIAEgBigCCCAFEM8ERQ0AIABBr/sAQQAQFAwBCyABKAIgRQ0CIAEoAiRBAUsNAiAFIAEoAvABRw0CIAQgASACEOcCIgANAQtBfw8LIAAgAC0ABEH5AXFBBkECIANBAkYbcjoABEG
 
AgICABA8LIAQgASACQQEgA0EERkEBdCADQQNGGxDmAiIAQQBIDQAgASgCdCAAQQR0aiIBIAEoAgxBfHEgA0ECRnJBAnI2AgwgAA8LIAALswEBA38CQAJAIAAoAkAiAhCkASIDQb8BRwRAIANBzQBHDQEgAigCmAIhAyACQX82ApgCIAIgAzYChAIgAEHNABANIAAgARAbDwsgAigCmAIiAyADIAIoAoACIgRqKAABa0EBaiIDIARqIgQtAABB1gBHDQEgACgCACAEKAABEBIgAigCgAIgA2pBAWogACgCACABEBgQXCACQX82ApgCCw8LQdaFAUGhDUH1rwFB3owBEAAACzIAIAAgASACQoCAgIAIfEL/////D1gEfiACQv////8PgwUgArkQFgsgAyAEQQdyEMMCCxAAIAAoAiAoAgwoAiAtAAQLqQEBAn8jAEEQayIEJAACQAJAIAAgASACQQBBACAEQQxqEPgEIgEQDA0AIAQoAgwiBUECRwRAIAMgBTYCACABIQIMAgsgACABQekAIAFBABATIgIQDA0AIAMgACACEC0iAzYCAEKAgICAMCECIANFBEAgACABQcAAIAFBABATIQILIAAgARALDAELIAAgARALIANBADYCAEKAgICA4AAhAgsgBEEQaiQAIAILIQAgACABIAJCAEL/////////D0IAEH0hASAAIAIQCyABC7YHAgd/AX4jAEEQayICJAAgACAAQRBqIgQQjgIgACAAKAI4IgE2AjQgAiABNgIMIAAgACgCFDYCBAJ/A0ACQCAAIAE2AhggACAAKAIIIgY2AhRBIiEDAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLAAAIgdB/wFxIgUOewAJCQkJCQkJCQYEBQUDCQkJCQkJCQkJCQkJCQkJCQkJBgkCCQ4JCQEJCQkLCQoJBwgMDAwMDAwMDAwJCQkJCQkJDg4ODg4ODg4ODg4ODg4O
 
Dg4ODg4ODg4ODg4JCQkJDgkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODgkLIAEgACgCPEkNDCAEQap/NgIADA4LQSchAyAAKAJMRQ0LCyAAIANBASABQQFqIAQgAkEMahCGAw0ODAwLIAFBAWogASABLQABQQpGGyEBCyACIAFBAWoiATYCDCAAIAZBAWo2AggMDQsgACgCTEUNBwsgAiABQQFqIgE2AgwMCwsgACgCTEUNBSABLQABIgNBL0YNCCADQSpHDQUgAUECaiEBA0AgAiABNgIMA0ACQAJAAkACQCABLQAAIgNBdmoOBAECAgMACyADQSpHBEAgAw0CIAEgACgCPEkNAyAAQcDUAEEAEBQMDwsgAS0AAUEvRw0CIAIgAUECaiIBNgIMDA8LIAAgACgCCEEBajYCCAwBCyADQRh0QRh1QX9KDQAgAUEGIAJBDGoQYyEDIAIoAgwhASADQX9HDQELCyABQQFqIQEMAAsACyABLQABEEZFDQMMBAsgB0F/Sg0DIABB2tQAQQAQFAwHCyABLQABEEZFDQIMAQsgACgCTEUNASABLQABEEZFDQELIAAoAgAgASACQQxqQQBBCiAAKAJMIgEbIAFBAEdBAnQQugIiCBAMDQQgAEGAfzYCECAAIAg3AyAMAgsgBCAFNgIAIAIgAUEBajYCDAwBCyACIAFBAWo2AgwgACACQQxqIAUQpQgiAUUNAiAAQYN/NgIQIABCADcCJCAAIAE2AiALIAAgAigCDDYCOEEADAMLIAFBAmohAQNAIAIgATYCDANAAkACQCABLQAAIgMEQCADQXZqDgQGAQEGAQsgASAAKAI8Tw0FDAELIANBGHRBGHVBf0oNACABQQYgAkEMahBjIgNBfnFBqMAARgRAIAIoAgwhAQwFCyACKAIMIQEgA0F/Rw0BCwsgAUEBaiEBDAALAAsLIARBqH82AgBBfwshASACQRBqJAAgAQsRACAAIAEgASACI
 
ANBAhD8AwuqAQICfwJ+An8gAkUEQEKAgICAMCEGQQAMAQsgACgCECIDKQN4IQYgA0KAgICAIDcDeEF/CyEDQX8hBAJAIAAgAUEGIAFBABATIgUQDA0AAkAgBRARDQAgBRAqDQAgACAFIAFBAEEAEDYhAQJ/IAMgAg0AGkF/IAEQDA0AGiADIAEQIQ0AGiAAECdBfwshBCAAIAEQCwwBCyADIQQLIAIEQCAAIAYQkAELIAQLDAAgACABIAAgAUgbCx0AIABCgICAgHBaBH8gAKctAAVBBHZBAXEFQQALC64BAQF/IwBBEGsiAyQAAkACQCACEF0EQCABIAIQeTYCAEEBIQIMAQsgACgCECIAKAIsIAJNDQECfwJAIAAoAjggAkECdGooAgAiACkCBEKAgICAgICAgECDQoCAgICAgICAwABSDQAgA0EMaiAAEMsFRQ0AQQEgAygCDCIAQX9HDQEaC0EAIQBBAAshAiABIAA2AgALIANBEGokACACDwtByi9BoQ1BqxhBwj8QAAALRQAgACgCECABIAIQ4wEiASACRXJFBEAgABDHASABDwsgAwRAIANBACAAKAIQIAEQlgQiACACayICIAIgAEsbNgIACyABC2kBA34gACACQiCIIgMgAUIgiCIEfiACQv////8PgyICIAFC/////w+DIgF+IgVCIIggAiAEfnwiAkIgiHwgASADfiACQv////8Pg3wiAUIgiHw3AwggACAFQv////8PgyABQiCGhDcDAAv5AQICfwN+IwBBEGsiAiQAAn4gAb0iBUL///////////8AgyIEQoCAgICAgIB4fEL/////////7/8AWARAIARCPIYhBiAEQgSIQoCAgICAgICAPHwMAQsgBEKAgICAgICA+P8AWgRAIAVCPIYhBiAFQgSIQoCAgICAgMD//wCEDAELIARQBEBCAAwBCyACIARCACAFp2dBIGogBEIgiKdnIARCgICAgBBUGyIDQT
 
FqEHsgAikDACEGIAIpAwhCgICAgICAwACFQYz4ACADa61CMIaECyEEIAAgBjcDACAAIAQgBUKAgICAgICAgIB/g4Q3AwggAkEQaiQACyoBAX8jAEEQayIDJAAgAyACNgIMIAAgASACQe4CQQAQnQQaIANBEGokAAsNACAAQQAgAUEAEJIEC8cKAQZ/IwBBIGsiAiQAAkACQAJAAkACQAJAAkACfyAAKAIQIgNBg39HBEBBACADQVdHDQEaIAAoAkAiAy0AbEEBcUUEQCAAQeKGAUEAEBQMAwsgAygCZEUEQCAAQf2GAUEAEBQMAwtBfyEDIAAQEA0IAkACQAJAAkAgACgCECIFQVdqDgQCAQECAAsgBUHdAEYgBUFGakECSXIgBUH9AEZyDQELIAAoAjANACAFQSpGBEAgABAQDQtBASEECyAAIAEQuQFFDQEMCgsgAEEGEA0LIAAoAkAtAGwhASAEBEAgABA1IQQgABA1IQMgAEH+AEH9ACABQQNGGxANIABBDhANIABBBhANIABBBhANIAAgBBAeIABBhQEQDSABQQNHIgdFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQeoAQX8QHCEFIAAgAxAeQYkBIQYgACAHBH9BiQEFIABBwQAQDSAAQcAAEBsgAEGLARANQYoBCxANIABBERANIABB6gBBfxAcIQYgAEEOEA0gAEHrACAEEBwaIAAgBhAeIABBARANIABBAhA5IABBqwEQDSAAQeoAQX8QHCEEIAFBA0ciBkUEQCAAQYsBEA0LIABBhgEQDSAAQQAQayAAQeoAQX8QHCEHIAZFBEAgAEGLARANCyAAQYEBEA0gAEHCABANIABB6QAQGyAAQekAIAMQHBogAEHBABANIABBwAAQGyAAIAcQHiAAQQ8QDSAAQQ8QDSAAQQ8QDSAAQQEQ6QIgACAEEB4gAEGGARANIABBARBrIABB6gBBfxAcIQQgAUE
 
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
 
Q0BGkQAAAAAAADgQSALQYCAgIB4Rg0BGiAIQgAgAX1C/////w+DNwMAIAchCAwwCyAKQQtqQRJJDQEgARBKmgshKSAIICkQFjcDACAHIQgMLgsgByEIIAYgB0GMARCRAkUNLQwxCyAHQXhqIggpAwAiAUL/////D1YgAadB/////wdGckUEQCAIIAFCAXxC/////w+DNwMAIAchCAwtCyAHIQggBiAHQY8BEJECRQ0sDDALIAdBeGoiCCkDACIBQv////8PViABp0GAgICAeEZyRQRAIAggAUJ/fEL/////D4M3AwAgByEIDCwLIAchCCAGIAdBjgEQkQJFDSsMLwsgBiAHIAwQuAgNLiAHQQhqIQgMKgsgC0ECaiEJIBEgCy0AAUEDdGoiCCkDACIBQv////8PViABp0H/////B0ZyRQRAIAggAUIBfEL/////D4M3AwAMKQsgDSABEA43AxggBiAfQY8BEJECDS0gBiAIIA0pAxgQHwwoCyALQQJqIQkgESALLQABQQN0aiIIKQMAIgFC/////w9WIAGnQYCAgIB4RnJFBEAgCCABQn98Qv////8PgzcDAAwoCyANIAEQDjcDGCAGIB9BjgEQkQINLCAGIAggDSkDGBAfDCcLIAdBeGoiCCkDACIBQv////8PWARAIAggAUL/////D4U3AwAgByEIDCgLIAchCCAGIAcQtwhFDScMKwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAad0rTcDAAwnCyAGIAdBoAEQvgJFDSYMKgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAoCfiAlpyABp3YiB0EATgRAIAetDAELIAe4EBYLNwMADCYLIAYgBxC2CEUNJQwpCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp3WtNwMADCULIAYgB0GhARC+Ak
 
UNJAwoCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiABICWDNwMADCQLIAYgB0GtARC+AkUNIwwnCyAHQXhqIggpAwAgB0FwaiIKKQMAhCIBQv////8PWARAIAogATcDAAwjCyAGIAdBrwEQvgJFDSIMJgsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogASAlhUL/////D4M3AwAMIgsgBiAHQa4BEL4CRQ0hDCULIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnSK1CgICAgBCENwMADCELIAYgB0GjARCLA0UNIAwkCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0ytQoCAgIAQhDcDAAwgCyAGIAdBpAEQiwNFDR8MIwsgB0F4aiIIKQMAIgEgB0FwaiIKKQMAIiWEQv////8PWARAIAogJacgAadKrUKAgICAEIQ3AwAMHwsgBiAHQaUBEIsDRQ0eDCILIAdBeGoiCCkDACIBIAdBcGoiCikDACIlhEL/////D1gEQCAKICWnIAGnTq1CgICAgBCENwMADB4LIAYgB0GmARCLA0UNHQwhCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0atQoCAgIAQhDcDAAwdCyAGIAdBABCmBUUNHAwgCyAHQXhqIggpAwAiASAHQXBqIgopAwAiJYRC/////w9YBEAgCiAlpyABp0etQoCAgIAQhDcDAAwcCyAGIAdBARCmBUUNGwwfCyAHQXhqIggpAwAiASAHQXBqIgspAwAiJYRC/////w9YBEAgCyAlpyABp0atQoCAgIAQhDcDAAwbCyAGIAdBABClBQwaCyAHQXhqIggpAwAiASAHQXBqIgspAwAiJYRC/////w9YBEAgCyAlpyABp0etQoC
 
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
 
QmAQMAQsgACABIAIQmAQLIgBGBEAPCyAAIAFuGgt/AQN/IwBBEGsiASQAIAFBCjoADwJAIAAoAhAiAkUEQCAAENIFDQEgACgCECECCwJAIAAoAhQiAyACTw0AIAAsAEtBCkYNACAAIANBAWo2AhQgA0EKOgAADAELIAAgAUEPakEBIAAoAiQRAABBAUcNACABLQAPGgsgAUEQaiQAC1kBAX8gACAALQBKIgFBf2ogAXI6AEogACgCACIBQQhxBEAgACABQSByNgIAQX8PCyAAQgA3AgQgACAAKAIsIgE2AhwgACABNgIUIAAgASAAKAIwajYCEEEAC5UGAgR/A34jAEGAAWsiBSQAAkACQAJAIAMgBEIAQgAQgAJFDQAgAyAEEP0IIQcgAkIwiKciCEH//wFxIgZB//8BRg0AIAcNAQsgBUEQaiABIAIgAyAEEDMgBSAFKQMQIgEgBSkDGCICIAEgAhDYBSAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRCAAkEATARAIAEgCiADIAkQgAIEQCABIQQMAgsgBUHwAGogASACQgBCABAzIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQMyAFKQNoIgpCMIinQYh/aiEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEDMgBSkDWCIJQjCIp0GIf2ohByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gBCADVK19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEDMgBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/
 
iIQLIQogBEIBhiEEIAZBf2oiBiAHSg0ACyAHIQYLAkAgCiAJfSAEIANUrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQMyAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQX9qIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EDMgBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALiQQCAn8EfgJAIAG9IgZCAYYiBVAgBkL///////////8Ag0KAgICAgICA+P8AVnJFBEAgAL0iB0I0iKdB/w9xIgJB/w9HDQELIAAgAaIiACAAow8LIAdCAYYiBCAFVgRAIAZCNIinQf8PcSEDAn4gAkUEQEEAIQIgB0IMhiIEQgBZBEADQCACQX9qIQIgBEIBhiIEQn9VDQALCyAHQQEgAmuthgwBCyAHQv////////8Hg0KAgICAgICACIQLIQQCfiADRQRAQQAhAyAGQgyGIgVCAFkEQANAIANBf2ohAyAFQgGGIgVCf1UNAAsLIAZBASADa62GDAELIAZC/////////weDQoCAgICAgIAIhAshBiACIANKBEADQAJAIAQgBn0iBUIAUw0AIAUiBEIAUg0AIABEAAAAAAAAAACiDwsgBEIBhiEEIAJBf2oiAiADSg0ACyADIQILAkAgBCAGfSIFQgBTDQAgBSIEQgBSDQAgAEQAAAAAAAAAAKIPCwJAIARC/////////wdWBEAgBCEFDAELA0AgAkF/aiECIARCgICAgICAgARUIQMgBEIBhiIFIQQgAw0ACwsgB0KAgICAgICAgIB/g
 
yEEIAJBAU4EfiAFQoCAgICAgIB4fCACrUI0hoQFIAVBASACa62ICyAEhL8PCyAARAAAAAAAAAAAoiAAIAQgBVEbC6MMAQZ/IAAgAWohBQJAAkAgACgCBCICQQFxDQAgAkEDcUUNASAAKAIAIgMgAWohASAAIANrIgBB+KcEKAIARwRAQfSnBCgCACEEIANB/wFNBEAgACgCCCIEIANBA3YiA0EDdEGMqARqRxogBCAAKAIMIgJGBEBB5KcEQeSnBCgCAEF+IAN3cTYCAAwDCyAEIAI2AgwgAiAENgIIDAILIAAoAhghBgJAIAAgACgCDCICRwRAIAQgACgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgAEEUaiIDKAIAIgQNACAAQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQECQCAAIAAoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAMLIAZBEEEUIAYoAhAgAEYbaiACNgIAIAJFDQILIAIgBjYCGCAAKAIQIgMEQCACIAM2AhAgAyACNgIYCyAAKAIUIgNFDQEgAiADNgIUIAMgAjYCGAwBCyAFKAIEIgJBA3FBA0cNAEHspwQgATYCACAFIAJBfnE2AgQgACABQQFyNgIEIAUgATYCAA8LAkAgBSgCBCICQQJxRQRAIAVB/KcEKAIARgRAQfynBCAANgIAQfCnBEHwpwQoAgAgAWoiATYCACAAIAFBAXI2AgQgAEH4pwQoAgBHDQNB7KcEQQA2AgBB+KcEQQA2AgAPCyAFQfinBCgCAEYEQEH4pwQgADYCAEHspwRB7KcEKAIAIAFqIgE2AgAgACABQQFyNgIEIAAgAWogATYCAA8LQfSnBCgCACEDIAJBeHEgAWohAQ
 
JAIAJB/wFNBEAgBSgCCCIEIAJBA3YiAkEDdEGMqARqRxogBCAFKAIMIgNGBEBB5KcEQeSnBCgCAEF+IAJ3cTYCAAwCCyAEIAM2AgwgAyAENgIIDAELIAUoAhghBgJAIAUgBSgCDCICRwRAIAMgBSgCCCIDTQRAIAMoAgwaCyADIAI2AgwgAiADNgIIDAELAkAgBUEUaiIDKAIAIgQNACAFQRBqIgMoAgAiBA0AQQAhAgwBCwNAIAMhByAEIgJBFGoiAygCACIEDQAgAkEQaiEDIAIoAhAiBA0ACyAHQQA2AgALIAZFDQACQCAFIAUoAhwiA0ECdEGUqgRqIgQoAgBGBEAgBCACNgIAIAINAUHopwRB6KcEKAIAQX4gA3dxNgIADAILIAZBEEEUIAYoAhAgBUYbaiACNgIAIAJFDQELIAIgBjYCGCAFKAIQIgMEQCACIAM2AhAgAyACNgIYCyAFKAIUIgNFDQAgAiADNgIUIAMgAjYCGAsgACABQQFyNgIEIAAgAWogATYCACAAQfinBCgCAEcNAUHspwQgATYCAA8LIAUgAkF+cTYCBCAAIAFBAXI2AgQgACABaiABNgIACyABQf8BTQRAIAFBA3YiAkEDdEGMqARqIQECf0HkpwQoAgAiA0EBIAJ0IgJxRQRAQeSnBCACIANyNgIAIAEMAQsgASgCCAshAyABIAA2AgggAyAANgIMIAAgATYCDCAAIAM2AggPC0EfIQMgAEIANwIQIAFB////B00EQCABQQh2IgIgAkGA/j9qQRB2QQhxIgJ0IgMgA0GA4B9qQRB2QQRxIgN0IgQgBEGAgA9qQRB2QQJxIgR0QQ92IAIgA3IgBHJrIgJBAXQgASACQRVqdkEBcXJBHGohAwsgACADNgIcIANBAnRBlKoEaiECAkACQEHopwQoAgAiBEEBIAN0IgdxRQRAQeinBCAEIAdyNgIAIAIgADYCACAAIAI2AhgMAQsgAUEAQRkgA0E
 
BdmsgA0EfRht0IQMgAigCACECA0AgAiIEKAIEQXhxIAFGDQIgA0EddiECIANBAXQhAyAEIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACAENgIYCyAAIAA2AgwgACAANgIIDwsgBCgCCCIBIAA2AgwgBCAANgIIIABBADYCGCAAIAQ2AgwgACABNgIICwuFAQECfyAARQRAIAEQnwIPCyABQUBPBEBBhKcEQTA2AgBBAA8LIABBeGpBECABQQtqQXhxIAFBC0kbEIMJIgIEQCACQQhqDwsgARCfAiICRQRAQQAPCyACIABBfEF4IABBfGooAgAiA0EDcRsgA0F4cWoiAyABIAMgAUkbECQaIAAQ/wEgAgvYAwICfwJ+IwBBIGsiAiQAAkAgAUL///////////8AgyIFQoCAgICAgMD/Q3wgBUKAgICAgIDAgLx/fFQEQCABQgSGIABCPIiEIQQgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhBAwCCyAEQoCAgICAgICAQH0hBCAAQoCAgICAgICACIVCAFINASAEQgGDIAR8IQQMAQsgAFAgBUKAgICAgIDA//8AVCAFQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCEEDAELQoCAgICAgID4/wAhBCAFQv///////7//wwBWDQBCACEEIAVCMIinIgNBkfcASQ0AIAJBEGogACABQv///////z+DQoCAgICAgMAAhCIEIANB/4h/ahB7IAIgACAEQYH4ACADaxDPAiACKQMIQgSGIAIpAwAiAEI8iIQhBCACKQMQIAIpAxiEQgBSrSAAQv//////////D4OEIgBCgYCAgICAgIAIWgRAIARCAXwhBAwBCyAAQoCAgICAgICACIVCAFINACAEQgGDIAR8IQQLIAJBIGokACAEIAFCgICAgICAgICA
 
f4OEvwuGEQIFfwx+IwBBwAFrIgUkACAEQv///////z+DIRIgAkL///////8/gyELIAIgBIVCgICAgICAgICAf4MhESAEQjCIp0H//wFxIQcCQAJAAkAgAkIwiKdB//8BcSIJQX9qQf3/AU0EQCAHQX9qQf7/AUkNAQsgAVAgAkL///////////8AgyIMQoCAgICAgMD//wBUIAxCgICAgICAwP//AFEbRQRAIAJCgICAgICAIIQhEQwCCyADUCAEQv///////////wCDIgJCgICAgICAwP//AFQgAkKAgICAgIDA//8AURtFBEAgBEKAgICAgIAghCERIAMhAQwCCyABIAxCgICAgICAwP//AIWEUARAIAMgAkKAgICAgIDA//8AhYRQBEBCACEBQoCAgICAgOD//wAhEQwDCyARQoCAgICAgMD//wCEIRFCACEBDAILIAMgAkKAgICAgIDA//8AhYRQBEBCACEBDAILIAEgDIRQDQIgAiADhFAEQCARQoCAgICAgMD//wCEIRFCACEBDAILIAxC////////P1gEQCAFQbABaiABIAsgASALIAtQIgYbeSAGQQZ0rXynIgZBcWoQe0EQIAZrIQYgBSkDuAEhCyAFKQOwASEBCyACQv///////z9WDQAgBUGgAWogAyASIAMgEiASUCIIG3kgCEEGdK18pyIIQXFqEHsgBiAIakFwaiEGIAUpA6gBIRIgBSkDoAEhAwsgBUGQAWogEkKAgICAgIDAAIQiFEIPhiADQjGIhCICQoTJ+c6/5ryC9QAgAn0iBBC1ASAFQYABakIAIAUpA5gBfSAEELUBIAVB8ABqIAUpA4gBQgGGIAUpA4ABQj+IhCIEIAIQtQEgBUHgAGogBEIAIAUpA3h9ELUBIAVB0ABqIAUpA2hCAYYgBSkDYEI/iIQiBCACELUBIAVBQGsgBEIAIAUpA1h9ELUBIAVBMGogBSkDSEIBhiAFKQNAQj+IhCIEI
 
AIQtQEgBUEgaiAEQgAgBSkDOH0QtQEgBUEQaiAFKQMoQgGGIAUpAyBCP4iEIgQgAhC1ASAFIARCACAFKQMYfRC1ASAGIAkgB2tqIQYCfkIAIAUpAwhCAYYgBSkDAEI/iIRCf3wiDEL/////D4MiBCACQiCIIgp+Ig0gDEIgiCIMIAJC/////w+DIhB+fCICQiCIIAIgDVStQiCGhCAKIAx+fCACQiCGIgogBCAQfnwiAiAKVK18IAIgBCADQhGIQv////8PgyINfiIQIAwgA0IPhkKAgP7/D4MiDn58IgpCIIYiDyAEIA5+fCAPVK0gDCANfiAKIBBUrUIghiAKQiCIhHx8fCIKIAJUrXwgCkIAUq18fSICQv////8PgyINIAR+IhAgDCANfiIOIAQgAkIgiCIPfnwiAkIghnwiDSAQVK0gDCAPfiACIA5UrUIghiACQiCIhHx8IA1CACAKfSICQiCIIgogBH4iECACQv////8PgyIOIAx+fCICQiCGIg8gBCAOfnwgD1StIAogDH4gAiAQVK1CIIYgAkIgiIR8fHwiAiANVK18IAJCfnwiECACVK18Qn98IgpC/////w+DIgIgC0IChiABQj6IhEL/////D4MiBH4iDSABQh6IQv////8PgyIMIApCIIgiCn58Ig4gDVStIA4gEEIgiCINIAtCHohC///v/w+DQoCAEIQiC358Ig8gDlStfCAKIAt+fCACIAt+IhMgBCAKfnwiDiATVK1CIIYgDkIgiIR8IA8gDkIghnwiDiAPVK18IA4gDCANfiITIBBC/////w+DIhAgBH58Ig8gE1StIA8gAiABQgKGQvz///8PgyITfnwiFSAPVK18fCIPIA5UrXwgDyAKIBN+IgogCyAQfnwiCyAEIA1+fCIEIAIgDH58IgJCIIggAiAEVK0gCyAKVK0gBCALVK18fEIghoR8IgsgD1StfCALIBUgDSATfiIEIAwgEH58IgxCIIggDC
 
AEVK1CIIaEfCIEIBVUrSAEIAJCIIZ8IARUrXx8IgQgC1StfCICQv////////8AWARAIAFCMYYgBEL/////D4MiASADQv////8PgyIMfiILQgBSrX1CACALfSIQIARCIIgiCyAMfiIOIAEgA0IgiCIKfnwiDUIghiIPVK19IAJC/////w+DIAx+IAEgEkL/////D4N+fCAKIAt+fCANIA5UrUIghiANQiCIhHwgBCAUQiCIfiADIAJCIIh+fCACIAp+fCALIBJ+fEIghnx9IRIgBkF/aiEGIBAgD30MAQsgBEIhiCEKIAFCMIYgAkI/hiAEQgGIhCIEQv////8PgyIBIANC/////w+DIgx+IgtCAFKtfUIAIAt9Ig0gASADQiCIIgt+IhAgCiACQh+GhCIOQv////8PgyIPIAx+fCIKQiCGIhNUrX0gBCAUQiCIfiADIAJCIYh+fCACQgGIIgIgC358IA4gEn58QiCGIAsgD34gAkL/////D4MgDH58IAEgEkL/////D4N+fCAKIBBUrUIghiAKQiCIhHx8fSESIA0gE30LIQEgBkGAgAFOBEAgEUKAgICAgIDA//8AhCERQgAhAQwBCyAGQf//AGohByAGQYGAf0wEQAJAIAcNACAEIAFCAYYgA1YgEkIBhiABQj+IhCIBIBRWIAEgFFEbrXwiASAEVK0gAkL///////8/g3wiAkKAgICAgIDAAINQDQAgAiARhCERDAILQgAhAQwBCyAEIAFCAYYgA1ogEkIBhiABQj+IhCIBIBRaIAEgFFEbrXwiASAEVK0gAkL///////8/gyAHrUIwhoR8IBGEIRELIAAgATcDACAAIBE3AwggBUHAAWokAA8LIABCADcDACAAQoCAgICAgOD//wAgESACIAOEUBs3AwggBUHAAWokAAvHAQIBfwJ+QX8hAwJAIABCAFIgAUL///////////8AgyIEQoCAgICAgMD//wBWIARCgICAgIC
 
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
 
CIAAgAUE2IAFBABATIgEQEQR+IABBLxAyBSABC0GNpgEQvQELC/IDAwV/A34DfAJAIAAgARBmDQAgACAAKQMwQQ4QUCIKEAwNACAKpyIGIAEQsgFBBHRBEHEgBi0ABUHvAXFyOgAFAkAgAEEAIAJBf2oQSyICQQN0QRhqEC4iBEUNACAEIAEQDiIBNwMAIAMpAwAQDiEJIAQgAjYCECAEIAk3AwggAkEAIAJBAEobIQcgBEEYaiEIA0AgBSAHRwRAIAggBUEDdGogAyAFQQFqIgVBA3RqKQMAEA43AwAMAQsLIAYgBDYCICAAIAEQ5ggiA0EASA0AAkAgA0UNACAAIAFBMCABQQAQEyIJEAwNASAJQv////8PWARAIAmnIgMgAmtBACADIAJKG60hCwwBCyAJEFNBB0YEQAJAIAkQSiINvUL///////////8Ag0KAgICAgICA+P8AVg0AIA2dIg0gArciDmUNACANIA6hIQwLIAy9An8gDJlEAAAAAAAA4EFjBEAgDKoMAQtBgICAgHgLIgK3vVEEQCACrSELDAILIAwQFiELDAELIAAgCRALCyAAIApBMCALQQEQGhogACABQTYgAUEAEBMiARAMDQAgAEHQpQEgARCaAQR+IAEFIAAgARALIABBLxAyC0G+FRC9ASIBEAwNACAAIApBNiABQQEQGhogCg8LIAAgChALC0KAgICA4AALMAAgAkEATARAIAAgAUKAgICAMEEAQQAQIw8LIAAgASADKQMAIAJBf2ogA0EIahAjC8IBAgF/AX4jAEEgayICJABCgICAgOAAIQYCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQADQCAAIAIgAacgAxBaIgVBAEgNAiAFBEBCgICAgDAhBiACLQAAQRBxBEAgAkEYaiACQRBqIAQbKQMAEA4hBgsgACACEFIMAwsgACABEI0EIgEQDA0CIAEQKgRAQoCAgIAwIQYMAwsgABCO
 
AUUNAAsMAQtBACEDCyAAIAMQEiAAIAEQCyACQSBqJAAgBguVAQECfiADKQMIIQUgAykDACEGAkAgACABECkiARAMRQRAIAAgBRBmRQRAIAAgBhA6IgINAgsgACABEAsLQoCAgIDgAA8LIAAgASACQoCAgIAwQoCAgIAwIAUgBBsgBUKAgICAMCAEG0GFqgFBhZoBIAQbEHUhAyAAIAEQCyAAIAIQEkKAgICA4ABCgICAgDAgA0EASBsLUgACQCABEBFFBEAgARAqRQ0BCyAAECdCgICAgOAADwsCQCACECENACACECoNAEKAgICAMA8LQoCAgIDgAEKAgICAMCAAIAEgAkEBEJgCQQBIGwslAQF+IAAgARApIgEQDARAIAEPCyAAIAEQ+QEhAiAAIAEQCyACC5MBAgF/AX4jAEEgayICJABCgICAgOAAIQUCQAJAIAAgARApIgEQDA0AIAAgAykDABA6IgNFDQAgACACIAGnIAMQWiIEQQBIDQEgBEUEQEKAgICAECEFDAILIAI1AgAhBSAAIAIQUiAFQgKIQgGDQoCAgIAQhCEFDAELQQAhAwsgACADEBIgACABEAsgAkEgaiQAIAULiAEBAn4gAykDACIFECFFBEBCgICAgBAPCwJAIAAgARApIgQQDEUEQCAEpyECIAUQDiEBA0AgACABEI0EIgEQDEUEQCABECoiAyACIAGnRnINAyAAEI4BRQ0BCwsgACABEAsgACAEEAsLQoCAgIDgAA8LIAAgARALIAAgBBALIANFrUKAgICAEIQLZQEBfkKAgICA4AAhBAJAIAAgAykDABA6IgJFDQAgACABECkiARAMBEAgACACEBIgAQ8LIABBACABpyACEFohAyAAIAIQEiAAIAEQCyADQQBIDQAgA0EAR61CgICAgBCEIQQLIAQLCAAgACABECkLDwAgACABQTdBAEEAELwCC5wCAQV+IwBBEGsiAiQAIAMpAwAhBQJAIAAQP
 
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
 
rELECIQ4gACAGEAsgACANEAsgC0IBfCELIAAgDhCMAkUNAQwDCwsgACAHQX8Q0QMiBUEASA0DIAVFDQQgBEECRgRAIAAgAikDUBDnBCIBEAwNBCAAIAIpA1AQCyACIAE3A1ALIAAgACADKQMAQoCAgIAwQQEgAkHQAGoQIxCMAg0DDAQLIAAgDBALCyAAIAhBARCwARoMAQsLIAIgABCPATcDACAAIAIpA2giEEKAgICAMEEBIAIQIyEBIAAgAikDABALIAEQDEUEQCAAIAEQCwwBCyAAIAoQC0KAgICA4AAhCgsgACAPEAsgACAHEAsgACACKQNQEAsgACAJEAsgACAIEAsgACACKQNgEAsgACAQEAsLIAJB8ABqJAAgCgsJACAFKQMAEA4LFQAgACAFKQMAEA4QkAFCgICAgOAAC6sBAQF+IwBBEGsiAiQAIAUpAwAhBiACIAAgBSkDCEKAgICAMEEAQQAQIyIBNwMIAkAgARAMDQAgACAGQQEgAkEIakEAEIsCIQEgACACKQMIEAsgARAMDQAgAiAAQTNBNCAEG0EAQQBBASADEOIBIgY3AwAgBhAMBEAgACABEAsgAikDACEBDAELIAAgAUH/AEEBIAIQsQIhASAAIAIpAwAQCwsgAkEQaiQAIAEL8QEBAn4jAEEgayICJAAgAykDACEEAkAgACABQoCAgIAwEO8BIgUQDA0AAkAgACAEEDtFBEAgAiAEEA4iBDcDECACIAQQDjcDGAwBCyACIAQ3AwggAiAFNwMAQQAhAwNAIANBAkYNASACQRBqIANBA3RqIABBMkEBIANBAiACEOIBIgQ3AwAgBBAMBEAgA0EBRgRAIAAgAikDEBALCyAAIAUQC0KAgICA4AAhBQwDBSADQQFqIQMMAQsACwALIAAgBRALIAAgAUH/AEECIAJBEGoQvAIhBSAAIAIpAxAQCyAAIAIpAxgQCwsgAkEgaiQAIAULOQAjAEEQayICJAAg
 
AkKAgICAMDcDACACIAMpAwA3AwggACABQf8AQQIgAhC8AiEBIAJBEGokACABC6UBAgF/A34jAEEQayICJABCgICAgOAAIQUCQCAAIAFBKhBnRQ0AIAAgAUKAgICAMBDvASIGEAwEQCAGIQUMAQsgACACIAYQuAIhByAAIAYQCwJAIAcQDA0AIAAgASADIAIQsgIhAwNAIARBAkZFBEAgACACIARBA3RqKQMAEAsgBEEBaiEEDAELCyADRQ0AIAAgBxALDAELIAchBQsgAkEQaiQAIAULbgICfwF+A0ACQAJAIANBAkYNACACIANBA3RqIAAgACkDMCADQS5qEFAiBTcDACAFEAxFDQFBfyEEIANBAUcNACAAIAIpAwAQCwsgBA8LIAEgASgCAEEBajYCACAFpyABNgIgIANBAWohAwwACwALCABCgICAgDAL3wECAX8DfiMAQRBrIgMkACABQQVGBEAgAikDECEEIAAgAikDGBD2ASEBIAMgAikDICIFNwMIIAMCfiAEEBEEQCAFEA4iBCABRQ0BGiAAIAQQkAFCgICAgOAADAELIAAgBEKAgICAMEEBIANBCGoQIwsiBDcDACAEEAwiAQRAIAMgABCPASIENwMAC0KAgICAMCEFIAAgAiABQQN0aikDACIGEBEEfiAEBSAAIAZCgICAgDBBASADECMhBSADKQMACxALIANBEGokACAFDwtBx+MAQaENQa3oAkHR4wAQAAALJgAgACABENIDIAAgASkDEBAmIAAgASkDGBAmIAEQnQIgACABECALgQEBA38CQCABQTIQQSIERQ0AIARBzABqIQMgBEHIAGohBQNAIAMoAgAiAyAFRkUEQCAAIAMpAxAgAhAiIAAgAykDGCACECIgACADKQMgIAIQIiAAIAMpAyggAhAiIANBBGohAwwBCwsgBCgCBEF+cUEERg0AIAAgBEEIaiACEN4DCwsWAQF/IAFBMhBBIgIEQCAAIAIQk
 
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
 
BAWqtIA4QDhBtQQBIDQUCQCANEBENACAAIAogBEECaq0gDRAOIgEQbUEATg0AIAEhDQwGCyACIAo3A2ggAkKAgICAMDcDYCAAIAwQCyAAIAAgE0ECIAJB4ABqQQAQjwMQPiEMDAELQoCAgIAwIQEgDRARRQRAIAAgDRApIgEQDA0FCyACIBA3A4gBIAIgATcDgAEgAiAKNwN4IAIgDjcDaCACIAs3A2AgAiAJQv////8PgzcDcCAAIAwQCyAAIAJB4ABqEPEEIQwgACABEAsLIAwQDA0DIAkgBqxZBEAgAkHIAGogAyAGIAmnEFcaIAJByABqIAwQiQEaIAunKQIEQv////8HgyAJfKchBgsgBUEBaiEFDAELCyACQcgAaiADIAYgAygCBEH/////B3EQVxogAkHIAGoQOCERDAILQoCAgIAwIQxCgICAgDAhCkKAgICAMCELCyACQcgAahBFCyACQRBqEPAEIAAgEBALIAAgCxALIAAgChALIAAgDBALIAAgDRALIAAgDhALCyACQZABaiQAIBELkgEAIwBBIGsiAiQAAn4CQCABECFFBEAgABAnDAELIAAgAkEIakEAEEIaIAJBCGpBLxA8GgJAIAJBCGogACABQewAIAFBABATEIoBDQAgAkEIakEvEDwaIAJBCGogACABQe0AIAFBABATEIoBDQAgAkEIahA4DAILIAJBCGoQRQtCgICAgOAACyEBIAJBIGokACABC6YBAQN/IABBAjoAaCAAQdgAaiECIABB4ABqIQMDQCADIAAoAmQiAUcEQCABQXxqLQAAQQ5xBEAgARBHIAEgAhBNDAIFIAAgAUF4ahDCBQwCCwALCyAAQQA6AGggACgCXCEBAkADQCABIAJHBEAgAUF8ai0AAEEOcQ0CIAEoAgQhAyAAIAFBeGoQICADIQEMAQsLIAIQbg8LQf85QaENQYctQeA6EAAACz8BAX5CgICAgOAAIQQgACABIAMpAwAQ
 
1gEiARAMBH5CgICAgOAABSABECohAiAAIAEQCyACRa1CgICAgBCECwuAAgEDfgJAIAAgAUEBENkBIgJFDQAgAykDCCEGAkACQCAAIAMpAwAiBEEAENkBIgMEQCAGEBFFBEAgAEHn0gBBABAVQoCAgIDgAA8LIAM1AgBCgICAgJB/hBAOIQQgAzUCBEKAgICAkH+EEA4hBQwBC0KAgICAMCEFAn4gBBARBEAgAEEvEDIMAQsgACAEECwLIgQQDA0BIAAgBCAGEPQDIgUQDA0BCyAAIAI1AgBCgICAgJB/hBALIAAgAjUCBEKAgICAkH+EEAsgAiAFPgIEIAIgBD4CACAAIAFB1QBCABBJQQBIDQEgARAODwsgACAEEAsgACAFEAsLQoCAgIDgAAtrAQF/IAFC/////29YBEAgABAnQoCAgIDgAA8LAn4gACABQQAQ2QEiA0UEQEKAgICAMCAAIAEgACgCKCkDkAEQWA0BGiAAQRIQkQNCgICAgOAADwsgAiADKAIELQAQcUEAR61CgICAgBCECwvHAwEHfyMAQSBrIgUkAAJAAkACQAJAAkAgAUL/////b1gEQCAAECcMAQsgACABIAAoAigpA5ABEFgNAiAAIAFBARDZASICDQELQoCAgIDgACEBDAMLIAIoAgAiBykCBKciAkH/////B3EiAw0BCyAAQcDSABByIQEMAQsgACAFQQhqIAMgAkEfdhCfAxogBygCBEH/////B3EhCEEAIQADQAJAAkAgACAISARAIABBAWohAkF/IQYCQAJ/AkACQAJAAkACQAJAAkAgByAAEDEiA0Glf2oOAwMBAgALIAIhAAJAIANBdmoOBAQLCwUACyADQS9HDQcgBEUNBUEBIQRBLyEDDAcLQdwAIQMgAiAITg0GIABBAmohACAHIAIQMSEGDAkLQQAhBEHdACEDDAULQdsAIQMgBCACIAhOcg0GIABBAmogAiAHIAIQMUHdAEYiAhshA
 
EHdAEF/IAIbIQZBASEEDAcLQe4ADAILQfIADAELQQAhBEEvCyEGQdwAIQMLIAIhAAwCCyAFQQhqEDghAQwDCyACIQBBASEECyAFQQhqIAMQkgEaIAZBAEgNACAFQQhqIAYQkgEaDAALAAsgBUEgaiQAIAEL2AICA38BfiMAQRBrIgQkAAJAIAFC/////29YBEAgABAnQoCAgIDgACEFDAELQoCAgIDgACEFIAAgACABQe4AIAFBABATEC0iAkEASA0AIAIEfyAEQecAOgAIIARBCWoFIARBCGoLIQIgACAAIAFBj88AEMUCEC0iA0EASA0AIAMEQCACQekAOgAAIAJBAWohAgsgACAAIAFBms8AEMUCEC0iA0EASA0AIAMEQCACQe0AOgAAIAJBAWohAgsgACAAIAFBpM8AEMUCEC0iA0EASA0AIAMEQCACQfMAOgAAIAJBAWohAgsgACAAIAFB7wAgAUEAEBMQLSIDQQBIDQAgAwRAIAJB9QA6AAAgAkEBaiECCyAAIAAgAUGzzwAQxQIQLSIDQQBIDQAgACAEQQhqIAMEfyACQfkAOgAAIAJBAWoFIAILIARBCGprEPwBIQULIARBEGokACAFC4EBAgJ/AX4jAEEgayIDJABCgICAgOAAIQUCQCAAIANBCGogAhBCDQBBACEAIAJBACACQQBKGyECAkADQCAAIAJGDQEgAEECdCEEIABBAWohACADQQhqIAEgBGooAgAQvgFFDQALIANBCGoQRQwBCyADQQhqEDghBQsgA0EgaiQAIAULowEBBn8jAEEQayIEJABBfyEDAkAgACACECwiAhAMDQAgACACpyIHKAIEQf////8HcSIIQQEQS0ECdBAuIgVFBEAgACACEAsgAUEANgIADAELIARBADYCDEEAIQMDQCAGIAhORQRAIAUgA0ECdGogByAEQQxqENcBNgIAIANBAWohAyAEKAIMIQYMAQsLIAAgAhALIAEgBTYCAA
 
sgBEEQaiQAIAMLtgICA38BfiMAQRBrIgQkAAJAIAAgARBfIgEQDA0AIAAgBEEIaiABENUHIQYgACABEAtCgICAgOAAIQEgBkEASA0AAkAgAkUNACADKQMAIgcQEQ0AAkAgACAEQQxqIAcQjwIiAgRAAkAgAi0AAEHOAEcNACACLQABQcYARw0AIAJBA0ECIAItAAJBywBGIgMbai0AACIFQb1/akH/AXFBAUsNACAEKAIMIAJBA2ogAkECaiADGyACa0EBakYNAgsgACACEDcgAEHAzgAQaQsgACAEKAIIEBkMAgsgACACEDcgBSADQQF0akG9f2ohBQsgBEEEaiAEKAIIIgMgBiAFIAAoAhAQwgkhAiAAIAMQGSACQQBIDQAgACAEKAIEIAIQ1AchASAAIAQoAgQQGQsgBEEQaiQAIAELoAEBBH8gAEHUAGohASAAQdAAaiECAkADQCACIAEoAgAiAUcEQCABQXhqIgMoAgBBAEwNAiABQXxqIgQgBC0AAEEPcToAACAAIANBBxCQBCABQQRqIQEMAQsLIABB5ABqIQEgAEHgAGohAgNAIAEoAgAiASACRkUEQCAAIAFBeGpBCBCQBCABQQRqIQEMAQsLDwtB1jlBoQ1B0SxB9zkQAAALugECA38BfgJAAkAgAhBdRQ0AIAIQeSEHIAGnKQMgIgpCgICAgHCDQoCAgICQf1INACAHIAqnIggoAgRB/////wdxTw0AAkBBBCAGEJYDRQ0AQQEhAiAGQYDAAHFFDQIgA0KAgICAcINCgICAgJB/Ug0AIAOnIgkpAgRC/////weDQgFSDQAgCCAHEDEgCUEAEDFGDQILIAAgBkHZFxB2DwsgACABIAIgAyAEIAUgBkGAgAhyEHUhAgsgAgsdAAJ/IAIQXQRAQQAgAhB5IAEQiQRJDQEaC0EBCwugAQEDfwJAIAMQXUUNACACpykDICICQoCAgIBwg0KAgICAkH9SDQAgAxB5IgM
 
gAqciBSgCBCIGQf////8HcU8NAEEBIQQgAUUNAAJ/IAZBf0wEQCAFIANBAXRqLwEQDAELIAMgBWotABALIQMgAUEENgIAIAAgA0H//wNxEJoDIQIgAUKAgICAMDcDGCABQoCAgIAwNwMQIAEgAjcDCAsgBAuEAQEGfyAAQeAAaiIEEG4gAEHQAGohBSAAKAJUIQICQANAIAUgAiIBRwRAIAFBfGoiAy0AAEEQTw0CIAEoAgQhAiAAIAFBeGoiBkEGEJAEIAMgAy0AAEEPcUEQcjoAACAGKAIADQEgARBHIAEgBBBNDAELCw8LQZw5QaENQa4sQak5EAAAC9YBAgV/An4gASkDSCEHQX8hBSAAIAApAzBBDRBQIggQDEUEQCAIpyICIAenIgM2AiAgAyADKAIAQQFqNgIAIAJCADcCJAJAAkACQCADKAI8IgRFDQAgACAEQQJ0EGoiBEUNASACIAQ2AiRBACECA0AgAiADKAI8Tg0BIAMoAiQgAkEDdGotAAAiBkEBcQRAIAAgBkEDdkEBcRDVAyIGRQ0DIAQgAkECdGogBjYCAAsgAkEBaiECDAALAAsgASAINwNIQQAhBQwBCyAIIQcLIAAgBxALCyAFC2gBAn8gAacoAhAiAyADKAIYIAJxQX9zQQJ0aigCACEAIAMQKCEDA0ACQCAARQRAQQAhAAwBCyAAQQN0IANqIgRBeGohACAEQXxqKAIAIAJGDQAgACgCAEH///8fcSEADAELCyAAQQBHC08BAn8jAEEQayIDJAACQCADQQxqIAEgAhD1BCIBQQBIBEBBfyEBDAELIAMoAgwiAkEBdkEAIAJBAXFrcyEECyAAIAQ2AgAgA0EQaiQAIAEL7AEBBX8gAkEAIAJBAEobIQUDQCADIAVGRQRAIAQgASADQQF0ai8BAHIhBCADQQFqIQMMAQsLAkACQCAAKAIIIAJqIgYgACgCDCIHSgRAQX8hAyAAIAYgBBDLAkUNAQwC
 
CyAEQYACSA0AIAAoAhANAEF/IQMgACAHENwDDQELAkAgACgCEEUEQEEAIQMDQCADIAVGDQIgACgCBCAAKAIIIANqaiABIANBAXRqLQAAOgAQIANBAWohAwwACwALIAAoAgQgACgCCEEBdGpBEGogASACQQF0ECQaCyAAIAAoAgggAmo2AghBACEDCyADC3gCAX8BfgJAIAEQXQ0AQQAgACgCECgCOCABQQJ0aigCACkCBCIDQoCAgICAgICAQINCgICAgICAgICAf1IgA0KAgICA8P///z+DUCADQv//////////v39WcRsNACADp0F/c0EfdkEBIANC/////weDUBshAgsgAgt4AgF/An5CgICAgOAAIQMgACABQeoAIAFBABATIgQQDEUEQCAAQTAQoAEiAxAMBEAgACAEEAsgAw8LIABBEBBqIgJFBEAgACADEAsgACAEEAtCgICAgOAADwsgARAOIQEgAiAENwMIIAIgATcDACADIAIQhwELIAML7wECAn8CfgJAAkAgAikCBCIFp0H/////B3EgASkCBCIGp0H/////B3FqIgNBgICAgARPBEAgAEH0DUEAEEQMAQsgACADIAUgBoSnQR92IgQQ+gEiAA0BC0KAgICA4AAPCwJAIARFBEAgAEEQaiABQRBqIAEoAgRB/////wdxECQiBCABKAIEQf////8HcWogAkEQaiACKAIEQf////8HcRAkGiADIARqQQA6AAAMAQsgAEEQaiIDIAEgASgCBEH/////B3EQ9gQgAyABKAIEQQF0aiACIAIoAgRB/////wdxEPYECyAArUKAgICAkH+EC+ACAgF/An4jAEEgayIFJAACQAJAIAAgAUElEGciAkUNAAJAIAIpAwAiARARRQRAAkACQCABpyIDLwEGQWtqQf//A3FBCE0EQCADEKsBRQ0BIAAQcAwFCyAAIAVBHGogARDYAQ0EIAUoAhwhBgwBCyAFIAMoAigiBjYCH
 
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
 
AIAAgAq1CgICAgHCEECYLQQAhAiABECghAwNAIAIgASgCIE9FBEAgACADKAIEEPIBIAJBAWohAiADQQhqIQMMAQsLIAEQnQIgACABELcCECAPC0HwL0GhDUGtIkGKMBAAAAtEAQJ/IAJBACACQQBKGyEEA0AgAyAERgRAQQAPCyADQQF0IQIgA0EBaiEDIAAgAmovAQAgASACai8BAGsiAkUNAAsgAgsvAQF/A0AgASADRkUEQCAAIANBAXRqLwEAIAJBhwJsaiECIANBAWohAwwBCwsgAgtjAAJAAn8CQCABRQRAIAINAQwDCyACRQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQwDC0EAIAAoAgQgAmogACgCCEsNARogASACENYFDwsgACACEIgFCw8LQQALJgAgAQRAIAAgACgCAEF/ajYCACAAIAAoAgRBeGo2AgQgARD/AQsLKAEBfwJAIAGnKAIgIgNFDQAgAygCAEEERg0AIAAgA0EIaiACEN4DCwscAQF/IAFBKBBBIgIEQCAAIAIQ5gMgACACECALCyUBAX8gAacoAiAiAwRAIAAgAykDACACECIgACADKQMIIAIQIgsLJwEBfyABpygCICICBEAgACACKQMAECYgACACKQMIECYgACACECALCx4BAX8gAacoAiAiAgRAIAAgAikDABAmIAAgAhAgCwtDAQJ/IAGnKAIgIgIEQAJAIAIpAwAiARDBBUUNACACKAIMIgNFDQAgACADEOADIAIpAwAhAQsgACABECYgACACECALC1gBA38CQCABpygCICIERQ0AIARBCGohAyAEQQRqIQUDQCADKAIAIgMgBUYNASAEKAIARQRAIAAgAykDECACECILIAAgAykDGCACECIgA0EEaiEDDAALAAsLgQEBBX8gAacoAiAiAwRAIANBBGohBSADKAIIIQIDQCACIAVHBEAgAigCBCEGIAJBcGohBCACQXRq
 
KAIARQRAAkAgAygCAARAIAQQiQUMAQsgACACKQMQECYLIAAgAikDGBAmCyAAIAQQICAGIQIMAQsLIAAgAygCEBAgIAAgAxAgCwshAQF/IAGnKAIgIgMEQCAAIAM1AgxCgICAgHCEIAIQIgsLQAEBfyABpygCICICBEAgACACNQIMQoCAgIBwhCIBEMEFBH4gAhBHIAI1AgxCgICAgHCEBSABCxAmIAAgAhAgCwtbAQJ/IAGnKAIgIgIEQAJAAkAgAi0ABUUNACAAKAK0ASIDRQ0AIAAoArwBIAIoAgggAxEDAAwBCyACKAIYIgNFDQAgACACKAIUIAIoAgggAxEFAAsgACACECALCykBAX8gACABpyICNQIkQoCAgICQf4QQJiAAIAI1AiBCgICAgJB/hBAmCxEAIAAgAacoAiApAwAgAhAiCxkBAX8gACABpygCICICKQMAECYgACACECALQQEDfwJAIAFBDxBBIgRFDQAgBEEIaiEFA0AgAyAELQAFTw0BIAAgBSADQQN0aikDACACECIgA0EBaiEDDAALAAsLQwEDfyABQQ8QQSIDBEAgA0EIaiEEA0AgAiADLQAFT0UEQCAAIAQgAkEDdGopAwAQJiACQQFqIQIMAQsLIAAgAxAgCwtJAQJ/IAAgAacoAiAiBCkDACACECIgACAEKQMIIAIQIgNAIAMgBCgCEE5FBEAgACAEIANBA3RqKQMYIAIQIiADQQFqIQMMAQsLC0kBAn8gACABpygCICICKQMAECYgACACKQMIECYDQCADIAIoAhBORQRAIAAgAiADQQN0aikDGBAmIANBAWohAwwBCwsgACACECALjgEBBH8gAaciAygCJCEFIAMoAiAhBCADKAIoIgMEQCAAIAOtQoCAgIBwhCACECILIAQEQAJAIAVFDQBBACEDA0AgAyAEKAI8Tg0BAkAgBSADQQJ0aigCACIGRQ0AIAYtAAVBAXFFDQAgACAGIAIRAwALI
 
ANBAWohAwwACwALIAAgBK1CgICAgGCEIAIQIgsLcwEDfyABpyICKAIoIgMEQCAAIAOtQoCAgIBwhBAmCyACKAIgIgMEQCACKAIkIgQEQEEAIQIDQCACIAMoAjxORQRAIAAgBCACQQJ0aigCABD3ASACQQFqIQIMAQsLIAAgBBAgCyAAIAOtQoCAgIBghBAmCwsSACABpygCICIABEAgABCiAwsLDgAgACABpykDICACECILGQAgACABpyIAKQMgECYgAEKAgICAMDcDIAs1AQJ/IAGnIQQDQCADIAQoAihPRQRAIAAgBCgCJCADQQN0aikDACACECIgA0EBaiEDDAELCws8AQJ/IAGnIQMDQCACIAMoAihPRQRAIAAgAygCJCACQQN0aikDABAmIAJBAWohAgwBCwsgACADKAIkECALqAICAn8CfiMAQRBrIgQkAEKAgICA4AAhBiAAIAEgAxBsIgcQDEUEQEKAgICAMCEBAn4CQCAAIAJBwwEgAkEAEBMiBhAMDQACQAJAIAYQEQ0AIAYQKg0AIAAgBEEEaiACIAYQ4gkhASAAIAYQCyABEAwNAiAEIAQ1AgQiBjcDCAwBCyAAIARBCGogAhBADQEgAhAOIQEgBCkDCCEGCyAAQoCAgIAwIAYgA0GZHmoxAACGEP8CIgIQDA0AIAAgByACQgAgBhDiAw0AQQAhAwNAIAcgBiADrVcNAhogACABIAMQeCICEAwNASAAIAcgAyACEJUCIQUgA0EBaiEDIAVBf0oNAAsLIAAgARALIAchAUKAgICA4AALIQYgACABEAsLIARBEGokACAGC6gCAgV/A34CQCAAIAEgAxBsIgEQDA0AAkACQCACpyIEEKsBDQAgBCgCKCEGQoCAgIAwIQogBCgCICIHKAIMIgUoAiAiCC0ABUUEQCAAIAWtQoCAgIBwhEKAgICAMBDvASIKEAwNAgsgACAKIAatIgsgA0GZHmoxAACGEP8CIQkgAC
 
AKEAsgCRAMDQEgBBCrAQRAIAAgCRALDAELIAlBExBBIQUgACABIAlCACALEOIDDQEgAyAELwEGRwRAQQAhAwNAIAMgBkYNBCAAIAIgAxB4IgkQDA0DIAAgASADIAkQlQIhBCADQQFqIQMgBEF/Sg0ACwwCCyAFKAIIIAgoAgggBygCEGogBSgCABAkGiABDwsgABBwCyAAIAEQC0KAgICA4AAhAQsgAQs3AQF/AkAgAUKAgICAcFoEQCABpyICLwEGQW1qQf//A3FBAkkNAQsgAEETEJEDQQAPCyACKAIgCwgAIAAgAhAgC+kBAQR/IAAoAhAhBQJAIAAgASADEGwiARAMRQRAIAJCgICAgAhaBEAgAEGg0AEQaQwCCyAAQRwQLiIERQRAQQAhBAwCCyAEIAKnIgY2AgACQAJAIANBFEcNACAFKAKwASIHRQ0AIAQgBSgCvAEgBkEBEEsgBxEBACIFNgIIIAVFDQMgBUEAIAYQTBoMAQsgBCAAIAZBARBLEGoiBjYCCCAGRQ0CCyAEQQxqEG4gBEEuNgIYIARBADYCFCAEIANBFEY6AAUgBEEAOgAEIAEgBBCHAQsgAQ8LIAAgARALIAAgBBAZQoCAgIDgAAu8AQICfwR+IwBBEGsiAiQAQoCAgIAwIQQCQAJAIAAgAUEAEPMBIgEQDARAQoCAgIAwIQUMAQsgACABQeoAIAFBABATIgUQDA0AIAAQTiIEEAwNAANAIAAgASAFIAJBDGoQrAEiBxAMRQRAIAIoAgwNAyAAIAQgBiAHEG0hAyAGQgF8IQYgA0EATg0BCwsgACABQQEQsAEaCyAAIAQQC0KAgICA4AAhBAsgACAFEAsgACABEAsgAkEQaiQAIAQLrwEBA38gACgCQCEBQX8hAwJAIAAQEA0AIAAQ2gQNAEEBIQIgASABKAIkQQJPBH8gAS0AbkF/c0EBcQVBAQs2AiggACgCREUEQCABIAAoAgAgAUHRABBWIgI
 
2AqQBIAJBAEgNAQsDQCAAKAIQQap/RwRAIAAQ2QRFDQEMAgsLAkAgACgCREUEQCAAQdgAEA0gACABLwGkARAXIABBKBANDAELIABBKRANC0EAIQMLIAMLsgUBBX8gAigCPCEEIAIvASohBSACLwEoIQYgAUEANgLAAiABQQA2AsgCIAEgBCAFIAZqaiIENgLEAgJAIARFDQAgASAAIARBA3QQLiIENgLIAiAERQRAQX8hBwwBCwNAIANBAE4EQCACKAIgIAMgAi8BKGpBBHRqIgQoAgRBAU4EQCABIAEoAsACIgVBAWo2AsACIAAgASgCyAIgBUEDdGogBCADEMoDCyAEKAIIIQMMAQsLQQAhBAJAIANBfkYEQANAIAQgAi8BKk8NAgJAIAIoAiAgBCACLwEoakEEdGoiAygCBA0AIAMQ2wRFDQAgASABKALAAiIFQQFqNgLAAiAAIAEoAsgCIAVBA3RqIAMgBBDKAwsgBEEBaiEEDAALAAsDQCAEIAIvAShPBEBBACEEA0AgBCACLwEqTw0DAkAgAigCICAEIAIvAShqQQR0aiIDKAIEDQAgAygCAEHRAEYNACABIAEoAsACIgVBAWo2AsACIAAgASgCyAIgBUEDdGogAyAEEMoDCyAEQQFqIQQMAAsABSABIAEoAsACIgNBAWo2AsACIAIoAiAhBSABKALIAiADQQN0aiIDIAQ7AQIgA0EDOgAAIAMgACAFIARBBHRqKAIAEBg2AgQgBEEBaiEEDAELAAsAC0EAIQMDQCADIAIoAjxODQEgAigCJCEFIAEgASgCwAIiBEEBajYCwAIgASgCyAIgBEEDdGoiBCAELQAAIgZB/gFxOgAAIAQgBSADQQN0aiIFLQAAQQJxIAZB/AFxciIGOgAAIAQgBkH6AXEgBS0AAEEEcXIiBjoAACAEIAZB9gFxIAUtAABBCHFyIgY6AAAgBS0AACEIIAQgAzsBAiAEIAZBDnEgCEHwAXFy
 
OgAAIAQgACAFKAIEEBg2AgQgA0EBaiEDDAALAAsgBwu+AQEDfyMAQRBrIgIkACACIAAoAjgiATYCDAJAIAEtAABBI0cNACABLQABQSFHDQAgAiABQQJqIgE2AgwDQAJAAkACQCABIAAoAjxPDQACQCABLQAAIgNBdmoOBAEAAAEACyADQRh0QRh1QX9KDQIgAUEGIAJBDGoQYyIDQX5xQajAAEcNASACKAIMIQELIAAgATYCOAwDCyACKAIMIQEgA0F/Rw0BCyACIAFBAWoiATYCDAwACwALIAJBEGokAAu3AQIBfwJ+IwBBIGsiAyQAIAFBA0YEQCACKQMQIQQgAikDCCEFAkAgACADQRBqIAIpAwAQkAVBAEgEQEKAgICA4AAhBAwBCyAAIAQgBUECIANBEGoQIyIEEAwEQCADIAAQjwE3AwggACADKQMYQoCAgIAwQQEgA0EIahAjIQQgACADKQMIEAsLIAAgAykDEBALIAAgAykDGBALCyADQSBqJAAgBA8LQebjAEGhDUGR6QJB8OMAEAAACz8CAX8BfiMAQRBrIgEkACABQoCAgIAwNwMIIAFCgICAgDA3AwAgAEEsQQJBAEECIAEQ4gEhAiABQRBqJAAgAgvaAQICfwN+IwBBIGsiBSQAQoCAgIDgACEHAkAgACAFQRhqIAFB3gAQhAEiBkUNACAGKQMAIgEQsgFFBEAgAEG2zABBABAVDAELIAUpAxgiCBARBEAgACABIAIgAyAEEIcDIQcMAQsCQCAAIAMgBBCFAyIJEAwNACAGKQMAIQEgBSACNwMQIAUgCTcDCCAFIAE3AwAgACAIIAYpAwhBAyAFECMiARAMIAFC/////29WckUEQCAAIAEQCyAAECcMAQsgASEHCyAAIAgQCyAAIAkQCwsgBUEgaiQAIAcL6wEBBX8jAEGQAWsiAyQAIAEoAgAhBSADQYABNgIIIAMgA0EQajYCDCADQRBqIQYCfwNAIAMoA
 
ghBemohBwJAA0AgBCAGaiACOgAAIARBAWohBCAFLAAAIgJBAEgNASACQf8BcSICQQN2QRxxQdDfAWooAgAgAnZBAXFFDQEgBUEBaiEFIAQgB0kNAAtBACAAKAIAIANBDGogA0EIaiADQRBqEO8EDQIaIAMoAgwhBgwBCwsgACgCACAGIAQQoQMLIQQgAygCDCICIANBEGpHBEAgACgCACACEBkLIAEgBTYCACADQZABaiQAIAQLewIBfwF+IwBB0ABrIgQkACAAIAQgASACIAMQmAUgBEEANgJMQoCAgIAwIQUCQAJAIAQQrgENACAEEPEDIgUQDA0AIAQoAhBBqn9GDQEgBEHAGkEAEBQLIAAgBRALIAQgBEEQahCOAkKAgICA4AAhBQsgBEHQAGokACAFC5wEAgN/An4jAEHgAGsiBCQAIAMtAAQhBUKAgICAMCEHAkACQAJAAkACQAJAAkACQAJAAkAgAy0ABQ4KAQICBQcDBAgFAAYLIAAgAygCCBCZBSEGAn4CQAJAAkAgAygCDEEBag4DAgABCQsgACAAKQPAASIHIAYgB0EAEBMMAgsgACAAKAIoKQMQIgcgBiAHQQAQEwwBCyAAIAEgBiABQQAQEwshByAAIAYQEiACQcIBRgRAQQEhBQwICyACQcsBRw0HQQAhBQwHCwJAIAJBwgFGBEBBASEFDAELIAJBywFHDQBBACEFCyAAIAEgAkECIAMgBRCIAxoMBwtCgICAgDAhCCAAIAEgAiADKAIIBH4gBCADKAIANgIQIARBIGpBwABB8s0AIARBEGoQVBogACADKAIIIARBIGpBAEEKQQggAy0ABUECRhsgAy4BBhDKAQVCgICAgDALIAMoAgwEfiAEIAMoAgA2AgAgBEEgakHAAEH5zQAgBBBUGiAAIAMoAgwgBEEgakEBQQtBCSADLQAFQQJGGyADLgEGEMoBBUKAgICAMAsgBRDcCAwGCyADKQMIIgdCgICAgA
 
h8Qv////8PWARAIAdC/////w+DIQcMBQsgB7kQFiEHDAQLIAMrAwgQFiEHDAMLIAAgASACQQIgAyAFEIgDGgwDCxABAAsgAzUCCCEHCyAAIAEgAiAHIAUQGhoLIARB4ABqJAALQwEBfyAAIAEQkwQiAUUEQEEADwsCQCAAIAIQkwQiAkUEQAwBCyAAIAEgAhChBSEDIAAgARA3IAIhAQsgACABEDcgAwv4AQEBfyACLQAAQS5HBEAgACACIAIQQxCbAw8LIAEQ7AUhAyAAIAIQQyADIAFrQQAgAxsiA2pBAmoQLiIABH8gAyAAIAEgAxAkIgBqQQA6AAACQANAAkAgAi0AAEEuRw0AQQIhAQJAAkAgAi0AAUFSag4CAAECCyACLQACQS9HDQEgAC0AAEUNAyAAEOwFIgFBAWogACABGyIBQanNABCjBEUNASABQavNABCjBEUNASABQX9qIAEgASAASxtBADoAAEEDIQELIAEgAmohAgwBCwsgAC0AAEUNACAAEEMgAGpBLzsAAAsgABBDIABqIAIQ6wUgAAVBAAsLWwIBfwF+AkAgACABIAIQoQUiAUUNACAAIAEQ9gNBf0wEQCAAQQEQlwRBAA8LIAAgAa1CgICAgFCEEA4gACkDwAFBAEEAEJ8FIgQQDA0AIAAgBBALIAEhAwsgAws2AQF+An4gASkDaCICEBEEQEKAgICA4AAgAEKAgICAIBBRIgIQDA0BGiABIAI3A2gLIAIQDgsLzwEBAX8jAEHQAGsiBiQAAkAgAiAEEKMFBEACQCABBEAgBiAAIAZBEGogBBCVATYCACABQfHMACAGEBQMAQsgACAEQfHMABCJAwtBACEBDAELQQAhASAAIAJBHGpBFCACQSRqIAIoAiBBAWoQfA0AIAIgAigCICIBQQFqNgIgIAIoAhwgAUEUbGoiAUIANwIAIAFBEGpBADYCACABQQhqQgA3AgAgASAAIAMQGDYCDCAAIAQQGCE
 
AIAEgBTYCCCABIAA2AhALIAZB0ABqJAAgAQtjAQF/IABB8AAQaiICRQRAIAAgARASQQAPCyACQoCAgIAwNwNoIAJCgICAgDA3A2AgAkKAgICAMDcDSCACQoCAgIAwNwNAIAIgATYCBCACQQE2AgAgAkEIaiAAQeABahBNIAILhAUBBH8gACgCACEDAkACQAJ/A0AgAyICQQFqIQMCQCACLQAAIgRBd2oiBUEXSw0AQQEgBXQiBUGNgIAEcQ0BIAVBEnFFDQAgAUUNAQwDCwJAIARBL0cEQEE9IQEgBEE9Rw0BQaR/IAMtAABBPkYNAxoMBQsgAy0AACICQSpHBEAgAkEvRwRAQS8hAQwGC0EvIQIgAQ0EA0ACQAJAIAJB/wFxIgJBdmoOBAUBAQUACyACRQ0ECyADLQABIQIgA0EBaiEDDAALAAsDQCADIgJBAWohAwJAAkACQCACLQABIgRBdmoOBAEDAwEACyAEQSpGDQEgBEUNBAwCCyABDQUMAQsgAi0AAkEvRw0ACyACQQNqIQMMAQsLIAQiARC7AkUNAgJAAkACQAJAAkAgAUGbf2oOBQECBAQAAwsgAy0AACIBQe4ARgR/IAItAAIQvwFFBEBBt38PCyADLQAABSABC0H/AXFB7QBHDQMgAi0AAkHwAEcNAyACLQADQe8ARw0DIAItAARB8gBHDQMgAi0ABUH0AEcNAyACLQAGEL8BDQMgACACQQZqNgIAQU0PCyADLQAAQfgARw0CIAItAAJB8ABHDQIgAi0AA0HvAEcNAiACLQAEQfIARw0CIAItAAVB9ABHDQIgAi0ABhC/AQ0CIAAgAkEGajYCAEFLDwsgAy0AAEH1AEcNASACLQACQe4ARw0BIAItAANB4wBHDQEgAi0ABEH0AEcNASACLQAFQekARw0BIAItAAZB7wBHDQEgAi0AB0HuAEcNASACLQAIEL8BDQFBRQ8LIAFB7wBHDQAgAy0AAEHmAEcNACAC
 
LQACEL8BDQBBWQ8LQYN/Cw8LQQoPCyABC+cBAQh/IwBBEGsiAyQAQX8hBAJAIAAtABJBBHFFDQAgACgCUCICRQ0AIAIgACgCTGohBiAAKAJEIQcDQCAHIQQgAiAGTw0BIAJBAWohBQJ/IAItAAAiAkUEQAJAIANBCGogBSAGEPUEIgJBAEgNACADKAIIIQkgA0EMaiACIAVqIgIgBhDeByIFQQBIDQAgAygCDCAEaiEHIAIgBWoMAgsgACgCRCEEDAMLIAQgAkF/aiICIAJB/wFxQQVuIglBBWxrQf8BcWpBf2ohByAFCyECIAggCWoiCCABTQ0ACwsgA0EQaiQAIAQLoQEBBn8CQCABQoCAgIBwVA0AIAGnIgQoAhAiAyADKAIYQX9zQQJ0QaR+cmooAgAhAiADECghAwNAIAJFDQEgAyACQX9qIgVBA3RqIgYoAgAhAiAGKAIEQTZHBEAgAkH///8fcSECDAELCyACQf////8DSw0AIAQoAhQgBUEDdGopAwAiAUKAgICAcINCgICAgJB/Ug0AIAAgARC4ASEHCyAHC4UBAQN/AkACQCAAQoCAgIBwVA0AIACnIgEvAQZBA0cNACABKAIQIgIgAigCGEF/c0ECdEGofnJqKAIAIQEgAhAoIQIDQCABRQRAQQAhAQwDCyABQQN0IAJqIgNBeGohASADQXxqKAIAQTVGDQIgASgCAEH///8fcSEBDAALAAtBAA8LIAFFC0ABAn9BfyEEIAAgAUHNASABQQAQEyIBEAwEf0F/BSABECEEQCAAIAAgASACIAFBABATEC0hAwsgACABEAsgAwsLbAIDfwJ+IAFBcGoiBCkDACEFQX8hAgJAIAAgAUF4aikDACIGEDoiAUUNACAAIAUgAUGAgAIQ2gEhAyAAIAEQEiADQQBIDQAgACAFEAsgACAGEAsgBCADQQBHrUKAgICAEIQ3AwBBACECCyACC0wCAX8CfiAAIAFBcGoiAikDA
 
CIDIAFBeGopAwAiBBC+BSIBQQBIBEAgAQ8LIAAgAxALIAAgBBALIAIgAUEAR61CgICAgBCENwMAQQALfgIDfwJ+IAFBeGopAwAiBUL/////b1gEQCAAQaHMAEEAEBVBfw8LQX8hAgJAIAAgAUFwaiIEKQMAIgYQOiIBRQ0AIAAgBSABEHchAyAAIAEQEiADQQBIDQAgACAGEAsgACAFEAsgBCADQQBHrUKAgICAEIQ3AwBBACECCyACC5oBAgJ/AX4jAEEQayICJAAgAUF4aiIDKQMAIQQCfwJAIAAgAkEMaiABQXBqIgEpAwAQ1wMEQCAAIAQQCwwBCyAAIAJBCGogBBDXAw0AIAECfiACKAIMIAIoAgh2IgBBAE4EQCAArQwBCyAAuBAWCzcDAEEADAELIAFCgICAgDA3AwAgA0KAgICAMDcDAEF/CyEAIAJBEGokACAAC0sBAX8jAEEQayICJAAgACACQQxqIAFBeGoiASkDABDEASEAIAFCgICAgDAgAjUCDEL/////D4UgABs3AwAgAkEQaiQAQX9BACAAGwvYAQMCfwF+AnwjAEEQayIDJAACfyAAIANBCGogAUF4aiIEKQMAEFkEQEKAgICAMCEFQX8MAQsgAQJ+IAMrAwgiBiACQQF0QeB9arigRAAAAAAAAPC/oCIHvQJ/IAeZRAAAAAAAAOBBYwRAIAeqDAELQYCAgIB4CyIAt71RBEAgAK0MAQsgBxAWCzcDACAGvQJ/IAaZRAAAAAAAAOBBYwRAIAaqDAELQYCAgIB4CyIBt71RBEAgAa0hBUEADAELIAYQFiEFQQALIQEgBCAFNwMAIANBEGokACABC5YCAwJ/AX4BfCMAQRBrIgMkACABQXhqIgQpAwAhBQJ/AkAgACADQQhqIAFBcGoiASkDABBZBEAgACAFEAsMAQsgACADIAUQWQ0AIAECfgJ8AkACQAJAAkACQAJAIAJB5n5qDgYAAQIEBQMECyADKw
 
MIIAMrAwCiDAULIAMrAwggAysDAKMMBAsgAysDCCADKwMAENQFDAMLIAMrAwggAysDABD8BAwCCxABAAsgAysDCCADKwMAoQsiBr0CfyAGmUQAAAAAAADgQWMEQCAGqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAYQFgs3AwBBAAwBCyABQoCAgIAwNwMAIARCgICAgDA3AwBBfwshACADQRBqJAAgAAu2AwIHfwN+IwBBEGsiAiQAAkAgAUFwaiIHKQMAIgtCgICAgBBaBEAgAEHoywBBABBEQX8hBQwBC0F/IQUgACABQXhqIgQpAwAiCUHDASAJQQAQEyIJEAwNACAJQSlBARD/AyEGIAAgCRALIAAgBCkDAEEAEPMBIgkQDA0AIAAgCUHqACAJQQAQEyIKEAwEQCAAIAkQCwwBCyALpyEDAkACQAJAIAZFDQAgCkEqQQAQ/wNFDQAgBCkDACACQQxqIAJBCGoQjQJFDQAgACACQQRqIAQpAwAQ2AENAiACKAIEIgQgAigCCEcNACABQWhqIQYgAigCDCEIQQAhAQNAIAEgBEYNAiAAIAYpAwAgAyAIIAFBA3RqKQMAEA5BBxCbAUEASA0DIAFBAWohASADQQFqIQMMAAsACyABQWhqIQEDQCAAIAkgCiACQQRqEKwBIgsQDA0CIAIoAgQNASAAIAEpAwAgAyALQQcQmwFBf0wNAiADQQFqIQMMAAsACyAHIAOtNwMAIAAgCRALIAAgChALQQAhBQwBCyAAIAlBARCwARogACAJEAsgACAKEAsLIAJBEGokACAFC/MDAgJ/BX4gAUF4aiIIKQMAIQ0gAUFwaiEHAn4CQAJAAkAgA0EBcQRAIAcpAwAiChAqBEBCgICAgCAhCyAAKQMwEA4hCgwCCyAKELIBRQRAIABBvMoAQQAQFUKAgICAMCEMQoCAgIAwIQlCgICAgDAhCwwEC0KAgICAMCEMIAAgCkE7IApBABATIgs
 
QDA0CIAsQKg0BIAsQIQ0BIABB3coAQQAQFQwCCyAAKAIoKQMIEA4hCyAAKQMwEA4hCgtCgICAgDAhCSAAIAsQUSIMEAwNASANpyIDLQARQTBxRQRAIAAgCkENEFAiCRAMDQJCgICAgDAhDSAAIAkgAyAEIAUQhAUiCRAMDQIgACAJIAwQ+QMgCUEBEKYDIAAgCUEwIAMzASxBARAaGgJAIAYEQCAAIAkgAUFoaikDABCpBUEATg0BDAQLIAAgCSACEKoFQQBIDQMLQQAhASAAIAxBPCAJEA4iCUGDgAEQGkEASA0CIAkgACAJQTsgDBAOIgxBgIABEBpBf0oNAxoMAgtBiMsAQaENQcn7AEGnywAQAAALQoCAgIAwIQkLIAAgChALIAAgCxALIAAgDRALQX8hASAMIQsgCSEKQoCAgIAwIQxCgICAgDALIQkgACALEAsgACAKEAsgByAJNwMAIAggDDcDACABC2wCAX8BfkGyygAhBSAAIAIQ/wQhBgJAIANBgBBxRQRAQbfKACEFIANBgCBxRQ0BCyAAIAUgBkG+FRC9ASEGC0F/IQMCQCAGEAwNACAAIAFBNiAGQQEQGkEASA0AIAAgASAEEPkDQQAhAwsgAwvBAQEEfwJAAkAgAUL/////b1gEQCAAECcMAQsgAkKAgICAcINCgICAgIB/UgRAIAAQ2AMMAQsgACACEJcCIQQgAaciBygCECIGIAQgBigCGHFBf3NBAnRqKAIAIQUgBhAoIQYCQANAIAVFDQEgBCAGIAVBf2pBA3RqIgUoAgRHBEAgBSgCAEH///8fcSEFDAELCyAAIARBhsoAEMYBDAELIAAgByAEQQcQfiIEDQELIAAgAxALQX8PCyAEIAM3AwBBAAu1AQEFfwJAAkAgAUL/////b1gEQCAAECcMAQsgAkKAgICAcINCgICAgIB/UgRAIAAQ2AMMAQsgACACEJcCIQYgAaciBygCECIFIAYgBSgCGHFB
 
f3NBAnRqKAIAIQQgBRAoIQUDQCAEBEAgBSAEQX9qIgRBA3RqIggoAgQgBkYNAyAIKAIAQf///x9xIQQMAQsLIAAgBhCBBQsgACADEAtBfw8LIAAgBygCFCAEQQN0aiADEB9BAAu6AQEFfyABQv////9vWARAIAAQJ0KAgICA4AAPCyACQoCAgIBwg0KAgICAgH9SBEAgABDYA0KAgICA4AAPCyAAIAIQlwIhBSABpyIGKAIQIgQgBSAEKAIYcUF/c0ECdGooAgAhAyAEECghBAJAA0AgAwRAIAQgA0F/aiIDQQN0aiIHKAIEIAVGDQIgBygCAEH///8fcSEDDAELCyAAIAUQgQVCgICAgOAADwsgBigCFCADQQN0aikDABAOC3YCAn8CfiMAQRBrIgIkAAJ/IAFBeGoiAykDACIEECFFBEAgAEGgxgBBABAVQX8MAQtBfyAAIAQgAkEMahCCBSIFEAwNABogACAEEAsgAyAFNwMAIAEgAigCDEEAR61CgICAgBCENwMAQQALIQAgAkEQaiQAIAALzQIBB38CQAJAAkAgACgCQCIEIAFLBEBBfyEEIAAoAkQiBSABQRhsaigCAEUNAQwCC0EzIAFBAWogBEEDbEECbRBLEEsiBkEDdCEIIABBzABqIQQgAEHIAGohCQNAIAkgBCgCACIFRwRAIAAgBSgCFCAIEOMBIgdFDQQgBiAAKAJAIgQgBiAEShshCgNAIAQgCkZFBEAgByAEQQN0akKAgICAIDcDACAEQQFqIQQMAQsLIAUgBzYCFCAFQQRqIQQMAQsLIAAgACgCRCAGQRhsEOMBIgVFDQIgBSAAKAJAIgRBGGxqQQAgBiAEa0EYbBBMGiAAIAY2AkAgACAFNgJECyAFIAFBGGxqIgQgATYCACAEIAAgAxD0CDYCBCAEIAIoAgQ2AgggBCACKAIINgIMIAQgAigCDDYCECAEIAIoAhA2AhRBACEECyAEDwtBfwu1AQIDf
 
wF+IwBBEGsiBCQAQQEhAyAEQQE2AgwCQAJAIAEgAkEDdGoiAikDACIGEBFFBEBBfyEFQX8hAwJAIAAgBiACKQMIIARBDGoQrAEiBhAMDQAgBCgCDCIDDQBBACEDDAILIAAgAikDABALIAJCgICAgDA3AwAgA0EASA0CIAAgBhALC0KAgICAMCEGCyABIAY3AwBBACEFIAEgA0EAR61CgICAgBCENwMICyAEQRBqJAAgBQvtAQIFfwN+QoGAgIAQIQdCgICAgDAhCAJAAkAgAUF4aikDACIJQoCAgIBwVA0AIAmnIgUvAQZBEUcNACAFKAIgIQMDQAJAIAMoAggEQCADKAIQIgIgAygCDE8NAyACEJEBIQQgAyACQQFqNgIQDAELIAMoAhAiAiAFKAIQIgQoAiBPDQIgBBAoIAJBA3RqIgYoAgQhBCADIAJBAWo2AhAgBEUNASAGLQADQRBxRQ0BCyAAIAMpAwAgBBB3IgJBAEgNAiACRQ0AC0KAgICAECEHIAAgBBBkIQgLIAEgBzcDCCABIAg3AwBBACECCyACCyMBAX4gAUF4aiIBIAAgASkDABDkByICNwMAQX9BACACEAwbC+EBAgR/AX4gACkDyAEiB6ciBSgCECIEIAQoAhggAXFBf3NBAnRqKAIAIQMgBBAoIQQgAgJ+AkACQAJAAkADQCADRQ0BIAEgBCADQX9qIgZBA3RqIgMoAgRHBEAgAygCAEH///8fcSEDDAELCyAFKAIUIAZBA3RqKQMAEIMBBEAgACABEN4BDAILIAMtAANBCHENAyAAQYCAASABENwBDwsgACAAKQPAASABEHciA0EATg0BC0F/DwtCgICAgDAgA0UNARogACkDwAEhBwsgBxAOCzcDACACIAAgARBkNwMIQQALhgECBH8BfiABQRhqIQYgASgCHCEFA0AgBiAFIgNHBEAgAygCBCEFIANBfmovAQAgAkcNASADQXhqIgQtAAVBAnENAS
 
ABKAIUIAJBA3RqKQMAEA4hByADIANBEGo2AgggAyAHNwMQIAMQRyAEIAQtAAVBAXI6AAUgACgCECAEQQMQvAEMAQsLC5UBAgJ/AX4gACkDwAEiBqcoAhAiBSAFKAIYIAFxQX9zQQJ0aigCACEEIAUQKCEFIAAgBiABIAJCgICAgDBCgICAgDACfwJAA0AgBEUNASAEQQN0IAVqQXhqIgQoAgAhACABIAQoAgRHBEAgAEH///8fcSEEDAELC0GAwAEgAEGAgIAgcUUNARoLIANBhs4BcgsQdUEfdQu5AQIEfwF+IAJBAnFBBXIgAkEBcUEGciACQYABcSIDGyEGIABByAFBwAEgAxtqKAIAIgQoAhAiBSAFKAIYIAFxQX9zQQJ0aigCACECQoCAgIDAAEKAgICAMCADGyEHIAUQKCEDAkADQCACBEAgAyACQX9qQQN0aiICKAIEIAFGDQIgAigCAEH///8fcSECDAELCyAELQAFQQFxRQ0AIAAgBCABIAYQfiIARQRAQX8PCyAAIAc3AwALQQALMQECfyAAIAJBABDFBSIEBH8gBEEQaiABIAIQJCACakEAOgAAIAAgBCADEM0CBUEACwu/AgEEfyAAKALAASIFKAIQIgQgBCgCGCABcUF/c0ECdGooAgAhAyAEECghBAJAAkACQAJAAkADQCADRQ0BIANBA3QgBGoiBkF4aiEDIAEgBkF8aigCAEcEQCADKAIAQf///x9xIQMMAQsLIAJBgAFxBEAgAy0AA0EEcQ0DDAQLIAJBwABxRQ0CIAMoAgAiAkGAgIAgcQ0CIAJBgICAgHxxQYCAgIAERg0BIAJBgICAwAFxQYCAgMABRg0CDAELIAJBgAFxDQEgBS0ABUEBcQ0BCyAAIAFB18gAEMYBDAILIAAoAsgBKAIQIgIgAigCGCABcUF/c0ECdGooAgAhAyACECghAgNAIANFBEBBAA8LIAIgA0F/akEDdGoiAygCBCABRg0
 
BIAMoAgBB////H3EhAwwACwALIAAgARCuBQtBfwubAQIEfwF+IAAoAsgBIgUoAhAiBCAEKAIYIAFxQX9zQQJ0aigCACEDIAQQKCEEAkADQCADRQ0BIAEgBCADQX9qIgNBA3RqIgYoAgRHBEAgBigCAEH///8fcSEDDAELCyAFKAIUIANBA3RqKQMAIgcQgwEEQCAAIAEQ3gFCgICAgOAADwsgBxAODwsgACAAKQPAASIHIAEgByACEBMLdQEDfyAAKALIASgCECICIAIoAhggAXFBf3NBAnRqKAIAIQMgAhAoIQQCQANAIAMEQEEBIQIgBCADQX9qQQN0aiIDKAIEIAFGDQIgAygCAEH///8fcSEDDAELCyAAIAApA8ABIAEQdyICQQBODQBBfyECCyACC6cBAgJ/A34jAEEwayICJAACfkKAgICAICAAEKIFIgNFDQAaIAAgAxBkCyEEIAAgAxASAkAgBBAMBEAgBCEFDAELAkAgACACQSBqEIQDIgUQDARAIAQhAQwBCyACIAIpAyAiBjcDACACIAE3AxggAiAENwMQIAIgAikDKCIBNwMIIABBKEEEIAIQ/AIgACAEEAsgACAGEAsLIAAgARALCyACQTBqJAAgBQuLAgEEfwJ/AkACQCACQv////9vWARAIAAQJwwBCyACpyIEKAIQIgUgBSgCGEF/c0ECdEH4eXJqKAIAIQMgBRAoIQUCQAJAA0AgAwRAIAUgA0F/aiIDQQN0aiIGKAIEQcEBRg0CIAYoAgBB////H3EhAwwBCwtBfyAAQfcAEKsFIgIQDA0EGiAAIARBwQFBBxB+IgNFBEAgACACEAtBfw8LIAMgAhAOIgI3AwAMAQsgBCgCFCADQQN0aikDABAOIQILIAAgAhCXAiEDIAFC/////29YBEAgABAnIAAgAxASDAELIAAgAacgA0EHEH4hBCAAIAMQEiAEDQELQX8PCyAEQoCAgIAwNwMAQQALC6gCAQR/
 
An8CQAJAIAJC/////29YDQAgAqciAy8BBhD1AUUNACADKAIoIgVFDQAgBSgCECIEIAQoAhhBf3NBAnRB+HlyaigCACEDIAQQKCEEAkADQCADBEAgBCADQX9qIgNBA3RqIgYoAgRBwQFGDQIgBigCAEH///8fcSEDDAELCyAAQcLHAEEAEBUMAgsgAUKAgICAcFQNACAFKAIUIANBA3RqKQMAIgJCgICAgHCDQoCAgICAf1INACAAIAIQlwIhBSABpygCECIEIAUgBCgCGHFBf3NBAnRqKAIAIQMgBBAoIQQDQCADBEBBACAEIANBf2pBA3RqIgMoAgQgBUYNBBogAygCAEH///8fcSEDDAELCyAAQeLHAEEAEBUMAQsgABAnC0F/CwttAgN/AX4CQCAAEE4iBxAMDQAgAiABIAIgAUobIQQgASECA0AgAiAERg0BIAIgAWshBSACQQN0IQYgAkEBaiECIAAgByAFIAMgBmopAwAQDkEHEJsBQX9KDQALIAAgBxALQoCAgIDgACEHCyAHCz0BAn8CQCAAEKIFIgEEQCAAIAEQoAUhAiAAIAEQEiACDQELIABBmMcAQQAQFUKAgICA4AAPCyAAIAIQqwgLjwICBX8BfgJAIAAgACgCKCkDCEEJEFAiChAMDQAgACAKpyIHQTBBAxB+IAGtNwMAIARBACAEQQBKGyEIA0ACQAJAAkAgBSAIRgRAIAQgASAEIAFKGyEBA0AgASAERg0EIAAgCiAEIAIgBEEDdGopAwAQDkEHEJsBIQMgBEEBaiEEIANBAE4NAAsMAQsgACADIAVBARD6AyIGRQ0AIAAgByAFEJEBQScQfiIJDQEgACgCECAGEPcBCyAAIAoQC0KAgICA4AAhCgwDCyAJIAY2AgAgBUEBaiEFDAELCyAAIApBwwEgACkDqAEQDkEDEBoaIAAgCkHOACAAKAIQKAKEASkDCBAOQQMQGhogCg8LIAoLxAECBH8CfiAAI
 
AAoAigpAwhBCBBQIgcQDEUEQCAAIAenIgVBMEEDEH4gAa03AwACQCABQQFIBEAMAQsgACABQQN0EC4iBARAA0AgASADRg0CIAQgA0EDdCIGaiACIAZqKQMAEA43AwAgA0EBaiEDDAALAAsgACAHEAtCgICAgOAADwsgBSABNgIoIAUgBDYCJCAAIAdBwwEgACkDqAEQDkEDEBoaIAAgB0HOAEKAgICAMCAAKQOwASIIIAhBgDAQdRoLIAcLLQEBfyABQSkQQSICRQRAQQAPCyACLQARBEAgABDBAkF/DwsgACACKQMAEMABC7YGAgN/AX4jAEHgAWsiBSQAAkAgAb0iCEKAgICAgICA+P8Ag0KAgICAgICA+P8AUQRAIAhC////////////AINCgYCAgICAgPj/AFoEQCAAQc7CuQI2AAAMAgsgAUQAAAAAAAAAAGNBAXNFBEAgAEEtOgAAIABBAWohAAsgAEG8wwAtAAA6AAggAEG0wwApAAA3AAAMAQsCQCAERQRAAn4gAZlEAAAAAAAA4ENjBEAgAbAMAQtCgICAgICAgICAfwsiCEL/////////D3xC/v///////x9WIAi5IAFicg0BIAAgBUHWAWogCCACEOkHEOsFDAILRAAAAAAAAAAAIAEgAUQAAAAAAAAAAGEbIQEgBEECRw0AIAAgASADEOgHDAELIAEgAyAFQQhqIAVBDGogBUEQaiAEQQNxQQFGIgcQ5wchBiAFKAIIIQIgBSgCDARAIABBLToAACAAQQFqIQALAkAgBEEEcQ0AIAJBAUggAiADQRUgBxtKckUEQCAGIAJMBEBBACEEIAIgBmsiAkEAIAJBAEobIQIgACAFQRBqIAYQJCAGaiEAA0AgAiAERwRAIABBMDoAACAEQQFqIQQgAEEBaiEADAELCyAAQQA6AAAMAwsgACAFQRBqIAIQJCACaiIEQS46AABBACEAIAYgAmsiA0EAIANBAEobIQMDQC
 
AEQQFqIQQgACADRwRAIAQgBUEQaiAAIAJqai0AADoAACAAQQFqIQAMAQsLIARBADoAAAwCCyACQQVqQQVLDQAgAEGw3AA7AABBACEEQQAgAmsgAkEfdXEhAiAAQQJqIQADQCACIARHBEAgAEEwOgAAIARBAWohBCAAQQFqIQAMAQsLIAAgBUEQaiAGECQgBmpBADoAAAwBCyAAIAUtABA6AAACQCAGQQJIBEAgAEEBaiEEDAELIABBLjoAASAAQQJqIQRBASEAA0AgACAGRg0BIAQgBUEQaiAAai0AADoAACAAQQFqIQAgBEEBaiEEDAALAAsgBEHlADoAACACQX9qIQAgAkEBSAR/IARBAWoFIARBKzoAASAEQQJqCyECIAUgADYCACACIAUQnQkLIAVB4AFqJAALLgAgAEEANgLIASAAQoSAgICAAjcDwAEgACAAQcAAEJsCIgA2AswBQQBBfyAAGwtWAQF8An8gACACEJwBIgIQDARARAAAAAAAAPh/IQNBfwwBCyACEFMiAEEHRwRAIABFBEAgAqe3IQNBAAwCCxABAAsgAhBKIQNBAAshACABIAM5AwAgAAswAQF/AkAgAEKAgICAcFQNACAApyIBLwEGQQNHDQAgASABLQAFQd8BcUEgcjoABQsL6AEBCH8jACIHIQsgAacoAiAiCCgCECIJQQAgCUEAShshDCAHIAMgCWoiCkEDdEEPakFwcWsiByQAA34gBiAMRgR+QQAhBiADQQAgA0EAShshAwNAIAMgBkZFBEAgByAGIAlqQQN0aiAEIAZBA3RqKQMANwMAIAZBAWohBgwBCwsCfiAFQQFxBEAgACABIAIQWCEDIAAgCCkDACIBIAEgAiADGyAKIAcQhwMMAQsgACAIKQMAIAgpAwggCiAHECMLIQEgCyQAIAEFIAcgBkEDdCINaiAIIA1qKQMYNwMAIAZBAWohBgwBCwsLLgECfwJAIABCgICAgHBUDQAgAKc
 
iAi8BBkEDRw0AIAItAAVBBXZBAXEhAQsgAQvcAwELfwJAAkAgASgCECIELQAQRQRAQQIgBCgCICAEKAIkaxBLIgggBCgCHEsNASAEKAIYQQFqIQUDQCAFIgJBAXYiBSAITw0ACwJAIAAgAiAIEOEBEC4iA0UNACACQX9qIQogAyACELUCIQMgBEEIahBHIAMgBEEwECQiA0EIaiAAKAIQQdAAahBNIAMgAkECdCICa0EAIAIQTBogBEEwaiEFIANBMGohBiABKAIUIQsDQCAJIAMoAiAiAkkEQCAFKAIEIgIEQCAGIAI2AgQgBiAFKAIAQYCAgGBxIgwgBigCAEH///8fcXI2AgAgBiAMIAMgBSgCBCAKcUF/c0ECdGoiAigCAEH///8fcXI2AgAgAiAHQQFqIgI2AgAgCyAHQQN0aiALIAlBA3RqKQMANwMAIAZBCGohBiACIQcLIAlBAWohCSAFQQhqIQUMAQsLIAcgAiADKAIka0cNAyADQQA2AiQgAyAINgIcIAMgCjYCGCADIAc2AiAgASADNgIQIAAgBBC3AhAZIAAgASgCFCAIQQN0EJkCIgBFDQAgASAANgIUCw8LQYrCAEGhDUGXI0GZwgAQAAALQazCAEGhDUGbI0GZwgAQAAALQcbCAEGhDUHAI0GZwgAQAAALJwAgACABIAJCgICAgDAgAyAEIAVBgDpyEHUaIAAgAxALIAAgBBALC4cBAgF/AX5CgICAgOAAIQcCQCAAQcgAEGoiBQRAIAVBADYCACAAIAVBCGoiBiABIAIgAyAEEOsDBEAgBUEENgIADAILIAAgBhC5AiICEAwNASAAIAIQCyAAIAFBKBBsIgcQDA0BIAcgBRCHAQsgBw8LIAAoAhAgBRDmAyAAIAUQGUKAgICA4AAL6wUCCX8BfCMAQUBqIgYkACABpyIILQApIQsgCC0AKCEJIAYgACgCECIMKAKEATYCECAMIAZBEGo2AoQBIAgoAiAh
 
ByAGIAM2AjQgBiABNwMYIAZBADYCOAJAIAkgA0wEQCAEIQAMAQsgA0EAIANBAEobIQ0gBiAJQQN0QQ9qQfAfcWsiACQAA0AgCiANRgRAIAMhBANAIAQgCUZFBEAgACAEQQN0akKAgICAMDcDACAEQQFqIQQMAQsLIAYgCTYCNAUgACAKQQN0Ig5qIAQgDmopAwA3AwAgCkEBaiEKDAELCwsgBiAANgIgIAgoAiQhBAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALDg0LAgABAAEHCAMEBQYJCgsgBUEBcQ0KQoCAgIAwIQIgC0ECRw0KDAsLIAVBAXENAEKAgICAMCECIAtBA0YNCgsgByACIAMgACAILgEqIAQRBgAhAQwLCyAHIAIgBBEIACEBDAoLIAcgAiAAKQMAIAQRFgAhAQwJCyAHIAIgCC4BKiAEERAAIQEMCAsgByACIAApAwAgCC4BKiAEESIAIQEMBwsgByAGQQhqIAApAwAQSA0FIAYrAwggBBELACIPvQJ/IA+ZRAAAAAAAAOBBYwRAIA+qDAELQYCAgIB4CyIAt71RBEAgAK0hAQwHCyAPEBYhAQwGC0KAgICA4AAhASAHIAZBCGogACkDABBIDQUgByAGIAApAwgQSA0FIAYrAwggBisDACAEERsAIg+9An8gD5lEAAAAAAAA4EFjBEAgD6oMAQtBgICAgHgLIgC3vVEEQCAArSEBDAYLIA8QFiEBDAULIAcgAiADIAAgBkEIaiAILgEqIAQRFAAiARAMDQQgBigCCCIAQQJGDQQgByABIAAQigMhAQwECxABAAsgByACIAMgACAEEQIAIQEMAgsgB0H3wwBBABAVC0KAgICA4AAhAQsgDCAGKAIQNgKEASAGQUBrJAAgAQvXAQEFfyAAKALMASABKAIUIAIQtgIgAxC2AiIHIAAoAsABEMoCQQJ0aiEAA0ACQCAAKAIAIgRFDQACQCAEKAIUI
 
AdHDQAgBCgCLCABKAIsRw0AQQAhACAEKAIgIAEoAiAiBkEBakcNAANAIAAgBkcEQCAEIABBA3QiBWoiCCgCNCABIAVqIgUoAjRHDQIgAEEBaiEAIAUoAjAgCCgCMHNB////H00NAQwCCwsgBCAGQQN0aiIAKAI0IAJHDQAgACgCMEEadiADRg0BCyAEQShqIQAMAQsLIAQLKgEBfwJ/IAAQUyIBQQdHBEBBACABDQEaIACnQR92DwsgABBKvUI/iKcLC7kBAQV/IwAiBSEIIAAgAiADIAFBDxBBIgYtAAQiByADSgR/QQAhACADQQAgA0EAShshCSAFIAdBA3RBD2pB8B9xayIFJAADfyAAIAlGBH8gAyEEA38gBCAHRgR/IAUFIAUgBEEDdGpCgICAgDA3AwAgBEEBaiEEDAELCwUgBSAAQQN0IgpqIAQgCmopAwA3AwAgAEEBaiEADAELCwUgBAsgBi8BBiAGQQhqIAYoAgARFAAhASAIJAAgAQu0AgIEfwF+IwBBEGsiAiQAAkACQAJAAkACQANAAkBCgICAgMB+IQYCQAJAIAEQU0EIag4QBAIFBQUFBQEGAAAIBQUGBgULIAFC/////w+DIQYMBwsgACABQQEQwQEiARAMRQ0BDAULCyAAIAJBCGogARCPAiEDIAAgARALIAMEQCACIAM2AgwgAiADIAMQ+gIiBGoiBTYCDEIAIQYCQCAEIAIoAghGDQAgACAFIAJBDGpBAEEEELoCIgYQDA0AIAIgAigCDBD6AiACKAIMaiIENgIMIAIoAgggBCADa0YNACAAIAYQC0KAgICAwH4hBgsgACADEDcLIANFDQMMBAsgACABEAsgAEGIwwBBABAVDAILIAAgARALDAILIAEhBgwBC0KAgICA4AAhBgsgAkEQaiQAIAYLhgEBBH8gAEEANgI0IABCADcCJCAAQQA2AjwgAEEANgIsQX8hAwJAIABBgAIQrwUNAEHwHyECQQ
 
EhAQNAIAFBzwFGBEBBACEDDAILIAAgAiACEEMiBEEEQQNBASABQcEBSxsgAUHBAUYbEMkIRQ0BIAFBAWohASACIARqQQFqIQIMAAsACyADC5UBAQN/IwBBEGsiBCQAAkACQCAAIARBCGogAUHiABCEASICRQ0AIAQpAwgiARARBEAgACACKQMAEIgEIQMMAgsgACABIAIpAwhBASACEDYiARAMDQAgACABEC0iA0UEQEEAIQMMAgsgACACKQMAEJ4BIgJBAEgNACACRQ0BIABBkdgAQQAQFQtBfyEDCyAEQRBqJAAgAwuNAQEDfyMAQRBrIgQkAAJAAkAgACAEQQhqIAFB4QAQhAEiAkUNACAEKQMIIgEQEQRAIAAgAikDABCeASEDDAILIAAgASACKQMIQQEgAhA2IgEQDA0AIAAgARAtIQMgACACKQMAEJ4BIgJBAEgNACACIANGDQEgAEHw1wBBABAVC0F/IQMLIARBEGokACADCyAAIAFC/////29YBEAgABAnQX8PCyAAQQAgAadBMBBaC2cBAX8jAEEQayIDJAAgASgCBCEBIAIgA0EMaiAAKAIEELMBQQAgAiADQQhqIAEQswEbRQRAQdY/QaENQe05Qfs/EAAACyADKAIIIQAgAygCDCEBIANBEGokAEF/IAAgAUcgASAASRsL1AECA38CfiMAQRBrIgMkAEKAgICA4AAhBQJAIAAgA0EIaiABQd8AEIQBIgJFDQAgAykDCCIBEBEEQCAAIAIpAwAQ+QEhBQwBCwJAIAAgASACKQMIQQEgAhA2IgEQDA0AAkACQAJAIAFCIIinQQFqDgQAAQEAAQsgACACKQMAEJ4BIgRBf0wNASAEDQIgACACKQMAEPkBIgYQDA0BIAAgBhALIAanIAGnRg0CCyAAIAEQCyAAQcU7QQAQFQwCCyAAIAEQCwwBCyABIQULIANBEGokACAFC90BAgN/AX4jAEEgayIEJAACQAJAIAA
 
gBEEYaiABQeAAEIQBIgVFDQAgBSkDACEBIAQpAxgiBxARBEAgACABIAIgAxCYAiEDDAILIAQgAjcDCCAEIAE3AwAgACAHIAUpAwhBAiAEEDYiARAMDQAgACABEC1FBEAgA0UEQEEAIQMMAwsgAEGwO0EAEBUMAQsgACAFKQMAEJ4BIgZBAEgNAEEBIQMgBg0BIAAgBSkDABD5ASIBEAwNACAAIAEQCyACpyABp0YNASAAQcU7QQAQFQtBfyEDCyAEQSBqJAAgAwvNCwIHfwN+IwBBsAZrIgMkACADIAE0Agg3A5gEIANBIDYCkAQgAEGkDiADQZAEahChASACBEADQCAEQQVHBEAgAiAEQQN0IghB9A5qKAIAIgUQ5wEiBgRAIAIgBhCWBCIJIAVPBEAgAyAFNgKABCADIAkgBWs2AoQEIAMgCEHwDmooAgA2AogEIABB0Q8gA0GABGoQoQFBASEHCyACIAYQIAsgBEEBaiEEDAELCyAHRQRAQeMPQSEgABDQBQsgA0HgBGpBAEHQARBMGiACQdQAaiEEIAJB0ABqIQUDQCAFIAQoAgAiBEcEQCAEQXxqLQAAQQ9xRQRAIANB4ARqIARBfmovAQAiBkEzIAZBM0kbQQJ0aiIGIAYoAgBBAWo2AgALIARBBGohBAwBCwtBhRBBEiAAENAFIAMoAuAEIgQEQCADQakQNgL4AyADQQA2AvQDIAMgBDYC8AMgAEGYECADQfADahChAQtBASEEA0AgBEEzRwRAIANB4ARqIARBAnRqKAIAIgUEQCADIAIgA0GgBGogBEEMbEG0CGooAgAQwAU2AugDIAMgBDYC5AMgAyAFNgLgAyAAQZgQIANB4ANqEKEBCyAEQQFqIQQMAQsLIAMoAqwGIgIEQCADQa4QNgLYAyADQQA2AtQDIAMgAjYC0AMgAEGYECADQdADahChAQsgABChCQsgA0HQEDYCyAMgA0HKEDYCxAMgA0HFEDYCwAMg
 
AEG2ECADQcADahChASABKQMYIgpQRQRAIAMgASkDACILNwOwAyADIAo3A6gDIAMgC7kgCrmjOQO4AyADQfsQNgKgAyAAQdUQIANBoANqELcBIAEpAyAhCiABKQMAIQwgASkDECELIANBCDYCiAMgAyALNwOAAyADIAwgC325IAq5ozkDkAMgAyAKNwP4AiADQcMRNgLwAiAAQYwRIANB8AJqELcBCyABKQMoIgpQRQRAIAMgASkDMCILNwPgAiADIAo3A9gCIAMgC7kgCrmjOQPoAiADQfQRNgLQAiAAQc8RIANB0AJqELcBCyABKQM4IgpQRQRAIAMgASkDQCILNwPAAiADIAo3A7gCIAMgC7kgCrmjOQPIAiADQaESNgKwAiAAQfoRIANBsAJqELcBCyABKQNIIgpQRQRAIAMgASkDUCILNwOgAiADIAo3A5gCIAMgC7kgCrmjOQOoAiADQdASNgKQAiAAQakSIANBkAJqELcBIAEpA1ghCiABKQNIIQsgAyABKQNgNwOAAiADIAq5IAu5ozkDiAIgAyAKNwP4ASADQdgSNgLwASAAQakSIANB8AFqELcBIAEpA2ghCiADIAEpA3AiCzcD4AEgAyALuSAKuaM5A+gBIAMgCjcD2AEgA0GLEzYC0AEgAEHlEiADQdABahC3AQsCQCABKQN4IgpQDQAgAyABKQOAATcDwAEgAyAKNwO4ASADQacTNgKwASAAQZQTIANBsAFqEKEBIAEpA3ghCiADIAEpA4gBIgs3A6ABIAMgC7kgCrmjOQOoASADIAo3A5gBIANB4xM2ApABIABBuhMgA0GQAWoQtwEgASkDkAEiClANACADIAEpA5gBIgs3A4ABIAMgCjcDeCADIAu5IAq5ozkDiAEgA0HuEzYCcCAAQboTIANB8ABqELcBCyABKQOgASIKUEUEQCADIAo3A2ggA0GFFDYCYCAAQfgTIANB4ABqEKEBCwJAIAEpA6gBIgpQD
 
QAgAyAKNwNYIANBkRQ2AlAgAEH4EyADQdAAahChASABKQOwASIKUA0AIAMgCjcDSCADQZgUNgJAIABB+BMgA0FAaxChASABKQOwASELIAMgASkDuAEiCkIDhjcDMCADIAq5IAu5ozkDOCADIAo3AyggA0HRFDYCICAAQaYUIANBIGoQtwELIAEpA8ABIgpQRQRAIAMgASkDyAE3AxAgAyAKNwMIIANB3BQ2AgAgAEGUEyADEKEBCyADQbAGaiQAC70CAQR/An9BwAAgACgCIEUNABogAC8BKiAALwEoakEEdEFAawshAiAAKAI0BEAgACgCOCIEQQN0IQUDQCADIARORQRAIAAoAjQgA0EDdGopAwAgARCfASADQQFqIQMgACgCOCEEDAELCyACIAVqIQILIAAoAiQEQCAAKAI8QQN0IAJqIQILAkAgAC8AESIEQYAgcQ0AIAAoAhRFDQAgASABKQMoIAA0Ahh8NwMoIAAvABEhBAtBACEDAkAgBEGACHFFDQACfyAAKAJURQRAIAJBGGoMAQtBASEDIAIgACgCSGpBGWoLIQIgACgCTCIARQ0AIAEgASkDMEIBfDcDMCABIAEpAzggAKx8NwM4IANBAWohAwsgASABKwMgIAK3oDkDICABIAEpAxhCAXw3AxggASABKwMAIAO3oDkDAAvyEgMJfwx+AnwjAEFAaiICJAAgAkEAQcAAEEwhBiABQRBqQQBBwAEQTBogASAANQIQNwMYIAEgADUCFDcDACAANQIYIQsgAUICNwMgIAEgCzcDCCABIAAoAkBBA3RB2AFqrTcDECAAQcwAaiECIABByABqIQgDQCAIIAIoAgAiBUcEQCAFKAIQIQIgASABKQMgQgJ8NwMgIAEgASkDECAAKAJAQQN0QfgBaq18NwMQIAEgASkDwAEgBTMBCHw3A8ABIAEgASkDyAEgBTQCDHw3A8gBIAVBbGohAwJAIAJFDQAgAi0AEA0AIAIoAh
 
ghBCABIAEpA2hCAXw3A2ggASABKQNwIARBAWogAigCHBDhAa18NwNwCyADQeQBaiECIANB4AFqIQkDQCAJIAIoAgAiA0cEQCABIAEpAyAiDUIBfCIMNwMgIAEgASkDEELwAHwiCzcDECADKAIIBEAgASANQgJ8Igw3AyAgASALIAMoAgxBA3StfCILNwMQCwJAIAMoAhRFDQAgASAMQgF8NwMgIAEgCyADKAIYIgRBFGytfDcDEEEAIQIDQCACIARODQECQCADKAIUIAJBFGxqIgcoAggNACAHKAIERQ0AIAEgASkDIEIBfDcDICAHKAIEKQMYIAYQnwEgAygCGCEECyACQQFqIQIMAAsACyADKAIgBEAgASABKQMgQgF8NwMgIAEgASkDECADKAIkQQJ0rXw3AxALIAMoAiwEQCABIAEpAyBCAXw3AyAgASABKQMQIAMoAjBBDGytfDcDEAsgAykDOCAGEJ8BIAMpA0AgBhCfASADQQRqIQIMAQsLIAVBBGohAgwBCwsgAEHUAGohAiAAQdAAaiEJA0AgCSACKAIAIgNHBEAgA0F4aiEIAkACQAJAIANBfGotAABBD3EOAgEAAgsgCCAGEOsIDAELIAMoAgghBCABIAEpA0hCAXw3A0gCQCADKAIMRQ0AIAEgASkDIEIBfDcDICABIAEpA2AgBCgCHEEDdK18NwNgIAEgASkDWCAEKAIgIgWsfDcDWEEAIQcgBBAoIQIDQCAHIAVODQECQCACKAIERQ0AIAIoAgBB/////wNLDQAgAygCDCAHQQN0aikDACAGEJ8BIAQoAiAhBQsgB0EBaiEHIAJBCGohAgwACwALIAQtABBFBEAgBCgCGCECIAEgASkDaEIBfDcDaCABIAEpA3AgAkEBaiAEKAIcEOEBrXw3A3ALAkACQAJAAkACQAJAAkACQAJAAkAgCC8BBkF+ag4TAAkBAQEBAAkBCQIDBAUJBwYICAkLIAEgASkDqAF
 
CAXw3A6gBIAgtAAVBCHFFDQkgASABKQOwAUIBfDcDsAEgAygCHEUNCSABIAEpAyBCAXw3AyAgASABKQMQIAMoAiBBA3StfDcDECABIAEpA7gBIAM1AiB8NwO4AUEAIQIDQCACIAMoAiBPDQogAygCHCACQQN0aikDACAGEJ8BIAJBAWohAgwACwALIAMpAxggBhCfAQwICyABIAEpA6ABQgF8NwOgAQwHCyADKAIcIghFDQYgAygCGCEHIAEgASkDIEIBfDcDICABIAEpA4ABIAcoAjwiBUECdK18NwOAAUEAIQIDQCACIAVODQcCQCAIIAJBAnRqKAIAIgRFDQAgAQJ+RAAAAAAAAPA/IAQoAgC3IhejIAEpAyC5oCIYmUQAAAAAAADgQ2MEQCAYsAwBC0KAgICAgICAgIB/CzcDICABAn5EAAAAAAAAQEAgF6MgASkDgAG5oCIXmUQAAAAAAADgQ2MEQCAXsAwBC0KAgICAgICAgIB/CzcDgAEgBCgCECIKIARBGGpHDQAgCikDACAGEJ8BIAcoAjwhBQsgAkEBaiECDAALAAsgAygCGCEFQQAhAgNAIAIgBSgCECIETkUEQCAFIAJBA3RqKQMYIAYQnwEgAkEBaiECDAELCyABIAEpAyBCAXw3AyAgASABKQMQIARBA3RBGGqtfDcDEAwFCyADKAIYIgVFDQRBACECA0AgAiAFLQAFIgRPRQRAIAUgAkEDdGopAwggBhCfASACQQFqIQIMAQsLIAEgASkDIEIBfDcDICABIAEpAxAgBK1CA4Z8Qgh8NwMQDAQLIAMoAhggBhCPBCADKAIcIAYQjwQMAwsgAygCGCICRQ0CIAIpAwAgBhCfASABIAEpAyBCAXw3AyAgASABKQMQQhh8NwMQDAILIAMoAhgiAkUNASABIAEpAyAiC0IBfDcDICABIAEpAxBCHHwiDDcDECACKAIIRQ0BIAEgC0ICfDcDICABIAwgAjQCAHw3
 
AxAMAQsgAygCGEUNACABIAEpAyBCAXw3AyALIANBBGohAgwBCwsgASABKQNQIAEpA0giDkIwfnwiDzcDUCABIAEpAxAgACgCxAEiAkECdK18IhA3AxBBACEFIAJBACACQQBKGyEDIAEpAyAhCwNAIAMgBUZFBEAgACgCzAEgBUECdGohAgNAIAIoAgAiAgRAIAIoAhghBCABIAEpA2hCAXw3A2ggASABKQNwIARBAWogAigCHBDhAa18NwNwIAJBKGohAgwBCwsgBUEBaiEFDAELCyABIAtCA3wiETcDICABIAAoAigiBaw3AyggASAAKAIsIgMgACgCJGpBAnStIgs3AzBBACECIANBACADQQBKGyEDA0AgAiADRwRAIAAoAjggAkECdGooAgAiBBDdA0UEQCABIAsgBCgCBCIEQf////8HcSAEQR92IgR0IARrQRFqrXwiCzcDMAsgAkEBaiECDAELCyABAn4gBisDCBCjAyIXmUQAAAAAAADgQ2MEQCAXsAwBC0KAgICAgICAgIB/CyIMNwM4IAECfiAGKwMQEKMDIheZRAAAAAAAAOBDYwRAIBewDAELQoCAgICAgICAgH8LIg03A0AgASAGKQMYIhI3A3ggAQJ+IAYrAyAQowMiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfwsiEzcDgAEgASAGKQMoIhQ3A4gBIAEgBikDMCIVNwOQASABIAYpAzgiFjcDmAEgBisDACEXIAEgASkDcCABKQNgIBYgFCAPIBB8IA18IBN8fHwgC3x8fDcDECABAn4gFxCjAyAFt6AgDLmgIA65oCABKQNouaAgErmgIBW5oCARuaAiF5lEAAAAAAAA4ENjBEAgF7AMAQtCgICAgICAgICAfws3AyAgBkFAayQACw8AIAEgASgCAEEBajYCAAs5AQF/IAEgASgCACICQQFqNgIAIAJFBEAgAUEIaiICEEcgAiAAQdAAahBNI
 
AEgAS0ABEEPcToABAsLVQEBfyABKAIAIgJBAEoEQCABIAJBf2oiAjYCAAJAIAINACABLQAEQfABcUEQRw0AIAFBCGoiARBHIAEgAEHgAGoQTQsPC0HWOUGhDUGaLEHnORAAAAtSAQJ/IABBAToAaCAAQdgAaiECAkADQCACIAAoAlwiAUcEQCABQXhqIgEoAgANAiAAIAEQwgUMAQsLIABBADoAaA8LQcYwQaENQcUqQdgwEAAACyoAIAAoAhRBMGogACgCbEsEQCAAEIoFIAAgACgCFCIAQQF2IABqNgJsCwtaAQF/IAAoAswBIAEQwwUiAiAAKALAARDKAkECdGohAANAAkAgACgCACIARQ0AAkAgACgCFCACRw0AIAAoAiwgAUcNACAAKAIgRQ0BCyAAQShqIQAMAQsLIAALqwEBAX8CfyAAKAIIIgIgACgCDE4EQEF/IAAgAkEBaiABEMsCDQEaCwJAIAAoAhAEQCAAIAAoAggiAkEBajYCCCAAKAIEIAJBAXRqIAE7ARAMAQsgAUH/AU0EQCAAIAAoAggiAkEBajYCCCACIAAoAgRqIAE6ABAMAQtBfyAAIAAoAgwQ3AMNARogACAAKAIIIgJBAWo2AgggACgCBCACQQF0aiABOwEQC0EACwsoACABEPABRQRAIAAoAjggAUECdGooAgAiACAAKAIAQQFqNgIACyABC8cBAgR/AX4gASACQQEQzAUiA0H/////A3EhBSAAKAI0IAAoAiRBf2ogA3FBAnRqIQMDQAJAAkAgAygCACIERQ0AIAAoAjggBEECdGooAgAiAykCBCIHQoCAgICAgICAQINCgICAgICAgIDAAFIgB0IgiKdB/////wNxIAVHcg0BIAenIgZBAEggBkH/////B3EgAkdyDQEgA0EQaiABIAIQdA0BIAQQ8AENACADIAMoAgBBAWo2AgALIAQPCyADQQxqIQMMAAsACxAAIwAgAGtBcHEiACQAIA
 
ALBgAgACQACwQAIwALKgEBfyMAQRBrIgEkACABIAA2AgxB2KMEKAIAQYQOIAAQmwQgAUEQaiQACwQAQgAL1AIBB38jAEEgayIDJAAgAyAAKAIcIgQ2AhAgACgCFCEFIAMgAjYCHCADIAE2AhggAyAFIARrIgE2AhQgASACaiEEQQIhByADQRBqIQECfwJAAkAgACgCPCADQRBqQQIgA0EMahADEM8FRQRAA0AgBCADKAIMIgVGDQIgBUF/TA0DIAEgBSABKAIEIghLIgZBA3RqIgkgBSAIQQAgBhtrIgggCSgCAGo2AgAgAUEMQQQgBhtqIgkgCSgCACAIazYCACAEIAVrIQQgACgCPCABQQhqIAEgBhsiASAHIAZrIgcgA0EMahADEM8FRQ0ACwsgBEF/Rw0BCyAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgASgCBGsLIQQgA0EgaiQAIAQLjAICA38BfiMAQSBrIgUkAAJAIAGnIgcoAiAiBkUNACAGKAIIIggoAgQNACAIQQE2AgQgBy8BBkFVaiEHIANBAUgEfkKAgICAMAUgBCkDAAshAQJAAkAgBw0AIAEQIUUNAAJAAkAgACABIAYpAwAQWARAIABBr+MAQQAQFQwBCyAAIAFB/wAgAUEAEBMiAhAMRQ0BCyAAEI8BIQEgACAGKQMAIAFBARCUBSAAIAEQCwwDCyAAIAIQOw0BIAAgAhALCyAAIAYpAwAgASAHEJQFDAELIAYpAwAhCSAFIAI3AxAgBSABNwMIIAUgCTcDACAAQSZBAyAFEPwCIAAgAhALCyAFQSBqJABCgICAgDALRAIBfwF+IAFC////////P4MhAwJ/IAFCMIinQf//AXEiAkH//wFHBEBBBCACDQEaQQJBAyAAIAOEUBsPCyAAIAOEUAsL5gMDA38
 
BfgZ8AkACQAJAAkAgAL0iBEIAWQRAIARCIIinIgFB//8/Sw0BCyAEQv///////////wCDUARARAAAAAAAAPC/IAAgAKKjDwsgBEJ/VQ0BIAAgAKFEAAAAAAAAAACjDwsgAUH//7//B0sNAkGAgMD/AyECQYF4IQMgAUGAgMD/A0cEQCABIQIMAgsgBKcNAUQAAAAAAAAAAA8LIABEAAAAAAAAUEOivSIEQiCIpyECQct3IQMLIAMgAkHiviVqIgFBFHZqtyIHRABgn1ATRNM/oiIIIARC/////w+DIAFB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA/oqIiBaG9QoCAgIBwg78iBkQAACAVe8vbP6IiCaAiCiAJIAggCqGgIAAgBqEgBaEgACAARAAAAAAAAABAoKMiACAFIAAgAKIiBSAFoiIAIAAgAESfxnjQCZrDP6JEr3iOHcVxzD+gokQE+peZmZnZP6CiIAUgACAAIABERFI+3xLxwj+iRN4Dy5ZkRsc/oKJEWZMilCRJ0j+gokSTVVVVVVXlP6CioKCioCIARAAAIBV7y9s/oiAHRDYr8RHz/lk9oiAAIAagRNWtmso4lLs9oqCgoKAhAAsgAAvNAwMDfwF+BXwCQAJAAkACQCAAvSIEQgBZBEAgBEIgiKciAUH//z9LDQELIARC////////////AINQBEBEAAAAAAAA8L8gACAAoqMPCyAEQn9VDQEgACAAoUQAAAAAAAAAAKMPCyABQf//v/8HSw0CQYCAwP8DIQJBgXghAyABQYCAwP8DRwRAIAEhAgwCCyAEpw0BRAAAAAAAAAAADwsgAEQAAAAAAABQQ6K9IgRCIIinIQJBy3chAwsgBEL/////D4MgAkHiviVqIgFB//8/cUGewZr/A2qtQiCGhL9EAAAAAAAA8L+gIgAgACAARAAAAAAAAOA/oqIiBaG9QoCAgIBwg78iBkQA
 
ACBlRxX3P6IiByADIAFBFHZqtyIIoCIJIAcgCCAJoaAgACAGoSAFoSAAIABEAAAAAAAAAECgoyIAIAUgACAAoiIFIAWiIgAgACAARJ/GeNAJmsM/okSveI4dxXHMP6CiRAT6l5mZmdk/oKIgBSAAIAAgAEREUj7fEvHCP6JE3gPLlmRGxz+gokRZkyKUJEnSP6CiRJNVVVVVVeU/oKKgoKKgIgBEAAAgZUcV9z+iIAAgBqBEAKLvLvwF5z2ioKCgIQALIAALRgAgAL1C////////////AINCgICAgICAgPj/AFgEQCAAIAAgAaUgAb1C////////////AINCgICAgICAgPj/AFYbDwsgAQtGACAAvUL///////////8Ag0KAgICAgICA+P8AWARAIAAgACABpCABvUL///////////8Ag0KAgICAgICA+P8AVhsPCyABC6EBAQF+IABB6AAQaiIFRQRAQoCAgIDgAA8LIAVBATYCACAAKAIQIAVBBBC8ASAFQoCAgIAwNwMYIAVCgICAgDA3AxAgBUEANgIgAkACQCAAIAVBEGoQhAMiBhAMRQRAIAAgBUEoaiABIAIgAyAEEOsDRQ0BCyAAIAYQC0KAgICA4AAhBgwBCyAFQQE2AiAgACAFEJMFCyAAKAIQIAUQkgUgBguuBwEJfyAAKAIEIgdBA3EhAiAAIAdBeHEiBmohBEH0pwQoAgAhBQJAIAJFBEBBACECIAFBgAJJDQEgBiABQQRqTwRAIAAhAiAGIAFrQcSrBCgCAEEBdE0NAgtBAA8LAkAgBiABTwRAIAYgAWsiAkEQSQ0BIAAgB0EBcSABckECcjYCBCAAIAFqIgEgAkEDcjYCBCAEIAQoAgRBAXI2AgQgASACENUFDAELQQAhAiAEQfynBCgCAEYEQEHwpwQoAgAgBmoiBSABTQ0CIAAgB0EBcSABckECcjYCBCAAIAFqIgIgBSABayIBQQFyNgIEQfCnBCABN
 
gIAQfynBCACNgIADAELIARB+KcEKAIARgRAQeynBCgCACAGaiIFIAFJDQICQCAFIAFrIgJBEE8EQCAAIAdBAXEgAXJBAnI2AgQgACABaiIBIAJBAXI2AgQgACAFaiIFIAI2AgAgBSAFKAIEQX5xNgIEDAELIAAgB0EBcSAFckECcjYCBCAAIAVqIgEgASgCBEEBcjYCBEEAIQJBACEBC0H4pwQgATYCAEHspwQgAjYCAAwBCyAEKAIEIgNBAnENASADQXhxIAZqIgkgAUkNASAJIAFrIQoCQCADQf8BTQRAIAQoAggiBiADQQN2IgVBA3RBjKgEakcaIAYgBCgCDCIIRgRAQeSnBEHkpwQoAgBBfiAFd3E2AgAMAgsgBiAINgIMIAggBjYCCAwBCyAEKAIYIQgCQCAEIAQoAgwiA0cEQCAFIAQoAggiAk0EQCACKAIMGgsgAiADNgIMIAMgAjYCCAwBCwJAIARBFGoiAigCACIGDQAgBEEQaiICKAIAIgYNAEEAIQMMAQsDQCACIQUgBiIDQRRqIgIoAgAiBg0AIANBEGohAiADKAIQIgYNAAsgBUEANgIACyAIRQ0AAkAgBCAEKAIcIgVBAnRBlKoEaiICKAIARgRAIAIgAzYCACADDQFB6KcEQeinBCgCAEF+IAV3cTYCAAwCCyAIQRBBFCAIKAIQIARGG2ogAzYCACADRQ0BCyADIAg2AhggBCgCECICBEAgAyACNgIQIAIgAzYCGAsgBCgCFCICRQ0AIAMgAjYCFCACIAM2AhgLIApBD00EQCAAIAdBAXEgCXJBAnI2AgQgACAJaiIBIAEoAgRBAXI2AgQMAQsgACAHQQFxIAFyQQJyNgIEIAAgAWoiAiAKQQNyNgIEIAAgCWoiASABKAIEQQFyNgIEIAIgChDVBQsgACECCyACC1cCAX8BfgJAAn9BACAARQ0AGiAArSICpyIBIABBAXJBgIAESQ0AGkF/IAEgAkIgiK
 
cbCyIBEJ8CIgBFDQAgAEF8ai0AAEEDcUUNACAAQQAgARBMGgsgAAtmAQF/IAGnIgUvAQZBUmohBiAFKAIgIQUgA0EBSAR+QoCAgIAwBSAEKQMACyEBIAUgBjYCNCABEA4hAQJAIAYEQCAAIAEQkAEMAQsgBSgCZEF4aiABNwMACyAAIAUQkwVCgICAgDALxgECA38CfiMAQRBrIgMkAAJ+IAG8IgRB/////wdxIgJBgICAfGpB////9wdNBEAgAq1CGYZCgICAgICAgMA/fAwBCyACQYCAgPwHTwRAIAStQhmGQoCAgICAgMD//wCEDAELIAJFBEBCAAwBCyADIAKtQgAgAmciAkHRAGoQeyADKQMAIQUgAykDCEKAgICAgIDAAIVBif8AIAJrrUIwhoQLIQYgACAFNwMAIAAgBiAEQYCAgIB4ca1CIIaENwMIIANBEGokAAuQAQIBfwF+QoCAgIDgACEHAkAgAEHQABBqIgYEQCAGQQA2AgQgBkHIAGoQbiAAIAZBCGoiBSABIAIgAyAEEOsDBEAgBkEFNgIEDAILIAAgBRC5AiICEAwNASAAIAIQCyAAIAFBMhBsIgcQDA0BIAYgBz4CACAHIAYQhwELIAcPCyAAKAIQIAYQkQVCgICAgOAACwYAQeCnBAsGAEHcpwQLBgBB1KcEC2sCAX8BfiMAQaABayICJAAgAkEQakEAQZABEEwaIAJBfzYCXCACIAE2AjwgAkF/NgIYIAIgATYCFCACQRBqEJoEIAIgAkEQahCOCSACKQMIIQMgACACKQMANwMAIAAgAzcDCCACQaABaiQAC/kbAw1/Bn4BfCMAQZDGAGsiBiQAQQAgAyAEaiIRayESAkACfwNAIAJBMEcEQAJAIAJBLkcNBCABKAIEIgIgASgCaE8NACABIAJBAWo2AgQgAi0AAAwDCwUgASgCBCICIAEoAmhJBH9BASEHIAEgAkEBajYCBCACLQAABUEBIQcgARB
 
bCyECDAELCyABEFsLIQJBASEJIAJBMEcNAANAIBNCf3whEwJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAkEwRg0AC0EBIQcLIAZBADYCkAYCfgJAAkACQAJAIAJBLkYiCiACQVBqIghBCU1yBEADQAJAIApBAXEEQCAJRQRAIBQhE0EBIQkMAgsgB0UhBwwECyAUQgF8IRQgC0H8D0wEQCANIBSnIAJBMEYbIQ0gBkGQBmogC0ECdGoiByAMBH8gAiAHKAIAQQpsakFQagUgCAs2AgBBASEHQQAgDEEBaiICIAJBCUYiAhshDCACIAtqIQsMAQsgAkEwRg0AIAYgBigCgEZBAXI2AoBGQdyPASENCwJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAkEuRiIKIAJBUGoiCEEKSXINAAsLIBMgFCAJGyETIAdFIAJBX3FBxQBHckUEQAJAIAEQ2wUiFUKAgICAgICAgIB/Ug0AQgAhFSABKAJoRQ0AIAEgASgCBEF/ajYCBAsgB0UNAyATIBV8IRMMBAsgB0UhByACQQBIDQELIAEoAmhFDQAgASABKAIEQX9qNgIECyAHRQ0BC0GEpwRBHDYCAEIAIRQgARCaBEIADAELIAYoApAGIgFFBEAgBiAFt0QAAAAAAAAAAKIQtgEgBikDACEUIAYpAwgMAQsgEyAUUiAUQglVciADQR5MQQAgASADdhtyRQRAIAZBMGogBRB/IAZBIGogARCgAiAGQRBqIAYpAzAgBikDOCAGKQMgIAYpAygQMyAGKQMQIRQgBikDGAwBCyATIARBfm2tVQRAQYSnBEHEADYCACAGQeAAaiAFEH8gBkHQAGogBikDYCAGKQNoQn9C////////v///ABAzIAZBQGsgBikDUCAGKQNYQn9C////////v///ABAzIAYpA0AhFCAGKQNIDAELIBMg
 
BEGefmqsUwRAQYSnBEHEADYCACAGQZABaiAFEH8gBkGAAWogBikDkAEgBikDmAFCAEKAgICAgIDAABAzIAZB8ABqIAYpA4ABIAYpA4gBQgBCgICAgICAwAAQMyAGKQNwIRQgBikDeAwBCyAMBEAgDEEITARAIAZBkAZqIAtBAnRqIgIoAgAhAQNAIAFBCmwhASAMQQFqIgxBCUcNAAsgAiABNgIACyALQQFqIQsLAkAgDSATpyIJSiANQQlOciAJQRFKcg0AIAlBCUYEQCAGQcABaiAFEH8gBkGwAWogBigCkAYQoAIgBkGgAWogBikDwAEgBikDyAEgBikDsAEgBikDuAEQMyAGKQOgASEUIAYpA6gBDAILIAlBCEwEQCAGQZACaiAFEH8gBkGAAmogBigCkAYQoAIgBkHwAWogBikDkAIgBikDmAIgBikDgAIgBikDiAIQMyAGQeABakEAIAlrQQJ0QcCjBGooAgAQfyAGQdABaiAGKQPwASAGKQP4ASAGKQPgASAGKQPoARDYBSAGKQPQASEUIAYpA9gBDAILIAMgCUF9bGpBG2oiAUEeTEEAIAYoApAGIgIgAXYbDQAgBkHgAmogBRB/IAZB0AJqIAIQoAIgBkHAAmogBikD4AIgBikD6AIgBikD0AIgBikD2AIQMyAGQbACaiAJQQJ0QfiiBGooAgAQfyAGQaACaiAGKQPAAiAGKQPIAiAGKQOwAiAGKQO4AhAzIAYpA6ACIRQgBikDqAIMAQsDQCAGQZAGaiALIgJBf2oiC0ECdGooAgBFDQALQQAhDAJAIAlBCW8iAUUEQEEAIQcMAQsgASABQQlqIAlBf0obIQgCQCACRQRAQQAhB0EAIQIMAQtBgJTr3ANBACAIa0ECdEHAowRqKAIAIgttIQ1BACEKQQAhAUEAIQcDQCAGQZAGaiABQQJ0aiIOIAogDigCACIOIAtuIg9qIgo2AgAgB0EBakH/D3EgByAKRSABI
 
AdGcSIKGyEHIAlBd2ogCSAKGyEJIA0gDiALIA9sa2whCiABQQFqIgEgAkcNAAsgCkUNACAGQZAGaiACQQJ0aiAKNgIAIAJBAWohAgsgCSAIa0EJaiEJCwNAIAZBkAZqIAdBAnRqIQ0CQANAIAlBJE4EQCAJQSRHDQIgDSgCAEHR6fkETw0CCyACQf8PaiELQQAhCiACIQgDQCAIIQICf0EAIAqtIAZBkAZqIAtB/w9xIgFBAnRqIgg1AgBCHYZ8IhNCgZTr3ANUDQAaIBMgE0KAlOvcA4AiFEKAlOvcA359IRMgFKcLIQogCCATpyIINgIAIAIgAiACIAEgCBsgASAHRhsgASACQX9qQf8PcUcbIQggAUF/aiELIAEgB0cNAAsgDEFjaiEMIApFDQALIAggB0F/akH/D3EiB0YEQCAGQZAGaiAIQf4PakH/D3FBAnRqIgEgASgCACAGQZAGaiAIQX9qQf8PcSICQQJ0aigCAHI2AgALIAlBCWohCSAGQZAGaiAHQQJ0aiAKNgIADAELCwJAA0AgAkEBakH/D3EhCyAGQZAGaiACQX9qQf8PcUECdGohDQNAQQlBASAJQS1KGyEKAkADQCAHIQhBACEBAkADQAJAIAEgCGpB/w9xIgcgAkYNACAGQZAGaiAHQQJ0aigCACIHIAFBAnRBkKMEaigCACIOSQ0AIAcgDksNAiABQQFqIgFBBEcNAQsLIAlBJEcNAEIAIRNBACEBQgAhFANAIAIgASAIakH/D3EiB0YEQCACQQFqQf8PcSICQQJ0IAZqQQA2AowGCyAGQYAGaiATIBRCAEKAgICA5Zq3jsAAEDMgBkHwBWogBkGQBmogB0ECdGooAgAQoAIgBkHgBWogBikDgAYgBikDiAYgBikD8AUgBikD+AUQeiAGKQPoBSEUIAYpA+AFIRMgAUEBaiIBQQRHDQALIAZB0AVqIAUQfyAGQcAFaiATIBQgBikD0AUgBikD2AUQMy
 
AGKQPIBSEUQgAhEyAGKQPABSEVIAxB8QBqIgcgBGsiBEEAIARBAEobIAMgBCADSCILGyIBQfAATA0CDAULIAogDGohDCACIQcgAiAIRg0AC0GAlOvcAyAKdiEOQX8gCnRBf3MhD0EAIQEgCCEHA0AgBkGQBmogCEECdGoiECABIBAoAgAiECAKdmoiATYCACAHQQFqQf8PcSAHIAFFIAcgCEZxIgEbIQcgCUF3aiAJIAEbIQkgDyAQcSAObCEBIAhBAWpB/w9xIgggAkcNAAsgAUUNASAHIAtHBEAgBkGQBmogAkECdGogATYCACALIQIMAwsgDSANKAIAQQFyNgIAIAshBwwBCwsLIAZBkAVqRAAAAAAAAPA/QeEBIAFrEMkBELYBIAZBsAVqIAYpA5AFIAYpA5gFIBUgFBDdBSAGKQO4BSEXIAYpA7AFIRggBkGABWpEAAAAAAAA8D9B8QAgAWsQyQEQtgEgBkGgBWogFSAUIAYpA4AFIAYpA4gFENMFIAZB8ARqIBUgFCAGKQOgBSITIAYpA6gFIhYQmQQgBkHgBGogGCAXIAYpA/AEIAYpA/gEEHogBikD6AQhFCAGKQPgBCEVCwJAIAhBBGpB/w9xIgMgAkYNAAJAIAZBkAZqIANBAnRqKAIAIgNB/8m17gFNBEAgA0VBACAIQQVqQf8PcSACRhsNASAGQfADaiAFt0QAAAAAAADQP6IQtgEgBkHgA2ogEyAWIAYpA/ADIAYpA/gDEHogBikD6AMhFiAGKQPgAyETDAELIANBgMq17gFHBEAgBkHQBGogBbdEAAAAAAAA6D+iELYBIAZBwARqIBMgFiAGKQPQBCAGKQPYBBB6IAYpA8gEIRYgBikDwAQhEwwBCyAFtyEZIAIgCEEFakH/D3FGBEAgBkGQBGogGUQAAAAAAADgP6IQtgEgBkGABGogEyAWIAYpA5AEIAYpA5gEEHogBikDiAQhFiAGKQOABCETDAELIAZ
 
BsARqIBlEAAAAAAAA6D+iELYBIAZBoARqIBMgFiAGKQOwBCAGKQO4BBB6IAYpA6gEIRYgBikDoAQhEwsgAUHvAEoNACAGQdADaiATIBZCAEKAgICAgIDA/z8Q0wUgBikD0AMgBikD2ANCAEIAEIACDQAgBkHAA2ogEyAWQgBCgICAgICAwP8/EHogBikDyAMhFiAGKQPAAyETCyAGQbADaiAVIBQgEyAWEHogBkGgA2ogBikDsAMgBikDuAMgGCAXEJkEIAYpA6gDIRQgBikDoAMhFQJAIAdB/////wdxQX4gEWtMDQAgBiAUQv///////////wCDNwOYAyAGIBU3A5ADIAZBgANqIBUgFEIAQoCAgICAgID/PxAzIAYpA5ADIAYpA5gDQoCAgICAgIC4wAAQ2QUhAiAUIAYpA4gDIAJBAEgiAxshFCAVIAYpA4ADIAMbIRUgCyADIAEgBEdycSATIBZCAEIAEIACQQBHcUVBACAMIAJBf0pqIgxB7gBqIBJMGw0AQYSnBEHEADYCAAsgBkHwAmogFSAUIAwQ3AUgBikD8AIhFCAGKQP4AgshEyAAIBQ3AwAgACATNwMIIAZBkMYAaiQAC/kMAgh/B34jAEGwA2siBSQAAn8gASgCBCIGIAEoAmhJBEAgASAGQQFqNgIEIAYtAAAMAQsgARBbCyEGAkACfwNAIAZBMEcEQAJAIAZBLkcNBCABKAIEIgYgASgCaE8NACABIAZBAWo2AgQgBi0AAAwDCwUgASgCBCIGIAEoAmhJBH9BASEIIAEgBkEBajYCBCAGLQAABUEBIQggARBbCyEGDAELCyABEFsLIQZBASEJIAZBMEcNAANAIBFCf3whEQJ/IAEoAgQiBiABKAJoSQRAIAEgBkEBajYCBCAGLQAADAELIAEQWwsiBkEwRg0AC0EBIQgLQoCAgICAgMD/PyENA0ACQCAGQSByIQoCQAJAIAZBUGoiC0EKSQ0AIAZBLkdB
 
ACAKQZ9/akEFSxsNAiAGQS5HDQAgCQ0CQQEhCSAPIREMAQsgCkGpf2ogCyAGQTlKGyEGAkAgD0IHVwRAIAYgB0EEdGohBwwBCyAPQhxXBEAgBUEwaiAGEH8gBUEgaiASIA1CAEKAgICAgIDA/T8QMyAFQRBqIAUpAyAiEiAFKQMoIg0gBSkDMCAFKQM4EDMgBSAOIBAgBSkDECAFKQMYEHogBSkDCCEQIAUpAwAhDgwBCyAMIAZFcg0AIAVB0ABqIBIgDUIAQoCAgICAgID/PxAzIAVBQGsgDiAQIAUpA1AgBSkDWBB6IAUpA0ghEEEBIQwgBSkDQCEOCyAPQgF8IQ9BASEICyABKAIEIgYgASgCaEkEfyABIAZBAWo2AgQgBi0AAAUgARBbCyEGDAELCwJ+AkAgCEUEQCABKAJoRQ0BIAEgASgCBCICQX9qNgIEIAEgAkF+ajYCBCAJRQ0BIAEgAkF9ajYCBAwBCyAPQgdXBEAgDyENA0AgB0EEdCEHIA1CAXwiDUIIUg0ACwsCQCAGQV9xQdAARgRAIAEQ2wUiDUKAgICAgICAgIB/Ug0BQgAhDSABKAJoRQ0BIAEgASgCBEF/ajYCBAwBC0IAIQ0gASgCaEUNACABIAEoAgRBf2o2AgQLIAdFBEAgBUHwAGogBLdEAAAAAAAAAACiELYBIAUpA3AhDiAFKQN4DAILIBEgDyAJG0IChiANfEJgfCIPQQAgA2utVQRAQYSnBEHEADYCACAFQaABaiAEEH8gBUGQAWogBSkDoAEgBSkDqAFCf0L///////+///8AEDMgBUGAAWogBSkDkAEgBSkDmAFCf0L///////+///8AEDMgBSkDgAEhDiAFKQOIAQwCCyAPIANBnn5qrFkEQCAHQX9KBEADQCAFQaADaiAOIBBCAEKAgICAgIDA/79/EHogDiAQQoCAgICAgID/PxDZBSEBIAVBkANqIA4gECAOIAUpA6ADIAFBAEgiB
 
hsgECAFKQOoAyAGGxB6IA9Cf3whDyAFKQOYAyEQIAUpA5ADIQ4gB0EBdCABQX9KciIHQX9KDQALCwJ+IA8gA6x9QiB8Ig2nIgFBACABQQBKGyACIA0gAq1TGyIBQfEATgRAIAVBgANqIAQQfyAFKQOIAyERIAUpA4ADIRJCAAwBCyAFQeACakQAAAAAAADwP0GQASABaxDJARC2ASAFQdACaiAEEH8gBUHwAmogBSkD4AIgBSkD6AIgBSkD0AIiEiAFKQPYAiIREN0FIAUpA/gCIRMgBSkD8AILIQ0gBUHAAmogByAHQQFxRSAOIBBCAEIAEIACQQBHIAFBIEhxcSIBahCgAiAFQbACaiASIBEgBSkDwAIgBSkDyAIQMyAFQZACaiAFKQOwAiAFKQO4AiANIBMQeiAFQaACakIAIA4gARtCACAQIAEbIBIgERAzIAVBgAJqIAUpA6ACIAUpA6gCIAUpA5ACIAUpA5gCEHogBUHwAWogBSkDgAIgBSkDiAIgDSATEJkEIAUpA/ABIg0gBSkD+AEiEUIAQgAQgAJFBEBBhKcEQcQANgIACyAFQeABaiANIBEgD6cQ3AUgBSkD4AEhDiAFKQPoAQwCC0GEpwRBxAA2AgAgBUHQAWogBBB/IAVBwAFqIAUpA9ABIAUpA9gBQgBCgICAgICAwAAQMyAFQbABaiAFKQPAASAFKQPIAUIAQoCAgICAgMAAEDMgBSkDsAEhDiAFKQO4AQwBCyAFQeAAaiAEt0QAAAAAAAAAAKIQtgEgBSkDYCEOIAUpA2gLIQ8gACAONwMAIAAgDzcDCCAFQbADaiQAC8UHAgZ/An4jAEEwayIEJABB0KMEKAIAIQZBxKMEKAIAIQcDQAJ/IAEoAgQiAiABKAJoSQRAIAEgAkEBajYCBCACLQAADAELIAEQWwsiAhDeBQ0AC0EBIQUCQAJAIAJBVWoOAwABAAELQX9BASACQS1GGyEFIAEoAgQiAiABKA
 
JoSQRAIAEgAkEBajYCBCACLQAAIQIMAQsgARBbIQILAkACQAJAA0AgA0H5ogRqLAAAIAJBIHJGBEACQCADQQZLDQAgASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFshAgsgA0EBaiIDQQhHDQEMAgsLIANBA0cEQCADQQhGDQEgA0EESQ0CIANBCEYNAQsgASgCaCICBEAgASABKAIEQX9qNgIECyADQQRJDQADQCACBEAgASABKAIEQX9qNgIECyADQX9qIgNBA0sNAAsLIAQgBbJDAACAf5QQhgkgBCkDCCEIIAQpAwAhCQwBCwJAAkACQCADDQBBACEDA0AgA0GCowRqLAAAIAJBIHJHDQECQCADQQFLDQAgASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFshAgsgA0EBaiIDQQNHDQALDAELAkACQCADDgQAAQECAQsCQCACQTBHDQACfyABKAIEIgMgASgCaEkEQCABIANBAWo2AgQgAy0AAAwBCyABEFsLQV9xQdgARgRAIARBEGogASAHIAYgBRCNCSAEKQMYIQggBCkDECEJDAULIAEoAmhFDQAgASABKAIEQX9qNgIECyAEQSBqIAEgAiAHIAYgBRCMCSAEKQMoIQggBCkDICEJDAMLIAEoAmgEQCABIAEoAgRBf2o2AgQLDAELAkACfyABKAIEIgMgASgCaEkEQCABIANBAWo2AgQgAy0AAAwBCyABEFsLQShGBEBBASEDDAELQoCAgICAgOD//wAhCCABKAJoRQ0CIAEgASgCBEF/ajYCBAwCCwNAAn8gASgCBCICIAEoAmhJBEAgASACQQFqNgIEIAItAAAMAQsgARBbCyICQVBqQQpJIAJBv39qQRpJciACQd8ARnJFQQAgAkGff2pBGk8bRQRAIANBAWohAwwBCwtCgICAgICA4P//ACEIIAJBKUYNASABKAJoIgI
 
EQCABIAEoAgRBf2o2AgQLIANFDQEDQCADQX9qIQMgAgRAIAEgASgCBEF/ajYCBAsgAw0ACwwBC0GEpwRBHDYCACABEJoECyAAIAk3AwAgACAINwMIIARBMGokAAu0AgIEfwN+IwBBEGsiBCQAQoCAgIDgACEJAkAgACADKQMAIgoQmwgiBkUNACAEQgA3AwggAkECTgRAIAAgBEEIaiADKQMIEMIBDQELIAYtAAQEQCAAEHAMAQsgBCkDCCIIIAYoAgAiBaxWBEAgAEGt2wEQaQwBCyAFIAinIgdrIQUCQCACQQNIDQAgAykDECIIEBENACAAIAQgCBDCAQ0BIAQpAwAiCCAFrVYEQCAAQcDbARBpDAILIAinIQULIAAgAUEeEGwiARAMDQACQAJAIAYtAAQEQCAAEHAMAQsgAEEYEC4iAg0BCyAAIAEQCwwBCyACIAGnIgA2AgggChAOIQkgAiAFNgIUIAIgBzYCECACIAk+AgwgAiAGQQxqEE0gACACNgIgIAEhCQsgBEEQaiQAIAkLQQECfyMAQRBrIgEkAEF/IQICQCAAEJEJDQAgACABQQ9qQQEgACgCIBEAAEEBRw0AIAEtAA8hAgsgAUEQaiQAIAILfAECfyAAIAAtAEoiAUF/aiABcjoASiAAKAIUIAAoAhxLBEAgAEEAQQAgACgCJBEAABoLIABBADYCHCAAQgA3AxAgACgCACIBQQRxBEAgACABQSByNgIAQX8PCyAAIAAoAiwgACgCMGoiAjYCCCAAIAI2AgQgAUEbdEEfdQt+AQV/A0AgACIBQQFqIQAgASwAABDeBQ0ACwJAAkACQCABLAAAIgVBVWoOAwECAAILQQEhAwsgACwAACEFIAAhASADIQQLIAUQRgRAA0AgAkEKbCABLAAAa0EwaiECIAEsAAEhACABQQFqIQEgABBGDQALCyACQQAgAmsgBBsLLgEBfyAAQdCnBCgCADYCOEHQpwQoAgAiAQRA
 
IAEgADYCNAtB0KcEIAA2AgAgAAuhAQEEf0EAIAAoAlQiAygCBCIEIAMoAgAiBWsiBiAGIARLGyIEIAJJBEAgACAAKAIAQRByNgIAIAQhAgsgASADKAIMIAVqIAIQJBogAyADKAIAIAJqIgU2AgAgACAAKAIsIgE2AgQgACABIAAoAjAiACAEIAJrIgQgBCAASxsiAGo2AgggASADKAIMIAVqIAAQJBogAyADKAIAIABqNgIAIAILiwEBAX8jAEEQayIDJAACfgJAIAJBA08NACAAKAJUIQAgA0EANgIEIAMgACgCADYCCCADIAAoAgQ2AgxBACADQQRqIAJBAnRqKAIAIgJrrCABVQ0AIAAoAgggAmusIAFTDQAgACACIAGnaiIANgIAIACtDAELQYSnBEEcNgIAQn8LIQEgA0EQaiQAIAELwQIBA39BgAghAkGkCEErEKUDIQMCQAJAQfWiBEGkCCwAABClA0UEQEGEpwRBHDYCAAwBCyAAQQFyRQRAQYSnBEEwNgIADAELQawJQawRIAAbEIQJIgENAQtBAA8LIAFB/wE6AEsgAUF/NgI8IAFBgAg2AjAgAUGACDYCmAEgASABQZABajYCVCABIAFBrAFqNgIsIAEgACABQawJaiAAGyIANgKcASABQaQILAAANgKgASADRQRAIAFBCEEEQaQILQAAQfIARhs2AgALAkBBpAgtAAAiA0HyAEcEQCADQeEARw0BIAEgAEEAQYAIEIECIgIgAGtBgAggAhsiAjYCkAELIAEgAjYClAELIAFB8AI2AiggAUHxAjYCJCABQfICNgIgIAFB8wI2AgxBjKcEKAIARQRAIAFBfzYCTAsgARCTCQspACABIAEoAgBBD2pBcHEiAUEQajYCACAAIAEpAwAgASkDCBDXBTkDAAv+FgMSfwJ+AXwjAEGwBGsiCSQAIAlBADYCLAJ/IAG9IhhCf1cEQEEBIRIgAZoiAb0hGEHQogQMAQtBA
 
SESQdOiBCAEQYAQcQ0AGkHWogQgBEEBcQ0AGkEAIRJBASETQdGiBAshFQJAIBhCgICAgICAgPj/AINCgICAgICAgPj/AFEEQCAAQSAgAiASQQNqIg0gBEH//3txEHMgACAVIBIQYSAAQeuiBEHvogQgBUEgcSIDG0HjogRB56IEIAMbIAEgAWIbQQMQYQwBCyAJQRBqIRACQAJ/AkAgASAJQSxqEOQFIgEgAaAiAUQAAAAAAAAAAGIEQCAJIAkoAiwiBkF/ajYCLCAFQSByIhZB4QBHDQEMAwsgBUEgciIWQeEARg0CIAkoAiwhC0EGIAMgA0EASBsMAQsgCSAGQWNqIgs2AiwgAUQAAAAAAACwQaIhAUEGIAMgA0EASBsLIQogCUEwaiAJQdACaiALQQBIGyIPIQgDQCAIAn8gAUQAAAAAAADwQWMgAUQAAAAAAAAAAGZxBEAgAasMAQtBAAsiAzYCACAIQQRqIQggASADuKFEAAAAAGXNzUGiIgFEAAAAAAAAAABiDQALAkAgC0EBSARAIAshAyAIIQYgDyEHDAELIA8hByALIQMDQCADQR0gA0EdSBshDAJAIAhBfGoiBiAHSQ0AIAytIRlCACEYA0AgBiAYQv////8PgyAGNQIAIBmGfCIYIBhCgJTr3AOAIhhCgJTr3AN+fT4CACAGQXxqIgYgB08NAAsgGKciA0UNACAHQXxqIgcgAzYCAAsDQCAIIgYgB0sEQCAGQXxqIggoAgBFDQELCyAJIAkoAiwgDGsiAzYCLCAGIQggA0EASg0ACwsgA0F/TARAIApBGWpBCW1BAWohESAWQeYARiENA0BBCUEAIANrIANBd0gbIRcCQCAHIAZPBEAgByAHQQRqIAcoAgAbIQcMAQtBgJTr3AMgF3YhFEF/IBd0QX9zIQ5BACEDIAchCANAIAggAyAIKAIAIgwgF3ZqNgIAIAwgDnEgFGwhAyAIQQRqIgggBkkNAAsgByAHQQ
 
RqIAcoAgAbIQcgA0UNACAGIAM2AgAgBkEEaiEGCyAJIAkoAiwgF2oiAzYCLCAPIAcgDRsiCCARQQJ0aiAGIAYgCGtBAnUgEUobIQYgA0EASA0ACwtBACEIAkAgByAGTw0AIA8gB2tBAnVBCWwhCEEKIQMgBygCACIMQQpJDQADQCAIQQFqIQggDCADQQpsIgNPDQALCyAKQQAgCCAWQeYARhtrIBZB5wBGIApBAEdxayIDIAYgD2tBAnVBCWxBd2pIBEAgA0GAyABqIg5BCW0iDEECdCAJQTBqQQRyIAlB1AJqIAtBAEgbakGAYGohDUEKIQMgDiAMQQlsayIOQQdMBEADQCADQQpsIQMgDkEBaiIOQQhHDQALCwJAQQAgBiANQQRqIhFGIA0oAgAiDiAOIANuIgwgA2xrIhQbDQBEAAAAAAAA4D9EAAAAAAAA8D9EAAAAAAAA+D8gFCADQQF2IgtGG0QAAAAAAAD4PyAGIBFGGyAUIAtJGyEaRAEAAAAAAEBDRAAAAAAAAEBDIAxBAXEbIQECQCATDQAgFS0AAEEtRw0AIBqaIRogAZohAQsgDSAOIBRrIgs2AgAgASAaoCABYQ0AIA0gAyALaiIDNgIAIANBgJTr3ANPBEADQCANQQA2AgAgDUF8aiINIAdJBEAgB0F8aiIHQQA2AgALIA0gDSgCAEEBaiIDNgIAIANB/5Pr3ANLDQALCyAPIAdrQQJ1QQlsIQhBCiEDIAcoAgAiC0EKSQ0AA0AgCEEBaiEIIAsgA0EKbCIDTw0ACwsgDUEEaiIDIAYgBiADSxshBgsDQCAGIgsgB00iDEUEQCALQXxqIgYoAgBFDQELCwJAIBZB5wBHBEAgBEEIcSETDAELIAhBf3NBfyAKQQEgChsiBiAISiAIQXtKcSIDGyAGaiEKQX9BfiADGyAFaiEFIARBCHEiEw0AQXchBgJAIAwNACALQXxqKAIAIgxFDQBBCiEOQQAhBiAMQQp
 
wDQADQCAGIgNBAWohBiAMIA5BCmwiDnBFDQALIANBf3MhBgsgCyAPa0ECdUEJbCEDIAVBX3FBxgBGBEBBACETIAogAyAGakF3aiIDQQAgA0EAShsiAyAKIANIGyEKDAELQQAhEyAKIAMgCGogBmpBd2oiA0EAIANBAEobIgMgCiADSBshCgsgCiATciIUQQBHIQ4gAEEgIAICfyAIQQAgCEEAShsgBUFfcSIMQcYARg0AGiAQIAggCEEfdSIDaiADc60gEBChAiIGa0EBTARAA0AgBkF/aiIGQTA6AAAgECAGa0ECSA0ACwsgBkF+aiIRIAU6AAAgBkF/akEtQSsgCEEASBs6AAAgECARawsgCiASaiAOampBAWoiDSAEEHMgACAVIBIQYSAAQTAgAiANIARBgIAEcxBzAkACQAJAIAxBxgBGBEAgCUEQakEIciEDIAlBEGpBCXIhCCAPIAcgByAPSxsiBSEHA0AgBzUCACAIEKECIQYCQCAFIAdHBEAgBiAJQRBqTQ0BA0AgBkF/aiIGQTA6AAAgBiAJQRBqSw0ACwwBCyAGIAhHDQAgCUEwOgAYIAMhBgsgACAGIAggBmsQYSAHQQRqIgcgD00NAAsgFARAIABB86IEQQEQYQsgCkEBSCAHIAtPcg0BA0AgBzUCACAIEKECIgYgCUEQaksEQANAIAZBf2oiBkEwOgAAIAYgCUEQaksNAAsLIAAgBiAKQQkgCkEJSBsQYSAKQXdqIQYgB0EEaiIHIAtPDQMgCkEJSiEDIAYhCiADDQALDAILAkAgCkEASA0AIAsgB0EEaiALIAdLGyEFIAlBEGpBCHIhAyAJQRBqQQlyIQsgByEIA0AgCyAINQIAIAsQoQIiBkYEQCAJQTA6ABggAyEGCwJAIAcgCEcEQCAGIAlBEGpNDQEDQCAGQX9qIgZBMDoAACAGIAlBEGpLDQALDAELIAAgBkEBEGEgBkEBaiEGIBNFQQAgCkEBSBsN
 
ACAAQfOiBEEBEGELIAAgBiALIAZrIgYgCiAKIAZKGxBhIAogBmshCiAIQQRqIgggBU8NASAKQX9KDQALCyAAQTAgCkESakESQQAQcyAAIBEgECARaxBhDAILIAohBgsgAEEwIAZBCWpBCUEAEHMLDAELIBVBCWogFSAFQSBxIgsbIQoCQCADQQtLDQBBDCADayIGRQ0ARAAAAAAAACBAIRoDQCAaRAAAAAAAADBAoiEaIAZBf2oiBg0ACyAKLQAAQS1GBEAgGiABmiAaoaCaIQEMAQsgASAaoCAaoSEBCyAQIAkoAiwiBiAGQR91IgZqIAZzrSAQEKECIgZGBEAgCUEwOgAPIAlBD2ohBgsgEkECciEPIAkoAiwhCCAGQX5qIgwgBUEPajoAACAGQX9qQS1BKyAIQQBIGzoAACAEQQhxIQggCUEQaiEHA0AgByIFAn8gAZlEAAAAAAAA4EFjBEAgAaoMAQtBgICAgHgLIgZBwKIEai0AACALcjoAACAFQQFqIgcgCUEQamtBAUcgCCADQQBKckVBACABIAa3oUQAAAAAAAAwQKIiAUQAAAAAAAAAAGEbckUEQCAFQS46AAEgBUECaiEHCyABRAAAAAAAAAAAYg0ACyAAQSAgAiAPIBAgCUEQamsgDGsgB2ogAyAQaiAMa0ECaiADRSAHIAlrQW5qIANOchsiA2oiDSAEEHMgACAKIA8QYSAAQTAgAiANIARBgIAEcxBzIAAgCUEQaiAHIAlBEGprIgUQYSAAQTAgAyAFIBAgDGsiA2prQQBBABBzIAAgDCADEGELIABBICACIA0gBEGAwABzEHMgCUGwBGokACACIA0gDSACSBsLLQAgAFBFBEADQCABQX9qIgEgAKdBB3FBMHI6AAAgAEIDiCIAQgBSDQALCyABCzUAIABQRQRAA0AgAUF/aiIBIACnQQ9xQcCiBGotAAAgAnI6AAAgAEIEiCIAQgBSDQALCyABC4sCAAJAI
 
AAEfyABQf8ATQ0BAkBBkKUEKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDwsgAUGAsANPQQAgAUGAQHFBgMADRxtFBEAgACABQT9xQYABcjoAAiAAIAFBDHZB4AFyOgAAIAAgAUEGdkE/cUGAAXI6AAFBAw8LIAFBgIB8akH//z9NBEAgACABQT9xQYABcjoAAyAAIAFBEnZB8AFyOgAAIAAgAUEGdkE/cUGAAXI6AAIgACABQQx2QT9xQYABcjoAAUEEDwsLQYSnBEEZNgIAQX8FQQELDwsgACABOgAAQQELEwAgAEHQ1gFBABAVQoCAgIDgAAsiAQF/IwBBEGsiAiQAIAIgATYCDCAAIAEQngkgAkEQaiQAC4sBAQJ/IwBBoAFrIgIkACACQQhqQcCdBEGQARAkGiACIAA2AjQgAiAANgIcIAJBfiAAayIDQf////8HQf////8HIANLGyIDNgI4IAIgACADaiIANgIkIAIgADYCGCACQQhqQZ4ZIAEQmwQgAwRAIAIoAhwiACAAIAIoAhhGa0EAOgAACyACQaABaiQACzMBAX8gACgCFCIDIAEgAiAAKAIQIANrIgEgASACSxsiARAkGiAAIAAoAhQgAWo2AhQgAguRAQEEfyAAKAJMQQBOBEBBASECCyAAKAIAQQFxIgRFBEAgACgCNCIBBEAgASAAKAI4NgI4CyAAKAI4IgMEQCADIAE2AjQLIABB0KcEKAIARgRAQdCnBCADNgIACwsgABDmBRogACAAKAIMEQQAGiAAKAJgIgEEQCABEP8BCwJAIARFBEAgABD/AQwBCyACRQ0ACwt6AQF/IAAoAkxBAEgEQAJAIAAsAEtBCkYNACAAKAIUIgEgACgCEE8NACAAIAFBAWo2AhQgAUEKOgAADwsgABDRBQ8LAkACQCAALABLQQpGDQAgACgCFCIBIA
 
AoAhBPDQAgACABQQFqNgIUIAFBCjoAAAwBCyAAENEFCwtCAQF+IwBBEGsiAiQAQoCAgIDgACEEIAAgAkEIaiADKQMAEMIBRQRAIAAgASACKQMIQRQQ4wMhBAsgAkEQaiQAIAQLBQAgAJ0LywEBAn8jAEEQayIBJAACQCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEAgAkGAgMDyA0kNASAARAAAAAAAAAAAQQAQ0wIhAAwBCyACQYCAwP8HTwRAIAAgAKEhAAwBCwJAAkACQAJAIAAgARChBEEDcQ4DAAECAwsgASsDACABKwMIQQEQ0wIhAAwDCyABKwMAIAErAwgQ0gIhAAwCCyABKwMAIAErAwhBARDTApohAAwBCyABKwMAIAErAwgQ0gKaIQALIAFBEGokACAAC7oCAwF/AX4DfAJAAkAgAL0iAkIgiKdB/////wdxIgFBgIDA/wNPBEAgAqcgAUGAgMCAfGpyDQEgAEQYLURU+yH5P6JEAAAAAAAAcDigDwsgAUH////+A00EQCABQYCAQGpBgICA8gNJDQIgACAAohDUAiAAoiAAoA8LRAAAAAAAAPA/IACZoUQAAAAAAADgP6IiBJ8hACAEENQCIQUCfCABQbPmvP8DTwRARBgtRFT7Ifk/IAAgACAFoqAiACAAoEQHXBQzJqaRvKChDAELRBgtRFT7Iek/IAC9QoCAgIBwg78iAyADoKEgACAAoCAFokQHXBQzJqaRPCAEIAMgA6KhIAAgA6CjIgAgAKChoaFEGC1EVPsh6T+gCyIAIACaIAJCf1UbDwtEAAAAAAAAAAAgACAAoaMhAAsgAAt2AQF/IAC9QjSIp0H/D3EiAUH/B00EQCAARAAAAAAAAPC/oCIAIAAgAKIgACAAoKCfoBCkAw8LIAFBmAhNBEAgACAAoEQAAAAAAADwvyAAIACiRAAAAAAAAPC/oJ8gAKCjoBDRAg8LIAAQ0QJE7zn6/kIu5j+gCwU
 
AIACcC5sBAgF/AX4gAL1C////////////AIMiAr8hAAJ8IAJCIIinIgFBwdyY/wNNBEBEAAAAAAAA8D8gAUGAgMDyA0kNARogABCiAiIAIACiIABEAAAAAAAA8D+gIgAgAKCjRAAAAAAAAPA/oA8LIAFBwdyYhARNBEAgABCiBCIARAAAAAAAAPA/IACjoEQAAAAAAADgP6IPCyAAEOoFCwsFACAAmwuEAQECfyMAQRBrIgEkAAJAIAC9QiCIp0H/////B3EiAkH7w6T/A00EQCACQYCAgPIDSQ0BIABEAAAAAAAAAABBABDnBSEADAELIAJBgIDA/wdPBEAgACAAoSEADAELIAAgARChBCECIAErAwAgASsDCCACQQFxEOcFIQALIAFBEGokACAAC7wCAwN/A34BfCMAQSBrIgIkACAAvUL///////////8AgyIFIAG9Qv///////////wCDIgYgBSAGVBsiB78hAAJAIAdCNIinIgNB/w9GDQAgBSAGIAUgBlYbIgW/IQECQCAHUA0AIAVCNIinIgRB/w9GDQAgBCADa0HBAE4EQCABIACgIQAMAgsCfCAEQf4LTwRAIABEAAAAAAAAMBSiIQAgAUQAAAAAAAAwFKIhAUQAAAAAAACwawwBC0QAAAAAAADwPyADQbwESw0AGiAARAAAAAAAALBroiEAIAFEAAAAAAAAsGuiIQFEAAAAAAAAMBQLIQggAkEYaiACQRBqIAEQ6QUgAkEIaiACIAAQ6QUgCCACKwMAIAIrAxCgIAIrAwigIAIrAxign6IhAAwBCyABIQALIAJBIGokACAAC60DAgV/AX4gAb1C////////////AINCgICAgICAgPj/AFhBACAAvUL///////////8Ag0KBgICAgICA+P8AVBtFBEAgACABoA8LIAG9IgdCIIinIgJBgIDAgHxqIAenIgVyRQRAIAAQoAQPCyAHQj6Ip0ECcSIGIAC9IgdCP4in
 
ciEDAkACQCAHQiCIp0H/////B3EiBCAHp3JFBEACQCADQQJrDgICAAMLRBgtRFT7IQnADwsgAkH/////B3EiAiAFckUEQEQYLURU+yH5PyAApg8LAkAgAkGAgMD/B0YEQCAEQYCAwP8HRw0BIANBA3RBkJwEaisDAA8LIARBgIDA/wdHQQAgAkGAgIAgaiAETxtFBEBEGC1EVPsh+T8gAKYPCwJ8IAYEQEQAAAAAAAAAACAEQYCAgCBqIAJJDQEaCyAAIAGjmRCgBAshAAJAAkACQCADDgMFAAECCyAAmg8LRBgtRFT7IQlAIABEB1wUMyamobygoQ8LIABEB1wUMyamobygRBgtRFT7IQnAoA8LIANBA3RBsJwEaisDAA8LRBgtRFT7IQlAIQALIAALxwEBAn8jAEEQayIBJAACfCAAvUIgiKdB/////wdxIgJB+8Ok/wNNBEBEAAAAAAAA8D8gAkGewZryA0kNARogAEQAAAAAAAAAABDSAgwBCyAAIAChIAJBgIDA/wdPDQAaAkACQAJAAkAgACABEKEEQQNxDgMAAQIDCyABKwMAIAErAwgQ0gIMAwsgASsDACABKwMIQQEQ0wKaDAILIAErAwAgASsDCBDSApoMAQsgASsDACABKwMIQQEQ0wILIQAgAUEQaiQAIAALQAEBfiMAQRBrIgIkAEKAgICA4AAhBCAAIAJBCGogAykDABDCAUUEQCAAIAEgAikDCBD/AiEECyACQRBqJAAgBAu8DgIQfwJ8IwBBsARrIgYkACACIAJBfWpBGG0iBEEAIARBAEobIg1BaGxqIQhB9IUEKAIAIgkgA0F/aiIHakEATgRAIAMgCWohBCANIAdrIQIDQCAGQcACaiAFQQN0aiACQQBIBHxEAAAAAAAAAAAFIAJBAnRBgIYEaigCALcLOQMAIAJBAWohAiAFQQFqIgUgBEcNAAsLIAhBaGohCkEAIQQgCUEAIAlBAEobIQUgA0EBS
 
CELA0ACQCALBEBEAAAAAAAAAAAhFAwBCyAEIAdqIQxBACECRAAAAAAAAAAAIRQDQCAUIAAgAkEDdGorAwAgBkHAAmogDCACa0EDdGorAwCioCEUIAJBAWoiAiADRw0ACwsgBiAEQQN0aiAUOQMAIAQgBUYhAiAEQQFqIQQgAkUNAAtBLyAIayEQQTAgCGshDiAIQWdqIREgCSEEAkADQCAGIARBA3RqKwMAIRRBACECIAQhBSAEQQFIIgdFBEADQCAGQeADaiACQQJ0agJ/IBQCfyAURAAAAAAAAHA+oiIUmUQAAAAAAADgQWMEQCAUqgwBC0GAgICAeAu3IhREAAAAAAAAcMGioCIVmUQAAAAAAADgQWMEQCAVqgwBC0GAgICAeAs2AgAgBiAFQX9qIgVBA3RqKwMAIBSgIRQgAkEBaiICIARHDQALCwJ/IBQgChDJASIUIBREAAAAAAAAwD+inEQAAAAAAAAgwKKgIhSZRAAAAAAAAOBBYwRAIBSqDAELQYCAgIB4CyELIBQgC7ehIRQCQAJAAkACfyAKQQFIIhJFBEAgBEECdCAGaiICIAIoAtwDIgIgAiAOdSICIA50ayIFNgLcAyACIAtqIQsgBSAQdQwBCyAKDQEgBEECdCAGaigC3ANBF3ULIgxBAUgNAgwBC0ECIQwgFEQAAAAAAADgP2ZBAXNFDQBBACEMDAELQQAhAkEAIQUgB0UEQANAIAZB4ANqIAJBAnRqIhMoAgAhD0H///8HIQcCfwJAIAUNAEGAgIAIIQcgDw0AQQAMAQsgEyAHIA9rNgIAQQELIQUgAkEBaiICIARHDQALCwJAIBINAAJAAkAgEQ4CAAECCyAEQQJ0IAZqIgIgAigC3ANB////A3E2AtwDDAELIARBAnQgBmoiAiACKALcA0H///8BcTYC3AMLIAtBAWohCyAMQQJHDQBEAAAAAAAA8D8gFKEhFEECIQwgBUUNACAURAAAAAAAAPA/IA
 
oQyQGhIRQLIBREAAAAAAAAAABhBEBBACEFAkAgBCICIAlMDQADQCAGQeADaiACQX9qIgJBAnRqKAIAIAVyIQUgAiAJSg0ACyAFRQ0AIAohCANAIAhBaGohCCAGQeADaiAEQX9qIgRBAnRqKAIARQ0ACwwDC0EBIQIDQCACIgVBAWohAiAGQeADaiAJIAVrQQJ0aigCAEUNAAsgBCAFaiEFA0AgBkHAAmogAyAEaiIHQQN0aiAEQQFqIgQgDWpBAnRBgIYEaigCALc5AwBBACECRAAAAAAAAAAAIRQgA0EBTgRAA0AgFCAAIAJBA3RqKwMAIAZBwAJqIAcgAmtBA3RqKwMAoqAhFCACQQFqIgIgA0cNAAsLIAYgBEEDdGogFDkDACAEIAVIDQALIAUhBAwBCwsCQCAUQQAgCmsQyQEiFEQAAAAAAABwQWZBAXNFBEAgBkHgA2ogBEECdGoCfyAUAn8gFEQAAAAAAABwPqIiFJlEAAAAAAAA4EFjBEAgFKoMAQtBgICAgHgLIgK3RAAAAAAAAHDBoqAiFJlEAAAAAAAA4EFjBEAgFKoMAQtBgICAgHgLNgIAIARBAWohBAwBCwJ/IBSZRAAAAAAAAOBBYwRAIBSqDAELQYCAgIB4CyECIAohCAsgBkHgA2ogBEECdGogAjYCAAtEAAAAAAAA8D8gCBDJASEUAkAgBEF/TA0AIAQhAgNAIAYgAkEDdGogFCAGQeADaiACQQJ0aigCALeiOQMAIBREAAAAAAAAcD6iIRQgAkEASiEAIAJBf2ohAiAADQALQQAhByAEQQBIDQAgCUEAIAlBAEobIQAgBCEFA0AgACAHIAAgB0kbIQMgBCAFayEIQQAhAkQAAAAAAAAAACEUA0AgFCACQQN0QdCbBGorAwAgBiACIAVqQQN0aisDAKKgIRQgAiADRyEKIAJBAWohAiAKDQALIAZBoAFqIAhBA3RqIBQ5AwAgBUF/aiEFIAQgB0chAiA
 
HQQFqIQcgAg0ACwtEAAAAAAAAAAAhFCAEQQBOBEAgBCECA0AgFCAGQaABaiACQQN0aisDAKAhFCACQQBKIQAgAkF/aiECIAANAAsLIAEgFJogFCAMGzkDACAGKwOgASAUoSEUQQEhAiAEQQFOBEADQCAUIAZBoAFqIAJBA3RqKwMAoCEUIAIgBEchACACQQFqIQIgAA0ACwsgASAUmiAUIAwbOQMIIAZBsARqJAAgC0EHcQuwAgMBfwF+AXwCQCAAvSICQiCIp0H/////B3EiAUGAgMD/A08EQCACpyABQYCAwIB8anJFDQFEAAAAAAAAAAAgACAAoaMPCwJ8IAFB/////gNNBEBEGC1EVPsh+T8gAUGBgIDjA0kNARpEB1wUMyamkTwgACAAohDUAiAAoqEgAKFEGC1EVPsh+T+gDwsgAkJ/VwRARBgtRFT7Ifk/IABEAAAAAAAA8D+gRAAAAAAAAOA/oiIAnyIDIAMgABDUAqJEB1wUMyamkbygoKEiACAAoA8LRAAAAAAAAPA/IAChRAAAAAAAAOA/oiIAnyIDIAAQ1AKiIAAgA71CgICAgHCDvyIAIACioSADIACgo6AgAKAiACAAoAsPC0QAAAAAAAAAAEQYLURU+yEJQCACQn9VGwuHAQMBfwF+AXwgAL0iAkL///////////8Ag78hAAJAAnwgAkI0iKdB/w9xIgFB/QdNBEAgAUHfB0kNAiAAIACgIgMgAyAAokQAAAAAAADwPyAAoaOgDAELIABEAAAAAAAA8D8gAKGjIgAgAKALEKQDRAAAAAAAAOA/oiEACyAAIACaIAJCf1UbC54BAwF/AX4CfEQAAAAAAADgPyAApiEEIAC9Qv///////////wCDIgK/IQMCQCACQiCIpyIBQcHcmIQETQRAIAMQogIhAyABQf//v/8DTQRAIAFBgIDA8gNJDQIgBCADIAOgIAMgA6IgA0QAAAAAAADwP6CjoaIPCyAEIAMg
 
AyADRAAAAAAAAPA/oKOgog8LIAQgBKAgAxDqBaIhAAsgAAsFACAAmQsFACAAnwveAQIBfwJ+IAC9IgJC////////////AIMiA78hAAJAIANCIIinIgFB66eG/wNPBEAgAUGBgNCBBE8EQEQAAAAAAAAAgCAAo0QAAAAAAADwP6AhAAwCC0QAAAAAAADwP0QAAAAAAAAAQCAAIACgEKICRAAAAAAAAABAoKOhIQAMAQsgAUGvscH+A08EQCAAIACgEKICIgAgAEQAAAAAAAAAQKCjIQAMAQsgAUGAgMAASQ0AIABEAAAAAAAAAMCiEKICIgCaIABEAAAAAAAAAECgoyEACyAAIACaIAJCf1UbC/YEAgN/B34jAEEgayIFJABCgICAgOAAIQ0CQCAAIAEgBEEfahBsIgEQDA0AQoCAgIAwIQgCQAJAIABBHBBqIgZFBEBCgICAgDAhC0KAgICAMCEKDAELIAZBBGoQbiAGIARBAXZBAXE2AgAgASAGEIcBIAZBATYCFCAGIABBCBAuIgc2AhBCgICAgDAhC0KAgICAMCEKIAdFDQAgBxBuIAZBBDYCGCACQQFIBH5CgICAgDAFIAMpAwALIggQEQ0BIAgQKg0BQQEhAgJAAkAgACABQegAQcIAIARBAXEiAxsgAUEAEBMiChAMDQAgACAKEDtFBEAgAEHg4gBBABAVDAELIAAgCEEAEPMBIggQDA0BIAAgCEHqACAIQQAQEyILEAwNAQNAIAUgACAIIAsgBUEUahCsASIJNwMYIAkQDA0CIAUoAhQEQCAAIAkQCyAAIAsQCyAAIAgQCyAAIAoQC0EAIQIMAwsCQAJAIAMEQCAAIAogAUEBIAVBGGoQIyIOEAxFDQEgACAFKQMYEAsMBQsCQAJAIAkQIUUEQCAAECdCgICAgDAhCQwBCyAAIAlBABB4IgkQDEUNAQtCgICAgDAhDAwCCyAAIAUpAxhBARB4IgwQDA0BIAUgDDcDC
 
CAFIAk3AwAgACAKIAFBAiAFECMiDhAMDQEgACAJEAsgACAMEAsLIAAgDhALIAAgBSkDGBALDAELCyAAIAUpAxgQCyAAIAkQCyAAIAwQCwwBC0KAgICAMCEICyACRQ0BCyAIECEEQCAAIAhBARCwARoLIAAgCxALIAAgCBALIAAgChALIAAgARALDAELIAEhDQsgBUEgaiQAIA0LgwIDAn8BfgF8IAC9IgNCIIinQf////8HcSIBQYCAwP8HTwRAIAAgAKAPC0GT8f3UAiECAkAgAUH//z9NBEBBk/H9ywIhAiAARAAAAAAAAFBDor0iA0IgiKdB/////wdxIgFFDQELIAAgA0KAgICAgICAgIB/gyABQQNuIAJqrUIghoS/IgQgBKIgBCAAo6IiACAAIACioiAARNft5NQAsMI/okTZUee+y0Tov6CiIAAgAETC1klKYPH5P6JEICTwkuAo/r+gokSS5mEP5gP+P6CgIASivUKAgICACHxCgICAgHyDvyIAIACioyIEIAChIAAgAKAgBKCjIACiIACgIQALIAALsgEDAX8BfgF8IAC9IgJC////////////AIO/IQACQCACQjSIp0H/D3EiAUGZCE8EQCAAENECRO85+v5CLuY/oCEADAELIAFBgAhPBEAgACAAoEQAAAAAAADwPyAAIACiRAAAAAAAAPA/oJ8gAKCjoBDRAiEADAELIAFB5QdJDQAgACAAoiIDIANEAAAAAAAA8D+gn0QAAAAAAADwP6CjIACgEKQDIQALIAAgAJogAkJ/VRsLyAEBAX8CQAJAIAAgAXNBA3ENACABQQNxBEADQCAAIAEtAAAiAjoAACACRQ0DIABBAWohACABQQFqIgFBA3ENAAsLIAEoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENAANAIAAgAjYCACABKAIEIQIgAEEEaiEAIAFBBGohASACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLIA
 
AgAS0AACICOgAAIAJFDQADQCAAIAEtAAEiAjoAASAAQQFqIQAgAUEBaiEBIAINAAsLC9kBAQJ/AkAgAUH/AXEiAwRAIABBA3EEQANAIAAtAAAiAkUgAiABQf8BcUZyDQMgAEEBaiIAQQNxDQALCwJAIAAoAgAiAkF/cyACQf/9+3dqcUGAgYKEeHENACADQYGChAhsIQMDQCACIANzIgJBf3MgAkH//ft3anFBgIGChHhxDQEgACgCBCECIABBBGohACACQf/9+3dqIAJBf3NxQYCBgoR4cUUNAAsLA0AgACICLQAAIgMEQCACQQFqIQAgAyABQf8BcUcNAQsLIAIPCyAAEEMgAGoPCyAACyYBAX8DQCABRQRAQQAPCyAAIAFBf2oiAWoiAi0AAEEvRw0ACyACC/IIAQJ/IwBBoARrIgIkAEF+IQMCQEGQvwIgARCkBCIBQQBIDQACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAUFeag4TAAcBAgYQDg0RDwwICRIEAwULChMLQX8hA0EAIABBAEGAARCBAUUNExoMFAtBfyEDQQAgAEEAQYCAxAAQgQFFDRIaDBMLIAJChoCAgPAANwMIIAJCgICAgBA3AwAgACACEIABDBELIAJCg4CAgPAANwMgIAJCgYCAgBA3AxggAkKAgICAgIAENwMQIAAgAkEQahCAAQwQCyACQUBrQoOAgIDwADcDACACQoGAgIAwNwM4IAJCgICAgMAANwMwIAAgAkEwahCAAQwPCyACQoOAgIDwADcDYCACQoGAgIDAADcDWCACQoCAgIAgNwNQIAAgAkHQAGoQgAEMDgsgAkEHNgKQASACQoOAgIAwNwOIASACQoOAgIAQNwOAASACQoGAgIDAADcDeCACQoCAgIDgATcDcCAAIAJB8ABqEIABDA0LIAJCg4CAgPAANwPIASACQoGAgIAgNwPAASACQoOAgIA
 
wNwO4ASACQoOAgIAQNwOwASACQoGAgIDAADcDqAEgAkKAgICA4IcBNwOgASAAIAJBoAFqEIABDAwLIAJBBzYC6AEgAkKDgICA4AA3A+ABIAJCgYCAgNAANwPYASACQoCAgICQqICAPzcD0AEgACACQdABahCAAQwLCyACQoOAgIDwADcDgAIgAkKBgICA0AA3A/gBIAJCgICAgIAoNwPwASAAIAJB8AFqEIABDAoLIAJChICAgPAANwPIAiACQoOAgIDgADcDwAIgAkKBgICAsAE3A7gCIAJCnoCAgDA3A7ACIAJCnYCAgBA3A6gCIAJCg4CAgBA3A6ACIAJCgYCAgPAANwOYAiACQoCAgIDghwE3A5ACIAAgAkGQAmoQgAEMCQsgAkEHNgKYAyACQoaAgIDAADcDkAMgAkKMgICAMDcDiAMgAkKDgICAEDcDgAMgAkKBgICA4AM3A/gCIAJCgYCAgNADNwPwAiACQoiAgIAwNwPoAiACQoOAgIAQNwPgAiACQoGAgIDwADcD2AIgAkKAgICA4N/BADcD0AIgACACQdACahCAAQwICyAAQQEQqQMMBwsgAEECEKkDDAYLIABBBxCpAwwFCyACQoWAgIDwADcDsAMgAkKBgICA0AE3A6gDIAJCgoCAgBA3A6ADIAAgAkGgA2oQgAEMBAsgAkKFgICA8AA3A9ADIAJCgYCAgOABNwPIAyACQoKAgIDAADcDwAMgACACQcADahCAAQwDCyACQoWAgIDwADcD8AMgAkKBgICA8AE3A+gDIAJCgoCAgMAANwPgAyAAIAJB4ANqEIABDAILIAJChYCAgPAANwOQBCACQoGAgICgATcDiAQgAkKBgICAgAY3A4AEIAAgAkGABGoQgAEMAQsgAUEhSw0BIAAgAUEQahDuBQshAwsgAkGgBGokACADC9AFAQx/IwBBMGsiBSQAAkACQEGAjQIgARCkBCIJQQBIBEBBfiEMDAELIAAhASAC
 
BEAgBUEYaiAAKAIMIAAoAhAQkwEgBSAAKAIMIAAoAhAQkwEgBUEYaiEBCyAJQQFqIQ1B8J4CIQQDQCAEQaGzAkkEQCADIQcgBEEBaiEGAkAgBC0AACIKQf8AcSIDQeAASQRAIAYhCAwBCwJ/IANB7wBNBEAgA0EIdEGAwH5qIQNB4AAhC0ECDAELIANBEHQgBC0AAUEIdHJBgIDAfGohAyAEQQJqIQZB4CAhC0EDCyAEaiEIIAMgBi0AAHIgC2ohAwsgCkGAAXFFBEAgAyAHakEBaiEDIAghBAwCCyAIQQFqIQQgAyAHakEBaiEDIA0gCC0AAEcNASABIAcgAxCBAUUNAQwDCwsgAkUNAEGwswIhBCAJQTZGIQ4gCUEYRyELQQAhBgNAIARBz7kCSQRAIAYhCiAEQQFqIQcgBCwAACIIQf8BcSEDIAhBf0oEfyAHBQJ/IAhB/wFxQb8BTQRAIANBCHRBgIB+aiEDQQIhBkGAAQwBCyADQRB0IAQtAAFBCHRyQYCAgHpqIQMgBEECaiEHQQMhBkGAgQELIAMgBy0AAHJqIQMgBCAGagsiBEEBaiEHIAMgCmpBAWohBiAELQAAIQMCQAJAIA5FBEBBACEEIAsNAQsgA0UNASAFIAogBhCBAUUNAQwFCwNAIAMgBEYNASAEIAdqIQggBEEBaiEEIA0gCC0AAEcNAAsgBSAKIAYQgQENBAsgAyAHaiEEDAELCwJAIAlBNkdBACAJQRhHG0UEQCAFENYCDQMgACABKAIIIAEoAgAgBSgCCCAFKAIAQQEQ1wJFDQEMAwsgACABKAIIIAEoAgAgBSgCCCAFKAIAQQAQ1wINAgsgARBVIAUQVQsgBUEwaiQAIAwPCwNAIAJFDQAgARBVIAUQVQwACwALtwEBCH8jAEEQayIDJABBsAchBQNAAkAgBiAFSgRAQQAhBAwBCyADQQhqIAUgBmpBAm0iB0EBdEGQtwNqLwEAIgRBBnYiCEECd
 
EGwxwJqKAIAIgJBDnYiCSAEQT9xaiIEIAggCSACQQd2Qf8AcSACQQF2QT9xEO0FGiAAIAMoAghrIgIgASADKAIMayACGyICQX9MBEAgB0F/aiEFDAILIAJFDQAgB0EBaiEGDAELCyADQRBqJAAgBAuBAQEGf0GxBSEEAkADQCADIARKDQEgAyAEakECbSIFQQJ0QbDHAmooAgAiBkEOdiIIIAFLBEAgBUF/aiEEDAELIAZBB3ZB/wBxIgMgCGogAU0EQCAFQQFqIQMMAQsLIAZBAXEgAksNACAAIAEgBSAIIAMgBkEBdkE/cRDtBSEHCyAHC2YBAX8gAEGAXmpBEksgAUGfXWpBFEtyRQRAIABBzARsIAFBHGxqQeTy3n5qDwsCQCAAQYCofWoiAkGj1wBLDQAgAkH//wNxQRxwIAFB2VxqIgJBG0tyDQAgACACag8LIAAgARC+CQuzAQEHfyABQX9qIQYDQAJAIAMgAUgEQCAAIAMiAkECdGooAgAQ1QJFDQEDQCACIAZGBEAgASEDDAMLIAAgAkEBaiIEQQJ0aigCACIHENUCIggEQANAAkAgAiADSA0AIAAgAkECdGoiBSgCABDVAiAITA0AIAUgBSgCADYCBCACQX9qIQIMAQsLIAJBAnQgAGogBzYCBCAEIQIMAQUgBCEDDAMLAAsACw8LIANBAWohAwwACwALiwMBBn8jAEEgayIFJAAgBUEIaiAEQSsQsQMCQAJAAkACQCAFQQhqIAJBAnQiBxDmAUUEQCADRQRAQQAhBCACQQAgAkEAShshCANAIAQgCEYNBCAEQQJ0IQYgBEEBaiEEIAEgBmooAgBB/wFNDQALCyAFQQhqIAEgAiADQQF2EPIFIAUoAhRFDQELIABBADYCAEF/IQIMAwsgBSgCCCIBIAUoAgwiBEECdiICEMEJIANBAXEgBEEISXINASACQQEgAkEBSxshCUEBIQNBASECA0AgAyAJRg0CIAEgA0
 
ECdGoiBygCABDVAiEIIAIhBAJAAkADQCAEQQFIDQEgASAEQX9qIgRBAnRqIgYoAgAQ1QIiCgRAIAogCEghBkGAAiEIIAYNAQwCCwsgBigCACAHKAIAEMAJIgRFDQAgBiAENgIADAELIAEgAkECdGogBygCADYCACACQQFqIQILIANBAWohAwwACwALIAAgBSgCCCABIAcQJDYCAAwBCyAAIAE2AgALIAVBIGokACACCzkBAX9BfyECIAAgASgCABCqAwR/QX8FIAAoAgggASgCCCABKAIAQQJ0ECQaIAAgASgCADYCAEEACwvXAQIBfwJ+IwBBIGsiBiQAAkAgBUEBcQRAIAAgASACIAMgBBCkCCEHDAELQoCAgIDgACEHIAAgBkEYaiABQdoAEIQBIgVFDQAgBikDGCEBIAUtABBFBEAgACABEAsgAEGPxABBABAVDAELIAEQEQRAIAAgBSkDACACIAMgBBAjIQcMAQsgACADIAQQhQMiCBAMRQRAIAUpAwAhByAGIAg3AxAgBiACNwMIIAYgBzcDACAAIAEgBSkDCEEDIAYQIyEHCyAAIAEQCyAAIAgQCwsgBkEgaiQAIAcL2QQBBX8jAEGAAWsiBSQAAn8CQAJAIAIoAgAiCC0AAEH7AEYEQCAFQUBrIQQCQAJAA0ACQCAIQQFqIQYgCC0AASIHEK0DRQ0AIAQgBUFAa2tBPksNAiAEIAc6AAAgBEEBaiEEIAYhCAwBCwsgBEEAOgAAIAUhBAJAIAYtAAAiB0E9Rw0AIAhBAmohBgNAIAYtAAAiBxCtA0UNASAEIAVrQT9PBEAgAEGJ5AFBABA/DAcFIAQgBzoAACAEQQFqIQQgBkEBaiEGDAELAAsACyAEQQA6AAAgB0H9AEcEQCAAQajkAUEAED8MBQtBACEEAkACQCAFQUBrQbbkAUEHEHRFDQAgBUFAa0G95AFBAxB0RQ0AQQEhBCAFQUBrQcDkAUESEHRFDQAgBSg
 
CQEHzxuEDRw0BCyABIAAoAkBB6wIQkwEgASAFIAQQvQkiBEUNAiABEFUgBEF+Rw0EIABB0uQBQQAQPwwFCwJAIAVBQGtB6eQBQREQdARAIAVBQGtB+uQBQQMQdA0BCyABIAAoAkBB6wIQkwEgASAFEPAFIgRFDQIgARBVIARBfkcNBCAAQf3kAUEAED8MBQsgBS0AAA0AIAEgACgCQEHrAhCTASABIAVBQGsQ8AUiBEF/RgRAIAEQVQwECyAEQX9KDQEgASAFQUBrELwJIgRFDQEgARBVIARBfkcNAwsgAEGe5QFBABA/DAMLAkAgA0UNACABENYCRQ0AIAEQVQwDCyACIAZBAWo2AgBBAAwDCyAAQfLjAUEAED8MAQsgABDZAgtBfwshBCAFQYABaiQAIAQLjQEBA38gAkEBdEF8cUHE4wFqKAIAIgMvAQAhBCABIAAoAkBB6wIQkwEgAkEBcSEAIANBAmohAyAEQQF0IQRBACECAkACQANAIAIgBEcEQCACQQF0IQUgAkEBaiECIAEgAyAFai8BABD4BUUNAQwCCwtBACECIABFDQEgARDWAkUNAQsgARBVQX8hAgsgAgucAQEEfyMAQSBrIgEkACABQQhqIAAoAgxB6wIQkwEgAULhgICAsA83AgAgAUEIaiAAKAIIIAAoAgAgAUECQQEQ1wIiAkUEQEEAIQIgASgCECEEA0AgAiABKAIIIgNORQRAIAQgAkECdGoiAyADKAIAQWBqNgIAIAJBAWohAgwBCwsgACAEIAMQpQQhAgsgAUEIahBVIAFBIGokACACC/ICAQh/IwBBgAJrIgIkACACQQBB/wEQTCEFQX4hBANAIAcgAUgEQCAAIAdqIgMtAAAiAkHQ5QFqLQAAIQYCQAJAAkACQAJAAkACQAJAIAJBf2oOGwICAgIHBwYGBgYDAwQGBwcHBwUFAAEGBgcGBwYLIAMvAAFBAnQgBmohBgwBCyADLwABQQN0IAZq
 
IQYLQQEgBCAEQX5GGyEEDAQLIAUgAy0AAWoiAiACLQAAQQFyOgAADAMLIAMtAAEiAiADLQACIgMgAiADSxshAwNAIAIgA0YNAyACIAVqIgggCC0AAEEBcjoAACACQQFqIQIMAAsAC0EBIQkgBSADLQABaiICIAItAABBAnI6AAAMAQtBACAEIARBfkYbIQQLIAYgB2ohBwwBCwsCfwJAIAlFDQBBACECA0AgAkH/AUYNASACIAVqIQAgAkEBaiECIAAtAABBA0cNAAtBfwwBC0EAIAQgBEF+RhsLIQAgBUGAAmokACAAC4oBAQZ/A0ACQCADIAFOBEAgBCEFDAELQX8hBSAAIANqIgYtAAAiB0HQ5QFqLQAAIQICQAJAAkACQCAHQX9qDhYCAgICAwMEBAQEBAQEBAQEAwMEBAABBAsgBi8AAUECdCACaiECDAELIAYvAAFBA3QgAmohAgsgBEEBaiEECyACIANqIQMMAQsLIAULxAMBBX8jAEFAaiICJAAgAkEoaiAAKAJAQesCEJMBIAIgASgCACIDQQFqIgQ2AjwgAy0AASIGQd4ARgRAIAIgA0ECaiIENgI8CwJ/AkADQAJAAkAgBC0AAEHdAEcEQCAAIAJBEGogAkE8akEBEKgEIgNBAEgNBAJAAkACQAJAIAIoAjwiBC0AAEEtRw0AIAQtAAFB3QBGDQAgAiAEQQFqNgIMIANBgICAgARPBEAgACgCKEUNASACQRBqEFUMAwsgACACQRBqIAJBDGpBARCoBCIFQQBIDQggBUGAgICABEkNASACQRBqEFUgACgCKA0CCyADQYCAgIAESQ0CIAJBKGogAigCGCACKAIQEKUEIQMgAkEQahBVIANFDQYMBQsgAiACKAIMIgQ2AjwgBSADTw0DCyAAQcriAUEAED8MBQsgAkEoaiADIAMQ+gVFDQMMAgsgACgCLARAIAJBKGoQxwkNAgsgBkHeAEYEQCACQShqENYCDQILI
 
AAgAkEoahD7BQ0DIAJBKGoQVSABIARBAWo2AgBBAAwECyACQShqIAMgBRD6BUUNAQsLIAAQ2QILIAJBKGoQVUF/CyEAIAJBQGskACAAC+kCAQV+IAMpAwghCCAAIAMpAwAiBRDzAyIDQQBOBEACQCABEBFFDQAgABDyAyEBIANFDQAgCBARRQ0AIAAgBUE8IAVBABATIgYQDARAIAYPCyAAIAYgARBYIQIgACAGEAsgAkUNACAFEA4PCwJAAkACQAJAIAAgBUEAENkBIgIEQCACNQIAQoCAgICQf4QQDiEEIAgQEUUNASACNQIEQoCAgICQf4QQDiEGDAMLAkACQCADBEBCgICAgDAhByAAIAVB7AAgBUEAEBMiBBAMDQYgCBARRQ0BIAAgBUHtACAFQQAQEyIHEAxFDQIMBgsgBRAOIQQLIAgQDiEHCyAEEBEEQCAAQS8QMiEEDAILIAAgBBAsIQYgACAEEAsgBiIEEAwNAwwBCyAAIAgQLCIHEAwNAgsgACAEIAcQ9AMiBhAMDQEgACAHEAsLIAAgASAEIAYQrQUPCyAAIAQQCyAAIAcQCwtCgICAgOAAC7kXAQd/IwBBIGsiBCQAIAQgACgCGCIDNgIcAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMtAAAiAkFcag4LAQkJCQQJEhIJCQIACwJAAkAgAkGlf2oOBAcGCAEACyACQYV/ag4DAwkHCAsgBCADQQFqNgIcIABBBRBiDA4LIAQgA0EBajYCHCAAQQYQYgwNCyAEIANBAWo2AhwgACgCNCEHIAAoAgQhAiABRQ0JIABBGxBiIABBBEEDIAAoAjAbEGIgAEEbEGIMCwsgACgCKARAIABBsOABQQAQPwwQCyADLQABEEZFDQUgBCADQQFqNgIIIARBCGpBARDYAhoCQCAEKAIIIgItAAAiA0EsRw0AIAQgAkEBajYCCCACLQABIg
 
MQRkUNACAEQQhqQQEQ2AIaIAQoAggtAAAhAwsgA0H/AXFB/QBHDQUMDgsCQCADLQABQT9GBEBBAyEGQQAhAgJAAkACQAJAIAMtAAIiBUFGag4EAAMBDgILIAAgA0EDajYCGCAAKAI0IQcgACgCBCECQX8hAyAAIAEQrgMNFCAEIAAoAhg2AhwgACAEQRxqQSkQrANFDQ4MFAtBASECQQQhBiADLQADIgVBPUYEQEEBIQgMDQtBASEIIAVBIUYNDCAEIANBA2o2AhwgAEHcAGoiAiAEQRxqIAAoAigQqgQEQCAAQc/gAUEAED8MEwsgACACEP4FQQFOBEAgAEHi4AFBABA/DBMLIABBxABqIAIgAhBDQQFqEJQBGiAAQQE2AjwMAwsgBUEhRg0LCyAAQffgAUEAED8MEAsgBCADQQFqNgIcIABBxABqQQAQDwsgACgCNCIHQf8BTgRAIABBheEBQQAQPwwPCyAAIAdBAWo2AjQgACgCBCECIAAgAUELaiAHENoCIAAgBCgCHDYCGEF/IQMgACABEK4DDQ8gBCAAKAIYNgIcIABBDCABayAHENoCIAAgBEEcakEpEKwDRQ0JDA8LAkACQAJAAkACQAJAAkAgAy0AASICQVBqDhMDBAQEBAQEBAQECgoKCgoKCgoBAAsgAkHrAEYNASACQeIARw0JCyAAQRFBEiACQeIARhsQYiAEIANBAmo2AhwMDgsCQCADLQACQTxHBEBBl+EBIQMgACgCKA0BIAAQqQQNAQwJCyAEIANBA2o2AgggAEHcAGoiAiAEQQhqIAAoAigQqgQEQEHP4AEhAyAAKAIoDQEgABCpBA0BDAkLIAAgAhD+BSIFQX9KDQMgACAEQQRqIAIQ/QUiBUF/Sg0DQazhASEDIAAoAigNACAAEKkERQ0ICyAAIANBABA/DBELIAQgA0ECajYCHCADLQACIQIgACgCKARAIAIQRkUNCSAAQcPhAUEAED8MEQsgAkH
 
4AXFBMEcNCCAEIANBA2o2AhwgAy0AAkFQaiEFIAMtAANB+AFxQTBHDQggBCADQQRqNgIcIAMtAAMgBUEDdGpBUGohBQwICyAEIANBAWoiAjYCHCAEQRxqQQAQ2AIiBUEATgRAIAUgACgCNEgNAiAFIAAQ/AVIDQILIAAoAihFBEAgBCACNgIcIAItAAAiB0E3Sw0HQQAhBSAHQTNNBEAgBCADQQJqIgI2AhwgAy0AAiEHIAMtAAFBUGohBQsgB0H4AXFBMEcNCCAEIAJBAWo2AhwgAi0AACAFQQN0akFQaiEFIAItAAFB+AFxQTBHDQggBCACQQJqNgIcIAItAAEgBUEDdGpBUGohBQwICyAAQfDhAUEAED8MDwsgBCAEKAIINgIcCyAAKAI0IQcgACgCBCECIAAgAUETaiAFENoCDAgLIAAoAjQhByAAKAIEIQIgAQRAIABBGxBiC0F/IQMgACAEQRxqEMoJDQ0gAUUNByAAQRsQYgwHCyAAKAIoRQ0BIABBsOABQQAQPwwLCyACQT9GDQkLIAAgBEEIaiAEQRxqQQAQqAQiBUEATg0BDAkLIAQgA0ECajYCHCADLQABIQULIAAoAjQhByAAKAIEIQIgAQRAIABBGxBiCwJAIAVBgICAgAROBEAgACAEQQhqEPsFIQUgBEEIahBVQX8hAyAFRQ0BDAoLAn8gACgCLARAIAUgACgCKBDlASEFCyAFQf//A0wLBEAgAEEBIAUQpwQMAQsgAEECIAUQywEaCyABRQ0CIABBGxBiDAILIABBBEEDIAAoAjAbEGIMAQsgAyAGaiEGQX8hAwJ/QX8gAg0AGkF/IAAoAigNABogACgCNCEHIAAoAgQLIQIgAEEYQRcgBUEhRhtBABDLASEBIAAgBjYCGCAAIAgQrgMNBiAEIAAoAhg2AhwgACAEQRxqQSkQrAMNBiAAQQoQYiAAKAIMDQYgACgCACABaiAAKAIEIAFrQXxqEFwLIAJB
 
AEgNAAJAAkACQAJAAkACQCAEKAIcIgMtAAAiAUFWag4CAQIACyABQT9GDQIgAUH7AEcNBSADLQABEEYNAyAAKAIoRQ0FDAcLIAQgA0EBaiIDNgIcQQAhBUH/////ByEBDAMLQQEhBSAEIANBAWoiAzYCHEH/////ByEBDAILQQEhASAEIANBAWoiAzYCHEEAIQUMAQsgBCADQQFqNgIcIARBHGpBARDYAiIFIQECQCAEKAIcIgYtAAAiCEEsRw0AIAQgBkEBajYCHCAGLQABIggQRkUEQEH/////ByEBDAELIARBHGpBARDYAiIBIAVIDQQgBCgCHC0AACEICwJAIAhB/QBGDQAgACgCKA0AIAQgAzYCHAwCC0F/IQMgACAEQRxqQf0AEKwDDQYgBCgCHCEDCwJ/IAMtAABBP0YEQCAEIANBAWo2AhwgACgCBCACayEGQQAhCEEADAELAkAgAUEBSA0AIAAoAgwNAyAAKAIAIAJqIAAoAgQgAmsQyQkiA0EBSA0AIABBChBiIAAgAkEREIICDQMgACgCACACakEcOgAAIAIgACgCAGpBAWogACgCBCACa0FvahBcIAIgACgCAGpBBWogBRBcIAIgACgCAGpBCWogARBcIAIgACgCAGpBDWogAxBcDAILIAAoAgwNAkEBIQggACgCACACaiAAKAIEIAJrIgYQyAlFCyEDAkAgBUUEQCAAKAI0IAdHBEAgACACQQMQggINBCAAKAIAIAJqQQ06AAAgAiAAKAIAaiAHOgABIAIgACgCAGogAC0ANEF/ajoAAiACQQNqIQILAkACQAJAIAEOAgABAgsgACACNgIEDAQLIAAgAkEFEIICDQQgACgCACACaiAIQQhyOgAAIAAoAgAgAmpBAWogBhBcDAMLIAFB/////wdGDQEgACACQQoQggINAyAAKAIAIAJqQQ86AAAgAiAAKAIAakEBaiABEFwgAkEFaiIBIAAoAgBqIAhBCHI6A
 
AAgAiAAKAIAakEGaiAGQQVqEFwgAEEOIAEQ5AEgAEEQEGIMAgsgAyABQf////8HR3IgBUEBR3JFBEAgAEEJIAhrIAIQ5AEMAgsgBUEBRwRAIAAgAkEFEIICDQMgACgCACACakEPOgAAIAAoAgAgAmpBAWogBRBcIABBDiACQQVqIgIQ5AEgAEEQEGILIAFB/////wdGBEAgACgCBCEBIAAgCEEIciADIAZqQQVqEMsBGiADBEAgAEEZEGIgACACIAYQrgQgAEEaIAEQ5AEMAwsgACACIAYQrgQgAEEHIAEQ5AEMAgsgASAFTA0BIABBDyABIAVrEMsBGiAAKAIEIQEgACAIQQhyIAZBBWoQywEaIAAgAiAGEK4EIABBDiABEOQBIABBEBBiDAELIAAgAiADQQVqEIICDQEgACgCACACaiAIQQhyOgAAIAAoAgAgAmpBAWogAyAGakEFahBcIAMEQCACIAAoAgBqQRk6AAUgAEEaIAIQ5AEMAQsgAEEHIAIQ5AELIAAgBCgCHDYCGEEAIQMMBAsgABDZAgwCCyAAQaLiAUEAED8MAQsgAEG94AFBABA/C0F/IQMLIARBIGokACADC4gFAgZ/AX4jAEHQAGsiByQAIAAgByACIAMgBBCYBSAHEKEIAkACQAJAAkACQAJAAkACQCAFQQNxIghBAkYEQCAAKAIQKAKEASIJRQ0CIAkpAwgiDUL/////b1gNAyANpyICLwEGEPUBRQ0EIAIoAiQhCiACKAIgIgMtABAhC0EAIQIMAQsgBUEDdiEDIAhBAUcEQCADQQNxIQtBACEDQQAhAgwBC0KAgICA4AAhDSAAIAQQyAEiAkUNByAAIAIQrQgiAkUNByADQQJxQQFyIQtBACEDCyAAQQBBAUEAIARBARDoAyIERQ0DIAcgBDYCQCAEIAhBAkciDDYCTCAEIAg2AiQgBCAFQQZ2QQFxNgJoAn8gDEUEQCAEIAMvABFBBnZBAXE2Al
 
AgBCADLwARQQd2QQFxNgJUIAQgAy0AEkEBcTYCWCADLwARQQl2QQFxDAELIARBADYCWCAEQgA3AlBBAQshCCAEIAs6AG4gBCAINgJcIABB0AAQGBogBEHQADYCcAJAAkAgAwRAIAAgBCADIAYQoAgNAQsgBCACNgKUAyAHIAJFNgJIIAcgAkEARzYCRCAHEIIBGiAEIAQoArwBNgLwASAHEJ8IRQ0BCyAHIAdBEGoQjgIgACAEEIADDAQLIAAgBBCMBSINEAwNAyACBEAgAiANNwNIIAAgAhD2A0EASA0FIAKtQoCAgIBQhBAOIQ0LIAVBIHENBiAAIA0gASAKIAkQnwUhDQwGC0HQ+ABBoQ1B3oUCQdv4ABAAAAtB7fgAQaENQd+FAkHb+AAQAAALQZ35AEGhDUHhhQJB2/gAEAAACyACRQ0BCyAAIAIQzQULQoCAgIDgACENCyAHQdAAaiQAIA0LjwIBBn8gAUF5aiEFIABBB2ohB0EAIQFBACEAAkACQANAAkACQAJAAkACQCAAIAVIBH8gACAHaiICLQAAIgRBHU8NBSAAIARB0OUBai0AACIDaiAFSg0HAkAgBEFxag4MAAIFBQUFAwQFBQACBQsgAUEBaiECIAEgBkgEQCACIQEMBQsgAUH+AUohBCACIgEhBiAERQ0EQX8FIAYLDwsgAUEATA0GIAFBf2ohAQwCCyACLwABQQJ0IANqIQMMAQsgAi8AAUEDdCADaiEDCyAAIANqIQAMAQsLQfvlAUGP5gFB+g1BqOYBEAAAC0G75gFBj+YBQfsNQajmARAAAAtB1eYBQY/mAUGIDkGo5gEQAAAL3QQDBn8CfgF8IwBB0ABrIgQkAAJAAkACQAJAAkACQEEAIAIgARARIggbIgIOAgIAAQsgBAJ8AkAgAykDACIKQoCAgIBwVA0AIAqnIgIvAQZBCkcNACACKQMgIgsQiwFFDQAgACAEQUBrIAsQSA0FIAQrA0AQggM
 
MAQsgBCAAIApBAhCQAyIKNwMAAkAgChCaAQRAIABCgICAgDBBASAEEI8FIQsgACAKEAsgCxAMDQYgACAEQUBrIAsQWUUNAQwGCyAAIARBQGsgChBZDQULIAQrA0AQggMLOQNADAILIARBAEE4EEwiBUKAgICAgICA+D83AxAgAkEHIAJBB0gbIgdBACAHQQBKGyECA0ACQCAFIAIgBkcEfyAAIAVByABqIAMgBkEDdCIJaikDABBIDQUgBSsDSCIMvUKAgICAgICA+P8Ag0KAgICAgICA+P8AUg0BIAYFIAILIAdGBHwgBUEBEIEDBUQAAAAAAAD4fws5A0AMAwsgBSAJaiAMnTkDAAJAIAYNACAFKwMAIgxEAAAAAAAAAABmQQFzIAxEAAAAAAAAWUBjQQFzcg0AIAUgDEQAAAAAALCdQKA5AwALIAZBAWohBgwACwALIAQQjgW5OQNACwJAIAAgAUEKEGwiChAMDQAgACAKAn4gBCsDQCIMvQJ/IAyZRAAAAAAAAOBBYwRAIAyqDAELQYCAgIB4CyICt71RBEAgAq0MAQsgDBAWCxDoASAIRQ0AIAAgCkEAQQBBExCNBSEBIAAgChALDAILIAohAQwBC0KAgICA4AAhAQsgBEHQAGokACABC+ADAQF/IwBB4AFrIgYkACAGQQBB3AEQTCIGQX82AjwgBkKBgICAcDcCNCAGIAI2AiAgBiACIANqNgIcIAYgAjYCGCAGIAU2AkAgBiAENgIkIAYgBEEDdkEBcTYCMCAGIARBAXZBAXE2AiwgBiAEQQR2QQFxNgIoIAYgBUHrAhCxAyAGQcQAaiICIAVB6wIQsQMgBiAEQf8BcRAPIAZBABAPIAZBABAPIAZBABAdIARBIHFFBEAgBkEIQQYQywEaIAZBBBBiIAZBB0F1EMsBGgsgBkELQQAQ2gICfwJAIAZBABCuAw0AIAZBDEEAENoCIAZBChBiIAYoAhgtAAAEQCAGQeDf
 
AUEAED8MAQsgBigCDARAIAYQ2QIMAQsgBigCACAGKAIEEM4JIgNBf0wEQCAGQYHgAUEAED8MAQsgBigCACAGKAI0OgABIAYoAgAgAzoAAiAGKAIAQQNqIAYoAgRBeWoQXCAGKAJIIgMgBigCNEF/aksEQCAGIAYoAkQgAxCUARogBigCACIDIAMtAABBgAFyOgAACyACEKIBIAFBADoAACAAIAYoAgQ2AgAgBigCAAwBCyAGEKIBIAIQogEgASAGQdwAahDfCSAAQQA2AgBBAAshACAGQeABaiQAIAALOwEBfwNAIAIEQCAALQAAIQMgACABLQAAOgAAIAEgAzoAACABQQFqIQEgAEEBaiEAIAJBf2ohAgwBCwsLGgAgAC0AACECIAAgAS0AADoAACABIAI6AAALQgEBfyACQQF2IQIDQCACBEAgAC8BACEDIAAgAS8BADsBACABIAM7AQAgAUECaiEBIABBAmohACACQX9qIQIMAQsLCxoAIAAvAQAhAiAAIAEvAQA7AQAgASACOwEAC0IBAX8gAkECdiECA0AgAgRAIAAoAgAhAyAAIAEoAgA2AgAgASADNgIAIAFBBGohASAAQQRqIQAgAkF/aiECDAELCwsaACAAKAIAIQIgACABKAIANgIAIAEgAjYCAAsWACAAIAApA8ABIAMpAwBBA0F/EI4DC0IBAX4gAkEDdiECA0AgAgRAIAApAwAhAyAAIAEpAwA3AwAgASADNwMAIAFBCGohASAAQQhqIQAgAkF/aiECDAELCwscAQF+IAApAwAhAyAAIAEpAwA3AwAgASADNwMAC1oBAn4gAkEEdiECA0AgAgRAIAApAwAhAyAAIAEpAwA3AwAgACkDCCEEIAAgASkDCDcDCCABIAQ3AwggASADNwMAIAFBEGohASAAQRBqIQAgAkF/aiECDAELCws0AQJ+IAApAwAhAyAAIAEpAwA3AwAgACkDCCEEIAAgASkDCDcDCCABI
 
AQ3AwggASADNwMAC2IBAn8gACABIAQgAxEAACEGIAEgAiAEIAMRAAAhBQJAIAZBf0wEQCAFQQBIDQEgAiAAIAAgAiAEIAMRAABBAEgbDwsgBUEASg0AIAAgAiAAIAIgBCADEQAAQQBIGyEBCyABC7ECAQZ/IAEgAmwiBiACayEIIAFBAXYgAmwhByAAIAIQrQQhCQNAAkAgB0UEQANAIAYgAmsiBkUNAiAAIAAgBmogAiAJEQUAIAYgAmshB0EAIQUDQCAFQQF0IAJqIgEgBk8NASAAIAVqIgUCfyABIAdJBEAgAUEAIAIgACABaiIBIAEgAmogBCADEQAAQQBKG2ohAQsgACABaiIICyAEIAMRAABBAEoNASAFIAggAiAJEQUAIAEhBQwACwALAAsgByACayIHIQUDQCAFQQF0IAJqIgEgBk8NAiAAIAVqIgUCfyABIAhJBEAgAUEAIAIgACABaiIBIAEgAmogBCADEQAAQQBKG2ohAQsgACABaiIKCyAEIAMRAABBAEoNAiAFIAogAiAJEQUAIAEhBQwACwALCwtFAQJ/QbTDACECA0AgAi0AACIDBEAgAyAALQAARwRAQQAPBSACQQFqIQIgAEEBaiEADAILAAsLIAEEQCABIAA2AgALQQELPgECfyAAQT9qIQIDQCABLQAAIgNFIAAgAk9yRQRAIAAgAzoAACAAQQFqIQAgAUEBaiEBDAELCyAAQQA6AAALmwMCA38CfiMAQSBrIgUkAEKAgICA4AAhCAJAIAAgAUEeEGciB0UNACAAIAVBEGogAykDABDCAQ0AIAMpAwghASAFQQA2AhwCfgJAIARBG0wEQCAAIAVBHGogARDFAQ0DDAELIAAgBUEIaiABEEgNAiAEQRxGBEAgBSAFKwMItjgCHAwBCyAFKQMIDAELQgALIQFBASEGIAJBA04EQCAAIAMpAxAQ9gFBAXMhBgsgBygCDCgCICICLQAEBEAgABBwDAELIA
 
UpAxAiCUEBIARBmR5qLQAAdKx8IAc1AhRWBEAgAEGg2wEQaQwBCyAJpyACKAIIIAcoAhBqaiEAAkACQAJAAkACQAJAIARBamoOCAQEAAABAQECAwsgBSgCHCEDIAYEQCAFIANB//8DcRDUAyIDNgIcCyAAIANB//8DcRD4AgwECyAFKAIcIQMgBgRAIAUgAxD3AiIDNgIcCyAAIAMQXAwDCyAAIAYEfiABEPQEBSABCzcAAAwCCxABAAsgACAFKAIcOgAAC0KAgICAMCEICyAFQSBqJAAgCAunAwIDfwF+IwBBEGsiBiQAQoCAgIDgACEIAkAgACABQR4QZyIHRQ0AIAAgBkEIaiADKQMAEMIBDQBBASEFIAJBAk4EQCAAIAMpAwgQ9gFBAXMhBQsgBygCDCgCICICLQAEBEAgABBwDAELIAYpAwgiAUEBIARBmR5qLQAAdKx8IAc1AhRWBEAgAEGg2wEQaQwBCyABpyACKAIIIAcoAhBqaiEAAkACQAJAAkACQAJAAkACQAJAIARBamoOCAgAAQIDBAUGBwsgADEAACEIDAgLIAAvAAAhACAFBH8gABDUAwUgAAtBEHRBEHWtIQgMBwsgAC8AACEAIAUEfyAAENQDBSAAC60hCAwGCyAAKAAAIQAgBQR/IAAQ9wIFIAALrSEIDAULIAAoAAAhAAJ/IAUEQCAAEPcCIQALIABBAE4LBEAgAK0hCAwFCyAAuBAWIQgMBAsgACgAACEAIAUEfyAAEPcCBSAAC767EBYhCAwDCyAAKQAAIQEgBQR+IAEQ9AQFIAELvxAWIQgMAgsQAQALIAAwAABC/////w+DIQgLIAZBEGokACAIC80BAgJ/An4jAEEQayIFJAAgAUEANgIAAkAgABBOIgYQDA0AQoCAgIAwIQcCQCAAIAIgAxDWAyICEAwNACAAIAJB6gAgAkEAEBMiBxAMDQADQCAAIAIgByAFQQxqEKwBIgMQDA0BIAUoAgw
 
EQCAAIAMQCyAAIAcQCyAAIAIQCyABIAQ2AgAMAwsgACAGIAStIANBgIABEKoBQQBIDQEgBEEBaiEEDAALAAsgACAHEAsgACACEAsgACAGEAtCgICAgOAAIQYLIAVBEGokACAGC4ABAQN/IwBBEGsiBSQAIAUgAq03AwgCQCAAIAFBASAFQQhqELUDIgEQDA0AIAJBACACQQBKGyECA0AgAiAERg0BIAAgASAEIAMgBEEDdGopAwAQDhCVAiEGIARBAWohBCAGQX9KDQALIAAgARALQoCAgIDgACEBCyAFQRBqJAAgAQumBQICfwl+IwBBMGsiBCQAIAMpAwAhB0KAgICAMCEIIARCgICAgDA3AxhBASEFAkACQAJAAkACfiACQQJIBEBCgICAgDAhDEKAgICAMAwBCwJAIAMpAwgiDBARDQAgACAMEGYNAkEAIQUgAkEDSA0AIAMpAxAMAQtCgICAgDALIQ0gACAHQcMBIAdBABATIgYQDA0AAkAgBhARRQRAIAAgBhALIAAQTiIJEAwEQEKAgICAMCELQoCAgIAwIQYMBAsgBCAHEA43AxAgACAEQRBqQQhyQQAQjAMhAiAEKQMYIQsgBCkDECEGIAINA0IAIQcDQCAAIAYgCyAEQQRqEKwBIgoQDEUEQCAEKAIEBEAgBiEKDAQLIAAgCSAHIAoQbSECIAdCAXwhByACQQBODQELCyAGEBENBCAAIAZBARCwARoMAwtCgICAgDAhC0KAgICAMCEKQoCAgIAwIQYgACAHECkiCRAMDQMLIAAgBEEIaiAJEEBBAEgEQCAKIQYMAgsgBAJ+IAQpAwgiBkKAgICACHxC/////w9YBEAgBkL/////D4MMAQsgBrkQFgsiBzcDICAAIAFBASAEQSBqELUDIQggACAHEAsCQCAIEAwNAEIAIQcgBkIAIAZCAFUbIQ4DQCAHIA5RBEAgCiEGDAYLIAAgCSAHEHEiBhAMDQECQCAFBEAg
 
BiEBDAELIAQgBjcDICAEIAdC/////w+DNwMoIAAgDCANQQIgBEEgahAjIQEgACAGEAsgARAMDQILIAAgCCAHIAEQjAEhAiAHQgF8IQcgAkEATg0ACwsgCiEGDAILQoCAgIAwIQtCgICAgDAhBkKAgICAMCEJCwsgACAIEAtCgICAgOAAIQgLIAAgCRALIAAgBhALIAAgCxALIARBMGokACAICw8AIAArAwAgASsDABCDBgsJACABKwMAEBYLEQAgACoCALsgASoCALsQgwYLCgAgASoCALsQFgsXACABKAIAIgEgACgCACIASSABIABLawsYACABKAIAIgBBAE4EQCAArQ8LIAC4EBYLFwAgASgCACIBIAAoAgAiAEggASAASmsLBwAgATUCAAsNACAALwEAIAEvAQBrCwcAIAEzAQALDQAgAC4BACABLgEAawsOACABMgEAQv////8PgwsNACAALQAAIAEtAABrCwcAIAExAAALVgEBfyABEBFFBEAgAEG2zABBABAVQoCAgIDgAA8LAn4CQCACRQ0AIAMpAwAiARARDQBCgICAgOAAIAAgARAsIgEQDA0BGiABpyEECyAAIARBAxDkAwsLDQAgACwAACABLAAAawsOACABMAAAQv////8PgwvLCQQEfwF+AX0BfCMAQRBrIgYkAEKAgICA4AAhCQJAIAAgARCWASIIQQBIDQBBfyEFAkACQCAIRQ0AQQEhBwJAAkAgBEEBRgRAQX8hByAGIAhBf2o2AgwgAkECSA0BIAAgBiADKQMIEEgNBSAGKwMAIgu9Qv///////////wCDQoGAgICAgID4/wBaBEAgBkEANgIMDAILIAtEAAAAAAAAAABmQQFzRQRAIAsgBigCDLdjQQFzDQIgBgJ/IAuZRAAAAAAAAOBBYwRAIAuqDAELQYCAgIB4CzYCDAwCCyAGIAsgCLegIgs5AwAgC0QAAAAAAAAAAGMNBCAGAn8gC5lEAAAAA
 
AAA4EFjBEAgC6oMAQtBgICAgHgLNgIMDAELIAZBADYCDCACQQJIBEAgCCECDAILIAAgBkEMaiADKQMIIAgiAiACEGANBAwBC0F/IQILIAAgARDcAg0CAn8gAykDACIJEFMiAEEHRwRAIAANAiAGIAlCIIZCIIciCbkiCzkDAEEBDAELIAYgCRBKIgs5AwAgCwJ+IAuZRAAAAAAAAOBDYwRAIAuwDAELQoCAgICAgICAgH8LIgm5YQshAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABpyIDLwEGQWtqDgkBAAEDBAYHCQoMCyAARQ0LIAlCgAF8QoACVA0BDAsLIABFIAlC/wFWcg0KCyADKAIkIQAgCachAyAEQQFGBEAgA0H//wNxIQMgBigCDCEFA0AgAiAFRg0KIAMgACAFai0AAEYNCyAGIAUgB2oiBTYCDAwACwALIAAgBigCDCICaiADQf//A3EgCCACaxCBAiICRQ0JIAIgAGshBQwJCyAARQ0IIAlCgIACfEKAgARUDQEMCAsgAEUgCUL//wNWcg0HCyADKAIkIQAgBigCDCEFIAmnQf//A3EhAwNAIAIgBUYNBiAAIAVBAXRqLwEAIANGDQcgBiAFIAdqIgU2AgwMAAsACyAARQ0FIAlCgICAgAh8QoCAgIAQVA0BDAULIABFIAlC/////w9Wcg0ECyADKAIkIQAgCachAyAGKAIMIQUDQCACIAVGDQMgACAFQQJ0aigCACADRg0EIAYgBSAHaiIFNgIMDAALAAsgC71C////////////AINCgYCAgICAgPj/AFoEQCAEQX9HDQQgAygCJCEAIAYoAgwhBQNAIAIgBUYNAyAAIAVBAnRqKgIAvEH/////B3FBgICA/AdLDQQgBiAFIAdqIgU2AgwMAAsACyALIAu2Igq7Yg0CIAMoAiQhACAGKAIMIQUDQCACIAVGDQIgACAFQQJ0aioCACAKWw0DIAYgBSAHai
 
IFNgIMDAALAAsgAygCJCEAIAu9Qv///////////wCDQoGAgICAgID4/wBaBEAgBEF/Rw0DIAYoAgwhBQNAIAIgBUYNAiAAIAVBA3RqKwMAvUL///////////8Ag0KAgICAgICA+P8AVg0DIAYgBSAHaiIFNgIMDAALAAsgBigCDCEFA0AgAiAFRg0BIAAgBUEDdGorAwAgC2ENAiAGIAUgB2oiBTYCDAwACwALQX8hBQsgBEF/Rw0AIAVBf3NBH3atQoCAgIAQhCEJDAELIAWtIQkLIAZBEGokACAJC6oCAgR/A34jAEEgayIFJABCgICAgOAAIQsCQCAAIAEQlgEiCEEASA0AQSwhB0KAgICAMCEJAkAgAkEBSCAEcg0AIAMpAwAiChARDQAgACAKECwiCRAMDQFBfyEHIAmnIgYoAgRBAUcNACAGLQAQIQcLIAAgBUEIakEAEEIaIAhBACAIQQBKGyEDQQAhAgJAA0AgAiADRg0BAkACQCACRQ0AIAdBAE4EQCAFQQhqIAcQPEUNAQwCCyAFQQhqIAZBACAGKAIEQf////8HcRBXDQELIAAgASACEHgiChAMDQAgAkEBaiECIAVBCGogBAR+IAAgChC4BAUgCgsQigFFDQELCyAFQQhqEEUgACAJEAsMAQsgACAJEAsgBUEIahA4IQsLIAVBIGokACALC6sCAwN/AX4BfCMAQSBrIgMkACACKAIERQRAIAEoAgAhBSADIAIoAgAiASACKAIcIAAoAgAiACACKAIgbGogAigCGBEMADcDECADIAEgAigCHCAFIAIoAiBsaiACKAIYEQwANwMYAkAgASACKQMQQoCAgIAwQQIgA0EQahAjIgYQDARAIAJBATYCBAwBCwJAAn8gBkL/////D1gEQCAGpyIEQR91IARBAEpqDAELIAEgA0EIaiAGEFlBAEgNASADKwMIIgdEAAAAAAAAAABkIAdEAAAAAAAAAABjawsiBEUEQCA
 
AIAVLIAAgBUlrIQQLIAEgAikDCBDcAkF/Sg0BIAJBATYCBAwBCyACQQE2AgQLIAEgAykDEBALIAEgAykDGBALCyADQSBqJAAgBAvhBAIGfwJ+IwBBMGsiAiQAIAIgATcDECACIAA2AgggAkEANgIMIAIgAykDACIKNwMYQoCAgIDgACELAkACQCAAIAEQlgEiBEEASA0AIAoQESIFRQRAIAAgChBmDQELAkAgBEECSA0AIAGnIgMvAQZBa2oiBkH//wNxQQlPDQIgAiAGQRB0QRB1QQJ0IgdBpNwBaigCADYCIEEBIAMvAQZBmR5qLQAAIgl0IQggAygCJCEGIAVFBEAgACAEQQJ0EC4iBUUNAkEAIQMDQCADIARGRQRAIAUgA0ECdGogAzYCACADQQFqIQMMAQsLIAIgCDYCKCACIAY2AiQgBSAEQQRBOSACQQhqENsCAkAgAigCDEUEQCAAIAQgCXQiAxAuIgcNAQsgACAFEBkMAwsgByAGIAMQJCEHQQAhAwJAAkACQAJAAkAgCEF/ag4IAAEIAggICAMICwNAIAMgBEYNBCADIAZqIAcgBSADQQJ0aigCAGotAAA6AAAgA0EBaiEDDAALAAsDQCADIARGDQMgBiADQQF0aiAHIAUgA0ECdGooAgBBAXRqLwEAOwEAIANBAWohAwwACwALA0AgAyAERg0CIAYgA0ECdCIIaiAHIAUgCGooAgBBAnRqKAIANgIAIANBAWohAwwACwALA0AgAyAERg0BIAYgA0EDdGogByAFIANBAnRqKAIAQQN0aikDADcDACADQQFqIQMMAAsACyAAIAcQGSAAIAUQGQwBCyAGIAQgCCAHQcjcAWooAgAgAkEIahDbAiACKAIMDQELIAEQDiELCyACQTBqJAAgCw8LEAEAC/ABAgJ/A34jAEEwayICJABCgICAgOAAIQcCQCAAIAFBABCYASIFRQ0AIAAgAkEMaiADKQMAIAUoAigiBCAE
 
EGANACACIAQ2AgggAykDCCIGEBEEfyAEBSAAIAJBCGogBiAEIAQQYA0BIAIoAggLIAIoAgwiA2tBABBLIQQgACABQQAQhAYiBhAMDQAgBS8BBiEFIAAgBhALIAAgAUEAEIUGIggQDA0AIAIgCDcDGCACIAE3AxAgAiAErTcDKCACIAanIAMgBUGZHmotAAB0aq03AyAgAEEEIAJBEGoQ3wIhByAAIAgQCwsgAkEwaiQAIAcL+wICBH8EfiMAQSBrIgIkAEKAgICAMCEIAkACQCAAIAEQlgEiBEEASA0AIAAgAkEMaiADKQMAIAQgBBBgDQAgAiAENgIIIAMpAwgiCRARBH8gBAUgACACQQhqIAkgBCAEEGANASACKAIICyACKAIMIgVrQQAQSyEDIAAgAUEAEJgBIgRFDQAgBC8BBiEHIAIgA60iCjcDGCACIAE3AxAgAEECIAJBEGoQ3wIiCBAMDQAgA0EBSA0BIAAgARDcAg0AIAAgCBDcAg0AAkAgACAIQQAQmAEiBkUNACAELwEGIAYvAQZHDQAgBhCBBCADSQ0AIAQQgQQgAyAFakkNACAGKAIkIAQoAiQgBSAHQZkeai0AACIAdGogAyAAdBAkGgwCC0IAIQkDQCAJIApRDQIgACABIAUgCadqrRCdASILEAwNASAAIAggCSALQYCAARDdASEDIAlCAXwhCSADQX9KDQALCyAAIAgQC0KAgICA4AAhCAsgAkEgaiQAIAgLzAIBAX4gACABEJYBIgJBAEgEQEKAgICA4AAPCwJAIAJFDQACQAJAAkACQAJAIAGnIgAvAQZBmR5qLQAADgQAAQIDBAsgACgCJCIAIAJqIQIDQCAAIAJBf2oiAk8NBSAALQAAIQMgACACLQAAOgAAIAIgAzoAACAAQQFqIQAMAAsACyAAKAIkIgAgAkEBdGohAgNAIAAgAkF+aiICTw0EIAAvAQAhAyAAIAIvAQA7AQAgAiADOwEAIABBA
 
mohAAwACwALIAAoAiQiACACQQJ0aiECA0AgACACQXxqIgJPDQMgACgCACEDIAAgAigCADYCACACIAM2AgAgAEEEaiEADAALAAsgACgCJCIAIAJBA3RqIQIDQCAAIAJBeGoiAk8NAiAAKQMAIQQgACACKQMANwMAIAIgBDcDACAAQQhqIQAMAAsACxABAAsgARAOC/YBAgJ/Bn4jAEEgayIFJABCgICAgDAhCAJAAkAgACABEJYBIgZBAEgNACAAIAMpAwAiChBmDQBCgICAgDAhCSACQQJOBEAgAykDCCEJCyAGQQAgBkEAShutIQsDQCAHIAtSBEAgACABIAcQnQEiCBAMDQIgBSABNwMQIAUgBzcDCCAFIAg3AwAgACAKIAlBAyAFECMiDBAMDQIgACAMEC0EQCAERQRAIAghBwwFCyAAIAgQCwwEBSAAIAgQCyAHQgF8IQcMAgsACwtC/////w9CgICAgDAgBBshBwwBCyAAIAgQC0KAgICA4AAhBwsgBUEgaiQAIAcLPgIBfwF+IwBBEGsiASQAIAFBCGpBABACGiAAQgEgATQCDCABNAIIQsCEPX58IgIgAlAbNwPQASABQRBqJAALtAQCBH8DfiMAQRBrIgQkAEKAgICA4AAhCQJAIAAgARCWASIGQQBIDQACfiABpyIFLwEGIgdBFUYEQCAAIAQgAykDABAOELgFDQIgBDQCAAwBCyAHQRtNBEAgACAEIAMpAwAQxQENAiAENQIADAELIAAgBCADKQMAEEgNASAFLwEGQRxGBEAgBCsDALa8rQwBCyAEKQMACyEIIARBADYCAAJAIAJBAUwEQCAEIAY2AgwMAQsgACAEIAMpAwggBiAGEGANASAEIAY2AgwgAkEDSA0AIAMpAxAiChARDQAgACAEQQxqIAogBiAGEGANAQsgBRCrAQRAIAAQcAwBCwJAAkACQAJAAkACQAJAAkACQCAFLwEGQZkeai0AAA4EAAECAw
 
QLIAQoAgwiAiAEKAIAIgBMDQcgBSgCJCAAaiAIpyACIABrEEwaDAcLIAQoAgAiACAEKAIMIgIgACACShshAiAIpyEDA0AgACACRg0EIAUoAiQgAEEBdGogAzsBACAAQQFqIQAMAAsACyAEKAIAIgAgBCgCDCICIAAgAkobIQIgCKchAwNAIAAgAkYNBCAFKAIkIABBAnRqIAM2AgAgAEEBaiEADAALAAsgBCgCACIAIAQoAgwiAiAAIAJKGyECA0AgACACRg0EIAUoAiQgAEEDdGogCDcDACAAQQFqIQAMAAsACxABAAsgBCACNgIADAILIAQgAjYCAAwBCyAEIAI2AgALIAEQDiEJCyAEQRBqJAAgCQvvAQIDfwJ+IwBBEGsiBSQAQoCAgIDgACEHAkAgACABEJYBIgRBAEgNACAAIAVBDGogAykDACAEIAQQYA0AIAAgBUEIaiADKQMIIAQgBBBgDQAgBSAENgIEAn8gBCACQQNIDQAaIAQgAykDECIIEBENABogACAFQQRqIAggBCAEEGANASAFKAIECyAFKAIIIgZrIAQgBSgCDCIDaxCxASICQQFOBEAgAaciBBCrAQRAIAAQcAwCCyAEKAIkIgAgAyAELwEGQZkeai0AACIDdGogACAGIAN0aiACIAN0EP0BCyABEA4hBwsgBUEQaiQAIAcLSgIBfwF+QoCAgIAwIQMCQCABQoCAgIBwVA0AIAGnLwEGIgJBa2pB//8DcUEISw0AIAAgACgCECgCRCACQRhsaigCBBAyIQMLIAMLLAEBfkKAgICA4AAhBSAAIAEQ3AIEfkKAgICA4AAFIAAgASACIAMgBBD+BAsLgwMCCH8CfiMAQRBrIgUkAEKAgICA4AAhDUKAgICAMCEMAkAgACABQQAQmAEiBEUNACAAIAUgAxD+Aw0AAkACQAJAAkAgBSkDACIDQgBTDQAgBBCrAQ0DIAAgAhApIgwQDA0EIAynIgYvAQZBa2p
 
B//8DcUEITQRAIAYoAiAiCCgCDCgCICIJLQAEDQQgBC8BBiEHIAQoAiAiCigCDCgCICELIAUgBjUCKCICNwMIIAMgBDUCKCACfVUNASAGLwEGIAdHDQIgAyAHQZkeajEAACIBhqcgCygCCCAKKAIQamogCSgCCCAIKAIQaiACIAGGpxD9AQwDCyAAIAVBCGogDBBADQQgAyAENQIoIAUpAwgiAn1XDQELIABBvcMAEGkMAwsgA6chBkEAIQQDQCACIAStVw0BIAAgDCAEEHgiAxAMDQMgBCAGaiEHIARBAWohBCAAIAEgByADEJUCQX9KDQALDAILQoCAgIAwIQ0MAQsgABBwCyAAIAwQCyAFQRBqJAAgDQssAQF+QoCAgIAwIQQgACABIAMpAwAgAkECTgR+IAMpAwgFQoCAgIAwCxCDCgtKAgF/AX5CgICAgOAAIQQgACABIAIQmAEiAwR+IAMQqwEEQCACRQRAQgAPCyAAEHBCgICAgOAADwsgAygCIDUCFAVCgICAgOAACwseACAAIAFBABCYASIARQRAQoCAgIDgAA8LIAA1AigLPQEBfkKAgICAECEBIAMpAwAiBEKAgICAcFoEfiAEpy8BBkFrakH//wNxQQpJrUKAgICAEIQFQoCAgIAQCwuQAwIBfwV+IwBBIGsiAiQAQoCAgIDgACEJAkAgACABIAQQZyIFRQ0AIAUtAAQEQCAAEHAMAQsgACACQRhqIAMpAwBCACAFNAIAIgYgBhB9DQAgAiAGNwMQIAMpAwgiBxARBH4gBgUgACACQRBqIAdCACAGIAYQfQ0BIAIpAxALIAIpAxgiCn0QtwQhCCAAIAFCgICAgDAQ7wEiBxAMBEAgByEJDAELAkAgBxARBEAgAEKAgICAMCAIIAQQ4wMhBgwBCyACIAhCgICAgAh8Qv////8PWAR+IAhC/////w+DBSAIuRAWCzcDCCAAIAdBASACQQhqEK8BIQYgACAHEAsg
 
ACACKQMIEAsLAkAgBhAMDQACQCAAIAYgBBBnIgNFDQAgACAGIAEQWARAIABBoNEBQQAQFQwBCwJAIAMtAAQNACAIIAM0AgBVBEAgAEHB0QFBABAVDAILIAUtAAQNACADKAIIIAUoAgggCqdqIAinECQaDAILIAAQcAsgACAGEAsMAQsgBiEJCyACQSBqJAAgCQsuACAAIAEgAhBnIgBFBEBCgICAgOAADwsgACgCACIAQQBOBEAgAK0PCyAAuBAWC/YCAQF+IAFBKBBBIQIgBEEBNgIAAkACQCACRQRAIABB0M8BQQAQFQwBCwJAAkACQAJAAkACQAJAAkAgAigCAEF/ag4EAgIHAQALIAVFDQIgACACEK8EC0KAgICAMCEBIAVBf2oOAgMEBwsgAykDABAOIQECQCAFQQJHDQBBASEDIAIoAgBBAUcNACAAIAEQkAEMAgsgAigCRCIDIAWtNwMAIANBeGogATcDACACIANBCGo2AkQLQQAhAwsgAkEDNgIAIAIgAzYCFCAAIAJBCGoQuQIhASACQQE2AgAgARAMBEAgACACEK8EIAEPCyACKAJEQXhqIgMpAwAhBiADQoCAgIAwNwMAIAFC/////w9YBEAgAadBAkYEQCACQQI2AgAgBEECNgIAIAYPCyAEQQA2AgAgBg8LIAAgARALIAAgAhCvBCAGDwsgAykDABAODwsgACADKQMAEA4QkAEMAQsgAEHgzwFBABAVC0KAgICA4AAhAQsgAQtmAQF+IAMpAwAiARDlA0UEQCAAQdHJAEEAEBVCgICAgOAADwtCgICAgDAhBCABpykCBEKAgICAgICAgECDQoCAgICAgICAgH9RBH4gAUL/////D4NCgICAgJB/hBAOBUKAgICAMAsLLwEBfkKAgICA4AAhASAAIAMpAwAQLCIEEAwEfkKAgICA4AAFIAAgBKdBAhDkAwsLSQIBfwF+IAAgARCwBCIBEAwEQCABDwtCgICAg
 
DAhAyABpyICKAIEQYCAgIB4RwRAIAAgACgCECACEMwCEDIhAwsgACABEAsgAwsJACAAIAEQsAQLQAEBfiAAIAMpAwAQ9gFBAEetQoCAgIAQhCEEIAEQEQRAIAQPCyAAIAFBBhBsIgEQDEUEQCAAIAEgBBDoAQsgAQtOAQF+IwBBEGsiAiQAIAIgACABELAEIgE3AwgCQCABEAwEQCABIQQMAQsgAEKAgICAMEEBIAJBCGoQhgYhBCAAIAEQCwsgAkEQaiQAIAQLLQBCgICAgOAAIAAgAykDACADKQMIQQAQmAIiAEEAR61CgICAgBCEIABBAEgbC4sBAQR+IAMpAxAhBiADKQMIIQcgAykDACIBIQQgAkEETgRAIAMpAxghBAsgAUL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQUCQCAAIAcQOiICRQ0AIAAgAacgAiAGEA4gBEEAEPgDIQMgACACEBIgA0EASA0AIANBAEetQoCAgIAQhCEFCyAFCyoAIAMpAwAiAUL/////b1gEQCAAECdCgICAgOAADwsgACABQQNBABD0AgtjAQF+IAMpAwAiBEL/////b1gEQCAAECdCgICAgOAADwtCgICAgOAAIQECQCAAIAMpAwgQOiICRQ0AIAAgBCACEHchAyAAIAIQEiADQQBIDQAgA0EAR61CgICAgBCEIQELIAELYwECfgJAAkAgAykDACIBQv////9vWARAIAAQJwwBCyADKQMIIQUgASEEIAJBA04EQCADKQMQIQQLIAAgBRA6IgINAQtCgICAgOAADwsgACABIAIgBEEAEBMhASAAIAIQEiABC2YBAX4gAykDACIEQv////9vWARAIAAQJ0KAgICA4AAPC0KAgICA4AAhAQJAIAAgAykDCBA6IgJFDQAgACAEIAJBABDaASEDIAAgAhASIANBAEgNACADQQBHrUKAgICAEIQhAQsgAQuLAQIBfwJ+IwBBEGsiBC
 
QAIAMpAwghBSADKQMAIgYhAQJAAkACQAJAIAJBA0gNACADKQMQIgEQsgENACAAQbbMAEEAEBUMAQsgACAEQQxqIAUQ+wMiAg0BC0KAgICA4AAhAQwBCyAAIAYgASAEKAIMIgMgAhCHAyEBIAAgAiADEI0DCyAEQRBqJAAgAQscACAAIAMpAwBBACACQX9qEEsgA0EIakECEI8DC0cBAX4CQAJAIAJFBEAMAQsgACADKQMAELQFIgQQDA0BCyABEBENACAAIAFBBBBsIgEQDEUEQCAAIAEgBBDoAQsgASEECyAEC0MAIwBBEGsiAiQAAn5CgICAgOAAIAAgAkEMaiADKQMAEMUBDQAaQiAgAigCDCIARQ0AGiAAZ60LIQEgAkEQaiQAIAELUAAjAEEQayICJABCgICAgOAAIQECQCAAIAJBDGogAykDABCSAg0AIAAgAkEIaiADKQMIEJICDQAgAigCCCACKAIMbK0hAQsgAkEQaiQAIAELBgAgALa7CzUBAX4gACAAKQMAIgFCDIggAYUiAUIZhiABhSIBQhuIIAGFIgE3AwAgAUKdurP7lJL9oiV+CyYAIABB0AFqEJ0KQgyIQoCAgICAgID4P4S/RAAAAAAAAPC/oBAWC9cBAgJ/AXwjAEEQayIEJAAgBEIANwMIAkACfEQAAAAAAAAAACACQQFIDQAaQoCAgIDgACEBIAAgBEEIaiADKQMAEEgNAUEBIQUgAkEBRwRAA0AgAiAFRwRAIAAgBCADIAVBA3RqKQMAEEgNBCAEIAQrAwggBCsDABCrCTkDCCAFQQFqIQUMAQsLIAQrAwgMAQsgBCsDCJkLIga9An8gBplEAAAAAAAA4EFjBEAgBqoMAQtBgICAgHgLIgW3vVEEQCAFrSEBDAELIAYQFiEBCyAEQRBqJAAgAQtbAQF/AkAgAL1C////////////AINCgICAgICAgPj/AFYgAEQAAAAAAAAAAGFyDQAgAEQAAAA
 
AAAAAAGMhAUQAAAAAAADwvyEAIAENAEQAAAAAAADwPyEACyAAC4MBAgF/An4gAL0iAkI0iKdB/w9xIgFB/gdNBEAgAkKAgICAgICAgIB/gyEDIAFB/gdHIAJCgICAgICAgPC/f1FyRQRAIANCgICAgICAgPg/hL8PCyADvw8LIAFBsghNBHwgAkI/hyACfEIBQbMIIAFrrYYiAkIBiHxCACACfYO/BSAACwsvACAARAAAAAAAAAAAYiABRAAAAAAAAAAAYnJFBEAgAb0gAL2Evw8LIAAgARCBCQsvACAARAAAAAAAAAAAYiABRAAAAAAAAAAAYnJFBEAgAb0gAL2Dvw8LIAAgARCACQu6AwIFfwJ8IwBBEGsiBiQAAn4gAkUEQEQAAAAAAADw/0QAAAAAAADwfyAEGxAWDAELAkAgAykDACIBQv////8PWARAIAJBASACQQFKGyEJIAGnIQdBASEFA0AgBSAJRwRAIAMgBUEDdGopAwAiAUKAgICAEFoEQCAGIAe3OQMIDAQFIAGnIQgCfyAEBEAgByAIEEsMAQsgByAIELEBCyEHIAVBAWohBQwCCwALCyAHrQwCC0KAgICA4AAgACAGQQhqIAEQSA0BGkEBIQULIAUgAiAFIAJKGyECA0AgAiAFRwRAQoCAgIDgACAAIAYgAyAFQQN0aikDABBIDQIaAkAgBisDCCILvUL///////////8Ag0KAgICAgICA+P8AVg0AIAYrAwAiCr1C////////////AINCgYCAgICAgPj/AFoEQCAGIAo5AwgMAQsgBARAIAYgCyAKEKMKOQMIDAELIAYgCyAKEKIKOQMICyAFQQFqIQUMAQsLIAYrAwgiCr0CfyAKmUQAAAAAAADgQWMEQCAKqgwBC0GAgICAeAsiALe9UQRAIACtDAELIAoQFgshASAGQRBqJAAgAQvQAQECfyMAQRBrIgIkAAJ+IAAgAUEmEGciA0UEQCAEQQA2AgBC
 
gICAgOAADAELAkAgAykDACIBEBFFBEAgAiADKAIMIgU2AgwgBSABpyIGKAIEQf////8HcUkNASAAIAEQCyADQoCAgIAwNwMACyAEQQE2AgBCgICAgDAMAQsgBiACQQxqENcBIQcgAyACKAIMNgIMIARBADYCACAHQf//A00EQCAAIAdB//8DcRCaAwwBCyAAIAYgBUEBdGpBEGpBAhCMBAshASACQRBqJAAgAQudAQEDfyABKAIAIgJBAUgEQEEADwsgAkF/aiEEAkACQCAAKAIEQX9MBEAgACAEQQF0ai8BECIDQYD4A3FBgLgDRyACQQJIcg0BIAAgAkF+aiICQQF0ai8BECIAQYDQAGpB//8DcUGACEsNASADQf8HcSAAQf8HcUEKdHJBgIAEaiEDDAILIAAgBGotABAhAwsgBCECCyABIAI2AgAgAwvZAgICfwJ+IwBBIGsiAiQAQoCAgIDgACEHAkAgACABEF8iARAMDQAgACACQQhqQQcQQhogAkEIakE8EDwaIAJBCGogBEEDdCIFQcDCAWooAgAiBhCIARpBnj0gBHZBAXFFBEAgAkEIakEgEDwaIAJBCGogBUHEwgFqKAIAEIgBGiACQQhqQcHDARCIARogACADKQMAEF8iCBAMBEAgACABEAsgAkEIahBFDAILIAinIQNBACEEA0AgBCADKAIEQf////8HcU9FBEACQCADIAQQMSIFQSJGBEAgAkEIakHEwwEQiAEaDAELIAJBCGogBRCSARoLIARBAWohBAwBCwsgACAIEAsgAkEIakEiEDwaCyACQQhqQT4QPBogAkEIaiABEIoBGiACQQhqQcvDARCIARogAkEIaiAGEIgBGiACQQhqQT4QPBogAkEIahA4IQcLIAJBIGokACAHC4oBAQJ/IwBBEGsiAiQAIAIgATYCDANAIAAgAkEMahCmCiIDEPUFDQALAkAgAxD3BUUEQEEAIQMMAQtBASEDIAIgAUEBa
 
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
 
4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZ1bmN0aW9uKQoAICBieXRlY29kZQAgIHBjMmxpbmUAJS0yMHMgJThsbGQKAEMgZnVuY3Rpb25zAGFycmF5cwAgIGZhc3QgYXJyYXlzACUtMjBzICU4bGxkICU4bGxkICAoJTAuMWYgcGVyIGZhc3QgYXJyYXkpCgAgIGVsZW1lbnRzAGJpbmFyeSBvYmplY3RzAG91dCBvZiBtZW1vcnkAaW52YWxpZCAnaW5zdGFuY2VvZicgcmlnaHQgb3BlcmFuZABjYW5ub3QgcmVhZCBwcm9wZXJ0eSAnJXMnIG9mIG51bGwAAGNhbm5vdCByZWFkIHByb3BlcnR5ICclcycgb2YgdW5kZWZpbmVkAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiBudWxsAGNhbm5vdCBzZXQgcHJvcGVydHkgJyVzJyBvZiB1bmRlZmluZWQAcC0+Y2xhc3NfaWQgPT0gSlNfQ0xBU1NfQVJSQVkASlNfU2V0UHJvcGVydHlJbnRlcm5hbABwcm9wID09IEpTX0FUT01fbGVuZ3RoAG91dC1vZi1ib3VuZCBudW1lcmljIGluZGV4AG5vdCBhbiBvYmplY3QAb2JqZWN0IGlzIG5vdCBleHRlbnNpYmxlAHBycyAhPSBOVUxMAEpTX0RlZmluZVByb3BlcnR5AHByb3BlcnR5IGlzIG5vdCBjb25maWd1cmFibGUAbm9uIGludGVnZXIgaW5kZXggaW4gdHlwZWQgYXJyYXkAbmVnYXRpdmUgaW5kZXggaW4gdHlwZWQgYXJyYXkAb3V0LW9mLWJvdW5kIGluZGV4IGluIHR5cGVkIGFycmF5AGludmFsaWQgZGVzY3JpcHRvciBmbGFncwBjb3VsZCBub3QgZGVsZXRlIHByb3BlcnR5AGludmFsaWQgYXJyYXkgaW5kZXgAJWQAW2Z1bmN0aW9uIGJ5
 
dGVjb2RlXQBjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gc3RyaW5nAFt1bnN1cHBvcnRlZCB0eXBlXQBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX0dMT0JBTCB8fCBldmFsX3R5cGUgPT0gSlNfRVZBTF9UWVBFX01PRFVMRQBKU19FdmFsVGhpcwBSZWdFeHAAdW5leHBlY3RlZCBkYXRhIGF0IHRoZSBlbmQAICAgICAgICAgIAAAAIwAAABeAAAAXwAAAGAAAABhAAAAYgAAAGMAAABkAAAAZQAAAGYAAABQcm94eQBBoBsL0wGwLgAAgC8AAEAwAACgMAAA8DAAAEAxAAAMCwUEAgIAALIAAABnAAAAaAAAALMAAABpAAAAagAAALQAAABpAAAAagAAALUAAABAAAAAQQAAALYAAABrAAAAbAAAALcAAABrAAAAbAAAAC8AAABtAAAAbgAAALgAAABAAAAAQQAAALkAAABvAAAAcAAAAFByb21pc2UAQXN5bmNGdW5jdGlvbgBBc3luY0dlbmVyYXRvckZ1bmN0aW9uAERhdGUAT2JqZWN0AEZ1bmN0aW9uAEVycm9yAEGAHQslJlMAADBTAAA7UwAASlMAAFZTAABgUwAAaVMAAHdTAABBcnJheQBBsB0L8jBjb3B5V2l0aGluAGVudHJpZXMAZmlsbABmaW5kAGZpbmRJbmRleABmbGF0AGZsYXRNYXAAaW5jbHVkZXMAa2V5cwB2YWx1ZXMAAE51bWJlcgBCb29sZWFuAFN0cmluZwBTeW1ib2wAR2VuZXJhdG9yRnVuY3Rpb24AZXZhbAAAAAABAQICAgNBcnJheUJ1ZmZlcgBTaGFyZWRBcnJheUJ1ZmZlcgBUeXBlZEFycmF5AEJZVEVTX1BFUl9FTEVNRU5UAERhdGFWaWV3AG1yMSAhPSBOVUxMAGRlbGV0ZV93ZWFrX3JlZgBtci0+ZW1wdHkAbWFwX2RlY
 
3JlZl9yZWNvcmQAc2YtPmN1cl9zcCAhPSBOVUxMAGFzeW5jX2Z1bmNfZnJlZQBzaXplICE9IDAAanNfZGVmX21hbGxvYwAAAG51bGwAZmFsc2UAdHJ1ZQBpZgBlbHNlAHJldHVybgB2YXIAdGhpcwBkZWxldGUAdm9pZAB0eXBlb2YAbmV3AGluAGluc3RhbmNlb2YAZG8Ad2hpbGUAZm9yAGJyZWFrAGNvbnRpbnVlAHN3aXRjaABjYXNlAGRlZmF1bHQAdGhyb3cAdHJ5AGNhdGNoAGZpbmFsbHkAZnVuY3Rpb24AZGVidWdnZXIAd2l0aABjbGFzcwBjb25zdABlbnVtAGV4cG9ydABleHRlbmRzAGltcG9ydABzdXBlcgBpbXBsZW1lbnRzAGludGVyZmFjZQBsZXQAcGFja2FnZQBwcml2YXRlAHByb3RlY3RlZABwdWJsaWMAc3RhdGljAHlpZWxkAGF3YWl0AABsZW5ndGgAZmlsZU5hbWUAbGluZU51bWJlcgBtZXNzYWdlAGVycm9ycwBzdGFjawBuYW1lAHRvU3RyaW5nAHRvTG9jYWxlU3RyaW5nAHZhbHVlT2YAZXZhbABwcm90b3R5cGUAY29uc3RydWN0b3IAY29uZmlndXJhYmxlAHdyaXRhYmxlAGVudW1lcmFibGUAdmFsdWUAZ2V0AHNldABvZgBfX3Byb3RvX18AdW5kZWZpbmVkAG51bWJlcgBib29sZWFuAHN0cmluZwBvYmplY3QAc3ltYm9sAGludGVnZXIAdW5rbm93bgBhcmd1bWVudHMAY2FsbGVlAGNhbGxlcgA8ZXZhbD4APHJldD4APHZhcj4APGFyZ192YXI+ADx3aXRoPgBsYXN0SW5kZXgAdGFyZ2V0AGluZGV4AGlucHV0AGRlZmluZVByb3BlcnRpZXMAYXBwbHkAam9pbgBjb25jYXQAc3BsaXQAY29uc3RydWN0AGdldFByb3
 
RvdHlwZU9mAHNldFByb3RvdHlwZU9mAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBoYXMAZGVsZXRlUHJvcGVydHkAZGVmaW5lUHJvcGVydHkAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yAG93bktleXMAYWRkAGRvbmUAbmV4dAB2YWx1ZXMAc291cmNlAGZsYWdzAGdsb2JhbAB1bmljb2RlAHJhdwBuZXcudGFyZ2V0AHRoaXMuYWN0aXZlX2Z1bmMAPGhvbWVfb2JqZWN0PgA8Y29tcHV0ZWRfZmllbGQ+ADxzdGF0aWNfY29tcHV0ZWRfZmllbGQ+ADxjbGFzc19maWVsZHNfaW5pdD4APGJyYW5kPgAjY29uc3RydWN0b3IAYXMAZnJvbQBtZXRhACpkZWZhdWx0KgAqAE1vZHVsZQB0aGVuAHJlc29sdmUAcmVqZWN0AHByb21pc2UAcHJveHkAcmV2b2tlAGFzeW5jAGV4ZWMAZ3JvdXBzAHN0YXR1cwByZWFzb24AZ2xvYmFsVGhpcwB0b0pTT04AT2JqZWN0AEFycmF5AEVycm9yAE51bWJlcgBTdHJpbmcAQm9vbGVhbgBTeW1ib2wAQXJndW1lbnRzAE1hdGgASlNPTgBEYXRlAEZ1bmN0aW9uAEdlbmVyYXRvckZ1bmN0aW9uAEZvckluSXRlcmF0b3IAUmVnRXhwAEFycmF5QnVmZmVyAFNoYXJlZEFycmF5QnVmZmVyAFVpbnQ4Q2xhbXBlZEFycmF5AEludDhBcnJheQBVaW50OEFycmF5AEludDE2QXJyYXkAVWludDE2QXJyYXkASW50MzJBcnJheQBVaW50MzJBcnJheQBGbG9hdDMyQXJyYXkARmxvYXQ2NEFycmF5AERhdGFWaWV3AE1hcABTZXQAV2Vha01hcABXZWFrU2V0AE1hcCBJdGVyYXRvcgBTZXQgSXRlcmF0b3IAQXJyYXk
 
gSXRlcmF0b3IAU3RyaW5nIEl0ZXJhdG9yAFJlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAR2VuZXJhdG9yAFByb3h5AFByb21pc2UAUHJvbWlzZVJlc29sdmVGdW5jdGlvbgBQcm9taXNlUmVqZWN0RnVuY3Rpb24AQXN5bmNGdW5jdGlvbgBBc3luY0Z1bmN0aW9uUmVzb2x2ZQBBc3luY0Z1bmN0aW9uUmVqZWN0AEFzeW5jR2VuZXJhdG9yRnVuY3Rpb24AQXN5bmNHZW5lcmF0b3IARXZhbEVycm9yAFJhbmdlRXJyb3IAUmVmZXJlbmNlRXJyb3IAU3ludGF4RXJyb3IAVHlwZUVycm9yAFVSSUVycm9yAEludGVybmFsRXJyb3IAPGJyYW5kPgBTeW1ib2wudG9QcmltaXRpdmUAU3ltYm9sLml0ZXJhdG9yAFN5bWJvbC5tYXRjaABTeW1ib2wubWF0Y2hBbGwAU3ltYm9sLnJlcGxhY2UAU3ltYm9sLnNlYXJjaABTeW1ib2wuc3BsaXQAU3ltYm9sLnRvU3RyaW5nVGFnAFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUAU3ltYm9sLmhhc0luc3RhbmNlAFN5bWJvbC5zcGVjaWVzAFN5bWJvbC51bnNjb3BhYmxlcwBTeW1ib2wuYXN5bmNJdGVyYXRvcgAAKG5ld19oYXNoX3NpemUgJiAobmV3X2hhc2hfc2l6ZSAtIDEpKSA9PSAwAEpTX1Jlc2l6ZUF0b21IYXNoAGF0b20gPCBydC0+YXRvbV9zaXplAF9fSlNfQXRvbVRvVmFsdWUAc2gtPmhlYWRlci5yZWZfY291bnQgPT0gMABqc19mcmVlX3NoYXBlMABpICE9IDAASlNfRnJlZUF0b21TdHJ1Y3QAcnQtPmF0b21fY291bnQgPj0gMABwLT5yZWZfY291bnQgPT0gMABmcmVlX3plcm9fcmVmY291bnQA
 
cy0+aXNfd2VhawByZXNldF93ZWFrX3JlZgAhbXItPmVtcHR5AAEAAAAFAAEUBQABFQUAARUFAAEXBQABFwEAAQABAAEAAQABAAEAAQABAAEAAQABAAIAAQUDAAEKAQEAAAECAQABAwIAAQECAAECAwABAgQAAQMGAAECAwABAwQAAQQFAAEDAwABBAQAAQUFAAECAgABBAQAAQMDAAEDAwABBAQAAQUFAAMCAQ0DAQENAwEADQMCAQ0DAgANAwABDQMDAQoBAQAAAQAAAAEBAgABAAAAAQICAAECAAABAQAAAQEAAAYAABgFAQEPAwIBCgECAQABAQEAAQEBAAUAARcFAAEXBQABFwUBABcFAQAXBQIAFwECAwABAwAABgAAGAYAABgGAQAYBQEBFwUBAhcFAgAXAQIBAAEDAAABAwEAAQIBAAECAgABAwAAAQMBAAEEAAAFAgEXBQEBFwECAgABAgEAAQICAAEDAgABAwIAAgMDBQYCARgCAwEFBgICGAYDAxgDAAEQAwEAEAMBARADAAERAwEAEQMBAREDAAESAwEAEgMBARIDAAAQAwABEAMBABADAQAQAwABEgMBABIDAQASAwAAEAUBABYFAQAWBQAAFgUAARYFAAAWAQEAAAEBAQABAQEAAQICAAoBABoKAgEaCgEAGgoBABoKAQAaCgEAGgcAAhkHAAIZBwACGQUAAhcBAQEAAQEDAAEBAwABAQMAAgMFBQEBAQABAQIAAQMAAAEEBAABBAQAAgQFBQEAAAABAQIAAQECAAEBAgABAQEAAQEBAAEBAQABAQEAAQEBAAEBAgABAQIAAgAABwIAAAcCAQAHAQEBAAEBAQABAQEAAQIBAAUAARcBAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQIBAAECAQABAgEAAQEBAAEAA
 
AADAAAKAwAACgUAABYHAAEZBwABGQcBABkHAAEZCwACGwcAAhkHAAIZBwEBGQcBAhkHAQEZBQEBEwUAABMBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQECAAEGAwABCwIAAQgCAAEIAQABAAIAAQcCAQAHAgEBBwEAAQIBAAECAQABAgEAAQIBAQACAQEAAgEBAAIBAQACAQEBAgEBAQIBAQECAQEBAgEAAQMBAAEDAQABAwEAAQMBAQADAQEAAwEBAAMBAQADAQEBAwEBAQMBAQEDAQEBAwEAAQQBAAEEAQABBAEAAQQBAQAEAQEABAEBAAQBAQAEAQEBBAEBAQQBAQEEAQEBBAEBAQACAQAJAgEACQIAAAkDAAAMAQEBDgEBAQ4BAQEOAQEBDgEBAQABAQEAAQEBAAEBAQBwLT5tYXJrID09IDAAZ2NfZGVjcmVmAHZhcl9yZWYtPmlzX2RldGFjaGVkAG1hcmtfY2hpbGRyZW4AcC0+cmVmX2NvdW50ID4gMABnY19kZWNyZWZfY2hpbGQAZ2Nfc2NhbgBwLT5nY19vYmpfdHlwZSA9PSBKU19HQ19PQkpfVFlQRV9KU19PQkpFQ1QgfHwgcC0+Z2Nfb2JqX3R5cGUgPT0gSlNfR0NfT0JKX1RZUEVfRlVOQ1RJT05fQllURUNPREUAZ2NfZnJlZV9jeWNsZXMASlNfQXRvbUdldFN0clJUADxudWxsPgAhYXRvbV9pc19mcmVlKHApAGNpcmN1bGFyIHByb3RvdHlwZSBjaGFpbgBwcm94eTogYmFkIHByb3RvdHlwZQBwcm94eTogaW5jb25zaXN0ZW50IHByb3RvdHlwZQByZXZva2VkIHByb3h5AG9wZXJhbmQgJ3Byb3RvdHlwZScgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdABpbnRlcnJ1cHRlZAAlcyBpcyBub3QgaW5pdGlhbGl6ZWQAbG
 
V4aWNhbCB2YXJpYWJsZQAAAHEAAAByAAAAcwAAAENvdWxkIG5vdCBmaW5kIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGNpcmN1bGFyIHJlZmVyZW5jZSB3aGVuIGxvb2tpbmcgZm9yIGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnAGV4cG9ydCAnJXMnIGluIG1vZHVsZSAnJXMnIGlzIGFtYmlndW91cwAocHItPnUuaW5pdC5yZWFsbV9hbmRfaWQgJiAzKSA9PSAwAEpTX0RlZmluZUF1dG9Jbml0UHJvcGVydHkAJyVzJyBpcyBub3QgZGVmaW5lZABudW1faW5kZXggPT0gbnVtX2tleXNfY291bnQASlNfR2V0T3duUHJvcGVydHlOYW1lc0ludGVybmFsAHN0cl9pbmRleCA9PSBudW1fa2V5c19jb3VudCArIHN0cl9rZXlzX2NvdW50AHN5bV9pbmRleCA9PSBhdG9tX2NvdW50AEpTX0F0b21Jc0FycmF5SW5kZXgAYXRvbTFfaXNfaW50ZWdlciAmJiBhdG9tMl9pc19pbnRlZ2VyAG51bV9rZXlzX2NtcABqc19nZXRfYXRvbV9pbmRleABub3QgY29uZmlndXJhYmxlAG5vIHNldHRlciBmb3IgcHJvcGVydHkAJyVzJyBpcyByZWFkLW9ubHkAcC0+c2hhcGUtPmhlYWRlci5yZWZfY291bnQgPT0gMQBhZGRfcHJvcGVydHkAJWxsZABjYW5ub3QgY3JlYXRlIG51bWVyaWMgaW5kZXggaW4gdHlwZWQgYXJyYXkAdmFyX3JlZi0+aGVhZGVyLnJlZl9jb3VudCA+IDAAZnJlZV92YXJfcmVmAEpTX0F0b21Jc051bWVyaWNJbmRleDEAAG4AZgBpAG4AaQB0AHkAbmZpbml0eQAhc2gtPmlzX2hhc2hlZABjb21wYWN0X3Byb3BlcnRpZXMAbmV
 
3X3NpemUgPD0gc2gtPnByb3Bfc2l6ZQBqID09IChzaC0+cHJvcF9jb3VudCAtIHNoLT5kZWxldGVkX3Byb3BfY291bnQpACVzIG9iamVjdCBleHBlY3RlZABjYW5ub3QgY29udmVydCBzeW1ib2wgdG8gbnVtYmVyAHRvUHJpbWl0aXZlAEluZmluaXR5AGludmFsaWQgYXJyYXkgbGVuZ3RoAE5hTgAlLipmAG4gPCBidWZfc2l6ZQBqc19mY3Z0MQAlKy4qZQBtdXN0IGJlIGNhbGxlZCB3aXRoIG5ldwBub3QgYSBmdW5jdGlvbgBkZXJpdmVkIGNsYXNzIGNvbnN0cnVjdG9yIG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciB1bmRlZmluZWQAY2xhc3MgY29uc3RydWN0b3JzIG11c3QgYmUgaW52b2tlZCB3aXRoICduZXcnAHVuc3VwcG9ydGVkIHJlZmVyZW5jZSB0byAnc3VwZXInAGl0ZXJhdG9yIGRvZXMgbm90IGhhdmUgYSB0aHJvdyBtZXRob2QAaW52YWxpZCB0aHJvdyB2YXIgdHlwZSAlZAAndGhpcycgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgb25jZQBpbnZhbGlkIHJldCB2YWx1ZQBpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QAaXRlcmF0b3JfY2xvc2VfcmV0dXJuAHZhbHVlIGhhcyBubyBwcm9wZXJ0eQBpbnZhbGlkIG9wY29kZTogcGM9JXUgb3Bjb2RlPTB4JTAyeAAADQAQAC0AMQBpbXBvcnQubWV0YSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgY29udGV4dABleHBlY3RpbmcgPGJyYW5kPiBwcml2YXRlIGZpZWxkAGludmFsaWQgYnJhbmQgb24gb2JqZWN0AHJlZGVjbGFyYXRpb24gb2YgJyVzJwA8aW5wdXQ+AG5v
 
dCBhIG9iamVjdABzdHJpbmcgZXhwZWN0ZWQAbm8gZnVuY3Rpb24gZmlsZW5hbWUgZm9yIGltcG9ydCgpAGNhbm5vdCBkZWZpbmUgdmFyaWFibGUgJyVzJwB2YWx1ZSBpcyBub3QgaXRlcmFibGUAIV9fSlNfQXRvbUlzVGFnZ2VkSW50KGRlc2NyKQBKU19OZXdTeW1ib2xGcm9tQXRvbQBkZXNjciA8IHJ0LT5hdG9tX3NpemUAbm90IGEgc3ltYm9sAHByaXZhdGUgY2xhc3MgZmllbGQgJyVzJyBkb2VzIG5vdCBleGlzdABwcml2YXRlIGNsYXNzIGZpZWxkICclcycgYWxyZWFkeSBleGlzdHMAWwBdAGdldCAAc2V0IABwYXJlbnQgY2xhc3MgbXVzdCBiZSBjb25zdHJ1Y3RvcgBwYXJlbnQgcHJvdG90eXBlIG11c3QgYmUgYW4gb2JqZWN0IG9yIG51bGwAYi0+ZnVuY19raW5kID09IEpTX0ZVTkNfTk9STUFMAGpzX29wX2RlZmluZV9jbGFzcwByZWNlaXZlciBpcyBub3QgYW4gb2JqZWN0AHNldHRlciBpcyBmb3JiaWRkZW4AaW52YWxpZCBpbmRleCBmb3IgYXBwZW5kAG51bGwgb3IgdW5kZWZpbmVkIGFyZSBmb3JiaWRkZW4AaW52YWxpZCAnaW4nIG9wZXJhbmQAbm90IGEgY29uc3RydWN0b3IAICAgIGF0ICVzADolZAA8YW5vbnltb3VzPgAgKCVzACAobmF0aXZlKQBkdXBsaWNhdGUgZXhwb3J0ZWQgbmFtZSAnJXMnAGNvdWxkIG5vdCBsb2FkIG1vZHVsZSAnJXMnAC4ALi4AYnl0ZWNvZGUgZnVuY3Rpb24gZXhwZWN0ZWQAZXZhbCBpcyBub3Qgc3VwcG9ydGVkAGNpcmN1bGFyIHJlZmVyZW5jZQBnZXQgJXMAc2V0ICVzAGNhbm5vd
 
CBjb252ZXJ0IHRvIG9iamVjdABub3JtYWxpemUAQbDOAAv1ARknAAADAAAAAAAAAHQAAABiYWQgbm9ybWFsaXphdGlvbiBmb3JtAGludmFsaWQgcmVndWxhciBleHByZXNzaW9uIGZsYWdzACVzAGZsYWdzAHNvdXJjZQBnbG9iYWwAaWdub3JlQ2FzZQBtdWx0aWxpbmUAZG90QWxsAHVuaWNvZGUAc3RpY2t5AGV4ZWMAY29tcGlsZQB0ZXN0AHRvU3RyaW5nAFtTeW1ib2wucmVwbGFjZV0AW1N5bWJvbC5tYXRjaF0AW1N5bWJvbC5tYXRjaEFsbF0AW1N5bWJvbC5zZWFyY2hdAFtTeW1ib2wuc3BsaXRdAEGw0AAL4AN7JwAAAQEAAHUAAAAAAAAAgScAAAEBAAB2AAAAAAAAAIgnAAABAgEAdwAAAAAAAACPJwAAAQICAHcAAAAAAAAAmicAAAECBAB3AAAAAAAAAKQnAAABAggAdwAAAAAAAACrJwAAAQIQAHcAAAAAAAAAsycAAAECIAB3AAAAAAAAALonAAADAAAAAQAAADAAAAC/JwAAAwAAAAIAAAB4AAAAxycAAAMAAAABAAAAeQAAAMwnAAADAAAAAAAAAHoAAADVJwAAAwAAAAIAAAB7AAAA5icAAAMAAAABAAAAfAAAAPUnAAADAAAAAQAAAH0AAAAHKAAAAwAAAAEAAAB+AAAAFygAAAMAAAACAAAAfwAAACg/OikAb3V0IG9mIG1lbW9yeSBpbiByZWdleHAgZXhlY3V0aW9uAGZsYWdzIG11c3QgYmUgdW5kZWZpbmVkAFJlZ0V4cCBleGVjIG1ldGhvZCBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbABub3QgYSBzdHJpbmcAeQBbU3ltYm9sLnNwZWNpZXNdAL8pAAABAQAAgAAAAAAAAABuZXh0AFtTeW1ib2wudG9TdHJpbmdUYWddAF
 
JlZ0V4cCBTdHJpbmcgSXRlcmF0b3IAQaDUAAvXCuApAAADAAAAAAwAAIEAAADlKQAAAQMAAPopAAAAAAAAdW5leHBlY3RlZCBlbmQgb2YgY29tbWVudAB1bmV4cGVjdGVkIGNoYXJhY3RlcgBpbnZhbGlkIGNoYXJhY3RlciBpbiBhIEpTT04gc3RyaW5nAG9jdGFsIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIG5vdCBhbGxvd2VkIGluIHN0cmljdCBtb2RlAG1hbGZvcm1lZCBlc2NhcGUgc2VxdWVuY2UgaW4gc3RyaW5nIGxpdGVyYWwAaW52YWxpZCBVVEYtOCBzZXF1ZW5jZQB1bmV4cGVjdGVkIGVuZCBvZiBzdHJpbmcAZXhwZWN0aW5nIHByb3BlcnR5IG5hbWUAdW5leHBlY3RlZCBlbmQgb2YgaW5wdXQAdW5leHBlY3RlZCB0b2tlbjogJyUuKnMnAGV4cGVjdGluZyAnJWMnACAAXHUlMDR4AEFycmF5IGxvbyBsb25nAEpTT04AAAAAAAAAAJQrAAADCAAAwCsAAAMAAABwYXJzZQBzdHJpbmdpZnkAsCsAAAMAAAACAAAAggAAALYrAAADAAAAAwAAAIMAAADlKQAAAQMAAJQrAAAAAAAAcHJveHk6IGluY29uc2lzdGVudCBpc0V4dGVuc2libGUAcHJveHk6IGluY29uc2lzdGVudCBwcmV2ZW50RXh0ZW5zaW9ucwBwcm94eTogaW5jb25zaXN0ZW50IGdldE93blByb3BlcnR5RGVzY3JpcHRvcgBpbnZhbGlkIGdldHRlcgBpbnZhbGlkIHNldHRlcgBjYW5ub3QgaGF2ZSBzZXR0ZXIvZ2V0dGVyIGFuZCB2YWx1ZSBvciB3cml0YWJsZQBwcm94eTogcHJvcGVydGllcyBtdXN0IGJlIHN0cmluZ3Mgb3Igc3ltYm9scwBwcm94eTogZHVwbGljYXR
 
lIHByb3BlcnR5AHByb3h5OiB0YXJnZXQgcHJvcGVydHkgbXVzdCBiZSBwcmVzZW50IGluIHByb3h5IG93bktleXMAcHJveHk6IHByb3BlcnR5IG5vdCBwcmVzZW50IGluIHRhcmdldCB3ZXJlIHJldHVybmVkIGJ5IG5vbiBleHRlbnNpYmxlIHByb3h5AHByb3h5OiBpbmNvbnNpc3RlbnQgZGVsZXRlUHJvcGVydHkAcHJveHk6IGRlZmluZVByb3BlcnR5IGV4Y2VwdGlvbgBwcm94eTogaW5jb25zaXN0ZW50IGRlZmluZVByb3BlcnR5AHByb3h5OiBpbmNvbnNpc3RlbnQgaGFzAHByb3h5OiBpbmNvbnNpc3RlbnQgZ2V0AHByb3h5OiBpbmNvbnNpc3RlbnQgc2V0AHByb3h5OiBjYW5ub3Qgc2V0IHByb3BlcnR5AHJldm9jYWJsZQBGLgAAAwAAAAIAAACEAAAAc2V0AGdldABoYXMAZGVsZXRlAGNsZWFyAHNpemUAZm9yRWFjaAB2YWx1ZXMAa2V5cwBlbnRyaWVzAFtTeW1ib2wuaXRlcmF0b3JdAE1hcABgLgAAAwAAAAIBAACFAAAAZC4AAAMAAAABAQAAhgAAAGguAAADAAAAAQEAAIcAAABsLgAAAwAAAAEBAACIAAAAcy4AAAMAAAAAAQAAiQAAAHkuAAABAgAAigAAAAAAAAB+LgAAAwAAAAEBAACLAAAAhi4AAAMABAAAAQAAjAAAAI0uAAADAAAAAAEAAIwAAACSLgAAAwAIAAABAACMAAAAmi4AAAMJAACSLgAA/////+UpAAABAwAArC4AAAAAAABhZGQAU2V0AEGA3wALtwFwLwAAAwABAAEBAACFAAAAaC4AAAMAAQABAQAAhwAAAGwuAAADAAEAAQEAAIgAAABzLgAAAwABAAABAACJAAAAeS4AAAECAQCKAAAAAAAAAH4uAAADAAEAAQEA
 
AIsAAACGLgAAAwABAAABAACMAAAAjS4AAAMJAACGLgAA/////5ouAAADCQAAhi4AAP////+SLgAAAwAJAAABAACMAAAA5SkAAAEDAAB0LwAAAAAAAFdlYWtNYXAAQcDgAAtXYC4AAAMAAgACAQAAhQAAAGQuAAADAAIAAQEAAIYAAABoLgAAAwACAAEBAACHAAAAbC4AAAMAAgABAQAAiAAAAOUpAAABAwAAMDAAAAAAAABXZWFrU2V0AEGg4QALggNwLwAAAwADAAEBAACFAAAAaC4AAAMAAwABAQAAhwAAAGwuAAADAAMAAQEAAIgAAADlKQAAAQMAAJAwAAAAAAAATWFwIEl0ZXJhdG9yAAAAAOApAAADAAAAAAwAAI0AAADlKQAAAQMAAOAwAAAAAAAAcyAhPSBOVUxMAGpzX21hcF9pdGVyYXRvcl9uZXh0AFNldCBJdGVyYXRvcgAAAAAA4CkAAAMAAQAADAAAjQAAAOUpAAABAwAALzEAAAAAAABzZXQvYWRkIGlzIG5vdCBhIGZ1bmN0aW9uAAAAAAAAAL8pAAABAQAAgAAAAAAAAAByZXNvbHZpbmcgZnVuY3Rpb24gYWxyZWFkeSBzZXQAcHJvbWlzZSBzZWxmIHJlc29sdXRpb24AYXJnYyA9PSA1AHByb21pc2VfcmVhY3Rpb25fam9iAGFyZ2MgPT0gMwBqc19wcm9taXNlX3Jlc29sdmVfdGhlbmFibGVfam9iAHRoZW4AY2F0Y2gAZmluYWxseQBBsOQAC2YQMgAAAwAAAAIAAACOAAAAFTIAAAMAAAABAAAAjwAAABsyAAADAAAAAQAAAJAAAADlKQAAAQMAACwOAAAAAAAAcmVzb2x2ZQByZWplY3QAYWxsAGFsbFNldHRsZWQAYW55AHJhY2UAQaDlAAvWAXAyAAADAAAAAQEAAJEAAAB4MgAAAwABAAEBAACRAAAAfzIAAAMAAAABAQAAkgAAAIMyA
 
AADAAEAAQEAAJIAAACOMgAAAwACAAEBAACSAAAAkjIAAAMAAAABAAAAkwAAAL8pAAABAQAAgAAAAAAAAAByZWplY3RlZABmdWxmaWxsZWQAYXN5bmMgAGZ1bmN0aW9uACBhbm9ueW1vdXMoAAopIHsKAAp9KQAAAAAAAAAA5SkAAAEDAAA0DgAAAAAAAFtTeW1ib2wuYXN5bmNJdGVyYXRvcl0AQYDnAAuTCGAzAAADAAAAAAAAAJQAAAByZXR1cm4AdGhyb3cAAAAA4CkAAAMAAAABAQAAlQAAAJAzAAADAAEAAQEAAJUAAACXMwAAAwACAAEBAACVAAAAbm90IGFuIEFzeW5jLWZyb20tU3luYyBJdGVyYXRvcgBBc3luY0dlbmVyYXRvcgAA4CkAAAMAAAABAQAAlgAAAJAzAAADAAEAAQEAAJYAAACXMwAAAwACAAEBAACWAAAA5SkAAAEDAADwMwAAAAAAAG5vdCBhbiBBc3luY0dlbmVyYXRvciBvYmplY3QASlNfSXNVbmRlZmluZWQoZnVuY19yZXQpAGpzX2FzeW5jX2dlbmVyYXRvcl9yZXN1bWVfbmV4dABzLT5zdGF0ZSA9PSBKU19BU1lOQ19HRU5FUkFUT1JfU1RBVEVfQVdBSVRJTkdfUkVUVVJOIHx8IHMtPnN0YXRlID09IEpTX0FTWU5DX0dFTkVSQVRPUl9TVEFURV9DT01QTEVURUQAanNfYXN5bmNfZ2VuZXJhdG9yX3Jlc29sdmVfZnVuY3Rpb24Acy0+c3RhdGUgPT0gSlNfQVNZTkNfR0VORVJBVE9SX1NUQVRFX0VYRUNVVElORwAA5SkAAAEDAABCDgAAAAAAAHZhbHVlT2YAW1N5bWJvbC50b1ByaW1pdGl2ZV0AdG9VVENTdHJpbmcAdG9HTVRTdHJpbmcAdG9JU09TdHJpbmcAdG9EYXRlU3RyaW5nAHRvVGltZVN0cmluZwB0b0xvY2
 
FsZVN0cmluZwB0b0xvY2FsZURhdGVTdHJpbmcAdG9Mb2NhbGVUaW1lU3RyaW5nAGdldFRpbWV6b25lT2Zmc2V0AGdldFRpbWUAZ2V0WWVhcgBnZXRGdWxsWWVhcgBnZXRVVENGdWxsWWVhcgBnZXRNb250aABnZXRVVENNb250aABnZXREYXRlAGdldFVUQ0RhdGUAZ2V0SG91cnMAZ2V0VVRDSG91cnMAZ2V0TWludXRlcwBnZXRVVENNaW51dGVzAGdldFNlY29uZHMAZ2V0VVRDU2Vjb25kcwBnZXRNaWxsaXNlY29uZHMAZ2V0VVRDTWlsbGlzZWNvbmRzAGdldERheQBnZXRVVENEYXkAc2V0VGltZQBzZXRNaWxsaXNlY29uZHMAc2V0VVRDTWlsbGlzZWNvbmRzAHNldFNlY29uZHMAc2V0VVRDU2Vjb25kcwBzZXRNaW51dGVzAHNldFVUQ01pbnV0ZXMAc2V0SG91cnMAc2V0VVRDSG91cnMAc2V0RGF0ZQBzZXRVVENEYXRlAHNldE1vbnRoAHNldFVUQ01vbnRoAHNldFllYXIAc2V0RnVsbFllYXIAc2V0VVRDRnVsbFllYXIAdG9KU09OAEGg7wALtgZgNQAAAwAAAAAAAACXAAAAzCcAAAMAEwAAAQAAmAAAAGg1AAADAAAAAQAAAJkAAAB9NQAAAwADAAABAACYAAAAiTUAAAMJAAB9NQAA/////5U1AAADACMAAAEAAJgAAAChNQAAAwARAAABAACYAAAArjUAAAMAEgAAAQAAmAAAALs1AAADADMAAAEAAJgAAADKNQAAAwAxAAABAACYAAAA3TUAAAMAMgAAAQAAmAAAAPA1AAADAAAAAAAAAJoAAAACNgAAAwAAAAAAAACXAAAACjYAAAMAAQEAAQAAmwAAABI2AAADAAEAAAEAAJsAAAAeNgAAAwAAAAABAACbAAAALTYAAAMAEQAAAQAAmwAAADY
 
2AAADABAAAAEAAJsAAABCNgAAAwAhAAABAACbAAAASjYAAAMAIAAAAQAAmwAAAFU2AAADADEAAAEAAJsAAABeNgAAAwAwAAABAACbAAAAajYAAAMAQQAAAQAAmwAAAHU2AAADAEAAAAEAAJsAAACDNgAAAwBRAAABAACbAAAAjjYAAAMAUAAAAQAAmwAAAJw2AAADAGEAAAEAAJsAAACsNgAAAwBgAAABAACbAAAAvzYAAAMAcQAAAQAAmwAAAMY2AAADAHAAAAEAAJsAAADQNgAAAwAAAAEAAACcAAAA2DYAAAMAcQYBAQAAnQAAAOg2AAADAHAGAQEAAJ0AAAD7NgAAAwBxBQIBAACdAAAABjcAAAMAcAUCAQAAnQAAABQ3AAADAHEEAwEAAJ0AAAAfNwAAAwBwBAMBAACdAAAALTcAAAMAcQMEAQAAnQAAADY3AAADAHADBAEAAJ0AAABCNwAAAwAxAgEBAACdAAAASjcAAAMAMAIBAQAAnQAAAFU3AAADADEBAgEAAJ0AAABeNwAAAwAwAQIBAACdAAAAajcAAAMAAAABAAAAngAAAHI3AAADADEAAwEAAJ0AAAB+NwAAAwAwAAMBAACdAAAAjTcAAAMAAAABAAAAnwAAAG5vdCBhIERhdGUgb2JqZWN0AERhdGUgdmFsdWUgaXMgTmFOAEludmFsaWQgRGF0ZQAlLjNzLCAlMDJkICUuM3MgJTAqZCAAQeD1AAsVU3VuTW9uVHVlV2VkVGh1RnJpU2F0AEGA9gALogFKYW5GZWJNYXJBcHJNYXlKdW5KdWxBdWdTZXBPY3ROb3ZEZWMAJS4zcyAlLjNzICUwMmQgJTAqZAAlMDRkACUrMDdkAC0lMDJkLSUwMmRUACUwMmQvJTAyZC8lMCpkACUwMmQ6JTAyZDolMDJkIEdNVAAlMDJkJTAyZAAlMDJkOiUwMmQ6JTAyZC4lMDNkWgAlMDJkOiUwMmQ6JTAyZCAlY00A
 
QbD3AAtkHwAAABwAAAAfAAAAHgAAAB8AAAAeAAAAHwAAAB8AAAAeAAAAHwAAAB4AAAAfAAAAaW52YWxpZCBoaW50AG9iamVjdCBuZWVkcyB0b0lTT1N0cmluZyBtZXRob2QAbm93AFVUQwBBoPgAC7AsDTwAAAMAAAAAAAAAoAAAALArAAADAAAAAQAAAKEAAAARPAAAAwAAAAcAAACiAAAAc2YgIT0gTlVMTABfX0pTX0V2YWxJbnRlcm5hbABKU19WQUxVRV9HRVRfVEFHKHNmLT5jdXJfZnVuYykgPT0gSlNfVEFHX09CSkVDVABqc19jbGFzc19oYXNfYnl0ZWNvZGUocC0+Y2xhc3NfaWQpAGludmFsaWQgZmlyc3QgY2hhcmFjdGVyIG9mIHByaXZhdGUgbmFtZQBvY3RhbCBsaXRlcmFscyBhcmUgZGVwcmVjYXRlZCBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIG51bWJlciBsaXRlcmFsACUuKnMAdXNlIHN0cmljdAB1c2Ugc3RyaXAAdG9vIG1hbnkgbG9jYWwgdmFyaWFibGVzAGZ1bmN0aW9uIG5hbWUgZXhwZWN0ZWQAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIgaW4gbW9kdWxlIGNvZGUAaW52YWxpZCByZWRlZmluaXRpb24gb2YgZ2xvYmFsIGlkZW50aWZpZXIAbWlzc2luZyBmb3JtYWwgcGFyYW1ldGVyAGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgZ2V0dGVyIG9yIHNldHRlcgAnJXMnIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHJlZGVmaW5pdGlvbiBvZiBsZXhpY2FsIGlkZW50aWZpZXIAaW52YWxpZCByZWRlZmluaXRpb24gb2YgcGFyYW1ldGVyIG5hbWUAaW52YWxpZ
 
CByZWRlZmluaXRpb24gb2YgYSB2YXJpYWJsZQB0b28gbWFueSBhcmd1bWVudHMAdW5leHBlY3RlZCBlbmQgb2YgcmVnZXhwAHVuZXhwZWN0ZWQgbGluZSB0ZXJtaW5hdG9yIGluIHJlZ2V4cAB1bmV4cGVjdGVkIGVsbGlwc2lzIHRva2VuAGFzc2lnbm1lbnQgcmVzdCBwcm9wZXJ0eSBtdXN0IGJlIGxhc3QAaW52YWxpZCBkZXN0cnVjdHVyaW5nIHRhcmdldABtaXNzaW5nIGJpbmRpbmcgcGF0dGVybi4uLgByZXN0IGVsZW1lbnQgY2Fubm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlAHJlc3QgZWxlbWVudCBtdXN0IGJlIHRoZSBsYXN0IG9uZQBpbnZhbGlkIGFzc2lnbm1lbnQgc3ludGF4AHRvbyBjb21wbGljYXRlZCBkZXN0cnVjdHVyaW5nIGV4cHJlc3Npb24AUmVnRXhwIGFyZSBub3Qgc3VwcG9ydGVkACdhcmd1bWVudHMnIGlkZW50aWZpZXIgaXMgbm90IGFsbG93ZWQgaW4gY2xhc3MgZmllbGQgaW5pdGlhbGl6ZXIAZXhwZWN0aW5nIHRhcmdldABuZXcudGFyZ2V0IG9ubHkgYWxsb3dlZCB3aXRoaW4gZnVuY3Rpb25zAHN1cGVyKCkgaXMgb25seSB2YWxpZCBpbiBhIGRlcml2ZWQgY2xhc3MgY29uc3RydWN0b3IAJ3N1cGVyJyBpcyBvbmx5IHZhbGlkIGluIGEgbWV0aG9kAGludmFsaWQgdXNlIG9mICdzdXBlcicAbWV0YSBleHBlY3RlZABpbXBvcnQubWV0YSBvbmx5IHZhbGlkIGluIG1vZHVsZSBjb2RlAGludmFsaWQgdXNlIG9mICdpbXBvcnQoKScAdW5leHBlY3RlZCB0b2tlbiBpbiBleHByZXNzaW9uOiAnJS4qcycAdG
 
VtcGxhdGUgbGl0ZXJhbCBjYW5ub3QgYXBwZWFyIGluIGFuIG9wdGlvbmFsIGNoYWluAFRvbyBtYW55IGNhbGwgYXJndW1lbnRzAHByaXZhdGUgY2xhc3MgZmllbGQgZm9yYmlkZGVuIGFmdGVyIHN1cGVyAGV4cGVjdGluZyBmaWVsZCBuYW1lAGV4cGVjdGVkICd9JyBhZnRlciB0ZW1wbGF0ZSBleHByZXNzaW9uAGNsYXNzIHN0YXRlbWVudCByZXF1aXJlcyBhIG5hbWUAaW52YWxpZCBtZXRob2QgbmFtZQBpbnZhbGlkIGZpZWxkIG5hbWUAcHJvcGVydHkgY29uc3RydWN0b3IgYXBwZWFycyBtb3JlIHRoYW4gb25jZQBwcml2YXRlIGNsYXNzIGZpZWxkIGlzIGFscmVhZHkgZGVmaW5lZAA8c2V0PgBmZC0+Ynl0ZV9jb2RlLmJ1ZltkZWZpbmVfY2xhc3NfcG9zXSA9PSBPUF9kZWZpbmVfY2xhc3MAc2V0X29iamVjdF9uYW1lX2NvbXB1dGVkACguLi5hKXtzdXBlciguLi5hKTt9ACgpe30AZHVwbGljYXRlIF9fcHJvdG9fXyBwcm9wZXJ0eSBuYW1lAHVuZXhwZWN0ZWQgJ3lpZWxkJyBrZXl3b3JkAHlpZWxkIGluIGRlZmF1bHQgZXhwcmVzc2lvbgCam5ydnqChoq2ur59jYW5ub3QgbWl4ID8/IHdpdGggJiYgb3IgfHwAdW5leHBlY3RlZCAnYXdhaXQnIGtleXdvcmQAYXdhaXQgaW4gZGVmYXVsdCBleHByZXNzaW9uAHVucGFyZW50aGVzaXplZCB1bmFyeSBleHByZXNzaW9uIGNhbid0IGFwcGVhciBvbiB0aGUgbGVmdC1oYW5kIHNpZGUgb2YgJyoqJwBjYW5ub3QgZGVsZXRlIGEgZGlyZWN0IHJlZmVyZW5jZSBpbiBzdHJpY3QgbW9
 
kZQBjYW5ub3QgZGVsZXRlIGEgcHJpdmF0ZSBjbGFzcyBmaWVsZABpbnZhbGlkIGx2YWx1ZSBpbiBzdHJpY3QgbW9kZQBpbnZhbGlkIGZvciBpbi9vZiBsZWZ0IGhhbmQtc2lkZQBpbnZhbGlkIGluY3JlbWVudC9kZWNyZW1lbnQgb3BlcmFuZABpbnZhbGlkIGFzc2lnbm1lbnQgbGVmdC1oYW5kIHNpZGUAbGFiZWwgPj0gMCAmJiBsYWJlbCA8IHMtPmxhYmVsX2NvdW50AHVwZGF0ZV9sYWJlbABscy0+cmVmX2NvdW50ID49IDAAaW52YWxpZCBwcm9wZXJ0eSBuYW1lAGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AHlpZWxkIGlzIGEgcmVzZXJ2ZWQgaWRlbnRpZmllcgBpbnZhbGlkIHZhcmlhYmxlIG5hbWUgaW4gc3RyaWN0IG1vZGUAaW52YWxpZCBsZXhpY2FsIHZhcmlhYmxlIG5hbWUAc3BlY2lhbCA9PSBQVVRfTFZBTFVFX05PS0VFUCB8fCBzcGVjaWFsID09IFBVVF9MVkFMVUVfTk9LRUVQX0RFUFRIAHB1dF9sdmFsdWUAc2V0X29iamVjdF9uYW1lACJ1c2Ugc3RyaWN0IiBub3QgYWxsb3dlZCBpbiBmdW5jdGlvbiB3aXRoIGRlZmF1bHQgb3IgZGVzdHJ1Y3R1cmluZyBwYXJhbWV0ZXIAaW52YWxpZCBmdW5jdGlvbiBuYW1lIGluIHN0cmljdCBjb2RlAGludmFsaWQgYXJndW1lbnQgbmFtZSBpbiBzdHJpY3QgY29kZQBkdXBsaWNhdGUgYXJndW1lbnQgbmFtZXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjb250ZXh0AGlkZW50aWZpZXIgZXhwZWN0ZWQAaW52YWxpZCBleHBvcnQg
 
c3ludGF4AGZyb20gY2xhdXNlIGV4cGVjdGVkACdsZXQnIGlzIG5vdCBhIHZhbGlkIGxleGljYWwgaWRlbnRpZmllcgBtaXNzaW5nIGluaXRpYWxpemVyIGZvciBjb25zdCB2YXJpYWJsZQB2YXJpYWJsZSBuYW1lIGV4cGVjdGVkAGV4cGVjdGluZyAnYXMnAGludmFsaWQgaW1wb3J0IGJpbmRpbmcAZHVwbGljYXRlIGltcG9ydCBiaW5kaW5nAHRvbyBtYW55IGNsb3N1cmUgdmFyaWFibGVzAGR1cGxpY2F0ZSBsYWJlbCBuYW1lAHJldHVybiBub3QgaW4gYSBmdW5jdGlvbgBsaW5lIHRlcm1pbmF0b3Igbm90IGFsbG93ZWQgYWZ0ZXIgdGhyb3cAbGV4aWNhbCBkZWNsYXJhdGlvbnMgY2FuJ3QgYXBwZWFyIGluIHNpbmdsZS1zdGF0ZW1lbnQgY29udGV4dABmb3IgYXdhaXQgaXMgb25seSB2YWxpZCBpbiBhc3luY2hyb25vdXMgZnVuY3Rpb25zAGR1cGxpY2F0ZSBkZWZhdWx0AGludmFsaWQgc3dpdGNoIHN0YXRlbWVudABleHBlY3RpbmcgY2F0Y2ggb3IgZmluYWxseQBpbnZhbGlkIGtleXdvcmQ6IHdpdGgAZnVuY3Rpb24gZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAY2xhc3MgZGVjbGFyYXRpb25zIGNhbid0IGFwcGVhciBpbiBzaW5nbGUtc3RhdGVtZW50IGNvbnRleHQAJ2ZvciBhd2FpdCcgbG9vcCBzaG91bGQgYmUgdXNlZCB3aXRoICdvZicAYSBkZWNsYXJhdGlvbiBpbiB0aGUgaGVhZCBvZiBhIGZvci0lcyBsb29wIGNhbid0IGhhdmUgYW4gaW5pdGlhbGl6ZXIAb2YAa
 
W4AZXhwZWN0ZWQgJ29mJyBvciAnaW4nIGluIGZvciBjb250cm9sIGV4cHJlc3Npb24AY29udGludWUgbXVzdCBiZSBpbnNpZGUgbG9vcABicmVhayBtdXN0IGJlIGluc2lkZSBsb29wIG9yIHN3aXRjaABicmVhay9jb250aW51ZSBsYWJlbCBub3QgZm91bmQAdW5zdXBwb3J0ZWQga2V5d29yZDogJXMAY3Bvb2xfaWR4ID49IDAAanNfY3JlYXRlX2Z1bmN0aW9uAHMtPmlzX2V2YWwgfHwgcy0+Y2xvc3VyZV92YXJfY291bnQgPT0gMABhZGRfZXZhbF92YXJpYWJsZXMAZXhwb3J0ZWQgdmFyaWFibGUgJyVzJyBkb2VzIG5vdCBleGlzdAByZXNvbHZlX3ZhcmlhYmxlcwBsYWIxID49IDAgJiYgbGFiMSA8IHMtPmxhYmVsX2NvdW50AGJjX2J1Zltwb3NdID09IE9QX2xhYmVsAG9wdGltaXplX3Njb3BlX21ha2VfcmVmAG9wdGltaXplX3Njb3BlX21ha2VfZ2xvYmFsX3JlZgB2YXJfa2luZCAhPSBKU19WQVJfTk9STUFMAHJlc29sdmVfc2NvcGVfcHJpdmF0ZV9maWVsZAB2YXJfa2luZCA9PSBKU19WQVJfUFJJVkFURV9TRVRURVIAdW5kZWZpbmVkIHByaXZhdGUgZmllbGQgJyVzJwBzLT5sYWJlbF9zbG90c1tsYWJlbF0uZmlyc3RfcmVsb2MgPT0gTlVMTABza2lwX2RlYWRfY29kZQByZXNvbHZlX2xhYmVscwBscy0+YWRkciA9PSAtMQBkaWZmID09IChpbnQxNl90KWRpZmYAZGlmZiA9PSAoaW50OF90KWRpZmYAbGFiZWxfc2xvdHNbaV0uZmlyc3RfcmVsb2MgPT0gTlVMTABmaW5kX2p1bXBfdGFyZ2V0AGludmFsaWQgb3Bjb2RlIC
 
hvcD0lZCwgcGM9JWQpAGJ5dGVjb2RlIGJ1ZmZlciBvdmVyZmxvdyAob3A9JWQsIHBjPSVkKQBzdGFjayB1bmRlcmZsb3cgKG9wPSVkLCBwYz0lZCkAc3RhY2sgb3ZlcmZsb3cgKG9wPSVkLCBwYz0lZCkAdW5jb25zaXN0ZW50IHN0YWNrIHNpemU6ICVkICVkIChwYz0lZCkAbmFtZQBtZXNzYWdlAAAAAADMJwAAAwAAAAAAAACjAAAAz00AAAMDAABuDgAAAAAAANRNAAADAwAAvgoAAAAAAAA6IABpbnZhbGlkIHByb3BlcnR5IGFjY2VzcwBwcm94eSBwcmV2ZW50RXh0ZW5zaW9ucyBoYW5kbGVyIHJldHVybmVkIGZhbHNlAGNyZWF0ZQBnZXRQcm90b3R5cGVPZgBzZXRQcm90b3R5cGVPZgBkZWZpbmVQcm9wZXJ0eQBkZWZpbmVQcm9wZXJ0aWVzAGdldE93blByb3BlcnR5TmFtZXMAZ2V0T3duUHJvcGVydHlTeW1ib2xzAGlzRXh0ZW5zaWJsZQBwcmV2ZW50RXh0ZW5zaW9ucwBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IAZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9ycwBpcwBhc3NpZ24Ac2VhbABmcmVlemUAaXNTZWFsZWQAaXNGcm96ZW4AX19nZXRDbGFzcwBmcm9tRW50cmllcwAAAAAAAABaTgAAAwAAAAIAAACkAAAAYU4AAAMAAAABAQAApQAAAHBOAAADAAAAAgAAAKYAAAB/TgAAAwAAAAMBAACnAAAAjk4AAAMAAAACAAAAqAAAAJ9OAAADAAAAAQAAAKkAAACzTgAAAwAAAAEAAACqAAAAjS4AAAMAAAABAQAAqwAAAIYuAAADAAEAAQEAAKsAAACSLgAAAwACAAEBAACrAAAAyU4AAAMAAAABAQAArAAAANZOAAADAAAAAQEAAK0AAAD
 
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
 
AAAAAAAb3V0IG9mIGJvdW5kAGludmFsaWQgYnl0ZU9mZnNldABpbnZhbGlkIGJ5dGVMZW5ndGgAAAEAAAACAAAAAQAAAAQAAAABAAAAAQAAAAgAAAAQAAAAAQAAACAAQYTcAQttAgAAAAAAAAABAAAAAQAAAAEAAADhUgAA7FIAAPxSAABQAQAAUQEAAFABAABSAQAAUwEAAFQBAABVAQAAVgEAAFcBAABYAQAAWQEAAFgBAABaAQAAWwEAAFwBAABdAQAAXgEAAF8BAAAfDwcDAQBBgN0BC7oCgAAAAAAIAAAAAAEAAAAgAAAAAAQBAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAAAAAAKAAkADgAgACEAoAChAIAWgRYAIAsgKCAqIC8gMCBfIGAgADABMP/+AP8AQcTfAQuRBBAAAAD+//+H/v//BwAAAAAQAP8D/v//h/7//wdleHRyYW5lb3VzIGNoYXJhY3RlcnMgYXQgdGhlIGVuZAB0b28gbWFueSBpbWJyaWNhdGVkIHF1YW50aWZpZXJzAHN0YWNrIG92ZXJmbG93AHN5bnRheCBlcnJvcgBub3RoaW5nIHRvIHJlcGVhdABpbnZhbGlkIGdyb3VwIG5hbWUAZHVwbGljYXRlIGdyb3VwIG5hbWUAaW52YWxpZCBncm91cAB0b28gbWFueSBjYXB0dX
 
JlcwBleHBlY3RpbmcgZ3JvdXAgbmFtZQBncm91cCBuYW1lIG5vdCBkZWZpbmVkAGludmFsaWQgZGVjaW1hbCBlc2NhcGUgaW4gcmVndWxhciBleHByZXNzaW9uAGJhY2sgcmVmZXJlbmNlIG91dCBvZiByYW5nZSBpbiByZWd1bGFyIGV4cHJlc3Npb24AaW52YWxpZCByZXBldGl0aW9uIGNvdW50AGV4cGVjdGluZyAnJWMnAGludmFsaWQgY2xhc3MgcmFuZ2UAXiRcLiorPygpW117fXwvAGludmFsaWQgZXNjYXBlIHNlcXVlbmNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbgB1bmV4cGVjdGVkIGVuZABtYWxmb3JtZWQgdW5pY29kZSBjaGFyAAAA0HEAAJBvAADgcQAAAQAwADoAQeDjAQvFAwQAMAA6AEEAWwBfAGAAYQB7AGV4cGVjdGluZyAneycgYWZ0ZXIgXHAAdW5rbm93biB1bmljb2RlIHByb3BlcnR5IHZhbHVlAGV4cGVjdGluZyAnfScAU2NyaXB0AHNjAFNjcmlwdF9FeHRlbnNpb25zAHVua25vd24gdW5pY29kZSBzY3JpcHQAR2VuZXJhbF9DYXRlZ29yeQBnYwB1bmtub3duIHVuaWNvZGUgZ2VuZXJhbCBjYXRlZ29yeQB1bmtub3duIHVuaWNvZGUgcHJvcGVydHkgbmFtZQB0b28gbWFueSByYW5nZXMAAAAAAAEDBQEBAQEFBQUBAgIDBQUBAQECAgMDBQUBBQERb3V0IG9mIG1lbW9yeQBvcGNvZGUgPCBSRU9QX0NPVU5UAC90bXAvcXVpY2tqcy9saWJyZWdleHAuYwBjb21wdXRlX3N0YWNrX3NpemUAKHBvcyArIGxlbikgPD0gYmNfYnVmX2xlbgBzdGFja19zaXplID4gMAB2YWwgPCBzLT5jYXB0dXJlX2NvdW50AGxyZV9leGV
 
jX2JhY2t0cmFjawB2YWwyIDwgcy0+Y2FwdHVyZV9jb3VudABBsOcBC6QLMJogAACaMABzgVoAMBdgADAHbACzgW8AABdwAAAHfAAAgX8AQDCAAMMBmACQgZgAQAaZAECQnAC0gaQAQC6lADABvABAhrwAcIG/AAABwAAwgcAAQATBADABwwBAgsMAMILEAECCxQAwAccAMIHHADAByABAgsgAMIHJADABygAAgcoAMAHLADCBywBAAswAAAHNADABzgAwgc4AAAHPADCBzwBABtAAMAHTAECC0wAwgdQAQALWADAB1wBAgtcAMILYAECE2QAwgdsAQALcAEAC3gAAgd8AUAPiAFCD4wBQA+UAQJDmAACB7gBAEu8AtAH4AFCD+ABAAvoAMAH7ADCB+wBAKPwAMAEQAUASEQExAR0BQIIdATCBHgExAR8BAYIfAUCCIAEwgSEBMAEiATCBIgFACiMBAQEoAQGBKAEBASkBAIEpAQABKgEAAisBAIEsAQCBLQEBAS4BAAEwAQGBMAEAgTEBAYEyAQEBMwEAATQBAIE0AQEBNQEBgTUBAQE2AQCBNwEBgTgBAAE5AQCBOgEBgT4BAAFAAQEBQQEAgUEBAYFDAQABRAEAgUQBAAJFAQABRgEAAUkBAYFOAQEBTwFzgaIBQAS4AUACuwEAg70BMIG/ATABwwEwA8QBMAHGATACxwHQAcgBMJHIATCJ0QEAAdYBAIPWAdMB2AEAkdgBcwHhAQCJ4QEAAeYBAILmATCB5wFzAegBc4HoAXOB6gFzAesBAIHrAUAY7AFzAfgBc4H4AQAB+QEAgfkBoAH6AXOB+gFAgvsBMIH8AUAC/QEwg/4BMBAAAjAgCAIAIBgCABAoAkAiMAJANkUCMAFgAkCOYAIAgWcCQGBoAjCmmAIAprACtYHDAjEmUAgxgWMIMYFmCAAraAgAg34IEVDQCRAG+AkgBvwJdAFADnSBQA50AUEOdIFBDnQBQg50
 
gUIOdAFDDoCBQw6AAUQOMCtIDjCDXg4BgbwOAYG+DgEBxw5AfgAPQBg/D7UBSw+2gUsPtgFMD7aBTA+3AU0PgIFNDzABTw9AYFAPAAiADzAIhA8ABogPMAaMDwAIkA8wCJQPAAiYDzAInA8ABqAPMAakD7ABqA8AgagP0wGpDwCBqQ/TAaoPAIGqD9MBqw8AgasPMIGsDzCBrQ8wga4PMIGvDwAIsA8wCLQPAAK4DwAEuQ8AArsPAQK8DwECvQ8BAr4PtwjAD2cIxA+4CMgPaAjMD7gI0A9oCNQPAALYD7kB2Q+xgdkPuQHaD7EB2w/XgdsPMALcDzAC3Q9hAd4PcwHfD7kB4Q+ygeEPugHiD7IB4w/YgeMPMATkD2IB5g8AAugP0AHpD9CB6Q+wAesP0IHrDzAC7A8wAu0PAQLwD9MB8Q/TgfEPugHyDwGB8g+wAfMP04HzDzAC9A8wAvUPMQH2D7oB+Q+ygfkPuwH6D7IB+w/ZgfsPMAL8DzAC/Q9iAf4PoAGTEKABlRCggZUQMQGZEAEBpxAxELAQARC4EECCwRAxGlsSARpoEjEvABYBLxgWQAIwFjABMRYwgTEWMAEyFgCBMhYAATMWQIYzFjCBNhYwATcWMIE3FjABOBZAAjkWQII6FjACPxZAZEAWQIR1FkACeRYAJoAWAIGTFgCBlhZALiBTQBxAU0AOkVNAPplTQIS8UzCBvlNACr9TQILFUzCBxlNABMhTAQHKU0AUy1MwAdVTMIHVUzAB1lMwgdZTMAHXUzAB2FMwgdhTMAHZUzGB2VNADNpTQALhUzEB4lMwgeJTMAHjU0CE41NAgvpTAYGpVSBQuFWyAYB9soGAfbIBgX3agYF92gGCfbOBgn2zAYN9u4GJfbsBin27gYp9vAGLfbuBi30xmpB/AZqgfzEoAIIBKBSCMSRYggEkbIIxM0CGATNghjEgUIwBIGCMMSAgtwEgMLcxIoD0ASKR9ABB4PIBC+MDA
 
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
 
AmJYE8jgELgj4+PEZeCQL+JpIBCvIBA4YBAlIRBJIlFVhAMg6cTgECkgUI8H4lBcIFAmIpAroK0jp6JjoOsirSJKqONgIkhq4CLgq+NO4CL0YsoQJ+LhIkrtggxCYKIgIkJMoRAv5GIiRjQk4uJQNQxiJqB0ZCOidCMh4nSjoOJQPGOQKSJxSgJGACBi4n2MTKAm4mnMB+AiIqtj0GUOIePibeVgI35KgAIMAeJryAIJ4lBSINgS2iJQIWEuoaYiUP0ALYz0ICKgWBMqoFUxSIvOYadg0CTgkWIsUH/toOxOI2AlSCORU8wkA4BBEEEhoiJQaGNRdWG7DSJUpWJbAUFQO8AQcCMAgujEvoGAIQJAPAKAHAMAPQNAEoQIBoYIHQbIN0gAAyoAFqqIBr/AK0OATgSIcEVIeUZIaodIYzRQUrhIfABDgAAAABBZGxhbSxBZGxtAEFob20sQWhvbQBBbmF0b2xpYW5fSGllcm9nbHlwaHMsSGx1dwBBcmFiaWMsQXJhYgBBcm1lbmlhbixBcm1uAEF2ZXN0YW4sQXZzdABCYWxpbmVzZSxCYWxpAEJhbXVtLEJhbXUAQmFzc2FfVmFoLEJhc3MAQmF0YWssQmF0awBCZW5nYWxpLEJlbmcAQmhhaWtzdWtpLEJoa3MAQm9wb21vZm8sQm9wbwBCcmFobWksQnJhaABCcmFpbGxlLEJyYWkAQnVnaW5lc2UsQnVnaQBCdWhpZCxCdWhkAENhbmFkaWFuX0Fib3JpZ2luYWwsQ2FucwBDYXJpYW4sQ2FyaQBDYXVjYXNpYW5fQWxiYW5pYW4sQWdoYgBDaGFrbWEsQ2FrbQBDaGFtLENoYW0AQ2hlcm9rZWUsQ2hlcgBDaG9yYXNtaWFuLENocnMAQ29tbW9uLFp5eXkAQ29wdGljLENvcHQsUWFhYwBDdW5laWZvcm0sWHN1eABDeXByaW90LENwcnQAQ3lyaWxsaWMsQ3lybABEZX
 
NlcmV0LERzcnQARGV2YW5hZ2FyaSxEZXZhAERpdmVzX0FrdXJ1LERpYWsARG9ncmEsRG9ncgBEdXBsb3lhbixEdXBsAEVneXB0aWFuX0hpZXJvZ2x5cGhzLEVneXAARWxiYXNhbixFbGJhAEVseW1haWMsRWx5bQBFdGhpb3BpYyxFdGhpAEdlb3JnaWFuLEdlb3IAR2xhZ29saXRpYyxHbGFnAEdvdGhpYyxHb3RoAEdyYW50aGEsR3JhbgBHcmVlayxHcmVrAEd1amFyYXRpLEd1anIAR3VuamFsYV9Hb25kaSxHb25nAEd1cm11a2hpLEd1cnUASGFuLEhhbmkASGFuZ3VsLEhhbmcASGFuaWZpX1JvaGluZ3lhLFJvaGcASGFudW5vbyxIYW5vAEhhdHJhbixIYXRyAEhlYnJldyxIZWJyAEhpcmFnYW5hLEhpcmEASW1wZXJpYWxfQXJhbWFpYyxBcm1pAEluaGVyaXRlZCxaaW5oLFFhYWkASW5zY3JpcHRpb25hbF9QYWhsYXZpLFBobGkASW5zY3JpcHRpb25hbF9QYXJ0aGlhbixQcnRpAEphdmFuZXNlLEphdmEAS2FpdGhpLEt0aGkAS2FubmFkYSxLbmRhAEthdGFrYW5hLEthbmEAS2F5YWhfTGksS2FsaQBLaGFyb3NodGhpLEtoYXIAS2htZXIsS2htcgBLaG9qa2ksS2hvagBLaGl0YW5fU21hbGxfU2NyaXB0LEtpdHMAS2h1ZGF3YWRpLFNpbmQATGFvLExhb28ATGF0aW4sTGF0bgBMZXBjaGEsTGVwYwBMaW1idSxMaW1iAExpbmVhcl9BLExpbmEATGluZWFyX0IsTGluYgBMaXN1LExpc3UATHljaWFuLEx5Y2kATHlkaWFuLEx5ZGkATWFrYXNhcixNYWthAE1haGFqYW5pLE1haGoATWFsYXlhbGFtLE1seW0ATWFuZGFpYyxNYW5kAE1hbml
 
jaGFlYW4sTWFuaQBNYXJjaGVuLE1hcmMATWFzYXJhbV9Hb25kaSxHb25tAE1lZGVmYWlkcmluLE1lZGYATWVldGVpX01heWVrLE10ZWkATWVuZGVfS2lrYWt1aSxNZW5kAE1lcm9pdGljX0N1cnNpdmUsTWVyYwBNZXJvaXRpY19IaWVyb2dseXBocyxNZXJvAE1pYW8sUGxyZABNb2RpLE1vZGkATW9uZ29saWFuLE1vbmcATXJvLE1yb28ATXVsdGFuaSxNdWx0AE15YW5tYXIsTXltcgBOYWJhdGFlYW4sTmJhdABOYW5kaW5hZ2FyaSxOYW5kAE5ld19UYWlfTHVlLFRhbHUATmV3YSxOZXdhAE5rbyxOa29vAE51c2h1LE5zaHUATnlpYWtlbmdfUHVhY2h1ZV9IbW9uZyxIbW5wAE9naGFtLE9nYW0AT2xfQ2hpa2ksT2xjawBPbGRfSHVuZ2FyaWFuLEh1bmcAT2xkX0l0YWxpYyxJdGFsAE9sZF9Ob3J0aF9BcmFiaWFuLE5hcmIAT2xkX1Blcm1pYyxQZXJtAE9sZF9QZXJzaWFuLFhwZW8AT2xkX1NvZ2RpYW4sU29nbwBPbGRfU291dGhfQXJhYmlhbixTYXJiAE9sZF9UdXJraWMsT3JraABPcml5YSxPcnlhAE9zYWdlLE9zZ2UAT3NtYW55YSxPc21hAFBhaGF3aF9IbW9uZyxIbW5nAFBhbG15cmVuZSxQYWxtAFBhdV9DaW5fSGF1LFBhdWMAUGhhZ3NfUGEsUGhhZwBQaG9lbmljaWFuLFBobngAUHNhbHRlcl9QYWhsYXZpLFBobHAAUmVqYW5nLFJqbmcAUnVuaWMsUnVucgBTYW1hcml0YW4sU2FtcgBTYXVyYXNodHJhLFNhdXIAU2hhcmFkYSxTaHJkAFNoYXZpYW4sU2hhdwBTaWRkaGFtLFNpZGQAU2lnbldyaXRpbmcsU2dudwBTaW5oYWxh
 
LFNpbmgAU29nZGlhbixTb2dkAFNvcmFfU29tcGVuZyxTb3JhAFNveW9tYm8sU295bwBTdW5kYW5lc2UsU3VuZABTeWxvdGlfTmFncmksU3lsbwBTeXJpYWMsU3lyYwBUYWdhbG9nLFRnbGcAVGFnYmFud2EsVGFnYgBUYWlfTGUsVGFsZQBUYWlfVGhhbSxMYW5hAFRhaV9WaWV0LFRhdnQAVGFrcmksVGFrcgBUYW1pbCxUYW1sAFRhbmd1dCxUYW5nAFRlbHVndSxUZWx1AFRoYWFuYSxUaGFhAFRoYWksVGhhaQBUaWJldGFuLFRpYnQAVGlmaW5hZ2gsVGZuZwBUaXJodXRhLFRpcmgAVWdhcml0aWMsVWdhcgBWYWksVmFpaQBXYW5jaG8sV2NobwBXYXJhbmdfQ2l0aSxXYXJhAFllemlkaSxZZXppAFlpLFlpaWkAWmFuYWJhemFyX1NxdWFyZSxaYW5iAEHwngILsRTAGZlFhRmZRa4ZgEWOGYBFhBmWRYAZnkWAGeFgRaYZhEWEGYENkxngDzeDK4AZgisBgyuAGYArA4ArgBmAK4AZgisAgCsAkysAviuNGo8r4CQdgTfgSB0ApQUBsQUBggUAtjQHmjQDhTQKhASAGYUEgBmNBIAZgAQAgASAGZ8EgBmJBIo3mQSAN+ALBIAZoQSNhwC7hwGCh68EsZENumMBgmOtewGOewCbUAGAUACKhzSUBACRBAqOBIAZnATQH4M3jh+BGZkfgwsAhwsBgQsBlQsAhgsAgAsCgwsBiAsBgQsBgwsHgAsDgQsAhAsBmAsBgi4AhS4DgS4BlS4Ahi4AgS4AgS4AgS4BgC4AhC4DgS4Bgi4CgC4Ggy4AgC4GkC4JgiwAiCwAgiwAlSwAhiwAgSwAhCwBiSwAgiwAgiwBgCwOgywBiywGhiwAgnAAh3ABgXABlXAAhnAAgXAAhHABiHABgXABgnAGgnADgXAAhHABkXAJgY4Ah
 
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
 
gAAAAIqjjYAAQIqjowSAAECKo4AAAACKo7AXEsAAwEiljsAEQEvnl0AAQEvzs0tAABDbixVbmFzc2lnbmVkAEx1LFVwcGVyY2FzZV9MZXR0ZXIATGwsTG93ZXJjYXNlX0xldHRlcgBMdCxUaXRsZWNhc2VfTGV0dGVyAExtLE1vZGlmaWVyX0xldHRlcgBMbyxPdGhlcl9MZXR0ZXIATW4sTm9uc3BhY2luZ19NYXJrAE1jLFNwYWNpbmdfTWFyawBNZSxFbmNsb3NpbmdfTWFyawBOZCxEZWNpbWFsX051bWJlcixkaWdpdABObCxMZXR0ZXJfTnVtYmVyAE5vLE90aGVyX051bWJlcgBTbSxNYXRoX1N5bWJvbABTYyxDdXJyZW5jeV9TeW1ib2wAU2ssTW9kaWZpZXJfU3ltYm9sAFNvLE90aGVyX1N5bWJvbABQYyxDb25uZWN0b3JfUHVuY3R1YXRpb24AUGQsRGFzaF9QdW5jdHVhdGlvbgBQcyxPcGVuX1B1bmN0dWF0aW9uAFBlLENsb3NlX1B1bmN0dWF0aW9uAFBpLEluaXRpYWxfUHVuY3R1YXRpb24AUGYsRmluYWxfUHVuY3R1YXRpb24AUG8sT3RoZXJfUHVuY3R1YXRpb24AWnMsU3BhY2VfU2VwYXJhdG9yAFpsLExpbmVfU2VwYXJhdG9yAFpwLFBhcmFncmFwaF9TZXBhcmF0b3IAQ2MsQ29udHJvbCxjbnRybABDZixGb3JtYXQAQ3MsU3Vycm9nYXRlAENvLFByaXZhdGVfVXNlAExDLENhc2VkX0xldHRlcgBMLExldHRlcgBNLE1hcmssQ29tYmluaW5nX01hcmsATixOdW1iZXIAUyxTeW1ib2wAUCxQdW5jdHVhdGlvbixwdW5jdABaLFNlcGFyYXRvcgBDLE90aGVyAEHwvgILsAgOAAAAPgAAAMABAAAADgAAAPAAAAAAfwAAAIADAQAAPE
 
FTQ0lJX0hleF9EaWdpdCxBSGV4AEJpZGlfQ29udHJvbCxCaWRpX0MARGFzaABEZXByZWNhdGVkLERlcABEaWFjcml0aWMsRGlhAEV4dGVuZGVyLEV4dABIZXhfRGlnaXQsSGV4AElEU19CaW5hcnlfT3BlcmF0b3IsSURTQgBJRFNfVHJpbmFyeV9PcGVyYXRvcixJRFNUAElkZW9ncmFwaGljLElkZW8ASm9pbl9Db250cm9sLEpvaW5fQwBMb2dpY2FsX09yZGVyX0V4Y2VwdGlvbixMT0UATm9uY2hhcmFjdGVyX0NvZGVfUG9pbnQsTkNoYXIAUGF0dGVybl9TeW50YXgsUGF0X1N5bgBQYXR0ZXJuX1doaXRlX1NwYWNlLFBhdF9XUwBRdW90YXRpb25fTWFyayxRTWFyawBSYWRpY2FsAFJlZ2lvbmFsX0luZGljYXRvcixSSQBTZW50ZW5jZV9UZXJtaW5hbCxTVGVybQBTb2Z0X0RvdHRlZCxTRABUZXJtaW5hbF9QdW5jdHVhdGlvbixUZXJtAFVuaWZpZWRfSWRlb2dyYXBoLFVJZGVvAFZhcmlhdGlvbl9TZWxlY3RvcixWUwBXaGl0ZV9TcGFjZSxzcGFjZQBCaWRpX01pcnJvcmVkLEJpZGlfTQBFbW9qaQBFbW9qaV9Db21wb25lbnQsRUNvbXAARW1vamlfTW9kaWZpZXIsRU1vZABFbW9qaV9Nb2RpZmllcl9CYXNlLEVCYXNlAEVtb2ppX1ByZXNlbnRhdGlvbixFUHJlcwBFeHRlbmRlZF9QaWN0b2dyYXBoaWMsRXh0UGljdABEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50LERJAElEX1N0YXJ0LElEUwBDYXNlX0lnbm9yYWJsZSxDSQBBU0NJSQBBbHBoYWJldGljLEFscGhhAEFueQBBc3NpZ25lZABDYXNlZABDaGFuZ2VzX1doZW5fQ2F
 
zZWZvbGRlZCxDV0NGAENoYW5nZXNfV2hlbl9DYXNlbWFwcGVkLENXQ00AQ2hhbmdlc19XaGVuX0xvd2VyY2FzZWQsQ1dMAENoYW5nZXNfV2hlbl9ORktDX0Nhc2Vmb2xkZWQsQ1dLQ0YAQ2hhbmdlc19XaGVuX1RpdGxlY2FzZWQsQ1dUAENoYW5nZXNfV2hlbl9VcHBlcmNhc2VkLENXVQBHcmFwaGVtZV9CYXNlLEdyX0Jhc2UAR3JhcGhlbWVfRXh0ZW5kLEdyX0V4dABJRF9Db250aW51ZSxJREMATG93ZXJjYXNlLExvd2VyAE1hdGgAVXBwZXJjYXNlLFVwcGVyAFhJRF9Db250aW51ZSxYSURDAFhJRF9TdGFydCxYSURTAEGwxwILtCCBACgAlwAqAIGAKgCXwCsAFYEsAJcALQCBQC0AlwAuABVBLgCZAS8AFiAwAEIIQABCikQAQgRKAJYATAAXgUwAQgJNAEJDTgAvwU8AQsNQAL9AUgBCA1MAQglVAEIIWgCWAF4AQkNeAIHAXwBCAWgAQsFrAIUBcQAXw3EAREhzAESDdwBCg3kAvgJ7AJdBfABCAX0ARAR+AEIOgABCgYcARIeJAIMErAAXA7YAgwK4ABQC0ACWANEAgADdAJeA3gCAgN8AlwDhAD5B4QCAwOEAvgTiAK6D6gCugvIArQH0AC7B9AADQfUAAwP8AIFA/gA+AgABvsABAb4BAwG+QAYBvkAOAT4CFAG+wBUBvgEXAUSBHQFEQTABRAI0AUSBNQFEgzYBRIM4AUSGOgFEAT4BhcBhAa6CiAEvQp0BhAGwAYTAtAGEQEoChEBMAoQATQIuBFYCLsFyAiABdwKEwHcChMCMAoSAjQKuQZYChICXAoQA0gIuwdICIAHXAoQA5QKugfIChAASA4QAMAMiwTEDLoEyA66BUgOEgHYDrgF3A4XAjAOFwKwDLwG3A4EAwwOEwNADhEDTA4SA1AOEwNUD
 
hADXA4RA2gOEwNwDLkHdA4XA3QOEAN4DhUDeA4RA4AOEwOQDhEDnA4SA6AOEwOkDhADrA4RA7gOEgAkEgQA/BISEwQaEgMQGhMHOBiAB0AaEwNAGgwNLBx/ETAeDF08HgQBeB4PSZgdEHYAHQomOB0QYkwdCDZ8HFoKlB4WApge+wKYHRA2oB0SgrgciAcAHRIPAByIBwgdEg8IHIgHEB0SCxAciAcYHRILGBz4RyAdEgtAHIgHSB0SC0gciAdQHRIPUBz5M1geAQNwHvoDcB4DA3Ae+AN0HgEDdB76A3QeAwN0HvgDeB4BA3ge+gN4HgMDeB74A3weAQN8HIAjgByAI5AcgCOgHvgXsB4DA7ge+AO8Hl0DvB4CA7wcXwe8HPkTwB4BA8ge+gPIHgMDyB74D8weAwPQHroL1B4DA9gc+Q/cHgMD4B64D+QeAwPoHPgH7BwKB+we+g/wHgED+B76A/geAwP4HvgD/B4BA/weXgP8HHgEACJWEAAiBQAQIl8AFCIEACQiXQAkImYAJCIHACwiFwAwIsQANCIWADQixwA0IlwEPCJfBEQizwBUIgcAXCJUFHAiBwB4IFQIfCB8FIAiDhSIIFUQlCJcAKggZAUAIgYBACL/AQAgZQUEIgcBBCL9AQggthUIIgUBFCJeARQiVQkYIlwBICJlASAiXgEgIgQBJCICASQiBAEoIAoFKCJUESwgfQk0IgUBOCJnATgiDAk8IlUJRCBkBVAibgFQIGcZUCJfAVwiBAFgIl0BYCJmAWAiXwFgIgQBZCJdAWQiZgFkIm8BZCJcAWgiBQFoIl4BaCJnAWgiVAlsIl0BcCJmAXAiXwFwIgQBdCJdAXQiZgF0Im8BdCJcAXgiBQF4Il4BeCJnAXggVAl8ImUBiCD6BZgi+gGsIvkFzCL4AgQi+QIIIvgCDCL4BiQiFAIsIsUCLCIXAiwixAIwIvkCQCL4AkQi+wZEIvgGYCL5CmwhEAZ0IRAGeC
 
EQBoAhEAaEIRAGiCD4CqwhEArgIIIK6CB5BygifBBgJI0UaCZfAHAmlBB0JK0UfCZvAIQmhBCIJJUUkCZnAJgklDScJH40tCR8NNAmBgDoJswCDCpkAnQqXQJ0KmYCdCr4AtwoVAR8LgcBbC4HApwuBwLwLrQTAC61EwguthMQLg/PGCy2F4AsDHeMLLYjxC4EAAAyDgg0MhAsTDIRCGQwiARwMIsEcDCKBHQwiQR4MIgEfDIQAJQwjwSYMhIAnDIXAJwyECysMhEIxDCIBNAwiwTQMIoE1DCJBNgwiATcMhAA9DCDCPQyEgD8MhcA/DC1KTAwfRVEMn8pTDK0VWQwDh2QMQQeADImAgwwpwYMMqUGEDIkAhQwpQYUMqcKFDIkAhwyPQIcMjYCHDEESiAwDApEMmQCUDKNElAwjg5YMLQeYDK+Emwyhwp0MtQCfDLNAnwyFgJ8MgxigDCNCrAwjRa0Ml8CvDKEEsAylQbIMlwCzDJlAswyXgLMMmcCzDK0XtAyFwL8MswHADLHAwAyzAMEMMUHBDLXAwQyzAMIMsUHCDDMBwwwxgcMMhQDEDLFAxAwzgcQMhQDFDLVAxQy3gMUMtcDFDLEAxgw1QcYMs8DGDLEBxwyzwMcMtQDIDLNAyAyxgcgML0LJDDFBygy1wMoMsQDLDLNAywy1gMsMscDLDC8BzAy1gMwMs8DMDLUAzQyxQM0MtYDNDIXAzQyxAs4Ms0DPDLGAzwyFwM8MsQHQDLPA0AyxAdEMtcDRDLMA0gyFQNIMtYDSDIXA0gwzAdMMsYHTDLNA1AyFgNQMscDUDLMA1QyFQNUMtYDVDLHA1QwhBdYMJYXYDKUC2wyZQNwMF4HcDJkA3QyXQd0MJwHeDIWC3gyJwN8MPwTgDJkA4gybQOIMv4PiDBlC5AwFQuUMP0PmDDHB5wyFQOgMsYHoDIVA6QwHgekMiQDqDJdA6gwZguoMnYDrDI3A6ww/COwMBQHwDJuA8A
 
yXwfAMm4DxDJnA8QwXBfIMmYD0DBfB9AwZQfUMl8D1DJsA9gyZQPYMF4L2DBmB9wyhBPgMJUX6DCXF/AwlQf8MmcD/DAMBpymBANwpAwH+KQMC1yqBQNoqghRAPoJ/Sj6CP2o+AqGKPhABmz6CL5w+kMWzPpcBwD4ZwcA+P0HBPq/CxD6EQcc+rQTIPoFAyj4Eg8o+oAPMPqACzj6EgM8+IAHQPiDB0D6uhNE+hcDTPi0x1D6ty/Q+L4n6Pi0C/z4vLwA/pYIXP7HAGD+vBxk/r/8cP6WBPD+vZD0/MSBUPzGbZD8xAXw/s4N8P7FAfj+9gH4/u8B+P7MAfz8DBYQ/rQGMPxXDjD8tRo4/A8yRP5XGlz+vAZw/hQCdPy+FnT+tOqA/L0S9Px9vwD8fwdc/rV/YP4EA6D8fT+g/H4PwPx+D8j8fg/Q/n4H2P4MH+D+SgSZEksAqRBKBS0QSwdJEEsIuRRKBbkWSAE5GkoNXdBLDbnQfDQB1H40GdR8NDXWfgxN1H4kVdR8NGnUfjSB1FRAndZ9DL3WfRTF1Hw00dR+NOnWVA0F1H0RDdZ+DRXUfjUd1lQdOdZ+DUnUfjVR1Hw1bdR+NYXUfDWh1H41udR8NdXUfjXt1Hw2CdR+NiHUfDY91H42VdR8NnHUfjaJ1AwGpdZ8IqnWBQK51n4OudYFAsHWfjLB1gcC2dS0Dt3WfiLh1gcC8dZ8DvXWBwL51nwy/dYFAxXUtg8V1nwjHdYFAy3Wfg8t1gUDNdZ+MzXWBwNN1LQPUdZ+I1XWBwNl1nwPadYHA23WfDNx1gUDidS2D4nWfCOR1gUDodZ+D6HWBQOp1n4zqdYHA8HUtBPF1H4XzdR8F9nUfhfh1HwX7dR+F/XUtAoB7rU2BewNCiHuBwIl7LUWKewMEjXuBgJB7A9yRey0FoHutyKJ7g0Soe63IqnuXAEB8IUVAfCUNRHyHgEp8FcFKfBdBS3wfDUx8F4JSfJmAU3yXwFN
 
8l4FafJcAZHwvAYB8gYCAfAMWhHzBBJB8AwGUfB8F/H6sAQC+ENEAvqxHCb4QOQ2+LIcpviwCLb6QNy6+kP9JvhC8ab4AAAAAAAAAACAAAABhAAIABAAGALwDCAAKAAwAFQCVAKUAuQDBAMMAxwDLANEA1wDdAOAA5gD4AAgBCgFzABABEgEUASABLAFEAU0BUwFiAWgBagF2AZIBlAGpAbsBxwHRAdUBuQLXATsA2QHbAbcA4QH8AQwCGAIdAiMCJwKjAzMCPwJCAksCTgJRAl0CYAJpAmwCbwJ1AngCgQKKApwCnwKjAq8CuQLFAskCzQLRAtUC5wLtAvEC9QL5Av0CBQMJAw0DEwMXAxsDIwMnAysDLwM1Az0DQQNJA00DUQMLD1cDWwNfA2MDZwNrA28DcwN5A30DgQOFA4kDjQORA5UDmQOdA6ED3BClA8kDzQPZA90D4QPvA/EDPQRPBJkE8AQCBUoFZAVsBXAFcwWaBfoF/gUHBgsGFAYYBh4GIgYoBo4GlAaYBp4GogarBqwD8watA/YGrgP5Bq8D/AbMA/8GzQMCB84DBQcJBw0HEQeGAzIHNQe5AzcHOweIA1MHiQNWB5ADaweKA3cHsAOJB44DmQefB6MHjAO4B48Duwe0AL4HwAfCBxAgywcuAM0HzwcgANIH1gfbB98H5AfqB/AHIAD2BxIiAQgFCAcIHQglCCcIQwAtCDAIkAE2CDkITgBFCEcITAhOCFEIWgCpA1oAUwhXCGAIaQBiCGUIbwh0CHoIfgiiCEkApAimCKkIVgCrCK0IsAi0CFgAtgi4CLsIwAjCCMUIdgDHCMkIzAjQCHgA0gjUCNcI2wjeCOQI5wjwCPMI9gj5CAIJBgkLCQ8JFAkXCRoJIwksCTsJPglBCUQJRwlKCVYJXAlgCWIJZAloCWoJcAl4CXwJgAmGCYkJjwmRCTAAkwmZCZwJngmhCaQJYS3Na5+fpgmxCbwJxwmVCqEKFQsg
 
ACcLMQuNC6ELpQupC60LsQu1C7kLvQvBC8ULIQw1DDkMPQxBDEUMSQxNDFEMVQxZDG8McQxzDKAMvAzcDOQM7Az0DPwMBA0MDRQNIg0uDXoNgg2FDYkNjQ2dDbENtQ28DcINxg0oDiwOMA4yDjYOPA4+DkEOQw5GDncOew6JDo4OlA6cDqMOqQ60Dr4Oxg7KDs8O2Q7dDuQO7A7zDvgOBA8KDxUPGw8iDygPMw89D0UPTA9RD1cPXg9jD2kPcA92D30Pgg+JD40Png+kD6kPrQ+4D74PyQ/QD9YP2g/hD+UP7w/6DwAQBBAJEA8QExAaEB8QIxApEC8QMhA2EDkQPxBFEFkQYRB5EHwQgBCVEKEQsRDDEMsQzxDaEN4Q6hDyEPQQABEFERERQRFJEU0RUxFXEVoRbhFxEXURexF9EYERhBGMEZIRlhGcEaIRqBGrEW+nrxGzEY0CuxENEgsTCRSNFJIUUBVpFW8VdRV7FYcVkxUrAJ4VthW6Fb4VwhXGFcoV3hXiFUYWXxaFFosWSRdPF1QXdBd0GHoYDhnQGXQafBqaGp8asxq9GsMa1xrcGuIa8BogGy0bNRs5G08bxhvYG9ob3BtkMR0cHxwhHCMcJRwnHEUcUxxYHGEcahx8HIUcihyqHMUcxxzJHMsczRzPHNEc0xzzHPUc9xz5HPscAh0EHQYdCB0XHRkdGx0dHR8dIR0jHSUdJx0pHSsdLR0vHTEdMx03HfQDOR0HIjsdAiI9HUUd9ANHHQciSR0CIksdUx30A1UdByJXHQIiWR1hHfQDYx0HImUdAiJnHW8d9ANxHQcicx0CInUdfx2BHYMdhR2HHYkdjx2sHS0GtB3AHSwG0B1AHkweXx5xHoQehh6KHpAelh6YHpwenh6mHqkeqx6xHrMetTC5HhEfJx8rHy0fMh9/H5AfkSChIKcgoSG/IgBB8OcCC9JHIIgghDIzIIEgpzFvMdA0MdAyM9A0QYBBgUGCQYNBi
 
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
 
A5WVnYWxKBEwEJgFTASenN6trAlKrSIz0ZsqOyIzRbjJO5VOcn5yfUVnRkYdVSFn2YWl2hX8/hrqH+IiPkAJqG23ZcN5zPYRqkfGZgk51UwRrG3Ithh6eUF3rb82FZInJYtiBH4jKXhdnam38cs6Qhk+3Ud5SxGTTahBy53YBgAaGXIbvjTKXb5v6nYx4f3mgfcmDBJN/ntaK31gEX2B8foBicsp4woz3lthYYlwTatptD28vfTd+S5bSUouA3FHMURx6vn3xg3WWgIvPYgJq/oo5TudbEmCHc3B1F1P7eL9PqV8NTsxseGUifcNTXlgBd0mEqoq6a7CPiGz+YuWCoGNlda5OaVHJUYFo53xvgtKKz5H1UkJUc1nsXsVl/m8qea2VapqXns6em1LGZndrYo90XpBhAGKaZCNvSXGJdMp59H1vgCaP7oQjkEqTF1KjUr1UyHDCiKqKyV71X3tjrms+fHVz5E75Vudbul0cYLJzaXSaf0aANJL2lkiXGJiLT655tJG4luFghk7aUO5bP1yZZQJqznFCdvyEfJCNn4hmLpaJUntn82dBbZxuCXRZdWt4EH1emG1RLmJ4litQGV3qbSqPi19EYRdoh3OGlilSD1RlXBNmTmeoaOVsBnTidXl/z4jhiMyR4pY/U7puHVTQcZh0+oWjllecn56XZ8tt6IHLeiB7knzAcplwWIvATjaDOlIHUqZe02LWfIVbHm20ZjuPTIhNlouJ015AUcBVAAAAAFpYAAB0ZgAAAADeUSpzynY8eV55ZXmPeVaXvny9fwAAEoYAAPiKAAAAADiQ/ZDvmPyYKJm0nd6Qt5auT+dQTVHJUuRSUVOdVQZWaFZAWKhYZFxuXJRgaGGOYfJhT2XiZZFmhWh3bRpuIm9ucStyInSReD55SXlIeVB5VnldeY15jnlAeoF6wHv0fQl+QX5yfwWA7YF5gnmCV4QQiZaJAYs5i9OMCI22jziQ45b/lzuYdWDuQhiC
 
AiZOtVFoUYBPRVGAUcdS+lKdVVVVmVXiVVpYs1hEWVRZYlooW9Je2V5pX61f2GBOYQhhjmFgYfJhNGLEYxxkUmRWZXRmF2cbZ1ZneWu6a0Ft227LbiJvHnBucad3NXKvcipzcXQGdTt1HXYfdsp223b0dkp3QHfMeLF6wHt7fFt99H0+fwWAUoPvg3mHQYmGiZaJv4r4isuKAYv+iu2KOYuKiwiNOI9ykJmRdpJ8luOWVpfbl/+XC5g7mBKbnJ9KKEQo1TOdOxhAOUBJUtBc035Dn46fKqACZmZmaWZsZmZpZmZsfwF0cwB0ZQUPEQ8ADwYZEQ8I2QW0BQAAAADyBbcF0AUSAAMECwwNGBrpBcEF6QXCBUn7wQVJ+8IF0AW3BdAFuAXQBbwF2AW8Bd4FvAXgBbwF4wW8BbkFLQMuAy8DMAMxAxwAGAYiBisG0AXcBXEGAAAKCgoKDQ0NDQ8PDw8JCQkJDg4ODggICAgzMzMzNTU1NRMTExMSEhISFRUVFRYWFhYcHBsbHR0XFycnICA4ODg4Pj4+PkJCQkJAQEBASUlKSkpKT09QUFBQTU1NTWFhYmJJBmRkZGR+fn19f38ugoJ8fICAh4eHhwAAJgYAAQABAK8ArwAiACIAoQChAKAAoACiAKIAqgCqAKoAIwAjACPMBgAAAAAmBgAGAAcAHwAjACQCBgIHAggCHwIjAiQEBgQHBAgEHwQjBCQFBgUfBSMFJAYHBh8HBgcfCAYIBwgfDQYNBw0IDR8PBw8fEAYQBxAIEB8RBxEfEh8TBhMfFAYUHxsGGwcbCBsfGyMbJBwHHB8cIxwkHQEdBh0HHQgdHh0fHSMdJB4GHgceCB4fHiMeJB8GHwcfCB8fHyMfJCAGIAcgCCAfICMgJCEGIR8hIyEkJAYkByQIJB8kIyQkCkoLSiNKIABMBlEGUQb/AB8mBgALAAwAHwAgACMAJAILAgwCHwIgAiMCJAQLBAwEHyYGBCAEIwQkB
 
QsFDAUfBSAFIwUkGyMbJBwjHCQdAR0eHR8dIx0kHh8eIx4kHwEfHyALIAwgHyAgICMgJCNKJAskDCQfJCAkIyQkAAYABwAIAB8AIQIGAgcCCAIfAiEEBgQHBAgEHwQhBR8GBwYfBwYHHwgGCB8NBg0HDQgNHw8HDwgPHxAGEAcQCBAfEQcSHxMGEx8UBhQfGwYbBxsIGx8cBxwfHQYdBx0IHR4dHx4GHgceCB4fHiEfBh8HHwgfHyAGIAcgCCAfICEhBiEfIUokBiQHJAgkHyQhAB8AIQIfAiEEHwQhBR8FIQ0fDSEOHw4hHR4dHx4fIB8gISQfJCFABk4GUQYnBhAiECMSIhIjEyITIwwiDCMNIg0jBiIGIwUiBSMHIgcjDiIOIw8iDyMNBQ0GDQcNHg0KDAoOCg8KECIQIxIiEiMTIhMjDCIMIw0iDSMGIgYjBSIFIwciByMOIg4jDyIPIw0FDQYNBw0eDQoMCg4KDwoNBQ0GDQcNHgwgDSAQHgwFDAYMBw0FDQYNBxAeER4AJAAkKgYAAhsAAwIAAwIAAxsABBsAGwIAGwMAGwQCGwMCGwMDGyADGx8JAwIJAgMJAh8JGwMJGwMJGwIJGxsJGxsLAwMLAwMLGxsKAxsKAxsKAiAKGwQKGwQKGxsKGxsMAx8MBBsMBBsNGwMNGwMNGxsNGyAPAhsPGxsPGxsPGx8QGxsQGyAQGx8XBBsXBBsYGwMYGxsaAxsaAyAaAx8aAgIaAgIaBBsaBBsaGwMaGwMbAwIbAxsbAyAbAgMbAhsbBAIbBBsoBh0EBh8dBB8dHR4FHR4FIR4EHR4EHR4EIR4dIh4dISIdHSIdHQAGIgIEIgIEIQIGIgIGIQIdIgIdIQQdIgQFIQQdIQsGIQ0FIgwFIg4FIhwEIhwdIiIFIiIEIiIdIh0dIhodIh4FIhodBRwFHREdIhsdIh4EBR0GIhwEHRsdHRwEHR4EBQQFIgUEIh0EIhkdIgAFIhsdHR
 
EEHQ0dHQsGIh4EIjUGAA+dDQ+dJwYAHR0gABwBCh4GHggOHRIeCgwhHRIdIyAhDB0eNQYADxQnBg4dIv8AHR0g/xIdIyD/IQwdHicGBR3/BR0AHSAnBgqlAB0sAAEwAjA6ADsAIQA/ABYwFzAmIBMgEgEAX18oKXt9CDAMDQgJAgMAAQQFBgdbAF0APiA+ID4gPiBfAF8AXwAsAAEwLgAAADsAOgA/ACEAFCAoACkAewB9ABQwFTAjJiorLTw+PQBcJCVAQAb/CwAL/wwgAE0GQAb/DgAO/w8AD/8QABD/EQAR/xIAEiEGAAEBAgIDAwQEBQUFBQYGBwcHBwgICQkJCQoKCgoLCwsLDAwMDA0NDQ0ODg8PEBARERISEhITExMTFBQUFBUVFRUWFhYWFxcXFxgYGBgZGRkZICAgICEhISEiIiIiIyMjIyQkJCQlJSUlJiYmJicnKCgpKSkpIgYiACIAIgEiASIDIgMiBSIFIQCFKQEwAQsMAPrxoKKkpqji5ObC+6GjpaepqqyusLK0tri6vL7Aw8XHycrLzM3O0dTX2t3e3+Dh4+Xn6Onq6+zu8piZMTFPMVUxWzFhMaIAowCsAK8ApgClAKkgAAACJZAhkSGSIZMhoCXLJZkQuhAAAAAAmxC6EAUFpRC6EAUxEScRMhEnEVVHEz4TRxNXE1W5FLoUuRSwFAAAAAC5FL0UVVC4Fa8VuRWvFVU1GTAZBVfRZdFY0WXRX9Fu0V/Rb9Ff0XDRX9Fx0V/RctFVVVUFudFl0brRZdG70W7RvNFu0bvRb9G80W/RVVVVQQBhAEEAYQBpAEEAYQBBAENEAABHAABKSwAATk9QUQBTVFVWV1hZWmFiY2QAZmgAcABBAGEAQUIAREVGR0oAUwBhAEFCAERFRkcASUpLTE0AT1MAYQBBAGEAQQBhAEEAYQBBAGEAQQBhAEEAYQAxATcCkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBZE
 
DowOxA9EDJAAfBCAFkQOjA7ED0QMkAB8EIAWRA6MDsQPRAyQAHwQgBQsMMAAwADAAMAAwACcGAAEFCCoGHggDDSAZGhscCQ8XCxgHCgABBAYMDhBEkHdFKAYsBgAARwYzBhcQERITAAYOAg80BioGKwYuBgAANgYAADoGLQYAAEoGAABEBgAARgYzBjkGAAA1BkIGAAA0BgAAAAAuBgAANgYAADoGAAC6BgAAbwYAACgGLAYAAEcGAAAAAC0GNwZKBkMGAABFBkYGMwY5BkEGNQZCBgAANAYqBisGLgYAADYGOAY6Bm4GAAChBicGAAEFCCAhCwYQIyoGGhscCQ8XCxgHCgABBAYMDhAoBiwGLwYAAEgGMgYtBjcGSgYqBhobHAkPFwsYBwoAAQQGDA4QMC4wACwAKABBACkAFDBTABUwQ1JDRFdaQQBIVk1WU0RTU1BQVldDTUNNRE1SREpLMDAAaGhLYldbzFPHMIxOGlnjiSlZpE4gZiFxmWVNUoxfjVGwZR1SQn0fdamM8Fg5VBRvlWJVYwBOCU5KkOZdLU7zUwdjcI1TYoF5enoIVIBuCWcIZzN1clK2VU2RFDAVMCxnCU6MTolbuXBTYtd23VJXZZdf71MwADhOBQAJIgFgT65Pu08CUHpQmVDnUM9QnjQ6Bk1RVFFkUXdRHAW5NGdRjVFLBZdRpFHMTqxRtVHfkfVRA1LfNDtSRlJyUndSFTUCACCAgAAIAADHUgACHTM+P1CCipOstri4uCwKcHDKU99TYwvrU/FTBlSeVDhUSFRoVKJU9lQQVVNVY1WEVYRVmVWrVbNVwlUWVwZWF1dRVnRWB1LuWM5X9FcNWItXMlgxWKxY5BTyWPdYBlkaWSJZYlmoFuoW7FkbWida2FlmWu42/DYIWz5bPlvIGcNb2FvnW/NbGBv/WwZcU18iXIE3YFxuXMBcjVzkHUNd5h1uXWtdfF3hXeJdLzj9XShePV5pXmI4gyF8OLBe
 
s162XspekqP+XjEjMSMBgiJfIl/HOLgy2mFiX2tf4ziaX81f11/5X4FgOjkcOZRg1CbHYAICAAAAAAAAAAgACgAAAggAgAgAAAiAKIACAAACSGEABAYEMkZqXGeWqq7I011iAFR38wwrPWP8Ymhjg2PkY/ErImTFY6ljLjppZH5knWR3ZGw6T2VsZQow42X4ZklmGTuRZgg75DqSUZVRAGecZq2A2UMXZxtnIWdeZ1NnwzNJO/pnhWdSaIVobTSOaB9oFGmdO0Jpo2nqaahqozbbahg8IWunOFRrTjxya59rumu7a406Cx36Ok5svDy/bM1sZ2wWbT5td21BbWlteG2FbR49NG0vbm5uMz3Lbsdu0T75bW5vXj+OP8ZvOXAecBtwlj1KcH1wd3CtcCUFRXFjQpxxq0MocjVyUHIIRoBylXI1RwIgAAAgAAAAAAiAAAACAoCKAAAgAAgKAICIgCAUSHpzi3OsPqVzuD64Pkd0XHRxdIV0ynQbPyR1Nkw+dZJMcHWfIRB2oU+4T0RQ/D8IQPR281DyUBlRM1Eedx93H3dKdzlAi3dGQJZAHVROeIx4zHjjQCZWVnmaVsVWj3nreS9BQHpKek96fFmnWqda7noCQqtbxnvJeydCgFzSfKBC6HzjfAB9hl9jfQFDx30CfkV+NEMoYkdiWUPZYnp/PmOVf/p/BYDaZCNlYICoZXCAXzPVQ7KAA4ELRD6BtVqnZ7VnkzOcMwGCBIKej2tEkYKLgp2Cs1KxgrOCvYLmgjxr5YIdg2ODrYMjg72D54NXhFODyoPMg9yDNmxrbQIAACAiKqAKACCAKACoICAAAoAiAooIAKoAAAACAAAo1WwrRfGE84QWhcpzZIUsb11FYUWxb9Jwa0VQhlyGZ4ZphqmGiIYOh+KGeYcoh2uHhofXReGHAYj5RWCIY4hndteI3og1RvqIuzSueGZ5vkbHRqCK7YqKi1WMqHyrjMGMG413jS9/BAjLjbyN8
 
I3eCNSOOI/She2FlJDxkBGRLocbkTiS15LYknyS+ZMVlPqLi5WVSbeVd43mScOWsl0jl0WRGpJuSnZK4JcKlLJKlpQLmAuYKZi2leKYM0spmaeZwpn+mc5LMJsSm0Cc/ZzOTO1MZ53OoPhMBaEOopGiu55WTfme/p4Fnw+fFp87nwCmAoigAAAAAIAAKAAIoICggACAgAAKiIAAgAAgKgCAAEQgFSIAQdCvAwtRTQMAlwUgxgUA5wYARQcA4ggAUwkAzQsgOA4Acw8gXRMgYBogqhsA9BwA/h0gfy0g8KYAsqoA/gEBqw4BcxEhcBMBuBYBmhoBn7wBIuABS+kBAEGwsAML0wayz9QA6APcAOgA2ATcAcoD3AHKCtwEAQPcxwDwwALcwgHcgMID3MAA6AHcwEHpAOpB6QDqAOnMsOLEsNgA3MMA3MIA3gDcxQXcwQDcwQDeAOTASQpDE4AAF4BBGIDAANyAABKwF8dCHq9HG8EB3MQA3MEA3I8AI7A0xoHDANzAgcGAANzBANyiACSdwADcwQDcwQLcwAHcwADcwgDcwADcwADcwADcwbBvxgDcwIgA3JfDgMiAwoDEqgLcsEYA3M2AANzBANzBANzCAtxCG8IA3MEB3MSwCwAHjwAJgsAA3MGwNgAHjwAJr8CwDAAHjwAJsD0AB48ACbA9AAePAAmwTgAJsE4ACYYAVABbsDQAB48ACbA8AQmPAAmwSwAJsDwBZwAJjANrsDsBdgAJjAN6sBsB3JoA3IAA3IAA2LAGQYGAAISEA4KBAIKAwQAJgMGwDQDcsD8AB4ABCbAhANyynsKzgwAJngAJsGwACYnAsJoA5LBeAN7AANywqsAA3LAWAAmTx4EA3K/EBdzBANyAAdywQgAHjgAJpcAA3MawBQEJsAkAB4oBCbASAAewZ8JBAATcwQPcwEEABQGDANyFwILBsJXBANzGANzBAOoA1gDcAMrkAOgB5ADcgMAA6QDcwADcsp
 
/BAQHDAgHBg8CCAQHAANzAAQED3MC4A83CsFwACbAv37H5ANoA5ADoAN4B4LA4AQi4baPAg8mfwbAfwbDjAAmkAAmwZgAJmtGwCALcpAAJsC4AB4sACbC+wIDBANyBwYTBgMCwAwAJsMUACbhG/wAastDGBtzBs5wA3LCxANywZMS2YQDcgMCnwAABANyDAAmwdMAA3LIMw7FSwbBoAdzCANzAA9ywxAAJsAcACbAIAAkAB7AUwq8BCbANAAewGwAJiAAHsDkACQAHsIEABwAJsB8BB48ACZfGgsSwnAAJggAHlsCwMgAJAAewygAJAAewTQAJsEUACQAHsEIACbDcAAkAB7DRAQmDAAewawAJsCIACZEACbAgAAmxdAAJsNEAB4ABCbAgAAm4RScEAbAKxrSIAQa4RHsAAbgMlQHYAgGCAOIE2IcH3IHEAdydw7BjwrgFisaA0IHGgMGAxLDUxrGEw7WvBtywPMUABwBBkLcDC+IOAUrASQJKgAKBAoICgwLAAsICAAqEAkIkhQLAB4AJgglAJIAixAKCIoQihiLGAsgCygLMAocCiiLOAowikCKSIo4iiAKJAooCgiQAAwIDBAOLAoAkCAOECYYJWCQCCgYDmCKaIp4iAAkKA6AiDAMOA0AIEAMSA6IipiLACaQiqCKqIowCjQKOAkADQgNEA4ADjwKOJMIHiAmKCZAkRgOsIgAEsCJCCLIiAgS0IkAERAS2IkIEwiLAIsQixiLIIkAJwASRAsoixATMIsIE0CLOIpICkwKUApUCQAVCBQgKlgKUJEQFxAeMCY4JwAaSJEQICCMKI4AFDCOEBZAJkgkOI4IFEiOGBYgFFCOMBRYjmAmKBR4jkAUgI5oJjgUkIyIjmQKaApsCwAXCBcQFnAKsJMYFyAXGB5QJlgkAB6okJiPKBSojKCNAI0IjRCNGI8wFSiNII0wjTiNQI7gknQLOBb4kDApSIwAGvCS6JEAGVCNCBkQGViN
 
YI6ACoQKiAqMCwQLDAgEKpAJDJKUCwQeBCYMJQSSBIsUCgyKFIocixwLJAssCzQKnAosizwKNIpEikyKPIqgCqQKqAoMkAQMDAwUDqwKBJAkDhQmHCVkkAwoHA5kimyKfIgEJCwOhIg0DDwNBCBEDEwOjIqciwQmlIqkiqyKAI6wCrQKuAkEDQwNFA68CjyTDB4kJiwmRJEcDrSIBBIQIsSJDCLMiAwS1IkEERQS3IkMEwyLBIsUixyLJIkEJwQSxAssixQTNIsME0SLPIrICswK0ArUCQQVDBQkKtgKVJEUFxQeNCY8JwQaTJEUICSMLI4EFDSOFBZEJkwkPI4MFEyOHBYkFFSONBRcjmQmLBR8jgSORBSEjmwmPBSUjIyO5AroCuwLBBcMFxQW8Aq0kxwXJBccHlQmXCQEHqyQnI8sFKyMpI0EjQyNFI0cjzQVLI0kjgiNNI08jUSO5JL0CzwW/JA0KUyO/Ar0kgyO7JEEGVSNDBkUGVyNZIwExgAwALkYkRCRKJEgkAAhCCUQJBAiIIoYkhCSKJIgkriKYJJYknCSaJAAjBgoCIwQKRgnOB8oHyAfMB0ckRSRLJEkkAQhDCUUJBQiJIockhSSLJIkkryKZJJcknSSbJAEjBwoDIwUKRwnPB8sHyQfNB1AkTiRUJFIkUSRPJFUkUySUIpYilSKXIgQjBiMFIwcjGCMZIxojGyMsIy0jLiMvIwAkoiSgJKYkpCSoJKMkoSSnJKUkqSSwJK4ktCSyJLYksSSvJLUksyS3JIIIgAiBCAIIAwicIp0iCgoLCoMIQAuKLIEMiSyILEAlQSUALQcuAA1AJkEmgC4BDcgmySYAL4QvAg2DL4IvQA3YJtkmhjEEDUAnQScAMYYwBg2FMIQwQQ1AKAAyBw1PKFAogDKELAMuVyhCDYEsgCzAJMEkhiyDLMAoQw3AJcElQClEDcAmwSYFLgIuwClFDQUvBC+ADdAm0SaAL0Aqgg3gJuEm
 
gDCBMMAqgw0EMAMwgQ3AJ8EngjBAK4QNRyhIKIQxgTEGLwgNgS8FMEYNgzCCMQAOAQ5AD4ARghEDDwAPwBEBD0ARAhIEEoEPQBLAD0ISgA9EEoQSgg+GEogSihLAEoISgRGDEUMQQBDBEUEQQREDEgUSwRBBEgAQQxLAEEUShRLCEIcSiRKLEsESgxKAEAARAREAEgESgBKBEkATQRNDE0ITRBPCEwAUwBNAFIAUwBRAFUEVQBcAF0EXwBcAGAIYARhAGIAYABnAGMEYARlAGUIZQRmAGcAZwhnBGYAcwBzAHYAfACACIAQgBiAIIEAggCCCIMAgwSAAIbgiuSIQIxEjHCMdI0wkViRNJFckjCSNJJ4knyQAJQIlBCXAKwElAyUFJcErwivDK8QrxSvGK8crgCWCJYQlyCuBJYMlhSXJK8oryyvMK80rzivPKwAmAiYBJgMmgCaCJoEmgybCJsQmxiYALMMmxSbHJgEsAiwDLAQsBSwGLAcsyibMJs4mCCzLJs0mzyYJLAosCywMLA0sDiwPLNIm1CbWJtMm1SbXJtom3CbeJtsm3SbfJgAnAicBJwMngCeCJ4EngycAKAIoBCgBKAMoBShCKEQoRihJKEsoTShALEooTChOKEEsQixDLEQsRSxGLEcsUShTKFUoSCxSKFQoVihJLEosSyxMLE0sTixPLIIsAS6AMYcsAS8CLwMvBi6FMQAwATACMEBGQUaARsBGwkbBRgBHQEeAR8BHwkcASUBJgEmCSQBKwkkDSgRKQEpBSoBKgUrASsFKwEvBSwBLAUtAS0FLwkvDS4BLgUuCS4NLAEwBTAJMA0wAVkBUQlREVEZUSFRKVExUTlRQVFJUVFRWVIBUglSEVMBUwVQAVQFVQFVBVYBVgVXAVcFVgFbAWABXAlcEVwZXCFcKVwxXDlcQVxJXFFcWV0BXQldEV4BXgVfAV8FXAFgBWEBYQViAWIFYAFkBWQJZA1lAWYCOgo7Aj
 
gCPAY9Aj0GPgY+Aj4OPwI/BjwCQAEGAxgMLliD6GBdWDVYSExYMFhE26QI2TDbhEhIWEw4QDuISEgwTDPoZFxZtDxYODwUUDBsPDg8MKw4CNg4LBRVLFuEPDMHiEAziAP8wAv8IAv8nvyIhAl9fISJhAiECQUIhAiECn38CX18hAl8/AgU/ImUBAwIBAwIBAwL/CAL/CgIBAwJfIQL/MqIhAiEiX0EC/wDiPAXiE+QKbuQE7gaEzgQOBO4J5mh/BA4/IARCFgFgLgEWQQABACEC4QkA4QHiGz8CQUL/EGI/DF8/AuEr4ij/Gg+GKP8v/wYC/1gA4R4gBLbiIRYRIC8NAOYlEQYWJhYmFgbgAOUTYGU24AO7TDYNNi/mAxYbADblGATlAuYN6QJ2JQblWxYFxhsPpiQmD2Yl6QJFLwX2BgAbBQblFuYTIOVR5gMF4AbpAuUZ5gEkD1YEIAYt5Q5mBOYBBEYEhiD2BwDlEUYgFgDlA+At5Q0A5QrgA+YHG+YYB+UuBgcGBUfmAGcGJwXG5QImNukCFgTlBwYnAOUAICUg5Q4AxQAFQGUgBgVHZiAnICcGBeAAB2AlAEUmIOkCJS2rDw0FFgYgJgcApWAlIOUOAMUAJQAlACUgBgBHJmAmIEZABsBlAAXA6QImRQYW4AImBwDlAQBFAOUOAMUAJQCFIAYFR4YAJgcAJwYgBeAHJSYg6QIWDcAFpgAGJwDlACAlIOUOAMUAJQCFIAYFBwYHZiAnICcGwCYHYCUARSYg6QIPBavgAgYFAKVARQBlQCUABQAlQCVARUDlBGAnBidARwBHBiAFoAfgBukCS68ND4AGRwblAABFAOUPAOUIQAVGZwBGAGbAJgBFgCUmIOkCwBbLDwUGJxblAABFAOUPAOUCAIUgBgUHBocABicAJybAJ8AFACUmIOkCACXgBSYn5QEARQDlISYFR2YARwBHBgUPYEUHy0UmIOkC6wEPpQAGJwDlCkDlEA
 
DlAQAFIMVABmBHRgAGAOcAoOkCICcW4ATlKAYlxmANpQTmABbpAjbgHSUABQCFAOUQAAUA5QIGJeYBBSCFAAQApiDpAiBl4BgFT/YHDxZPJq/pAusCDwYPBg8GEhMSEyflAADlHGDmBgeGFiaF5gMA5hwA7wAGrwAvlm824B3lIydmB6YHJicmBekCtqUnJmVGBUclx0Vm5QUGJyanBgUH6QJHBi/hHgABgAEg4iMWBELlgMEAZSDFAAUAZSDlIQBlIOUZAGUgxQAFAGUg5QcA5TEAZSDlOyBG9gHrDEDlCO8CoOFOIKIgEeWB5A8W5QkX5RISE0DlQ1ZK5QDA5QUAZUbgA+UKRjbgAeUKJuAE5QUARQAm4ATlLCYHxucABifmA1YEVg0FBiDpAqDrAqC2EXZGGwDpAqDlGwTlLcCFJuUaBgWA5T7gAuUXAEZnJkdgJwanRmAPQDbpAuUWIIXgA+UkYOUSoOkCC0DvGuUPJicGIDblLQcGB8YABgcGJ+YAp+YCIAbpAqDpAqDWBLYg5gYIJuA3ZgflJwYHhgcGhwYnxWDpAtbvAuYB7wFAJgflFgdmJyYHRiXpAuUkBgcmRwYHRifgAHblHOcA5gAnJkCW6QJARekC5RakNuIBwOEjIEH2AOAARhbmBQfGZQalBiUHJgWA4iTkN+IFBOIa5B3mMgCG/4AO4gD/WuIA4QCiIKEg4gDhAOIA4QCiIKEg4gAAAQABAAEAP8LhAOIGIOIA4wDiAOMA4gDjAIIAImEDDgJOQgAiYQNOYiAiYQBO4gCBTiBCACJhAy4A9wObsTYUFRI0FRIU9gAYGZsX9gEUFXYwVgwSE/YDDBYQ9gIXmwD7AgsEIKtMEhME6wJMEhMA5AVA7RjgCOYFaAZI5gTgBy8BbwEvAkEiQQIPAS8Mga8BDwEPAQ9hDwJhAmUCLyIhjD9CDwwvAg/rCOobP2oLL2CMjyxvDC8MLwzPDO8XLC8MDwzvF+yAhO8
 
AEhMSE+8MLM8SE+9JDO8W7BHvIKzvPeAR7wPgDes070brDu+ALwzvAQzvLuwA72cM74BwEhMSExITEhMSExITEhPrFu8kjBIT7BcSExITEhMSExIT7AjvgHjsexITEhMSExITEhMSExITEhMSExITEhPsNxITEhPsGBIT7IB67yjsDS+s7x8g7xgA72HhJwDiJwBfISLfQQI/Aj+CJEEC/1oCr39GP4B2CzbiHgACgAIg5TDABBbgBgblD+ABxQDFAMUAxQDFAMUAxQDFAOYYNhQVFBVWFBUWFBX2ARE2ERYUFTYUFRITEhMSExITlgT2AjF2ERYS9gUvFuAl7xIA71HgBO+ATuAS7wRgF1YPBAUKEhMSExITEhMSEy8SExITEhMSExESMw/qAWYnEYQvSgQFFi8A5U4gJi4kBRHlUhZEBYDlIwDlVgAva+8C5RjvHOAE5QjvFwDrAu8W6wAP6wfvGOsC7x/rB++AuOWZOO845cARdUDlDQTlg+9A7y/gAeUgpDblgIQEVuUI6QIl4Az/JgUGSBbmAhYE/xQkJuU+6gImtuAA7g/kAS7/BiL/NgTiAJ//AgQufwV/Iv8NYQKBAv8CIF9BAj/gIj8FJALFBkUGZQblDycmB28GQKsvDQ+g5Sx24AAn5SrnCCbgADbpAqDmCqVWBRYlBukC5RTmADblD+YDJ+ADFuUVQEYH5ScGJ2YnJkf2BQAE6QJgNoUGBOUB6QKFAOUhpicmJybgAUUG5QAGByDpAiB25QgEpU8FBwYH5SoGBUYlJoUmBQYF4BAlBDblAwcmJzYFJAcG4AKlIKUgpeABxQDFAOIjDmTiAQQuYOJI5RsnBicGJxYHBiDpAqDlqxzgBOUPYOUpYPyHeP2YeOWA5iDlYuAewuAEgoAFBuUCDOUFAIUABQAlACUA5WTuCOAJ5YDjExLgCOU4IOUu4CDlBA0PIOYI1hITFqDmCBYxMBITEhMSExITEhMSExITEhM2
 
EhN2UFYAdhESExITEhNWDBFMABYNNmCFAOV/IBsAVg1WEhMWDBYRNukCNkw24RISFhMOEA7iEhIMEwwSExYSEzblAgTlJSTlF0ClIKUgpSBFQC0MDg8tAA9sL+ACWy8g5QQA5RIA5QsAJQDlByDlBuAa5XOAVmDrJUDvAeota+8JK08A7wVAD+An7yUG4HrlFUDlKeAHBusTYOUYa+AB5QwK5QAKgOUehoDlFgAW5Rxg5QAWiuAi4SDiIOVGIOkCoOEcYOIcYOUg4ADlLOADFuCACOWAr+AB5Q7gAuUA4IAQpSAFAOUkACVABSDlDwAW6wDlDy/L5RfgAOsB4CjlCwAlgIvlDqtAFuUSgBbgOOUwYCsl6wgg6yYFRgAmgGZlAEUA5RUgRmAG6wHA9gHA5RUrFuUVS+AY5QAP5RQmYIvW4AHlLkDW5Q4g6wDlC4DrAOUKwHbgBMvgSOVB4C/hK+AF4ivAq+UcZuAA6QLggJ7rFwDlIgAmESAl4EblFesCBeAA5Q7mA2uW4E7lDcvgDOUP4AEHBgflLeYH1mDrDOkC4AdGB+UlR2YnJjYbduADGyDlEcDpAqBG5RyGB+YAAOkCdgUnBeAA5RsGNgXgASYH5ShH5gEnZXZmFgcG6QIFFgVWAOsM4APlCgDlEUdGJwYHJrYG4DnFAAUAZQDlBwDlAhag5ScGR+YAgOkCoCYnAOUAICUg5Q4AxQAlAIUAJgUnBmcgJyBHIAWgB4CFJyDGQIbggAPlLUfmACdGBwZllukCNgAWBkXgFuUoR6YHBmcmByYlFgXgAOkC4IAe5SdHZiBnJgcm9g9lJuAa5ShH5gAnBgcmVgXgA+kCoPYF4AvlIwYHBiemBwYFwOkC4C7lEyBGJ2YHhmDpAitWD+CAOOUkR+YBByYW4FzhGOIY6QLrAeAE5QAgBSDlAAAlAOUQpwAnICYHBgUHBQcGVuAB6QLgPuUAIOUfR2YgJmcGBRYFB+ATBeYC5SCmB
 
wVm9gAG4AAFpidG5SbmBQcmVgWW4BXlMeCAf+UBAOUdB8YApgcGBZbgAukC6wtANuUWIOYOAAfGByYHJuBBxQAlAOUepkAGACYAxgUG4ADpAqClACUA5RiHACYAJwYHBgXA6QLggK7lCyYnNuCALwXgB+sN7wBt7wngBRblgxLgXupnAJbgA+WAPOCKNOWDpwD7AeCPP+WBv+ChMeWBscDlFwDpAmA24FjlFiCGFuAC5SjGlm9kFg/gAukCAMsA5Q2A5QvggijhGOIY6w924F3lQ2AGBecvwGbkBeA4JBYEBuADJ+AG5Zdw4ADlhE7gIuUB4KJv5YCX4ClF4All4ADlgQTgiHzlY4DlBUDlAcDlAiAPJhZ74JLU74Bu4ALvHyDvNCdGT6f7AOYAL8bvFmbvM+AP7zpGD+CAEusM4ATvT+AB6xHgf+ES4hLhEsIA4grhEuISAQAhIAEgISBhAOEAYgACAMIA4gPhEuISIQBhIOEAAMEA4hIhAGEAgQABQMEA4hLhEuIS4RLiEuES4hLhEuIS4RLiEuES4hQg4REM4hEMouERDOIRDKLhEQziEQyi4REM4hEMouERDOIRDKI/IOkq74F45i9v5irvAAbvBgYvluAHhgDmB+CEyMYA5gkgxgAmAIbggE3lJUDGxCDpAmAFD+CA6OUkZukCgA3ghHjlgD0g6wHG4CHhGuIaxgRg6QJgNuCCieszD0sNa+BE6yUP6wfggDplAOUTACUABSAFAOUCAGUABQAFoAVgBQAFAAUARQAlAAUgBQAFAAUABQAFACUABSBlAMUAZQBlAAUA5QIA5QmARQCFAOUJ4Cws4ICG7yRg71zgBO8HIO8HAO8HAO8d4ALrBe+AGeAw7xXgBe8kYO8BwC/gBq/ggBLvgHOO74JQ4ADvBUDvBUDvbOAE71HA7wTgDO8EYO8w4ADvAqDvIOAA7xYgL+BG73EA70oA73/gBO8GII9AT4DP4AHvEcDP4AFP4A
 
XP4CHvgAsA7y/gHekC4IN+5cBmVuAa5Y+t4APlgFYg5ZX64AblnKngi5flgZbghVrlksPgyqwuG+AW+1jgeOaAaODAvYj9wL92IP3Av3Ygc3RhY2tfbGVuIDwgUE9QX1NUQUNLX0xFTl9NQVgAL3RtcC9xdWlja2pzL2xpYnVuaWNvZGUuYwB1bmljb2RlX3Byb3Bfb3BzAHN0YWNrX2xlbiA+PSAyAHN0YWNrX2xlbiA+PSAxAHN0YWNrX2xlbiA9PSAxAPUrAAB6FAAA/AUAAJDzAACw8wAAgPQAACD2AABT9gAAcPYAAMD2AADg9gAA6/YAAAD3AADAgwAAIPcAAED3AABg9wAAgPcAALD3AABp+QAAbvkAAID5AADA+QAA4PkAAFD7AACp+wAAtfsAALr7AADA+wAAAvwAAAb8AAAg/AAAcPwAAKr8AADA/AAA3/wAAOj8AADw/AAAsP0AAAD+AAAA/wAAKv8AAED/AABg/wAAEAABAAABAQAcAQEAIAEBAHABAQAAAgEAoAIBADB/AAAgfABBoOYDC2QcAMgAmwEzAA8AQQAgAAsADAARAHICHwAXABYAIQC5AQUACgA1ABcAZgFZAAwABQAEAEIABAAPAEcAOgALAB8ACQAEALwARwDxACoADAAWAKsA7gAcAAQAQgCQAJwAMwAVBLQCAEGQ5wML0gWsgP6ARNuAUnqASAiBTgSAQuKAYM1mgECogNaAAAAAAN2AQ3ARgJkJgVwfgJqCioCfg5eBjYHAjBgRHJEDAYkAFCgRCQIFEyTKIRgICAAhCwuRCQAGAClBIYNApwiAl4CQgEG8gYuIJCEJFI0AAYWXgbgAgJyDiIFBVYGeiUGSlb6Dn4Fg1GIAA4BA0gCAYNTA1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4GYgJiAnoCYgJ6AmICegJiAnoCYB4GxVf8YmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAIC
 
JgJAiBICQAAAAAAAAAABDRIBCaY0AAQEAx4qvjAaPgOQzGQuAooCdj+WK5AqIAgNAposWhZO1CY4BIomBnIK5MQmBiYCJgZyCuSMJC4CdCoCKgrk4EIGUgZUTgrkxCYGIgYmBnYC6IhCCiYCng7kwEBeBioGcgrkwEBeBioGbg7kwEIKJgImBnILKKACHkYG8AYaRgOIBKIGPgECikIqKgKPtiwALlhsQETKDjIsAiYNGc4GdgZ2BnYHBkkC7gaGA9YuDiEDdhLiJgZPJgb6Er467gp2ICbiKsZJBr41GwLNI9Z9geHOHoYFBYQeAloTXgbGPALiApYSbi6yDr4ukgMKNiweBrIKxABEMgKskgEDsh2BPMoBIVoRGhRAMg0MTg0GCgUFSgrSNu4CsiMaCo4uRgbiCr4yNgduICChAn4mWg7kxCYGJgImBQNCMAumRQOwxhpyB0Y4A6YrmjUEAjED2KAkKAIBAjTErgJuJqSCDkYqtjUGWOIbSlYCN+SoACBACgMEgCINBW4NgUFcAtjPcgWBMq4BgI2AwkA4BBEkbgEfnmYWZhZkAAAAAAECpgI6AQfSIMZ2E34CzgFmwvoyAoaRCsICMgI+MQNKPQ0+ZR5GBYHodgUDRgECGgUNhg2AhX49DRZlhzF+ZhZmFmQBB8OwDC0FJvYCXgEFlgJeA5YCXgEDpgJGB5oCXgPaAjoBNVIBE1YBQIIFgz22BU52Al4BBV4CLgEDwgEN/gGC4MweEbC6s3wBBwO0DCzdDToBODoFGUoFIroBQ/YBgzjqAzohtAAYAnd//QO9OD1iEgUiQgJSAT2uBQLaAQs6AT+CIRmeAAEGA7gMLEUX/hUDWgLCAQdGAYQfZgI6AAEGg7gMLN0N5gEq3gP6AYCHmgWDLwIVBlYHzAAAAAAAAAIBBHoEAQ3mAYC0fgWDLwIVBlYHzAAAAAAAAAIAAQeDuAwsWQcMICIGkgU7cqgpOhz8/h4uAjoCugABB
 
gO8DCyFA3oDPgJeARDyAWRGAQOQ/P4eJEQUCEYCpEYBg2weGi4QAQbDvAwuFBECfBgABAAESEIKfgM8BgIsHgPsBAYClgEC7iJ4phNoIgYmAowQCBAiAyYKcgEGTgECTgNeDQt6H+wiA0gGAoRGAQPyBQtSA/oCnga2AtYCIAwMDgIuAiAAmgJCAiAMDA4CLgEFBgOGBRlKB1INFHBCKgJGAm4yAoaRA2YBA1QAAAAAAAAE/P4eJEQQAKQQSgIgSgIgREQQIjwAgixIqCAsAB4KMBpKBmoCMioDWGBCKAQwKABARAgYFHIWPj4+IgEChCIFA94FBNNWZmkUggOaC5IBBnoFA8IBBLoDSgItA1amAtACC3wmA3oCw3YKN356Ap4eugEF/YHKbgUDRgECGgUNhg4iAYE2VQQ0IAIGJAAAJgsOB6aWGiyQAlwQAAQGA66BBapG/gbWnjIKZlZSBi4CSAxoAgECGCICfmUCDFQ0NChYGgIhgvKaDVLmGjYe/hUI+1IDGAQgJC4CLAAaAwAMPBoCbAwQAFoBBU4FBI4GxVf8YmgEACICJAwAAKBgAAAIBAAgAAAAAAQALBgMDAICJgJAiBICQQkOKhJ6An5mCooDugoyrg4gxSZ2JYPwFQh1rBeFP/6+JNZmFRhuAWfCBmYS2gwAAAAAAAAAArIBFW4CygE5AgEQEgEgIhbyApoCOgEGFgEwDAYCeC4BB2oCSgO6AYM2PgaSAiYBAqIBPnoAAQcDzAwsXQUiARSiASQIAgEgogUjEhUK4gW3c1YAAQeDzAwvmAt0AgMYFAwGBQfZAngclkAuAiIFA/IRA0IC2kICaAAEAQIU7gUCFCwqCwprairmKoYFAyJu8gI8Cg5uAyYCPgO2Aj4DtgI+AroK7gI8GgPaA/oDtgI+A7IGPgPuA+yiA6oCMhMqBmgAAA4HBEIG9gO8AgacLhJgwgImBQsCCRGiKiIBBWoJBODmAr431gI6ApYi1g
 
UCJgb+F0ZgYKAqxvtiLpCKCQbwAgoqCjIKMgoyBTO+CQTyAQfmF6IPegGB1cYCLCICbgdGBjaHlguyBQMmAmpG4g6OA3oCLgKOAQJSCwIOygOOEiIL/gWBPL4BDAI9BDQCAroCsgcKAQvuASAOBQjqFQh2KQWeB94G9gMuAiILngUCxgdCAj4CXMoRAzAKA+oFA+oH9gPWB8oBBDIFBAQuAQJuA0oCRgNCAQaSAQQEAgdCAYE1XhLqGRFeQz4FgYXQSLzmGnYNPgYZBtINF34bsEIIAQdD2AwvFAUC2gEIXgUNtgEG4gENZgELvgP6ASUKAt4BCYoBBjYDDgFOIgKqE5oHcgmBvFYBF9YBDwYCVgECIgOuAlIFgVHqAU+uAQmeCRM6AYFCogUSbCIBgcVeBSAWCr4k1mYVg/qiJNZmFYC/vCYdgL/GBAABgMAWBmIiNgkPEWb+/YFH8YFkCQW2B6WB1CYCaV/eHRNWpiGAkZkGLYE0DYKbdoVA0ikDdgVaBjV0wTB5CHUXhU0pgIAuBTj+E+oRK7xGAYJD5CQCBAEGg+AMLR2D9z59CDYFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BYP/9gWD//YFg//2BAEHw+AMLRaCOiYaZGICZg6EwAAgACwMCgJaAnoBfF5eHjoGSgIlBMELPQJ9CdZ1Ea0H//0GAE5iOgGDNDIFBBIGIhJGA44Bfh4GXgQBBwPkDC7cCoQOAQIKAjoBfW4eYgU4GgEHIg4yCYM4gg0C8A4DZgWAuf5mA2ItA1WHx5ZkAAAAAoICLgI+ARUiAQJOBQLOAqoJA9YC8AAKBQSSBRuOBQxUDgUMEgEDFgUDLBIBBOYFBYYNArQmBQNqBwIFDu4GIgk3jgIyAQcSAYHT7gEENgUDiAoBBfYHVgd6AQJeBQJKCQI+BQPiAYFJlAoFAqICLgI+AwIBK84FE/I
 
RA7IH0g/6CQIANgI+B1wiB64BBoIFBdAyO6IFA+IJCBACAQPqB1oFBo4FCs4FgS3SBQISAwIGKgENSgGBOBYBd54AAAAAA6IFAw4BBGICdgLOAk4BBP4DhAIBZCICygIwCgECDgECcgEGkgEDVgUsxgGGnpIGxgbGBsYGxgbGBsYGxgbGBsYGxgbGBsYEAQYD8AwvxAaCAiQCAigqAQz0HgEIAgLiAx4CNAYFAs4CqigBA6oG1jp6AQQSBRPOBQKsDhUE2gUMUh0MEgPuCxoFAnBKAphmBQTmBQWGDQK0IgkDahL2BQ7uBiIJN44CMA4CJAIFBsIFgdPqBQQyCQOKEQX2B1YHegECWgkCSgv6Aj4FA+IBgUmMQg0CogIkAgIoKgMABgEQ5gK+ARIWAQMaAQTWBQJeFw4XYg0O3hEDshu+D/oJAgA2Aj4HXhOuAQaCCi4FBZRqO6IFA+IJCBACAQPqB1guBQZ2CrIBChIFFdoRgRfiBQISAwIKJgENRgWBOBYBd5oMAQYD+Aws2YDP/Wb+/YFH8YFoQCACBiQAACYJhBdVgpt2hUDSKQN2BVoGNXTBUHlNKWAqCYOXxj20C70DvAEHA/gMLFoiEkYDjgJmAVd6ASX6KnAyAroBPn4AAQeD+AwuCBKeBkQCAmwCAnACArICOgE59g0dcgUmbgYmBtYGNgUCwgEC/GioCChgYAAOIIICRI4gIADmeCyCICZIhiCELl4GPO5MOgUQ8jckBGAgUHBKNQZKVDYCNODUQHAEMGAIJiSmBi5IDCAAIAyEql4GKCxgJC6oPgKcgABQiGBQAQP+AQgIaCIGNCYlB3YkPYM48LIFAoYGRAICbAICcAAAIgWDXdoC4gLiAuIC4gAAAAAAAogUEie4DgF+MgIuAQNeAlYDZhY6BQW6Bi4BApYCYihpAxoBA5oGJgIiAuRiEiAEBCQMBAAkCAg8UAASLigkACICRAYGRKAAKDAELgYoMCQQIAIG
 
TDCgZAwEBKAEAAAUCBYCJgY4BAwADEICKga+CiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWmAQMmAQJ+Bi4GNAYnKmQGWgJMBiJSBQK2hge8JAoHSCoBBBoC+iiiXMQ+LARkDgYwJB4GIBIKLFxEAAwUCBdWvxScKPRABEIGJQOKLQR+ugImAsYDRgLLvIhSGiJg2iIKMhgAAogUEiV/SgEDUgGDdKoBg89WZQfqERa+DbAZr32Hz+oRgJhyAQNqAj4NhzHaAuxEBgvQJipSSEBoCMACXgEDIC4CUA4FArRKE0oCPgoiAioBCPgEHPYCIiQq3gLwICICQEIwAQfCCBAvjAmAjGYFAzBoBgEIIgZSBsYuqgJKAjAeBkAwPBICUBggDAQYDgZuAogADEIC8gpeAjYBDWoGyA4BhxK2AQMmAQL0BicqZAJeAkwEggpSBQK2gi4iAxYCVi6oci5AQgsYAgEC6gb6MGJeRgJmBjIDV1K/FKBIKkg6IQOKLQR+ugImAsYDRgLLvIhSGiJg2iIKMhkCoA4BfjICLgEDXgJWA2YWOgUFugYuA3oDFgJiKGkDGgEDmgYmAiIC5GCiLgPGJ9YGKAAAoECiJgY4BAwADEICKhKyCiICNgI2AQXOBQc6CkoGyA4BE2YCLgEJYAIBhvWVA/4yCnoC7hYuBjQGJkbiajomAkwGIA4hBsYRBPYdBCa//84vUqouDt4eJhaeHndGLroCJgEG4QP9D/QAAAABArIBCoIBCy4BLQYFGUoHUg0f7hJmEsI9Q84BgzJqPQO6AQJ+AzohgvKaDVM6HbC6ET/8AQeaFBAvhFeA/AAAAAAAA4L8DAAAABAAAAAQAAAAGAAAAg/miAERObgD8KRUA0VcnAN009QBi28AAPJmVAEGQQwBjUf4Au96rALdhxQA6biQA0k1CAEkG4AAJ6i4AHJLRAOsd/gApsRwA6D6nAPU1ggBEuy4AnOmEALQmcABBfl8A
 
1pE5AFODOQCc9DkAi1+EACj5vQD4HzsA3v+XAA+YBQARL+8AClqLAG0fbQDPfjYACcsnAEZPtwCeZj8ALepfALondQDl68cAPXvxAPc5BwCSUooA+2vqAB+xXwAIXY0AMANWAHv8RgDwq2sAILzPADb0mgDjqR0AXmGRAAgb5gCFmWUAoBRfAI1AaACA2P8AJ3NNAAYGMQDKVhUAyahzAHviYABrjMAAGcRHAM1nwwAJ6NwAWYMqAIt2xACmHJYARK/dABlX0QClPgUABQf/ADN+PwDCMugAmE/eALt9MgAmPcMAHmvvAJ/4XgA1HzoAf/LKAPGHHQB8kCEAaiR8ANVu+gAwLXcAFTtDALUUxgDDGZ0ArcTCACxNQQAMAF0Ahn1GAONxLQCbxpoAM2IAALTSfAC0p5cAN1XVANc+9gCjEBgATXb8AGSdKgBw16sAY3z4AHqwVwAXFecAwElWADvW2QCnhDgAJCPLANaKdwBaVCMAAB+5APEKGwAZzt8AnzH/AGYeagCZV2EArPtHAH5/2AAiZbcAMuiJAOa/YADvxM0AbDYJAF0/1AAW3tcAWDveAN6bkgDSIigAKIboAOJYTQDGyjIACOMWAOB9ywAXwFAA8x2nABjgWwAuEzQAgxJiAINIAQD1jlsArbB/AB7p8gBISkMAEGfTAKrd2ACuX0IAamHOAAoopADTmbQABqbyAFx3fwCjwoMAYTyIAIpzeACvjFoAb9e9AC2mYwD0v8sAjYHvACbBZwBVykUAytk2ACio0gDCYY0AEsl3AAQmFAASRpsAxFnEAMjFRABNspEAABfzANRDrQApSeUA/dUQAAC+/AAelMwAcM7uABM+9QDs8YAAs+fDAMf4KACTBZQAwXE+AC4JswALRfMAiBKcAKsgewAutZ8AR5LCAHsyLwAMVW0AcqeQAGvnHwAxy5YAeRZKAEF54gD034kA6JSXAOLmhACZMZcAiO1rAF9fNgC7/Q4ASJq0A
 
GekbABxckIAjV0yAJ8VuAC85QkAjTElAPd0OQAwBRwADQwBAEsIaAAs7lgAR6qQAHTnAgC91iQA932mAG5IcgCfFu8AjpSmALSR9gDRU1EAzwryACCYMwD1S34AsmNoAN0+XwBAXQMAhYl/AFVSKQA3ZMAAbdgQADJIMgBbTHUATnHUAEVUbgALCcEAKvVpABRm1QAnB50AXQRQALQ72wDqdsUAh/kXAElrfQAdJ7oAlmkpAMbMrACtFFQAkOJqAIjZiQAsclAABKS+AHcHlADzMHAAAPwnAOpxqABmwkkAZOA9AJfdgwCjP5cAQ5T9AA2GjAAxQd4AkjmdAN1wjAAXt+cACN87ABU3KwBcgKAAWoCTABARkgAP6NgAbICvANv/SwA4kA8AWRh2AGKlFQBhy7sAx4m5ABBAvQDS8gQASXUnAOu29gDbIrsAChSqAIkmLwBkg3YACTszAA6UGgBROqoAHaPCAK/trgBcJhIAbcJNAC16nADAVpcAAz+DAAnw9gArQIwAbTGZADm0BwAMIBUA2MNbAPWSxADGrUsATsqlAKc3zQDmqTYAq5KUAN1CaAAZY94AdozvAGiLUgD82zcArqGrAN8VMQAArqEADPvaAGRNZgDtBbcAKWUwAFdWvwBH/zoAavm5AHW+8wAok98Aq4AwAGaM9gAEyxUA+iIGANnkHQA9s6QAVxuPADbNCQBOQukAE76kADMjtQDwqhoAT2WoANLBpQALPw8AW3jNACP5dgB7iwQAiRdyAMamUwBvbuIA7+sAAJtKWADE2rcAqma6AHbPzwDRAh0AsfEtAIyZwQDDrXcAhkjaAPddoADGgPQArPAvAN3smgA/XLwA0N5tAJDHHwAq27YAoyU6AACvmgCtU5MAtlcEACkttABLgH4A2genAHaqDgB7WaEAFhIqANy3LQD65f0Aidv+AIm+/QDkdmwABqn8AD6AcACFbhUA/Yf/ACg+BwBhZzMAKhiGAE296g
 
Cz568Aj21uAJVnOQAxv1sAhNdIADDfFgDHLUMAJWE1AMlwzgAwy7gAv2z9AKQAogAFbOQAWt2gACFvRwBiEtIAuVyEAHBhSQBrVuAAmVIBAFBVNwAe1bcAM/HEABNuXwBdMOQAhS6pAB2ywwChMjYACLekAOqx1AAW9yEAj2nkACf/dwAMA4AAjUAtAE/NoAAgpZkAs6LTAC9dCgC0+UIAEdrLAH2+0ACb28EAqxe9AMqigQAIalwALlUXACcAVQB/FPAA4QeGABQLZACWQY0Ah77eANr9KgBrJbYAe4k0AAXz/gC5v54AaGpPAEoqqABPxFoALfi8ANdamAD0x5UADU2NACA6pgCkV18AFD+xAIA4lQDMIAEAcd2GAMnetgC/YPUATWURAAEHawCMsKwAssDQAFFVSAAe+w4AlXLDAKMGOwDAQDUABtx7AOBFzABOKfoA1srIAOjzQQB8ZN4Am2TYANm+MQCkl8MAd1jUAGnjxQDw2hMAujo8AEYYRgBVdV8A0r31AG6SxgCsLl0ADkTtABw+QgBhxIcAKf3pAOfW8wAifMoAb5E1AAjgxQD/140AbmriALD9xgCTCMEAfF10AGutsgDNbp0APnJ7AMYRagD3z6kAKXPfALXJugC3AFEA4rINAHS6JADlfWAAdNiKAA0VLACBGAwAfmaUAAEpFgCfenYA/f2+AFZF7wDZfjYA7NkTAIu6uQDEl/wAMagnAPFuwwCUxTYA2KhWALSotQDPzA4AEoktAG9XNAAsVokAmc7jANYguQBrXqoAPiqcABFfzAD9C0oA4fT7AI47bQDihiwA6dSEAPy0qQDv7tEALjXJAC85YQA4IUQAG9nIAIH8CgD7SmoALxzYAFO0hABOmYwAVCLMACpV3ADAxtYACxmWABpwuABplWQAJlpgAD9S7gB/EQ8A9LURAPzL9QA0vC0ANLzuAOhdzADdXmAAZ46bAJIz7wDJF7gAYVibAOFXvABRg8Y
 
A2D4QAN1xSAAtHN0ArxihACEsRgBZ89cA2XqYAJ5UwABPhvoAVgb8AOV5rgCJIjYAOK0iAGeT3ABV6KoAgiY4AMrnmwBRDaQAmTOxAKnXDgBpBUgAZbLwAH+IpwCITJcA+dE2ACGSswB7gkoAmM8hAECf3ADcR1UA4XQ6AGfrQgD+nd8AXtRfAHtnpAC6rHoAVfaiACuIIwBBulUAWW4IACEqhgA5R4MAiePmAOWe1ABJ+0AA/1bpABwPygDFWYoAlPorANPBxQAPxc8A21quAEfFhgCFQ2IAIYY7ACx5lAAQYYcAKkx7AIAsGgBDvxIAiCaQAHg8iQCoxOQA5dt7AMQ6wgAm9OoA92eKAA2SvwBloysAPZOxAL18CwCkUdwAJ91jAGnh3QCalBkAqCmVAGjOKAAJ7bQARJ8gAE6YygBwgmMAfnwjAA+5MgCn9Y4AFFbnACHxCAC1nSoAb35NAKUZUQC1+asAgt/WAJbdYQAWNgIAxDqfAIOioQBy7W0AOY16AIK4qQBrMlwARidbAAA07QDSAHcA/PRVAAFZTQDgcYAAQdObBAtdQPsh+T8AAAAALUR0PgAAAICYRvg8AAAAYFHMeDsAAACAgxvwOQAAAEAgJXo4AAAAgCKC4zYAAAAAHfNpNRgtRFT7Iek/GC1EVPsh6b/SITN/fNkCQNIhM3982QLAAEG/nAQLcYAYLURU+yEJQBgtRFT7IQnAT7thBWes3T8YLURU+yHpP5v2gdILc+8/GC1EVPsh+T/iZS8ifyt6PAdcFDMmpoE8vcvweogHcDwHXBQzJqaRPAAAAAAAAPA/AAAAAAAA+D8AAAAAAAAAAAbQz0Pr/Uw+AEG7nQQLBUADuOI/AEHknQQLAm0BAEGLngQLBf//////AEHQngQLEC0rICAgMFgweAAobnVsbCkAQfCeBAtBEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEA
 
CQsLAAAJBgsAAAsABhEAAAAREREAQcGfBAshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEH7nwQLAQwAQYegBAsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEG1oAQLAQ4AQcGgBAsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEHvoAQLARAAQfugBAseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEGyoQQLDhIAAAASEhIAAAAAAAAJAEHjoQQLAQsAQe+hBAsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEGdogQLAQwAQamiBAtcDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGLTBYKzBYIDBYLTB4KzB4IDB4AGluZgBJTkYAbmFuAE5BTgAuAHJ3YQBpbmZpbml0eQBuYW4AQZCjBAtL0XSeAFedvSqAcFIP//8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa////877//+Sv///0BIBAEGQpQQLA7ATAQBByKUECwnwGVEAAAAAAAUAQdylBAsCdAEAQfSlBAsOdQEAAHYBAADoFQEAAAQAQYymBAsBAQBBm6YECwUK/////wBB4KYECwPQEgE=";if(!T(U)){var
 ka=U;U=b.locateFile?b.locateFile(ka,t):t+ka;}function la(){try{if(v)return new Uint8Array(v);var 
a=U;if(T(a))try{var c=ma(a.slice(37)),d=new 
Uint8Array(c.length);for(a=0;a<c.length;++a)d[a]=c.charCodeAt(a);var e=d;}catch(g){throw Error("Converting 
base64 string to bytes failed.");}else e=void 0;var f
 =e;if(f)return f;throw"both async and sync fetching of the wasm failed";}catch(g){w(g);}}function 
na(){return v||"function"!==typeof 
fetch?Promise.resolve().then(la):fetch(U,{credentials:"same-origin"}).then(function(a){if(!a.ok)throw"failed 
to load wasm binary file at '"+U+"'";return a.arrayBuffer();}).catch(function(){return la();});}function 
V(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c)c(b);else{var d=c.B;"number"===typeof d?void 
0===c.A?P.get(d)():P.get(d)(c.A):d(void 0===c.A?null:c.A);}}}function oa(a){var 
c=ca(a)+1,d=K(c);D(a,E,d,c);return d;}function pa(){}var qa=[null,[],[]];function ra(){function 
a(k){return(k=k.toTimeString().match(/\(([A-Za-z ]+)\)$/))?k[1]:"GMT";}if(!sa){sa=!0;var c=new 
Date().getFullYear(),d=new Date(c,0,1),e=new Date(c,6,1);c=d.getTimezoneOffset();var 
f=e.getTimezoneOffset(),g=Math.max(c,f);M[ta()>>2]=60*g;M[ua()>>2]=Number(c!=f);d=a(d);e=a(e);d=da(d);e=da(e);f<c?(M[X()>>2]=d,M[X()+4>>2]=e):(M[X()>>2]=e,M[X()+4>>2]=d);}}var
 sa;pa=(a,c
 ,d)=>{a=H(a);c=null!==c?JSON.parse(H(c)):[];try{const e=b.externalCall(a,c);return 
e?oa(e):null;}catch(e){return b.HEAPU8[d]=1,oa(e.message);}};var ma="function"===typeof 
atob?atob:function(a){var c="",d=0;a=a.replace(/[^A-Za-z0-9\+\/=]/g,"");do{var 
e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));var 
k="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(d++));e=e<<2|f>>4;f=(f&15)<<4|g>>2;var
 
m=(g&3)<<6|k;c+=String.fromCharCode(e);64!==g&&(c+=String.fromCharCode(f));64!==k&&(c+=String.fromCharCode(m));}while(d<a.length);return
 c;};fa.push({B:function(){va();}});var wa={b:function(a,c,d,e){w("Assertion failed: "+H(a)+", at: 
"+[c?H(c):"unknown filename",d,e?H(e):"unknown function"]);},c:function(){w();},i:pa,h:function
 (a,c){a=H(a);let 
d;try{d=window.JSON.parse(a);}catch(e){d=a;}0!==c?window.alert(a):window.console.log("DUMP",d);},f:function(a,c,d){E.copyWithin(a,c,c+d);},g:function(){w("OOM");},e:function(a,c,d,e){for(var
 f=0,g=0;g<d;g++){for(var k=M[c+8*g>>2],m=M[c+(8*g+4)>>2],z=0;z<m;z++){var 
l=E[k+z],p=qa[a];0===l||10===l?((1===a?aa:u)(ba(p,0)),p.length=0):p.push(l);}f+=m;}M[e>>2]=f;return 
0;},d:function(a){var c=Date.now();M[a>>2]=c/1E3|0;M[a+4>>2]=c%1E3*1E3|0;return 
0;},j:function(a,c){ra();a=new 
Date(1E3*M[a>>2]);M[c>>2]=a.getSeconds();M[c+4>>2]=a.getMinutes();M[c+8>>2]=a.getHours();M[c+12>>2]=a.getDate();M[c+16>>2]=a.getMonth();M[c+20>>2]=a.getFullYear()-1900;M[c+24>>2]=a.getDay();var
 d=new 
Date(a.getFullYear(),0,1);M[c+28>>2]=(a.getTime()-d.getTime())/864E5|0;M[c+36>>2]=-(60*a.getTimezoneOffset());var
 e=new 
Date(a.getFullYear(),6,1).getTimezoneOffset();d=d.getTimezoneOffset();a=(e!=d&&a.getTimezoneOffset()==Math.min(d,e))|0;M[c+32>>2]=a;a=M[X()+(a?4:0)>>2];M[c+40>>2]=a;return
 c;},k:functi
 on(a){a=H(a);window.console.log(a);},a:x,l:function(a,c,d,e){a=H(a);c=H(c);d=H(d);d=`Quickjs -- ${a}: 
${c}\n${d}`;0!==e?window.alert(d):window.console.error(d);}};(function(){function 
a(f){b.asm=f.exports;P=b.asm.m;Q--;b.monitorRunDependencies&&b.monitorRunDependencies(Q);0==Q&&(null!==R&&(clearInterval(R),R=null),S&&(f=S,S=null,f()));}function
 c(f){a(f.instance);}function d(f){return na().then(function(g){return 
WebAssembly.instantiate(g,e);}).then(f,function(g){u("failed to asynchronously prepare wasm: 
"+g);w(g);});}var 
e={a:wa};Q++;b.monitorRunDependencies&&b.monitorRunDependencies(Q);if(b.instantiateWasm)try{return 
b.instantiateWasm(e,a);}catch(f){return u("Module.instantiateWasm callback failed with error: 
"+f),!1;}(function(){return v||"function"!==typeof 
WebAssembly.instantiateStreaming||T(U)||"function"!==typeof 
fetch?d(c):fetch(U,{credentials:"same-origin"}).then(function(f){return 
WebAssembly.instantiateStreaming(f,e).then(c,function(g){u("wasm streaming compile failed: "+
 g);u("falling back to ArrayBuffer instantiation");return d(c);});});})().catch(n);return{};})();var 
va=b.___wasm_call_ctors=function(){return(va=b.___wasm_call_ctors=b.asm.n).apply(null,arguments);};b._evalInSandbox=function(){return(b._evalInSandbox=b.asm.o).apply(null,arguments);};b._nukeSandbox=function(){return(b._nukeSandbox=b.asm.p).apply(null,arguments);};b._init=function(){return(b._init=b.asm.q).apply(null,arguments);};b._commFun=function(){return(b._commFun=b.asm.r).apply(null,arguments);};b._dumpMemoryUse=function(){return(b._dumpMemoryUse=b.asm.s).apply(null,arguments);};var
 
K=b._malloc=function(){return(K=b._malloc=b.asm.t).apply(null,arguments);},X=b.__get_tzname=function(){return(X=b.__get_tzname=b.asm.u).apply(null,arguments);},ua=b.__get_daylight=function(){return(ua=b.__get_daylight=b.asm.v).apply(null,arguments);},ta=b.__get_timezone=function(){return(ta=b.__get_timezone=b.asm.w).apply(null,arguments);},G=b.stackSave=function(){return(G=b.stackSave=b.asm.x).apply(
 
null,arguments);},I=b.stackRestore=function(){return(I=b.stackRestore=b.asm.y).apply(null,arguments);},C=b.stackAlloc=function(){return(C=b.stackAlloc=b.asm.z).apply(null,arguments);};b.ccall=B;b.cwrap=function(a,c,d,e){d=d||[];var
 f=d.every(function(g){return"number"===g;});return"string"!==c&&f&&!e?A(a):function(){return 
B(a,c,d,arguments,e);};};var Y;S=function xa(){Y||Z();Y||(S=xa);};function Z(){function 
a(){if(!Y&&(Y=!0,b.calledRun=!0,!y)){V(fa);V(ha);h(b);if(b.onRuntimeInitialized)b.onRuntimeInitialized();if(b.postRun)for("function"==typeof
 b.postRun&&(b.postRun=[b.postRun]);b.postRun.length;){var 
c=b.postRun.shift();ia.unshift(c);}V(ia);}}if(!(0<Q)){if(b.preRun)for("function"==typeof 
b.preRun&&(b.preRun=[b.preRun]);b.preRun.length;)ja();V(ea);0<Q||(b.setStatus?(b.setStatus("Running..."),setTimeout(function(){setTimeout(function(){b.setStatus("");},1);a();},1)):a());}}b.run=Z;if(b.preInit)for("function"==typeof
 b.preInit&&(b.preInit=[b.preInit]);0<b.preInit.length;)b.preInit.
 pop()();noExitRuntime=!0;Z();return Module.ready;};}();var _default=Module;exports.default=_default;
+
+/***/ }),
+/* 2 */
+/***/ ((__unused_webpack_module, exports) => {
+
+
+
+class SandboxSupportBase {
+  constructor(win) {
+    this.win = win;
+    this.timeoutIds = new Map();
+    this.commFun = null;
+  }
+
+  destroy() {
+    this.commFunc = null;
+    this.timeoutIds.forEach(([_, id]) => this.win.clearTimeout(id));
+    this.timeoutIds = null;
+  }
+
+  exportValueToSandbox(val) {
+    throw new Error("Not implemented");
+  }
+
+  importValueFromSandbox(val) {
+    throw new Error("Not implemented");
+  }
+
+  createErrorForSandbox(errorMessage) {
+    throw new Error("Not implemented");
+  }
+
+  callSandboxFunction(name, args) {
+    try {
+      args = this.exportValueToSandbox(args);
+      this.commFun(name, args);
+    } catch (e) {
+      this.win.console.error(e);
+    }
+  }
+
+  createSandboxExternals() {
+    const externals = {
+      setTimeout: (callbackId, nMilliseconds) => {
+        if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
+          return;
+        }
+
+        const id = this.win.setTimeout(() => {
+          this.timeoutIds.delete(callbackId);
+          this.callSandboxFunction("timeoutCb", {
+            callbackId,
+            interval: false
+          });
+        }, nMilliseconds);
+        this.timeoutIds.set(callbackId, id);
+      },
+      clearTimeout: id => {
+        this.win.clearTimeout(this.timeoutIds.get(id));
+        this.timeoutIds.delete(id);
+      },
+      setInterval: (callbackId, nMilliseconds) => {
+        if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
+          return;
+        }
+
+        const id = this.win.setInterval(() => {
+          this.callSandboxFunction("timeoutCb", {
+            callbackId,
+            interval: true
+          });
+        }, nMilliseconds);
+        this.timeoutIds.set(callbackId, id);
+      },
+      clearInterval: id => {
+        this.win.clearInterval(this.timeoutIds.get(id));
+        this.timeoutIds.delete(id);
+      },
+      alert: cMsg => {
+        if (typeof cMsg !== "string") {
+          return;
+        }
+
+        this.win.alert(cMsg);
+      },
+      prompt: (cQuestion, cDefault) => {
+        if (typeof cQuestion !== "string" || typeof cDefault !== "string") {
+          return null;
+        }
+
+        return this.win.prompt(cQuestion, cDefault);
+      },
+      parseURL: cUrl => {
+        const url = new this.win.URL(cUrl);
+        const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", 
"protocol", "search", "searchParams", "username"];
+        return Object.fromEntries(props.map(name => [name, url[name].toString()]));
+      },
+      send: data => {
+        if (!data) {
+          return;
+        }
+
+        const event = new this.win.CustomEvent("updatefromsandbox", {
+          detail: this.importValueFromSandbox(data)
+        });
+        this.win.dispatchEvent(event);
+      }
+    };
+    Object.setPrototypeOf(externals, null);
+    return (name, args) => {
+      try {
+        const result = externals[name](...args);
+        return this.exportValueToSandbox(result);
+      } catch (error) {
+        throw this.createErrorForSandbox(error?.toString() ?? "");
+      }
+    };
+  }
+
+}
+
+{
+  exports.SandboxSupportBase = SandboxSupportBase;
+}
+
+/***/ })
+/******/       ]);
+/************************************************************************/
+/******/       // The module cache
+/******/       var __webpack_module_cache__ = {};
+/******/       
+/******/       // The require function
+/******/       function __w_pdfjs_require__(moduleId) {
+/******/               // Check if module is in cache
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
+/******/               }
+/******/               // Create a new module (and put it into the cache)
+/******/               var module = __webpack_module_cache__[moduleId] = {
+/******/                       // no module.id needed
+/******/                       // no module.loaded needed
+/******/                       exports: {}
+/******/               };
+/******/       
+/******/               // Execute the module function
+/******/               __webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);
+/******/       
+/******/               // Return the exports of the module
+/******/               return module.exports;
+/******/       }
+/******/       
+/************************************************************************/
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
+/******/ })()
+;
+});
+//# sourceMappingURL=pdf.sandbox.js.map
\ No newline at end of file
diff --git a/third-party/pdfjs/build/pdf.worker.js b/third-party/pdfjs/build/pdf.worker.js
index 40af1fb83..9589a7121 100644
--- a/third-party/pdfjs/build/pdf.worker.js
+++ b/third-party/pdfjs/build/pdf.worker.js
@@ -2,7 +2,7 @@
  * @licstart The following is the entire license notice for the
  * Javascript code in this page
  *
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2020 Mozilla Foundation
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -33,7 +33,27 @@
 return /******/ (() => { // webpackBootstrap
 /******/       "use strict";
 /******/       var __webpack_modules__ = ([
-/* 0 */,
+/* 0 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+Object.defineProperty(exports, "WorkerMessageHandler", ({
+  enumerable: true,
+  get: function () {
+    return _worker.WorkerMessageHandler;
+  }
+}));
+
+var _worker = __w_pdfjs_require__(1);
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+
+/***/ }),
 /* 1 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
@@ -50,13 +70,13 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _pdf_manager = __w_pdfjs_require__(6);
 
-var _writer = __w_pdfjs_require__(48);
+var _writer = __w_pdfjs_require__(46);
 
 var _is_node = __w_pdfjs_require__(4);
 
-var _message_handler = __w_pdfjs_require__(69);
+var _message_handler = __w_pdfjs_require__(48);
 
-var _worker_stream = __w_pdfjs_require__(70);
+var _worker_stream = __w_pdfjs_require__(49);
 
 var _core_utils = __w_pdfjs_require__(8);
 
@@ -125,7 +145,7 @@ class WorkerMessageHandler {
     var WorkerTasks = [];
     const verbosity = (0, _util.getVerbosityLevel)();
     const apiVersion = docParams.apiVersion;
-    const workerVersion = '2.8.335';
+    const workerVersion = '2.7.570';
 
     if (apiVersion !== workerVersion) {
       throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version 
"${workerVersion}".`);
@@ -142,7 +162,7 @@ class WorkerMessageHandler {
     }
 
     if (typeof ReadableStream === "undefined") {
-      throw new Error("The browser/environment lacks native support for critical " + "functionality used by 
the PDF.js library (e.g. `ReadableStream`); " + "please use a `legacy`-build instead.");
+      throw new Error("The browser/environment lacks native support for critical " + "functionality used by 
the PDF.js library (e.g. `ReadableStream`); " + "please use an `es5`-build instead.");
     }
 
     var docId = docParams.docId;
@@ -176,22 +196,21 @@ class WorkerMessageHandler {
         await pdfManager.ensureDoc("checkFirstPage");
       }
 
-      const [numPages, fingerprint, isPureXfa] = await Promise.all([pdfManager.ensureDoc("numPages"), 
pdfManager.ensureDoc("fingerprint"), pdfManager.ensureDoc("isPureXfa")]);
+      const [numPages, fingerprint] = await Promise.all([pdfManager.ensureDoc("numPages"), 
pdfManager.ensureDoc("fingerprint")]);
       return {
         numPages,
-        fingerprint,
-        isPureXfa
+        fingerprint
       };
     }
 
-    function getPdfManager(data, evaluatorOptions, enableXfa) {
+    function getPdfManager(data, evaluatorOptions) {
       var pdfManagerCapability = (0, _util.createPromiseCapability)();
       let newPdfManager;
       var source = data.source;
 
       if (source.data) {
         try {
-          newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, 
evaluatorOptions, enableXfa, docBaseUrl);
+          newPdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, 
evaluatorOptions, docBaseUrl);
           pdfManagerCapability.resolve(newPdfManager);
         } catch (ex) {
           pdfManagerCapability.reject(ex);
@@ -223,7 +242,7 @@ class WorkerMessageHandler {
           length: fullRequest.contentLength,
           disableAutoFetch,
           rangeChunkSize: source.rangeChunkSize
-        }, evaluatorOptions, enableXfa, docBaseUrl);
+        }, evaluatorOptions, docBaseUrl);
 
         for (let i = 0; i < cachedChunks.length; i++) {
           newPdfManager.sendProgressiveData(cachedChunks[i]);
@@ -246,7 +265,7 @@ class WorkerMessageHandler {
         }
 
         try {
-          newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, 
evaluatorOptions, enableXfa, docBaseUrl);
+          newPdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, 
evaluatorOptions, docBaseUrl);
           pdfManagerCapability.resolve(newPdfManager);
         } catch (ex) {
           pdfManagerCapability.reject(ex);
@@ -364,7 +383,7 @@ class WorkerMessageHandler {
         isEvalSupported: data.isEvalSupported,
         fontExtraProperties: data.fontExtraProperties
       };
-      getPdfManager(data, evaluatorOptions, data.enableXfa).then(function (newPdfManager) {
+      getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {
         if (terminated) {
           newPdfManager.terminate(new _util.AbortException("Worker was terminated."));
           throw new Error("Worker was terminated");
@@ -435,16 +454,6 @@ class WorkerMessageHandler {
         return page.jsActions;
       });
     });
-    handler.on("GetPageXfa", function wphSetupGetXfa({
-      pageIndex
-    }) {
-      return pdfManager.getPage(pageIndex).then(function (page) {
-        return pdfManager.ensure(page, "xfaData");
-      });
-    });
-    handler.on("GetIsPureXfa", function wphSetupGetIsPureXfa(data) {
-      return pdfManager.ensureDoc("isPureXfa");
-    });
     handler.on("GetOutline", function wphSetupGetOutline(data) {
       return pdfManager.ensureCatalog("documentOutline");
     });
@@ -705,9 +714,9 @@ exports.arrayByteLength = arrayByteLength;
 exports.arraysToBytes = arraysToBytes;
 exports.assert = assert;
 exports.bytesToString = bytesToString;
-exports.createObjectURL = createObjectURL;
 exports.createPromiseCapability = createPromiseCapability;
 exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.encodeToXmlString = encodeToXmlString;
 exports.escapeString = escapeString;
 exports.getModificationDate = getModificationDate;
 exports.getVerbosityLevel = getVerbosityLevel;
@@ -719,7 +728,7 @@ exports.isBool = isBool;
 exports.isNum = isNum;
 exports.isSameOrigin = isSameOrigin;
 exports.isString = isString;
-exports.objectFromMap = objectFromMap;
+exports.objectFromEntries = objectFromEntries;
 exports.objectSize = objectSize;
 exports.removeNullCharacters = removeNullCharacters;
 exports.setVerbosityLevel = setVerbosityLevel;
@@ -732,7 +741,7 @@ exports.stringToUTF8String = stringToUTF8String;
 exports.unreachable = unreachable;
 exports.utf8StringToString = utf8StringToString;
 exports.warn = warn;
-exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
+exports.VerbosityLevel = exports.Util = exports.UNSUPPORTED_FEATURES = exports.UnknownErrorException = 
exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PermissionFlag 
= exports.PasswordResponses = exports.PasswordException = exports.PageActionEventType = exports.OPS = 
exports.MissingPDFException = exports.IsLittleEndianCached = exports.IsEvalSupportedCached = 
exports.InvalidPDFException = exports.ImageKind = exports.IDENTITY_MATRIX = exports.FormatError = 
exports.FontType = exports.FONT_IDENTITY_MATRIX = exports.DocumentActionEventType = exports.createObjectURL = 
exports.CMapCompressionType = exports.BaseException = exports.AnnotationType = 
exports.AnnotationStateModelType = exports.AnnotationReviewState = exports.AnnotationReplyType = 
exports.AnnotationMarkedState = exports.AnnotationFlag = exports.AnnotationFieldFlag = 
exports.AnnotationBorderStyleType = exports.AnnotationActionEventType = exports.AbortException = void 0;
 
 __w_pdfjs_require__(3);
 
@@ -1307,14 +1316,8 @@ function objectSize(obj) {
   return Object.keys(obj).length;
 }
 
-function objectFromMap(map) {
-  const obj = Object.create(null);
-
-  for (const [key, value] of map) {
-    obj[key] = value;
-  }
-
-  return obj;
+function objectFromEntries(iterable) {
+  return Object.assign(Object.create(null), Object.fromEntries(iterable));
 }
 
 function isLittleEndian() {
@@ -1396,7 +1399,7 @@ class Util {
     const c = m[2] * transpose[0] + m[3] * transpose[2];
     const d = m[2] * transpose[1] + m[3] * transpose[3];
     const first = (a + d) / 2;
-    const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;
+    const second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
     const sx = first + second || 1;
     const sy = first - second || 1;
     return [Math.sqrt(sx), Math.sqrt(sy)];
@@ -1530,13 +1533,9 @@ function isArrayEqual(arr1, arr2) {
     return false;
   }
 
-  for (let i = 0, ii = arr1.length; i < ii; i++) {
-    if (arr1[i] !== arr2[i]) {
-      return false;
-    }
-  }
-
-  return true;
+  return arr1.every(function (element, index) {
+    return element === arr2[index];
+  });
 }
 
 function getModificationDate(date = new Date()) {
@@ -1567,28 +1566,84 @@ function createPromiseCapability() {
   return capability;
 }
 
-function createObjectURL(data, contentType = "", forceDataSchema = false) {
-  if (URL.createObjectURL && !forceDataSchema) {
-    return URL.createObjectURL(new Blob([data], {
-      type: contentType
-    }));
+const createObjectURL = function createObjectURLClosure() {
+  const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
+  return function createObjectURL(data, contentType, forceDataSchema = false) {
+    if (!forceDataSchema && URL.createObjectURL) {
+      const blob = new Blob([data], {
+        type: contentType
+      });
+      return URL.createObjectURL(blob);
+    }
+
+    let buffer = `data:${contentType};base64,`;
+
+    for (let i = 0, ii = data.length; i < ii; i += 3) {
+      const b1 = data[i] & 0xff;
+      const b2 = data[i + 1] & 0xff;
+      const b3 = data[i + 2] & 0xff;
+      const d1 = b1 >> 2,
+            d2 = (b1 & 3) << 4 | b2 >> 4;
+      const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
+      const d4 = i + 2 < ii ? b3 & 0x3f : 64;
+      buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+    }
+
+    return buffer;
+  };
+}();
+
+exports.createObjectURL = createObjectURL;
+const XMLEntities = {
+  0x3c: "&lt;",
+  0x3e: "&gt;",
+  0x26: "&amp;",
+  0x22: "&quot;",
+  0x27: "&apos;"
+};
+
+function encodeToXmlString(str) {
+  const buffer = [];
+  let start = 0;
+
+  for (let i = 0, ii = str.length; i < ii; i++) {
+    const char = str.codePointAt(i);
+
+    if (0x20 <= char && char <= 0x7e) {
+      const entity = XMLEntities[char];
+
+      if (entity) {
+        if (start < i) {
+          buffer.push(str.substring(start, i));
+        }
+
+        buffer.push(entity);
+        start = i + 1;
+      }
+    } else {
+      if (start < i) {
+        buffer.push(str.substring(start, i));
+      }
+
+      buffer.push(`&#x${char.toString(16).toUpperCase()};`);
+
+      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
+        i++;
+      }
+
+      start = i + 1;
+    }
   }
 
-  const digits = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
-  let buffer = `data:${contentType};base64,`;
+  if (buffer.length === 0) {
+    return str;
+  }
 
-  for (let i = 0, ii = data.length; i < ii; i += 3) {
-    const b1 = data[i] & 0xff;
-    const b2 = data[i + 1] & 0xff;
-    const b3 = data[i + 2] & 0xff;
-    const d1 = b1 >> 2,
-          d2 = (b1 & 3) << 4 | b2 >> 4;
-    const d3 = i + 1 < ii ? (b2 & 0xf) << 2 | b3 >> 6 : 64;
-    const d4 = i + 2 < ii ? b3 & 0x3f : 64;
-    buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+  if (start < str.length) {
+    buffer.push(str.substring(start, str.length));
   }
 
-  return buffer;
+  return buffer.join("");
 }
 
 /***/ }),
@@ -1635,10 +1690,10 @@ exports.RefSetCache = exports.RefSet = exports.Ref = exports.Name = exports.EOF
 
 var _util = __w_pdfjs_require__(2);
 
-const EOF = {};
+var EOF = {};
 exports.EOF = EOF;
 
-const Name = function NameClosure() {
+var Name = function NameClosure() {
   let nameCache = Object.create(null);
 
   function Name(name) {
@@ -1648,7 +1703,7 @@ const Name = function NameClosure() {
   Name.prototype = {};
 
   Name.get = function Name_get(name) {
-    const nameValue = nameCache[name];
+    var nameValue = nameCache[name];
     return nameValue ? nameValue : nameCache[name] = new Name(name);
   };
 
@@ -1661,7 +1716,7 @@ const Name = function NameClosure() {
 
 exports.Name = Name;
 
-const Cmd = function CmdClosure() {
+var Cmd = function CmdClosure() {
   let cmdCache = Object.create(null);
 
   function Cmd(cmd) {
@@ -1671,7 +1726,7 @@ const Cmd = function CmdClosure() {
   Cmd.prototype = {};
 
   Cmd.get = function Cmd_get(cmd) {
-    const cmdValue = cmdCache[cmd];
+    var cmdValue = cmdCache[cmd];
     return cmdValue ? cmdValue : cmdCache[cmd] = new Cmd(cmd);
   };
 
@@ -1684,8 +1739,8 @@ const Cmd = function CmdClosure() {
 
 exports.Cmd = Cmd;
 
-const Dict = function DictClosure() {
-  const nonSerializable = function nonSerializableClosure() {
+var Dict = function DictClosure() {
+  var nonSerializable = function nonSerializableClosure() {
     return nonSerializable;
   };
 
@@ -1778,7 +1833,7 @@ const Dict = function DictClosure() {
       return this._map[key] !== undefined;
     },
     forEach: function Dict_forEach(callback) {
-      for (const key in this._map) {
+      for (var key in this._map) {
         callback(key, this.get(key));
       }
     }
@@ -1870,7 +1925,7 @@ const Dict = function DictClosure() {
 
 exports.Dict = Dict;
 
-const Ref = function RefClosure() {
+var Ref = function RefClosure() {
   let refCache = Object.create(null);
 
   function Ref(num, gen) {
@@ -2030,20 +2085,6 @@ var _document = __w_pdfjs_require__(9);
 
 var _stream = __w_pdfjs_require__(12);
 
-function parseDocBaseUrl(url) {
-  if (url) {
-    const absoluteUrl = (0, _util.createValidAbsoluteUrl)(url);
-
-    if (absoluteUrl) {
-      return absoluteUrl.href;
-    }
-
-    (0, _util.warn)(`Invalid absolute docBaseUrl: "${url}".`);
-  }
-
-  return null;
-}
-
 class BasePdfManager {
   constructor() {
     if (this.constructor === BasePdfManager) {
@@ -2060,7 +2101,19 @@ class BasePdfManager {
   }
 
   get docBaseUrl() {
-    return this._docBaseUrl;
+    let docBaseUrl = null;
+
+    if (this._docBaseUrl) {
+      const 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() {
@@ -2118,13 +2171,12 @@ class BasePdfManager {
 }
 
 class LocalPdfManager extends BasePdfManager {
-  constructor(docId, data, password, evaluatorOptions, enableXfa, docBaseUrl) {
+  constructor(docId, data, password, evaluatorOptions, docBaseUrl) {
     super();
     this._docId = docId;
     this._password = password;
-    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);
+    this._docBaseUrl = docBaseUrl;
     this.evaluatorOptions = evaluatorOptions;
-    this.enableXfa = enableXfa;
     const stream = new _stream.Stream(data);
     this.pdfDocument = new _document.PDFDocument(this, stream);
     this._loadedStreamPromise = Promise.resolve(stream);
@@ -2157,14 +2209,13 @@ class LocalPdfManager extends BasePdfManager {
 exports.LocalPdfManager = LocalPdfManager;
 
 class NetworkPdfManager extends BasePdfManager {
-  constructor(docId, pdfNetworkStream, args, evaluatorOptions, enableXfa, docBaseUrl) {
+  constructor(docId, pdfNetworkStream, args, evaluatorOptions, docBaseUrl) {
     super();
     this._docId = docId;
     this._password = args.password;
-    this._docBaseUrl = parseDocBaseUrl(docBaseUrl);
+    this._docBaseUrl = docBaseUrl;
     this.msgHandler = args.msgHandler;
     this.evaluatorOptions = evaluatorOptions;
-    this.enableXfa = enableXfa;
     this.streamManager = new _chunked_stream.ChunkedStreamManager(pdfNetworkStream, {
       msgHandler: args.msgHandler,
       length: args.length,
@@ -2855,7 +2906,6 @@ Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
 exports.collectActions = collectActions;
-exports.encodeToXmlString = encodeToXmlString;
 exports.escapePDFName = escapePDFName;
 exports.getArrayLookupTableFactory = getArrayLookupTableFactory;
 exports.getInheritableProperty = getInheritableProperty;
@@ -2930,14 +2980,11 @@ function getInheritableProperty({
   getArray = false,
   stopWhenFound = true
 }) {
+  const LOOP_LIMIT = 100;
+  let loopCount = 0;
   let values;
-  const visited = new _primitives.RefSet();
-
-  while (dict instanceof _primitives.Dict && !(dict.objId && visited.has(dict.objId))) {
-    if (dict.objId) {
-      visited.put(dict.objId);
-    }
 
+  while (dict) {
     const value = getArray ? dict.getArray(key) : dict.get(key);
 
     if (value !== undefined) {
@@ -2952,6 +2999,11 @@ function getInheritableProperty({
       values.push(value);
     }
 
+    if (++loopCount > LOOP_LIMIT) {
+      (0, _util.warn)(`getInheritableProperty: maximum loop count exceeded for "${key}"`);
+      break;
+    }
+
     dict = dict.get("Parent");
   }
 
@@ -3101,36 +3153,25 @@ function _collectJS(entry, xref, list, parents) {
 
 function collectActions(xref, dict, eventType) {
   const actions = Object.create(null);
-  const additionalActionsDicts = getInheritableProperty({
-    dict,
-    key: "AA",
-    stopWhenFound: false
-  });
 
-  if (additionalActionsDicts) {
-    for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {
-      const additionalActions = additionalActionsDicts[i];
+  if (dict.has("AA")) {
+    const additionalActions = dict.get("AA");
+
+    for (const key of additionalActions.getKeys()) {
+      const action = eventType[key];
 
-      if (!(additionalActions instanceof _primitives.Dict)) {
+      if (!action) {
         continue;
       }
 
-      for (const key of additionalActions.getKeys()) {
-        const action = eventType[key];
-
-        if (!action) {
-          continue;
-        }
+      const actionDict = additionalActions.getRaw(key);
+      const parents = new _primitives.RefSet();
+      const list = [];
 
-        const actionDict = additionalActions.getRaw(key);
-        const parents = new _primitives.RefSet();
-        const list = [];
+      _collectJS(actionDict, xref, list, parents);
 
-        _collectJS(actionDict, xref, list, parents);
-
-        if (list.length > 0) {
-          actions[action] = list;
-        }
+      if (list.length > 0) {
+        actions[action] = list;
       }
     }
   }
@@ -3150,58 +3191,6 @@ function collectActions(xref, dict, eventType) {
   return (0, _util.objectSize)(actions) > 0 ? actions : null;
 }
 
-const XMLEntities = {
-  0x3c: "&lt;",
-  0x3e: "&gt;",
-  0x26: "&amp;",
-  0x22: "&quot;",
-  0x27: "&apos;"
-};
-
-function encodeToXmlString(str) {
-  const buffer = [];
-  let start = 0;
-
-  for (let i = 0, ii = str.length; i < ii; i++) {
-    const char = str.codePointAt(i);
-
-    if (0x20 <= char && char <= 0x7e) {
-      const entity = XMLEntities[char];
-
-      if (entity) {
-        if (start < i) {
-          buffer.push(str.substring(start, i));
-        }
-
-        buffer.push(entity);
-        start = i + 1;
-      }
-    } else {
-      if (start < i) {
-        buffer.push(str.substring(start, i));
-      }
-
-      buffer.push(`&#x${char.toString(16).toUpperCase()};`);
-
-      if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {
-        i++;
-      }
-
-      start = i + 1;
-    }
-  }
-
-  if (buffer.length === 0) {
-    return str;
-  }
-
-  if (start < str.length) {
-    buffer.push(str.substring(start, str.length));
-  }
-
-  return buffer.join("");
-}
-
 /***/ }),
 /* 9 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
@@ -3223,17 +3212,15 @@ var _core_utils = __w_pdfjs_require__(8);
 
 var _stream = __w_pdfjs_require__(12);
 
-var _annotation = __w_pdfjs_require__(27);
+var _annotation = __w_pdfjs_require__(25);
 
 var _crypto = __w_pdfjs_require__(22);
 
 var _parser = __w_pdfjs_require__(11);
 
-var _operator_list = __w_pdfjs_require__(46);
+var _operator_list = __w_pdfjs_require__(44);
 
-var _evaluator = __w_pdfjs_require__(29);
-
-var _factory = __w_pdfjs_require__(49);
+var _evaluator = __w_pdfjs_require__(27);
 
 const DEFAULT_USER_UNIT = 1.0;
 const LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
@@ -3253,8 +3240,7 @@ class Page {
     fontCache,
     builtInCMapCache,
     globalImageCache,
-    nonBlendModesSet,
-    xfaFactory
+    nonBlendModesSet
   }) {
     this.pdfManager = pdfManager;
     this.pageIndex = pageIndex;
@@ -3267,7 +3253,6 @@ class Page {
     this.nonBlendModesSet = nonBlendModesSet;
     this.evaluatorOptions = pdfManager.evaluatorOptions;
     this.resourcesPromise = null;
-    this.xfaFactory = xfaFactory;
     const idCounters = {
       obj: 0
     };
@@ -3310,14 +3295,6 @@ class Page {
   }
 
   _getBoundingBox(name) {
-    if (this.xfaData) {
-      const {
-        width,
-        height
-      } = this.xfaData.attributes.style;
-      return [0, 0, parseInt(width), parseInt(height)];
-    }
-
     const box = this._getInheritableProperty(name, true);
 
     if (Array.isArray(box) && box.length === 4) {
@@ -3407,14 +3384,6 @@ class Page {
     return stream;
   }
 
-  get xfaData() {
-    if (this.xfaFactory) {
-      return (0, _util.shadow)(this, "xfaData", this.xfaFactory.getPage(this.pageIndex));
-    }
-
-    return (0, _util.shadow)(this, "xfaData", null);
-  }
-
   save(handler, task, annotationStorage) {
     const partialEvaluator = new _evaluator.PartialEvaluator({
       xref: this.xref,
@@ -3584,7 +3553,7 @@ class Page {
       const annotationPromises = [];
 
       for (const annotationRef of this.annotations) {
-        annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, 
this.pdfManager, this._localIdFactory, false).catch(function (reason) {
+        annotationPromises.push(_annotation.AnnotationFactory.create(this.xref, annotationRef, 
this.pdfManager, this._localIdFactory).catch(function (reason) {
           (0, _util.warn)(`_parsedAnnotations: "${reason}".`);
           return null;
         }));
@@ -3810,10 +3779,6 @@ class PDFDocument {
   }
 
   get numPages() {
-    if (this.xfaFactory) {
-      return (0, _util.shadow)(this, "numPages", this.xfaFactory.numberPages);
-    }
-
     const linearization = this.linearization;
     const num = linearization ? linearization.numPages : this.catalog.numPages;
     return (0, _util.shadow)(this, "numPages", num);
@@ -3849,84 +3814,6 @@ class PDFDocument {
     });
   }
 
-  get xfaData() {
-    const acroForm = this.catalog.acroForm;
-
-    if (!acroForm) {
-      return null;
-    }
-
-    const xfa = acroForm.get("XFA");
-    const entries = {
-      "xdp:xdp": "",
-      template: "",
-      datasets: "",
-      config: "",
-      connectionSet: "",
-      localeSet: "",
-      stylesheet: "",
-      "/xdp:xdp": ""
-    };
-
-    if ((0, _primitives.isStream)(xfa) && !xfa.isEmpty) {
-      try {
-        entries["xdp:xdp"] = (0, _util.stringToUTF8String)((0, _util.bytesToString)(xfa.getBytes()));
-        return entries;
-      } catch (_) {
-        (0, _util.warn)("XFA - Invalid utf-8 string.");
-        return null;
-      }
-    }
-
-    if (!Array.isArray(xfa) || xfa.length === 0) {
-      return null;
-    }
-
-    for (let i = 0, ii = xfa.length; i < ii; i += 2) {
-      let name;
-
-      if (i === 0) {
-        name = "xdp:xdp";
-      } else if (i === ii - 2) {
-        name = "/xdp:xdp";
-      } else {
-        name = xfa[i];
-      }
-
-      if (!entries.hasOwnProperty(name)) {
-        continue;
-      }
-
-      const data = this.xref.fetchIfRef(xfa[i + 1]);
-
-      if (!(0, _primitives.isStream)(data) || data.isEmpty) {
-        continue;
-      }
-
-      try {
-        entries[name] = (0, _util.stringToUTF8String)((0, _util.bytesToString)(data.getBytes()));
-      } catch (_) {
-        (0, _util.warn)("XFA - Invalid utf-8 string.");
-        return null;
-      }
-    }
-
-    return entries;
-  }
-
-  get xfaFactory() {
-    if (this.pdfManager.enableXfa && this.formInfo.hasXfa && !this.formInfo.hasAcroForm) {
-      const data = this.xfaData;
-      return (0, _util.shadow)(this, "xfaFactory", data ? new _factory.XFAFactory(data) : null);
-    }
-
-    return (0, _util.shadow)(this, "xfaFaxtory", null);
-  }
-
-  get isPureXfa() {
-    return this.xfaFactory !== null;
-  }
-
   get formInfo() {
     const formInfo = {
       hasFields: false,
@@ -4086,23 +3973,6 @@ class PDFDocument {
       catalog,
       linearization
     } = this;
-
-    if (this.xfaFactory) {
-      return Promise.resolve(new Page({
-        pdfManager: this.pdfManager,
-        xref: this.xref,
-        pageIndex,
-        pageDict: _primitives.Dict.empty,
-        ref: null,
-        globalIdFactory: this._globalIdFactory,
-        fontCache: catalog.fontCache,
-        builtInCMapCache: catalog.builtInCMapCache,
-        globalImageCache: catalog.globalImageCache,
-        nonBlendModesSet: catalog.nonBlendModesSet,
-        xfaFactory: this.xfaFactory
-      }));
-    }
-
     const promise = linearization && linearization.pageFirst === pageIndex ? 
this._getLinearizationPage(pageIndex) : catalog.getPageDict(pageIndex);
     return this._pagePromises[pageIndex] = promise.then(([pageDict, ref]) => {
       return new Page({
@@ -4115,8 +3985,7 @@ class PDFDocument {
         fontCache: catalog.fontCache,
         builtInCMapCache: catalog.builtInCMapCache,
         globalImageCache: catalog.globalImageCache,
-        nonBlendModesSet: catalog.nonBlendModesSet,
-        xfaFactory: null
+        nonBlendModesSet: catalog.nonBlendModesSet
       });
     });
   }
@@ -4156,7 +4025,7 @@ class PDFDocument {
       promises.set(name, []);
     }
 
-    promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, 
this._localIdFactory, true).then(annotation => annotation && annotation.getFieldObject()).catch(function 
(reason) {
+    promises.get(name).push(_annotation.AnnotationFactory.create(this.xref, fieldRef, this.pdfManager, 
this._localIdFactory).then(annotation => annotation && annotation.getFieldObject()).catch(function (reason) {
       (0, _util.warn)(`_collectFieldObjects: "${reason}".`);
       return null;
     }));
@@ -4254,8 +4123,6 @@ var _colorspace = __w_pdfjs_require__(23);
 
 var _image_utils = __w_pdfjs_require__(24);
 
-var _metadata_parser = __w_pdfjs_require__(25);
-
 function fetchDestination(dest) {
   return (0, _primitives.isDict)(dest) ? dest.get("D") : dest;
 }
@@ -4336,19 +4203,15 @@ class Catalog {
 
     const suppressEncryption = !(this.xref.encrypt && this.xref.encrypt.encryptMetadata);
     const stream = this.xref.fetch(streamRef, suppressEncryption);
-    let metadata = null;
+    let metadata;
 
-    if ((0, _primitives.isStream)(stream) && (0, _primitives.isDict)(stream.dict)) {
+    if (stream && (0, _primitives.isDict)(stream.dict)) {
       const type = stream.dict.get("Type");
       const subtype = stream.dict.get("Subtype");
 
       if ((0, _primitives.isName)(type, "Metadata") && (0, _primitives.isName)(subtype, "XML")) {
         try {
-          const data = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));
-
-          if (data) {
-            metadata = new _metadata_parser.MetadataParser(data).serializable;
-          }
+          metadata = (0, _util.stringToUTF8String)((0, _util.bytesToString)(stream.getBytes()));
         } catch (e) {
           if (e instanceof _core_utils.MissingDataException) {
             throw e;
@@ -5608,11 +5471,7 @@ class Catalog {
           }
 
         default:
-          if (actionName === "JavaScript" || actionName === "ResetForm" || actionName === "SubmitForm") {
-            break;
-          }
-
-          (0, _util.warn)(`parseDestDictionary - unsupported action: "${actionName}".`);
+          (0, _util.warn)(`parseDestDictionary: unsupported action type "${actionName}".`);
           break;
       }
     } else if (destDict.has("Dest")) {
@@ -6118,6 +5977,10 @@ var XRef = function XRefClosure() {
             continue;
           }
         } catch (ex) {
+          if (ex instanceof _core_utils.MissingDataException) {
+            throw ex;
+          }
+
           continue;
         }
 
@@ -6337,13 +6200,12 @@ var XRef = function XRefClosure() {
         throw new _util.FormatError("invalid first and n parameters for ObjStm stream");
       }
 
-      let parser = new _parser.Parser({
+      const parser = new _parser.Parser({
         lexer: new _parser.Lexer(stream),
         xref: this,
         allowStreams: true
       });
       const nums = new Array(n);
-      const offsets = new Array(n);
 
       for (let i = 0; i < n; ++i) {
         const num = parser.getObj();
@@ -6359,27 +6221,18 @@ var XRef = function XRefClosure() {
         }
 
         nums[i] = num;
-        offsets[i] = offset;
       }
 
-      const start = (stream.start || 0) + first;
       const entries = new Array(n);
 
       for (let i = 0; i < n; ++i) {
-        const length = i < n - 1 ? offsets[i + 1] - offsets[i] : undefined;
-
-        if (length < 0) {
-          throw new _util.FormatError("Invalid offset in the ObjStm stream.");
-        }
-
-        parser = new _parser.Parser({
-          lexer: new _parser.Lexer(stream.makeSubStream(start + offsets[i], length, stream.dict)),
-          xref: this,
-          allowStreams: true
-        });
         const obj = parser.getObj();
         entries[i] = obj;
 
+        if (parser.buf1 instanceof _primitives.Cmd && parser.buf1.cmd === "endobj") {
+          parser.shift();
+        }
+
         if ((0, _primitives.isStream)(obj)) {
           continue;
         }
@@ -6748,12 +6601,7 @@ const ObjectLoader = function () {
             currentNode = this.xref.fetch(currentNode);
           } catch (ex) {
             if (!(ex instanceof _core_utils.MissingDataException)) {
-              (0, _util.warn)(`ObjectLoader._walk - requesting all data: "${ex}".`);
-              this.refSet = null;
-              const {
-                manager
-              } = this.xref.stream;
-              return manager.requestAllChunks();
+              throw ex;
             }
 
             nodesToRevisit.push(currentNode);
@@ -8424,16 +8272,10 @@ var DecodeStream = function DecodeStreamClosure() {
     },
 
     makeSubStream: function DecodeStream_makeSubStream(start, length, dict) {
-      if (length === undefined) {
-        while (!this.eof) {
-          this.readBlock();
-        }
-      } else {
-        var end = start + length;
+      var end = start + length;
 
-        while (this.bufferLength <= end && !this.eof) {
-          this.readBlock();
-        }
+      while (this.bufferLength <= end && !this.eof) {
+        this.readBlock();
       }
 
       return new Stream(this.buffer, start, length, dict);
@@ -9483,7 +9325,7 @@ var _ccitt = __w_pdfjs_require__(14);
 
 var _stream = __w_pdfjs_require__(12);
 
-const CCITTFaxStream = function CCITTFaxStreamClosure() {
+var CCITTFaxStream = function CCITTFaxStreamClosure() {
   function CCITTFaxStream(str, maybeLength, params) {
     this.str = str;
     this.dict = str.dict;
@@ -16660,8 +16502,7 @@ exports.JpxImage = JpxImage;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.calculateSHA384 = calculateSHA384;
-exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.calculateSHA512 = 
exports.calculateSHA256 = exports.calculateMD5 = exports.ARCFourCipher = exports.AES256Cipher = 
exports.AES128Cipher = void 0;
+exports.PDF20 = exports.PDF17 = exports.CipherTransformFactory = exports.calculateSHA512 = 
exports.calculateSHA384 = exports.calculateSHA256 = exports.calculateMD5 = exports.ARCFourCipher = 
exports.AES256Cipher = exports.AES128Cipher = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
@@ -16669,8 +16510,8 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _stream = __w_pdfjs_require__(12);
 
-class ARCFourCipher {
-  constructor(key) {
+var ARCFourCipher = function ARCFourCipherClosure() {
+  function ARCFourCipher(key) {
     this.a = 0;
     this.b = 0;
     var s = new Uint8Array(256);
@@ -16693,40 +16534,36 @@ class ARCFourCipher {
     this.s = s;
   }
 
-  encryptBlock(data) {
-    var i,
-        n = data.length,
-        tmp,
-        tmp2;
-    var a = this.a,
-        b = this.b,
-        s = this.s;
-    var output = new Uint8Array(n);
+  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;
-  }
-
-  decryptBlock(data) {
-    return this.encryptBlock(data);
-  }
-
-  encrypt(data) {
-    return this.encryptBlock(data);
-  }
+      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;
+  ARCFourCipher.prototype.encrypt = ARCFourCipher.prototype.encryptBlock;
+  return ARCFourCipher;
+}();
 
 exports.ARCFourCipher = ARCFourCipher;
 
@@ -16814,97 +16651,90 @@ var calculateMD5 = function calculateMD5Closure() {
 
 exports.calculateMD5 = calculateMD5;
 
-class Word64 {
-  constructor(highInteger, lowInteger) {
+var Word64 = function Word64Closure() {
+  function Word64(highInteger, lowInteger) {
     this.high = highInteger | 0;
     this.low = lowInteger | 0;
   }
 
-  and(word) {
-    this.high &= word.high;
-    this.low &= word.low;
-  }
-
-  xor(word) {
-    this.high ^= word.high;
-    this.low ^= word.low;
-  }
-
-  or(word) {
-    this.high |= word.high;
-    this.low |= word.low;
-  }
-
-  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(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(places) {
-    var low, high;
-
-    if (places & 32) {
-      high = this.low;
-      low = this.high;
-    } else {
-      low = this.low;
-      high = this.high;
-    }
+  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;
 
-    places &= 31;
-    this.low = low >>> places | high << 32 - places;
-    this.high = high >>> places | low << 32 - places;
-  }
+      if (places & 32) {
+        high = this.low;
+        low = this.high;
+      } else {
+        low = this.low;
+        high = this.high;
+      }
 
-  not() {
-    this.high = ~this.high;
-    this.low = ~this.low;
-  }
+      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);
 
-  add(word) {
-    var lowAdd = (this.low >>> 0) + (word.low >>> 0);
-    var highAdd = (this.high >>> 0) + (word.high >>> 0);
+      if (lowAdd > 0xffffffff) {
+        highAdd += 1;
+      }
 
-    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;
     }
-
-    this.low = lowAdd | 0;
-    this.high = highAdd | 0;
-  }
-
-  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(word) {
-    this.high = word.high;
-    this.low = word.low;
-  }
-
-}
+  };
+  return Word64;
+}();
 
 var calculateSHA256 = function calculateSHA256Closure() {
   function rotr(x, n) {
@@ -17090,7 +16920,8 @@ var calculateSHA512 = function calculateSHA512Closure() {
 
   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(0xb
 f597fc7, 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 = false) {
+  function hash(data, offset, length, mode384) {
+    mode384 = !!mode384;
     var h0, h1, h2, h3, h4, h5, h6, h7;
 
     if (!mode384) {
@@ -17254,20 +17085,29 @@ var calculateSHA512 = function calculateSHA512Closure() {
 
 exports.calculateSHA512 = calculateSHA512;
 
-function calculateSHA384(data, offset, length) {
-  return calculateSHA512(data, offset, length, true);
-}
-
-class NullCipher {
-  decryptBlock(data) {
-    return data;
+var calculateSHA384 = function calculateSHA384Closure() {
+  function hash(data, offset, length) {
+    return calculateSHA512(data, offset, length, true);
   }
 
-  encrypt(data) {
-    return data;
-  }
+  return hash;
+}();
 
-}
+exports.calculateSHA384 = calculateSHA384;
+
+var NullCipher = function NullCipherClosure() {
+  function NullCipher() {}
+
+  NullCipher.prototype = {
+    decryptBlock: function NullCipher_decryptBlock(data) {
+      return data;
+    },
+    encrypt: function NullCipher_encrypt(data) {
+      return data;
+    }
+  };
+  return NullCipher;
+}();
 
 class AESBaseCipher {
   constructor() {
@@ -17697,66 +17537,83 @@ class AES256Cipher extends AESBaseCipher {
 
 exports.AES256Cipher = AES256Cipher;
 
-class 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 (0, _util.isArrayEqual)(result, ownerPassword);
-  }
+var PDF17 = function PDF17Closure() {
+  function compareByteArrays(array1, array2) {
+    if (array1.length !== array2.length) {
+      return false;
+    }
 
-  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 (0, _util.isArrayEqual)(result, userPassword);
-  }
+    for (var i = 0; i < array1.length; i++) {
+      if (array1[i] !== array2[i]) {
+        return false;
+      }
+    }
 
-  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));
+    return true;
   }
 
-  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));
-  }
+  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;
+}();
 
 exports.PDF17 = 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) {
-      const combinedLength = password.length + k.length + userBytes.length,
-            combinedArray = new Uint8Array(combinedLength);
-      let writeOffset = 0;
-      combinedArray.set(password, writeOffset);
-      writeOffset += password.length;
-      combinedArray.set(k, writeOffset);
-      writeOffset += k.length;
-      combinedArray.set(userBytes, writeOffset);
-      var k1 = new Uint8Array(combinedLength * 64);
+      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 += combinedLength) {
-        k1.set(combinedArray, pos);
+      for (var j = 0, pos = 0; j < 64; j++, pos += arrayLength) {
+        k1.set(array, pos);
       }
 
       var cipher = new AES128Cipher(k.subarray(0, 16));
@@ -17784,29 +17641,42 @@ var PDF20 = function PDF20Closure() {
     return k.subarray(0, 32);
   }
 
-  class PDF20 {
-    hash(password, concatBytes, userBytes) {
-      return calculatePDF20Hash(password, concatBytes, userBytes);
+  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;
+      }
     }
 
-    checkOwnerPassword(password, ownerValidationSalt, userBytes, ownerPassword) {
+    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 (0, _util.isArrayEqual)(result, ownerPassword);
-    }
-
-    checkUserPassword(password, userValidationSalt, userPassword) {
+      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 (0, _util.isArrayEqual)(result, userPassword);
-    }
-
-    getOwnerKey(password, ownerKeySalt, userBytes, ownerEncryption) {
+      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);
@@ -17814,9 +17684,8 @@ var PDF20 = function PDF20Closure() {
       var key = calculatePDF20Hash(password, hashData, userBytes);
       var cipher = new AES256Cipher(key);
       return cipher.decryptBlock(ownerEncryption, false, new Uint8Array(16));
-    }
-
-    getUserKey(password, userKeySalt, userEncryption) {
+    },
+    getUserKey: function PDF20_getUserKey(password, userKeySalt, userEncryption) {
       var hashData = new Uint8Array(password.length + 8);
       hashData.set(password, 0);
       hashData.set(userKeySalt, password.length);
@@ -17824,69 +17693,67 @@ var PDF20 = function PDF20Closure() {
       var cipher = new AES256Cipher(key);
       return cipher.decryptBlock(userEncryption, false, new Uint8Array(16));
     }
-
-  }
-
+  };
   return PDF20;
 }();
 
 exports.PDF20 = PDF20;
 
-class CipherTransform {
-  constructor(stringCipherConstructor, streamCipherConstructor) {
+var CipherTransform = function CipherTransformClosure() {
+  function CipherTransform(stringCipherConstructor, streamCipherConstructor) {
     this.StringCipherConstructor = stringCipherConstructor;
     this.StreamCipherConstructor = streamCipherConstructor;
   }
 
-  createStream(stream, length) {
-    var cipher = new this.StreamCipherConstructor();
-    return new _stream.DecryptStream(stream, length, function cipherTransformDecryptStream(data, finalize) {
-      return cipher.decryptBlock(data, finalize);
-    });
-  }
-
-  decryptString(s) {
-    var cipher = new this.StringCipherConstructor();
-    var data = (0, _util.stringToBytes)(s);
-    data = cipher.decryptBlock(data, true);
-    return (0, _util.bytesToString)(data);
-  }
-
-  encryptString(s) {
-    const cipher = new this.StringCipherConstructor();
+  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);
+    },
+    encryptString: function CipherTransform_encryptString(s) {
+      const cipher = new this.StringCipherConstructor();
 
-    if (cipher instanceof AESBaseCipher) {
-      const strLen = s.length;
-      const pad = 16 - strLen % 16;
+      if (cipher instanceof AESBaseCipher) {
+        const strLen = s.length;
+        const pad = 16 - strLen % 16;
 
-      if (pad !== 16) {
-        s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));
-      }
+        if (pad !== 16) {
+          s = s.padEnd(16 * Math.ceil(strLen / 16), String.fromCharCode(pad));
+        }
 
-      const iv = new Uint8Array(16);
+        const iv = new Uint8Array(16);
 
-      if (typeof crypto !== "undefined") {
-        crypto.getRandomValues(iv);
-      } else {
-        for (let i = 0; i < 16; i++) {
-          iv[i] = Math.floor(256 * Math.random());
+        if (typeof crypto !== "undefined") {
+          crypto.getRandomValues(iv);
+        } else {
+          for (let i = 0; i < 16; i++) {
+            iv[i] = Math.floor(256 * Math.random());
+          }
         }
+
+        let data = (0, _util.stringToBytes)(s);
+        data = cipher.encrypt(data, iv);
+        const buf = new Uint8Array(16 + data.length);
+        buf.set(iv);
+        buf.set(data, 16);
+        return (0, _util.bytesToString)(buf);
       }
 
       let data = (0, _util.stringToBytes)(s);
-      data = cipher.encrypt(data, iv);
-      const buf = new Uint8Array(16 + data.length);
-      buf.set(iv);
-      buf.set(data, 16);
-      return (0, _util.bytesToString)(buf);
+      data = cipher.encrypt(data);
+      return (0, _util.bytesToString)(data);
     }
-
-    let data = (0, _util.stringToBytes)(s);
-    data = cipher.encrypt(data);
-    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]);
@@ -18063,7 +17930,111 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
 
   var identityName = _primitives.Name.get("Identity");
 
-  function buildObjectKey(num, gen, encryptionKey, isAes = false) {
+  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 (!Number.isInteger(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 (!Number.isInteger(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;
@@ -18128,112 +18099,8 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
     throw new _util.FormatError("Unknown crypto method");
   }
 
-  class CipherTransformFactory {
-    constructor(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 (!Number.isInteger(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 (!Number.isInteger(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;
-      }
-    }
-
-    createCipherTransform(num, gen) {
+  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));
       }
@@ -18246,9 +18113,7 @@ var CipherTransformFactory = function CipherTransformFactoryClosure() {
 
       return new CipherTransform(cipherConstructor, cipherConstructor);
     }
-
-  }
-
+  };
   return CipherTransformFactory;
 }();
 
@@ -19193,7 +19058,7 @@ const LabCS = function LabCSClosure() {
     let result;
 
     if (x >= 6 / 29) {
-      result = x ** 3;
+      result = x * x * x;
     } else {
       result = 108 / 841 * (x - 4 / 29);
     }
@@ -19520,12 +19385,8 @@ class GlobalImageCache {
     return (0, _util.shadow)(this, "NUM_PAGES_THRESHOLD", 2);
   }
 
-  static get MIN_IMAGES_TO_CACHE() {
-    return (0, _util.shadow)(this, "MIN_IMAGES_TO_CACHE", 10);
-  }
-
-  static get MAX_BYTE_SIZE() {
-    return (0, _util.shadow)(this, "MAX_BYTE_SIZE", 40e6);
+  static get MAX_IMAGES_TO_CACHE() {
+    return (0, _util.shadow)(this, "MAX_IMAGES_TO_CACHE", 10);
   }
 
   constructor() {
@@ -19533,28 +19394,6 @@ class GlobalImageCache {
     this._imageCache = new _primitives.RefSetCache();
   }
 
-  get _byteSize() {
-    let byteSize = 0;
-
-    this._imageCache.forEach(imageData => {
-      byteSize += imageData.byteSize;
-    });
-
-    return byteSize;
-  }
-
-  get _cacheLimitReached() {
-    if (this._imageCache.size < GlobalImageCache.MIN_IMAGES_TO_CACHE) {
-      return false;
-    }
-
-    if (this._byteSize < GlobalImageCache.MAX_BYTE_SIZE) {
-      return false;
-    }
-
-    return true;
-  }
-
   shouldCache(ref, pageIndex) {
     const pageIndexSet = this._refCache.get(ref);
 
@@ -19564,7 +19403,7 @@ class GlobalImageCache {
       return false;
     }
 
-    if (!this._imageCache.has(ref) && this._cacheLimitReached) {
+    if (!this._imageCache.has(ref) && this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {
       return false;
     }
 
@@ -19583,20 +19422,6 @@ class GlobalImageCache {
     pageIndexSet.add(pageIndex);
   }
 
-  addByteSize(ref, byteSize) {
-    const imageData = this._imageCache.get(ref);
-
-    if (!imageData) {
-      return;
-    }
-
-    if (imageData.byteSize) {
-      return;
-    }
-
-    imageData.byteSize = byteSize;
-  }
-
   getData(ref, pageIndex) {
     const pageIndexSet = this._refCache.get(ref);
 
@@ -19608,14 +19433,12 @@ class GlobalImageCache {
       return null;
     }
 
-    const imageData = this._imageCache.get(ref);
-
-    if (!imageData) {
+    if (!this._imageCache.has(ref)) {
       return null;
     }
 
     pageIndexSet.add(pageIndex);
-    return imageData;
+    return this._imageCache.get(ref);
   }
 
   setData(ref, data) {
@@ -19627,8 +19450,8 @@ class GlobalImageCache {
       return;
     }
 
-    if (this._cacheLimitReached) {
-      (0, _util.warn)("GlobalImageCache.setData - cache limit reached.");
+    if (this._imageCache.size >= GlobalImageCache.MAX_IMAGES_TO_CACHE) {
+      (0, _util.info)("GlobalImageCache.setData - ignoring image above MAX_IMAGES_TO_CACHE.");
       return;
     }
 
@@ -19656,4181 +19479,4082 @@ exports.GlobalImageCache = GlobalImageCache;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.MetadataParser = void 0;
-
-var _xml_parser = __w_pdfjs_require__(26);
-
-class MetadataParser {
-  constructor(data) {
-    data = this._repair(data);
-    const parser = new _xml_parser.SimpleXMLParser({
-      lowerCaseName: true
-    });
-    const xmlDocument = parser.parseFromString(data);
-    this._metadataMap = new Map();
-    this._data = data;
+exports.getQuadPoints = getQuadPoints;
+exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = 
void 0;
 
-    if (xmlDocument) {
-      this._parse(xmlDocument);
-    }
-  }
+var _util = __w_pdfjs_require__(2);
 
-  _repair(data) {
-    return data.replace(/^[^<]+/, "").replace(/>\\376\\377([^<]+)/g, function (all, codes) {
-      const bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
-        return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
-      }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
-        switch (name) {
-          case "amp":
-            return "&";
+var _obj = __w_pdfjs_require__(10);
 
-          case "apos":
-            return "'";
+var _core_utils = __w_pdfjs_require__(8);
 
-          case "gt":
-            return ">";
+var _default_appearance = __w_pdfjs_require__(26);
 
-          case "lt":
-            return "<";
+var _primitives = __w_pdfjs_require__(5);
 
-          case "quot":
-            return '"';
-        }
+var _colorspace = __w_pdfjs_require__(23);
 
-        throw new Error(`_repair: ${name} isn't defined.`);
-      });
-      const charBuf = [];
+var _operator_list = __w_pdfjs_require__(44);
 
-      for (let i = 0, ii = bytes.length; i < ii; i += 2) {
-        const code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+var _stream = __w_pdfjs_require__(12);
 
-        if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
-          charBuf.push(String.fromCharCode(code));
-        } else {
-          charBuf.push("&#x" + (0x10000 + code).toString(16).substring(1) + ";");
-        }
-      }
+var _writer = __w_pdfjs_require__(46);
 
-      return ">" + charBuf.join("");
+class AnnotationFactory {
+  static create(xref, ref, pdfManager, idFactory) {
+    return pdfManager.ensureCatalog("acroForm").then(acroForm => {
+      return pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm]);
     });
   }
 
-  _getSequence(entry) {
-    const name = entry.nodeName;
+  static _create(xref, ref, pdfManager, idFactory, acroForm) {
+    const dict = xref.fetchIfRef(ref);
 
-    if (name !== "rdf:bag" && name !== "rdf:seq" && name !== "rdf:alt") {
-      return null;
+    if (!(0, _primitives.isDict)(dict)) {
+      return undefined;
     }
 
-    return entry.childNodes.filter(node => node.nodeName === "rdf:li");
-  }
+    const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;
+    let subtype = dict.get("Subtype");
+    subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
+    const parameters = {
+      xref,
+      ref,
+      dict,
+      subtype,
+      id,
+      pdfManager,
+      acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty
+    };
 
-  _parseArray(entry) {
-    if (!entry.hasChildNodes()) {
-      return;
-    }
+    switch (subtype) {
+      case "Link":
+        return new LinkAnnotation(parameters);
 
-    const [seqNode] = entry.childNodes;
-    const sequence = this._getSequence(seqNode) || [];
+      case "Text":
+        return new TextAnnotation(parameters);
 
-    this._metadataMap.set(entry.nodeName, sequence.map(node => node.textContent.trim()));
-  }
+      case "Widget":
+        let fieldType = (0, _core_utils.getInheritableProperty)({
+          dict,
+          key: "FT"
+        });
+        fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
 
-  _parse(xmlDocument) {
-    let rdf = xmlDocument.documentElement;
+        switch (fieldType) {
+          case "Tx":
+            return new TextWidgetAnnotation(parameters);
 
-    if (rdf.nodeName !== "rdf:rdf") {
-      rdf = rdf.firstChild;
+          case "Btn":
+            return new ButtonWidgetAnnotation(parameters);
 
-      while (rdf && rdf.nodeName !== "rdf:rdf") {
-        rdf = rdf.nextSibling;
-      }
-    }
+          case "Ch":
+            return new ChoiceWidgetAnnotation(parameters);
+        }
 
-    if (!rdf || rdf.nodeName !== "rdf:rdf" || !rdf.hasChildNodes()) {
-      return;
-    }
+        (0, _util.warn)('Unimplemented widget field type "' + fieldType + '", ' + "falling back to base 
field type.");
+        return new WidgetAnnotation(parameters);
 
-    for (const desc of rdf.childNodes) {
-      if (desc.nodeName !== "rdf:description") {
-        continue;
-      }
+      case "Popup":
+        return new PopupAnnotation(parameters);
 
-      for (const entry of desc.childNodes) {
-        const name = entry.nodeName;
+      case "FreeText":
+        return new FreeTextAnnotation(parameters);
 
-        switch (name) {
-          case "#text":
-            continue;
+      case "Line":
+        return new LineAnnotation(parameters);
 
-          case "dc:creator":
-          case "dc:subject":
-            this._parseArray(entry);
+      case "Square":
+        return new SquareAnnotation(parameters);
 
-            continue;
-        }
+      case "Circle":
+        return new CircleAnnotation(parameters);
 
-        this._metadataMap.set(name, entry.textContent.trim());
-      }
-    }
-  }
+      case "PolyLine":
+        return new PolylineAnnotation(parameters);
 
-  get serializable() {
-    return {
-      parsedData: this._metadataMap,
-      rawData: this._data
-    };
-  }
+      case "Polygon":
+        return new PolygonAnnotation(parameters);
 
-}
+      case "Caret":
+        return new CaretAnnotation(parameters);
 
-exports.MetadataParser = MetadataParser;
+      case "Ink":
+        return new InkAnnotation(parameters);
 
-/***/ }),
-/* 26 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+      case "Highlight":
+        return new HighlightAnnotation(parameters);
 
+      case "Underline":
+        return new UnderlineAnnotation(parameters);
 
+      case "Squiggly":
+        return new SquigglyAnnotation(parameters);
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XMLParserErrorCode = exports.XMLParserBase = exports.SimpleXMLParser = exports.SimpleDOMNode = void 
0;
+      case "StrikeOut":
+        return new StrikeOutAnnotation(parameters);
 
-var _core_utils = __w_pdfjs_require__(8);
+      case "Stamp":
+        return new StampAnnotation(parameters);
 
-const XMLParserErrorCode = {
-  NoError: 0,
-  EndOfDocument: -1,
-  UnterminatedCdat: -2,
-  UnterminatedXmlDeclaration: -3,
-  UnterminatedDoctypeDeclaration: -4,
-  UnterminatedComment: -5,
-  MalformedElement: -6,
-  OutOfMemory: -7,
-  UnterminatedAttributeValue: -8,
-  UnterminatedElement: -9,
-  ElementNeverBegun: -10
-};
-exports.XMLParserErrorCode = XMLParserErrorCode;
+      case "FileAttachment":
+        return new FileAttachmentAnnotation(parameters);
 
-function isWhitespace(s, index) {
-  const ch = s[index];
-  return ch === " " || ch === "\n" || ch === "\r" || ch === "\t";
-}
+      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.");
+        }
 
-function isWhitespaceString(s) {
-  for (let i = 0, ii = s.length; i < ii; i++) {
-    if (!isWhitespace(s, i)) {
-      return false;
+        return new Annotation(parameters);
     }
   }
 
-  return true;
 }
 
-class XMLParserBase {
-  _resolveEntities(s) {
-    return s.replace(/&([^;]+);/g, (all, entity) => {
-      if (entity.substring(0, 2) === "#x") {
-        return String.fromCodePoint(parseInt(entity.substring(2), 16));
-      } else if (entity.substring(0, 1) === "#") {
-        return String.fromCodePoint(parseInt(entity.substring(1), 10));
-      }
-
-      switch (entity) {
-        case "lt":
-          return "<";
-
-        case "gt":
-          return ">";
-
-        case "amp":
-          return "&";
-
-        case "quot":
-          return '"';
-
-        case "apos":
-          return "'";
-      }
+exports.AnnotationFactory = AnnotationFactory;
 
-      return this.onResolveEntity(entity);
-    });
+function getQuadPoints(dict, rect) {
+  if (!dict.has("QuadPoints")) {
+    return null;
   }
 
-  _parseContent(s, start) {
-    const attributes = [];
-    let pos = start;
+  const quadPoints = dict.getArray("QuadPoints");
 
-    function skipWs() {
-      while (pos < s.length && isWhitespace(s, pos)) {
-        ++pos;
-      }
-    }
+  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {
+    return null;
+  }
 
-    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
-      ++pos;
-    }
+  const quadPointsLists = [];
 
-    const name = s.substring(start, pos);
-    skipWs();
+  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {
+    quadPointsLists.push([]);
 
-    while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") {
-      skipWs();
-      let attrName = "",
-          attrValue = "";
+    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {
+      const x = quadPoints[j];
+      const y = quadPoints[j + 1];
 
-      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") {
-        attrName += s[pos];
-        ++pos;
+      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {
+        return null;
       }
 
-      skipWs();
+      quadPointsLists[i].push({
+        x,
+        y
+      });
+    }
+  }
 
-      if (s[pos] !== "=") {
-        return null;
-      }
+  return quadPointsLists.map(quadPointsList => {
+    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, 
quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], 
[Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);
+    return [{
+      x: minX,
+      y: maxY
+    }, {
+      x: maxX,
+      y: maxY
+    }, {
+      x: minX,
+      y: minY
+    }, {
+      x: maxX,
+      y: minY
+    }];
+  });
+}
 
-      ++pos;
-      skipWs();
-      const attrEndChar = s[pos];
+function getTransformMatrix(rect, bbox, matrix) {
+  const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
 
-      if (attrEndChar !== '"' && attrEndChar !== "'") {
-        return null;
-      }
+  if (minX === maxX || minY === maxY) {
+    return [1, 0, 0, 1, rect[0], rect[1]];
+  }
 
-      const attrEndIndex = s.indexOf(attrEndChar, ++pos);
+  const xRatio = (rect[2] - rect[0]) / (maxX - minX);
+  const yRatio = (rect[3] - rect[1]) / (maxY - minY);
+  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
+}
 
-      if (attrEndIndex < 0) {
-        return null;
-      }
+class Annotation {
+  constructor(params) {
+    const dict = params.dict;
+    this.setContents(dict.get("Contents"));
+    this.setModificationDate(dict.get("M"));
+    this.setFlags(dict.get("F"));
+    this.setRectangle(dict.getArray("Rect"));
+    this.setColor(dict.getArray("C"));
+    this.setBorderStyle(dict);
+    this.setAppearance(dict);
+    this._streams = [];
 
-      attrValue = s.substring(pos, attrEndIndex);
-      attributes.push({
-        name: attrName,
-        value: this._resolveEntities(attrValue)
-      });
-      pos = attrEndIndex + 1;
-      skipWs();
+    if (this.appearance) {
+      this._streams.push(this.appearance);
     }
 
-    return {
-      name,
-      attributes,
-      parsed: pos - start
+    this.data = {
+      annotationFlags: this.flags,
+      borderStyle: this.borderStyle,
+      color: this.color,
+      contents: this.contents,
+      hasAppearance: !!this.appearance,
+      id: params.id,
+      modificationDate: this.modificationDate,
+      rect: this.rectangle,
+      subtype: params.subtype
     };
+    this._fallbackFontDict = null;
   }
 
-  _parseProcessingInstruction(s, start) {
-    let pos = start;
+  _hasFlag(flags, flag) {
+    return !!(flags & flag);
+  }
 
-    function skipWs() {
-      while (pos < s.length && isWhitespace(s, pos)) {
-        ++pos;
-      }
-    }
+  _isViewable(flags) {
+    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.NOVIEW);
+  }
 
-    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
-      ++pos;
-    }
+  _isPrintable(flags) {
+    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE);
+  }
 
-    const name = s.substring(start, pos);
-    skipWs();
-    const attrStart = pos;
+  isHidden(annotationStorage) {
+    const data = annotationStorage && annotationStorage[this.data.id];
 
-    while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) {
-      ++pos;
+    if (data && "hidden" in data) {
+      return data.hidden;
     }
 
-    const value = s.substring(attrStart, pos);
-    return {
-      name,
-      value,
-      parsed: pos - start
-    };
+    return this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);
   }
 
-  parseXml(s) {
-    let i = 0;
+  get viewable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
 
-    while (i < s.length) {
-      const ch = s[i];
-      let j = i;
+    if (this.flags === 0) {
+      return true;
+    }
 
-      if (ch === "<") {
-        ++j;
-        const ch2 = s[j];
-        let q;
+    return this._isViewable(this.flags);
+  }
 
-        switch (ch2) {
-          case "/":
-            ++j;
-            q = s.indexOf(">", j);
+  get printable() {
+    if (this.data.quadPoints === null) {
+      return false;
+    }
 
-            if (q < 0) {
-              this.onError(XMLParserErrorCode.UnterminatedElement);
-              return;
-            }
+    if (this.flags === 0) {
+      return false;
+    }
 
-            this.onEndElement(s.substring(j, q));
-            j = q + 1;
-            break;
+    return this._isPrintable(this.flags);
+  }
 
-          case "?":
-            ++j;
+  setContents(contents) {
+    this.contents = (0, _util.stringToPDFString)(contents || "");
+  }
 
-            const pi = this._parseProcessingInstruction(s, j);
+  setModificationDate(modificationDate) {
+    this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
+  }
 
-            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") {
-              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
-              return;
-            }
+  setFlags(flags) {
+    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
+  }
 
-            this.onPi(pi.name, pi.value);
-            j += pi.parsed + 2;
-            break;
+  hasFlag(flag) {
+    return this._hasFlag(this.flags, flag);
+  }
 
-          case "!":
-            if (s.substring(j + 1, j + 3) === "--") {
-              q = s.indexOf("-->", j + 3);
+  setRectangle(rectangle) {
+    if (Array.isArray(rectangle) && rectangle.length === 4) {
+      this.rectangle = _util.Util.normalizeRect(rectangle);
+    } else {
+      this.rectangle = [0, 0, 0, 0];
+    }
+  }
 
-              if (q < 0) {
-                this.onError(XMLParserErrorCode.UnterminatedComment);
-                return;
-              }
+  setColor(color) {
+    const rgbColor = new Uint8ClampedArray(3);
 
-              this.onComment(s.substring(j + 3, q));
-              j = q + 3;
-            } else if (s.substring(j + 1, j + 8) === "[CDATA[") {
-              q = s.indexOf("]]>", j + 8);
+    if (!Array.isArray(color)) {
+      this.color = rgbColor;
+      return;
+    }
 
-              if (q < 0) {
-                this.onError(XMLParserErrorCode.UnterminatedCdat);
-                return;
-              }
+    switch (color.length) {
+      case 0:
+        this.color = null;
+        break;
 
-              this.onCdata(s.substring(j + 8, q));
-              j = q + 3;
-            } else if (s.substring(j + 1, j + 8) === "DOCTYPE") {
-              const q2 = s.indexOf("[", j + 8);
-              let complexDoctype = false;
-              q = s.indexOf(">", j + 8);
+      case 1:
+        _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
 
-              if (q < 0) {
-                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
-                return;
-              }
+        this.color = rgbColor;
+        break;
 
-              if (q2 > 0 && q > q2) {
-                q = s.indexOf("]>", j + 8);
+      case 3:
+        _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
 
-                if (q < 0) {
-                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
-                  return;
-                }
+        this.color = rgbColor;
+        break;
 
-                complexDoctype = true;
-              }
+      case 4:
+        _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
 
-              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
-              this.onDoctype(doctypeContent);
-              j = q + (complexDoctype ? 2 : 1);
-            } else {
-              this.onError(XMLParserErrorCode.MalformedElement);
-              return;
-            }
+        this.color = rgbColor;
+        break;
 
-            break;
+      default:
+        this.color = rgbColor;
+        break;
+    }
+  }
 
-          default:
-            const content = this._parseContent(s, j);
+  setBorderStyle(borderStyle) {
+    this.borderStyle = new AnnotationBorderStyle();
 
-            if (content === null) {
-              this.onError(XMLParserErrorCode.MalformedElement);
-              return;
-            }
+    if (!(0, _primitives.isDict)(borderStyle)) {
+      return;
+    }
 
-            let isClosed = false;
+    if (borderStyle.has("BS")) {
+      const dict = borderStyle.get("BS");
+      const dictType = dict.get("Type");
 
-            if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") {
-              isClosed = true;
-            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") {
-              this.onError(XMLParserErrorCode.UnterminatedElement);
-              return;
-            }
+      if (!dictType || (0, _primitives.isName)(dictType, "Border")) {
+        this.borderStyle.setWidth(dict.get("W"), this.rectangle);
+        this.borderStyle.setStyle(dict.get("S"));
+        this.borderStyle.setDashArray(dict.getArray("D"));
+      }
+    } else if (borderStyle.has("Border")) {
+      const array = borderStyle.getArray("Border");
 
-            this.onBeginElement(content.name, content.attributes, isClosed);
-            j += content.parsed + (isClosed ? 2 : 1);
-            break;
-        }
-      } else {
-        while (j < s.length && s[j] !== "<") {
-          j++;
-        }
+      if (Array.isArray(array) && array.length >= 3) {
+        this.borderStyle.setHorizontalCornerRadius(array[0]);
+        this.borderStyle.setVerticalCornerRadius(array[1]);
+        this.borderStyle.setWidth(array[2], this.rectangle);
 
-        const text = s.substring(i, j);
-        this.onText(this._resolveEntities(text));
+        if (array.length === 4) {
+          this.borderStyle.setDashArray(array[3]);
+        }
       }
-
-      i = j;
+    } else {
+      this.borderStyle.setWidth(0);
     }
   }
 
-  onResolveEntity(name) {
-    return `&${name};`;
-  }
-
-  onPi(name, value) {}
-
-  onComment(text) {}
+  setAppearance(dict) {
+    this.appearance = null;
+    const appearanceStates = dict.get("AP");
 
-  onCdata(text) {}
+    if (!(0, _primitives.isDict)(appearanceStates)) {
+      return;
+    }
 
-  onDoctype(doctypeContent) {}
+    const normalAppearanceState = appearanceStates.get("N");
 
-  onText(text) {}
+    if ((0, _primitives.isStream)(normalAppearanceState)) {
+      this.appearance = normalAppearanceState;
+      return;
+    }
 
-  onBeginElement(name, attributes, isEmpty) {}
+    if (!(0, _primitives.isDict)(normalAppearanceState)) {
+      return;
+    }
 
-  onEndElement(name) {}
+    const as = dict.get("AS");
 
-  onError(code) {}
+    if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
+      return;
+    }
 
-}
+    this.appearance = normalAppearanceState.get(as.name);
+  }
 
-exports.XMLParserBase = XMLParserBase;
+  loadResources(keys) {
+    return this.appearance.dict.getAsync("Resources").then(resources => {
+      if (!resources) {
+        return undefined;
+      }
 
-class SimpleDOMNode {
-  constructor(nodeName, nodeValue) {
-    this.nodeName = nodeName;
-    this.nodeValue = nodeValue;
-    Object.defineProperty(this, "parentNode", {
-      value: null,
-      writable: true
+      const objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);
+      return objectLoader.load().then(function () {
+        return resources;
+      });
     });
   }
 
-  get firstChild() {
-    return this.childNodes && this.childNodes[0];
+  getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (!this.appearance) {
+      return Promise.resolve(new _operator_list.OperatorList());
+    }
+
+    const appearance = this.appearance;
+    const data = this.data;
+    const appearanceDict = appearance.dict;
+    const resourcesPromise = this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", 
"Font"]);
+    const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1];
+    const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0];
+    const transform = getTransformMatrix(data.rect, bbox, matrix);
+    return resourcesPromise.then(resources => {
+      const opList = new _operator_list.OperatorList();
+      opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);
+      return evaluator.getOperatorList({
+        stream: appearance,
+        task,
+        resources,
+        operatorList: opList,
+        fallbackFontDict: this._fallbackFontDict
+      }).then(() => {
+        opList.addOp(_util.OPS.endAnnotation, []);
+        this.reset();
+        return opList;
+      });
+    });
   }
 
-  get nextSibling() {
-    const childNodes = this.parentNode.childNodes;
+  async save(evaluator, task, annotationStorage) {
+    return null;
+  }
 
-    if (!childNodes) {
-      return undefined;
+  getFieldObject() {
+    return null;
+  }
+
+  reset() {
+    for (const stream of this._streams) {
+      stream.reset();
     }
+  }
 
-    const index = childNodes.indexOf(this);
+}
 
-    if (index === -1) {
-      return undefined;
-    }
+exports.Annotation = Annotation;
 
-    return childNodes[index + 1];
+class AnnotationBorderStyle {
+  constructor() {
+    this.width = 1;
+    this.style = _util.AnnotationBorderStyleType.SOLID;
+    this.dashArray = [3];
+    this.horizontalCornerRadius = 0;
+    this.verticalCornerRadius = 0;
   }
 
-  get textContent() {
-    if (!this.childNodes) {
-      return this.nodeValue || "";
+  setWidth(width, rect = [0, 0, 0, 0]) {
+    if ((0, _primitives.isName)(width)) {
+      this.width = 0;
+      return;
     }
 
-    return this.childNodes.map(function (child) {
-      return child.textContent;
-    }).join("");
-  }
+    if (Number.isInteger(width)) {
+      if (width > 0) {
+        const maxWidth = (rect[2] - rect[0]) / 2;
+        const maxHeight = (rect[3] - rect[1]) / 2;
 
-  hasChildNodes() {
-    return this.childNodes && this.childNodes.length > 0;
+        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {
+          (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);
+          width = 1;
+        }
+      }
+
+      this.width = width;
+    }
   }
 
-  searchNode(paths, pos) {
-    if (pos >= paths.length) {
-      return this;
+  setStyle(style) {
+    if (!(0, _primitives.isName)(style)) {
+      return;
     }
 
-    const component = paths[pos];
-    const stack = [];
-    let node = this;
+    switch (style.name) {
+      case "S":
+        this.style = _util.AnnotationBorderStyleType.SOLID;
+        break;
 
-    while (true) {
-      if (component.name === node.nodeName) {
-        if (component.pos === 0) {
-          const res = node.searchNode(paths, pos + 1);
+      case "D":
+        this.style = _util.AnnotationBorderStyleType.DASHED;
+        break;
 
-          if (res !== null) {
-            return res;
-          }
-        } else if (stack.length === 0) {
-          return null;
-        } else {
-          const [parent] = stack.pop();
-          let siblingPos = 0;
+      case "B":
+        this.style = _util.AnnotationBorderStyleType.BEVELED;
+        break;
 
-          for (const child of parent.childNodes) {
-            if (component.name === child.nodeName) {
-              if (siblingPos === component.pos) {
-                return child.searchNode(paths, pos + 1);
-              }
+      case "I":
+        this.style = _util.AnnotationBorderStyleType.INSET;
+        break;
 
-              siblingPos++;
-            }
-          }
+      case "U":
+        this.style = _util.AnnotationBorderStyleType.UNDERLINE;
+        break;
 
-          return node.searchNode(paths, pos + 1);
-        }
-      }
+      default:
+        break;
+    }
+  }
 
-      if (node.childNodes && node.childNodes.length !== 0) {
-        stack.push([node, 0]);
-        node = node.childNodes[0];
-      } else if (stack.length === 0) {
-        return null;
-      } else {
-        while (stack.length !== 0) {
-          const [parent, currentPos] = stack.pop();
-          const newPos = currentPos + 1;
+  setDashArray(dashArray) {
+    if (Array.isArray(dashArray) && dashArray.length > 0) {
+      let isValid = true;
+      let allZeros = true;
 
-          if (newPos < parent.childNodes.length) {
-            stack.push([parent, newPos]);
-            node = parent.childNodes[newPos];
-            break;
-          }
-        }
+      for (const element of dashArray) {
+        const validNumber = +element >= 0;
 
-        if (stack.length === 0) {
-          return null;
+        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;
     }
   }
 
-  dump(buffer) {
-    if (this.nodeName === "#text") {
-      buffer.push((0, _core_utils.encodeToXmlString)(this.nodeValue));
-      return;
+  setHorizontalCornerRadius(radius) {
+    if (Number.isInteger(radius)) {
+      this.horizontalCornerRadius = radius;
     }
+  }
 
-    buffer.push(`<${this.nodeName}`);
+  setVerticalCornerRadius(radius) {
+    if (Number.isInteger(radius)) {
+      this.verticalCornerRadius = radius;
+    }
+  }
 
-    if (this.attributes) {
-      for (const attribute of this.attributes) {
-        buffer.push(` ${attribute.name}="${(0, _core_utils.encodeToXmlString)(attribute.value)}"`);
-      }
+}
+
+exports.AnnotationBorderStyle = AnnotationBorderStyle;
+
+class MarkupAnnotation extends Annotation {
+  constructor(parameters) {
+    super(parameters);
+    const dict = parameters.dict;
+
+    if (dict.has("IRT")) {
+      const rawIRT = dict.getRaw("IRT");
+      this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;
+      const rt = dict.get("RT");
+      this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;
     }
 
-    if (this.hasChildNodes()) {
-      buffer.push(">");
+    if (this.data.replyType === _util.AnnotationReplyType.GROUP) {
+      const parent = dict.get("IRT");
+      this.data.title = (0, _util.stringToPDFString)(parent.get("T") || "");
+      this.setContents(parent.get("Contents"));
+      this.data.contents = this.contents;
 
-      for (const child of this.childNodes) {
-        child.dump(buffer);
+      if (!parent.has("CreationDate")) {
+        this.data.creationDate = null;
+      } else {
+        this.setCreationDate(parent.get("CreationDate"));
+        this.data.creationDate = this.creationDate;
       }
 
-      buffer.push(`</${this.nodeName}>`);
-    } else if (this.nodeValue) {
-      buffer.push(`>${(0, _core_utils.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
+      if (!parent.has("M")) {
+        this.data.modificationDate = null;
+      } else {
+        this.setModificationDate(parent.get("M"));
+        this.data.modificationDate = this.modificationDate;
+      }
+
+      this.data.hasPopup = parent.has("Popup");
+
+      if (!parent.has("C")) {
+        this.data.color = null;
+      } else {
+        this.setColor(parent.getArray("C"));
+        this.data.color = this.color;
+      }
     } else {
-      buffer.push("/>");
+      this.data.title = (0, _util.stringToPDFString)(dict.get("T") || "");
+      this.setCreationDate(dict.get("CreationDate"));
+      this.data.creationDate = this.creationDate;
+      this.data.hasPopup = dict.has("Popup");
+
+      if (!dict.has("C")) {
+        this.data.color = null;
+      }
     }
   }
 
-}
-
-exports.SimpleDOMNode = SimpleDOMNode;
+  setCreationDate(creationDate) {
+    this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
+  }
 
-class SimpleXMLParser extends XMLParserBase {
-  constructor({
-    hasAttributes = false,
-    lowerCaseName = false
+  _setDefaultAppearance({
+    xref,
+    extra,
+    strokeColor,
+    fillColor,
+    blendMode,
+    pointsCallback
   }) {
-    super();
-    this._currentFragment = null;
-    this._stack = null;
-    this._errorCode = XMLParserErrorCode.NoError;
-    this._hasAttributes = hasAttributes;
-    this._lowerCaseName = lowerCaseName;
-  }
+    let minX = Number.MAX_VALUE;
+    let minY = Number.MAX_VALUE;
+    let maxX = Number.MIN_VALUE;
+    let maxY = Number.MIN_VALUE;
+    const buffer = ["q"];
 
-  parseFromString(data) {
-    this._currentFragment = [];
-    this._stack = [];
-    this._errorCode = XMLParserErrorCode.NoError;
-    this.parseXml(data);
+    if (extra) {
+      buffer.push(extra);
+    }
 
-    if (this._errorCode !== XMLParserErrorCode.NoError) {
-      return undefined;
+    if (strokeColor) {
+      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);
     }
 
-    const [documentElement] = this._currentFragment;
+    if (fillColor) {
+      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);
+    }
 
-    if (!documentElement) {
-      return undefined;
+    for (const points of this.data.quadPoints) {
+      const [mX, MX, mY, MY] = pointsCallback(buffer, points);
+      minX = Math.min(minX, mX);
+      maxX = Math.max(maxX, MX);
+      minY = Math.min(minY, mY);
+      maxY = Math.max(maxY, MY);
     }
 
-    return {
-      documentElement
-    };
-  }
+    buffer.push("Q");
+    const formDict = new _primitives.Dict(xref);
+    const appearanceStreamDict = new _primitives.Dict(xref);
+    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
+    const appearanceStream = new _stream.StringStream(buffer.join(" "));
+    appearanceStream.dict = appearanceStreamDict;
+    formDict.set("Fm0", appearanceStream);
+    const gsDict = new _primitives.Dict(xref);
 
-  onText(text) {
-    if (isWhitespaceString(text)) {
-      return;
+    if (blendMode) {
+      gsDict.set("BM", _primitives.Name.get(blendMode));
     }
 
-    const node = new SimpleDOMNode("#text", text);
+    const stateDict = new _primitives.Dict(xref);
+    stateDict.set("GS0", gsDict);
+    const resources = new _primitives.Dict(xref);
+    resources.set("ExtGState", stateDict);
+    resources.set("XObject", formDict);
+    const appearanceDict = new _primitives.Dict(xref);
+    appearanceDict.set("Resources", resources);
+    const bbox = this.data.rect = [minX, minY, maxX, maxY];
+    appearanceDict.set("BBox", bbox);
+    this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do");
+    this.appearance.dict = appearanceDict;
 
-    this._currentFragment.push(node);
+    this._streams.push(this.appearance, appearanceStream);
   }
 
-  onCdata(text) {
-    const node = new SimpleDOMNode("#text", text);
-
-    this._currentFragment.push(node);
-  }
+}
 
-  onBeginElement(name, attributes, isEmpty) {
-    if (this._lowerCaseName) {
-      name = name.toLowerCase();
-    }
+exports.MarkupAnnotation = MarkupAnnotation;
 
-    const node = new SimpleDOMNode(name);
-    node.childNodes = [];
+class WidgetAnnotation extends Annotation {
+  constructor(params) {
+    super(params);
+    const dict = params.dict;
+    const data = this.data;
+    this.ref = params.ref;
+    data.annotationType = _util.AnnotationType.WIDGET;
+    data.fieldName = this._constructFieldName(dict);
+    data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
+    const fieldValue = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "V",
+      getArray: true
+    });
+    data.fieldValue = this._decodeFormValue(fieldValue);
+    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DV",
+      getArray: true
+    });
+    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
+    data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || "");
+    const defaultAppearance = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DA"
+    }) || params.acroForm.get("DA") || "";
+    data.defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
+    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(data.defaultAppearance);
+    const fieldType = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "FT"
+    });
+    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+    const localResources = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "DR"
+    });
+    const acroFormResources = params.acroForm.get("DR");
+    const appearanceResources = this.appearance && this.appearance.dict.get("Resources");
+    this._fieldResources = {
+      localResources,
+      acroFormResources,
+      appearanceResources,
+      mergedResources: _primitives.Dict.merge({
+        xref: params.xref,
+        dictArray: [localResources, appearanceResources, acroFormResources],
+        mergeSubDicts: true
+      })
+    };
+    data.fieldFlags = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "Ff"
+    });
 
-    if (this._hasAttributes) {
-      node.attributes = attributes;
+    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
+      data.fieldFlags = 0;
     }
 
-    this._currentFragment.push(node);
+    data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
+    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);
 
-    if (isEmpty) {
-      return;
+    if (data.fieldType === "Sig") {
+      data.fieldValue = null;
+      this.setFlags(_util.AnnotationFlag.HIDDEN);
+      data.hidden = true;
     }
-
-    this._stack.push(this._currentFragment);
-
-    this._currentFragment = node.childNodes;
   }
 
-  onEndElement(name) {
-    this._currentFragment = this._stack.pop() || [];
-    const lastElement = this._currentFragment[this._currentFragment.length - 1];
-
-    if (!lastElement) {
-      return;
+  _constructFieldName(dict) {
+    if (!dict.has("T") && !dict.has("Parent")) {
+      (0, _util.warn)("Unknown field name, falling back to empty field name.");
+      return "";
     }
 
-    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
-      lastElement.childNodes[i].parentNode = lastElement;
+    if (!dict.has("Parent")) {
+      return (0, _util.stringToPDFString)(dict.get("T"));
     }
-  }
 
-  onError(code) {
-    this._errorCode = code;
-  }
+    const fieldName = [];
 
-}
+    if (dict.has("T")) {
+      fieldName.unshift((0, _util.stringToPDFString)(dict.get("T")));
+    }
 
-exports.SimpleXMLParser = SimpleXMLParser;
+    let loopDict = dict;
 
-/***/ }),
-/* 27 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+    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")));
+      }
+    }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getQuadPoints = getQuadPoints;
-exports.MarkupAnnotation = exports.AnnotationFactory = exports.AnnotationBorderStyle = exports.Annotation = 
void 0;
+    return fieldName.join(".");
+  }
 
-var _util = __w_pdfjs_require__(2);
+  _decodeFormValue(formValue) {
+    if (Array.isArray(formValue)) {
+      return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, 
_util.stringToPDFString)(item));
+    } else if ((0, _primitives.isName)(formValue)) {
+      return (0, _util.stringToPDFString)(formValue.name);
+    } else if ((0, _util.isString)(formValue)) {
+      return (0, _util.stringToPDFString)(formValue);
+    }
 
-var _obj = __w_pdfjs_require__(10);
+    return null;
+  }
 
-var _core_utils = __w_pdfjs_require__(8);
+  hasFieldFlag(flag) {
+    return !!(this.data.fieldFlags & flag);
+  }
 
-var _default_appearance = __w_pdfjs_require__(28);
+  getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (renderForms) {
+      return Promise.resolve(new _operator_list.OperatorList());
+    }
 
-var _primitives = __w_pdfjs_require__(5);
+    if (!this._hasText) {
+      return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+    }
 
-var _colorspace = __w_pdfjs_require__(23);
+    return this._getAppearance(evaluator, task, annotationStorage).then(content => {
+      if (this.appearance && content === null) {
+        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+      }
 
-var _operator_list = __w_pdfjs_require__(46);
+      const operatorList = new _operator_list.OperatorList();
 
-var _stream = __w_pdfjs_require__(12);
+      if (!this.data.defaultAppearance || content === null) {
+        return operatorList;
+      }
 
-var _writer = __w_pdfjs_require__(48);
-
-class AnnotationFactory {
-  static create(xref, ref, pdfManager, idFactory, collectFields) {
-    return pdfManager.ensureCatalog("acroForm").then(acroForm => {
-      return pdfManager.ensure(this, "_create", [xref, ref, pdfManager, idFactory, acroForm, collectFields]);
+      const matrix = [1, 0, 0, 1, 0, 0];
+      const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
+      const transform = getTransformMatrix(this.data.rect, bbox, matrix);
+      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.rect, transform, matrix]);
+      const stream = new _stream.StringStream(content);
+      return evaluator.getOperatorList({
+        stream,
+        task,
+        resources: this._fieldResources.mergedResources,
+        operatorList
+      }).then(function () {
+        operatorList.addOp(_util.OPS.endAnnotation, []);
+        return operatorList;
+      });
     });
   }
 
-  static _create(xref, ref, pdfManager, idFactory, acroForm, collectFields) {
-    const dict = xref.fetchIfRef(ref);
+  async save(evaluator, task, annotationStorage) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
 
-    if (!(0, _primitives.isDict)(dict)) {
-      return undefined;
+    if (value === this.data.fieldValue || value === undefined) {
+      return null;
     }
 
-    const id = (0, _primitives.isRef)(ref) ? ref.toString() : `annot_${idFactory.createObjId()}`;
-    let subtype = dict.get("Subtype");
-    subtype = (0, _primitives.isName)(subtype) ? subtype.name : null;
-    const parameters = {
-      xref,
-      ref,
-      dict,
-      subtype,
-      id,
-      pdfManager,
-      acroForm: acroForm instanceof _primitives.Dict ? acroForm : _primitives.Dict.empty,
-      collectFields
-    };
+    let appearance = await this._getAppearance(evaluator, task, annotationStorage);
 
-    switch (subtype) {
-      case "Link":
-        return new LinkAnnotation(parameters);
+    if (appearance === null) {
+      return null;
+    }
 
-      case "Text":
-        return new TextAnnotation(parameters);
+    const {
+      xref
+    } = evaluator;
+    const dict = xref.fetchIfRef(this.ref);
 
-      case "Widget":
-        let fieldType = (0, _core_utils.getInheritableProperty)({
-          dict,
-          key: "FT"
-        });
-        fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
+    }
 
-        switch (fieldType) {
-          case "Tx":
-            return new TextWidgetAnnotation(parameters);
+    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value
+    };
+    const newRef = xref.getNewRef();
+    const AP = new _primitives.Dict(xref);
+    AP.set("N", newRef);
+    const encrypt = xref.encrypt;
+    let originalTransform = null;
+    let newTransform = null;
 
-          case "Btn":
-            return new ButtonWidgetAnnotation(parameters);
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
+      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);
+      appearance = newTransform.encryptString(appearance);
+    }
 
-          case "Ch":
-            return new ChoiceWidgetAnnotation(parameters);
-        }
+    dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
+    dict.set("AP", AP);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    const appearanceDict = new _primitives.Dict(xref);
+    appearanceDict.set("Length", appearance.length);
+    appearanceDict.set("Subtype", _primitives.Name.get("Form"));
+    appearanceDict.set("Resources", this._getSaveFieldResources(xref));
+    appearanceDict.set("BBox", bbox);
+    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);
+    bufferOriginal.push("\nendobj\n");
+    const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`];
+    (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);
+    bufferNew.push(" stream\n");
+    bufferNew.push(appearance);
+    bufferNew.push("\nendstream\nendobj\n");
+    return [{
+      ref: this.ref,
+      data: bufferOriginal.join(""),
+      xfa
+    }, {
+      ref: newRef,
+      data: bufferNew.join(""),
+      xfa: null
+    }];
+  }
 
-        (0, _util.warn)(`Unimplemented widget field type "${fieldType}", ` + "falling back to base field 
type.");
-        return new WidgetAnnotation(parameters);
+  async _getAppearance(evaluator, task, annotationStorage) {
+    const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);
 
-      case "Popup":
-        return new PopupAnnotation(parameters);
+    if (!annotationStorage || isPassword) {
+      return null;
+    }
 
-      case "FreeText":
-        return new FreeTextAnnotation(parameters);
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
 
-      case "Line":
-        return new LineAnnotation(parameters);
+    if (value === undefined) {
+      return null;
+    }
 
-      case "Square":
-        return new SquareAnnotation(parameters);
+    if (value === "") {
+      return "";
+    }
 
-      case "Circle":
-        return new CircleAnnotation(parameters);
+    const defaultPadding = 2;
+    const hPadding = defaultPadding;
+    const totalHeight = this.data.rect[3] - this.data.rect[1];
+    const totalWidth = this.data.rect[2] - this.data.rect[0];
 
-      case "PolyLine":
-        return new PolylineAnnotation(parameters);
+    if (!this.data.defaultAppearance) {
+      this.data.defaultAppearance = "/Helvetica 0 Tf 0 g";
+      this.data.defaultAppearanceData = (0, 
_default_appearance.parseDefaultAppearance)(this.data.defaultAppearance);
+    }
 
-      case "Polygon":
-        return new PolygonAnnotation(parameters);
+    const font = await this._getFontData(evaluator, task);
 
-      case "Caret":
-        return new CaretAnnotation(parameters);
+    const fontSize = this._computeFontSize(font, totalHeight);
 
-      case "Ink":
-        return new InkAnnotation(parameters);
+    let descent = font.descent;
 
-      case "Highlight":
-        return new HighlightAnnotation(parameters);
+    if (isNaN(descent)) {
+      descent = 0;
+    }
 
-      case "Underline":
-        return new UnderlineAnnotation(parameters);
+    const vPadding = defaultPadding + Math.abs(descent) * fontSize;
+    const defaultAppearance = this.data.defaultAppearance;
+    const alignment = this.data.textAlignment;
 
-      case "Squiggly":
-        return new SquigglyAnnotation(parameters);
+    if (this.data.multiLine) {
+      return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, 
alignment, hPadding, vPadding);
+    }
 
-      case "StrikeOut":
-        return new StrikeOutAnnotation(parameters);
+    const encodedString = font.encodeString(value).join("");
 
-      case "Stamp":
-        return new StampAnnotation(parameters);
+    if (this.data.comb) {
+      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);
+    }
 
-      case "FileAttachment":
-        return new FileAttachmentAnnotation(parameters);
+    if (alignment === 0 || alignment > 2) {
+      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(encodedString)}) Tj` + " ET Q EMC";
+    }
 
-      default:
-        if (!collectFields) {
-          if (!subtype) {
-            (0, _util.warn)("Annotation is missing the required /Subtype.");
-          } else {
-            (0, _util.warn)(`Unimplemented annotation type "${subtype}", ` + "falling back to base 
annotation.");
-          }
-        }
+    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, 
vPadding);
 
-        return new Annotation(parameters);
-    }
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC";
   }
 
-}
-
-exports.AnnotationFactory = AnnotationFactory;
+  async _getFontData(evaluator, task) {
+    const operatorList = new _operator_list.OperatorList();
+    const initialState = {
+      font: null,
 
-function getRgbColor(color) {
-  const rgbColor = new Uint8ClampedArray(3);
+      clone() {
+        return this;
+      }
 
-  if (!Array.isArray(color)) {
-    return rgbColor;
+    };
+    const {
+      fontName,
+      fontSize
+    } = this.data.defaultAppearanceData;
+    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName, fontSize], null, 
operatorList, task, initialState, null);
+    return initialState.font;
   }
 
-  switch (color.length) {
-    case 0:
-      return null;
+  _computeFontSize(font, height) {
+    let fontSize = this.data.defaultAppearanceData.fontSize;
 
-    case 1:
-      _colorspace.ColorSpace.singletons.gray.getRgbItem(color, 0, rgbColor, 0);
+    if (!fontSize) {
+      const {
+        fontColor,
+        fontName
+      } = this.data.defaultAppearanceData;
+      let capHeight;
 
-      return rgbColor;
+      if (font.capHeight) {
+        capHeight = font.capHeight;
+      } else {
+        const glyphs = font.charsToGlyphs(font.encodeString("M").join(""));
 
-    case 3:
-      _colorspace.ColorSpace.singletons.rgb.getRgbItem(color, 0, rgbColor, 0);
+        if (glyphs.length === 1 && glyphs[0].width) {
+          const em = glyphs[0].width / 1000;
+          capHeight = 0.7 * em;
+        } else {
+          capHeight = 0.7;
+        }
+      }
 
-      return rgbColor;
+      fontSize = Math.max(1, Math.floor(height / (1.5 * capHeight)));
+      this.data.defaultAppearance = (0, _default_appearance.createDefaultAppearance)({
+        fontSize,
+        fontName,
+        fontColor
+      });
+    }
 
-    case 4:
-      _colorspace.ColorSpace.singletons.cmyk.getRgbItem(color, 0, rgbColor, 0);
+    return fontSize;
+  }
 
-      return rgbColor;
+  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
+    const glyphs = font.charsToGlyphs(text);
+    const scale = fontSize / 1000;
+    let width = 0;
 
-    default:
-      return rgbColor;
-  }
-}
+    for (const glyph of glyphs) {
+      width += glyph.width * scale;
+    }
 
-function getQuadPoints(dict, rect) {
-  if (!dict.has("QuadPoints")) {
-    return null;
-  }
+    let shift;
 
-  const quadPoints = dict.getArray("QuadPoints");
+    if (alignment === 1) {
+      shift = (totalWidth - width) / 2;
+    } else if (alignment === 2) {
+      shift = totalWidth - width - hPadding;
+    } else {
+      shift = hPadding;
+    }
 
-  if (!Array.isArray(quadPoints) || quadPoints.length === 0 || quadPoints.length % 8 > 0) {
-    return null;
+    shift = shift.toFixed(2);
+    vPadding = vPadding.toFixed(2);
+    return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;
   }
 
-  const quadPointsLists = [];
+  _getSaveFieldResources(xref) {
+    const {
+      localResources,
+      appearanceResources,
+      acroFormResources
+    } = this._fieldResources;
+    const fontNameStr = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName.name;
 
-  for (let i = 0, ii = quadPoints.length / 8; i < ii; i++) {
-    quadPointsLists.push([]);
+    if (!fontNameStr) {
+      return localResources || _primitives.Dict.empty;
+    }
 
-    for (let j = i * 8, jj = i * 8 + 8; j < jj; j += 2) {
-      const x = quadPoints[j];
-      const y = quadPoints[j + 1];
+    for (const resources of [localResources, appearanceResources]) {
+      if (resources instanceof _primitives.Dict) {
+        const localFont = resources.get("Font");
 
-      if (rect !== null && (x < rect[0] || x > rect[2] || y < rect[1] || y > rect[3])) {
-        return null;
+        if (localFont instanceof _primitives.Dict && localFont.has(fontNameStr)) {
+          return resources;
+        }
       }
+    }
 
-      quadPointsLists[i].push({
-        x,
-        y
-      });
+    if (acroFormResources instanceof _primitives.Dict) {
+      const acroFormFont = acroFormResources.get("Font");
+
+      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontNameStr)) {
+        const subFontDict = new _primitives.Dict(xref);
+        subFontDict.set(fontNameStr, acroFormFont.getRaw(fontNameStr));
+        const subResourcesDict = new _primitives.Dict(xref);
+        subResourcesDict.set("Font", subFontDict);
+        return _primitives.Dict.merge({
+          xref,
+          dictArray: [subResourcesDict, localResources],
+          mergeSubDicts: true
+        });
+      }
     }
-  }
 
-  return quadPointsLists.map(quadPointsList => {
-    const [minX, maxX, minY, maxY] = quadPointsList.reduce(([mX, MX, mY, MY], quadPoint) => [Math.min(mX, 
quadPoint.x), Math.max(MX, quadPoint.x), Math.min(mY, quadPoint.y), Math.max(MY, quadPoint.y)], 
[Number.MAX_VALUE, Number.MIN_VALUE, Number.MAX_VALUE, Number.MIN_VALUE]);
-    return [{
-      x: minX,
-      y: maxY
-    }, {
-      x: maxX,
-      y: maxY
-    }, {
-      x: minX,
-      y: minY
-    }, {
-      x: maxX,
-      y: minY
-    }];
-  });
-}
+    return localResources || _primitives.Dict.empty;
+  }
 
-function getTransformMatrix(rect, bbox, matrix) {
-  const [minX, minY, maxX, maxY] = _util.Util.getAxialAlignedBoundingBox(bbox, matrix);
+  getFieldObject() {
+    if (this.data.fieldType === "Sig") {
+      return {
+        id: this.data.id,
+        value: null,
+        type: "signature"
+      };
+    }
 
-  if (minX === maxX || minY === maxY) {
-    return [1, 0, 0, 1, rect[0], rect[1]];
+    return null;
   }
 
-  const xRatio = (rect[2] - rect[0]) / (maxX - minX);
-  const yRatio = (rect[3] - rect[1]) / (maxY - minY);
-  return [xRatio, 0, 0, yRatio, rect[0] - minX * xRatio, rect[1] - minY * yRatio];
 }
 
-class Annotation {
+class TextWidgetAnnotation extends WidgetAnnotation {
   constructor(params) {
+    super(params);
+    this._hasText = true;
     const dict = params.dict;
-    this.setContents(dict.get("Contents"));
-    this.setModificationDate(dict.get("M"));
-    this.setFlags(dict.get("F"));
-    this.setRectangle(dict.getArray("Rect"));
-    this.setColor(dict.getArray("C"));
-    this.setBorderStyle(dict);
-    this.setAppearance(dict);
-    this._streams = [];
 
-    if (this.appearance) {
-      this._streams.push(this.appearance);
+    if (!(0, _util.isString)(this.data.fieldValue)) {
+      this.data.fieldValue = "";
     }
 
-    this.data = {
-      annotationFlags: this.flags,
-      borderStyle: this.borderStyle,
-      color: this.color,
-      contents: this.contents,
-      hasAppearance: !!this.appearance,
-      id: params.id,
-      modificationDate: this.modificationDate,
-      rect: this.rectangle,
-      subtype: params.subtype
-    };
-
-    if (params.collectFields) {
-      const kids = dict.get("Kids");
-
-      if (Array.isArray(kids)) {
-        const kidIds = [];
+    let alignment = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "Q"
+    });
 
-        for (const kid of kids) {
-          if ((0, _primitives.isRef)(kid)) {
-            kidIds.push(kid.toString());
-          }
-        }
+    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
+      alignment = null;
+    }
 
-        if (kidIds.length !== 0) {
-          this.data.kidIds = kidIds;
-        }
-      }
+    this.data.textAlignment = alignment;
+    let maximumLength = (0, _core_utils.getInheritableProperty)({
+      dict,
+      key: "MaxLen"
+    });
 
-      this.data.actions = (0, _core_utils.collectActions)(params.xref, dict, 
_util.AnnotationActionEventType);
-      this.data.fieldName = this._constructFieldName(dict);
+    if (!Number.isInteger(maximumLength) || maximumLength < 0) {
+      maximumLength = null;
     }
 
-    this._fallbackFontDict = 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;
   }
 
-  _hasFlag(flags, flag) {
-    return !!(flags & flag);
-  }
+  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {
+    const combWidth = (width / this.data.maxLen).toFixed(2);
+    const buf = [];
+    const positions = font.getCharPositions(text);
 
-  _isViewable(flags) {
-    return !this._hasFlag(flags, _util.AnnotationFlag.INVISIBLE) && !this._hasFlag(flags, 
_util.AnnotationFlag.NOVIEW);
-  }
+    for (const [start, end] of positions) {
+      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);
+    }
 
-  _isPrintable(flags) {
-    return this._hasFlag(flags, _util.AnnotationFlag.PRINT) && !this._hasFlag(flags, 
_util.AnnotationFlag.INVISIBLE);
+    const renderedComb = buf.join(` ${combWidth} 0 Td `);
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " 
ET Q EMC";
   }
 
-  isHidden(annotationStorage) {
-    const storageEntry = annotationStorage && annotationStorage.get(this.data.id);
+  _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, 
vPadding) {
+    const lines = text.split(/\r\n|\r|\n/);
+    const buf = [];
+    const totalWidth = width - 2 * hPadding;
+
+    for (const line of lines) {
+      const chunks = this._splitLine(line, font, fontSize, totalWidth);
 
-    if (storageEntry && storageEntry.hidden !== undefined) {
-      return storageEntry.hidden;
+      for (const chunk of chunks) {
+        const padding = buf.length === 0 ? hPadding : 0;
+        buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));
+      }
     }
 
-    return this._hasFlag(this.flags, _util.AnnotationFlag.HIDDEN);
+    const renderedText = buf.join("\n");
+    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC";
   }
 
-  get viewable() {
-    if (this.data.quadPoints === null) {
-      return false;
-    }
+  _splitLine(line, font, fontSize, width) {
+    line = font.encodeString(line).join("");
+    const glyphs = font.charsToGlyphs(line);
 
-    if (this.flags === 0) {
-      return true;
+    if (glyphs.length <= 1) {
+      return [line];
     }
 
-    return this._isViewable(this.flags);
-  }
+    const positions = font.getCharPositions(line);
+    const scale = fontSize / 1000;
+    const chunks = [];
+    let lastSpacePosInStringStart = -1,
+        lastSpacePosInStringEnd = -1,
+        lastSpacePos = -1,
+        startChunk = 0,
+        currentWidth = 0;
 
-  get printable() {
-    if (this.data.quadPoints === null) {
-      return false;
-    }
+    for (let i = 0, ii = glyphs.length; i < ii; i++) {
+      const [start, end] = positions[i];
+      const glyph = glyphs[i];
+      const glyphWidth = glyph.width * scale;
 
-    if (this.flags === 0) {
-      return false;
+      if (glyph.unicode === " ") {
+        if (currentWidth + glyphWidth > width) {
+          chunks.push(line.substring(startChunk, start));
+          startChunk = start;
+          currentWidth = glyphWidth;
+          lastSpacePosInStringStart = -1;
+          lastSpacePos = -1;
+        } else {
+          currentWidth += glyphWidth;
+          lastSpacePosInStringStart = start;
+          lastSpacePosInStringEnd = end;
+          lastSpacePos = i;
+        }
+      } else {
+        if (currentWidth + glyphWidth > width) {
+          if (lastSpacePosInStringStart !== -1) {
+            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));
+            startChunk = lastSpacePosInStringEnd;
+            i = lastSpacePos + 1;
+            lastSpacePosInStringStart = -1;
+            currentWidth = 0;
+          } else {
+            chunks.push(line.substring(startChunk, start));
+            startChunk = start;
+            currentWidth = glyphWidth;
+          }
+        } else {
+          currentWidth += glyphWidth;
+        }
+      }
     }
 
-    return this._isPrintable(this.flags);
-  }
+    if (startChunk < line.length) {
+      chunks.push(line.substring(startChunk, line.length));
+    }
 
-  setContents(contents) {
-    this.contents = (0, _util.stringToPDFString)(contents || "");
+    return chunks;
   }
 
-  setModificationDate(modificationDate) {
-    this.modificationDate = (0, _util.isString)(modificationDate) ? modificationDate : null;
+  getFieldObject() {
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue,
+      defaultValue: this.data.defaultFieldValue,
+      multiline: this.data.multiLine,
+      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
+      charLimit: this.data.maxLen,
+      comb: this.data.comb,
+      editable: !this.data.readOnly,
+      hidden: this.data.hidden,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      actions: this.data.actions,
+      type: "text"
+    };
   }
 
-  setFlags(flags) {
-    this.flags = Number.isInteger(flags) && flags > 0 ? flags : 0;
-  }
+}
 
-  hasFlag(flag) {
-    return this._hasFlag(this.flags, flag);
-  }
+class ButtonWidgetAnnotation extends WidgetAnnotation {
+  constructor(params) {
+    super(params);
+    this.checkedAppearance = null;
+    this.uncheckedAppearance = null;
+    this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
+    this.data.isTooltipOnly = false;
 
-  setRectangle(rectangle) {
-    if (Array.isArray(rectangle) && rectangle.length === 4) {
-      this.rectangle = _util.Util.normalizeRect(rectangle);
+    if (this.data.checkBox) {
+      this._processCheckBox(params);
+    } else if (this.data.radioButton) {
+      this._processRadioButton(params);
+    } else if (this.data.pushButton) {
+      this._processPushButton(params);
     } else {
-      this.rectangle = [0, 0, 0, 0];
+      (0, _util.warn)("Invalid field flags for button widget annotation");
     }
   }
 
-  setColor(color) {
-    this.color = getRgbColor(color);
-  }
-
-  setBorderStyle(borderStyle) {
-    this.borderStyle = new AnnotationBorderStyle();
-
-    if (!(0, _primitives.isDict)(borderStyle)) {
-      return;
+  getOperatorList(evaluator, task, renderForms, annotationStorage) {
+    if (this.data.pushButton) {
+      return super.getOperatorList(evaluator, task, false, annotationStorage);
     }
 
-    if (borderStyle.has("BS")) {
-      const dict = borderStyle.get("BS");
-      const dictType = dict.get("Type");
+    if (annotationStorage) {
+      const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
 
-      if (!dictType || (0, _primitives.isName)(dictType, "Border")) {
-        this.borderStyle.setWidth(dict.get("W"), this.rectangle);
-        this.borderStyle.setStyle(dict.get("S"));
-        this.borderStyle.setDashArray(dict.getArray("D"));
+      if (value === undefined) {
+        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
       }
-    } else if (borderStyle.has("Border")) {
-      const array = borderStyle.getArray("Border");
 
-      if (Array.isArray(array) && array.length >= 3) {
-        this.borderStyle.setHorizontalCornerRadius(array[0]);
-        this.borderStyle.setVerticalCornerRadius(array[1]);
-        this.borderStyle.setWidth(array[2], this.rectangle);
+      let appearance;
 
-        if (array.length === 4) {
-          this.borderStyle.setDashArray(array[3]);
-        }
+      if (value) {
+        appearance = this.checkedAppearance;
+      } else {
+        appearance = this.uncheckedAppearance;
       }
-    } else {
-      this.borderStyle.setWidth(0);
-    }
-  }
 
-  setAppearance(dict) {
-    this.appearance = null;
-    const appearanceStates = dict.get("AP");
+      if (appearance) {
+        const savedAppearance = this.appearance;
+        this.appearance = appearance;
+        const operatorList = super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+        this.appearance = savedAppearance;
+        return operatorList;
+      }
 
-    if (!(0, _primitives.isDict)(appearanceStates)) {
-      return;
+      return Promise.resolve(new _operator_list.OperatorList());
     }
 
-    const normalAppearanceState = appearanceStates.get("N");
+    return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+  }
 
-    if ((0, _primitives.isStream)(normalAppearanceState)) {
-      this.appearance = normalAppearanceState;
-      return;
+  async save(evaluator, task, annotationStorage) {
+    if (this.data.checkBox) {
+      return this._saveCheckbox(evaluator, task, annotationStorage);
     }
 
-    if (!(0, _primitives.isDict)(normalAppearanceState)) {
-      return;
+    if (this.data.radioButton) {
+      return this._saveRadioButton(evaluator, task, annotationStorage);
     }
 
-    const as = dict.get("AS");
+    return null;
+  }
 
-    if (!(0, _primitives.isName)(as) || !normalAppearanceState.has(as.name)) {
-      return;
+  async _saveCheckbox(evaluator, task, annotationStorage) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
+
+    if (value === undefined) {
+      return null;
     }
 
-    this.appearance = normalAppearanceState.get(as.name);
-  }
+    const defaultValue = this.data.fieldValue && this.data.fieldValue !== "Off";
 
-  loadResources(keys) {
-    return this.appearance.dict.getAsync("Resources").then(resources => {
-      if (!resources) {
-        return undefined;
-      }
+    if (defaultValue === value) {
+      return null;
+    }
 
-      const objectLoader = new _obj.ObjectLoader(resources, keys, resources.xref);
-      return objectLoader.load().then(function () {
-        return resources;
-      });
-    });
-  }
+    const dict = evaluator.xref.fetchIfRef(this.ref);
 
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (!this.appearance) {
-      return Promise.resolve(new _operator_list.OperatorList());
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
     }
 
-    const appearance = this.appearance;
-    const data = this.data;
-    const appearanceDict = appearance.dict;
-    const resourcesPromise = this.loadResources(["ExtGState", "ColorSpace", "Pattern", "Shading", "XObject", 
"Font"]);
-    const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1];
-    const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0];
-    const transform = getTransformMatrix(data.rect, bbox, matrix);
-    return resourcesPromise.then(resources => {
-      const opList = new _operator_list.OperatorList();
-      opList.addOp(_util.OPS.beginAnnotation, [data.rect, transform, matrix]);
-      return evaluator.getOperatorList({
-        stream: appearance,
-        task,
-        resources,
-        operatorList: opList,
-        fallbackFontDict: this._fallbackFontDict
-      }).then(() => {
-        opList.addOp(_util.OPS.endAnnotation, []);
-        this.reset();
-        return opList;
-      });
-    });
-  }
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.exportValue : ""
+    };
 
-  async save(evaluator, task, annotationStorage) {
-    return null;
-  }
+    const name = _primitives.Name.get(value ? this.data.exportValue : "Off");
 
-  getFieldObject() {
-    if (this.data.kidIds) {
-      return {
-        id: this.data.id,
-        actions: this.data.actions,
-        name: this.data.fieldName,
-        type: "",
-        kidIds: this.data.kidIds
-      };
+    dict.set("V", name);
+    dict.set("AS", name);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    const encrypt = evaluator.xref.encrypt;
+    let originalTransform = null;
+
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
     }
 
-    return null;
+    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, buffer, originalTransform);
+    buffer.push("\nendobj\n");
+    return [{
+      ref: this.ref,
+      data: buffer.join(""),
+      xfa
+    }];
   }
 
-  reset() {
-    for (const stream of this._streams) {
-      stream.reset();
-    }
-  }
+  async _saveRadioButton(evaluator, task, annotationStorage) {
+    const value = annotationStorage[this.data.id] && annotationStorage[this.data.id].value;
 
-  _constructFieldName(dict) {
-    if (!dict.has("T") && !dict.has("Parent")) {
-      (0, _util.warn)("Unknown field name, falling back to empty field name.");
-      return "";
+    if (value === undefined) {
+      return null;
     }
 
-    if (!dict.has("Parent")) {
-      return (0, _util.stringToPDFString)(dict.get("T"));
+    const defaultValue = this.data.fieldValue === this.data.buttonValue;
+
+    if (defaultValue === value) {
+      return null;
     }
 
-    const fieldName = [];
+    const dict = evaluator.xref.fetchIfRef(this.ref);
 
-    if (dict.has("T")) {
-      fieldName.unshift((0, _util.stringToPDFString)(dict.get("T")));
+    if (!(0, _primitives.isDict)(dict)) {
+      return null;
     }
 
-    let loopDict = dict;
-    const visited = new _primitives.RefSet();
+    const xfa = {
+      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
+      value: value ? this.data.buttonValue : ""
+    };
 
-    if (dict.objId) {
-      visited.put(dict.objId);
-    }
+    const name = _primitives.Name.get(value ? this.data.buttonValue : "Off");
 
-    while (loopDict.has("Parent")) {
-      loopDict = loopDict.get("Parent");
+    let parentBuffer = null;
+    const encrypt = evaluator.xref.encrypt;
 
-      if (!(loopDict instanceof _primitives.Dict) || loopDict.objId && visited.has(loopDict.objId)) {
-        break;
-      }
+    if (value) {
+      if ((0, _primitives.isRef)(this.parent)) {
+        const parent = evaluator.xref.fetch(this.parent);
+        let parentTransform = null;
 
-      if (loopDict.objId) {
-        visited.put(loopDict.objId);
-      }
+        if (encrypt) {
+          parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);
+        }
 
-      if (loopDict.has("T")) {
-        fieldName.unshift((0, _util.stringToPDFString)(loopDict.get("T")));
+        parent.set("V", name);
+        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`];
+        (0, _writer.writeDict)(parent, parentBuffer, parentTransform);
+        parentBuffer.push("\nendobj\n");
+      } else if ((0, _primitives.isDict)(this.parent)) {
+        this.parent.set("V", name);
       }
     }
 
-    return fieldName.join(".");
-  }
-
-}
+    dict.set("AS", name);
+    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
+    let originalTransform = null;
 
-exports.Annotation = Annotation;
+    if (encrypt) {
+      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
+    }
 
-class AnnotationBorderStyle {
-  constructor() {
-    this.width = 1;
-    this.style = _util.AnnotationBorderStyleType.SOLID;
-    this.dashArray = [3];
-    this.horizontalCornerRadius = 0;
-    this.verticalCornerRadius = 0;
-  }
+    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
+    (0, _writer.writeDict)(dict, buffer, originalTransform);
+    buffer.push("\nendobj\n");
+    const newRefs = [{
+      ref: this.ref,
+      data: buffer.join(""),
+      xfa
+    }];
 
-  setWidth(width, rect = [0, 0, 0, 0]) {
-    if ((0, _primitives.isName)(width)) {
-      this.width = 0;
-      return;
+    if (parentBuffer !== null) {
+      newRefs.push({
+        ref: this.parent,
+        data: parentBuffer.join(""),
+        xfa: null
+      });
     }
 
-    if (Number.isInteger(width)) {
-      if (width > 0) {
-        const maxWidth = (rect[2] - rect[0]) / 2;
-        const maxHeight = (rect[3] - rect[1]) / 2;
+    return newRefs;
+  }
 
-        if (maxWidth > 0 && maxHeight > 0 && (width > maxWidth || width > maxHeight)) {
-          (0, _util.warn)(`AnnotationBorderStyle.setWidth - ignoring width: ${width}`);
-          width = 1;
-        }
-      }
+  _processCheckBox(params) {
+    const customAppearance = params.dict.get("AP");
 
-      this.width = width;
+    if (!(0, _primitives.isDict)(customAppearance)) {
+      return;
     }
-  }
 
-  setStyle(style) {
-    if (!(0, _primitives.isName)(style)) {
+    const normalAppearance = customAppearance.get("N");
+
+    if (!(0, _primitives.isDict)(normalAppearance)) {
       return;
     }
 
-    switch (style.name) {
-      case "S":
-        this.style = _util.AnnotationBorderStyleType.SOLID;
-        break;
+    const exportValues = normalAppearance.getKeys();
 
-      case "D":
-        this.style = _util.AnnotationBorderStyleType.DASHED;
-        break;
+    if (!exportValues.includes("Off")) {
+      exportValues.push("Off");
+    }
 
-      case "B":
-        this.style = _util.AnnotationBorderStyleType.BEVELED;
-        break;
+    if (exportValues.length !== 2) {
+      return;
+    }
 
-      case "I":
-        this.style = _util.AnnotationBorderStyleType.INSET;
-        break;
+    this.data.exportValue = exportValues[0] === "Off" ? exportValues[1] : exportValues[0];
+    this.checkedAppearance = normalAppearance.get(this.data.exportValue);
+    this.uncheckedAppearance = normalAppearance.get("Off") || null;
 
-      case "U":
-        this.style = _util.AnnotationBorderStyleType.UNDERLINE;
-        break;
+    this._streams.push(this.checkedAppearance);
 
-      default:
-        break;
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
     }
-  }
 
-  setDashArray(dashArray) {
-    if (Array.isArray(dashArray) && dashArray.length > 0) {
-      let isValid = true;
-      let allZeros = true;
+    this._fallbackFontDict = this.fallbackFontDict;
+  }
 
-      for (const element of dashArray) {
-        const validNumber = +element >= 0;
+  _processRadioButton(params) {
+    this.data.fieldValue = this.data.buttonValue = null;
+    const fieldParent = params.dict.get("Parent");
 
-        if (!validNumber) {
-          isValid = false;
-          break;
-        } else if (element > 0) {
-          allZeros = false;
-        }
-      }
+    if ((0, _primitives.isDict)(fieldParent)) {
+      this.parent = params.dict.getRaw("Parent");
+      const fieldParentValue = fieldParent.get("V");
 
-      if (isValid && !allZeros) {
-        this.dashArray = dashArray;
-      } else {
-        this.width = 0;
+      if ((0, _primitives.isName)(fieldParentValue)) {
+        this.data.fieldValue = this._decodeFormValue(fieldParentValue);
       }
-    } else if (dashArray) {
-      this.width = 0;
     }
-  }
 
-  setHorizontalCornerRadius(radius) {
-    if (Number.isInteger(radius)) {
-      this.horizontalCornerRadius = radius;
-    }
-  }
+    const appearanceStates = params.dict.get("AP");
 
-  setVerticalCornerRadius(radius) {
-    if (Number.isInteger(radius)) {
-      this.verticalCornerRadius = radius;
+    if (!(0, _primitives.isDict)(appearanceStates)) {
+      return;
     }
-  }
-
-}
 
-exports.AnnotationBorderStyle = AnnotationBorderStyle;
-
-class MarkupAnnotation extends Annotation {
-  constructor(parameters) {
-    super(parameters);
-    const dict = parameters.dict;
+    const normalAppearance = appearanceStates.get("N");
 
-    if (dict.has("IRT")) {
-      const rawIRT = dict.getRaw("IRT");
-      this.data.inReplyTo = (0, _primitives.isRef)(rawIRT) ? rawIRT.toString() : null;
-      const rt = dict.get("RT");
-      this.data.replyType = (0, _primitives.isName)(rt) ? rt.name : _util.AnnotationReplyType.REPLY;
+    if (!(0, _primitives.isDict)(normalAppearance)) {
+      return;
     }
 
-    if (this.data.replyType === _util.AnnotationReplyType.GROUP) {
-      const parent = dict.get("IRT");
-      this.data.title = (0, _util.stringToPDFString)(parent.get("T") || "");
-      this.setContents(parent.get("Contents"));
-      this.data.contents = this.contents;
-
-      if (!parent.has("CreationDate")) {
-        this.data.creationDate = null;
-      } else {
-        this.setCreationDate(parent.get("CreationDate"));
-        this.data.creationDate = this.creationDate;
-      }
-
-      if (!parent.has("M")) {
-        this.data.modificationDate = null;
-      } else {
-        this.setModificationDate(parent.get("M"));
-        this.data.modificationDate = this.modificationDate;
-      }
-
-      this.data.hasPopup = parent.has("Popup");
-
-      if (!parent.has("C")) {
-        this.data.color = null;
-      } else {
-        this.setColor(parent.getArray("C"));
-        this.data.color = this.color;
-      }
-    } else {
-      this.data.title = (0, _util.stringToPDFString)(dict.get("T") || "");
-      this.setCreationDate(dict.get("CreationDate"));
-      this.data.creationDate = this.creationDate;
-      this.data.hasPopup = dict.has("Popup");
-
-      if (!dict.has("C")) {
-        this.data.color = null;
+    for (const key of normalAppearance.getKeys()) {
+      if (key !== "Off") {
+        this.data.buttonValue = this._decodeFormValue(key);
+        break;
       }
     }
-  }
 
-  setCreationDate(creationDate) {
-    this.creationDate = (0, _util.isString)(creationDate) ? creationDate : null;
-  }
+    this.checkedAppearance = normalAppearance.get(this.data.buttonValue);
+    this.uncheckedAppearance = normalAppearance.get("Off") || null;
 
-  _setDefaultAppearance({
-    xref,
-    extra,
-    strokeColor,
-    fillColor,
-    blendMode,
-    pointsCallback
-  }) {
-    let minX = Number.MAX_VALUE;
-    let minY = Number.MAX_VALUE;
-    let maxX = Number.MIN_VALUE;
-    let maxY = Number.MIN_VALUE;
-    const buffer = ["q"];
+    this._streams.push(this.checkedAppearance);
 
-    if (extra) {
-      buffer.push(extra);
+    if (this.uncheckedAppearance) {
+      this._streams.push(this.uncheckedAppearance);
     }
 
-    if (strokeColor) {
-      buffer.push(`${strokeColor[0]} ${strokeColor[1]} ${strokeColor[2]} RG`);
-    }
+    this._fallbackFontDict = this.fallbackFontDict;
+  }
 
-    if (fillColor) {
-      buffer.push(`${fillColor[0]} ${fillColor[1]} ${fillColor[2]} rg`);
+  _processPushButton(params) {
+    if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) {
+      (0, _util.warn)("Push buttons without action dictionaries are not supported");
+      return;
     }
 
-    let pointsArray = this.data.quadPoints;
-
-    if (!pointsArray) {
-      pointsArray = [[{
-        x: this.rectangle[0],
-        y: this.rectangle[3]
-      }, {
-        x: this.rectangle[2],
-        y: this.rectangle[3]
-      }, {
-        x: this.rectangle[0],
-        y: this.rectangle[1]
-      }, {
-        x: this.rectangle[2],
-        y: this.rectangle[1]
-      }]];
-    }
+    this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA");
 
-    for (const points of pointsArray) {
-      const [mX, MX, mY, MY] = pointsCallback(buffer, points);
-      minX = Math.min(minX, mX);
-      maxX = Math.max(maxX, MX);
-      minY = Math.min(minY, mY);
-      maxY = Math.max(maxY, MY);
-    }
+    _obj.Catalog.parseDestDictionary({
+      destDict: params.dict,
+      resultObj: this.data,
+      docBaseUrl: params.pdfManager.docBaseUrl
+    });
+  }
 
-    buffer.push("Q");
-    const formDict = new _primitives.Dict(xref);
-    const appearanceStreamDict = new _primitives.Dict(xref);
-    appearanceStreamDict.set("Subtype", _primitives.Name.get("Form"));
-    const appearanceStream = new _stream.StringStream(buffer.join(" "));
-    appearanceStream.dict = appearanceStreamDict;
-    formDict.set("Fm0", appearanceStream);
-    const gsDict = new _primitives.Dict(xref);
+  getFieldObject() {
+    let type = "button";
+    let exportValues;
 
-    if (blendMode) {
-      gsDict.set("BM", _primitives.Name.get(blendMode));
+    if (this.data.checkBox) {
+      type = "checkbox";
+      exportValues = this.data.exportValue;
+    } else if (this.data.radioButton) {
+      type = "radiobutton";
+      exportValues = this.data.buttonValue;
     }
 
-    const stateDict = new _primitives.Dict(xref);
-    stateDict.set("GS0", gsDict);
-    const resources = new _primitives.Dict(xref);
-    resources.set("ExtGState", stateDict);
-    resources.set("XObject", formDict);
-    const appearanceDict = new _primitives.Dict(xref);
-    appearanceDict.set("Resources", resources);
-    const bbox = this.data.rect = [minX, minY, maxX, maxY];
-    appearanceDict.set("BBox", bbox);
-    this.appearance = new _stream.StringStream("/GS0 gs /Fm0 Do");
-    this.appearance.dict = appearanceDict;
+    return {
+      id: this.data.id,
+      value: this.data.fieldValue || "Off",
+      defaultValue: this.data.defaultFieldValue,
+      exportValues,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      type
+    };
+  }
 
-    this._streams.push(this.appearance, appearanceStream);
+  get fallbackFontDict() {
+    const dict = new _primitives.Dict();
+    dict.set("BaseFont", _primitives.Name.get("ZapfDingbats"));
+    dict.set("Type", _primitives.Name.get("FallbackType"));
+    dict.set("Subtype", _primitives.Name.get("FallbackType"));
+    dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding"));
+    return (0, _util.shadow)(this, "fallbackFontDict", dict);
   }
 
 }
 
-exports.MarkupAnnotation = MarkupAnnotation;
-
-class WidgetAnnotation extends Annotation {
+class ChoiceWidgetAnnotation extends WidgetAnnotation {
   constructor(params) {
     super(params);
-    const dict = params.dict;
-    const data = this.data;
-    this.ref = params.ref;
-    data.annotationType = _util.AnnotationType.WIDGET;
+    this.data.options = [];
+    const options = (0, _core_utils.getInheritableProperty)({
+      dict: params.dict,
+      key: "Opt"
+    });
 
-    if (data.fieldName === undefined) {
-      data.fieldName = this._constructFieldName(dict);
-    }
+    if (Array.isArray(options)) {
+      const xref = params.xref;
 
-    if (data.actions === undefined) {
-      data.actions = (0, _core_utils.collectActions)(params.xref, dict, _util.AnnotationActionEventType);
+      for (let i = 0, ii = options.length; i < ii; i++) {
+        const option = xref.fetchIfRef(options[i]);
+        const isOptionArray = Array.isArray(option);
+        this.data.options[i] = {
+          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),
+          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)
+        };
+      }
     }
 
-    const fieldValue = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "V",
-      getArray: true
-    });
-    data.fieldValue = this._decodeFormValue(fieldValue);
-    const defaultFieldValue = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DV",
-      getArray: true
-    });
-    data.defaultFieldValue = this._decodeFormValue(defaultFieldValue);
-    data.alternativeText = (0, _util.stringToPDFString)(dict.get("TU") || "");
-    const defaultAppearance = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DA"
-    }) || params.acroForm.get("DA");
-    this._defaultAppearance = (0, _util.isString)(defaultAppearance) ? defaultAppearance : "";
-    data.defaultAppearanceData = (0, _default_appearance.parseDefaultAppearance)(this._defaultAppearance);
-    const fieldType = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "FT"
-    });
-    data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
-    const localResources = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "DR"
-    });
-    const acroFormResources = params.acroForm.get("DR");
-    const appearanceResources = this.appearance && this.appearance.dict.get("Resources");
-    this._fieldResources = {
-      localResources,
-      acroFormResources,
-      appearanceResources,
-      mergedResources: _primitives.Dict.merge({
-        xref: params.xref,
-        dictArray: [localResources, appearanceResources, acroFormResources],
-        mergeSubDicts: true
-      })
-    };
-    data.fieldFlags = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "Ff"
-    });
-
-    if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
-      data.fieldFlags = 0;
+    if ((0, _util.isString)(this.data.fieldValue)) {
+      this.data.fieldValue = [this.data.fieldValue];
+    } else if (!this.data.fieldValue) {
+      this.data.fieldValue = [];
     }
 
-    data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
-    data.hidden = this._hasFlag(data.annotationFlags, _util.AnnotationFlag.HIDDEN);
-
-    if (data.fieldType === "Sig") {
-      data.fieldValue = null;
-      this.setFlags(_util.AnnotationFlag.HIDDEN);
-      data.hidden = true;
-    }
+    this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
+    this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
+    this._hasText = true;
   }
 
-  _decodeFormValue(formValue) {
-    if (Array.isArray(formValue)) {
-      return formValue.filter(item => (0, _util.isString)(item)).map(item => (0, 
_util.stringToPDFString)(item));
-    } else if ((0, _primitives.isName)(formValue)) {
-      return (0, _util.stringToPDFString)(formValue.name);
-    } else if ((0, _util.isString)(formValue)) {
-      return (0, _util.stringToPDFString)(formValue);
-    }
-
-    return null;
+  getFieldObject() {
+    const type = this.data.combo ? "combobox" : "listbox";
+    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;
+    return {
+      id: this.data.id,
+      value,
+      defaultValue: this.data.defaultFieldValue,
+      editable: !this.data.readOnly,
+      name: this.data.fieldName,
+      rect: this.data.rect,
+      numItems: this.data.fieldValue.length,
+      multipleSelection: this.data.multiSelect,
+      hidden: this.data.hidden,
+      actions: this.data.actions,
+      type
+    };
   }
 
-  hasFieldFlag(flag) {
-    return !!(this.data.fieldFlags & flag);
-  }
+}
 
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (renderForms) {
-      return Promise.resolve(new _operator_list.OperatorList());
+class TextAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    const DEFAULT_ICON_SIZE = 22;
+    super(parameters);
+    const dict = parameters.dict;
+    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 = dict.has("Name") ? dict.get("Name").name : "Note";
     }
 
-    if (!this._hasText) {
-      return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
+    if (dict.has("State")) {
+      this.data.state = dict.get("State") || null;
+      this.data.stateModel = dict.get("StateModel") || null;
+    } else {
+      this.data.state = null;
+      this.data.stateModel = null;
     }
+  }
 
-    return this._getAppearance(evaluator, task, annotationStorage).then(content => {
-      if (this.appearance && content === null) {
-        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-      }
+}
 
-      const operatorList = new _operator_list.OperatorList();
+class LinkAnnotation extends Annotation {
+  constructor(params) {
+    super(params);
+    this.data.annotationType = _util.AnnotationType.LINK;
+    const quadPoints = getQuadPoints(params.dict, this.rectangle);
 
-      if (!this._defaultAppearance || content === null) {
-        return operatorList;
-      }
+    if (quadPoints) {
+      this.data.quadPoints = quadPoints;
+    }
 
-      const matrix = [1, 0, 0, 1, 0, 0];
-      const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
-      const transform = getTransformMatrix(this.data.rect, bbox, matrix);
-      operatorList.addOp(_util.OPS.beginAnnotation, [this.data.rect, transform, matrix]);
-      const stream = new _stream.StringStream(content);
-      return evaluator.getOperatorList({
-        stream,
-        task,
-        resources: this._fieldResources.mergedResources,
-        operatorList
-      }).then(function () {
-        operatorList.addOp(_util.OPS.endAnnotation, []);
-        return operatorList;
-      });
+    _obj.Catalog.parseDestDictionary({
+      destDict: params.dict,
+      resultObj: this.data,
+      docBaseUrl: params.pdfManager.docBaseUrl
     });
   }
 
-  async save(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
+}
+
+class PopupAnnotation extends Annotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POPUP;
+    let parentItem = parameters.dict.get("Parent");
+
+    if (!parentItem) {
+      (0, _util.warn)("Popup annotation has a missing or invalid parent annotation.");
+      return;
     }
 
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
+    const parentSubtype = parentItem.get("Subtype");
+    this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
+    const rawParent = parameters.dict.getRaw("Parent");
+    this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
+    const parentRect = parentItem.getArray("Rect");
 
-    if (value === this.data.fieldValue || value === undefined) {
-      return null;
+    if (Array.isArray(parentRect) && parentRect.length === 4) {
+      this.data.parentRect = _util.Util.normalizeRect(parentRect);
+    } else {
+      this.data.parentRect = [0, 0, 0, 0];
     }
 
-    let appearance = await this._getAppearance(evaluator, task, annotationStorage);
+    const rt = parentItem.get("RT");
 
-    if (appearance === null) {
-      return null;
+    if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {
+      parentItem = parentItem.get("IRT");
     }
 
-    const {
-      xref
-    } = evaluator;
-    const dict = xref.fetchIfRef(this.ref);
+    if (!parentItem.has("M")) {
+      this.data.modificationDate = null;
+    } else {
+      this.setModificationDate(parentItem.get("M"));
+      this.data.modificationDate = this.modificationDate;
+    }
 
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
+    if (!parentItem.has("C")) {
+      this.data.color = null;
+    } else {
+      this.setColor(parentItem.getArray("C"));
+      this.data.color = this.color;
     }
 
-    const bbox = [0, 0, this.data.rect[2] - this.data.rect[0], this.data.rect[3] - this.data.rect[1]];
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value
-    };
-    const newRef = xref.getNewRef();
-    const AP = new _primitives.Dict(xref);
-    AP.set("N", newRef);
-    const encrypt = xref.encrypt;
-    let originalTransform = null;
-    let newTransform = null;
+    if (!this.viewable) {
+      const parentFlags = parentItem.get("F");
 
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-      newTransform = encrypt.createCipherTransform(newRef.num, newRef.gen);
-      appearance = newTransform.encryptString(appearance);
+      if (this._isViewable(parentFlags)) {
+        this.setFlags(parentFlags);
+      }
     }
 
-    dict.set("V", (0, _util.isAscii)(value) ? value : (0, _util.stringToUTF16BEString)(value));
-    dict.set("AP", AP);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    const appearanceDict = new _primitives.Dict(xref);
-    appearanceDict.set("Length", appearance.length);
-    appearanceDict.set("Subtype", _primitives.Name.get("Form"));
-    appearanceDict.set("Resources", this._getSaveFieldResources(xref));
-    appearanceDict.set("BBox", bbox);
-    const bufferOriginal = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, bufferOriginal, originalTransform);
-    bufferOriginal.push("\nendobj\n");
-    const bufferNew = [`${newRef.num} ${newRef.gen} obj\n`];
-    (0, _writer.writeDict)(appearanceDict, bufferNew, newTransform);
-    bufferNew.push(" stream\n");
-    bufferNew.push(appearance);
-    bufferNew.push("\nendstream\nendobj\n");
-    return [{
-      ref: this.ref,
-      data: bufferOriginal.join(""),
-      xfa
-    }, {
-      ref: newRef,
-      data: bufferNew.join(""),
-      xfa: null
-    }];
+    this.data.title = (0, _util.stringToPDFString)(parentItem.get("T") || "");
+    this.data.contents = (0, _util.stringToPDFString)(parentItem.get("Contents") || "");
   }
 
-  async _getAppearance(evaluator, task, annotationStorage) {
-    const isPassword = this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD);
+}
 
-    if (!annotationStorage || isPassword) {
-      return null;
-    }
+class FreeTextAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.FREETEXT;
+  }
 
-    const storageEntry = annotationStorage.get(this.data.id);
-    let value = storageEntry && storageEntry.value;
+}
 
-    if (value === undefined) {
-      return null;
-    }
+class LineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.LINE;
+    this.data.lineCoordinates = _util.Util.normalizeRect(parameters.dict.getArray("L"));
+  }
 
-    value = value.trim();
+}
 
-    if (value === "") {
-      return "";
-    }
+class SquareAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.SQUARE;
+  }
 
-    let lineCount = -1;
+}
 
-    if (this.data.multiLine) {
-      lineCount = value.split(/\r\n|\r|\n/).length;
-    }
+class CircleAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.CIRCLE;
+  }
 
-    const defaultPadding = 2;
-    const hPadding = defaultPadding;
-    const totalHeight = this.data.rect[3] - this.data.rect[1];
-    const totalWidth = this.data.rect[2] - this.data.rect[0];
+}
+
+class PolylineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POLYLINE;
+    this.data.vertices = [];
+    const rawVertices = parameters.dict.getArray("Vertices");
 
-    if (!this._defaultAppearance) {
-      this.data.defaultAppearanceData = (0, 
_default_appearance.parseDefaultAppearance)(this._defaultAppearance = "/Helvetica 0 Tf 0 g");
+    if (!Array.isArray(rawVertices)) {
+      return;
     }
 
-    const [defaultAppearance, fontSize] = this._computeFontSize(totalHeight, lineCount);
+    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {
+      this.data.vertices.push({
+        x: rawVertices[i],
+        y: rawVertices[i + 1]
+      });
+    }
+  }
 
-    const font = await this._getFontData(evaluator, task);
-    let descent = font.descent;
+}
 
-    if (isNaN(descent)) {
-      descent = 0;
-    }
+class PolygonAnnotation extends PolylineAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.POLYGON;
+  }
 
-    const vPadding = defaultPadding + Math.abs(descent) * fontSize;
-    const alignment = this.data.textAlignment;
+}
 
-    if (this.data.multiLine) {
-      return this._getMultilineAppearance(defaultAppearance, value, font, fontSize, totalWidth, totalHeight, 
alignment, hPadding, vPadding);
-    }
+class CaretAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.CARET;
+  }
 
-    const encodedString = font.encodeString(value).join("");
+}
 
-    if (this.data.comb) {
-      return this._getCombAppearance(defaultAppearance, font, encodedString, totalWidth, hPadding, vPadding);
-    }
+class InkAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.INK;
+    this.data.inkLists = [];
+    const rawInkLists = parameters.dict.getArray("InkList");
 
-    if (alignment === 0 || alignment > 2) {
-      return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm (${(0, 
_util.escapeString)(encodedString)}) Tj` + " ET Q EMC";
+    if (!Array.isArray(rawInkLists)) {
+      return;
     }
 
-    const renderedText = this._renderText(encodedString, font, fontSize, totalWidth, alignment, hPadding, 
vPadding);
-
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 0 Tm ${renderedText}` + " ET Q EMC";
-  }
+    const xref = parameters.xref;
 
-  async _getFontData(evaluator, task) {
-    const operatorList = new _operator_list.OperatorList();
-    const initialState = {
-      font: null,
+    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {
+      this.data.inkLists.push([]);
 
-      clone() {
-        return this;
+      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {
+        this.data.inkLists[i].push({
+          x: xref.fetchIfRef(rawInkLists[i][j]),
+          y: xref.fetchIfRef(rawInkLists[i][j + 1])
+        });
       }
-
-    };
-    const {
-      fontName,
-      fontSize
-    } = this.data.defaultAppearanceData;
-    await evaluator.handleSetFont(this._fieldResources.mergedResources, [fontName && 
_primitives.Name.get(fontName), fontSize], null, operatorList, task, initialState, null);
-    return initialState.font;
+    }
   }
 
-  _computeFontSize(height, lineCount) {
-    let {
-      fontSize
-    } = this.data.defaultAppearanceData;
+}
 
-    if (!fontSize) {
-      const roundWithOneDigit = x => Math.round(x * 10) / 10;
+class HighlightAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.HIGHLIGHT;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
-      const FONT_FACTOR = 0.8;
+    if (quadPoints) {
+      if (!this.appearance) {
+        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];
 
-      if (lineCount === -1) {
-        fontSize = roundWithOneDigit(FONT_FACTOR * height);
-      } else {
-        fontSize = 10;
-        let lineHeight = fontSize / FONT_FACTOR;
-        let numberOfLines = Math.round(height / lineHeight);
-        numberOfLines = Math.max(numberOfLines, lineCount);
-        lineHeight = height / numberOfLines;
-        fontSize = roundWithOneDigit(FONT_FACTOR * lineHeight);
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          fillColor,
+          blendMode: "Multiply",
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[0].x} ${points[0].y} m`);
+            buffer.push(`${points[1].x} ${points[1].y} l`);
+            buffer.push(`${points[3].x} ${points[3].y} l`);
+            buffer.push(`${points[2].x} ${points[2].y} l`);
+            buffer.push("f");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
       }
-
-      const {
-        fontName,
-        fontColor
-      } = this.data.defaultAppearanceData;
-      this._defaultAppearance = (0, _default_appearance.createDefaultAppearance)({
-        fontSize,
-        fontName,
-        fontColor
-      });
+    } else {
+      this.data.hasPopup = false;
     }
-
-    return [this._defaultAppearance, fontSize];
   }
 
-  _renderText(text, font, fontSize, totalWidth, alignment, hPadding, vPadding) {
-    const glyphs = font.charsToGlyphs(text);
-    const scale = fontSize / 1000;
-    let width = 0;
+}
 
-    for (const glyph of glyphs) {
-      width += glyph.width * scale;
-    }
+class UnderlineAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.UNDERLINE;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
-    let shift;
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
 
-    if (alignment === 1) {
-      shift = (totalWidth - width) / 2;
-    } else if (alignment === 2) {
-      shift = totalWidth - width - hPadding;
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${points[2].x} ${points[2].y} m`);
+            buffer.push(`${points[3].x} ${points[3].y} l`);
+            buffer.push("S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
     } else {
-      shift = hPadding;
+      this.data.hasPopup = false;
     }
-
-    shift = shift.toFixed(2);
-    vPadding = vPadding.toFixed(2);
-    return `${shift} ${vPadding} Td (${(0, _util.escapeString)(text)}) Tj`;
   }
 
-  _getSaveFieldResources(xref) {
-    const {
-      localResources,
-      appearanceResources,
-      acroFormResources
-    } = this._fieldResources;
-    const fontName = this.data.defaultAppearanceData && this.data.defaultAppearanceData.fontName;
+}
 
-    if (!fontName) {
-      return localResources || _primitives.Dict.empty;
-    }
+class SquigglyAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.SQUIGGLY;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
-    for (const resources of [localResources, appearanceResources]) {
-      if (resources instanceof _primitives.Dict) {
-        const localFont = resources.get("Font");
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
 
-        if (localFont instanceof _primitives.Dict && localFont.has(fontName)) {
-          return resources;
-        }
-      }
-    }
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            const dy = (points[0].y - points[2].y) / 6;
+            let shift = dy;
+            let x = points[2].x;
+            const y = points[2].y;
+            const xEnd = points[3].x;
+            buffer.push(`${x} ${y + shift} m`);
 
-    if (acroFormResources instanceof _primitives.Dict) {
-      const acroFormFont = acroFormResources.get("Font");
+            do {
+              x += 2;
+              shift = shift === 0 ? dy : 0;
+              buffer.push(`${x} ${y + shift} l`);
+            } while (x < xEnd);
 
-      if (acroFormFont instanceof _primitives.Dict && acroFormFont.has(fontName)) {
-        const subFontDict = new _primitives.Dict(xref);
-        subFontDict.set(fontName, acroFormFont.getRaw(fontName));
-        const subResourcesDict = new _primitives.Dict(xref);
-        subResourcesDict.set("Font", subFontDict);
-        return _primitives.Dict.merge({
-          xref,
-          dictArray: [subResourcesDict, localResources],
-          mergeSubDicts: true
+            buffer.push("S");
+            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];
+          }
         });
       }
+    } else {
+      this.data.hasPopup = false;
     }
-
-    return localResources || _primitives.Dict.empty;
-  }
-
-  getFieldObject() {
-    if (this.data.fieldType === "Sig") {
-      return {
-        id: this.data.id,
-        value: null,
-        type: "signature"
-      };
-    }
-
-    return null;
   }
 
 }
 
-class TextWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this._hasText = true;
-    const dict = params.dict;
-
-    if (!(0, _util.isString)(this.data.fieldValue)) {
-      this.data.fieldValue = "";
-    }
+class StrikeOutAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.STRIKEOUT;
+    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
 
-    let alignment = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "Q"
-    });
+    if (quadPoints) {
+      if (!this.appearance) {
+        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
 
-    if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
-      alignment = null;
+        this._setDefaultAppearance({
+          xref: parameters.xref,
+          extra: "[] 0 d 1 w",
+          strokeColor,
+          pointsCallback: (buffer, points) => {
+            buffer.push(`${(points[0].x + points[2].x) / 2}` + ` ${(points[0].y + points[2].y) / 2} m`);
+            buffer.push(`${(points[1].x + points[3].x) / 2}` + ` ${(points[1].y + points[3].y) / 2} l`);
+            buffer.push("S");
+            return [points[0].x, points[1].x, points[3].y, points[1].y];
+          }
+        });
+      }
+    } else {
+      this.data.hasPopup = false;
     }
+  }
 
-    this.data.textAlignment = alignment;
-    let maximumLength = (0, _core_utils.getInheritableProperty)({
-      dict,
-      key: "MaxLen"
-    });
-
-    if (!Number.isInteger(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;
+class StampAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    this.data.annotationType = _util.AnnotationType.STAMP;
   }
 
-  _getCombAppearance(defaultAppearance, font, text, width, hPadding, vPadding) {
-    const combWidth = (width / this.data.maxLen).toFixed(2);
-    const buf = [];
-    const positions = font.getCharPositions(text);
-
-    for (const [start, end] of positions) {
-      buf.push(`(${(0, _util.escapeString)(text.substring(start, end))}) Tj`);
-    }
+}
 
-    const renderedComb = buf.join(` ${combWidth} 0 Td `);
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 ${hPadding} ${vPadding} Tm ${renderedComb}` + " 
ET Q EMC";
+class FileAttachmentAnnotation extends MarkupAnnotation {
+  constructor(parameters) {
+    super(parameters);
+    const file = new _obj.FileSpec(parameters.dict.get("FS"), parameters.xref);
+    this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
+    this.data.file = file.serializable;
   }
 
-  _getMultilineAppearance(defaultAppearance, text, font, fontSize, width, height, alignment, hPadding, 
vPadding) {
-    const lines = text.split(/\r\n|\r|\n/);
-    const buf = [];
-    const totalWidth = width - 2 * hPadding;
+}
 
-    for (const line of lines) {
-      const chunks = this._splitLine(line, font, fontSize, totalWidth);
+/***/ }),
+/* 26 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-      for (const chunk of chunks) {
-        const padding = buf.length === 0 ? hPadding : 0;
-        buf.push(this._renderText(chunk, font, fontSize, width, alignment, padding, -fontSize));
-      }
-    }
 
-    const renderedText = buf.join("\n");
-    return "/Tx BMC q BT " + defaultAppearance + ` 1 0 0 1 0 ${height} Tm ${renderedText}` + " ET Q EMC";
-  }
 
-  _splitLine(line, font, fontSize, width) {
-    line = font.encodeString(line).join("");
-    const glyphs = font.charsToGlyphs(line);
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.createDefaultAppearance = createDefaultAppearance;
+exports.parseDefaultAppearance = parseDefaultAppearance;
 
-    if (glyphs.length <= 1) {
-      return [line];
-    }
+var _primitives = __w_pdfjs_require__(5);
 
-    const positions = font.getCharPositions(line);
-    const scale = fontSize / 1000;
-    const chunks = [];
-    let lastSpacePosInStringStart = -1,
-        lastSpacePosInStringEnd = -1,
-        lastSpacePos = -1,
-        startChunk = 0,
-        currentWidth = 0;
+var _util = __w_pdfjs_require__(2);
 
-    for (let i = 0, ii = glyphs.length; i < ii; i++) {
-      const [start, end] = positions[i];
-      const glyph = glyphs[i];
-      const glyphWidth = glyph.width * scale;
+var _colorspace = __w_pdfjs_require__(23);
 
-      if (glyph.unicode === " ") {
-        if (currentWidth + glyphWidth > width) {
-          chunks.push(line.substring(startChunk, start));
-          startChunk = start;
-          currentWidth = glyphWidth;
-          lastSpacePosInStringStart = -1;
-          lastSpacePos = -1;
-        } else {
-          currentWidth += glyphWidth;
-          lastSpacePosInStringStart = start;
-          lastSpacePosInStringEnd = end;
-          lastSpacePos = i;
-        }
-      } else {
-        if (currentWidth + glyphWidth > width) {
-          if (lastSpacePosInStringStart !== -1) {
-            chunks.push(line.substring(startChunk, lastSpacePosInStringEnd));
-            startChunk = lastSpacePosInStringEnd;
-            i = lastSpacePos + 1;
-            lastSpacePosInStringStart = -1;
-            currentWidth = 0;
-          } else {
-            chunks.push(line.substring(startChunk, start));
-            startChunk = start;
-            currentWidth = glyphWidth;
-          }
-        } else {
-          currentWidth += glyphWidth;
-        }
-      }
-    }
+var _core_utils = __w_pdfjs_require__(8);
 
-    if (startChunk < line.length) {
-      chunks.push(line.substring(startChunk, line.length));
-    }
+var _evaluator = __w_pdfjs_require__(27);
 
-    return chunks;
+var _stream = __w_pdfjs_require__(12);
+
+class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
+  constructor(str) {
+    super(new _stream.StringStream(str));
   }
 
-  getFieldObject() {
-    return {
-      id: this.data.id,
-      value: this.data.fieldValue,
-      defaultValue: this.data.defaultFieldValue,
-      multiline: this.data.multiLine,
-      password: this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD),
-      charLimit: this.data.maxLen,
-      comb: this.data.comb,
-      editable: !this.data.readOnly,
-      hidden: this.data.hidden,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      actions: this.data.actions,
-      type: "text"
+  parse() {
+    const operation = {
+      fn: 0,
+      args: []
+    };
+    const result = {
+      fontSize: 0,
+      fontName: _primitives.Name.get(""),
+      fontColor: new Uint8ClampedArray([0, 0, 0])
     };
-  }
 
-}
+    try {
+      while (true) {
+        operation.args.length = 0;
 
-class ButtonWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this.checkedAppearance = null;
-    this.uncheckedAppearance = null;
-    this.data.checkBox = !this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.radioButton = this.hasFieldFlag(_util.AnnotationFieldFlag.RADIO) && 
!this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.pushButton = this.hasFieldFlag(_util.AnnotationFieldFlag.PUSHBUTTON);
-    this.data.isTooltipOnly = false;
+        if (!this.read(operation)) {
+          break;
+        }
 
-    if (this.data.checkBox) {
-      this._processCheckBox(params);
-    } else if (this.data.radioButton) {
-      this._processRadioButton(params);
-    } else if (this.data.pushButton) {
-      this._processPushButton(params);
-    } else {
-      (0, _util.warn)("Invalid field flags for button widget annotation");
-    }
-  }
+        if (this.savedStatesDepth !== 0) {
+          continue;
+        }
 
-  getOperatorList(evaluator, task, renderForms, annotationStorage) {
-    if (this.data.pushButton) {
-      return super.getOperatorList(evaluator, task, false, annotationStorage);
-    }
+        const {
+          fn,
+          args
+        } = operation;
 
-    if (annotationStorage) {
-      const storageEntry = annotationStorage.get(this.data.id);
-      const value = storageEntry && storageEntry.value;
+        switch (fn | 0) {
+          case _util.OPS.setFont:
+            const [fontName, fontSize] = args;
 
-      if (value === undefined) {
-        return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-      }
+            if ((0, _primitives.isName)(fontName)) {
+              result.fontName = fontName;
+            }
 
-      let appearance;
+            if (typeof fontSize === "number" && fontSize > 0) {
+              result.fontSize = fontSize;
+            }
 
-      if (value) {
-        appearance = this.checkedAppearance;
-      } else {
-        appearance = this.uncheckedAppearance;
-      }
+            break;
 
-      if (appearance) {
-        const savedAppearance = this.appearance;
-        this.appearance = appearance;
-        const operatorList = super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-        this.appearance = savedAppearance;
-        return operatorList;
-      }
+          case _util.OPS.setFillRGBColor:
+            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
 
-      return Promise.resolve(new _operator_list.OperatorList());
-    }
+            break;
 
-    return super.getOperatorList(evaluator, task, renderForms, annotationStorage);
-  }
+          case _util.OPS.setFillGray:
+            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
 
-  async save(evaluator, task, annotationStorage) {
-    if (this.data.checkBox) {
-      return this._saveCheckbox(evaluator, task, annotationStorage);
-    }
+            break;
 
-    if (this.data.radioButton) {
-      return this._saveRadioButton(evaluator, task, annotationStorage);
+          case _util.OPS.setFillColorSpace:
+            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
+
+            break;
+        }
+      }
+    } catch (reason) {
+      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
     }
 
-    return null;
+    return result;
   }
 
-  async _saveCheckbox(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
-    }
+}
 
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
+function parseDefaultAppearance(str) {
+  return new DefaultAppearanceEvaluator(str).parse();
+}
 
-    if (value === undefined) {
-      return null;
-    }
+function createDefaultAppearance({
+  fontSize,
+  fontName,
+  fontColor
+}) {
+  let colorCmd;
 
-    const defaultValue = this.data.fieldValue && this.data.fieldValue !== "Off";
+  if (fontColor.every(c => c === 0)) {
+    colorCmd = "0 g";
+  } else {
+    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
+  }
 
-    if (defaultValue === value) {
-      return null;
-    }
+  return `/${(0, _core_utils.escapePDFName)(fontName.name)} ${fontSize} Tf ${colorCmd}`;
+}
 
-    const dict = evaluator.xref.fetchIfRef(this.ref);
+/***/ }),
+/* 27 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
-    }
 
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value: value ? this.data.exportValue : ""
-    };
 
-    const name = _primitives.Name.get(value ? this.data.exportValue : "Off");
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
 
-    dict.set("V", name);
-    dict.set("AS", name);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    const encrypt = evaluator.xref.encrypt;
-    let originalTransform = null;
+var _util = __w_pdfjs_require__(2);
 
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-    }
+var _cmap = __w_pdfjs_require__(28);
 
-    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, buffer, originalTransform);
-    buffer.push("\nendobj\n");
-    return [{
-      ref: this.ref,
-      data: buffer.join(""),
-      xfa
-    }];
-  }
+var _primitives = __w_pdfjs_require__(5);
 
-  async _saveRadioButton(evaluator, task, annotationStorage) {
-    if (!annotationStorage) {
-      return null;
-    }
+var _fonts = __w_pdfjs_require__(29);
 
-    const storageEntry = annotationStorage.get(this.data.id);
-    const value = storageEntry && storageEntry.value;
+var _encodings = __w_pdfjs_require__(32);
 
-    if (value === undefined) {
-      return null;
-    }
+var _core_utils = __w_pdfjs_require__(8);
 
-    const defaultValue = this.data.fieldValue === this.data.buttonValue;
+var _unicode = __w_pdfjs_require__(35);
 
-    if (defaultValue === value) {
-      return null;
-    }
+var _standard_fonts = __w_pdfjs_require__(34);
 
-    const dict = evaluator.xref.fetchIfRef(this.ref);
+var _pattern = __w_pdfjs_require__(38);
 
-    if (!(0, _primitives.isDict)(dict)) {
-      return null;
-    }
+var _function = __w_pdfjs_require__(39);
 
-    const xfa = {
-      path: (0, _util.stringToPDFString)(dict.get("T") || ""),
-      value: value ? this.data.buttonValue : ""
-    };
+var _parser = __w_pdfjs_require__(11);
 
-    const name = _primitives.Name.get(value ? this.data.buttonValue : "Off");
+var _image_utils = __w_pdfjs_require__(24);
 
-    let parentBuffer = null;
-    const encrypt = evaluator.xref.encrypt;
+var _bidi = __w_pdfjs_require__(41);
 
-    if (value) {
-      if ((0, _primitives.isRef)(this.parent)) {
-        const parent = evaluator.xref.fetch(this.parent);
-        let parentTransform = null;
+var _colorspace = __w_pdfjs_require__(23);
 
-        if (encrypt) {
-          parentTransform = encrypt.createCipherTransform(this.parent.num, this.parent.gen);
-        }
+var _stream = __w_pdfjs_require__(12);
 
-        parent.set("V", name);
-        parentBuffer = [`${this.parent.num} ${this.parent.gen} obj\n`];
-        (0, _writer.writeDict)(parent, parentBuffer, parentTransform);
-        parentBuffer.push("\nendobj\n");
-      } else if ((0, _primitives.isDict)(this.parent)) {
-        this.parent.set("V", name);
-      }
-    }
+var _glyphlist = __w_pdfjs_require__(33);
 
-    dict.set("AS", name);
-    dict.set("M", `D:${(0, _util.getModificationDate)()}`);
-    let originalTransform = null;
+var _metrics = __w_pdfjs_require__(42);
 
-    if (encrypt) {
-      originalTransform = encrypt.createCipherTransform(this.ref.num, this.ref.gen);
-    }
+var _murmurhash = __w_pdfjs_require__(43);
 
-    const buffer = [`${this.ref.num} ${this.ref.gen} obj\n`];
-    (0, _writer.writeDict)(dict, buffer, originalTransform);
-    buffer.push("\nendobj\n");
-    const newRefs = [{
-      ref: this.ref,
-      data: buffer.join(""),
-      xfa
-    }];
+var _operator_list = __w_pdfjs_require__(44);
 
-    if (parentBuffer !== null) {
-      newRefs.push({
-        ref: this.parent,
-        data: parentBuffer.join(""),
-        xfa: null
-      });
-    }
+var _image = __w_pdfjs_require__(45);
 
-    return newRefs;
-  }
+const DefaultPartialEvaluatorOptions = Object.freeze({
+  maxImageSize: -1,
+  disableFontFace: false,
+  ignoreErrors: false,
+  isEvalSupported: true,
+  fontExtraProperties: false
+});
+const PatternType = {
+  TILING: 1,
+  SHADING: 2
+};
+const deferred = Promise.resolve();
 
-  _processCheckBox(params) {
-    const customAppearance = params.dict.get("AP");
+function normalizeBlendMode(value, parsingArray = false) {
+  if (Array.isArray(value)) {
+    for (let i = 0, ii = value.length; i < ii; i++) {
+      const maybeBM = normalizeBlendMode(value[i], true);
 
-    if (!(0, _primitives.isDict)(customAppearance)) {
-      return;
+      if (maybeBM) {
+        return maybeBM;
+      }
     }
 
-    const normalAppearance = customAppearance.get("N");
+    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
+    return "source-over";
+  }
 
-    if (!(0, _primitives.isDict)(normalAppearance)) {
-      return;
+  if (!(0, _primitives.isName)(value)) {
+    if (parsingArray) {
+      return null;
     }
 
-    const exportValues = normalAppearance.getKeys();
-
-    if (!exportValues.includes("Off")) {
-      exportValues.push("Off");
-    }
+    return "source-over";
+  }
 
-    if (exportValues.length !== 2) {
-      return;
-    }
+  switch (value.name) {
+    case "Normal":
+    case "Compatible":
+      return "source-over";
 
-    this.data.exportValue = exportValues[0] === "Off" ? exportValues[1] : exportValues[0];
-    this.checkedAppearance = normalAppearance.get(this.data.exportValue);
-    this.uncheckedAppearance = normalAppearance.get("Off") || null;
+    case "Multiply":
+      return "multiply";
 
-    this._streams.push(this.checkedAppearance);
+    case "Screen":
+      return "screen";
 
-    if (this.uncheckedAppearance) {
-      this._streams.push(this.uncheckedAppearance);
-    }
+    case "Overlay":
+      return "overlay";
 
-    this._fallbackFontDict = this.fallbackFontDict;
-  }
+    case "Darken":
+      return "darken";
 
-  _processRadioButton(params) {
-    this.data.fieldValue = this.data.buttonValue = null;
-    const fieldParent = params.dict.get("Parent");
+    case "Lighten":
+      return "lighten";
 
-    if ((0, _primitives.isDict)(fieldParent)) {
-      this.parent = params.dict.getRaw("Parent");
-      const fieldParentValue = fieldParent.get("V");
+    case "ColorDodge":
+      return "color-dodge";
 
-      if ((0, _primitives.isName)(fieldParentValue)) {
-        this.data.fieldValue = this._decodeFormValue(fieldParentValue);
-      }
-    }
+    case "ColorBurn":
+      return "color-burn";
 
-    const appearanceStates = params.dict.get("AP");
+    case "HardLight":
+      return "hard-light";
 
-    if (!(0, _primitives.isDict)(appearanceStates)) {
-      return;
-    }
+    case "SoftLight":
+      return "soft-light";
 
-    const normalAppearance = appearanceStates.get("N");
+    case "Difference":
+      return "difference";
 
-    if (!(0, _primitives.isDict)(normalAppearance)) {
-      return;
-    }
+    case "Exclusion":
+      return "exclusion";
 
-    for (const key of normalAppearance.getKeys()) {
-      if (key !== "Off") {
-        this.data.buttonValue = this._decodeFormValue(key);
-        break;
-      }
-    }
+    case "Hue":
+      return "hue";
 
-    this.checkedAppearance = normalAppearance.get(this.data.buttonValue);
-    this.uncheckedAppearance = normalAppearance.get("Off") || null;
+    case "Saturation":
+      return "saturation";
 
-    this._streams.push(this.checkedAppearance);
+    case "Color":
+      return "color";
 
-    if (this.uncheckedAppearance) {
-      this._streams.push(this.uncheckedAppearance);
-    }
+    case "Luminosity":
+      return "luminosity";
+  }
 
-    this._fallbackFontDict = this.fallbackFontDict;
+  if (parsingArray) {
+    return null;
   }
 
-  _processPushButton(params) {
-    if (!params.dict.has("A") && !params.dict.has("AA") && !this.data.alternativeText) {
-      (0, _util.warn)("Push buttons without action dictionaries are not supported");
-      return;
-    }
+  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
+  return "source-over";
+}
 
-    this.data.isTooltipOnly = !params.dict.has("A") && !params.dict.has("AA");
+class TimeSlotManager {
+  static get TIME_SLOT_DURATION_MS() {
+    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
+  }
 
-    _obj.Catalog.parseDestDictionary({
-      destDict: params.dict,
-      resultObj: this.data,
-      docBaseUrl: params.pdfManager.docBaseUrl
-    });
+  static get CHECK_TIME_EVERY() {
+    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
   }
 
-  getFieldObject() {
-    let type = "button";
-    let exportValues;
+  constructor() {
+    this.reset();
+  }
 
-    if (this.data.checkBox) {
-      type = "checkbox";
-      exportValues = this.data.exportValue;
-    } else if (this.data.radioButton) {
-      type = "radiobutton";
-      exportValues = this.data.buttonValue;
+  check() {
+    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
+      return false;
     }
 
-    return {
-      id: this.data.id,
-      value: this.data.fieldValue || "Off",
-      defaultValue: this.data.defaultFieldValue,
-      exportValues,
-      editable: !this.data.readOnly,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      hidden: this.data.hidden,
-      actions: this.data.actions,
-      type
-    };
+    this.checked = 0;
+    return this.endTime <= Date.now();
   }
 
-  get fallbackFontDict() {
-    const dict = new _primitives.Dict();
-    dict.set("BaseFont", _primitives.Name.get("ZapfDingbats"));
-    dict.set("Type", _primitives.Name.get("FallbackType"));
-    dict.set("Subtype", _primitives.Name.get("FallbackType"));
-    dict.set("Encoding", _primitives.Name.get("ZapfDingbatsEncoding"));
-    return (0, _util.shadow)(this, "fallbackFontDict", dict);
+  reset() {
+    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
+    this.checked = 0;
   }
 
 }
 
-class ChoiceWidgetAnnotation extends WidgetAnnotation {
-  constructor(params) {
-    super(params);
-    this.data.options = [];
-    const options = (0, _core_utils.getInheritableProperty)({
-      dict: params.dict,
-      key: "Opt"
-    });
-
-    if (Array.isArray(options)) {
-      const xref = params.xref;
-
-      for (let i = 0, ii = options.length; i < ii; i++) {
-        const option = xref.fetchIfRef(options[i]);
-        const isOptionArray = Array.isArray(option);
-        this.data.options[i] = {
-          exportValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[0]) : option),
-          displayValue: this._decodeFormValue(isOptionArray ? xref.fetchIfRef(option[1]) : option)
-        };
-      }
-    }
-
-    if ((0, _util.isString)(this.data.fieldValue)) {
-      this.data.fieldValue = [this.data.fieldValue];
-    } else if (!this.data.fieldValue) {
-      this.data.fieldValue = [];
-    }
-
-    this.data.combo = this.hasFieldFlag(_util.AnnotationFieldFlag.COMBO);
-    this.data.multiSelect = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTISELECT);
-    this._hasText = true;
+class PartialEvaluator {
+  constructor({
+    xref,
+    handler,
+    pageIndex,
+    idFactory,
+    fontCache,
+    builtInCMapCache,
+    globalImageCache,
+    options = null
+  }) {
+    this.xref = xref;
+    this.handler = handler;
+    this.pageIndex = pageIndex;
+    this.idFactory = idFactory;
+    this.fontCache = fontCache;
+    this.builtInCMapCache = builtInCMapCache;
+    this.globalImageCache = globalImageCache;
+    this.options = options || DefaultPartialEvaluatorOptions;
+    this.parsingType3Font = false;
+    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
   }
 
-  getFieldObject() {
-    const type = this.data.combo ? "combobox" : "listbox";
-    const value = this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : null;
-    return {
-      id: this.data.id,
-      value,
-      defaultValue: this.data.defaultFieldValue,
-      editable: !this.data.readOnly,
-      name: this.data.fieldName,
-      rect: this.data.rect,
-      numItems: this.data.fieldValue.length,
-      multipleSelection: this.data.multiSelect,
-      hidden: this.data.hidden,
-      actions: this.data.actions,
-      items: this.data.options,
-      type
-    };
+  get _pdfFunctionFactory() {
+    const pdfFunctionFactory = new _function.PDFFunctionFactory({
+      xref: this.xref,
+      isEvalSupported: this.options.isEvalSupported
+    });
+    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
   }
 
-}
-
-class TextAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    const DEFAULT_ICON_SIZE = 22;
-    super(parameters);
-    const dict = parameters.dict;
-    this.data.annotationType = _util.AnnotationType.TEXT;
+  clone(newOptions = DefaultPartialEvaluatorOptions) {
+    var newEvaluator = Object.create(this);
+    newEvaluator.options = newOptions;
+    return newEvaluator;
+  }
 
-    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 = dict.has("Name") ? dict.get("Name").name : "Note";
+  hasBlendModes(resources, nonBlendModesSet) {
+    if (!(resources instanceof _primitives.Dict)) {
+      return false;
     }
 
-    if (dict.has("State")) {
-      this.data.state = dict.get("State") || null;
-      this.data.stateModel = dict.get("StateModel") || null;
-    } else {
-      this.data.state = null;
-      this.data.stateModel = null;
+    if (resources.objId && nonBlendModesSet.has(resources.objId)) {
+      return false;
     }
-  }
-
-}
 
-class LinkAnnotation extends Annotation {
-  constructor(params) {
-    super(params);
-    this.data.annotationType = _util.AnnotationType.LINK;
-    const quadPoints = getQuadPoints(params.dict, this.rectangle);
+    const processed = new _primitives.RefSet(nonBlendModesSet);
 
-    if (quadPoints) {
-      this.data.quadPoints = quadPoints;
+    if (resources.objId) {
+      processed.put(resources.objId);
     }
 
-    _obj.Catalog.parseDestDictionary({
-      destDict: params.dict,
-      resultObj: this.data,
-      docBaseUrl: params.pdfManager.docBaseUrl
-    });
-  }
-
-}
+    var nodes = [resources],
+        xref = this.xref;
 
-class PopupAnnotation extends Annotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POPUP;
-    let parentItem = parameters.dict.get("Parent");
+    while (nodes.length) {
+      var node = nodes.shift();
+      var graphicStates = node.get("ExtGState");
 
-    if (!parentItem) {
-      (0, _util.warn)("Popup annotation has a missing or invalid parent annotation.");
-      return;
-    }
+      if (graphicStates instanceof _primitives.Dict) {
+        for (let graphicState of graphicStates.getRawValues()) {
+          if (graphicState instanceof _primitives.Ref) {
+            if (processed.has(graphicState)) {
+              continue;
+            }
 
-    const parentSubtype = parentItem.get("Subtype");
-    this.data.parentType = (0, _primitives.isName)(parentSubtype) ? parentSubtype.name : null;
-    const rawParent = parameters.dict.getRaw("Parent");
-    this.data.parentId = (0, _primitives.isRef)(rawParent) ? rawParent.toString() : null;
-    const parentRect = parentItem.getArray("Rect");
+            try {
+              graphicState = xref.fetch(graphicState);
+            } catch (ex) {
+              if (ex instanceof _core_utils.MissingDataException) {
+                throw ex;
+              }
 
-    if (Array.isArray(parentRect) && parentRect.length === 4) {
-      this.data.parentRect = _util.Util.normalizeRect(parentRect);
-    } else {
-      this.data.parentRect = [0, 0, 0, 0];
-    }
+              processed.put(graphicState);
+              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
+              continue;
+            }
+          }
 
-    const rt = parentItem.get("RT");
+          if (!(graphicState instanceof _primitives.Dict)) {
+            continue;
+          }
 
-    if ((0, _primitives.isName)(rt, _util.AnnotationReplyType.GROUP)) {
-      parentItem = parentItem.get("IRT");
-    }
+          if (graphicState.objId) {
+            processed.put(graphicState.objId);
+          }
 
-    if (!parentItem.has("M")) {
-      this.data.modificationDate = null;
-    } else {
-      this.setModificationDate(parentItem.get("M"));
-      this.data.modificationDate = this.modificationDate;
-    }
+          const bm = graphicState.get("BM");
 
-    if (!parentItem.has("C")) {
-      this.data.color = null;
-    } else {
-      this.setColor(parentItem.getArray("C"));
-      this.data.color = this.color;
-    }
+          if (bm instanceof _primitives.Name) {
+            if (bm.name !== "Normal") {
+              return true;
+            }
 
-    if (!this.viewable) {
-      const parentFlags = parentItem.get("F");
+            continue;
+          }
 
-      if (this._isViewable(parentFlags)) {
-        this.setFlags(parentFlags);
+          if (bm !== undefined && Array.isArray(bm)) {
+            for (const element of bm) {
+              if (element instanceof _primitives.Name && element.name !== "Normal") {
+                return true;
+              }
+            }
+          }
+        }
       }
-    }
-
-    this.data.title = (0, _util.stringToPDFString)(parentItem.get("T") || "");
-    this.data.contents = (0, _util.stringToPDFString)(parentItem.get("Contents") || "");
-  }
 
-}
+      var xObjects = node.get("XObject");
 
-class FreeTextAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.FREETEXT;
-  }
+      if (!(xObjects instanceof _primitives.Dict)) {
+        continue;
+      }
 
-}
+      for (let xObject of xObjects.getRawValues()) {
+        if (xObject instanceof _primitives.Ref) {
+          if (processed.has(xObject)) {
+            continue;
+          }
 
-class LineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.LINE;
-    const lineCoordinates = parameters.dict.getArray("L");
-    this.data.lineCoordinates = _util.Util.normalizeRect(lineCoordinates);
+          try {
+            xObject = xref.fetch(xObject);
+          } catch (ex) {
+            if (ex instanceof _core_utils.MissingDataException) {
+              throw ex;
+            }
 
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      const borderWidth = this.borderStyle.width;
+            processed.put(xObject);
+            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
+            continue;
+          }
+        }
 
-      if ((0, _util.isArrayEqual)(this.rectangle, [0, 0, 0, 0])) {
-        this.rectangle = [this.data.lineCoordinates[0] - 2 * borderWidth, this.data.lineCoordinates[1] - 2 * 
borderWidth, this.data.lineCoordinates[2] + 2 * borderWidth, this.data.lineCoordinates[3] + 2 * borderWidth];
-      }
+        if (!(0, _primitives.isStream)(xObject)) {
+          continue;
+        }
 
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${borderWidth} w`,
-        strokeColor,
-        pointsCallback: (buffer, points) => {
-          buffer.push(`${lineCoordinates[0]} ${lineCoordinates[1]} m`);
-          buffer.push(`${lineCoordinates[2]} ${lineCoordinates[3]} l`);
-          buffer.push("S");
-          return [points[0].x - borderWidth, points[1].x + borderWidth, points[3].y - borderWidth, 
points[1].y + borderWidth];
+        if (xObject.dict.objId) {
+          processed.put(xObject.dict.objId);
         }
-      });
-    }
-  }
 
-}
+        var xResources = xObject.dict.get("Resources");
 
-class SquareAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.SQUARE;
+        if (!(xResources instanceof _primitives.Dict)) {
+          continue;
+        }
 
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      let fillColor = null;
-      let interiorColor = parameters.dict.getArray("IC");
-
-      if (interiorColor) {
-        interiorColor = getRgbColor(interiorColor);
-        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
-      }
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${this.borderStyle.width} w`,
-        strokeColor,
-        fillColor,
-        pointsCallback: (buffer, points) => {
-          const x = points[2].x + this.borderStyle.width / 2;
-          const y = points[2].y + this.borderStyle.width / 2;
-          const width = points[3].x - points[2].x - this.borderStyle.width;
-          const height = points[1].y - points[3].y - this.borderStyle.width;
-          buffer.push(`${x} ${y} ${width} ${height} re`);
-
-          if (fillColor) {
-            buffer.push("B");
-          } else {
-            buffer.push("S");
-          }
+        if (xResources.objId && processed.has(xResources.objId)) {
+          continue;
+        }
 
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
+        nodes.push(xResources);
+
+        if (xResources.objId) {
+          processed.put(xResources.objId);
         }
-      });
+      }
     }
+
+    processed.forEach(ref => {
+      nonBlendModesSet.put(ref);
+    });
+    return false;
   }
 
-}
+  async fetchBuiltInCMap(name) {
+    const cachedData = this.builtInCMapCache.get(name);
 
-class CircleAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.CIRCLE;
+    if (cachedData) {
+      return cachedData;
+    }
 
-    if (!this.appearance) {
-      const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
-      let fillColor = null;
-      let interiorColor = parameters.dict.getArray("IC");
-
-      if (interiorColor) {
-        interiorColor = getRgbColor(interiorColor);
-        fillColor = interiorColor ? Array.from(interiorColor).map(c => c / 255) : null;
-      }
-
-      const controlPointsDistance = 4 / 3 * Math.tan(Math.PI / (2 * 4));
-
-      this._setDefaultAppearance({
-        xref: parameters.xref,
-        extra: `${this.borderStyle.width} w`,
-        strokeColor,
-        fillColor,
-        pointsCallback: (buffer, points) => {
-          const x0 = points[0].x + this.borderStyle.width / 2;
-          const y0 = points[0].y - this.borderStyle.width / 2;
-          const x1 = points[3].x - this.borderStyle.width / 2;
-          const y1 = points[3].y + this.borderStyle.width / 2;
-          const xMid = x0 + (x1 - x0) / 2;
-          const yMid = y0 + (y1 - y0) / 2;
-          const xOffset = (x1 - x0) / 2 * controlPointsDistance;
-          const yOffset = (y1 - y0) / 2 * controlPointsDistance;
-          buffer.push(`${xMid} ${y1} m`);
-          buffer.push(`${xMid + xOffset} ${y1} ${x1} ${yMid + yOffset} ${x1} ${yMid} c`);
-          buffer.push(`${x1} ${yMid - yOffset} ${xMid + xOffset} ${y0} ${xMid} ${y0} c`);
-          buffer.push(`${xMid - xOffset} ${y0} ${x0} ${yMid - yOffset} ${x0} ${yMid} c`);
-          buffer.push(`${x0} ${yMid + yOffset} ${xMid - xOffset} ${y1} ${xMid} ${y1} c`);
-          buffer.push("h");
-
-          if (fillColor) {
-            buffer.push("B");
-          } else {
-            buffer.push("S");
+    const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
+      name
+    });
+    const reader = readableStream.getReader();
+    const data = await new Promise(function (resolve, reject) {
+      function pump() {
+        reader.read().then(function ({
+          value,
+          done
+        }) {
+          if (done) {
+            return;
           }
 
-          return [points[0].x, points[1].x, points[3].y, points[1].y];
-        }
-      });
+          resolve(value);
+          pump();
+        }, reject);
+      }
+
+      pump();
+    });
+
+    if (data.compressionType !== _util.CMapCompressionType.NONE) {
+      this.builtInCMapCache.set(name, data);
     }
-  }
 
-}
+    return data;
+  }
 
-class PolylineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POLYLINE;
-    this.data.vertices = [];
-    const rawVertices = parameters.dict.getArray("Vertices");
+  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
+    var dict = xobj.dict;
+    var matrix = dict.getArray("Matrix");
+    var bbox = dict.getArray("BBox");
 
-    if (!Array.isArray(rawVertices)) {
-      return;
+    if (Array.isArray(bbox) && bbox.length === 4) {
+      bbox = _util.Util.normalizeRect(bbox);
+    } else {
+      bbox = null;
     }
 
-    for (let i = 0, ii = rawVertices.length; i < ii; i += 2) {
-      this.data.vertices.push({
-        x: rawVertices[i],
-        y: rawVertices[i + 1]
-      });
+    let optionalContent = null;
+
+    if (dict.has("OC")) {
+      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
+      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
     }
-  }
 
-}
+    var group = dict.get("Group");
 
-class PolygonAnnotation extends PolylineAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.POLYGON;
-  }
+    if (group) {
+      var groupOptions = {
+        matrix,
+        bbox,
+        smask,
+        isolated: false,
+        knockout: false
+      };
+      var groupSubtype = group.get("S");
+      var colorSpace = null;
 
-}
+      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
+        groupOptions.isolated = group.get("I") || false;
+        groupOptions.knockout = group.get("K") || false;
 
-class CaretAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.CARET;
-  }
+        if (group.has("CS")) {
+          const cs = group.getRaw("CS");
 
-}
+          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
 
-class InkAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.INK;
-    this.data.inkLists = [];
-    const rawInkLists = parameters.dict.getArray("InkList");
+          if (cachedColorSpace) {
+            colorSpace = cachedColorSpace;
+          } else {
+            colorSpace = await this.parseColorSpace({
+              cs,
+              resources,
+              localColorSpaceCache
+            });
+          }
+        }
+      }
 
-    if (!Array.isArray(rawInkLists)) {
-      return;
+      if (smask && smask.backdrop) {
+        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
+        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
+      }
+
+      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
     }
 
-    const xref = parameters.xref;
+    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
+    return this.getOperatorList({
+      stream: xobj,
+      task,
+      resources: dict.get("Resources") || resources,
+      operatorList,
+      initialState
+    }).then(function () {
+      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
 
-    for (let i = 0, ii = rawInkLists.length; i < ii; ++i) {
-      this.data.inkLists.push([]);
+      if (group) {
+        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
+      }
 
-      for (let j = 0, jj = rawInkLists[i].length; j < jj; j += 2) {
-        this.data.inkLists[i].push({
-          x: xref.fetchIfRef(rawInkLists[i][j]),
-          y: xref.fetchIfRef(rawInkLists[i][j + 1])
-        });
+      if (optionalContent) {
+        operatorList.addOp(_util.OPS.endMarkedContent, []);
       }
-    }
+    });
   }
 
-}
-
-class HighlightAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.HIGHLIGHT;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      if (!this.appearance) {
-        const fillColor = this.color ? Array.from(this.color).map(c => c / 255) : [1, 1, 0];
+  _sendImgData(objId, imgData, cacheGlobally = false) {
+    const transfers = imgData ? [imgData.data.buffer] : null;
 
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          fillColor,
-          blendMode: "Multiply",
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${points[0].x} ${points[0].y} m`);
-            buffer.push(`${points[1].x} ${points[1].y} l`);
-            buffer.push(`${points[3].x} ${points[3].y} l`);
-            buffer.push(`${points[2].x} ${points[2].y} l`);
-            buffer.push("f");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
+    if (this.parsingType3Font || cacheGlobally) {
+      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
     }
+
+    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
   }
 
-}
-
-class UnderlineAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.UNDERLINE;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
-
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+  async buildPaintImageXObject({
+    resources,
+    image,
+    isInline = false,
+    operatorList,
+    cacheKey,
+    localImageCache,
+    localColorSpaceCache
+  }) {
+    var dict = image.dict;
+    const imageRef = dict.objId;
+    var w = dict.get("Width", "W");
+    var h = dict.get("Height", "H");
 
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${points[2].x} ${points[2].y} m`);
-            buffer.push(`${points[3].x} ${points[3].y} l`);
-            buffer.push("S");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
-      }
-    } else {
-      this.data.hasPopup = false;
+    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
+      (0, _util.warn)("Image dimensions are missing, or not numbers.");
+      return undefined;
     }
-  }
-
-}
 
-class SquigglyAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.SQUIGGLY;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+    var maxImageSize = this.options.maxImageSize;
 
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+    if (maxImageSize !== -1 && w * h > maxImageSize) {
+      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
+      return undefined;
+    }
 
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          pointsCallback: (buffer, points) => {
-            const dy = (points[0].y - points[2].y) / 6;
-            let shift = dy;
-            let x = points[2].x;
-            const y = points[2].y;
-            const xEnd = points[3].x;
-            buffer.push(`${x} ${y + shift} m`);
+    var imageMask = dict.get("ImageMask", "IM") || false;
+    var imgData, args;
 
-            do {
-              x += 2;
-              shift = shift === 0 ? dy : 0;
-              buffer.push(`${x} ${y + shift} l`);
-            } while (x < xEnd);
+    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, true);
+      var decode = dict.getArray("Decode", "D");
+      imgData = _image.PDFImage.createMask({
+        imgArray,
+        width,
+        height,
+        imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
+        inverseDecode: !!decode && decode[0] > 0
+      });
+      imgData.cached = !!cacheKey;
+      args = [imgData];
+      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
 
-            buffer.push("S");
-            return [points[2].x, xEnd, y - 2 * dy, y + 2 * dy];
-          }
+      if (cacheKey) {
+        localImageCache.set(cacheKey, imageRef, {
+          fn: _util.OPS.paintImageMaskXObject,
+          args
         });
       }
-    } else {
-      this.data.hasPopup = false;
+
+      return undefined;
     }
-  }
 
-}
+    var softMask = dict.get("SMask", "SM") || false;
+    var mask = dict.get("Mask") || false;
+    var SMALL_IMAGE_DIMENSIONS = 200;
 
-class StrikeOutAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.STRIKEOUT;
-    const quadPoints = this.data.quadPoints = getQuadPoints(parameters.dict, null);
+    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
+      const imageObj = new _image.PDFImage({
+        xref: this.xref,
+        res: resources,
+        image,
+        isInline,
+        pdfFunctionFactory: this._pdfFunctionFactory,
+        localColorSpaceCache
+      });
+      imgData = imageObj.createImageData(true);
+      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
+      return undefined;
+    }
 
-    if (quadPoints) {
-      if (!this.appearance) {
-        const strokeColor = this.color ? Array.from(this.color).map(c => c / 255) : [0, 0, 0];
+    let objId = `img_${this.idFactory.createObjId()}`,
+        cacheGlobally = false;
 
-        this._setDefaultAppearance({
-          xref: parameters.xref,
-          extra: "[] 0 d 1 w",
-          strokeColor,
-          pointsCallback: (buffer, points) => {
-            buffer.push(`${(points[0].x + points[2].x) / 2}` + ` ${(points[0].y + points[2].y) / 2} m`);
-            buffer.push(`${(points[1].x + points[3].x) / 2}` + ` ${(points[1].y + points[3].y) / 2} l`);
-            buffer.push("S");
-            return [points[0].x, points[1].x, points[3].y, points[1].y];
-          }
-        });
+    if (this.parsingType3Font) {
+      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
+    } else if (imageRef) {
+      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
+
+      if (cacheGlobally) {
+        objId = `${this.idFactory.getDocId()}_${objId}`;
       }
-    } else {
-      this.data.hasPopup = false;
     }
-  }
-
-}
 
-class StampAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    this.data.annotationType = _util.AnnotationType.STAMP;
-  }
+    operatorList.addDependency(objId);
+    args = [objId, w, h];
 
-}
+    _image.PDFImage.buildImage({
+      xref: this.xref,
+      res: resources,
+      image,
+      isInline,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).then(imageObj => {
+      imgData = imageObj.createImageData(false);
+      return this._sendImgData(objId, imgData, cacheGlobally);
+    }).catch(reason => {
+      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
+      return this._sendImgData(objId, null, cacheGlobally);
+    });
 
-class FileAttachmentAnnotation extends MarkupAnnotation {
-  constructor(parameters) {
-    super(parameters);
-    const file = new _obj.FileSpec(parameters.dict.get("FS"), parameters.xref);
-    this.data.annotationType = _util.AnnotationType.FILEATTACHMENT;
-    this.data.file = file.serializable;
-  }
+    operatorList.addOp(_util.OPS.paintImageXObject, args);
 
-}
+    if (cacheKey) {
+      localImageCache.set(cacheKey, imageRef, {
+        fn: _util.OPS.paintImageXObject,
+        args
+      });
 
-/***/ }),
-/* 28 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+      if (imageRef) {
+        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
+        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
 
+        if (cacheGlobally) {
+          this.globalImageCache.setData(imageRef, {
+            objId,
+            fn: _util.OPS.paintImageXObject,
+            args
+          });
+        }
+      }
+    }
 
+    return undefined;
+  }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.createDefaultAppearance = createDefaultAppearance;
-exports.parseDefaultAppearance = parseDefaultAppearance;
+  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
+    var smaskContent = smask.get("G");
+    var smaskOptions = {
+      subtype: smask.get("S").name,
+      backdrop: smask.get("BC")
+    };
+    var transferObj = smask.get("TR");
 
-var _util = __w_pdfjs_require__(2);
+    if ((0, _function.isPDFFunction)(transferObj)) {
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
 
-var _colorspace = __w_pdfjs_require__(23);
+      var transferMap = new Uint8Array(256);
+      var tmp = new Float32Array(1);
 
-var _core_utils = __w_pdfjs_require__(8);
+      for (var i = 0; i < 256; i++) {
+        tmp[0] = i / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[i] = tmp[0] * 255 | 0;
+      }
 
-var _evaluator = __w_pdfjs_require__(29);
+      smaskOptions.transferMap = transferMap;
+    }
 
-var _primitives = __w_pdfjs_require__(5);
+    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
+  }
 
-var _stream = __w_pdfjs_require__(12);
+  handleTransferFunction(tr) {
+    let transferArray;
 
-class DefaultAppearanceEvaluator extends _evaluator.EvaluatorPreprocessor {
-  constructor(str) {
-    super(new _stream.StringStream(str));
-  }
+    if (Array.isArray(tr)) {
+      transferArray = tr;
+    } else if ((0, _function.isPDFFunction)(tr)) {
+      transferArray = [tr];
+    } else {
+      return null;
+    }
 
-  parse() {
-    const operation = {
-      fn: 0,
-      args: []
-    };
-    const result = {
-      fontSize: 0,
-      fontName: "",
-      fontColor: new Uint8ClampedArray(3)
-    };
+    const transferMaps = [];
+    let numFns = 0,
+        numEffectfulFns = 0;
 
-    try {
-      while (true) {
-        operation.args.length = 0;
+    for (const entry of transferArray) {
+      const transferObj = this.xref.fetchIfRef(entry);
+      numFns++;
 
-        if (!this.read(operation)) {
-          break;
-        }
+      if ((0, _primitives.isName)(transferObj, "Identity")) {
+        transferMaps.push(null);
+        continue;
+      } else if (!(0, _function.isPDFFunction)(transferObj)) {
+        return null;
+      }
 
-        if (this.savedStatesDepth !== 0) {
-          continue;
-        }
+      const transferFn = this._pdfFunctionFactory.create(transferObj);
 
-        const {
-          fn,
-          args
-        } = operation;
+      const transferMap = new Uint8Array(256),
+            tmp = new Float32Array(1);
 
-        switch (fn | 0) {
-          case _util.OPS.setFont:
-            const [fontName, fontSize] = args;
+      for (let j = 0; j < 256; j++) {
+        tmp[0] = j / 255;
+        transferFn(tmp, 0, tmp, 0);
+        transferMap[j] = tmp[0] * 255 | 0;
+      }
 
-            if (fontName instanceof _primitives.Name) {
-              result.fontName = fontName.name;
-            }
+      transferMaps.push(transferMap);
+      numEffectfulFns++;
+    }
 
-            if (typeof fontSize === "number" && fontSize > 0) {
-              result.fontSize = fontSize;
-            }
+    if (!(numFns === 1 || numFns === 4)) {
+      return null;
+    }
 
-            break;
+    if (numEffectfulFns === 0) {
+      return null;
+    }
 
-          case _util.OPS.setFillRGBColor:
-            _colorspace.ColorSpace.singletons.rgb.getRgbItem(args, 0, result.fontColor, 0);
+    return transferMaps;
+  }
 
-            break;
+  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, 
localTilingPatternCache) {
+    const tilingOpList = new _operator_list.OperatorList();
 
-          case _util.OPS.setFillGray:
-            _colorspace.ColorSpace.singletons.gray.getRgbItem(args, 0, result.fontColor, 0);
+    const patternResources = _primitives.Dict.merge({
+      xref: this.xref,
+      dictArray: [patternDict.get("Resources"), resources]
+    });
 
-            break;
+    return this.getOperatorList({
+      stream: pattern,
+      task,
+      resources: patternResources,
+      operatorList: tilingOpList
+    }).then(function () {
+      const operatorListIR = tilingOpList.getIR();
+      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
+      operatorList.addDependencies(tilingOpList.dependencies);
+      operatorList.addOp(fn, tilingPatternIR);
 
-          case _util.OPS.setFillColorSpace:
-            _colorspace.ColorSpace.singletons.cmyk.getRgbItem(args, 0, result.fontColor, 0);
+      if (cacheKey) {
+        localTilingPatternCache.set(cacheKey, patternDict.objId, {
+          operatorListIR,
+          dict: patternDict
+        });
+      }
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
+      }
 
-            break;
-        }
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
+        });
+        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
+        return;
       }
-    } catch (reason) {
-      (0, _util.warn)(`parseDefaultAppearance - ignoring errors: "${reason}".`);
-    }
 
-    return result;
+      throw reason;
+    });
   }
 
-}
+  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null) {
+    var fontName;
 
-function parseDefaultAppearance(str) {
-  return new DefaultAppearanceEvaluator(str).parse();
-}
+    if (fontArgs) {
+      fontArgs = fontArgs.slice();
+      fontName = fontArgs[0].name;
+    }
 
-function createDefaultAppearance({
-  fontSize,
-  fontName,
-  fontColor
-}) {
-  let colorCmd;
+    return this.loadFont(fontName, fontRef, resources, fallbackFontDict).then(translated => {
+      if (!translated.font.isType3Font) {
+        return translated;
+      }
 
-  if (fontColor.every(c => c === 0)) {
-    colorCmd = "0 g";
-  } else {
-    colorCmd = Array.from(fontColor).map(c => (c / 255).toFixed(2)).join(" ") + " rg";
+      return translated.loadType3Data(this, resources, task).then(function () {
+        operatorList.addDependencies(translated.type3Dependencies);
+        return translated;
+      }).catch(reason => {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
+        });
+        return new TranslatedFont({
+          loadedName: "g_font_error",
+          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
+          dict: translated.font,
+          extraProperties: this.options.fontExtraProperties
+        });
+      });
+    }).then(translated => {
+      state.font = translated.font;
+      translated.send(this.handler);
+      return translated.loadedName;
+    });
   }
 
-  return `/${(0, _core_utils.escapePDFName)(fontName)} ${fontSize} Tf ${colorCmd}`;
-}
-
-/***/ }),
-/* 29 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+  handleText(chars, state) {
+    const font = state.font;
+    const glyphs = font.charsToGlyphs(chars);
 
+    if (font.data) {
+      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
 
+      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
+        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);
+      }
+    }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.PartialEvaluator = exports.EvaluatorPreprocessor = void 0;
+    return glyphs;
+  }
 
-var _util = __w_pdfjs_require__(2);
+  ensureStateFont(state) {
+    if (state.font) {
+      return;
+    }
 
-var _cmap = __w_pdfjs_require__(30);
+    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
 
-var _primitives = __w_pdfjs_require__(5);
+    if (this.options.ignoreErrors) {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
+      });
+      (0, _util.warn)(`ensureStateFont: "${reason}".`);
+      return;
+    }
 
-var _stream = __w_pdfjs_require__(12);
+    throw reason;
+  }
 
-var _fonts = __w_pdfjs_require__(31);
+  async setGState({
+    resources,
+    gState,
+    operatorList,
+    cacheKey,
+    task,
+    stateManager,
+    localGStateCache,
+    localColorSpaceCache
+  }) {
+    const gStateRef = gState.objId;
+    let isSimpleGState = true;
+    var gStateObj = [];
+    var gStateKeys = gState.getKeys();
+    var promise = Promise.resolve();
 
-var _encodings = __w_pdfjs_require__(34);
+    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
+      const key = gStateKeys[i];
+      const value = gState.get(key);
 
-var _unicode = __w_pdfjs_require__(37);
+      switch (key) {
+        case "Type":
+          break;
 
-var _standard_fonts = __w_pdfjs_require__(36);
+        case "LW":
+        case "LC":
+        case "LJ":
+        case "ML":
+        case "D":
+        case "RI":
+        case "FL":
+        case "CA":
+        case "ca":
+          gStateObj.push([key, value]);
+          break;
 
-var _pattern = __w_pdfjs_require__(40);
+        case "Font":
+          isSimpleGState = false;
+          promise = promise.then(() => {
+            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              gStateObj.push([key, [loadedName, value[1]]]);
+            });
+          });
+          break;
 
-var _function = __w_pdfjs_require__(41);
+        case "BM":
+          gStateObj.push([key, normalizeBlendMode(value)]);
+          break;
 
-var _parser = __w_pdfjs_require__(11);
+        case "SMask":
+          if ((0, _primitives.isName)(value, "None")) {
+            gStateObj.push([key, false]);
+            break;
+          }
 
-var _image_utils = __w_pdfjs_require__(24);
+          if ((0, _primitives.isDict)(value)) {
+            isSimpleGState = false;
+            promise = promise.then(() => {
+              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
+            });
+            gStateObj.push([key, true]);
+          } else {
+            (0, _util.warn)("Unsupported SMask type");
+          }
 
-var _bidi = __w_pdfjs_require__(43);
+          break;
 
-var _colorspace = __w_pdfjs_require__(23);
+        case "TR":
+          const transferMaps = this.handleTransferFunction(value);
+          gStateObj.push([key, transferMaps]);
+          break;
 
-var _glyphlist = __w_pdfjs_require__(35);
+        case "OP":
+        case "op":
+        case "OPM":
+        case "BG":
+        case "BG2":
+        case "UCR":
+        case "UCR2":
+        case "TR2":
+        case "HT":
+        case "SM":
+        case "SA":
+        case "AIS":
+        case "TK":
+          (0, _util.info)("graphic state operator " + key);
+          break;
 
-var _core_utils = __w_pdfjs_require__(8);
-
-var _metrics = __w_pdfjs_require__(44);
-
-var _murmurhash = __w_pdfjs_require__(45);
+        default:
+          (0, _util.info)("Unknown graphic state operator " + key);
+          break;
+      }
+    }
 
-var _operator_list = __w_pdfjs_require__(46);
+    return promise.then(function () {
+      if (gStateObj.length > 0) {
+        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
+      }
 
-var _image = __w_pdfjs_require__(47);
+      if (isSimpleGState) {
+        localGStateCache.set(cacheKey, gStateRef, gStateObj);
+      }
+    });
+  }
 
-const DefaultPartialEvaluatorOptions = Object.freeze({
-  maxImageSize: -1,
-  disableFontFace: false,
-  ignoreErrors: false,
-  isEvalSupported: true,
-  fontExtraProperties: false
-});
-const PatternType = {
-  TILING: 1,
-  SHADING: 2
-};
-const deferred = Promise.resolve();
+  loadFont(fontName, font, resources, fallbackFontDict = null) {
+    const errorFont = async () => {
+      return new TranslatedFont({
+        loadedName: "g_font_error",
+        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      });
+    };
 
-function normalizeBlendMode(value, parsingArray = false) {
-  if (Array.isArray(value)) {
-    for (let i = 0, ii = value.length; i < ii; i++) {
-      const maybeBM = normalizeBlendMode(value[i], true);
+    var fontRef,
+        xref = this.xref;
 
-      if (maybeBM) {
-        return maybeBM;
+    if (font) {
+      if (!(0, _primitives.isRef)(font)) {
+        throw new _util.FormatError('The "font" object should be a reference.');
       }
-    }
 
-    (0, _util.warn)(`Unsupported blend mode Array: ${value}`);
-    return "source-over";
-  }
+      fontRef = font;
+    } else {
+      var fontRes = resources.get("Font");
 
-  if (!(0, _primitives.isName)(value)) {
-    if (parsingArray) {
-      return null;
+      if (fontRes) {
+        fontRef = fontRes.getRaw(fontName);
+      }
     }
 
-    return "source-over";
-  }
-
-  switch (value.name) {
-    case "Normal":
-    case "Compatible":
-      return "source-over";
-
-    case "Multiply":
-      return "multiply";
-
-    case "Screen":
-      return "screen";
+    if (!fontRef) {
+      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
 
-    case "Overlay":
-      return "overlay";
+      if (!this.options.ignoreErrors && !this.parsingType3Font) {
+        (0, _util.warn)(`${partialMsg}.`);
+        return errorFont();
+      }
 
-    case "Darken":
-      return "darken";
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
+      });
+      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
 
-    case "Lighten":
-      return "lighten";
+      if (fallbackFontDict) {
+        fontRef = fallbackFontDict;
+      } else {
+        fontRef = PartialEvaluator.fallbackFontDict;
+      }
+    }
 
-    case "ColorDodge":
-      return "color-dodge";
+    if (this.fontCache.has(fontRef)) {
+      return this.fontCache.get(fontRef);
+    }
 
-    case "ColorBurn":
-      return "color-burn";
+    font = xref.fetchIfRef(fontRef);
 
-    case "HardLight":
-      return "hard-light";
+    if (!(0, _primitives.isDict)(font)) {
+      return errorFont();
+    }
 
-    case "SoftLight":
-      return "soft-light";
+    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
+      return this.fontCache.get(font.cacheKey);
+    }
 
-    case "Difference":
-      return "difference";
+    var fontCapability = (0, _util.createPromiseCapability)();
+    let preEvaluatedFont;
 
-    case "Exclusion":
-      return "exclusion";
+    try {
+      preEvaluatedFont = this.preEvaluateFont(font);
+    } catch (reason) {
+      (0, _util.warn)(`loadFont - ignoring preEvaluateFont errors: "${reason}".`);
+      return errorFont();
+    }
 
-    case "Hue":
-      return "hue";
+    const {
+      descriptor,
+      hash
+    } = preEvaluatedFont;
+    var fontRefIsRef = (0, _primitives.isRef)(fontRef),
+        fontID;
 
-    case "Saturation":
-      return "saturation";
+    if (fontRefIsRef) {
+      fontID = `f${fontRef.toString()}`;
+    }
 
-    case "Color":
-      return "color";
+    if (hash && (0, _primitives.isDict)(descriptor)) {
+      if (!descriptor.fontAliases) {
+        descriptor.fontAliases = Object.create(null);
+      }
 
-    case "Luminosity":
-      return "luminosity";
-  }
+      var fontAliases = descriptor.fontAliases;
 
-  if (parsingArray) {
-    return null;
-  }
+      if (fontAliases[hash]) {
+        var aliasFontRef = fontAliases[hash].aliasRef;
 
-  (0, _util.warn)(`Unsupported blend mode: ${value.name}`);
-  return "source-over";
-}
+        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
+          this.fontCache.putAlias(fontRef, aliasFontRef);
+          return this.fontCache.get(fontRef);
+        }
+      } else {
+        fontAliases[hash] = {
+          fontID: this.idFactory.createFontId()
+        };
+      }
 
-class TimeSlotManager {
-  static get TIME_SLOT_DURATION_MS() {
-    return (0, _util.shadow)(this, "TIME_SLOT_DURATION_MS", 20);
-  }
+      if (fontRefIsRef) {
+        fontAliases[hash].aliasRef = fontRef;
+      }
 
-  static get CHECK_TIME_EVERY() {
-    return (0, _util.shadow)(this, "CHECK_TIME_EVERY", 100);
-  }
+      fontID = fontAliases[hash].fontID;
+    }
 
-  constructor() {
-    this.reset();
-  }
+    if (fontRefIsRef) {
+      this.fontCache.put(fontRef, fontCapability.promise);
+    } else {
+      if (!fontID) {
+        fontID = this.idFactory.createFontId();
+      }
 
-  check() {
-    if (++this.checked < TimeSlotManager.CHECK_TIME_EVERY) {
-      return false;
+      font.cacheKey = `cacheKey_${fontID}`;
+      this.fontCache.put(font.cacheKey, fontCapability.promise);
     }
 
-    this.checked = 0;
-    return this.endTime <= Date.now();
-  }
-
-  reset() {
-    this.endTime = Date.now() + TimeSlotManager.TIME_SLOT_DURATION_MS;
-    this.checked = 0;
-  }
+    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
+    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
+    this.translateFont(preEvaluatedFont).then(translatedFont => {
+      if (translatedFont.fontType !== undefined) {
+        var xrefFontStats = xref.stats.fontTypes;
+        xrefFontStats[translatedFont.fontType] = true;
+      }
 
-}
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: translatedFont,
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      }));
+    }).catch(reason => {
+      this.handler.send("UnsupportedFeature", {
+        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
+      });
 
-class PartialEvaluator {
-  constructor({
-    xref,
-    handler,
-    pageIndex,
-    idFactory,
-    fontCache,
-    builtInCMapCache,
-    globalImageCache,
-    options = null
-  }) {
-    this.xref = xref;
-    this.handler = handler;
-    this.pageIndex = pageIndex;
-    this.idFactory = idFactory;
-    this.fontCache = fontCache;
-    this.builtInCMapCache = builtInCMapCache;
-    this.globalImageCache = globalImageCache;
-    this.options = options || DefaultPartialEvaluatorOptions;
-    this.parsingType3Font = false;
-    this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
-  }
+      try {
+        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) {}
 
-  get _pdfFunctionFactory() {
-    const pdfFunctionFactory = new _function.PDFFunctionFactory({
-      xref: this.xref,
-      isEvalSupported: this.options.isEvalSupported
+      fontCapability.resolve(new TranslatedFont({
+        loadedName: font.loadedName,
+        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
+        dict: font,
+        extraProperties: this.options.fontExtraProperties
+      }));
     });
-    return (0, _util.shadow)(this, "_pdfFunctionFactory", pdfFunctionFactory);
+    return fontCapability.promise;
   }
 
-  clone(newOptions = DefaultPartialEvaluatorOptions) {
-    var newEvaluator = Object.create(this);
-    newEvaluator.options = newOptions;
-    return newEvaluator;
-  }
+  buildPath(operatorList, fn, args, parsingText = false) {
+    var lastIndex = operatorList.length - 1;
 
-  hasBlendModes(resources, nonBlendModesSet) {
-    if (!(resources instanceof _primitives.Dict)) {
-      return false;
+    if (!args) {
+      args = [];
     }
 
-    if (resources.objId && nonBlendModesSet.has(resources.objId)) {
-      return false;
-    }
+    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
+      if (parsingText) {
+        (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`);
+        operatorList.addOp(_util.OPS.save, null);
+      }
 
-    const processed = new _primitives.RefSet(nonBlendModesSet);
+      operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
 
-    if (resources.objId) {
-      processed.put(resources.objId);
+      if (parsingText) {
+        operatorList.addOp(_util.OPS.restore, null);
+      }
+    } else {
+      var opArgs = operatorList.argsArray[lastIndex];
+      opArgs[0].push(fn);
+      Array.prototype.push.apply(opArgs[1], args);
     }
+  }
 
-    var nodes = [resources],
-        xref = this.xref;
+  parseColorSpace({
+    cs,
+    resources,
+    localColorSpaceCache
+  }) {
+    return _colorspace.ColorSpace.parseAsync({
+      cs,
+      xref: this.xref,
+      resources,
+      pdfFunctionFactory: this._pdfFunctionFactory,
+      localColorSpaceCache
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return null;
+      }
 
-    while (nodes.length) {
-      var node = nodes.shift();
-      var graphicStates = node.get("ExtGState");
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
+        });
+        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
+        return null;
+      }
 
-      if (graphicStates instanceof _primitives.Dict) {
-        for (let graphicState of graphicStates.getRawValues()) {
-          if (graphicState instanceof _primitives.Ref) {
-            if (processed.has(graphicState)) {
-              continue;
-            }
+      throw reason;
+    });
+  }
 
-            try {
-              graphicState = xref.fetch(graphicState);
-            } catch (ex) {
-              processed.put(graphicState);
-              (0, _util.info)(`hasBlendModes - ignoring ExtGState: "${ex}".`);
-              continue;
-            }
-          }
+  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache) {
+    const patternName = args.pop();
 
-          if (!(graphicState instanceof _primitives.Dict)) {
-            continue;
-          }
+    if (patternName instanceof _primitives.Name) {
+      const name = patternName.name;
+      const localTilingPattern = localTilingPatternCache.getByName(name);
 
-          if (graphicState.objId) {
-            processed.put(graphicState.objId);
+      if (localTilingPattern) {
+        try {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, 
localTilingPattern.dict, color);
+          operatorList.addOp(fn, tilingPatternIR);
+          return undefined;
+        } catch (ex) {
+          if (ex instanceof _core_utils.MissingDataException) {
+            throw ex;
           }
+        }
+      }
 
-          const bm = graphicState.get("BM");
-
-          if (bm instanceof _primitives.Name) {
-            if (bm.name !== "Normal") {
-              return true;
-            }
+      let pattern = patterns.get(name);
 
-            continue;
-          }
+      if (pattern) {
+        var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
+        var typeNum = dict.get("PatternType");
 
-          if (bm !== undefined && Array.isArray(bm)) {
-            for (const element of bm) {
-              if (element instanceof _primitives.Name && element.name !== "Normal") {
-                return true;
-              }
-            }
-          }
+        if (typeNum === PatternType.TILING) {
+          const color = cs.base ? cs.base.getRgb(args, 0) : null;
+          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, name, 
localTilingPatternCache);
+        } else if (typeNum === PatternType.SHADING) {
+          var shading = dict.get("Shading");
+          var matrix = dict.getArray("Matrix");
+          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
+          operatorList.addOp(fn, pattern.getIR());
+          return undefined;
         }
-      }
-
-      var xObjects = node.get("XObject");
 
-      if (!(xObjects instanceof _primitives.Dict)) {
-        continue;
+        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
       }
+    }
 
-      for (let xObject of xObjects.getRawValues()) {
-        if (xObject instanceof _primitives.Ref) {
-          if (processed.has(xObject)) {
-            continue;
-          }
+    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
+  }
 
-          try {
-            xObject = xref.fetch(xObject);
-          } catch (ex) {
-            processed.put(xObject);
-            (0, _util.info)(`hasBlendModes - ignoring XObject: "${ex}".`);
-            continue;
-          }
-        }
+  async parseMarkedContentProps(contentProperties, resources) {
+    let optionalContent;
 
-        if (!(0, _primitives.isStream)(xObject)) {
-          continue;
-        }
+    if ((0, _primitives.isName)(contentProperties)) {
+      const properties = resources.get("Properties");
+      optionalContent = properties.get(contentProperties.name);
+    } else if ((0, _primitives.isDict)(contentProperties)) {
+      optionalContent = contentProperties;
+    } else {
+      throw new _util.FormatError("Optional content properties malformed.");
+    }
 
-        if (xObject.dict.objId) {
-          processed.put(xObject.dict.objId);
-        }
+    const optionalContentType = optionalContent.get("Type").name;
 
-        var xResources = xObject.dict.get("Resources");
+    if (optionalContentType === "OCG") {
+      return {
+        type: optionalContentType,
+        id: optionalContent.objId
+      };
+    } else if (optionalContentType === "OCMD") {
+      const optionalContentGroups = optionalContent.get("OCGs");
 
-        if (!(xResources instanceof _primitives.Dict)) {
-          continue;
-        }
+      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
+        const groupIds = [];
 
-        if (xResources.objId && processed.has(xResources.objId)) {
-          continue;
+        if (Array.isArray(optionalContentGroups)) {
+          optionalContent.get("OCGs").forEach(ocg => {
+            groupIds.push(ocg.toString());
+          });
+        } else {
+          groupIds.push(optionalContentGroups.objId);
         }
 
-        nodes.push(xResources);
+        let expression = null;
 
-        if (xResources.objId) {
-          processed.put(xResources.objId);
+        if (optionalContent.get("VE")) {
+          expression = true;
         }
+
+        return {
+          type: optionalContentType,
+          ids: groupIds,
+          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
+          expression
+        };
+      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
+        return {
+          type: optionalContentType,
+          id: optionalContentGroups.toString()
+        };
       }
     }
 
-    processed.forEach(ref => {
-      nonBlendModesSet.put(ref);
-    });
-    return false;
+    return null;
   }
 
-  async fetchBuiltInCMap(name) {
-    const cachedData = this.builtInCMapCache.get(name);
+  getOperatorList({
+    stream,
+    task,
+    resources,
+    operatorList,
+    initialState = null,
+    fallbackFontDict = null
+  }) {
+    resources = resources || _primitives.Dict.empty;
+    initialState = initialState || new EvalState();
 
-    if (cachedData) {
-      return cachedData;
+    if (!operatorList) {
+      throw new Error('getOperatorList: missing "operatorList" parameter');
     }
 
-    const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
-      name
-    });
-    const reader = readableStream.getReader();
-    const data = await new Promise(function (resolve, reject) {
-      function pump() {
-        reader.read().then(function ({
-          value,
-          done
-        }) {
-          if (done) {
-            return;
-          }
+    var self = this;
+    var xref = this.xref;
+    let parsingText = false;
+    const localImageCache = new _image_utils.LocalImageCache();
+    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
+    const localGStateCache = new _image_utils.LocalGStateCache();
+    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
 
-          resolve(value);
-          pump();
-        }, reject);
-      }
+    var xobjs = resources.get("XObject") || _primitives.Dict.empty;
 
-      pump();
-    });
+    var patterns = resources.get("Pattern") || _primitives.Dict.empty;
 
-    if (data.compressionType !== _util.CMapCompressionType.NONE) {
-      this.builtInCMapCache.set(name, data);
-    }
-
-    return data;
-  }
-
-  async buildFormXObject(resources, xobj, smask, operatorList, task, initialState, localColorSpaceCache) {
-    var dict = xobj.dict;
-    var matrix = dict.getArray("Matrix");
-    var bbox = dict.getArray("BBox");
-
-    if (Array.isArray(bbox) && bbox.length === 4) {
-      bbox = _util.Util.normalizeRect(bbox);
-    } else {
-      bbox = null;
-    }
-
-    let optionalContent = null;
+    var stateManager = new StateManager(initialState);
+    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    var timeSlotManager = new TimeSlotManager();
 
-    if (dict.has("OC")) {
-      optionalContent = await this.parseMarkedContentProps(dict.get("OC"), resources);
-      operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", optionalContent]);
+    function closePendingRestoreOPS(argument) {
+      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
+        operatorList.addOp(_util.OPS.restore, []);
+      }
     }
 
-    var group = dict.get("Group");
-
-    if (group) {
-      var groupOptions = {
-        matrix,
-        bbox,
-        smask,
-        isolated: false,
-        knockout: false
+    return new Promise(function promiseBody(resolve, reject) {
+      const next = function (promise) {
+        Promise.all([promise, operatorList.ready]).then(function () {
+          try {
+            promiseBody(resolve, reject);
+          } catch (ex) {
+            reject(ex);
+          }
+        }, reject);
       };
-      var groupSubtype = group.get("S");
-      var colorSpace = null;
-
-      if ((0, _primitives.isName)(groupSubtype, "Transparency")) {
-        groupOptions.isolated = group.get("I") || false;
-        groupOptions.knockout = group.get("K") || false;
 
-        if (group.has("CS")) {
-          const cs = group.getRaw("CS");
+      task.ensureNotTerminated();
+      timeSlotManager.reset();
+      var stop,
+          operation = {},
+          i,
+          ii,
+          cs,
+          name;
 
-          const cachedColorSpace = _colorspace.ColorSpace.getCached(cs, this.xref, localColorSpaceCache);
+      while (!(stop = timeSlotManager.check())) {
+        operation.args = null;
 
-          if (cachedColorSpace) {
-            colorSpace = cachedColorSpace;
-          } else {
-            colorSpace = await this.parseColorSpace({
-              cs,
-              resources,
-              localColorSpaceCache
-            });
-          }
+        if (!preprocessor.read(operation)) {
+          break;
         }
-      }
 
-      if (smask && smask.backdrop) {
-        colorSpace = colorSpace || _colorspace.ColorSpace.singletons.rgb;
-        smask.backdrop = colorSpace.getRgb(smask.backdrop, 0);
-      }
+        var args = operation.args;
+        var fn = operation.fn;
 
-      operatorList.addOp(_util.OPS.beginGroup, [groupOptions]);
-    }
+        switch (fn | 0) {
+          case _util.OPS.paintXObject:
+            name = args[0].name;
 
-    operatorList.addOp(_util.OPS.paintFormXObjectBegin, [matrix, bbox]);
-    return this.getOperatorList({
-      stream: xobj,
-      task,
-      resources: dict.get("Resources") || resources,
-      operatorList,
-      initialState
-    }).then(function () {
-      operatorList.addOp(_util.OPS.paintFormXObjectEnd, []);
+            if (name) {
+              const localImage = localImageCache.getByName(name);
 
-      if (group) {
-        operatorList.addOp(_util.OPS.endGroup, [groupOptions]);
-      }
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
 
-      if (optionalContent) {
-        operatorList.addOp(_util.OPS.endMarkedContent, []);
-      }
-    });
-  }
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!name) {
+                throw new _util.FormatError("XObject must be referred to by name.");
+              }
 
-  _sendImgData(objId, imgData, cacheGlobally = false) {
-    const transfers = imgData ? [imgData.data.buffer] : null;
+              let xobj = xobjs.getRaw(name);
 
-    if (this.parsingType3Font || cacheGlobally) {
-      return this.handler.send("commonobj", [objId, "Image", imgData], transfers);
-    }
+              if (xobj instanceof _primitives.Ref) {
+                const localImage = localImageCache.getByRef(xobj);
 
-    return this.handler.send("obj", [objId, this.pageIndex, "Image", imgData], transfers);
-  }
+                if (localImage) {
+                  operatorList.addOp(localImage.fn, localImage.args);
+                  resolveXObject();
+                  return;
+                }
 
-  async buildPaintImageXObject({
-    resources,
-    image,
-    isInline = false,
-    operatorList,
-    cacheKey,
-    localImageCache,
-    localColorSpaceCache
-  }) {
-    var dict = image.dict;
-    const imageRef = dict.objId;
-    var w = dict.get("Width", "W");
-    var h = dict.get("Height", "H");
+                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
 
-    if (!(w && (0, _util.isNum)(w)) || !(h && (0, _util.isNum)(h))) {
-      (0, _util.warn)("Image dimensions are missing, or not numbers.");
-      return undefined;
-    }
+                if (globalImage) {
+                  operatorList.addDependency(globalImage.objId);
+                  operatorList.addOp(globalImage.fn, globalImage.args);
+                  resolveXObject();
+                  return;
+                }
 
-    var maxImageSize = this.options.maxImageSize;
+                xobj = xref.fetch(xobj);
+              }
 
-    if (maxImageSize !== -1 && w * h > maxImageSize) {
-      (0, _util.warn)("Image exceeded maximum allowed size and was removed.");
-      return undefined;
-    }
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
 
-    var imageMask = dict.get("ImageMask", "IM") || false;
-    var imgData, args;
+              const type = xobj.dict.get("Subtype");
 
-    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, true);
-      var decode = dict.getArray("Decode", "D");
-      imgData = _image.PDFImage.createMask({
-        imgArray,
-        width,
-        height,
-        imageIsFromDecodeStream: image instanceof _stream.DecodeStream,
-        inverseDecode: !!decode && decode[0] > 0
-      });
-      imgData.cached = !!cacheKey;
-      args = [imgData];
-      operatorList.addOp(_util.OPS.paintImageMaskXObject, args);
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
 
-      if (cacheKey) {
-        localImageCache.set(cacheKey, imageRef, {
-          fn: _util.OPS.paintImageMaskXObject,
-          args
-        });
-      }
+              if (type.name === "Form") {
+                stateManager.save();
+                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
+                  stateManager.restore();
+                  resolveXObject();
+                }, rejectXObject);
+                return;
+              } else if (type.name === "Image") {
+                self.buildPaintImageXObject({
+                  resources,
+                  image: xobj,
+                  operatorList,
+                  cacheKey: name,
+                  localImageCache,
+                  localColorSpaceCache
+                }).then(resolveXObject, rejectXObject);
+                return;
+              } else if (type.name === "PS") {
+                (0, _util.info)("Ignored XObject subtype PS");
+              } else {
+                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
+              }
 
-      return undefined;
-    }
+              resolveXObject();
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-    var softMask = dict.get("SMask", "SM") || false;
-    var mask = dict.get("Mask") || false;
-    var SMALL_IMAGE_DIMENSIONS = 200;
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
+                });
+                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
+                return;
+              }
 
-    if (isInline && !softMask && !mask && w + h < SMALL_IMAGE_DIMENSIONS) {
-      const imageObj = new _image.PDFImage({
-        xref: this.xref,
-        res: resources,
-        image,
-        isInline,
-        pdfFunctionFactory: this._pdfFunctionFactory,
-        localColorSpaceCache
-      });
-      imgData = imageObj.createImageData(true);
-      operatorList.addOp(_util.OPS.paintInlineImageXObject, [imgData]);
-      return undefined;
-    }
+              throw reason;
+            }));
+            return;
 
-    let objId = `img_${this.idFactory.createObjId()}`,
-        cacheGlobally = false;
+          case _util.OPS.setFont:
+            var fontSize = args[1];
+            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, 
fallbackFontDict).then(function (loadedName) {
+              operatorList.addDependency(loadedName);
+              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
+            }));
+            return;
 
-    if (this.parsingType3Font) {
-      objId = `${this.idFactory.getDocId()}_type3_${objId}`;
-    } else if (imageRef) {
-      cacheGlobally = this.globalImageCache.shouldCache(imageRef, this.pageIndex);
+          case _util.OPS.beginText:
+            parsingText = true;
+            break;
 
-      if (cacheGlobally) {
-        objId = `${this.idFactory.getDocId()}_${objId}`;
-      }
-    }
+          case _util.OPS.endText:
+            parsingText = false;
+            break;
 
-    operatorList.addDependency(objId);
-    args = [objId, w, h];
+          case _util.OPS.endInlineImage:
+            var cacheKey = args[0].cacheKey;
 
-    _image.PDFImage.buildImage({
-      xref: this.xref,
-      res: resources,
-      image,
-      isInline,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
-    }).then(imageObj => {
-      imgData = imageObj.createImageData(false);
+            if (cacheKey) {
+              const localImage = localImageCache.getByName(cacheKey);
 
-      if (cacheKey && imageRef && cacheGlobally) {
-        this.globalImageCache.addByteSize(imageRef, imgData.data.length);
-      }
+              if (localImage) {
+                operatorList.addOp(localImage.fn, localImage.args);
+                args = null;
+                continue;
+              }
+            }
 
-      return this._sendImgData(objId, imgData, cacheGlobally);
-    }).catch(reason => {
-      (0, _util.warn)(`Unable to decode image "${objId}": "${reason}".`);
-      return this._sendImgData(objId, null, cacheGlobally);
-    });
+            next(self.buildPaintImageXObject({
+              resources,
+              image: args[0],
+              isInline: true,
+              operatorList,
+              cacheKey,
+              localImageCache,
+              localColorSpaceCache
+            }));
+            return;
 
-    operatorList.addOp(_util.OPS.paintImageXObject, args);
+          case _util.OPS.showText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-    if (cacheKey) {
-      localImageCache.set(cacheKey, imageRef, {
-        fn: _util.OPS.paintImageXObject,
-        args
-      });
+            args[0] = self.handleText(args[0], stateManager.state);
+            break;
 
-      if (imageRef) {
-        (0, _util.assert)(!isInline, "Cannot cache an inline image globally.");
-        this.globalImageCache.addPageIndex(imageRef, this.pageIndex);
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-        if (cacheGlobally) {
-          this.globalImageCache.setData(imageRef, {
-            objId,
-            fn: _util.OPS.paintImageXObject,
-            args,
-            byteSize: 0
-          });
-        }
-      }
-    }
+            var arr = args[0];
+            var combinedGlyphs = [];
+            var arrLength = arr.length;
+            var state = stateManager.state;
 
-    return undefined;
-  }
+            for (i = 0; i < arrLength; ++i) {
+              var arrItem = arr[i];
 
-  handleSMask(smask, resources, operatorList, task, stateManager, localColorSpaceCache) {
-    var smaskContent = smask.get("G");
-    var smaskOptions = {
-      subtype: smask.get("S").name,
-      backdrop: smask.get("BC")
-    };
-    var transferObj = smask.get("TR");
+              if ((0, _util.isString)(arrItem)) {
+                Array.prototype.push.apply(combinedGlyphs, self.handleText(arrItem, state));
+              } else if ((0, _util.isNum)(arrItem)) {
+                combinedGlyphs.push(arrItem);
+              }
+            }
 
-    if ((0, _function.isPDFFunction)(transferObj)) {
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
+            args[0] = combinedGlyphs;
+            fn = _util.OPS.showText;
+            break;
 
-      var transferMap = new Uint8Array(256);
-      var tmp = new Float32Array(1);
+          case _util.OPS.nextLineShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-      for (var i = 0; i < 256; i++) {
-        tmp[0] = i / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[i] = tmp[0] * 255 | 0;
-      }
+            operatorList.addOp(_util.OPS.nextLine);
+            args[0] = self.handleText(args[0], stateManager.state);
+            fn = _util.OPS.showText;
+            break;
 
-      smaskOptions.transferMap = transferMap;
-    }
+          case _util.OPS.nextLineSetSpacingShowText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-    return this.buildFormXObject(resources, smaskContent, smaskOptions, operatorList, task, 
stateManager.state.clone(), localColorSpaceCache);
-  }
+            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;
 
-  handleTransferFunction(tr) {
-    let transferArray;
+          case _util.OPS.setTextRenderingMode:
+            stateManager.state.textRenderingMode = args[0];
+            break;
 
-    if (Array.isArray(tr)) {
-      transferArray = tr;
-    } else if ((0, _function.isPDFFunction)(tr)) {
-      transferArray = [tr];
-    } else {
-      return null;
-    }
+          case _util.OPS.setFillColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
 
-    const transferMaps = [];
-    let numFns = 0,
-        numEffectfulFns = 0;
+              if (cachedColorSpace) {
+                stateManager.state.fillColorSpace = cachedColorSpace;
+                continue;
+              }
 
-    for (const entry of transferArray) {
-      const transferObj = this.xref.fetchIfRef(entry);
-      numFns++;
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.fillColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
 
-      if ((0, _primitives.isName)(transferObj, "Identity")) {
-        transferMaps.push(null);
-        continue;
-      } else if (!(0, _function.isPDFFunction)(transferObj)) {
-        return null;
-      }
+          case _util.OPS.setStrokeColorSpace:
+            {
+              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
 
-      const transferFn = this._pdfFunctionFactory.create(transferObj);
+              if (cachedColorSpace) {
+                stateManager.state.strokeColorSpace = cachedColorSpace;
+                continue;
+              }
 
-      const transferMap = new Uint8Array(256),
-            tmp = new Float32Array(1);
+              next(self.parseColorSpace({
+                cs: args[0],
+                resources,
+                localColorSpaceCache
+              }).then(function (colorSpace) {
+                if (colorSpace) {
+                  stateManager.state.strokeColorSpace = colorSpace;
+                }
+              }));
+              return;
+            }
 
-      for (let j = 0; j < 256; j++) {
-        tmp[0] = j / 255;
-        transferFn(tmp, 0, tmp, 0);
-        transferMap[j] = tmp[0] * 255 | 0;
-      }
+          case _util.OPS.setFillColor:
+            cs = stateManager.state.fillColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-      transferMaps.push(transferMap);
-      numEffectfulFns++;
-    }
+          case _util.OPS.setStrokeColor:
+            cs = stateManager.state.strokeColorSpace;
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-    if (!(numFns === 1 || numFns === 4)) {
-      return null;
-    }
+          case _util.OPS.setFillGray:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-    if (numEffectfulFns === 0) {
-      return null;
-    }
+          case _util.OPS.setStrokeGray:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
+            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-    return transferMaps;
-  }
+          case _util.OPS.setFillCMYKColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-  handleTilingType(fn, color, resources, pattern, patternDict, operatorList, task, cacheKey, 
localTilingPatternCache) {
-    const tilingOpList = new _operator_list.OperatorList();
+          case _util.OPS.setStrokeCMYKColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
+            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-    const patternResources = _primitives.Dict.merge({
-      xref: this.xref,
-      dictArray: [patternDict.get("Resources"), resources]
-    });
+          case _util.OPS.setFillRGBColor:
+            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
 
-    return this.getOperatorList({
-      stream: pattern,
-      task,
-      resources: patternResources,
-      operatorList: tilingOpList
-    }).then(function () {
-      const operatorListIR = tilingOpList.getIR();
-      const tilingPatternIR = (0, _pattern.getTilingPatternIR)(operatorListIR, patternDict, color);
-      operatorList.addDependencies(tilingOpList.dependencies);
-      operatorList.addOp(fn, tilingPatternIR);
+          case _util.OPS.setStrokeRGBColor:
+            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
+            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
+            break;
 
-      if (cacheKey) {
-        localTilingPatternCache.set(cacheKey, patternDict.objId, {
-          operatorListIR,
-          dict: patternDict
-        });
-      }
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
+          case _util.OPS.setFillColorN:
+            cs = stateManager.state.fillColorSpace;
 
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorTilingPattern
-        });
-        (0, _util.warn)(`handleTilingType - ignoring pattern: "${reason}".`);
-        return;
-      }
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              return;
+            }
 
-      throw reason;
-    });
-  }
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setFillRGBColor;
+            break;
 
-  handleSetFont(resources, fontArgs, fontRef, operatorList, task, state, fallbackFontDict = null) {
-    const fontName = fontArgs && fontArgs[0] instanceof _primitives.Name ? fontArgs[0].name : null;
-    return this.loadFont(fontName, fontRef, resources, fallbackFontDict).then(translated => {
-      if (!translated.font.isType3Font) {
-        return translated;
-      }
+          case _util.OPS.setStrokeColorN:
+            cs = stateManager.state.strokeColorSpace;
 
-      return translated.loadType3Data(this, resources, task).then(function () {
-        operatorList.addDependencies(translated.type3Dependencies);
-        return translated;
-      }).catch(reason => {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorFontLoadType3
-        });
-        return new TranslatedFont({
-          loadedName: "g_font_error",
-          font: new _fonts.ErrorFont(`Type3 font load error: ${reason}`),
-          dict: translated.font,
-          extraProperties: this.options.fontExtraProperties
-        });
-      });
-    }).then(translated => {
-      state.font = translated.font;
-      translated.send(this.handler);
-      return translated.loadedName;
-    });
-  }
+            if (cs.name === "Pattern") {
+              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
+              return;
+            }
 
-  handleText(chars, state) {
-    const font = state.font;
-    const glyphs = font.charsToGlyphs(chars);
+            args = cs.getRgb(args, 0);
+            fn = _util.OPS.setStrokeRGBColor;
+            break;
 
-    if (font.data) {
-      const isAddToPathSet = !!(state.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG);
+          case _util.OPS.shadingFill:
+            var shadingRes = resources.get("Shading");
 
-      if (isAddToPathSet || state.fillColorSpace.name === "Pattern" || font.disableFontFace || 
this.options.disableFontFace) {
-        PartialEvaluator.buildFontPaths(font, glyphs, this.handler);
-      }
-    }
+            if (!shadingRes) {
+              throw new _util.FormatError("No shading resource found");
+            }
 
-    return glyphs;
-  }
+            var shading = shadingRes.get(args[0].name);
 
-  ensureStateFont(state) {
-    if (state.font) {
-      return;
-    }
+            if (!shading) {
+              throw new _util.FormatError("No shading object found");
+            }
 
-    const reason = new _util.FormatError("Missing setFont (Tf) operator before text rendering operator.");
+            var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, 
self._pdfFunctionFactory, localColorSpaceCache);
 
-    if (this.options.ignoreErrors) {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontState
-      });
-      (0, _util.warn)(`ensureStateFont: "${reason}".`);
-      return;
-    }
+            var patternIR = shadingFill.getIR();
+            args = [patternIR];
+            fn = _util.OPS.shadingFill;
+            break;
 
-    throw reason;
-  }
+          case _util.OPS.setGState:
+            name = args[0].name;
 
-  async setGState({
-    resources,
-    gState,
-    operatorList,
-    cacheKey,
-    task,
-    stateManager,
-    localGStateCache,
-    localColorSpaceCache
-  }) {
-    const gStateRef = gState.objId;
-    let isSimpleGState = true;
-    var gStateObj = [];
-    var gStateKeys = gState.getKeys();
-    var promise = Promise.resolve();
+            if (name) {
+              const localGStateObj = localGStateCache.getByName(name);
 
-    for (var i = 0, ii = gStateKeys.length; i < ii; i++) {
-      const key = gStateKeys[i];
-      const value = gState.get(key);
+              if (localGStateObj) {
+                if (localGStateObj.length > 0) {
+                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
+                }
 
-      switch (key) {
-        case "Type":
-          break;
+                args = null;
+                continue;
+              }
+            }
 
-        case "LW":
-        case "LC":
-        case "LJ":
-        case "ML":
-        case "D":
-        case "RI":
-        case "FL":
-        case "CA":
-        case "ca":
-          gStateObj.push([key, value]);
-          break;
+            next(new Promise(function (resolveGState, rejectGState) {
+              if (!name) {
+                throw new _util.FormatError("GState must be referred to by name.");
+              }
 
-        case "Font":
-          isSimpleGState = false;
-          promise = promise.then(() => {
-            return this.handleSetFont(resources, null, value[0], operatorList, task, 
stateManager.state).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              gStateObj.push([key, [loadedName, value[1]]]);
-            });
-          });
-          break;
+              const extGState = resources.get("ExtGState");
 
-        case "BM":
-          gStateObj.push([key, normalizeBlendMode(value)]);
-          break;
+              if (!(extGState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("ExtGState should be a dictionary.");
+              }
 
-        case "SMask":
-          if ((0, _primitives.isName)(value, "None")) {
-            gStateObj.push([key, false]);
-            break;
-          }
+              const gState = extGState.get(name);
 
-          if ((0, _primitives.isDict)(value)) {
-            isSimpleGState = false;
-            promise = promise.then(() => {
-              return this.handleSMask(value, resources, operatorList, task, stateManager, 
localColorSpaceCache);
-            });
-            gStateObj.push([key, true]);
-          } else {
-            (0, _util.warn)("Unsupported SMask type");
-          }
+              if (!(gState instanceof _primitives.Dict)) {
+                throw new _util.FormatError("GState should be a dictionary.");
+              }
 
-          break;
+              self.setGState({
+                resources,
+                gState,
+                operatorList,
+                cacheKey: name,
+                task,
+                stateManager,
+                localGStateCache,
+                localColorSpaceCache
+              }).then(resolveGState, rejectGState);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-        case "TR":
-          const transferMaps = this.handleTransferFunction(value);
-          gStateObj.push([key, transferMaps]);
-          break;
+              if (self.options.ignoreErrors) {
+                self.handler.send("UnsupportedFeature", {
+                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
+                });
+                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
+                return;
+              }
 
-        case "OP":
-        case "op":
-        case "OPM":
-        case "BG":
-        case "BG2":
-        case "UCR":
-        case "UCR2":
-        case "TR2":
-        case "HT":
-        case "SM":
-        case "SA":
-        case "AIS":
-        case "TK":
-          (0, _util.info)("graphic state operator " + key);
-          break;
+              throw reason;
+            }));
+            return;
 
-        default:
-          (0, _util.info)("Unknown graphic state operator " + key);
-          break;
-      }
-    }
+          case _util.OPS.moveTo:
+          case _util.OPS.lineTo:
+          case _util.OPS.curveTo:
+          case _util.OPS.curveTo2:
+          case _util.OPS.curveTo3:
+          case _util.OPS.closePath:
+          case _util.OPS.rectangle:
+            self.buildPath(operatorList, fn, args, parsingText);
+            continue;
 
-    return promise.then(function () {
-      if (gStateObj.length > 0) {
-        operatorList.addOp(_util.OPS.setGState, [gStateObj]);
-      }
+          case _util.OPS.markPoint:
+          case _util.OPS.markPointProps:
+          case _util.OPS.beginCompat:
+          case _util.OPS.endCompat:
+            continue;
 
-      if (isSimpleGState) {
-        localGStateCache.set(cacheKey, gStateRef, gStateObj);
-      }
-    });
-  }
+          case _util.OPS.beginMarkedContentProps:
+            if (!(0, _primitives.isName)(args[0])) {
+              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
+              continue;
+            }
 
-  loadFont(fontName, font, resources, fallbackFontDict = null) {
-    const errorFont = async () => {
-      return new TranslatedFont({
-        loadedName: "g_font_error",
-        font: new _fonts.ErrorFont(`Font "${fontName}" is not available.`),
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      });
-    };
+            if (args[0].name === "OC") {
+              next(self.parseMarkedContentProps(args[1], resources).then(data => {
+                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
+              }).catch(reason => {
+                if (reason instanceof _util.AbortException) {
+                  return;
+                }
 
-    var fontRef,
-        xref = this.xref;
+                if (self.options.ignoreErrors) {
+                  self.handler.send("UnsupportedFeature", {
+                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
+                  });
+                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
+                  return;
+                }
 
-    if (font) {
-      if (!(0, _primitives.isRef)(font)) {
-        throw new _util.FormatError('The "font" object should be a reference.');
-      }
+                throw reason;
+              }));
+              return;
+            }
 
-      fontRef = font;
-    } else {
-      var fontRes = resources.get("Font");
+            args = [args[0].name];
+            break;
 
-      if (fontRes) {
-        fontRef = fontRes.getRaw(fontName);
-      }
-    }
+          case _util.OPS.beginMarkedContent:
+          case _util.OPS.endMarkedContent:
+          default:
+            if (args !== null) {
+              for (i = 0, ii = args.length; i < ii; i++) {
+                if (args[i] instanceof _primitives.Dict) {
+                  break;
+                }
+              }
 
-    if (!fontRef) {
-      const partialMsg = `Font "${fontName || font && font.toString()}" is not available`;
+              if (i < ii) {
+                (0, _util.warn)("getOperatorList - ignoring operator: " + fn);
+                continue;
+              }
+            }
 
-      if (!this.options.ignoreErrors && !this.parsingType3Font) {
-        (0, _util.warn)(`${partialMsg}.`);
-        return errorFont();
+        }
+
+        operatorList.addOp(fn, args);
       }
 
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontMissing
-      });
-      (0, _util.warn)(`${partialMsg} -- attempting to fallback to a default font.`);
+      if (stop) {
+        next(deferred);
+        return;
+      }
 
-      if (fallbackFontDict) {
-        fontRef = fallbackFontDict;
-      } else {
-        fontRef = PartialEvaluator.fallbackFontDict;
+      closePendingRestoreOPS();
+      resolve();
+    }).catch(reason => {
+      if (reason instanceof _util.AbortException) {
+        return;
       }
-    }
 
-    if (this.fontCache.has(fontRef)) {
-      return this.fontCache.get(fontRef);
-    }
+      if (this.options.ignoreErrors) {
+        this.handler.send("UnsupportedFeature", {
+          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
+        });
+        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        closePendingRestoreOPS();
+        return;
+      }
 
-    font = xref.fetchIfRef(fontRef);
+      throw reason;
+    });
+  }
 
-    if (!(0, _primitives.isDict)(font)) {
-      return errorFont();
-    }
+  getTextContent({
+    stream,
+    task,
+    resources,
+    stateManager = null,
+    normalizeWhitespace = false,
+    combineTextItems = false,
+    sink,
+    seenStyles = Object.create(null)
+  }) {
+    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;
+    const emptyXObjectCache = new _image_utils.LocalImageCache();
+    const emptyGStateCache = new _image_utils.LocalGStateCache();
+    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
+    var textState;
 
-    if (font.cacheKey && this.fontCache.has(font.cacheKey)) {
-      return this.fontCache.get(font.cacheKey);
-    }
+    function ensureTextContentItem() {
+      if (textContentItem.initialized) {
+        return textContentItem;
+      }
 
-    var fontCapability = (0, _util.createPromiseCapability)();
-    let preEvaluatedFont;
+      var font = textState.font;
 
-    try {
-      preEvaluatedFont = this.preEvaluateFont(font);
-    } catch (reason) {
-      (0, _util.warn)(`loadFont - preEvaluateFont failed: "${reason}".`);
-      return errorFont();
-    }
+      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
+        };
+      }
 
-    const {
-      descriptor,
-      hash
-    } = preEvaluatedFont;
-    var fontRefIsRef = (0, _primitives.isRef)(fontRef),
-        fontID;
+      textContentItem.fontName = font.loadedName;
+      var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
 
-    if (fontRefIsRef) {
-      fontID = `f${fontRef.toString()}`;
-    }
+      if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, 
_util.FONT_IDENTITY_MATRIX)) {
+        const glyphHeight = font.bbox[3] - font.bbox[1];
 
-    if (hash && (0, _primitives.isDict)(descriptor)) {
-      if (!descriptor.fontAliases) {
-        descriptor.fontAliases = Object.create(null);
+        if (glyphHeight > 0) {
+          tsm[3] *= glyphHeight * textState.fontMatrix[3];
+        }
       }
 
-      var fontAliases = descriptor.fontAliases;
+      var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
 
-      if (fontAliases[hash]) {
-        var aliasFontRef = fontAliases[hash].aliasRef;
+      textContentItem.transform = trm;
 
-        if (fontRefIsRef && aliasFontRef && this.fontCache.has(aliasFontRef)) {
-          this.fontCache.putAlias(fontRef, aliasFontRef);
-          return this.fontCache.get(fontRef);
-        }
+      if (!font.vertical) {
+        textContentItem.width = 0;
+        textContentItem.height = Math.sqrt(trm[2] * trm[2] + trm[3] * trm[3]);
+        textContentItem.vertical = false;
       } else {
-        fontAliases[hash] = {
-          fontID: this.idFactory.createFontId()
-        };
+        textContentItem.width = Math.sqrt(trm[0] * trm[0] + trm[1] * trm[1]);
+        textContentItem.height = 0;
+        textContentItem.vertical = true;
       }
 
-      if (fontRefIsRef) {
-        fontAliases[hash].aliasRef = fontRef;
+      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;
       }
 
-      fontID = fontAliases[hash].fontID;
+      textContentItem.initialized = true;
+      return textContentItem;
     }
 
-    if (fontRefIsRef) {
-      this.fontCache.put(fontRef, fontCapability.promise);
-    } else {
-      if (!fontID) {
-        fontID = this.idFactory.createFontId();
+    function replaceWhitespace(str) {
+      var i = 0,
+          ii = str.length,
+          code;
+
+      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
+        i++;
       }
 
-      font.cacheKey = `cacheKey_${fontID}`;
-      this.fontCache.put(font.cacheKey, fontCapability.promise);
+      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
     }
 
-    (0, _util.assert)(fontID && fontID.startsWith("f"), 'The "fontID" must be (correctly) defined.');
-    font.loadedName = `${this.idFactory.getDocId()}_${fontID}`;
-    this.translateFont(preEvaluatedFont).then(translatedFont => {
-      if (translatedFont.fontType !== undefined) {
-        var xrefFontStats = xref.stats.fontTypes;
-        xrefFontStats[translatedFont.fontType] = true;
-      }
+    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
+      };
+    }
 
-      fontCapability.resolve(new TranslatedFont({
-        loadedName: font.loadedName,
-        font: translatedFont,
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      }));
-    }).catch(reason => {
-      this.handler.send("UnsupportedFeature", {
-        featureId: _util.UNSUPPORTED_FEATURES.errorFontTranslate
+    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;
       });
-      (0, _util.warn)(`loadFont - translateFont failed: "${reason}".`);
-
-      try {
-        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({
-        loadedName: font.loadedName,
-        font: new _fonts.ErrorFont(reason instanceof Error ? reason.message : reason),
-        dict: font,
-        extraProperties: this.options.fontExtraProperties
-      }));
-    });
-    return fontCapability.promise;
-  }
-
-  buildPath(operatorList, fn, args, parsingText = false) {
-    var lastIndex = operatorList.length - 1;
-
-    if (!args) {
-      args = [];
     }
 
-    if (lastIndex < 0 || operatorList.fnArray[lastIndex] !== _util.OPS.constructPath) {
-      if (parsingText) {
-        (0, _util.warn)(`Encountered path operator "${fn}" inside of a text object.`);
-        operatorList.addOp(_util.OPS.save, null);
-      }
-
-      operatorList.addOp(_util.OPS.constructPath, [[fn], args]);
-
-      if (parsingText) {
-        operatorList.addOp(_util.OPS.restore, null);
-      }
-    } else {
-      var opArgs = operatorList.argsArray[lastIndex];
-      opArgs[0].push(fn);
-      Array.prototype.push.apply(opArgs[1], args);
-    }
-  }
+    function buildTextContentItem(chars) {
+      var font = textState.font;
+      var textChunk = ensureTextContentItem();
+      var width = 0;
+      var height = 0;
+      var glyphs = font.charsToGlyphs(chars);
 
-  parseColorSpace({
-    cs,
-    resources,
-    localColorSpaceCache
-  }) {
-    return _colorspace.ColorSpace.parseAsync({
-      cs,
-      xref: this.xref,
-      resources,
-      pdfFunctionFactory: this._pdfFunctionFactory,
-      localColorSpaceCache
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return null;
-      }
+      for (var i = 0; i < glyphs.length; i++) {
+        var glyph = glyphs[i];
+        var glyphWidth = null;
 
-      if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorColorSpace
-        });
-        (0, _util.warn)(`parseColorSpace - ignoring ColorSpace: "${reason}".`);
-        return null;
-      }
+        if (font.vertical && glyph.vmetric) {
+          glyphWidth = glyph.vmetric[0];
+        } else {
+          glyphWidth = glyph.width;
+        }
 
-      throw reason;
-    });
-  }
+        var glyphUnicode = glyph.unicode;
+        var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
 
-  handleColorN(operatorList, fn, args, cs, patterns, resources, task, localColorSpaceCache, 
localTilingPatternCache) {
-    const patternName = args.pop();
+        if (NormalizedUnicodes[glyphUnicode] !== undefined) {
+          glyphUnicode = NormalizedUnicodes[glyphUnicode];
+        }
 
-    if (patternName instanceof _primitives.Name) {
-      const name = patternName.name;
-      const localTilingPattern = localTilingPatternCache.getByName(name);
+        glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
+        var charSpacing = textState.charSpacing;
 
-      if (localTilingPattern) {
-        try {
-          const color = cs.base ? cs.base.getRgb(args, 0) : null;
-          const tilingPatternIR = (0, _pattern.getTilingPatternIR)(localTilingPattern.operatorListIR, 
localTilingPattern.dict, color);
-          operatorList.addOp(fn, tilingPatternIR);
-          return undefined;
-        } catch (ex) {}
-      }
+        if (glyph.isSpace) {
+          var wordSpacing = textState.wordSpacing;
+          charSpacing += wordSpacing;
 
-      let pattern = patterns.get(name);
+          if (wordSpacing > 0) {
+            addFakeSpaces(wordSpacing, textChunk.str);
+          }
+        }
 
-      if (pattern) {
-        var dict = (0, _primitives.isStream)(pattern) ? pattern.dict : pattern;
-        var typeNum = dict.get("PatternType");
+        var tx = 0;
+        var ty = 0;
 
-        if (typeNum === PatternType.TILING) {
-          const color = cs.base ? cs.base.getRgb(args, 0) : null;
-          return this.handleTilingType(fn, color, resources, pattern, dict, operatorList, task, name, 
localTilingPatternCache);
-        } else if (typeNum === PatternType.SHADING) {
-          var shading = dict.get("Shading");
-          var matrix = dict.getArray("Matrix");
-          pattern = _pattern.Pattern.parseShading(shading, matrix, this.xref, resources, this.handler, 
this._pdfFunctionFactory, localColorSpaceCache);
-          operatorList.addOp(fn, pattern.getIR());
-          return undefined;
+        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;
         }
 
-        throw new _util.FormatError(`Unknown PatternType: ${typeNum}`);
+        textState.translateTextMatrix(tx, ty);
+        textChunk.str.push(glyphUnicode);
       }
-    }
 
-    throw new _util.FormatError(`Unknown PatternName: ${patternName}`);
-  }
-
-  async parseMarkedContentProps(contentProperties, resources) {
-    let optionalContent;
+      if (!font.vertical) {
+        textChunk.lastAdvanceWidth = width;
+        textChunk.width += width;
+      } else {
+        textChunk.lastAdvanceHeight = height;
+        textChunk.height += Math.abs(height);
+      }
 
-    if ((0, _primitives.isName)(contentProperties)) {
-      const properties = resources.get("Properties");
-      optionalContent = properties.get(contentProperties.name);
-    } else if ((0, _primitives.isDict)(contentProperties)) {
-      optionalContent = contentProperties;
-    } else {
-      throw new _util.FormatError("Optional content properties malformed.");
+      return textChunk;
     }
 
-    const optionalContentType = optionalContent.get("Type").name;
-
-    if (optionalContentType === "OCG") {
-      return {
-        type: optionalContentType,
-        id: optionalContent.objId
-      };
-    } else if (optionalContentType === "OCMD") {
-      const optionalContentGroups = optionalContent.get("OCGs");
-
-      if (Array.isArray(optionalContentGroups) || (0, _primitives.isDict)(optionalContentGroups)) {
-        const groupIds = [];
-
-        if (Array.isArray(optionalContentGroups)) {
-          optionalContent.get("OCGs").forEach(ocg => {
-            groupIds.push(ocg.toString());
-          });
-        } else {
-          groupIds.push(optionalContentGroups.objId);
-        }
+    function addFakeSpaces(width, strBuf) {
+      if (width < textContentItem.fakeSpaceMin) {
+        return;
+      }
 
-        let expression = null;
+      if (width < textContentItem.fakeMultiSpaceMin) {
+        strBuf.push(" ");
+        return;
+      }
 
-        if (optionalContent.get("VE")) {
-          expression = true;
-        }
+      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);
 
-        return {
-          type: optionalContentType,
-          ids: groupIds,
-          policy: (0, _primitives.isName)(optionalContent.get("P")) ? optionalContent.get("P").name : null,
-          expression
-        };
-      } else if ((0, _primitives.isRef)(optionalContentGroups)) {
-        return {
-          type: optionalContentType,
-          id: optionalContentGroups.toString()
-        };
+      while (fakeSpaces-- > 0) {
+        strBuf.push(" ");
       }
     }
 
-    return null;
-  }
+    function flushTextContentItem() {
+      if (!textContentItem.initialized) {
+        return;
+      }
 
-  getOperatorList({
-    stream,
-    task,
-    resources,
-    operatorList,
-    initialState = null,
-    fallbackFontDict = null
-  }) {
-    resources = resources || _primitives.Dict.empty;
-    initialState = initialState || new EvalState();
+      if (!textContentItem.vertical) {
+        textContentItem.width *= textContentItem.textAdvanceScale;
+      } else {
+        textContentItem.height *= textContentItem.textAdvanceScale;
+      }
 
-    if (!operatorList) {
-      throw new Error('getOperatorList: missing "operatorList" parameter');
+      textContent.items.push(runBidiTransform(textContentItem));
+      textContentItem.initialized = false;
+      textContentItem.str.length = 0;
     }
 
-    var self = this;
-    var xref = this.xref;
-    let parsingText = false;
-    const localImageCache = new _image_utils.LocalImageCache();
-    const localColorSpaceCache = new _image_utils.LocalColorSpaceCache();
-    const localGStateCache = new _image_utils.LocalGStateCache();
-    const localTilingPatternCache = new _image_utils.LocalTilingPatternCache();
-
-    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 enqueueChunk() {
+      const length = textContent.items.length;
 
-    function closePendingRestoreOPS(argument) {
-      for (var i = 0, ii = preprocessor.savedStatesDepth; i < ii; i++) {
-        operatorList.addOp(_util.OPS.restore, []);
+      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) {
       const next = function (promise) {
-        Promise.all([promise, operatorList.ready]).then(function () {
+        enqueueChunk();
+        Promise.all([promise, sink.ready]).then(function () {
           try {
             promiseBody(resolve, reject);
           } catch (ex) {
@@ -23843,153 +23567,157 @@ class PartialEvaluator {
       timeSlotManager.reset();
       var stop,
           operation = {},
-          i,
-          ii,
-          cs,
-          name;
+          args = [];
 
       while (!(stop = timeSlotManager.check())) {
-        operation.args = null;
+        args.length = 0;
+        operation.args = args;
 
         if (!preprocessor.read(operation)) {
           break;
         }
 
-        var args = operation.args;
+        textState = stateManager.state;
         var fn = operation.fn;
+        args = operation.args;
+        var advance, diff;
 
         switch (fn | 0) {
-          case _util.OPS.paintXObject:
-            name = args[0].name;
-
-            if (name) {
-              const localImage = localImageCache.getByName(name);
+          case _util.OPS.setFont:
+            var fontNameArg = args[0].name,
+                fontSizeArg = args[1];
 
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
-              }
+            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
+              break;
             }
 
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
+            flushTextContentItem();
+            textState.fontName = fontNameArg;
+            textState.fontSize = fontSizeArg;
+            next(handleSetFont(fontNameArg, null));
+            return;
 
-              if (xobj instanceof _primitives.Ref) {
-                const localImage = localImageCache.getByRef(xobj);
+          case _util.OPS.setTextRise:
+            flushTextContentItem();
+            textState.textRise = args[0];
+            break;
 
-                if (localImage) {
-                  operatorList.addOp(localImage.fn, localImage.args);
-                  resolveXObject();
-                  return;
-                }
+          case _util.OPS.setHScale:
+            flushTextContentItem();
+            textState.textHScale = args[0] / 100;
+            break;
 
-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
+          case _util.OPS.setLeading:
+            flushTextContentItem();
+            textState.leading = args[0];
+            break;
 
-                if (globalImage) {
-                  operatorList.addDependency(globalImage.objId);
-                  operatorList.addOp(globalImage.fn, globalImage.args);
-                  resolveXObject();
-                  return;
-                }
+          case _util.OPS.moveText:
+            var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 
0;
+            advance = args[0] - args[1];
 
-                xobj = xref.fetch(xobj);
-              }
+            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;
+            }
 
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
-              }
+            flushTextContentItem();
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
 
-              const type = xobj.dict.get("Subtype");
+          case _util.OPS.setLeadingMoveText:
+            flushTextContentItem();
+            textState.leading = -args[1];
+            textState.translateTextLineMatrix(args[0], args[1]);
+            textState.textMatrix = textState.textLineMatrix.slice();
+            break;
 
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
-              }
+          case _util.OPS.nextLine:
+            flushTextContentItem();
+            textState.carriageReturn();
+            break;
 
-              if (type.name === "Form") {
-                stateManager.save();
-                self.buildFormXObject(resources, xobj, null, operatorList, task, stateManager.state.clone(), 
localColorSpaceCache).then(function () {
-                  stateManager.restore();
-                  resolveXObject();
-                }, rejectXObject);
-                return;
-              } else if (type.name === "Image") {
-                self.buildPaintImageXObject({
-                  resources,
-                  image: xobj,
-                  operatorList,
-                  cacheKey: name,
-                  localImageCache,
-                  localColorSpaceCache
-                }).then(resolveXObject, rejectXObject);
-                return;
-              } else if (type.name === "PS") {
-                (0, _util.info)("Ignored XObject subtype PS");
-              } else {
-                throw new _util.FormatError(`Unhandled XObject subtype ${type.name}`);
-              }
+          case _util.OPS.setTextMatrix:
+            advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], 
args[5]);
 
-              resolveXObject();
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+            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;
+            }
 
-              if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorXObject
-                });
-                (0, _util.warn)(`getOperatorList - ignoring XObject: "${reason}".`);
-                return;
-              }
+            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;
 
-              throw reason;
-            }));
-            return;
+          case _util.OPS.setCharSpacing:
+            textState.charSpacing = args[0];
+            break;
 
-          case _util.OPS.setFont:
-            var fontSize = args[1];
-            next(self.handleSetFont(resources, args, null, operatorList, task, stateManager.state, 
fallbackFontDict).then(function (loadedName) {
-              operatorList.addDependency(loadedName);
-              operatorList.addOp(_util.OPS.setFont, [loadedName, fontSize]);
-            }));
-            return;
+          case _util.OPS.setWordSpacing:
+            textState.wordSpacing = args[0];
+            break;
 
           case _util.OPS.beginText:
-            parsingText = true;
+            flushTextContentItem();
+            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
+            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
             break;
 
-          case _util.OPS.endText:
-            parsingText = false;
-            break;
+          case _util.OPS.showSpacedText:
+            if (!stateManager.state.font) {
+              self.ensureStateFont(stateManager.state);
+              continue;
+            }
 
-          case _util.OPS.endInlineImage:
-            var cacheKey = args[0].cacheKey;
+            var items = args[0];
+            var offset;
 
-            if (cacheKey) {
-              const localImage = localImageCache.getByName(cacheKey);
+            for (var 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;
+                var breakTextRun = false;
 
-              if (localImage) {
-                operatorList.addOp(localImage.fn, localImage.args);
-                args = null;
-                continue;
+                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);
+                }
               }
             }
 
-            next(self.buildPaintImageXObject({
-              resources,
-              image: args[0],
-              isInline: true,
-              operatorList,
-              cacheKey,
-              localImageCache,
-              localColorSpaceCache
-            }));
-            return;
+            break;
 
           case _util.OPS.showText:
             if (!stateManager.state.font) {
@@ -23997,32 +23725,7 @@ class PartialEvaluator {
               continue;
             }
 
-            args[0] = self.handleText(args[0], stateManager.state);
-            break;
-
-          case _util.OPS.showSpacedText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
-
-            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;
+            buildTextContentItem(args[0]);
             break;
 
           case _util.OPS.nextLineShowText:
@@ -24031,9 +23734,9 @@ class PartialEvaluator {
               continue;
             }
 
-            operatorList.addOp(_util.OPS.nextLine);
-            args[0] = self.handleText(args[0], stateManager.state);
-            fn = _util.OPS.showText;
+            flushTextContentItem();
+            textState.carriageReturn();
+            buildTextContentItem(args[0]);
             break;
 
           case _util.OPS.nextLineSetSpacingShowText:
@@ -24042,163 +23745,119 @@ class PartialEvaluator {
               continue;
             }
 
-            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];
+            flushTextContentItem();
+            textState.wordSpacing = args[0];
+            textState.charSpacing = args[1];
+            textState.carriageReturn();
+            buildTextContentItem(args[2]);
             break;
 
-          case _util.OPS.setFillColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
-
-              if (cachedColorSpace) {
-                stateManager.state.fillColorSpace = cachedColorSpace;
-                continue;
-              }
+          case _util.OPS.paintXObject:
+            flushTextContentItem();
 
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.fillColorSpace = colorSpace;
-                }
-              }));
-              return;
+            if (!xobjs) {
+              xobjs = resources.get("XObject") || _primitives.Dict.empty;
             }
 
-          case _util.OPS.setStrokeColorSpace:
-            {
-              const cachedColorSpace = _colorspace.ColorSpace.getCached(args[0], xref, localColorSpaceCache);
-
-              if (cachedColorSpace) {
-                stateManager.state.strokeColorSpace = cachedColorSpace;
-                continue;
-              }
+            var name = args[0].name;
 
-              next(self.parseColorSpace({
-                cs: args[0],
-                resources,
-                localColorSpaceCache
-              }).then(function (colorSpace) {
-                if (colorSpace) {
-                  stateManager.state.strokeColorSpace = colorSpace;
-                }
-              }));
-              return;
+            if (name && emptyXObjectCache.getByName(name)) {
+              break;
             }
 
-          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;
+            next(new Promise(function (resolveXObject, rejectXObject) {
+              if (!name) {
+                throw new _util.FormatError("XObject must be referred to by name.");
+              }
 
-          case _util.OPS.setStrokeGray:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.gray;
-            args = _colorspace.ColorSpace.singletons.gray.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+              let xobj = xobjs.getRaw(name);
 
-          case _util.OPS.setFillCMYKColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
+              if (xobj instanceof _primitives.Ref) {
+                if (emptyXObjectCache.getByRef(xobj)) {
+                  resolveXObject();
+                  return;
+                }
 
-          case _util.OPS.setStrokeCMYKColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.cmyk;
-            args = _colorspace.ColorSpace.singletons.cmyk.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+                xobj = xref.fetch(xobj);
+              }
 
-          case _util.OPS.setFillRGBColor:
-            stateManager.state.fillColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
+              if (!(0, _primitives.isStream)(xobj)) {
+                throw new _util.FormatError("XObject should be a stream");
+              }
 
-          case _util.OPS.setStrokeRGBColor:
-            stateManager.state.strokeColorSpace = _colorspace.ColorSpace.singletons.rgb;
-            args = _colorspace.ColorSpace.singletons.rgb.getRgb(args, 0);
-            break;
+              const type = xobj.dict.get("Subtype");
 
-          case _util.OPS.setFillColorN:
-            cs = stateManager.state.fillColorSpace;
+              if (!(0, _primitives.isName)(type)) {
+                throw new _util.FormatError("XObject should have a Name subtype");
+              }
 
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setFillColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
-              return;
-            }
+              if (type.name !== "Form") {
+                emptyXObjectCache.set(name, xobj.dict.objId, true);
+                resolveXObject();
+                return;
+              }
 
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setFillRGBColor;
-            break;
+              const currentState = stateManager.state.clone();
+              const xObjStateManager = new StateManager(currentState);
+              const matrix = xobj.dict.getArray("Matrix");
 
-          case _util.OPS.setStrokeColorN:
-            cs = stateManager.state.strokeColorSpace;
+              if (Array.isArray(matrix) && matrix.length === 6) {
+                xObjStateManager.transform(matrix);
+              }
 
-            if (cs.name === "Pattern") {
-              next(self.handleColorN(operatorList, _util.OPS.setStrokeColorN, args, cs, patterns, resources, 
task, localColorSpaceCache, localTilingPatternCache));
-              return;
-            }
+              enqueueChunk();
+              const sinkWrapper = {
+                enqueueInvoked: false,
 
-            args = cs.getRgb(args, 0);
-            fn = _util.OPS.setStrokeRGBColor;
-            break;
+                enqueue(chunk, size) {
+                  this.enqueueInvoked = true;
+                  sink.enqueue(chunk, size);
+                },
 
-          case _util.OPS.shadingFill:
-            var shadingRes = resources.get("Shading");
+                get desiredSize() {
+                  return sink.desiredSize;
+                },
 
-            if (!shadingRes) {
-              throw new _util.FormatError("No shading resource found");
-            }
+                get ready() {
+                  return sink.ready;
+                }
 
-            var shading = shadingRes.get(args[0].name);
+              };
+              self.getTextContent({
+                stream: xobj,
+                task,
+                resources: xobj.dict.get("Resources") || resources,
+                stateManager: xObjStateManager,
+                normalizeWhitespace,
+                combineTextItems,
+                sink: sinkWrapper,
+                seenStyles
+              }).then(function () {
+                if (!sinkWrapper.enqueueInvoked) {
+                  emptyXObjectCache.set(name, xobj.dict.objId, true);
+                }
 
-            if (!shading) {
-              throw new _util.FormatError("No shading object found");
-            }
+                resolveXObject();
+              }, rejectXObject);
+            }).catch(function (reason) {
+              if (reason instanceof _util.AbortException) {
+                return;
+              }
 
-            var shadingFill = _pattern.Pattern.parseShading(shading, null, xref, resources, self.handler, 
self._pdfFunctionFactory, localColorSpaceCache);
+              if (self.options.ignoreErrors) {
+                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
+                return;
+              }
 
-            var patternIR = shadingFill.getIR();
-            args = [patternIR];
-            fn = _util.OPS.shadingFill;
-            break;
+              throw reason;
+            }));
+            return;
 
           case _util.OPS.setGState:
             name = args[0].name;
 
-            if (name) {
-              const localGStateObj = localGStateCache.getByName(name);
-
-              if (localGStateObj) {
-                if (localGStateObj.length > 0) {
-                  operatorList.addOp(_util.OPS.setGState, [localGStateObj]);
-                }
-
-                args = null;
-                continue;
-              }
+            if (name && emptyGStateCache.getByName(name)) {
+              break;
             }
 
             next(new Promise(function (resolveGState, rejectGState) {
@@ -24218,98 +23877,37 @@ class PartialEvaluator {
                 throw new _util.FormatError("GState should be a dictionary.");
               }
 
-              self.setGState({
-                resources,
-                gState,
-                operatorList,
-                cacheKey: name,
-                task,
-                stateManager,
-                localGStateCache,
-                localColorSpaceCache
-              }).then(resolveGState, rejectGState);
+              const gStateFont = gState.get("Font");
+
+              if (!gStateFont) {
+                emptyGStateCache.set(name, gState.objId, true);
+                resolveGState();
+                return;
+              }
+
+              flushTextContentItem();
+              textState.fontName = null;
+              textState.fontSize = gStateFont[1];
+              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
             }).catch(function (reason) {
               if (reason instanceof _util.AbortException) {
                 return;
               }
 
               if (self.options.ignoreErrors) {
-                self.handler.send("UnsupportedFeature", {
-                  featureId: _util.UNSUPPORTED_FEATURES.errorExtGState
-                });
-                (0, _util.warn)(`getOperatorList - ignoring ExtGState: "${reason}".`);
+                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
                 return;
               }
 
               throw reason;
             }));
             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:
-          case _util.OPS.rectangle:
-            self.buildPath(operatorList, fn, args, parsingText);
-            continue;
-
-          case _util.OPS.markPoint:
-          case _util.OPS.markPointProps:
-          case _util.OPS.beginCompat:
-          case _util.OPS.endCompat:
-            continue;
-
-          case _util.OPS.beginMarkedContentProps:
-            if (!(0, _primitives.isName)(args[0])) {
-              (0, _util.warn)(`Expected name for beginMarkedContentProps arg0=${args[0]}`);
-              continue;
-            }
-
-            if (args[0].name === "OC") {
-              next(self.parseMarkedContentProps(args[1], resources).then(data => {
-                operatorList.addOp(_util.OPS.beginMarkedContentProps, ["OC", data]);
-              }).catch(reason => {
-                if (reason instanceof _util.AbortException) {
-                  return;
-                }
-
-                if (self.options.ignoreErrors) {
-                  self.handler.send("UnsupportedFeature", {
-                    featureId: _util.UNSUPPORTED_FEATURES.errorMarkedContent
-                  });
-                  (0, _util.warn)(`getOperatorList - ignoring beginMarkedContentProps: "${reason}".`);
-                  return;
-                }
-
-                throw reason;
-              }));
-              return;
-            }
-
-            args = [args[0].name];
-            break;
-
-          case _util.OPS.beginMarkedContent:
-          case _util.OPS.endMarkedContent:
-          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 (textContent.items.length >= sink.desiredSize) {
+          stop = true;
+          break;
+        }
       }
 
       if (stop) {
@@ -24317,7 +23915,8 @@ class PartialEvaluator {
         return;
       }
 
-      closePendingRestoreOPS();
+      flushTextContentItem();
+      enqueueChunk();
       resolve();
     }).catch(reason => {
       if (reason instanceof _util.AbortException) {
@@ -24325,11 +23924,9 @@ class PartialEvaluator {
       }
 
       if (this.options.ignoreErrors) {
-        this.handler.send("UnsupportedFeature", {
-          featureId: _util.UNSUPPORTED_FEATURES.errorOperatorList
-        });
-        (0, _util.warn)(`getOperatorList - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        closePendingRestoreOPS();
+        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
+        flushTextContentItem();
+        enqueueChunk();
         return;
       }
 
@@ -24337,1350 +23934,696 @@ class PartialEvaluator {
     });
   }
 
-  getTextContent({
-    stream,
-    task,
-    resources,
-    stateManager = null,
-    normalizeWhitespace = false,
-    combineTextItems = false,
-    sink,
-    seenStyles = new Set()
-  }) {
-    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;
-    const emptyXObjectCache = new _image_utils.LocalImageCache();
-    const emptyGStateCache = new _image_utils.LocalGStateCache();
-    var preprocessor = new EvaluatorPreprocessor(stream, xref, stateManager);
-    var textState;
-
-    function ensureTextContentItem() {
-      if (textContentItem.initialized) {
-        return textContentItem;
-      }
+  extractDataStructures(dict, baseDict, properties) {
+    const xref = this.xref;
+    let cidToGidBytes;
+    var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
+    var toUnicodePromise = toUnicode ? this.readToUnicode(toUnicode) : Promise.resolve(undefined);
 
-      const font = textState.font,
-            loadedName = font.loadedName;
+    if (properties.composite) {
+      var cidSystemInfo = dict.get("CIDSystemInfo");
 
-      if (!seenStyles.has(loadedName)) {
-        seenStyles.add(loadedName);
-        textContent.styles[loadedName] = {
-          fontFamily: font.fallbackName,
-          ascent: font.ascent,
-          descent: font.descent,
-          vertical: font.vertical
+      if ((0, _primitives.isDict)(cidSystemInfo)) {
+        properties.cidSystemInfo = {
+          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
+          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
+          supplement: cidSystemInfo.get("Supplement")
         };
       }
 
-      textContentItem.fontName = loadedName;
-      var tsm = [textState.fontSize * textState.textHScale, 0, 0, textState.fontSize, 0, textState.textRise];
-
-      if (font.isType3Font && textState.fontSize <= 1 && !(0, _util.isArrayEqual)(textState.fontMatrix, 
_util.FONT_IDENTITY_MATRIX)) {
-        const glyphHeight = font.bbox[3] - font.bbox[1];
+      var cidToGidMap = dict.get("CIDToGIDMap");
 
-        if (glyphHeight > 0) {
-          tsm[3] *= glyphHeight * textState.fontMatrix[3];
-        }
+      if ((0, _primitives.isStream)(cidToGidMap)) {
+        cidToGidBytes = cidToGidMap.getBytes();
       }
+    }
 
-      var trm = _util.Util.transform(textState.ctm, _util.Util.transform(textState.textMatrix, tsm));
+    var differences = [];
+    var baseEncodingName = null;
+    var encoding;
 
-      textContentItem.transform = trm;
+    if (dict.has("Encoding")) {
+      encoding = dict.get("Encoding");
 
-      if (!font.vertical) {
-        textContentItem.width = 0;
-        textContentItem.height = Math.hypot(trm[2], trm[3]);
-        textContentItem.vertical = false;
-      } else {
-        textContentItem.width = Math.hypot(trm[0], trm[1]);
-        textContentItem.height = 0;
-        textContentItem.vertical = true;
-      }
+      if ((0, _primitives.isDict)(encoding)) {
+        baseEncodingName = encoding.get("BaseEncoding");
+        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
 
-      const scaleLineX = Math.hypot(textState.textLineMatrix[0], textState.textLineMatrix[1]);
-      const scaleCtmX = Math.hypot(textState.ctm[0], textState.ctm[1]);
-      textContentItem.textAdvanceScale = scaleCtmX * scaleLineX;
-      textContentItem.lastAdvanceWidth = 0;
-      textContentItem.lastAdvanceHeight = 0;
-      var spaceWidth = font.spaceWidth / 1000 * textState.fontSize;
+        if (encoding.has("Differences")) {
+          var diffEncoding = encoding.get("Differences");
+          var index = 0;
 
-      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;
+          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 {
-        textContentItem.spaceWidth = 0;
-        textContentItem.fakeSpaceMin = Infinity;
-        textContentItem.fakeMultiSpaceMin = Infinity;
-        textContentItem.fakeMultiSpaceMax = 0;
-        textContentItem.textRunBreakAllowed = false;
+        throw new _util.FormatError("Encoding is not a Name nor a Dict");
       }
 
-      textContentItem.initialized = true;
-      return textContentItem;
+      if (baseEncodingName !== "MacRomanEncoding" && baseEncodingName !== "MacExpertEncoding" && 
baseEncodingName !== "WinAnsiEncoding") {
+        baseEncodingName = null;
+      }
     }
 
-    function replaceWhitespace(str) {
-      var i = 0,
-          ii = str.length,
-          code;
+    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;
 
-      while (i < ii && (code = str.charCodeAt(i)) >= 0x20 && code <= 0x7f) {
-        i++;
+      if (properties.type === "TrueType" && !isNonsymbolicFont) {
+        encoding = _encodings.WinAnsiEncoding;
       }
 
-      return i < ii ? str.replace(WhitespaceRegexp, " ") : str;
+      if (isSymbolicFont) {
+        encoding = _encodings.MacRomanEncoding;
+
+        if (!properties.file) {
+          if (/Symbol/i.test(properties.name)) {
+            encoding = _encodings.SymbolSetEncoding;
+          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
+            encoding = _encodings.ZapfDingbatsEncoding;
+          }
+        }
+      }
+
+      properties.defaultEncoding = encoding;
     }
 
-    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;
-      });
-    }
+    properties.differences = differences;
+    properties.baseEncodingName = baseEncodingName;
+    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
+    properties.dict = dict;
+    return toUnicodePromise.then(readToUnicode => {
+      properties.toUnicode = readToUnicode;
+      return this.buildToUnicode(properties);
+    }).then(builtToUnicode => {
+      properties.toUnicode = builtToUnicode;
 
-    function buildTextContentItem(chars) {
-      var font = textState.font;
-      var textChunk = ensureTextContentItem();
-      var width = 0;
-      var height = 0;
-      var glyphs = font.charsToGlyphs(chars);
+      if (cidToGidBytes) {
+        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
+      }
 
-      for (var i = 0; i < glyphs.length; i++) {
-        var glyph = glyphs[i];
-        var glyphWidth = null;
+      return properties;
+    });
+  }
 
-        if (font.vertical && glyph.vmetric) {
-          glyphWidth = glyph.vmetric[0];
-        } else {
-          glyphWidth = glyph.width;
-        }
+  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {
+    (0, _util.assert)(!properties.composite, "Must be a simple font.");
+    const toUnicode = [];
+    const encoding = properties.defaultEncoding.slice();
+    const baseEncodingName = properties.baseEncodingName;
+    const differences = properties.differences;
 
-        var glyphUnicode = glyph.unicode;
-        var NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
+    for (const charcode in differences) {
+      const glyphName = differences[charcode];
 
-        if (NormalizedUnicodes[glyphUnicode] !== undefined) {
-          glyphUnicode = NormalizedUnicodes[glyphUnicode];
-        }
+      if (glyphName === ".notdef") {
+        continue;
+      }
 
-        glyphUnicode = (0, _unicode.reverseIfRtl)(glyphUnicode);
-        var charSpacing = textState.charSpacing;
+      encoding[charcode] = glyphName;
+    }
 
-        if (glyph.isSpace) {
-          var wordSpacing = textState.wordSpacing;
-          charSpacing += wordSpacing;
+    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
 
-          if (wordSpacing > 0) {
-            addFakeSpaces(wordSpacing, textChunk.str);
-          }
-        }
+    for (const charcode in encoding) {
+      let glyphName = encoding[charcode];
 
-        var tx = 0;
-        var ty = 0;
+      if (glyphName === "") {
+        continue;
+      } else if (glyphsUnicodeMap[glyphName] === undefined) {
+        let code = 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;
-        }
+        switch (glyphName[0]) {
+          case "G":
+            if (glyphName.length === 3) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
 
-        textState.translateTextMatrix(tx, ty);
-        textChunk.str.push(glyphUnicode);
-      }
+            break;
 
-      if (!font.vertical) {
-        textChunk.lastAdvanceWidth = width;
-        textChunk.width += width;
-      } else {
-        textChunk.lastAdvanceHeight = height;
-        textChunk.height += Math.abs(height);
-      }
+          case "g":
+            if (glyphName.length === 5) {
+              code = parseInt(glyphName.substring(1), 16);
+            }
 
-      return textChunk;
-    }
+            break;
 
-    function addFakeSpaces(width, strBuf) {
-      if (width < textContentItem.fakeSpaceMin) {
-        return;
-      }
+          case "C":
+          case "c":
+            if (glyphName.length >= 3 && glyphName.length <= 4) {
+              const codeStr = glyphName.substring(1);
 
-      if (width < textContentItem.fakeMultiSpaceMin) {
-        strBuf.push(" ");
-        return;
-      }
+              if (forceGlyphs) {
+                code = parseInt(codeStr, 16);
+                break;
+              }
 
-      var fakeSpaces = Math.round(width / textContentItem.spaceWidth);
+              code = +codeStr;
 
-      while (fakeSpaces-- > 0) {
-        strBuf.push(" ");
-      }
-    }
+              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
+                return this._buildSimpleFontToUnicode(properties, true);
+              }
+            }
 
-    function flushTextContentItem() {
-      if (!textContentItem.initialized) {
-        return;
-      }
+            break;
 
-      if (!textContentItem.vertical) {
-        textContentItem.width *= textContentItem.textAdvanceScale;
-      } else {
-        textContentItem.height *= textContentItem.textAdvanceScale;
-      }
+          default:
+            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
 
-      textContent.items.push(runBidiTransform(textContentItem));
-      textContentItem.initialized = false;
-      textContentItem.str.length = 0;
-    }
+            if (unicode !== -1) {
+              code = unicode;
+            }
 
-    function enqueueChunk() {
-      const length = textContent.items.length;
+        }
 
-      if (length > 0) {
-        sink.enqueue(textContent, length);
-        textContent.items = [];
-        textContent.styles = Object.create(null);
-      }
-    }
+        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
+          if (baseEncodingName && code === +charcode) {
+            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
 
-    var timeSlotManager = new TimeSlotManager();
-    return new Promise(function promiseBody(resolve, reject) {
-      const next = function (promise) {
-        enqueueChunk();
-        Promise.all([promise, sink.ready]).then(function () {
-          try {
-            promiseBody(resolve, reject);
-          } catch (ex) {
-            reject(ex);
+            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
+              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+              continue;
+            }
           }
-        }, reject);
-      };
-
-      task.ensureNotTerminated();
-      timeSlotManager.reset();
-      var stop,
-          operation = {},
-          args = [];
-
-      while (!(stop = timeSlotManager.check())) {
-        args.length = 0;
-        operation.args = args;
 
-        if (!preprocessor.read(operation)) {
-          break;
+          toUnicode[charcode] = String.fromCodePoint(code);
         }
 
-        textState = stateManager.state;
-        var fn = operation.fn;
-        args = operation.args;
-        var advance, diff;
+        continue;
+      }
 
-        switch (fn | 0) {
-          case _util.OPS.setFont:
-            var fontNameArg = args[0].name,
-                fontSizeArg = args[1];
+      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
+    }
 
-            if (textState.font && fontNameArg === textState.fontName && fontSizeArg === textState.fontSize) {
-              break;
-            }
+    return new _fonts.ToUnicodeMap(toUnicode);
+  }
 
-            flushTextContentItem();
-            textState.fontName = fontNameArg;
-            textState.fontSize = fontSizeArg;
-            next(handleSetFont(fontNameArg, null));
-            return;
+  buildToUnicode(properties) {
+    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
 
-          case _util.OPS.setTextRise:
-            flushTextContentItem();
-            textState.textRise = args[0];
-            break;
+    if (properties.hasIncludedToUnicodeMap) {
+      if (!properties.composite && properties.hasEncoding) {
+        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
+      }
 
-          case _util.OPS.setHScale:
-            flushTextContentItem();
-            textState.textHScale = args[0] / 100;
-            break;
+      return Promise.resolve(properties.toUnicode);
+    }
 
-          case _util.OPS.setLeading:
-            flushTextContentItem();
-            textState.leading = args[0];
-            break;
+    if (!properties.composite) {
+      return Promise.resolve(this._buildSimpleFontToUnicode(properties));
+    }
 
-          case _util.OPS.moveText:
-            var isSameTextLine = !textState.font ? false : (textState.font.vertical ? args[0] : args[1]) === 
0;
-            advance = args[0] - args[1];
+    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"))) {
+      const registry = properties.cidSystemInfo.registry;
+      const ordering = properties.cidSystemInfo.ordering;
 
-            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;
-            }
+      const ucs2CMapName = _primitives.Name.get(registry + "-" + ordering + "-UCS2");
 
-            flushTextContentItem();
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
+      return _cmap.CMapFactory.create({
+        encoding: ucs2CMapName,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (ucs2CMap) {
+        const cMap = properties.cMap;
+        const toUnicode = [];
+        cMap.forEach(function (charcode, cid) {
+          if (cid > 0xffff) {
+            throw new _util.FormatError("Max size of CID is 65,535");
+          }
 
-          case _util.OPS.setLeadingMoveText:
-            flushTextContentItem();
-            textState.leading = -args[1];
-            textState.translateTextLineMatrix(args[0], args[1]);
-            textState.textMatrix = textState.textLineMatrix.slice();
-            break;
+          const ucs2 = ucs2CMap.lookup(cid);
 
-          case _util.OPS.nextLine:
-            flushTextContentItem();
-            textState.carriageReturn();
-            break;
+          if (ucs2) {
+            toUnicode[charcode] = String.fromCharCode((ucs2.charCodeAt(0) << 8) + ucs2.charCodeAt(1));
+          }
+        });
+        return new _fonts.ToUnicodeMap(toUnicode);
+      });
+    }
 
-          case _util.OPS.setTextMatrix:
-            advance = textState.calcTextLineMatrixAdvance(args[0], args[1], args[2], args[3], args[4], 
args[5]);
+    return Promise.resolve(new _fonts.IdentityToUnicodeMap(properties.firstChar, properties.lastChar));
+  }
 
-            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;
-            }
+  readToUnicode(toUnicode) {
+    var cmapObj = toUnicode;
 
-            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;
+    if ((0, _primitives.isName)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
+        }
 
-          case _util.OPS.setCharSpacing:
-            textState.charSpacing = args[0];
-            break;
+        return new _fonts.ToUnicodeMap(cmap.getMap());
+      });
+    } else if ((0, _primitives.isStream)(cmapObj)) {
+      return _cmap.CMapFactory.create({
+        encoding: cmapObj,
+        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
+        useCMap: null
+      }).then(function (cmap) {
+        if (cmap instanceof _cmap.IdentityCMap) {
+          return new _fonts.IdentityToUnicodeMap(0, 0xffff);
+        }
 
-          case _util.OPS.setWordSpacing:
-            textState.wordSpacing = args[0];
-            break;
+        var map = new Array(cmap.length);
+        cmap.forEach(function (charCode, token) {
+          var str = [];
 
-          case _util.OPS.beginText:
-            flushTextContentItem();
-            textState.textMatrix = _util.IDENTITY_MATRIX.slice();
-            textState.textLineMatrix = _util.IDENTITY_MATRIX.slice();
-            break;
+          for (var k = 0; k < token.length; k += 2) {
+            var w1 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
 
-          case _util.OPS.showSpacedText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
+            if ((w1 & 0xf800) !== 0xd800) {
+              str.push(w1);
               continue;
             }
 
-            var items = args[0];
-            var offset;
-
-            for (var 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;
-                var breakTextRun = false;
+            k += 2;
+            var w2 = token.charCodeAt(k) << 8 | token.charCodeAt(k + 1);
+            str.push(((w1 & 0x3ff) << 10) + (w2 & 0x3ff) + 0x10000);
+          }
 
-                if (textState.font.vertical) {
-                  offset = advance;
-                  textState.translateTextMatrix(0, offset);
-                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
+          map[charCode] = String.fromCodePoint.apply(String, str);
+        });
+        return new _fonts.ToUnicodeMap(map);
+      }, reason => {
+        if (reason instanceof _util.AbortException) {
+          return null;
+        }
 
-                  if (!breakTextRun) {
-                    textContentItem.height += offset;
-                  }
-                } else {
-                  advance = -advance;
-                  offset = advance * textState.textHScale;
-                  textState.translateTextMatrix(offset, 0);
-                  breakTextRun = textContentItem.textRunBreakAllowed && advance > 
textContentItem.fakeMultiSpaceMax;
+        if (this.options.ignoreErrors) {
+          this.handler.send("UnsupportedFeature", {
+            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
+          });
+          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
+          return null;
+        }
 
-                  if (!breakTextRun) {
-                    textContentItem.width += offset;
-                  }
-                }
+        throw reason;
+      });
+    }
 
-                if (breakTextRun) {
-                  flushTextContentItem();
-                } else if (advance > 0) {
-                  addFakeSpaces(advance, textContentItem.str);
-                }
-              }
-            }
+    return Promise.resolve(null);
+  }
 
-            break;
+  readCidToGidMap(glyphsData, toUnicode) {
+    var result = [];
 
-          case _util.OPS.showText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+    for (var j = 0, jj = glyphsData.length; j < jj; j++) {
+      var glyphID = glyphsData[j++] << 8 | glyphsData[j];
+      const code = j >> 1;
 
-            buildTextContentItem(args[0]);
-            break;
+      if (glyphID === 0 && !toUnicode.has(code)) {
+        continue;
+      }
 
-          case _util.OPS.nextLineShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+      result[code] = glyphID;
+    }
 
-            flushTextContentItem();
-            textState.carriageReturn();
-            buildTextContentItem(args[0]);
-            break;
+    return result;
+  }
 
-          case _util.OPS.nextLineSetSpacingShowText:
-            if (!stateManager.state.font) {
-              self.ensureStateFont(stateManager.state);
-              continue;
-            }
+  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;
 
-            flushTextContentItem();
-            textState.wordSpacing = args[0];
-            textState.charSpacing = args[1];
-            textState.carriageReturn();
-            buildTextContentItem(args[2]);
-            break;
+    if (properties.composite) {
+      defaultWidth = dict.has("DW") ? dict.get("DW") : 1000;
+      widths = dict.get("W");
 
-          case _util.OPS.paintXObject:
-            flushTextContentItem();
+      if (widths) {
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          start = xref.fetchIfRef(widths[i++]);
+          code = xref.fetchIfRef(widths[i]);
 
-            if (!xobjs) {
-              xobjs = resources.get("XObject") || _primitives.Dict.empty;
+          if (Array.isArray(code)) {
+            for (j = 0, jj = code.length; j < jj; j++) {
+              glyphsWidths[start++] = xref.fetchIfRef(code[j]);
             }
+          } else {
+            var width = xref.fetchIfRef(widths[++i]);
 
-            var name = args[0].name;
-
-            if (name && emptyXObjectCache.getByName(name)) {
-              break;
+            for (j = start; j <= code; j++) {
+              glyphsWidths[j] = width;
             }
+          }
+        }
+      }
 
-            next(new Promise(function (resolveXObject, rejectXObject) {
-              if (!name) {
-                throw new _util.FormatError("XObject must be referred to by name.");
-              }
-
-              let xobj = xobjs.getRaw(name);
-
-              if (xobj instanceof _primitives.Ref) {
-                if (emptyXObjectCache.getByRef(xobj)) {
-                  resolveXObject();
-                  return;
-                }
-
-                const globalImage = self.globalImageCache.getData(xobj, self.pageIndex);
+      if (properties.vertical) {
+        var vmetrics = dict.getArray("DW2") || [880, -1000];
+        defaultVMetrics = [vmetrics[1], defaultWidth * 0.5, vmetrics[0]];
+        vmetrics = dict.get("W2");
 
-                if (globalImage) {
-                  resolveXObject();
-                  return;
-                }
+        if (vmetrics) {
+          for (i = 0, ii = vmetrics.length; i < ii; i++) {
+            start = xref.fetchIfRef(vmetrics[i++]);
+            code = xref.fetchIfRef(vmetrics[i]);
 
-                xobj = xref.fetch(xobj);
+            if (Array.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])];
 
-              if (!(0, _primitives.isStream)(xobj)) {
-                throw new _util.FormatError("XObject should be a stream");
+              for (j = start; j <= code; j++) {
+                glyphsVMetrics[j] = vmetric;
               }
+            }
+          }
+        }
+      }
+    } else {
+      var firstChar = properties.firstChar;
+      widths = dict.get("Widths");
 
-              const type = xobj.dict.get("Subtype");
-
-              if (!(0, _primitives.isName)(type)) {
-                throw new _util.FormatError("XObject should have a Name subtype");
-              }
+      if (widths) {
+        j = firstChar;
 
-              if (type.name !== "Form") {
-                emptyXObjectCache.set(name, xobj.dict.objId, true);
-                resolveXObject();
-                return;
-              }
+        for (i = 0, ii = widths.length; i < ii; i++) {
+          glyphsWidths[j++] = xref.fetchIfRef(widths[i]);
+        }
 
-              const currentState = stateManager.state.clone();
-              const xObjStateManager = new StateManager(currentState);
-              const matrix = xobj.dict.getArray("Matrix");
+        defaultWidth = parseFloat(descriptor.get("MissingWidth")) || 0;
+      } else {
+        var baseFontName = dict.get("BaseFont");
 
-              if (Array.isArray(matrix) && matrix.length === 6) {
-                xObjStateManager.transform(matrix);
-              }
+        if ((0, _primitives.isName)(baseFontName)) {
+          var metrics = this.getBaseFontMetrics(baseFontName.name);
+          glyphsWidths = this.buildCharCodeToWidth(metrics.widths, properties);
+          defaultWidth = metrics.defaultWidth;
+        }
+      }
+    }
 
-              enqueueChunk();
-              const sinkWrapper = {
-                enqueueInvoked: false,
+    var isMonospace = true;
+    var firstWidth = defaultWidth;
 
-                enqueue(chunk, size) {
-                  this.enqueueInvoked = true;
-                  sink.enqueue(chunk, size);
-                },
+    for (var glyph in glyphsWidths) {
+      var glyphWidth = glyphsWidths[glyph];
 
-                get desiredSize() {
-                  return sink.desiredSize;
-                },
+      if (!glyphWidth) {
+        continue;
+      }
 
-                get ready() {
-                  return sink.ready;
-                }
+      if (!firstWidth) {
+        firstWidth = glyphWidth;
+        continue;
+      }
 
-              };
-              self.getTextContent({
-                stream: xobj,
-                task,
-                resources: xobj.dict.get("Resources") || resources,
-                stateManager: xObjStateManager,
-                normalizeWhitespace,
-                combineTextItems,
-                sink: sinkWrapper,
-                seenStyles
-              }).then(function () {
-                if (!sinkWrapper.enqueueInvoked) {
-                  emptyXObjectCache.set(name, xobj.dict.objId, true);
-                }
+      if (firstWidth !== glyphWidth) {
+        isMonospace = false;
+        break;
+      }
+    }
 
-                resolveXObject();
-              }, rejectXObject);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+    if (isMonospace) {
+      properties.flags |= _fonts.FontFlags.FixedPitch;
+    }
 
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring XObject: "${reason}".`);
-                return;
-              }
+    properties.defaultWidth = defaultWidth;
+    properties.widths = glyphsWidths;
+    properties.defaultVMetrics = defaultVMetrics;
+    properties.vmetrics = glyphsVMetrics;
+  }
 
-              throw reason;
-            }));
-            return;
+  isSerifFont(baseFontName) {
+    var fontNameWoStyle = baseFontName.split("-")[0];
+    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
+  }
 
-          case _util.OPS.setGState:
-            name = args[0].name;
+  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 (name && emptyGStateCache.getByName(name)) {
-              break;
-            }
+    if (!(lookupName in Metrics)) {
+      if (this.isSerifFont(name)) {
+        lookupName = "Times-Roman";
+      } else {
+        lookupName = "Helvetica";
+      }
+    }
 
-            next(new Promise(function (resolveGState, rejectGState) {
-              if (!name) {
-                throw new _util.FormatError("GState must be referred to by name.");
-              }
+    var glyphWidths = Metrics[lookupName];
 
-              const extGState = resources.get("ExtGState");
+    if ((0, _util.isNum)(glyphWidths)) {
+      defaultWidth = glyphWidths;
+      monospace = true;
+    } else {
+      widths = glyphWidths();
+    }
 
-              if (!(extGState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("ExtGState should be a dictionary.");
-              }
+    return {
+      defaultWidth,
+      monospace,
+      widths
+    };
+  }
 
-              const gState = extGState.get(name);
+  buildCharCodeToWidth(widthsByGlyphName, properties) {
+    var widths = Object.create(null);
+    var differences = properties.differences;
+    var encoding = properties.defaultEncoding;
 
-              if (!(gState instanceof _primitives.Dict)) {
-                throw new _util.FormatError("GState should be a dictionary.");
-              }
+    for (var charCode = 0; charCode < 256; charCode++) {
+      if (charCode in differences && widthsByGlyphName[differences[charCode]]) {
+        widths[charCode] = widthsByGlyphName[differences[charCode]];
+        continue;
+      }
 
-              const gStateFont = gState.get("Font");
+      if (charCode in encoding && widthsByGlyphName[encoding[charCode]]) {
+        widths[charCode] = widthsByGlyphName[encoding[charCode]];
+        continue;
+      }
+    }
 
-              if (!gStateFont) {
-                emptyGStateCache.set(name, gState.objId, true);
-                resolveGState();
-                return;
-              }
+    return widths;
+  }
 
-              flushTextContentItem();
-              textState.fontName = null;
-              textState.fontSize = gStateFont[1];
-              handleSetFont(null, gStateFont[0]).then(resolveGState, rejectGState);
-            }).catch(function (reason) {
-              if (reason instanceof _util.AbortException) {
-                return;
-              }
+  preEvaluateFont(dict) {
+    var baseDict = dict;
+    var type = dict.get("Subtype");
 
-              if (self.options.ignoreErrors) {
-                (0, _util.warn)(`getTextContent - ignoring ExtGState: "${reason}".`);
-                return;
-              }
+    if (!(0, _primitives.isName)(type)) {
+      throw new _util.FormatError("invalid font Subtype");
+    }
 
-              throw reason;
-            }));
-            return;
-        }
+    var composite = false;
+    var uint8array;
 
-        if (textContent.items.length >= sink.desiredSize) {
-          stop = true;
-          break;
-        }
-      }
+    if (type.name === "Type0") {
+      var df = dict.get("DescendantFonts");
 
-      if (stop) {
-        next(deferred);
-        return;
+      if (!df) {
+        throw new _util.FormatError("Descendant fonts are not specified");
       }
 
-      flushTextContentItem();
-      enqueueChunk();
-      resolve();
-    }).catch(reason => {
-      if (reason instanceof _util.AbortException) {
-        return;
-      }
+      dict = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
 
-      if (this.options.ignoreErrors) {
-        (0, _util.warn)(`getTextContent - ignoring errors during "${task.name}" ` + `task: "${reason}".`);
-        flushTextContentItem();
-        enqueueChunk();
-        return;
+      if (!(dict instanceof _primitives.Dict)) {
+        throw new _util.FormatError("Descendant font is not a dictionary.");
       }
 
-      throw reason;
-    });
-  }
-
-  extractDataStructures(dict, baseDict, properties) {
-    const xref = this.xref;
-    let cidToGidBytes;
-    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");
+      type = dict.get("Subtype");
 
-      if ((0, _primitives.isDict)(cidSystemInfo)) {
-        properties.cidSystemInfo = {
-          registry: (0, _util.stringToPDFString)(cidSystemInfo.get("Registry")),
-          ordering: (0, _util.stringToPDFString)(cidSystemInfo.get("Ordering")),
-          supplement: cidSystemInfo.get("Supplement")
-        };
+      if (!(0, _primitives.isName)(type)) {
+        throw new _util.FormatError("invalid font Subtype");
       }
 
-      var cidToGidMap = dict.get("CIDToGIDMap");
-
-      if ((0, _primitives.isStream)(cidToGidMap)) {
-        cidToGidBytes = cidToGidMap.getBytes();
-      }
+      composite = true;
     }
 
-    var differences = [];
-    var baseEncodingName = null;
-    var encoding;
-
-    if (dict.has("Encoding")) {
-      encoding = dict.get("Encoding");
+    var descriptor = dict.get("FontDescriptor");
 
-      if ((0, _primitives.isDict)(encoding)) {
-        baseEncodingName = encoding.get("BaseEncoding");
-        baseEncodingName = (0, _primitives.isName)(baseEncodingName) ? baseEncodingName.name : null;
+    if (descriptor) {
+      var hash = new _murmurhash.MurmurHash3_64();
+      var encoding = baseDict.getRaw("Encoding");
 
-        if (encoding.has("Differences")) {
-          var diffEncoding = encoding.get("Differences");
-          var index = 0;
+      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)) {
+        for (const entry of encoding.getRawValues()) {
+          if ((0, _primitives.isName)(entry)) {
+            hash.update(entry.name);
+          } else if ((0, _primitives.isRef)(entry)) {
+            hash.update(entry.toString());
+          } else if (Array.isArray(entry)) {
+            var diffLength = entry.length,
+                diffBuf = new Array(diffLength);
 
-          for (var j = 0, jj = diffEncoding.length; j < jj; j++) {
-            var data = xref.fetchIfRef(diffEncoding[j]);
+            for (var j = 0; j < diffLength; j++) {
+              var diffEntry = entry[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}`);
+              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());
           }
         }
-      } 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;
+      const firstChar = dict.get("FirstChar") || 0;
+      const lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
+      hash.update(`${firstChar}-${lastChar}`);
+      var toUnicode = dict.get("ToUnicode") || baseDict.get("ToUnicode");
 
-      if (properties.type === "TrueType" && !isNonsymbolicFont) {
-        encoding = _encodings.WinAnsiEncoding;
+      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);
       }
 
-      if (isSymbolicFont) {
-        encoding = _encodings.MacRomanEncoding;
+      var widths = dict.get("Widths") || baseDict.get("Widths");
 
-        if (!properties.file) {
-          if (/Symbol/i.test(properties.name)) {
-            encoding = _encodings.SymbolSetEncoding;
-          } else if (/Dingbats|Wingdings/i.test(properties.name)) {
-            encoding = _encodings.ZapfDingbatsEncoding;
-          }
-        }
+      if (widths) {
+        uint8array = new Uint8Array(new Uint32Array(widths).buffer);
+        hash.update(uint8array);
       }
-
-      properties.defaultEncoding = encoding;
     }
 
-    properties.differences = differences;
-    properties.baseEncodingName = baseEncodingName;
-    properties.hasEncoding = !!baseEncodingName || differences.length > 0;
-    properties.dict = dict;
-    return toUnicodePromise.then(readToUnicode => {
-      properties.toUnicode = readToUnicode;
-      return this.buildToUnicode(properties);
-    }).then(builtToUnicode => {
-      properties.toUnicode = builtToUnicode;
-
-      if (cidToGidBytes) {
-        properties.cidToGidMap = this.readCidToGidMap(cidToGidBytes, builtToUnicode);
-      }
-
-      return properties;
-    });
+    return {
+      descriptor,
+      dict,
+      baseDict,
+      composite,
+      type: type.name,
+      hash: hash ? hash.hexdigest() : ""
+    };
   }
 
-  _buildSimpleFontToUnicode(properties, forceGlyphs = false) {
-    (0, _util.assert)(!properties.composite, "Must be a simple font.");
-    const toUnicode = [];
-    const encoding = properties.defaultEncoding.slice();
-    const baseEncodingName = properties.baseEncodingName;
-    const differences = properties.differences;
-
-    for (const charcode in differences) {
-      const glyphName = differences[charcode];
-
-      if (glyphName === ".notdef") {
-        continue;
-      }
-
-      encoding[charcode] = glyphName;
-    }
+  async translateFont(preEvaluatedFont) {
+    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;
+    const firstChar = dict.get("FirstChar") || 0;
+    const lastChar = dict.get("LastChar") || maxCharIndex;
 
-    const glyphsUnicodeMap = (0, _glyphlist.getGlyphsUnicode)();
+    if (!descriptor) {
+      if (type === "Type3") {
+        descriptor = new _primitives.Dict(null);
+        descriptor.set("FontName", _primitives.Name.get(type));
+        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
+      } else {
+        var baseFontName = dict.get("BaseFont");
 
-    for (const charcode in encoding) {
-      let glyphName = encoding[charcode];
+        if (!(0, _primitives.isName)(baseFontName)) {
+          throw new _util.FormatError("Base font is not specified");
+        }
 
-      if (glyphName === "") {
-        continue;
-      } else if (glyphsUnicodeMap[glyphName] === undefined) {
-        let code = 0;
+        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,
+          name: baseFontName,
+          widths: metrics.widths,
+          defaultWidth: metrics.defaultWidth,
+          flags,
+          firstChar,
+          lastChar
+        };
+        const widths = dict.get("Widths");
+        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
+          if (widths) {
+            const glyphWidths = [];
+            let j = firstChar;
 
-        switch (glyphName[0]) {
-          case "G":
-            if (glyphName.length === 3) {
-              code = parseInt(glyphName.substring(1), 16);
+            for (let i = 0, ii = widths.length; i < ii; i++) {
+              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
             }
 
-            break;
-
-          case "g":
-            if (glyphName.length === 5) {
-              code = parseInt(glyphName.substring(1), 16);
-            }
+            newProperties.widths = glyphWidths;
+          } else {
+            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
+          }
 
-            break;
+          return new _fonts.Font(baseFontName, null, newProperties);
+        });
+      }
+    }
 
-          case "C":
-          case "c":
-            if (glyphName.length >= 3 && glyphName.length <= 4) {
-              const codeStr = glyphName.substring(1);
+    var fontName = descriptor.get("FontName");
+    var baseFont = dict.get("BaseFont");
 
-              if (forceGlyphs) {
-                code = parseInt(codeStr, 16);
-                break;
-              }
+    if ((0, _util.isString)(fontName)) {
+      fontName = _primitives.Name.get(fontName);
+    }
 
-              code = +codeStr;
+    if ((0, _util.isString)(baseFont)) {
+      baseFont = _primitives.Name.get(baseFont);
+    }
 
-              if (Number.isNaN(code) && Number.isInteger(parseInt(codeStr, 16))) {
-                return this._buildSimpleFontToUnicode(properties, true);
-              }
-            }
+    if (type !== "Type3") {
+      var fontNameStr = fontName && fontName.name;
+      var baseFontStr = baseFont && baseFont.name;
 
-            break;
+      if (fontNameStr !== baseFontStr) {
+        (0, _util.info)(`The FontDescriptor's FontName is "${fontNameStr}" but ` + `should be the same as 
the Font's BaseFont "${baseFontStr}".`);
 
-          default:
-            const unicode = (0, _unicode.getUnicodeForGlyph)(glyphName, glyphsUnicodeMap);
+        if (fontNameStr && baseFontStr && baseFontStr.startsWith(fontNameStr)) {
+          fontName = baseFont;
+        }
+      }
+    }
 
-            if (unicode !== -1) {
-              code = unicode;
-            }
+    fontName = fontName || baseFont;
 
-        }
+    if (!(0, _primitives.isName)(fontName)) {
+      throw new _util.FormatError("invalid font name");
+    }
 
-        if (code > 0 && code <= 0x10ffff && Number.isInteger(code)) {
-          if (baseEncodingName && code === +charcode) {
-            const baseEncoding = (0, _encodings.getEncoding)(baseEncodingName);
+    var fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
 
-            if (baseEncoding && (glyphName = baseEncoding[charcode])) {
-              toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
-              continue;
-            }
-          }
+    if (fontFile) {
+      if (fontFile.dict) {
+        var subtype = fontFile.dict.get("Subtype");
 
-          toUnicode[charcode] = String.fromCodePoint(code);
+        if (subtype) {
+          subtype = subtype.name;
         }
 
-        continue;
-      }
-
-      toUnicode[charcode] = String.fromCharCode(glyphsUnicodeMap[glyphName]);
-    }
-
-    return new _fonts.ToUnicodeMap(toUnicode);
-  }
-
-  buildToUnicode(properties) {
-    properties.hasIncludedToUnicodeMap = !!properties.toUnicode && properties.toUnicode.length > 0;
-
-    if (properties.hasIncludedToUnicodeMap) {
-      if (!properties.composite && properties.hasEncoding) {
-        properties.fallbackToUnicode = this._buildSimpleFontToUnicode(properties);
-      }
-
-      return Promise.resolve(properties.toUnicode);
-    }
-
-    if (!properties.composite) {
-      return Promise.resolve(this._buildSimpleFontToUnicode(properties));
-    }
-
-    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"))) {
-      const registry = properties.cidSystemInfo.registry;
-      const ordering = properties.cidSystemInfo.ordering;
-
-      const ucs2CMapName = _primitives.Name.get(registry + "-" + ordering + "-UCS2");
-
-      return _cmap.CMapFactory.create({
-        encoding: ucs2CMapName,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        useCMap: null
-      }).then(function (ucs2CMap) {
-        const cMap = properties.cMap;
-        const toUnicode = [];
-        cMap.forEach(function (charcode, cid) {
-          if (cid > 0xffff) {
-            throw new _util.FormatError("Max size of CID is 65,535");
-          }
-
-          const 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(toUnicode) {
-    var cmapObj = toUnicode;
-
-    if ((0, _primitives.isName)(cmapObj)) {
-      return _cmap.CMapFactory.create({
-        encoding: cmapObj,
-        fetchBuiltInCMap: this._fetchBuiltInCMapBound,
-        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._fetchBuiltInCMapBound,
-        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.fromCodePoint.apply(String, str);
-        });
-        return new _fonts.ToUnicodeMap(map);
-      }, reason => {
-        if (reason instanceof _util.AbortException) {
-          return null;
-        }
-
-        if (this.options.ignoreErrors) {
-          this.handler.send("UnsupportedFeature", {
-            featureId: _util.UNSUPPORTED_FEATURES.errorFontToUnicode
-          });
-          (0, _util.warn)(`readToUnicode - ignoring ToUnicode data: "${reason}".`);
-          return null;
-        }
-
-        throw reason;
-      });
-    }
-
-    return Promise.resolve(null);
-  }
-
-  readCidToGidMap(glyphsData, toUnicode) {
-    var result = [];
-
-    for (var j = 0, jj = glyphsData.length; j < jj; j++) {
-      var glyphID = glyphsData[j++] << 8 | glyphsData[j];
-      const code = j >> 1;
-
-      if (glyphID === 0 && !toUnicode.has(code)) {
-        continue;
-      }
-
-      result[code] = glyphID;
-    }
-
-    return result;
-  }
-
-  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.has("DW") ? 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 (Array.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 (Array.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(baseFontName) {
-    var fontNameWoStyle = baseFontName.split("-")[0];
-    return fontNameWoStyle in (0, _standard_fonts.getSerifFonts)() || fontNameWoStyle.search(/serif/gi) !== 
-1;
-  }
-
-  getBaseFontMetrics(name) {
-    var defaultWidth = 0;
-    var widths = Object.create(null);
-    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,
-      monospace,
-      widths
-    };
-  }
-
-  buildCharCodeToWidth(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(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 = Array.isArray(df) ? this.xref.fetchIfRef(df[0]) : df;
-
-      if (!(dict instanceof _primitives.Dict)) {
-        throw new _util.FormatError("Descendant font is not a dictionary.");
-      }
-
-      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)) {
-        for (const entry of encoding.getRawValues()) {
-          if ((0, _primitives.isName)(entry)) {
-            hash.update(entry.name);
-          } else if ((0, _primitives.isRef)(entry)) {
-            hash.update(entry.toString());
-          } else if (Array.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());
-          }
-        }
-      }
-
-      const firstChar = dict.get("FirstChar") || 0;
-      const lastChar = dict.get("LastChar") || (composite ? 0xffff : 0xff);
-      hash.update(`${firstChar}-${lastChar}`);
-      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,
-      dict,
-      baseDict,
-      composite,
-      type: type.name,
-      hash: hash ? hash.hexdigest() : ""
-    };
-  }
-
-  async translateFont(preEvaluatedFont) {
-    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;
-    const firstChar = dict.get("FirstChar") || 0;
-    const lastChar = dict.get("LastChar") || maxCharIndex;
-
-    if (!descriptor) {
-      if (type === "Type3") {
-        descriptor = new _primitives.Dict(null);
-        descriptor.set("FontName", _primitives.Name.get(type));
-        descriptor.set("FontBBox", dict.getArray("FontBBox") || [0, 0, 0, 0]);
-      } 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,
-          name: baseFontName,
-          widths: metrics.widths,
-          defaultWidth: metrics.defaultWidth,
-          flags,
-          firstChar,
-          lastChar
-        };
-        const widths = dict.get("Widths");
-        return this.extractDataStructures(dict, dict, properties).then(newProperties => {
-          if (widths) {
-            const glyphWidths = [];
-            let j = firstChar;
-
-            for (let i = 0, ii = widths.length; i < ii; i++) {
-              glyphWidths[j++] = this.xref.fetchIfRef(widths[i]);
-            }
-
-            newProperties.widths = glyphWidths;
-          } else {
-            newProperties.widths = this.buildCharCodeToWidth(metrics.widths, newProperties);
-          }
-
-          return new _fonts.Font(baseFontName, null, newProperties);
-        });
-      }
-    }
-
-    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.startsWith(fontNameStr)) {
-          fontName = baseFont;
-        }
-      }
-    }
-
-    fontName = fontName || baseFont;
-
-    if (!(0, _primitives.isName)(fontName)) {
-      throw new _util.FormatError("invalid font name");
-    }
-
-    let fontFile;
-
-    try {
-      fontFile = descriptor.get("FontFile", "FontFile2", "FontFile3");
-    } catch (ex) {
-      if (!this.options.ignoreErrors) {
-        throw ex;
-      }
-
-      (0, _util.warn)(`translateFont - fetching "${fontName.name}" font file: "${ex}".`);
-      fontFile = new _stream.NullStream();
-    }
-
-    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");
+        var length1 = fontFile.dict.get("Length1");
+        var length2 = fontFile.dict.get("Length2");
+        var length3 = fontFile.dict.get("Length3");
       }
     }
 
@@ -26563,7 +25506,7 @@ class EvaluatorPreprocessor {
 exports.EvaluatorPreprocessor = EvaluatorPreprocessor;
 
 /***/ }),
-/* 30 */
+/* 28 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -26866,21 +25809,21 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
   var MAX_NUM_SIZE = 16;
   var MAX_ENCODED_NUM_SIZE = 19;
 
-  class BinaryCMapStream {
-    constructor(data) {
-      this.buffer = data;
-      this.pos = 0;
-      this.end = data.length;
-      this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
-    }
+  function BinaryCMapStream(data) {
+    this.buffer = data;
+    this.pos = 0;
+    this.end = data.length;
+    this.tmpBuf = new Uint8Array(MAX_ENCODED_NUM_SIZE);
+  }
 
+  BinaryCMapStream.prototype = {
     readByte() {
       if (this.pos >= this.end) {
         return -1;
       }
 
       return this.buffer[this.pos++];
-    }
+    },
 
     readNumber() {
       var n = 0;
@@ -26898,17 +25841,17 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
       } while (!last);
 
       return n;
-    }
+    },
 
     readSigned() {
       var n = this.readNumber();
       return n & 1 ? ~(n >>> 1) : n >>> 1;
-    }
+    },
 
     readHex(num, size) {
       num.set(this.buffer.subarray(this.pos, this.pos + size + 1));
       this.pos += size + 1;
-    }
+    },
 
     readHexNumber(num, size) {
       var last;
@@ -26941,7 +25884,7 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
         buffer >>= 8;
         bufferSize -= 8;
       }
-    }
+    },
 
     readHexSigned(num, size) {
       this.readHexNumber(num, size);
@@ -26952,7 +25895,7 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
         c = (c & 1) << 8 | num[i];
         num[i] = c >> 1 ^ sign;
       }
-    }
+    },
 
     readString() {
       var len = this.readNumber();
@@ -26965,10 +25908,10 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
       return s;
     }
 
-  }
+  };
 
-  class BinaryCMapReader {
-    async process(data, cMap, extend) {
+  function processBinaryCMap(data, cMap, extend) {
+    return new Promise(function (resolve, reject) {
       var stream = new BinaryCMapStream(data);
       var header = stream.readByte();
       cMap.vertical = !!(header & 1);
@@ -27002,7 +25945,7 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
         var dataSize = b & 15;
 
         if (dataSize + 1 > MAX_NUM_SIZE) {
-          throw new Error("BinaryCMapReader.process: Invalid dataSize.");
+          throw new Error("processBinaryCMap: Invalid dataSize.");
         }
 
         var ucs2DataSize = 1;
@@ -27135,19 +26078,25 @@ var BinaryCMapReader = function BinaryCMapReaderClosure() {
             break;
 
           default:
-            throw new Error(`BinaryCMapReader.process - unknown type: ${type}`);
+            reject(new Error("processBinaryCMap: Unknown type: " + type));
+            return;
         }
       }
 
       if (useCMap) {
-        return extend(useCMap);
+        resolve(extend(useCMap));
+        return;
       }
 
-      return cMap;
-    }
-
+      resolve(cMap);
+    });
   }
 
+  function BinaryCMapReader() {}
+
+  BinaryCMapReader.prototype = {
+    process: processBinaryCMap
+  };
   return BinaryCMapReader;
 }();
 
@@ -27326,7 +26275,7 @@ var CMapFactory = function CMapFactoryClosure() {
     }
   }
 
-  async function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
+  function parseCMap(cMap, lexer, fetchBuiltInCMap, useCMap) {
     var previous;
     var embeddedUseCMap;
 
@@ -27395,63 +26344,65 @@ var CMapFactory = function CMapFactoryClosure() {
       return extendCMap(cMap, fetchBuiltInCMap, useCMap);
     }
 
-    return cMap;
+    return Promise.resolve(cMap);
   }
 
-  async function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
-    cMap.useCMap = await createBuiltInCMap(useCMap, fetchBuiltInCMap);
+  function extendCMap(cMap, fetchBuiltInCMap, useCMap) {
+    return createBuiltInCMap(useCMap, fetchBuiltInCMap).then(function (newCMap) {
+      cMap.useCMap = newCMap;
 
-    if (cMap.numCodespaceRanges === 0) {
-      var useCodespaceRanges = cMap.useCMap.codespaceRanges;
+      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;
-    }
+        for (var i = 0; i < useCodespaceRanges.length; i++) {
+          cMap.codespaceRanges[i] = useCodespaceRanges[i].slice();
+        }
 
-    cMap.useCMap.forEach(function (key, value) {
-      if (!cMap.contains(key)) {
-        cMap.mapOne(key, cMap.useCMap.lookup(key));
+        cMap.numCodespaceRanges = cMap.useCMap.numCodespaceRanges;
       }
+
+      cMap.useCMap.forEach(function (key, value) {
+        if (!cMap.contains(key)) {
+          cMap.mapOne(key, cMap.useCMap.lookup(key));
+        }
+      });
+      return cMap;
     });
-    return cMap;
   }
 
-  async function createBuiltInCMap(name, fetchBuiltInCMap) {
+  function createBuiltInCMap(name, fetchBuiltInCMap) {
     if (name === "Identity-H") {
-      return new IdentityCMap(false, 2);
+      return Promise.resolve(new IdentityCMap(false, 2));
     } else if (name === "Identity-V") {
-      return new IdentityCMap(true, 2);
+      return Promise.resolve(new IdentityCMap(true, 2));
     }
 
     if (!BUILT_IN_CMAPS.includes(name)) {
-      throw new Error("Unknown CMap name: " + name);
+      return Promise.reject(new Error("Unknown CMap name: " + name));
     }
 
     if (!fetchBuiltInCMap) {
-      throw new Error("Built-in CMap parameters are not provided.");
+      return Promise.reject(new Error("Built-in CMap parameters are not provided."));
     }
 
-    const {
-      cMapData,
-      compressionType
-    } = await fetchBuiltInCMap(name);
-    var cMap = new CMap(true);
-
-    if (compressionType === _util.CMapCompressionType.BINARY) {
-      return new BinaryCMapReader().process(cMapData, cMap, useCMap => {
-        return extendCMap(cMap, fetchBuiltInCMap, useCMap);
-      });
-    }
+    return fetchBuiltInCMap(name).then(function (data) {
+      var cMapData = data.cMapData,
+          compressionType = data.compressionType;
+      var cMap = new CMap(true);
 
-    if (compressionType === _util.CMapCompressionType.NONE) {
-      var lexer = new _parser.Lexer(new _stream.Stream(cMapData));
-      return parseCMap(cMap, lexer, fetchBuiltInCMap, null);
-    }
+      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);
+      }
 
-    throw new Error("TODO: Only BINARY/NONE CMap compression is currently supported.");
+      return Promise.reject(new Error("TODO: Only BINARY/NONE CMap compression is currently supported."));
+    });
   }
 
   return {
@@ -27463,13 +26414,15 @@ var CMapFactory = function CMapFactoryClosure() {
       if ((0, _primitives.isName)(encoding)) {
         return createBuiltInCMap(encoding.name, fetchBuiltInCMap);
       } else if ((0, _primitives.isStream)(encoding)) {
-        const parsedCMap = await parseCMap(new CMap(), new _parser.Lexer(encoding), fetchBuiltInCMap, 
useCMap);
-
-        if (parsedCMap.isIdentityCMap) {
-          return createBuiltInCMap(parsedCMap.name, fetchBuiltInCMap);
-        }
+        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 parsedCMap;
+        });
       }
 
       throw new Error("Encoding required.");
@@ -27481,7 +26434,7 @@ var CMapFactory = function CMapFactoryClosure() {
 exports.CMapFactory = CMapFactory;
 
 /***/ }),
-/* 31 */
+/* 29 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -27494,25 +26447,25 @@ exports.ToUnicodeMap = exports.SEAC_ANALYSIS_ENABLED = exports.IdentityToUnicode
 
 var _util = __w_pdfjs_require__(2);
 
-var _cff_parser = __w_pdfjs_require__(32);
+var _cff_parser = __w_pdfjs_require__(30);
 
-var _glyphlist = __w_pdfjs_require__(35);
+var _glyphlist = __w_pdfjs_require__(33);
 
-var _encodings = __w_pdfjs_require__(34);
+var _encodings = __w_pdfjs_require__(32);
 
-var _standard_fonts = __w_pdfjs_require__(36);
+var _standard_fonts = __w_pdfjs_require__(34);
 
-var _unicode = __w_pdfjs_require__(37);
+var _unicode = __w_pdfjs_require__(35);
 
 var _core_utils = __w_pdfjs_require__(8);
 
-var _font_renderer = __w_pdfjs_require__(38);
+var _font_renderer = __w_pdfjs_require__(36);
 
-var _cmap = __w_pdfjs_require__(30);
+var _cmap = __w_pdfjs_require__(28);
 
 var _stream = __w_pdfjs_require__(12);
 
-var _type1_parser = __w_pdfjs_require__(39);
+var _type1_parser = __w_pdfjs_require__(37);
 
 const PRIVATE_USE_AREAS = [[0xe000, 0xf8ff], [0x100000, 0x10fffd]];
 var PDF_GLYPH_SPACE_UNITS = 1000;
@@ -29890,22 +28843,15 @@ var Font = function FontClosure() {
           }
         }
 
-        if (properties.glyphNames && (baseEncoding.length || this.differences.length)) {
+        if (properties.glyphNames && baseEncoding.length) {
           for (let i = 0; i < 256; ++i) {
-            if (charCodeToGlyphId[i] !== undefined) {
-              continue;
-            }
-
-            glyphName = this.differences[i] || baseEncoding[i];
-
-            if (!glyphName) {
-              continue;
-            }
+            if (charCodeToGlyphId[i] === undefined && baseEncoding[i]) {
+              glyphName = baseEncoding[i];
+              const glyphId = properties.glyphNames.indexOf(glyphName);
 
-            const glyphId = properties.glyphNames.indexOf(glyphName);
-
-            if (glyphId > 0 && hasGlyph(glyphId)) {
-              charCodeToGlyphId[i] = glyphId;
+              if (glyphId > 0 && hasGlyph(glyphId)) {
+                charCodeToGlyphId[i] = glyphId;
+              }
             }
           }
         }
@@ -30814,7 +29760,7 @@ var CFFFont = function CFFFontClosure() {
 }();
 
 /***/ }),
-/* 32 */
+/* 30 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -30826,17 +29772,17 @@ exports.CFFTopDict = exports.CFFStrings = exports.CFFStandardStrings = exports.C
 
 var _util = __w_pdfjs_require__(2);
 
-var _charsets = __w_pdfjs_require__(33);
+var _charsets = __w_pdfjs_require__(31);
 
-var _encodings = __w_pdfjs_require__(34);
+var _encodings = __w_pdfjs_require__(32);
 
-const MAX_SUBR_NESTING = 10;
-const 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", "parag
 raph", "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", "acirc
 umflex", "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", "hyphen
 superior", "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", "periodinfe
 rior", "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 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", "paragra
 ph", "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", "acircum
 flex", "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", "hyphensu
 perior", "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", "periodinferi
 or", "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"];
 exports.CFFStandardStrings = CFFStandardStrings;
 const NUM_STANDARD_CFF_STRINGS = 391;
 
-const CFFParser = function CFFParserClosure() {
-  const CharstringValidationData = [null, {
+var CFFParser = function CFFParserClosure() {
+  var CharstringValidationData = [null, {
     id: "hstem",
     min: 2,
     stackClearing: true,
@@ -30933,7 +29879,7 @@ const CFFParser = function CFFParserClosure() {
     min: 4,
     resetStack: true
   }];
-  const CharstringValidationData12 = [null, null, null, {
+  var CharstringValidationData12 = [null, null, null, {
     id: "and",
     min: 2,
     stackDelta: -1
@@ -31054,16 +30000,16 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parse() {
-      const properties = this.properties;
-      const cff = new CFF();
+      var properties = this.properties;
+      var cff = new CFF();
       this.cff = cff;
-      const header = this.parseHeader();
-      const nameIndex = this.parseIndex(header.endPos);
-      const topDictIndex = this.parseIndex(nameIndex.endPos);
-      const stringIndex = this.parseIndex(topDictIndex.endPos);
-      const globalSubrIndex = this.parseIndex(stringIndex.endPos);
-      const topDictParsed = this.parseDict(topDictIndex.obj.get(0));
-      const topDict = this.createDict(CFFTopDict, topDictParsed, cff.strings);
+      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);
@@ -31071,15 +30017,15 @@ const CFFParser = function CFFParserClosure() {
       cff.globalSubrIndex = globalSubrIndex.obj;
       this.parsePrivateDict(cff.topDict);
       cff.isCIDFont = topDict.hasName("ROS");
-      const charStringOffset = topDict.getByName("CharStrings");
-      const charStringIndex = this.parseIndex(charStringOffset).obj;
-      const fontMatrix = topDict.getByName("FontMatrix");
+      var charStringOffset = topDict.getByName("CharStrings");
+      var charStringIndex = this.parseIndex(charStringOffset).obj;
+      var fontMatrix = topDict.getByName("FontMatrix");
 
       if (fontMatrix) {
         properties.fontMatrix = fontMatrix;
       }
 
-      const fontBBox = topDict.getByName("FontBBox");
+      var fontBBox = topDict.getByName("FontBBox");
 
       if (fontBBox) {
         properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
@@ -31087,14 +30033,14 @@ const CFFParser = function CFFParserClosure() {
         properties.ascentScaled = true;
       }
 
-      let charset, encoding;
+      var charset, encoding;
 
       if (cff.isCIDFont) {
-        const fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj;
+        var fdArrayIndex = this.parseIndex(topDict.getByName("FDArray")).obj;
 
-        for (let i = 0, ii = fdArrayIndex.count; i < ii; ++i) {
-          const dictRaw = fdArrayIndex.get(i);
-          const fontDict = this.createDict(CFFTopDict, this.parseDict(dictRaw), cff.strings);
+        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);
         }
@@ -31109,7 +30055,7 @@ const CFFParser = function CFFParserClosure() {
 
       cff.charset = charset;
       cff.encoding = encoding;
-      const charStringsAndSeacs = this.parseCharStrings({
+      var charStringsAndSeacs = this.parseCharStrings({
         charStrings: charStringIndex,
         localSubrIndex: topDict.privateDict.subrsIndex,
         globalSubrIndex: globalSubrIndex.obj,
@@ -31124,9 +30070,9 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseHeader() {
-      let bytes = this.bytes;
-      const bytesLength = bytes.length;
-      let offset = 0;
+      var bytes = this.bytes;
+      var bytesLength = bytes.length;
+      var offset = 0;
 
       while (offset < bytesLength && bytes[offset] !== 1) {
         ++offset;
@@ -31142,11 +30088,11 @@ const CFFParser = function CFFParserClosure() {
         this.bytes = bytes;
       }
 
-      const major = bytes[0];
-      const minor = bytes[1];
-      const hdrSize = bytes[2];
-      const offSize = bytes[3];
-      const header = new CFFHeader(major, minor, hdrSize, offSize);
+      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
@@ -31154,10 +30100,10 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseDict(dict) {
-      let pos = 0;
+      var pos = 0;
 
       function parseOperand() {
-        let value = dict[pos++];
+        var value = dict[pos++];
 
         if (value === 30) {
           return parseFloatOperand();
@@ -31184,15 +30130,15 @@ const CFFParser = function CFFParserClosure() {
       }
 
       function parseFloatOperand() {
-        let str = "";
-        const eof = 15;
+        var str = "";
+        var eof = 15;
         const lookup = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "E", "E-", null, "-"];
-        const length = dict.length;
+        var length = dict.length;
 
         while (pos < length) {
-          const b = dict[pos++];
-          const b1 = b >> 4;
-          const b2 = b & 15;
+          var b = dict[pos++];
+          var b1 = b >> 4;
+          var b2 = b & 15;
 
           if (b1 === eof) {
             break;
@@ -31210,13 +30156,13 @@ const CFFParser = function CFFParserClosure() {
         return parseFloat(str);
       }
 
-      let operands = [];
-      const entries = [];
+      var operands = [];
+      var entries = [];
       pos = 0;
-      const end = dict.length;
+      var end = dict.length;
 
       while (pos < end) {
-        let b = dict[pos];
+        var b = dict[pos];
 
         if (b <= 21) {
           if (b === 12) {
@@ -31235,21 +30181,21 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseIndex(pos) {
-      const cffIndex = new CFFIndex();
-      const bytes = this.bytes;
-      const count = bytes[pos++] << 8 | bytes[pos++];
-      const offsets = [];
-      let end = pos;
-      let i, ii;
+      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) {
-        const offsetSize = bytes[pos++];
-        const startPos = pos + (count + 1) * offsetSize - 1;
+        var offsetSize = bytes[pos++];
+        var startPos = pos + (count + 1) * offsetSize - 1;
 
         for (i = 0, ii = count + 1; i < ii; ++i) {
-          let offset = 0;
+          var offset = 0;
 
-          for (let j = 0; j < offsetSize; ++j) {
+          for (var j = 0; j < offsetSize; ++j) {
             offset <<= 8;
             offset += bytes[pos++];
           }
@@ -31261,8 +30207,8 @@ const CFFParser = function CFFParserClosure() {
       }
 
       for (i = 0, ii = offsets.length - 1; i < ii; ++i) {
-        const offsetStart = offsets[i];
-        const offsetEnd = offsets[i + 1];
+        var offsetStart = offsets[i];
+        var offsetEnd = offsets[i + 1];
         cffIndex.add(bytes.subarray(offsetStart, offsetEnd));
       }
 
@@ -31273,10 +30219,10 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseNameIndex(index) {
-      const names = [];
+      var names = [];
 
-      for (let i = 0, ii = index.count; i < ii; ++i) {
-        const name = index.get(i);
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var name = index.get(i);
         names.push((0, _util.bytesToString)(name));
       }
 
@@ -31284,10 +30230,10 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseStringIndex(index) {
-      const strings = new CFFStrings();
+      var strings = new CFFStrings();
 
-      for (let i = 0, ii = index.count; i < ii; ++i) {
-        const data = index.get(i);
+      for (var i = 0, ii = index.count; i < ii; ++i) {
+        var data = index.get(i);
         strings.add((0, _util.bytesToString)(data));
       }
 
@@ -31295,12 +30241,12 @@ const CFFParser = function CFFParserClosure() {
     }
 
     createDict(Type, dict, strings) {
-      const cffDict = new Type(strings);
+      var cffDict = new Type(strings);
 
-      for (let i = 0, ii = dict.length; i < ii; ++i) {
-        const pair = dict[i];
-        const key = pair[0];
-        const value = pair[1];
+      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);
       }
 
@@ -31312,16 +30258,16 @@ const CFFParser = function CFFParserClosure() {
         return false;
       }
 
-      let stackSize = state.stackSize;
-      const stack = state.stack;
-      const length = data.length;
+      var stackSize = state.stackSize;
+      var stack = state.stack;
+      var length = data.length;
 
-      for (let j = 0; j < length;) {
-        const value = data[j++];
-        let validationCommand = null;
+      for (var j = 0; j < length;) {
+        var value = data[j++];
+        var validationCommand = null;
 
         if (value === 12) {
-          const q = data[j++];
+          var q = data[j++];
 
           if (q === 0) {
             data[j - 2] = 139;
@@ -31362,7 +30308,7 @@ const CFFParser = function CFFParserClosure() {
           stackSize %= 2;
           validationCommand = CharstringValidationData[value];
         } else if (value === 10 || value === 29) {
-          let subrsIndex;
+          var subrsIndex;
 
           if (value === 10) {
             subrsIndex = localSubrIndex;
@@ -31376,7 +30322,7 @@ const CFFParser = function CFFParserClosure() {
             return false;
           }
 
-          let bias = 32768;
+          var bias = 32768;
 
           if (subrsIndex.count < 1240) {
             bias = 107;
@@ -31384,7 +30330,7 @@ const CFFParser = function CFFParserClosure() {
             bias = 1131;
           }
 
-          const subrNumber = stack[--stackSize] + bias;
+          var subrNumber = stack[--stackSize] + bias;
 
           if (subrNumber < 0 || subrNumber >= subrsIndex.count || isNaN(subrNumber)) {
             validationCommand = CharstringValidationData[value];
@@ -31394,7 +30340,7 @@ const CFFParser = function CFFParserClosure() {
 
           state.stackSize = stackSize;
           state.callDepth++;
-          const valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, 
globalSubrIndex);
+          var valid = this.parseCharString(state, subrsIndex.get(subrNumber), localSubrIndex, 
globalSubrIndex);
 
           if (!valid) {
             return false;
@@ -31475,13 +30421,13 @@ const CFFParser = function CFFParserClosure() {
       fdArray,
       privateDict
     }) {
-      const seacs = [];
-      const widths = [];
-      const count = charStrings.count;
+      var seacs = [];
+      var widths = [];
+      var count = charStrings.count;
 
-      for (let i = 0; i < count; i++) {
-        const charstring = charStrings.get(i);
-        const state = {
+      for (var i = 0; i < count; i++) {
+        var charstring = charStrings.get(i);
+        var state = {
           callDepth: 0,
           stackSize: 0,
           stack: [],
@@ -31492,12 +30438,12 @@ const CFFParser = function CFFParserClosure() {
           width: null,
           hasVStems: false
         };
-        let valid = true;
-        let localSubrToUse = null;
-        let privateDictToUse = privateDict;
+        var valid = true;
+        var localSubrToUse = null;
+        var privateDictToUse = privateDict;
 
         if (fdSelect && fdArray.length) {
-          const fdIndex = fdSelect.getFDIndex(i);
+          var fdIndex = fdSelect.getFDIndex(i);
 
           if (fdIndex === -1) {
             (0, _util.warn)("Glyph index is not in fd select.");
@@ -31546,7 +30492,7 @@ const CFFParser = function CFFParserClosure() {
     }
 
     emptyPrivateDictionary(parentDict) {
-      const privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
+      var privateDict = this.createDict(CFFPrivateDict, [], parentDict.strings);
       parentDict.setByKey(18, [0, 0]);
       parentDict.privateDict = privateDict;
     }
@@ -31557,40 +30503,40 @@ const CFFParser = function CFFParserClosure() {
         return;
       }
 
-      const privateOffset = parentDict.getByName("Private");
+      var privateOffset = parentDict.getByName("Private");
 
       if (!Array.isArray(privateOffset) || privateOffset.length !== 2) {
         parentDict.removeByName("Private");
         return;
       }
 
-      const size = privateOffset[0];
-      const offset = privateOffset[1];
+      var size = privateOffset[0];
+      var offset = privateOffset[1];
 
       if (size === 0 || offset >= this.bytes.length) {
         this.emptyPrivateDictionary(parentDict);
         return;
       }
 
-      const privateDictEnd = offset + size;
-      const dictData = this.bytes.subarray(offset, privateDictEnd);
-      const dict = this.parseDict(dictData);
-      const privateDict = this.createDict(CFFPrivateDict, dict, parentDict.strings);
+      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;
       }
 
-      const subrsOffset = privateDict.getByName("Subrs");
-      const relativeOffset = offset + subrsOffset;
+      var subrsOffset = privateDict.getByName("Subrs");
+      var relativeOffset = offset + subrsOffset;
 
       if (subrsOffset === 0 || relativeOffset >= this.bytes.length) {
         this.emptyPrivateDictionary(parentDict);
         return;
       }
 
-      const subrsIndex = this.parseIndex(relativeOffset);
+      var subrsIndex = this.parseIndex(relativeOffset);
       privateDict.subrsIndex = subrsIndex.obj;
     }
 
@@ -31603,11 +30549,11 @@ const CFFParser = function CFFParserClosure() {
         return new CFFCharset(true, CFFCharsetPredefinedTypes.EXPERT_SUBSET, _charsets.ExpertSubsetCharset);
       }
 
-      const bytes = this.bytes;
-      const start = pos;
-      const format = bytes[pos++];
+      var bytes = this.bytes;
+      var start = pos;
+      var format = bytes[pos++];
       const charset = [cid ? 0 : ".notdef"];
-      let id, count, i;
+      var id, count, i;
       length -= 1;
 
       switch (format) {
@@ -31647,24 +30593,24 @@ const CFFParser = function CFFParserClosure() {
           throw new _util.FormatError("Unknown charset format");
       }
 
-      const end = pos;
-      const raw = bytes.subarray(start, end);
+      var end = pos;
+      var raw = bytes.subarray(start, end);
       return new CFFCharset(false, format, charset, raw);
     }
 
     parseEncoding(pos, properties, strings, charset) {
-      const encoding = Object.create(null);
-      const bytes = this.bytes;
-      let predefined = false;
-      let format, i, ii;
-      let raw = null;
+      var encoding = Object.create(null);
+      var bytes = this.bytes;
+      var predefined = false;
+      var format, i, ii;
+      var raw = null;
 
       function readSupplement() {
-        const supplementsCount = bytes[pos++];
+        var supplementsCount = bytes[pos++];
 
         for (i = 0; i < supplementsCount; i++) {
-          const code = bytes[pos++];
-          const sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
+          var code = bytes[pos++];
+          var sid = (bytes[pos++] << 8) + (bytes[pos++] & 0xff);
           encoding[code] = charset.indexOf(strings.get(sid));
         }
       }
@@ -31672,22 +30618,22 @@ const CFFParser = function CFFParserClosure() {
       if (pos === 0 || pos === 1) {
         predefined = true;
         format = pos;
-        const baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
+        var baseEncoding = pos ? _encodings.ExpertEncoding : _encodings.StandardEncoding;
 
         for (i = 0, ii = charset.length; i < ii; i++) {
-          const index = baseEncoding.indexOf(charset[i]);
+          var index = baseEncoding.indexOf(charset[i]);
 
           if (index !== -1) {
             encoding[index] = i;
           }
         }
       } else {
-        const dataStart = pos;
+        var dataStart = pos;
         format = bytes[pos++];
 
         switch (format & 0x7f) {
           case 0:
-            const glyphsCount = bytes[pos++];
+            var glyphsCount = bytes[pos++];
 
             for (i = 1; i <= glyphsCount; i++) {
               encoding[bytes[pos++]] = i;
@@ -31696,14 +30642,14 @@ const CFFParser = function CFFParserClosure() {
             break;
 
           case 1:
-            const rangesCount = bytes[pos++];
-            let gid = 1;
+            var rangesCount = bytes[pos++];
+            var gid = 1;
 
             for (i = 0; i < rangesCount; i++) {
-              const start = bytes[pos++];
-              const left = bytes[pos++];
+              var start = bytes[pos++];
+              var left = bytes[pos++];
 
-              for (let j = start; j <= start + left; j++) {
+              for (var j = start; j <= start + left; j++) {
                 encoding[j] = gid++;
               }
             }
@@ -31714,7 +30660,7 @@ const CFFParser = function CFFParserClosure() {
             throw new _util.FormatError(`Unknown encoding format: ${format} in CFF`);
         }
 
-        const dataEnd = pos;
+        var dataEnd = pos;
 
         if (format & 0x80) {
           bytes[dataStart] &= 0x7f;
@@ -31729,35 +30675,35 @@ const CFFParser = function CFFParserClosure() {
     }
 
     parseFDSelect(pos, length) {
-      const bytes = this.bytes;
-      const format = bytes[pos++];
-      const fdSelect = [];
-      let i;
+      var bytes = this.bytes;
+      var format = bytes[pos++];
+      var fdSelect = [];
+      var i;
 
       switch (format) {
         case 0:
           for (i = 0; i < length; ++i) {
-            const id = bytes[pos++];
+            var id = bytes[pos++];
             fdSelect.push(id);
           }
 
           break;
 
         case 3:
-          const rangesCount = bytes[pos++] << 8 | bytes[pos++];
+          var rangesCount = bytes[pos++] << 8 | bytes[pos++];
 
           for (i = 0; i < rangesCount; ++i) {
-            let first = bytes[pos++] << 8 | bytes[pos++];
+            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.");
               first = 0;
             }
 
-            const fdIndex = bytes[pos++];
-            const next = bytes[pos] << 8 | bytes[pos + 1];
+            var fdIndex = bytes[pos++];
+            var next = bytes[pos] << 8 | bytes[pos + 1];
 
-            for (let j = first; j < next; ++j) {
+            for (var j = first; j < next; ++j) {
               fdSelect.push(fdIndex);
             }
           }
@@ -31804,7 +30750,7 @@ class CFF {
       return;
     }
 
-    const glyphZero = this.charStrings.get(0);
+    var glyphZero = this.charStrings.get(0);
     this.charStrings.add(glyphZero);
 
     if (this.isCIDFont) {
@@ -31817,7 +30763,7 @@ class CFF {
       return false;
     }
 
-    const glyph = this.charStrings.get(id);
+    var glyph = this.charStrings.get(id);
     return glyph.length > 0;
   }
 
@@ -31927,20 +30873,20 @@ class CFFDict {
       return false;
     }
 
-    const valueLength = value.length;
+    var valueLength = value.length;
 
     if (valueLength === 0) {
       return true;
     }
 
-    for (let i = 0; i < valueLength; i++) {
+    for (var i = 0; i < valueLength; i++) {
       if (isNaN(value[i])) {
         (0, _util.warn)('Invalid CFFDict value: "' + value + '" for key "' + key + '".');
         return true;
       }
     }
 
-    const type = this.types[key];
+    var type = this.types[key];
 
     if (type === "num" || type === "sid" || type === "offset") {
       value = value[0];
@@ -31967,7 +30913,7 @@ class CFFDict {
       throw new _util.FormatError(`Invalid dictionary name ${name}"`);
     }
 
-    const key = this.nameToKeyMap[name];
+    var key = this.nameToKeyMap[name];
 
     if (!(key in this.values)) {
       return this.defaults[key];
@@ -31981,7 +30927,7 @@ class CFFDict {
   }
 
   static createTables(layout) {
-    const tables = {
+    var tables = {
       keyToNameMap: {},
       nameToKeyMap: {},
       defaults: {},
@@ -31990,9 +30936,9 @@ class CFFDict {
       order: []
     };
 
-    for (let i = 0, ii = layout.length; i < ii; ++i) {
-      const entry = layout[i];
-      const key = Array.isArray(entry[0]) ? (entry[0][0] << 8) + entry[0][1] : entry[0];
+    for (var i = 0, ii = layout.length; i < ii; ++i) {
+      var entry = layout[i];
+      var key = Array.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];
@@ -32006,9 +30952,9 @@ class CFFDict {
 
 }
 
-const CFFTopDict = function CFFTopDictClosure() {
-  const 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", nul
 l], [[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]];
-  let tables = null;
+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;
 
   class CFFTopDict extends CFFDict {
     constructor(strings) {
@@ -32027,9 +30973,9 @@ const CFFTopDict = function CFFTopDictClosure() {
 
 exports.CFFTopDict = CFFTopDict;
 
-const CFFPrivateDict = function CFFPrivateDictClosure() {
-  const 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]];
-  let tables = null;
+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;
 
   class CFFPrivateDict extends CFFDict {
     constructor(strings) {
@@ -32047,7 +30993,7 @@ const CFFPrivateDict = function CFFPrivateDictClosure() {
 }();
 
 exports.CFFPrivateDict = CFFPrivateDict;
-const CFFCharsetPredefinedTypes = {
+var CFFCharsetPredefinedTypes = {
   ISO_ADOBE: 0,
   EXPERT: 1,
   EXPERT_SUBSET: 2
@@ -32111,7 +31057,7 @@ class CFFOffsetTracker {
   }
 
   offset(value) {
-    for (const key in this.offsets) {
+    for (var key in this.offsets) {
       this.offsets[key] += value;
     }
   }
@@ -32121,22 +31067,22 @@ class CFFOffsetTracker {
       throw new _util.FormatError(`Not tracking location of ${key}`);
     }
 
-    const data = output.data;
-    const dataOffset = this.offsets[key];
-    const size = 5;
+    var data = output.data;
+    var dataOffset = this.offsets[key];
+    var size = 5;
 
-    for (let i = 0, ii = values.length; i < ii; ++i) {
-      const offset0 = i * size + dataOffset;
-      const offset1 = offset0 + 1;
-      const offset2 = offset0 + 2;
-      const offset3 = offset0 + 3;
-      const offset4 = offset0 + 4;
+    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");
       }
 
-      const value = values[i];
+      var value = values[i];
       data[offset0] = 0x1d;
       data[offset1] = value >> 24 & 0xff;
       data[offset2] = value >> 16 & 0xff;
@@ -32153,8 +31099,8 @@ class CFFCompiler {
   }
 
   compile() {
-    const cff = this.cff;
-    const output = {
+    var cff = this.cff;
+    var output = {
       data: [],
       length: 0,
       add: function CFFCompiler_add(data) {
@@ -32162,19 +31108,19 @@ class CFFCompiler {
         this.length = this.data.length;
       }
     };
-    const header = this.compileHeader(cff.header);
+    var header = this.compileHeader(cff.header);
     output.add(header);
-    const nameIndex = this.compileNameIndex(cff.names);
+    var nameIndex = this.compileNameIndex(cff.names);
     output.add(nameIndex);
 
     if (cff.isCIDFont) {
       if (cff.topDict.hasName("FontMatrix")) {
-        const base = cff.topDict.getByName("FontMatrix");
+        var base = cff.topDict.getByName("FontMatrix");
         cff.topDict.removeByName("FontMatrix");
 
-        for (let i = 0, ii = cff.fdArray.length; i < ii; i++) {
-          const subDict = cff.fdArray[i];
-          let matrix = base.slice(0);
+        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"));
@@ -32192,39 +31138,39 @@ class CFFCompiler {
     }
 
     cff.topDict.setByName("charset", 0);
-    let compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
+    var compiled = this.compileTopDicts([cff.topDict], output.length, cff.isCIDFont);
     output.add(compiled.output);
-    const topDictTracker = compiled.trackers[0];
-    const stringIndex = this.compileStringIndex(cff.strings.strings);
+    var topDictTracker = compiled.trackers[0];
+    var stringIndex = this.compileStringIndex(cff.strings.strings);
     output.add(stringIndex);
-    const globalSubrIndex = this.compileIndex(cff.globalSubrIndex);
+    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 {
-        const encoding = this.compileEncoding(cff.encoding);
+        var encoding = this.compileEncoding(cff.encoding);
         topDictTracker.setEntryLocation("Encoding", [output.length], output);
         output.add(encoding);
       }
     }
 
-    const charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);
+    var charset = this.compileCharset(cff.charset, cff.charStrings.count, cff.strings, cff.isCIDFont);
     topDictTracker.setEntryLocation("charset", [output.length], output);
     output.add(charset);
-    const charStrings = this.compileCharStrings(cff.charStrings);
+    var charStrings = this.compileCharStrings(cff.charStrings);
     topDictTracker.setEntryLocation("CharStrings", [output.length], output);
     output.add(charStrings);
 
     if (cff.isCIDFont) {
       topDictTracker.setEntryLocation("FDSelect", [output.length], output);
-      const fdSelect = this.compileFDSelect(cff.fdSelect);
+      var fdSelect = this.compileFDSelect(cff.fdSelect);
       output.add(fdSelect);
       compiled = this.compileTopDicts(cff.fdArray, output.length, true);
       topDictTracker.setEntryLocation("FDArray", [output.length], output);
       output.add(compiled.output);
-      const fontDictTrackers = compiled.trackers;
+      var fontDictTrackers = compiled.trackers;
       this.compilePrivateDicts(cff.fdArray, fontDictTrackers, output);
     }
 
@@ -32246,19 +31192,19 @@ class CFFCompiler {
   }
 
   encodeFloat(num) {
-    let value = num.toString();
-    const m = CFFCompiler.EncodeFloatRegExp.exec(value);
+    var value = num.toString();
+    var m = CFFCompiler.EncodeFloatRegExp.exec(value);
 
     if (m) {
-      const epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length));
+      var epsilon = parseFloat("1e" + ((m[2] ? +m[2] : 0) + m[1].length));
       value = (Math.round(num * epsilon) / epsilon).toString();
     }
 
-    let nibbles = "";
-    let i, ii;
+    var nibbles = "";
+    var i, ii;
 
     for (i = 0, ii = value.length; i < ii; ++i) {
-      const a = value[i];
+      var a = value[i];
 
       if (a === "e") {
         nibbles += value[++i] === "-" ? "c" : "b";
@@ -32272,7 +31218,7 @@ class CFFCompiler {
     }
 
     nibbles += nibbles.length & 1 ? "f" : "ff";
-    const out = [30];
+    var out = [30];
 
     for (i = 0, ii = nibbles.length; i < ii; i += 2) {
       out.push(parseInt(nibbles.substring(i, i + 2), 16));
@@ -32282,7 +31228,7 @@ class CFFCompiler {
   }
 
   encodeInteger(value) {
-    let code;
+    var code;
 
     if (value >= -107 && value <= 107) {
       code = [value + 139];
@@ -32302,19 +31248,19 @@ class CFFCompiler {
   }
 
   compileHeader(header) {
-    return [header.major, header.minor, 4, header.offSize];
+    return [header.major, header.minor, header.hdrSize, header.offSize];
   }
 
   compileNameIndex(names) {
-    const nameIndex = new CFFIndex();
+    var nameIndex = new CFFIndex();
 
-    for (let i = 0, ii = names.length; i < ii; ++i) {
-      const name = names[i];
-      const length = Math.min(name.length, 127);
-      let sanitizedName = new Array(length);
+    for (var i = 0, ii = names.length; i < ii; ++i) {
+      var name = names[i];
+      var length = Math.min(name.length, 127);
+      var sanitizedName = new Array(length);
 
-      for (let j = 0; j < length; j++) {
-        let char = name[j];
+      for (var j = 0; j < length; j++) {
+        var char = name[j];
 
         if (char < "!" || char > "~" || char === "[" || char === "]" || char === "(" || char === ")" || char 
=== "{" || char === "}" || char === "<" || char === ">" || char === "/" || char === "%") {
           char = "_";
@@ -32336,11 +31282,11 @@ class CFFCompiler {
   }
 
   compileTopDicts(dicts, length, removeCidKeys) {
-    const fontDictTrackers = [];
-    let fdArrayIndex = new CFFIndex();
+    var fontDictTrackers = [];
+    var fdArrayIndex = new CFFIndex();
 
-    for (let i = 0, ii = dicts.length; i < ii; ++i) {
-      const fontDict = dicts[i];
+    for (var i = 0, ii = dicts.length; i < ii; ++i) {
+      var fontDict = dicts[i];
 
       if (removeCidKeys) {
         fontDict.removeByName("CIDFontVersion");
@@ -32350,8 +31296,8 @@ class CFFCompiler {
         fontDict.removeByName("UIDBase");
       }
 
-      const fontDictTracker = new CFFOffsetTracker();
-      const fontDictData = this.compileDict(fontDict, fontDictTracker);
+      var fontDictTracker = new CFFOffsetTracker();
+      var fontDictData = this.compileDict(fontDict, fontDictTracker);
       fontDictTrackers.push(fontDictTracker);
       fdArrayIndex.add(fontDictData);
       fontDictTracker.offset(length);
@@ -32365,17 +31311,17 @@ class CFFCompiler {
   }
 
   compilePrivateDicts(dicts, trackers, output) {
-    for (let i = 0, ii = dicts.length; i < ii; ++i) {
-      const fontDict = dicts[i];
-      const privateDict = fontDict.privateDict;
+    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.");
       }
 
-      const privateDictTracker = new CFFOffsetTracker();
-      const privateDictData = this.compileDict(privateDict, privateDictTracker);
-      let outputLength = output.length;
+      var privateDictTracker = new CFFOffsetTracker();
+      var privateDictData = this.compileDict(privateDict, privateDictTracker);
+      var outputLength = output.length;
       privateDictTracker.offset(outputLength);
 
       if (!privateDictData.length) {
@@ -32386,7 +31332,7 @@ class CFFCompiler {
       output.add(privateDictData);
 
       if (privateDict.subrsIndex && privateDict.hasName("Subrs")) {
-        const subrs = this.compileIndex(privateDict.subrsIndex);
+        var subrs = this.compileIndex(privateDict.subrsIndex);
         privateDictTracker.setEntryLocation("Subrs", [privateDictData.length], output);
         output.add(subrs);
       }
@@ -32394,18 +31340,18 @@ class CFFCompiler {
   }
 
   compileDict(dict, offsetTracker) {
-    let out = [];
-    const order = dict.order;
+    var out = [];
+    var order = dict.order;
 
-    for (let i = 0; i < order.length; ++i) {
-      const key = order[i];
+    for (var i = 0; i < order.length; ++i) {
+      var key = order[i];
 
       if (!(key in dict.values)) {
         continue;
       }
 
-      let values = dict.values[key];
-      let types = dict.types[key];
+      var values = dict.values[key];
+      var types = dict.types[key];
 
       if (!Array.isArray(types)) {
         types = [types];
@@ -32419,9 +31365,9 @@ class CFFCompiler {
         continue;
       }
 
-      for (let j = 0, jj = types.length; j < jj; ++j) {
-        const type = types[j];
-        const value = values[j];
+      for (var j = 0, jj = types.length; j < jj; ++j) {
+        var type = types[j];
+        var value = values[j];
 
         switch (type) {
           case "num":
@@ -32430,7 +31376,7 @@ class CFFCompiler {
             break;
 
           case "offset":
-            const name = dict.keyToNameMap[key];
+            var name = dict.keyToNameMap[key];
 
             if (!offsetTracker.isTracking(name)) {
               offsetTracker.track(name, out.length);
@@ -32443,7 +31389,7 @@ class CFFCompiler {
           case "delta":
             out = out.concat(this.encodeNumber(value));
 
-            for (let k = 1, kk = values.length; k < kk; ++k) {
+            for (var k = 1, kk = values.length; k < kk; ++k) {
               out = out.concat(this.encodeNumber(values[k]));
             }
 
@@ -32461,9 +31407,9 @@ class CFFCompiler {
   }
 
   compileStringIndex(strings) {
-    const stringIndex = new CFFIndex();
+    var stringIndex = new CFFIndex();
 
-    for (let i = 0, ii = strings.length; i < ii; ++i) {
+    for (var i = 0, ii = strings.length; i < ii; ++i) {
       stringIndex.add((0, _util.stringToBytes)(strings[i]));
     }
 
@@ -32471,15 +31417,15 @@ class CFFCompiler {
   }
 
   compileGlobalSubrIndex() {
-    const globalSubrIndex = this.cff.globalSubrIndex;
+    var globalSubrIndex = this.cff.globalSubrIndex;
     this.out.writeByteArray(this.compileIndex(globalSubrIndex));
   }
 
   compileCharStrings(charStrings) {
-    const charStringsIndex = new CFFIndex();
+    var charStringsIndex = new CFFIndex();
 
-    for (let i = 0; i < charStrings.count; i++) {
-      const glyph = charStrings.get(i);
+    for (var i = 0; i < charStrings.count; i++) {
+      var glyph = charStrings.get(i);
 
       if (glyph.length === 0) {
         charStringsIndex.add(new Uint8Array([0x8b, 0x0e]));
@@ -32576,9 +31522,9 @@ class CFFCompiler {
   }
 
   compileTypedArray(data) {
-    const out = [];
+    var out = [];
 
-    for (let i = 0, ii = data.length; i < ii; ++i) {
+    for (var i = 0, ii = data.length; i < ii; ++i) {
       out[i] = data[i];
     }
 
@@ -32586,22 +31532,22 @@ class CFFCompiler {
   }
 
   compileIndex(index, trackers = []) {
-    const objects = index.objects;
-    const count = objects.length;
+    var objects = index.objects;
+    var count = objects.length;
 
     if (count === 0) {
       return [0, 0, 0];
     }
 
-    const data = [count >> 8 & 0xff, count & 0xff];
-    let lastOffset = 1,
+    var data = [count >> 8 & 0xff, count & 0xff];
+    var lastOffset = 1,
         i;
 
     for (i = 0; i < count; ++i) {
       lastOffset += objects[i].length;
     }
 
-    let offsetSize;
+    var offsetSize;
 
     if (lastOffset < 0x100) {
       offsetSize = 1;
@@ -32614,7 +31560,7 @@ class CFFCompiler {
     }
 
     data.push(offsetSize);
-    let relativeOffset = 1;
+    var relativeOffset = 1;
 
     for (i = 0; i < count + 1; i++) {
       if (offsetSize === 1) {
@@ -32637,7 +31583,7 @@ class CFFCompiler {
         trackers[i].offset(data.length);
       }
 
-      for (let j = 0, jj = objects[i].length; j < jj; j++) {
+      for (var j = 0, jj = objects[i].length; j < jj; j++) {
         data.push(objects[i][j]);
       }
     }
@@ -32650,7 +31596,7 @@ class CFFCompiler {
 exports.CFFCompiler = CFFCompiler;
 
 /***/ }),
-/* 33 */
+/* 31 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -32667,7 +31613,7 @@ const ExpertSubsetCharset = [".notdef", "space", "dollaroldstyle", "dollarsuperi
 exports.ExpertSubsetCharset = ExpertSubsetCharset;
 
 /***/ }),
-/* 34 */
+/* 32 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -32720,17 +31666,17 @@ function getEncoding(encodingName) {
 }
 
 /***/ }),
-/* 35 */
+/* 33 */
 /***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
 
 __w_pdfjs_require__.r(__webpack_exports__);
 /* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
-/* harmony export */   "getDingbatsGlyphsUnicode": () => (/* binding */ getDingbatsGlyphsUnicode),
-/* harmony export */   "getGlyphsUnicode": () => (/* binding */ getGlyphsUnicode)
+/* harmony export */   "getDingbatsGlyphsUnicode": () => /* binding */ getDingbatsGlyphsUnicode,
+/* harmony export */   "getGlyphsUnicode": () => /* binding */ getGlyphsUnicode
 /* harmony export */ });
 /* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
 
-const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function 
() {
+var getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function 
() {
  return [
   "A",
   0x0041,
@@ -41378,7 +40324,7 @@ const getGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArray
   0x2223
  ];
 });
-const getDingbatsGlyphsUnicode = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
+var getDingbatsGlyphsUnicode = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
  return [
   "space",
   0x0020,
@@ -41791,7 +40737,7 @@ const getDingbatsGlyphsUnicode = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.
 
 
 /***/ }),
-/* 36 */
+/* 34 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -42534,20 +41480,20 @@ const getSupplementalGlyphMapForCalibri = (0, _core_utils.getLookupTableFactory)
 exports.getSupplementalGlyphMapForCalibri = getSupplementalGlyphMapForCalibri;
 
 /***/ }),
-/* 37 */
+/* 35 */
 /***/ ((__unused_webpack_module, __webpack_exports__, __w_pdfjs_require__) => {
 
 __w_pdfjs_require__.r(__webpack_exports__);
 /* harmony export */ __w_pdfjs_require__.d(__webpack_exports__, {
-/* harmony export */   "getNormalizedUnicodes": () => (/* binding */ getNormalizedUnicodes),
-/* harmony export */   "getUnicodeForGlyph": () => (/* binding */ getUnicodeForGlyph),
-/* harmony export */   "getUnicodeRangeFor": () => (/* binding */ getUnicodeRangeFor),
-/* harmony export */   "mapSpecialUnicodeValues": () => (/* binding */ mapSpecialUnicodeValues),
-/* harmony export */   "reverseIfRtl": () => (/* binding */ reverseIfRtl)
+/* harmony export */   "getNormalizedUnicodes": () => /* binding */ getNormalizedUnicodes,
+/* harmony export */   "getUnicodeForGlyph": () => /* binding */ getUnicodeForGlyph,
+/* harmony export */   "getUnicodeRangeFor": () => /* binding */ getUnicodeRangeFor,
+/* harmony export */   "mapSpecialUnicodeValues": () => /* binding */ mapSpecialUnicodeValues,
+/* harmony export */   "reverseIfRtl": () => /* binding */ reverseIfRtl
 /* harmony export */ });
 /* harmony import */ var _core_utils_js__WEBPACK_IMPORTED_MODULE_0__ = __w_pdfjs_require__(8);
 
-const getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function 
(t) {
+var getSpecialPUASymbols = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getLookupTableFactory)(function 
(t) {
  t[63721] = 0x00a9;
  t[63193] = 0x00a9;
  t[63720] = 0x00ae;
@@ -42584,7 +41530,7 @@ function mapSpecialUnicodeValues(code) {
  return code;
 }
 function getUnicodeForGlyph(name, glyphsUnicodeMap) {
- let unicode = glyphsUnicodeMap[name];
+ var unicode = glyphsUnicodeMap[name];
  if (unicode !== undefined) {
   return unicode;
  }
@@ -42592,8 +41538,7 @@ function getUnicodeForGlyph(name, glyphsUnicodeMap) {
   return -1;
  }
  if (name[0] === "u") {
-  const nameLen = name.length;
-  let hexStr;
+  var nameLen = name.length, hexStr;
   if (nameLen === 7 && name[1] === "n" && name[2] === "i") {
    hexStr = name.substring(3);
   } else if (nameLen >= 5 && nameLen <= 7) {
@@ -42610,7 +41555,7 @@ function getUnicodeForGlyph(name, glyphsUnicodeMap) {
  }
  return -1;
 }
-const UnicodeRanges = [
+var UnicodeRanges = [
  {
   begin: 0x0000,
   end: 0x007f
@@ -43105,8 +42050,8 @@ const UnicodeRanges = [
  }
 ];
 function getUnicodeRangeFor(value) {
- for (let i = 0, ii = UnicodeRanges.length; i < ii; i++) {
-  const range = UnicodeRanges[i];
+ for (var i = 0, ii = UnicodeRanges.length; i < ii; i++) {
+  var range = UnicodeRanges[i];
   if (value >= range.begin && value < range.end) {
    return i;
   }
@@ -43114,7 +42059,7 @@ function getUnicodeRangeFor(value) {
  return -1;
 }
 function isRTLRangeFor(value) {
- let range = UnicodeRanges[13];
+ var range = UnicodeRanges[13];
  if (value >= range.begin && value < range.end) {
   return true;
  }
@@ -43124,7 +42069,7 @@ function isRTLRangeFor(value) {
  }
  return false;
 }
-const getNormalizedUnicodes = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
+var getNormalizedUnicodes = 
(0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.getArrayLookupTableFactory)(function () {
  return [
   "\u00A8",
   "\u0020\u0308",
@@ -45883,20 +44828,20 @@ const getNormalizedUnicodes = (0,_core_utils_js__WEBPACK_IMPORTED_MODULE_0__.get
  ];
 });
 function reverseIfRtl(chars) {
- const charsLength = chars.length;
+ var charsLength = chars.length;
  if (charsLength <= 1 || !isRTLRangeFor(chars.charCodeAt(0))) {
   return chars;
  }
- const buf = [];
- for (let ii = charsLength - 1; ii >= 0; ii--) {
-  buf.push(chars[ii]);
+ var s = "";
+ for (var ii = charsLength - 1; ii >= 0; ii--) {
+  s += chars[ii];
  }
- return buf.join("");
+ return s;
 }
 
 
 /***/ }),
-/* 38 */
+/* 36 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -45908,15 +44853,15 @@ exports.FontRendererFactory = void 0;
 
 var _util = __w_pdfjs_require__(2);
 
-var _cff_parser = __w_pdfjs_require__(32);
+var _cff_parser = __w_pdfjs_require__(30);
 
-var _glyphlist = __w_pdfjs_require__(35);
+var _glyphlist = __w_pdfjs_require__(33);
 
-var _encodings = __w_pdfjs_require__(34);
+var _encodings = __w_pdfjs_require__(32);
 
 var _stream = __w_pdfjs_require__(12);
 
-const FontRendererFactory = function FontRendererFactoryClosure() {
+var FontRendererFactory = function FontRendererFactoryClosure() {
   function getLong(data, offset) {
     return data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3];
   }
@@ -45939,13 +44884,13 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
   }
 
   function parseCmap(data, start, end) {
-    const offset = getUshort(data, start + 2) === 1 ? getLong(data, start + 8) : getLong(data, start + 16);
-    const format = getUshort(data, start + offset);
-    let ranges, p, i;
+    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);
-      const segCount = getUshort(data, start + offset + 6) >> 1;
+      var segCount = getUshort(data, start + offset + 6) >> 1;
       p = start + offset + 14;
       ranges = [];
 
@@ -45966,7 +44911,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       }
 
       for (i = 0; i < segCount; i++, p += 2) {
-        let idOffset = getUshort(data, p);
+        var idOffset = getUshort(data, p);
 
         if (idOffset === 0) {
           continue;
@@ -45974,7 +44919,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
 
         ranges[i].ids = [];
 
-        for (let j = 0, jj = ranges[i].end - ranges[i].start + 1; j < jj; j++) {
+        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;
         }
@@ -45983,7 +44928,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       return ranges;
     } else if (format === 12) {
       getLong(data, start + offset + 4);
-      const groups = getLong(data, start + offset + 12);
+      var groups = getLong(data, start + offset + 12);
       p = start + offset + 16;
       ranges = [];
 
@@ -46003,9 +44948,9 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
   }
 
   function parseCff(data, start, end, seacAnalysisEnabled) {
-    const properties = {};
-    const parser = new _cff_parser.CFFParser(new _stream.Stream(data, start, end - start), properties, 
seacAnalysisEnabled);
-    const cff = parser.parse();
+    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,
@@ -46017,7 +44962,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
   }
 
   function parseGlyfTable(glyf, loca, isGlyphLocationsLong) {
-    let itemSize, itemDecode;
+    var itemSize, itemDecode;
 
     if (isGlyphLocationsLong) {
       itemSize = 4;
@@ -46033,11 +44978,11 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       };
     }
 
-    const glyphs = [];
-    let startOffset = itemDecode(loca, 0);
+    var glyphs = [];
+    var startOffset = itemDecode(loca, 0);
 
-    for (let j = itemSize; j < loca.length; j += itemSize) {
-      const endOffset = itemDecode(loca, j);
+    for (var j = itemSize; j < loca.length; j += itemSize) {
+      var endOffset = itemDecode(loca, j);
       glyphs.push(glyf.subarray(startOffset, endOffset));
       startOffset = endOffset;
     }
@@ -46046,13 +44991,13 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
   }
 
   function lookupCmap(ranges, unicode) {
-    const code = unicode.codePointAt(0);
-    let gid = 0,
-        l = 0,
+    var code = unicode.codePointAt(0),
+        gid = 0;
+    var l = 0,
         r = ranges.length - 1;
 
     while (l < r) {
-      const c = l + r + 1 >> 1;
+      var c = l + r + 1 >> 1;
 
       if (code < ranges[c].start) {
         r = c - 1;
@@ -46093,19 +45038,19 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       });
     }
 
-    let i = 0;
-    const numberOfContours = (code[i] << 24 | code[i + 1] << 16) >> 16;
-    let flags;
-    let x = 0,
+    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];
-        const glyphIndex = code[i + 2] << 8 | code[i + 3];
+        var glyphIndex = code[i + 2] << 8 | code[i + 3];
         i += 4;
-        let arg1, arg2;
+        var arg1, arg2;
 
         if (flags & 0x01) {
           arg1 = (code[i] << 24 | code[i + 1] << 16) >> 16;
@@ -46124,7 +45069,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
           y = 0;
         }
 
-        let scaleX = 1,
+        var scaleX = 1,
             scaleY = 1,
             scale01 = 0,
             scale10 = 0;
@@ -46144,7 +45089,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
           i += 8;
         }
 
-        const subglyph = font.glyphs[glyphIndex];
+        var subglyph = font.glyphs[glyphIndex];
 
         if (subglyph) {
           cmds.push({
@@ -46161,22 +45106,22 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
         }
       } while (flags & 0x20);
     } else {
-      const endPtsOfContours = [];
-      let j, jj;
+      var endPtsOfContours = [];
+      var j, jj;
 
       for (j = 0; j < numberOfContours; j++) {
         endPtsOfContours.push(code[i] << 8 | code[i + 1]);
         i += 2;
       }
 
-      const instructionLength = code[i] << 8 | code[i + 1];
+      var instructionLength = code[i] << 8 | code[i + 1];
       i += 2 + instructionLength;
-      const numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
-      const points = [];
+      var numberOfPoints = endPtsOfContours[endPtsOfContours.length - 1] + 1;
+      var points = [];
 
       while (points.length < numberOfPoints) {
         flags = code[i++];
-        let repeat = 1;
+        var repeat = 1;
 
         if (flags & 0x08) {
           repeat += code[i++];
@@ -46227,18 +45172,18 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
         points[j].y = y;
       }
 
-      let startPoint = 0;
+      var startPoint = 0;
 
       for (i = 0; i < numberOfContours; i++) {
-        const endPoint = endPtsOfContours[i];
-        const contour = points.slice(startPoint, endPoint + 1);
+        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 {
-          const p = {
+          var p = {
             flags: 1,
             x: (contour[0].x + contour[contour.length - 1].x) / 2,
             y: (contour[0].y + contour[contour.length - 1].y) / 2
@@ -46287,18 +45232,18 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       });
     }
 
-    const stack = [];
-    let x = 0,
+    var stack = [];
+    var x = 0,
         y = 0;
-    let stems = 0;
+    var stems = 0;
 
     function parse(code) {
-      let i = 0;
+      var i = 0;
 
       while (i < code.length) {
-        let stackClean = false;
-        let v = code[i++];
-        let xa, xb, ya, yb, y1, y2, y3, n, subrCode;
+        var stackClean = false;
+        var v = code[i++];
+        var xa, xb, ya, yb, y1, y2, y3, n, subrCode;
 
         switch (v) {
           case 1:
@@ -46453,8 +45398,8 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
                 break;
 
               case 37:
-                const x0 = x,
-                      y0 = y;
+                var x0 = x,
+                    y0 = y;
                 xa = x + stack.shift();
                 ya = y + stack.shift();
                 xb = xa + stack.shift();
@@ -46486,8 +45431,8 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
 
           case 14:
             if (stack.length >= 4) {
-              const achar = stack.pop();
-              const bchar = stack.pop();
+              var achar = stack.pop();
+              var bchar = stack.pop();
               y = stack.pop();
               x = stack.pop();
               cmds.push({
@@ -46497,7 +45442,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
                 cmd: "translate",
                 args: [x, y]
               });
-              let cmap = lookupCmap(font.cmap, 
String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));
+              var cmap = lookupCmap(font.cmap, 
String.fromCharCode(font.glyphNameMap[_encodings.StandardEncoding[achar]]));
               compileCharString(font.glyphs[cmap.glyphId], cmds, font, cmap.glyphId);
               cmds.push({
                 cmd: "restore"
@@ -46815,14 +45760,14 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
 
   return {
     create: function FontRendererFactory_create(font, seacAnalysisEnabled) {
-      const data = new Uint8Array(font.data);
-      let cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
-      const numTables = getUshort(data, 4);
+      var data = new Uint8Array(font.data);
+      var cmap, glyf, loca, cff, indexToLocFormat, unitsPerEm;
+      var numTables = getUshort(data, 4);
 
-      for (let i = 0, p = 12; i < numTables; i++, p += 16) {
-        const tag = (0, _util.bytesToString)(data.subarray(p, p + 4));
-        const offset = getLong(data, p + 8);
-        const length = getLong(data, p + 12);
+      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":
@@ -46849,7 +45794,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
       }
 
       if (glyf) {
-        const fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];
+        var fontMatrix = !unitsPerEm ? font.fontMatrix : [1 / unitsPerEm, 0, 0, 1 / unitsPerEm, 0, 0];
         return new TrueTypeCompiled(parseGlyfTable(glyf, loca, indexToLocFormat), cmap, fontMatrix);
       }
 
@@ -46861,7 +45806,7 @@ const FontRendererFactory = function FontRendererFactoryClosure() {
 exports.FontRendererFactory = FontRendererFactory;
 
 /***/ }),
-/* 39 */
+/* 37 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -46871,7 +45816,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.Type1Parser = void 0;
 
-var _encodings = __w_pdfjs_require__(34);
+var _encodings = __w_pdfjs_require__(32);
 
 var _core_utils = __w_pdfjs_require__(8);
 
@@ -46879,10 +45824,10 @@ var _stream = __w_pdfjs_require__(12);
 
 var _util = __w_pdfjs_require__(2);
 
-const HINTING_ENABLED = false;
+var HINTING_ENABLED = false;
 
-const Type1CharString = function Type1CharStringClosure() {
-  const COMMAND_MAP = {
+var Type1CharString = function Type1CharStringClosure() {
+  var COMMAND_MAP = {
     hstem: [1],
     vstem: [3],
     vmoveto: [4],
@@ -46900,22 +45845,22 @@ const Type1CharString = function Type1CharStringClosure() {
     hvcurveto: [31]
   };
 
-  class Type1CharString {
-    constructor() {
-      this.width = 0;
-      this.lsb = 0;
-      this.flexing = false;
-      this.output = [];
-      this.stack = [];
-    }
+  function Type1CharString() {
+    this.width = 0;
+    this.lsb = 0;
+    this.flexing = false;
+    this.output = [];
+    this.stack = [];
+  }
 
-    convert(encoded, subrs, seacAnalysisEnabled) {
-      const count = encoded.length;
-      let error = false;
-      let wx, sbx, subrNumber;
+  Type1CharString.prototype = {
+    convert: function Type1CharString_convert(encoded, subrs, seacAnalysisEnabled) {
+      var count = encoded.length;
+      var error = false;
+      var wx, sbx, subrNumber;
 
-      for (let i = 0; i < count; i++) {
-        let value = encoded[i];
+      for (var i = 0; i < count; i++) {
+        var value = encoded[i];
 
         if (value < 32) {
           if (value === 12) {
@@ -46948,7 +45893,7 @@ const Type1CharString = function Type1CharStringClosure() {
                   break;
                 }
 
-                const dy = this.stack.pop();
+                var dy = this.stack.pop();
                 this.stack.push(0, dy);
                 break;
               }
@@ -47080,7 +46025,7 @@ const Type1CharString = function Type1CharStringClosure() {
 
               this.stack.pop();
               wx = this.stack.pop();
-              const sby = this.stack.pop();
+              var sby = this.stack.pop();
               sbx = this.stack.pop();
               this.lsb = sbx;
               this.width = wx;
@@ -47094,8 +46039,8 @@ const Type1CharString = function Type1CharStringClosure() {
                 break;
               }
 
-              const num2 = this.stack.pop();
-              const num1 = this.stack.pop();
+              var num2 = this.stack.pop();
+              var num1 = this.stack.pop();
               this.stack.push(num1 / num2);
               break;
 
@@ -47106,10 +46051,10 @@ const Type1CharString = function Type1CharStringClosure() {
               }
 
               subrNumber = this.stack.pop();
-              const numArgs = this.stack.pop();
+              var numArgs = this.stack.pop();
 
               if (subrNumber === 0 && numArgs === 3) {
-                const flexArgs = this.stack.splice(this.stack.length - 17, 17);
+                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;
@@ -47151,19 +46096,19 @@ const Type1CharString = function Type1CharStringClosure() {
       }
 
       return error;
-    }
+    },
 
     executeCommand(howManyArgs, command, keepStack) {
-      const stackLength = this.stack.length;
+      var stackLength = this.stack.length;
 
       if (howManyArgs > stackLength) {
         return true;
       }
 
-      const start = stackLength - howManyArgs;
+      var start = stackLength - howManyArgs;
 
-      for (let i = start; i < stackLength; i++) {
-        let value = this.stack[i];
+      for (var i = start; i < stackLength; i++) {
+        var value = this.stack[i];
 
         if (Number.isInteger(value)) {
           this.output.push(28, value >> 8 & 0xff, value & 0xff);
@@ -47184,14 +46129,13 @@ const Type1CharString = function Type1CharStringClosure() {
       return false;
     }
 
-  }
-
+  };
   return Type1CharString;
 }();
 
-const Type1Parser = function Type1ParserClosure() {
-  const EEXEC_ENCRYPT_KEY = 55665;
-  const CHAR_STRS_ENCRYPT_KEY = 4330;
+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;
@@ -47202,9 +46146,9 @@ const Type1Parser = function Type1ParserClosure() {
       return new Uint8Array(0);
     }
 
-    const c1 = 52845,
-          c2 = 22719;
-    let r = key | 0,
+    var r = key | 0,
+        c1 = 52845,
+        c2 = 22719,
         i,
         j;
 
@@ -47212,11 +46156,11 @@ const Type1Parser = function Type1ParserClosure() {
       r = (data[i] + r) * c1 + c2 & (1 << 16) - 1;
     }
 
-    const count = data.length - discardNumber;
-    const decrypted = new Uint8Array(count);
+    var count = data.length - discardNumber;
+    var decrypted = new Uint8Array(count);
 
     for (i = discardNumber, j = 0; j < count; i++, j++) {
-      const value = data[i];
+      var value = data[i];
       decrypted[j] = value ^ r >> 8;
       r = (value + r) * c1 + c2 & (1 << 16) - 1;
     }
@@ -47225,30 +46169,30 @@ const Type1Parser = function Type1ParserClosure() {
   }
 
   function decryptAscii(data, key, discardNumber) {
-    const c1 = 52845,
-          c2 = 22719;
-    let r = key | 0;
-    const count = data.length,
-          maybeLength = count >>> 1;
-    const decrypted = new Uint8Array(maybeLength);
-    let i, j;
+    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++) {
-      const digit1 = data[i];
+      var digit1 = data[i];
 
       if (!isHexDigit(digit1)) {
         continue;
       }
 
       i++;
-      let digit2;
+      var digit2;
 
       while (i < count && !isHexDigit(digit2 = data[i])) {
         i++;
       }
 
       if (i < count) {
-        const value = parseInt(String.fromCharCode(digit1, digit2), 16);
+        var value = parseInt(String.fromCharCode(digit1, digit2), 16);
         decrypted[j++] = value ^ r >> 8;
         r = (value + r) * c1 + c2 & (1 << 16) - 1;
       }
@@ -47261,25 +46205,25 @@ const Type1Parser = function Type1ParserClosure() {
     return c === 0x2f || c === 0x5b || c === 0x5d || c === 0x7b || c === 0x7d || c === 0x28 || c === 0x29;
   }
 
-  class Type1Parser {
-    constructor(stream, encrypted, seacAnalysisEnabled) {
-      if (encrypted) {
-        const data = stream.getBytes();
-        const isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && 
isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && 
isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));
-        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();
+  function Type1Parser(stream, encrypted, seacAnalysisEnabled) {
+    if (encrypted) {
+      var data = stream.getBytes();
+      var isBinary = !((isHexDigit(data[0]) || (0, _core_utils.isWhiteSpace)(data[0])) && 
isHexDigit(data[1]) && isHexDigit(data[2]) && isHexDigit(data[3]) && isHexDigit(data[4]) && 
isHexDigit(data[5]) && isHexDigit(data[6]) && isHexDigit(data[7]));
+      stream = new _stream.Stream(isBinary ? decrypt(data, EEXEC_ENCRYPT_KEY, 4) : decryptAscii(data, 
EEXEC_ENCRYPT_KEY, 4));
     }
 
-    readNumberArray() {
+    this.seacAnalysisEnabled = !!seacAnalysisEnabled;
+    this.stream = stream;
+    this.nextChar();
+  }
+
+  Type1Parser.prototype = {
+    readNumberArray: function Type1Parser_readNumberArray() {
       this.getToken();
-      const array = [];
+      var array = [];
 
       while (true) {
-        const token = this.getToken();
+        var token = this.getToken();
 
         if (token === null || token === "]" || token === "}") {
           break;
@@ -47289,30 +46233,25 @@ const Type1Parser = function Type1ParserClosure() {
       }
 
       return array;
-    }
-
-    readNumber() {
-      const token = this.getToken();
+    },
+    readNumber: function Type1Parser_readNumber() {
+      var token = this.getToken();
       return parseFloat(token || 0);
-    }
-
-    readInt() {
-      const token = this.getToken();
+    },
+    readInt: function Type1Parser_readInt() {
+      var token = this.getToken();
       return parseInt(token || 0, 10) | 0;
-    }
-
-    readBoolean() {
-      const token = this.getToken();
+    },
+    readBoolean: function Type1Parser_readBoolean() {
+      var token = this.getToken();
       return token === "true" ? 1 : 0;
-    }
-
-    nextChar() {
+    },
+    nextChar: function Type1_nextChar() {
       return this.currentChar = this.stream.getByte();
-    }
-
-    getToken() {
-      let comment = false;
-      let ch = this.currentChar;
+    },
+    getToken: function Type1Parser_getToken() {
+      var comment = false;
+      var ch = this.currentChar;
 
       while (true) {
         if (ch === -1) {
@@ -47337,7 +46276,7 @@ const Type1Parser = function Type1ParserClosure() {
         return String.fromCharCode(ch);
       }
 
-      let token = "";
+      var token = "";
 
       do {
         token += String.fromCharCode(ch);
@@ -47345,30 +46284,28 @@ const Type1Parser = function Type1ParserClosure() {
       } while (ch >= 0 && !(0, _core_utils.isWhiteSpace)(ch) && !isSpecial(ch));
 
       return token;
-    }
-
-    readCharStrings(bytes, lenIV) {
+    },
+    readCharStrings: function Type1Parser_readCharStrings(bytes, lenIV) {
       if (lenIV === -1) {
         return bytes;
       }
 
       return decrypt(bytes, CHAR_STRS_ENCRYPT_KEY, lenIV);
-    }
-
-    extractFontProgram(properties) {
-      const stream = this.stream;
-      const subrs = [],
-            charstrings = [];
-      const privateData = Object.create(null);
+    },
+    extractFontProgram: function Type1Parser_extractFontProgram(properties) {
+      var stream = this.stream;
+      var subrs = [],
+          charstrings = [];
+      var privateData = Object.create(null);
       privateData.lenIV = 4;
-      const program = {
+      var program = {
         subrs: [],
         charstrings: [],
         properties: {
           privateData
         }
       };
-      let token, length, data, lenIV, encoded;
+      var token, length, data, lenIV, encoded;
 
       while ((token = this.getToken()) !== null) {
         if (token !== "/") {
@@ -47395,7 +46332,7 @@ const Type1Parser = function Type1ParserClosure() {
                 continue;
               }
 
-              const glyph = this.getToken();
+              var glyph = this.getToken();
               length = this.readInt();
               this.getToken();
               data = length > 0 ? stream.getBytes(length) : new Uint8Array(0);
@@ -47443,7 +46380,7 @@ const Type1Parser = function Type1ParserClosure() {
           case "OtherBlues":
           case "FamilyBlues":
           case "FamilyOtherBlues":
-            const blueArray = this.readNumberArray();
+            var blueArray = this.readNumberArray();
 
             if (blueArray.length > 0 && blueArray.length % 2 === 0 && HINTING_ENABLED) {
               program.properties.privateData[token] = blueArray;
@@ -47476,12 +46413,12 @@ const Type1Parser = function Type1ParserClosure() {
         }
       }
 
-      for (let i = 0; i < charstrings.length; i++) {
-        const glyph = charstrings[i].glyph;
+      for (var i = 0; i < charstrings.length; i++) {
+        glyph = charstrings[i].glyph;
         encoded = charstrings[i].encoded;
-        const charString = new Type1CharString();
-        const error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);
-        let output = charString.output;
+        var charString = new Type1CharString();
+        var error = charString.convert(encoded, subrs, this.seacAnalysisEnabled);
+        var output = charString.output;
 
         if (error) {
           output = [14];
@@ -47511,10 +46448,9 @@ const Type1Parser = function Type1ParserClosure() {
       }
 
       return program;
-    }
-
-    extractFontHeader(properties) {
-      let token;
+    },
+    extractFontHeader: function Type1Parser_extractFontHeader(properties) {
+      var token;
 
       while ((token = this.getToken()) !== null) {
         if (token !== "/") {
@@ -47525,22 +46461,22 @@ const Type1Parser = function Type1ParserClosure() {
 
         switch (token) {
           case "FontMatrix":
-            const matrix = this.readNumberArray();
+            var matrix = this.readNumberArray();
             properties.fontMatrix = matrix;
             break;
 
           case "Encoding":
-            const encodingArg = this.getToken();
-            let encoding;
+            var encodingArg = this.getToken();
+            var encoding;
 
             if (!/^\d+$/.test(encodingArg)) {
               encoding = (0, _encodings.getEncoding)(encodingArg);
             } else {
               encoding = [];
-              const size = parseInt(encodingArg, 10) | 0;
+              var size = parseInt(encodingArg, 10) | 0;
               this.getToken();
 
-              for (let j = 0; j < size; j++) {
+              for (var j = 0; j < size; j++) {
                 token = this.getToken();
 
                 while (token !== "dup" && token !== "def") {
@@ -47555,9 +46491,9 @@ const Type1Parser = function Type1ParserClosure() {
                   break;
                 }
 
-                const index = this.readInt();
+                var index = this.readInt();
                 this.getToken();
-                const glyph = this.getToken();
+                var glyph = this.getToken();
                 encoding[index] = glyph;
                 this.getToken();
               }
@@ -47567,7 +46503,7 @@ const Type1Parser = function Type1ParserClosure() {
             break;
 
           case "FontBBox":
-            const fontBBox = this.readNumberArray();
+            var fontBBox = this.readNumberArray();
             properties.ascent = Math.max(fontBBox[3], fontBBox[1]);
             properties.descent = Math.min(fontBBox[1], fontBBox[3]);
             properties.ascentScaled = true;
@@ -47575,16 +46511,14 @@ const Type1Parser = function Type1ParserClosure() {
         }
       }
     }
-
-  }
-
+  };
   return Type1Parser;
 }();
 
 exports.Type1Parser = Type1Parser;
 
 /***/ }),
-/* 40 */
+/* 38 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -47603,7 +46537,7 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _core_utils = __w_pdfjs_require__(8);
 
-const ShadingType = {
+var ShadingType = {
   FUNCTION_BASED: 1,
   AXIAL: 2,
   RADIAL: 3,
@@ -47613,7 +46547,7 @@ const ShadingType = {
   TENSOR_PATCH_MESH: 7
 };
 
-const Pattern = function PatternClosure() {
+var Pattern = function PatternClosure() {
   function Pattern() {
     (0, _util.unreachable)("should not call Pattern constructor");
   }
@@ -47625,8 +46559,8 @@ const Pattern = function PatternClosure() {
   };
 
   Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory, 
localColorSpaceCache) {
-    const dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
-    const type = dict.get("ShadingType");
+    var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
+    var type = dict.get("ShadingType");
 
     try {
       switch (type) {
@@ -47660,7 +46594,7 @@ const Pattern = function PatternClosure() {
 }();
 
 exports.Pattern = Pattern;
-const Shadings = {};
+var Shadings = {};
 Shadings.SMALL_NUMBER = 1e-6;
 
 Shadings.RadialAxial = function RadialAxialClosure() {
@@ -47687,27 +46621,32 @@ Shadings.RadialAxial = function RadialAxialClosure() {
       this.bbox = null;
     }
 
-    let t0 = 0.0,
+    var t0 = 0.0,
         t1 = 1.0;
 
     if (dict.has("Domain")) {
-      const domainArr = dict.getArray("Domain");
+      var domainArr = dict.getArray("Domain");
       t0 = domainArr[0];
       t1 = domainArr[1];
     }
 
-    let extendStart = false,
+    var extendStart = false,
         extendEnd = false;
 
     if (dict.has("Extend")) {
-      const extendArr = dict.getArray("Extend");
+      var extendArr = dict.getArray("Extend");
       extendStart = extendArr[0];
       extendEnd = extendArr[1];
     }
 
     if (this.shadingType === ShadingType.RADIAL && (!extendStart || !extendEnd)) {
-      const [x1, y1, r1, x2, y2, r2] = this.coordsArr;
-      const distance = Math.hypot(x1 - x2, y1 - y2);
+      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.");
@@ -47716,32 +46655,32 @@ Shadings.RadialAxial = function RadialAxialClosure() {
 
     this.extendStart = extendStart;
     this.extendEnd = extendEnd;
-    const fnObj = dict.getRaw("Function");
-    const fn = pdfFunctionFactory.createFromArray(fnObj);
+    var fnObj = dict.getRaw("Function");
+    var fn = pdfFunctionFactory.createFromArray(fnObj);
     const NUMBER_OF_SAMPLES = 10;
     const step = (t1 - t0) / NUMBER_OF_SAMPLES;
-    const colorStops = this.colorStops = [];
+    var colorStops = this.colorStops = [];
 
     if (t0 >= t1 || step <= 0) {
       (0, _util.info)("Bad shading domain.");
       return;
     }
 
-    const color = new Float32Array(cs.numComps),
-          ratio = new Float32Array(1);
-    let rgbColor;
+    var color = new Float32Array(cs.numComps),
+        ratio = new Float32Array(1);
+    var rgbColor;
 
     for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {
       ratio[0] = t0 + i * step;
       fn(ratio, 0, color, 0);
       rgbColor = cs.getRgb(color, 0);
 
-      const cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);
+      var cssColor = _util.Util.makeHexColor(rgbColor[0], rgbColor[1], rgbColor[2]);
 
       colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);
     }
 
-    let background = "transparent";
+    var background = "transparent";
 
     if (dict.has("Background")) {
       rgbColor = cs.getRgb(dict.get("Background"), 0);
@@ -47763,9 +46702,9 @@ Shadings.RadialAxial = function RadialAxialClosure() {
 
   RadialAxial.prototype = {
     getIR: function RadialAxial_getIR() {
-      const coordsArr = this.coordsArr;
-      const shadingType = this.shadingType;
-      let type, p0, p1, r0, r1;
+      var coordsArr = this.coordsArr;
+      var shadingType = this.shadingType;
+      var type, p0, p1, r0, r1;
 
       if (shadingType === ShadingType.AXIAL) {
         p0 = [coordsArr[0], coordsArr[1]];
@@ -47783,14 +46722,14 @@ Shadings.RadialAxial = function RadialAxialClosure() {
         (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`);
       }
 
-      const matrix = this.matrix;
+      var matrix = this.matrix;
 
       if (matrix) {
         p0 = _util.Util.applyTransform(p0, matrix);
         p1 = _util.Util.applyTransform(p1, matrix);
 
         if (shadingType === ShadingType.RADIAL) {
-          const scale = _util.Util.singularValueDecompose2dScale(matrix);
+          var scale = _util.Util.singularValueDecompose2dScale(matrix);
 
           r0 *= scale[0];
           r1 *= scale[1];
@@ -47809,9 +46748,9 @@ Shadings.Mesh = function MeshClosure() {
     this.context = context;
     this.buffer = 0;
     this.bufferLength = 0;
-    const numComps = context.numComps;
+    var numComps = context.numComps;
     this.tmpCompsBuf = new Float32Array(numComps);
-    const csNumComps = context.colorSpace.numComps;
+    var csNumComps = context.colorSpace.numComps;
     this.tmpCsCompsBuf = context.colorFn ? new Float32Array(csNumComps) : this.tmpCompsBuf;
   }
 
@@ -47825,7 +46764,7 @@ Shadings.Mesh = function MeshClosure() {
         return true;
       }
 
-      const nextByte = this.stream.getByte();
+      var nextByte = this.stream.getByte();
 
       if (nextByte < 0) {
         return false;
@@ -47837,8 +46776,8 @@ Shadings.Mesh = function MeshClosure() {
     },
 
     readBits: function MeshStreamReader_readBits(n) {
-      let buffer = this.buffer;
-      let bufferLength = this.bufferLength;
+      var buffer = this.buffer;
+      var bufferLength = this.bufferLength;
 
       if (n === 32) {
         if (bufferLength === 0) {
@@ -47846,7 +46785,7 @@ Shadings.Mesh = function MeshClosure() {
         }
 
         buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | 
this.stream.getByte();
-        const nextByte = this.stream.getByte();
+        var nextByte = this.stream.getByte();
         this.buffer = nextByte & (1 << bufferLength) - 1;
         return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;
       }
@@ -47873,26 +46812,26 @@ Shadings.Mesh = function MeshClosure() {
       return this.readBits(this.context.bitsPerFlag);
     },
     readCoordinate: function MeshStreamReader_readCoordinate() {
-      const bitsPerCoordinate = this.context.bitsPerCoordinate;
-      const xi = this.readBits(bitsPerCoordinate);
-      const yi = this.readBits(bitsPerCoordinate);
-      const decode = this.context.decode;
-      const scale = bitsPerCoordinate < 32 ? 1 / ((1 << bitsPerCoordinate) - 1) : 2.3283064365386963e-10;
+      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() {
-      const numComps = this.context.numComps;
-      const bitsPerComponent = this.context.bitsPerComponent;
-      const scale = bitsPerComponent < 32 ? 1 / ((1 << bitsPerComponent) - 1) : 2.3283064365386963e-10;
-      const decode = this.context.decode;
-      const components = this.tmpCompsBuf;
-
-      for (let i = 0, j = 4; i < numComps; i++, j += 2) {
-        const ci = this.readBits(bitsPerComponent);
+      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];
       }
 
-      const color = this.tmpCsCompsBuf;
+      var color = this.tmpCsCompsBuf;
 
       if (this.context.colorFn) {
         this.context.colorFn(components, 0, color, 0);
@@ -47903,16 +46842,16 @@ Shadings.Mesh = function MeshClosure() {
   };
 
   function decodeType4Shading(mesh, reader) {
-    const coords = mesh.coords;
-    const colors = mesh.colors;
-    const operators = [];
-    const ps = [];
-    let verticesLeft = 0;
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var operators = [];
+    var ps = [];
+    var verticesLeft = 0;
 
     while (reader.hasData) {
-      const f = reader.readFlag();
-      const coord = reader.readCoordinate();
-      const color = reader.readComponents();
+      var f = reader.readFlag();
+      var coord = reader.readCoordinate();
+      var color = reader.readComponents();
 
       if (verticesLeft === 0) {
         if (!(0 <= f && f <= 2)) {
@@ -47953,13 +46892,13 @@ Shadings.Mesh = function MeshClosure() {
   }
 
   function decodeType5Shading(mesh, reader, verticesPerRow) {
-    const coords = mesh.coords;
-    const colors = mesh.colors;
-    const ps = [];
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = [];
 
     while (reader.hasData) {
-      const coord = reader.readCoordinate();
-      const color = reader.readComponents();
+      var coord = reader.readCoordinate();
+      var color = reader.readComponents();
       ps.push(coords.length);
       coords.push(coord);
       colors.push(color);
@@ -47973,24 +46912,24 @@ Shadings.Mesh = function MeshClosure() {
     });
   }
 
-  const MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
-  const MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
-  const TRIANGLE_DENSITY = 20;
+  var MIN_SPLIT_PATCH_CHUNKS_AMOUNT = 3;
+  var MAX_SPLIT_PATCH_CHUNKS_AMOUNT = 20;
+  var TRIANGLE_DENSITY = 20;
 
-  const getB = function getBClosure() {
+  var getB = function getBClosure() {
     function buildB(count) {
-      const lut = [];
+      var lut = [];
 
-      for (let i = 0; i <= count; i++) {
-        const t = i / count,
-              t_ = 1 - t;
+      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;
     }
 
-    const cache = [];
+    var cache = [];
     return function getB(count) {
       if (!cache[count]) {
         cache[count] = buildB(count);
@@ -48001,34 +46940,34 @@ Shadings.Mesh = function MeshClosure() {
   }();
 
   function buildFigureFromPatch(mesh, index) {
-    const figure = mesh.figures[index];
+    var figure = mesh.figures[index];
     (0, _util.assert)(figure.type === "patch", "Unexpected patch mesh figure");
-    const coords = mesh.coords,
-          colors = mesh.colors;
-    const pi = figure.coords;
-    const ci = figure.colors;
-    const figureMinX = Math.min(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
-    const figureMinY = Math.min(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
-    const figureMaxX = Math.max(coords[pi[0]][0], coords[pi[3]][0], coords[pi[12]][0], coords[pi[15]][0]);
-    const figureMaxY = Math.max(coords[pi[0]][1], coords[pi[3]][1], coords[pi[12]][1], coords[pi[15]][1]);
-    let splitXBy = Math.ceil((figureMaxX - figureMinX) * TRIANGLE_DENSITY / (mesh.bounds[2] - 
mesh.bounds[0]));
+    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));
-    let splitYBy = Math.ceil((figureMaxY - figureMinY) * TRIANGLE_DENSITY / (mesh.bounds[3] - 
mesh.bounds[1]));
+    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));
-    const verticesPerRow = splitXBy + 1;
-    const figureCoords = new Int32Array((splitYBy + 1) * verticesPerRow);
-    const figureColors = new Int32Array((splitYBy + 1) * verticesPerRow);
-    let k = 0;
-    const cl = new Uint8Array(3),
-          cr = new Uint8Array(3);
-    const c0 = colors[ci[0]],
-          c1 = colors[ci[1]],
-          c2 = colors[ci[2]],
-          c3 = colors[ci[3]];
-    const bRow = getB(splitYBy),
-          bCol = getB(splitXBy);
-
-    for (let row = 0; row <= splitYBy; row++) {
+    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;
@@ -48036,18 +46975,18 @@ Shadings.Mesh = function MeshClosure() {
       cr[1] = (c1[1] * (splitYBy - row) + c3[1] * row) / splitYBy | 0;
       cr[2] = (c1[2] * (splitYBy - row) + c3[2] * row) / splitYBy | 0;
 
-      for (let col = 0; col <= splitXBy; col++, k++) {
+      for (var col = 0; col <= splitXBy; col++, k++) {
         if ((row === 0 || row === splitYBy) && (col === 0 || col === splitXBy)) {
           continue;
         }
 
-        let x = 0,
+        var x = 0,
             y = 0;
-        let q = 0;
+        var q = 0;
 
-        for (let i = 0; i <= 3; i++) {
-          for (let j = 0; j <= 3; j++, q++) {
-            const m = bRow[row][i] * bCol[col][j];
+        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;
           }
@@ -48056,7 +46995,7 @@ Shadings.Mesh = function MeshClosure() {
         figureCoords[k] = coords.length;
         coords.push([x, y]);
         figureColors[k] = colors.length;
-        const newColor = new Uint8Array(3);
+        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;
@@ -48081,31 +47020,32 @@ Shadings.Mesh = function MeshClosure() {
   }
 
   function decodeType6Shading(mesh, reader) {
-    const coords = mesh.coords;
-    const colors = mesh.colors;
-    const ps = new Int32Array(16);
-    const cs = new Int32Array(4);
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = new Int32Array(16);
+    var cs = new Int32Array(4);
 
     while (reader.hasData) {
-      const f = reader.readFlag();
+      var f = reader.readFlag();
 
       if (!(0 <= f && f <= 3)) {
         throw new _util.FormatError("Unknown type6 flag");
       }
 
-      const pi = coords.length;
+      var i, ii;
+      var pi = coords.length;
 
-      for (let i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {
+      for (i = 0, ii = f !== 0 ? 8 : 12; i < ii; i++) {
         coords.push(reader.readCoordinate());
       }
 
-      const ci = colors.length;
+      var ci = colors.length;
 
-      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
+      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
         colors.push(reader.readComponents());
       }
 
-      let tmp1, tmp2, tmp3, tmp4;
+      var tmp1, tmp2, tmp3, tmp4;
 
       switch (f) {
         case 0:
@@ -48211,31 +47151,32 @@ Shadings.Mesh = function MeshClosure() {
   }
 
   function decodeType7Shading(mesh, reader) {
-    const coords = mesh.coords;
-    const colors = mesh.colors;
-    const ps = new Int32Array(16);
-    const cs = new Int32Array(4);
+    var coords = mesh.coords;
+    var colors = mesh.colors;
+    var ps = new Int32Array(16);
+    var cs = new Int32Array(4);
 
     while (reader.hasData) {
-      const f = reader.readFlag();
+      var f = reader.readFlag();
 
       if (!(0 <= f && f <= 3)) {
         throw new _util.FormatError("Unknown type7 flag");
       }
 
-      const pi = coords.length;
+      var i, ii;
+      var pi = coords.length;
 
-      for (let i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {
+      for (i = 0, ii = f !== 0 ? 12 : 16; i < ii; i++) {
         coords.push(reader.readCoordinate());
       }
 
-      const ci = colors.length;
+      var ci = colors.length;
 
-      for (let i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
+      for (i = 0, ii = f !== 0 ? 2 : 4; i < ii; i++) {
         colors.push(reader.readComponents());
       }
 
-      let tmp1, tmp2, tmp3, tmp4;
+      var tmp1, tmp2, tmp3, tmp4;
 
       switch (f) {
         case 0:
@@ -48349,14 +47290,14 @@ Shadings.Mesh = function MeshClosure() {
   }
 
   function updateBounds(mesh) {
-    let minX = mesh.coords[0][0],
+    var minX = mesh.coords[0][0],
         minY = mesh.coords[0][1],
         maxX = minX,
         maxY = minY;
 
-    for (let i = 1, ii = mesh.coords.length; i < ii; i++) {
-      const x = mesh.coords[i][0],
-            y = mesh.coords[i][1];
+    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;
@@ -48367,34 +47308,34 @@ Shadings.Mesh = function MeshClosure() {
   }
 
   function packData(mesh) {
-    let i, ii, j, jj;
-    const coords = mesh.coords;
-    const coordsPacked = new Float32Array(coords.length * 2);
+    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++) {
-      const xy = coords[i];
+      var xy = coords[i];
       coordsPacked[j++] = xy[0];
       coordsPacked[j++] = xy[1];
     }
 
     mesh.coords = coordsPacked;
-    const colors = mesh.colors;
-    const colorsPacked = new Uint8Array(colors.length * 3);
+    var colors = mesh.colors;
+    var colorsPacked = new Uint8Array(colors.length * 3);
 
     for (i = 0, j = 0, ii = colors.length; i < ii; i++) {
-      const c = colors[i];
+      var c = colors[i];
       colorsPacked[j++] = c[0];
       colorsPacked[j++] = c[1];
       colorsPacked[j++] = c[2];
     }
 
     mesh.colors = colorsPacked;
-    const figures = mesh.figures;
+    var figures = mesh.figures;
 
     for (i = 0, ii = figures.length; i < ii; i++) {
-      const figure = figures[i],
-            ps = figure.coords,
-            cs = figure.colors;
+      var figure = figures[i],
+          ps = figure.coords,
+          cs = figure.colors;
 
       for (j = 0, jj = ps.length; j < jj; j++) {
         ps[j] *= 2;
@@ -48408,7 +47349,7 @@ Shadings.Mesh = function MeshClosure() {
       throw new _util.FormatError("Mesh data is not a stream");
     }
 
-    const dict = stream.dict;
+    var dict = stream.dict;
     this.matrix = matrix;
     this.shadingType = dict.get("ShadingType");
     this.type = "Pattern";
@@ -48430,12 +47371,12 @@ Shadings.Mesh = function MeshClosure() {
 
     this.cs = cs;
     this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null;
-    const fnObj = dict.getRaw("Function");
-    const fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;
+    var fnObj = dict.getRaw("Function");
+    var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;
     this.coords = [];
     this.colors = [];
     this.figures = [];
-    const decodeContext = {
+    var decodeContext = {
       bitsPerCoordinate: dict.get("BitsPerCoordinate"),
       bitsPerComponent: dict.get("BitsPerComponent"),
       bitsPerFlag: dict.get("BitsPerFlag"),
@@ -48444,8 +47385,8 @@ Shadings.Mesh = function MeshClosure() {
       colorSpace: cs,
       numComps: fn ? 1 : cs.numComps
     };
-    const reader = new MeshStreamReader(stream, decodeContext);
-    let patchMesh = false;
+    var reader = new MeshStreamReader(stream, decodeContext);
+    var patchMesh = false;
 
     switch (this.shadingType) {
       case ShadingType.FREE_FORM_MESH:
@@ -48453,7 +47394,7 @@ Shadings.Mesh = function MeshClosure() {
         break;
 
       case ShadingType.LATTICE_FORM_MESH:
-        const verticesPerRow = dict.get("VerticesPerRow") | 0;
+        var verticesPerRow = dict.get("VerticesPerRow") | 0;
 
         if (verticesPerRow < 2) {
           throw new _util.FormatError("Invalid VerticesPerRow");
@@ -48480,7 +47421,7 @@ Shadings.Mesh = function MeshClosure() {
     if (patchMesh) {
       updateBounds(this);
 
-      for (let i = 0, ii = this.figures.length; i < ii; i++) {
+      for (var i = 0, ii = this.figures.length; i < ii; i++) {
         buildFigureFromPatch(this, i);
       }
     }
@@ -48528,7 +47469,7 @@ function getTilingPatternIR(operatorList, dict, color) {
 }
 
 /***/ }),
-/* 41 */
+/* 39 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -48543,7 +47484,7 @@ var _primitives = __w_pdfjs_require__(5);
 
 var _util = __w_pdfjs_require__(2);
 
-var _ps_parser = __w_pdfjs_require__(42);
+var _ps_parser = __w_pdfjs_require__(40);
 
 var _image_utils = __w_pdfjs_require__(24);
 
@@ -49182,28 +48123,26 @@ function isPDFFunction(v) {
 var PostScriptStack = function PostScriptStackClosure() {
   var MAX_STACK_SIZE = 100;
 
-  class PostScriptStack {
-    constructor(initialStack) {
-      this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
-    }
+  function PostScriptStack(initialStack) {
+    this.stack = !initialStack ? [] : Array.prototype.slice.call(initialStack, 0);
+  }
 
-    push(value) {
+  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() {
+    },
+    pop: function PostScriptStack_pop() {
       if (this.stack.length <= 0) {
         throw new Error("PostScript function stack underflow.");
       }
 
       return this.stack.pop();
-    }
-
-    copy(n) {
+    },
+    copy: function PostScriptStack_copy(n) {
       if (this.stack.length + n >= MAX_STACK_SIZE) {
         throw new Error("PostScript function stack overflow.");
       }
@@ -49213,13 +48152,11 @@ var PostScriptStack = function PostScriptStackClosure() {
       for (var i = stack.length - n, j = n - 1; j >= 0; j--, i++) {
         stack.push(stack[i]);
       }
-    }
-
-    index(n) {
+    },
+    index: function PostScriptStack_index(n) {
       this.push(this.stack[this.stack.length - n - 1]);
-    }
-
-    roll(n, p) {
+    },
+    roll: function PostScriptStack_roll(n, p) {
       var stack = this.stack;
       var l = stack.length - n;
       var r = stack.length - 1,
@@ -49246,415 +48183,406 @@ var PostScriptStack = function PostScriptStackClosure() {
         stack[j] = t;
       }
     }
-
-  }
-
+  };
   return PostScriptStack;
 }();
 
-class PostScriptEvaluator {
-  constructor(operators) {
+var PostScriptEvaluator = function PostScriptEvaluatorClosure() {
+  function PostScriptEvaluator(operators) {
     this.operators = operators;
   }
 
-  execute(initialStack) {
-    var stack = new PostScriptStack(initialStack);
-    var counter = 0;
-    var operators = this.operators;
-    var length = operators.length;
-    var operator, a, b;
+  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++];
+      while (counter < length) {
+        operator = operators[counter++];
 
-      if (typeof operator === "number") {
-        stack.push(operator);
-        continue;
-      }
+        if (typeof operator === "number") {
+          stack.push(operator);
+          continue;
+        }
 
-      switch (operator) {
-        case "jz":
-          b = stack.pop();
-          a = stack.pop();
+        switch (operator) {
+          case "jz":
+            b = stack.pop();
+            a = stack.pop();
 
-          if (!a) {
-            counter = b;
-          }
+            if (!a) {
+              counter = b;
+            }
 
-          break;
+            break;
 
-        case "j":
-          a = stack.pop();
-          counter = a;
-          break;
+          case "j":
+            a = stack.pop();
+            counter = a;
+            break;
 
-        case "abs":
-          a = stack.pop();
-          stack.push(Math.abs(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 "add":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a + b);
+            break;
 
-        case "and":
-          b = stack.pop();
-          a = stack.pop();
+          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);
-          }
+            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+              stack.push(a && b);
+            } else {
+              stack.push(a & b);
+            }
 
-          break;
+            break;
 
-        case "atan":
-          a = stack.pop();
-          stack.push(Math.atan(a));
-          break;
+          case "atan":
+            a = stack.pop();
+            stack.push(Math.atan(a));
+            break;
 
-        case "bitshift":
-          b = stack.pop();
-          a = stack.pop();
+          case "bitshift":
+            b = stack.pop();
+            a = stack.pop();
 
-          if (a > 0) {
-            stack.push(a << b);
-          } else {
-            stack.push(a >> b);
-          }
+            if (a > 0) {
+              stack.push(a << b);
+            } else {
+              stack.push(a >> b);
+            }
 
-          break;
+            break;
 
-        case "ceiling":
-          a = stack.pop();
-          stack.push(Math.ceil(a));
-          break;
+          case "ceiling":
+            a = stack.pop();
+            stack.push(Math.ceil(a));
+            break;
 
-        case "copy":
-          a = stack.pop();
-          stack.copy(a);
-          break;
+          case "copy":
+            a = stack.pop();
+            stack.copy(a);
+            break;
 
-        case "cos":
-          a = stack.pop();
-          stack.push(Math.cos(a));
-          break;
+          case "cos":
+            a = stack.pop();
+            stack.push(Math.cos(a));
+            break;
 
-        case "cvi":
-          a = stack.pop() | 0;
-          stack.push(a);
-          break;
+          case "cvi":
+            a = stack.pop() | 0;
+            stack.push(a);
+            break;
 
-        case "cvr":
-          break;
+          case "cvr":
+            break;
 
-        case "div":
-          b = stack.pop();
-          a = stack.pop();
-          stack.push(a / b);
-          break;
+          case "div":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a / b);
+            break;
 
-        case "dup":
-          stack.copy(1);
-          break;
+          case "dup":
+            stack.copy(1);
+            break;
 
-        case "eq":
-          b = stack.pop();
-          a = stack.pop();
-          stack.push(a === b);
-          break;
+          case "eq":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a === b);
+            break;
 
-        case "exch":
-          stack.roll(2, 1);
-          break;
+          case "exch":
+            stack.roll(2, 1);
+            break;
 
-        case "exp":
-          b = stack.pop();
-          a = stack.pop();
-          stack.push(a ** b);
-          break;
+          case "exp":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a ** b);
+            break;
 
-        case "false":
-          stack.push(false);
-          break;
+          case "false":
+            stack.push(false);
+            break;
 
-        case "floor":
-          a = stack.pop();
-          stack.push(Math.floor(a));
-          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 "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 "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 "idiv":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a / b | 0);
+            break;
 
-        case "index":
-          a = stack.pop();
-          stack.index(a);
-          break;
+          case "index":
+            a = stack.pop();
+            stack.index(a);
+            break;
 
-        case "le":
-          b = stack.pop();
-          a = stack.pop();
-          stack.push(a <= b);
-          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 "ln":
+            a = stack.pop();
+            stack.push(Math.log(a));
+            break;
 
-        case "log":
-          a = stack.pop();
-          stack.push(Math.log(a) / Math.LN10);
-          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 "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 "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 "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 "ne":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a !== b);
+            break;
 
-        case "neg":
-          a = stack.pop();
-          stack.push(-a);
-          break;
+          case "neg":
+            a = stack.pop();
+            stack.push(-a);
+            break;
 
-        case "not":
-          a = stack.pop();
+          case "not":
+            a = stack.pop();
 
-          if ((0, _util.isBool)(a)) {
-            stack.push(!a);
-          } else {
-            stack.push(~a);
-          }
+            if ((0, _util.isBool)(a)) {
+              stack.push(!a);
+            } else {
+              stack.push(~a);
+            }
 
-          break;
+            break;
 
-        case "or":
-          b = stack.pop();
-          a = stack.pop();
+          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);
-          }
+            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+              stack.push(a || b);
+            } else {
+              stack.push(a | b);
+            }
 
-          break;
+            break;
 
-        case "pop":
-          stack.pop();
-          break;
+          case "pop":
+            stack.pop();
+            break;
 
-        case "roll":
-          b = stack.pop();
-          a = stack.pop();
-          stack.roll(a, b);
-          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 "round":
+            a = stack.pop();
+            stack.push(Math.round(a));
+            break;
 
-        case "sin":
-          a = stack.pop();
-          stack.push(Math.sin(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 "sqrt":
+            a = stack.pop();
+            stack.push(Math.sqrt(a));
+            break;
 
-        case "sub":
-          b = stack.pop();
-          a = stack.pop();
-          stack.push(a - b);
-          break;
+          case "sub":
+            b = stack.pop();
+            a = stack.pop();
+            stack.push(a - b);
+            break;
 
-        case "true":
-          stack.push(true);
-          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 "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();
+          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);
-          }
+            if ((0, _util.isBool)(a) && (0, _util.isBool)(b)) {
+              stack.push(a !== b);
+            } else {
+              stack.push(a ^ b);
+            }
 
-          break;
+            break;
 
-        default:
-          throw new _util.FormatError(`Unknown operator ${operator}`);
+          default:
+            throw new _util.FormatError(`Unknown operator ${operator}`);
+        }
       }
-    }
-
-    return stack.stack;
-  }
 
-}
+      return stack.stack;
+    }
+  };
+  return PostScriptEvaluator;
+}();
 
 exports.PostScriptEvaluator = PostScriptEvaluator;
 
 var PostScriptCompiler = function PostScriptCompilerClosure() {
-  class AstNode {
-    constructor(type) {
-      this.type = type;
-    }
+  function AstNode(type) {
+    this.type = type;
+  }
 
-    visit(visitor) {
-      (0, _util.unreachable)("abstract method");
-    }
+  AstNode.prototype.visit = function (visitor) {
+    (0, _util.unreachable)("abstract method");
+  };
 
+  function AstArgument(index, min, max) {
+    AstNode.call(this, "args");
+    this.index = index;
+    this.min = min;
+    this.max = max;
   }
 
-  class AstArgument extends AstNode {
-    constructor(index, min, max) {
-      super("args");
-      this.index = index;
-      this.min = min;
-      this.max = max;
-    }
+  AstArgument.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitArgument(this);
-    }
+  AstArgument.prototype.visit = function (visitor) {
+    visitor.visitArgument(this);
+  };
 
+  function AstLiteral(number) {
+    AstNode.call(this, "literal");
+    this.number = number;
+    this.min = number;
+    this.max = number;
   }
 
-  class AstLiteral extends AstNode {
-    constructor(number) {
-      super("literal");
-      this.number = number;
-      this.min = number;
-      this.max = number;
-    }
+  AstLiteral.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitLiteral(this);
-    }
+  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;
   }
 
-  class AstBinaryOperation extends AstNode {
-    constructor(op, arg1, arg2, min, max) {
-      super("binary");
-      this.op = op;
-      this.arg1 = arg1;
-      this.arg2 = arg2;
-      this.min = min;
-      this.max = max;
-    }
+  AstBinaryOperation.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitBinaryOperation(this);
-    }
+  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;
   }
 
-  class AstMin extends AstNode {
-    constructor(arg, max) {
-      super("max");
-      this.arg = arg;
-      this.min = arg.min;
-      this.max = max;
-    }
+  AstMin.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitMin(this);
-    }
+  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;
   }
 
-  class AstVariable extends AstNode {
-    constructor(index, min, max) {
-      super("var");
-      this.index = index;
-      this.min = min;
-      this.max = max;
-    }
+  AstVariable.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitVariable(this);
-    }
+  AstVariable.prototype.visit = function (visitor) {
+    visitor.visitVariable(this);
+  };
 
+  function AstVariableDefinition(variable, arg) {
+    AstNode.call(this, "definition");
+    this.variable = variable;
+    this.arg = arg;
   }
 
-  class AstVariableDefinition extends AstNode {
-    constructor(variable, arg) {
-      super("definition");
-      this.variable = variable;
-      this.arg = arg;
-    }
+  AstVariableDefinition.prototype = Object.create(AstNode.prototype);
 
-    visit(visitor) {
-      visitor.visitVariableDefinition(this);
-    }
+  AstVariableDefinition.prototype.visit = function (visitor) {
+    visitor.visitVariableDefinition(this);
+  };
 
+  function ExpressionBuilderVisitor() {
+    this.parts = [];
   }
 
-  class ExpressionBuilderVisitor {
-    constructor() {
-      this.parts = [];
-    }
-
+  ExpressionBuilderVisitor.prototype = {
     visitArgument(arg) {
       this.parts.push("Math.max(", arg.min, ", Math.min(", arg.max, ", src[srcOffset + ", arg.index, "]))");
-    }
+    },
 
     visitVariable(variable) {
       this.parts.push("v", variable.index);
-    }
+    },
 
     visitLiteral(literal) {
       this.parts.push(literal.number);
-    }
+    },
 
     visitBinaryOperation(operation) {
       this.parts.push("(");
@@ -49662,7 +48590,7 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
       this.parts.push(" ", operation.op, " ");
       operation.arg2.visit(this);
       this.parts.push(")");
-    }
+    },
 
     visitVariableDefinition(definition) {
       this.parts.push("var ");
@@ -49670,19 +48598,19 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
       this.parts.push(" = ");
       definition.arg.visit(this);
       this.parts.push(";");
-    }
+    },
 
     visitMin(max) {
       this.parts.push("Math.min(");
       max.arg.visit(this);
       this.parts.push(", ", max.max, ")");
-    }
+    },
 
     toString() {
       return this.parts.join("");
     }
 
-  }
+  };
 
   function buildAddOperation(num1, num2) {
     if (num2.type === "literal" && num2.number === 0) {
@@ -49750,8 +48678,10 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
     return new AstMin(num1, max);
   }
 
-  class PostScriptCompiler {
-    compile(code, domain, range) {
+  function PostScriptCompiler() {}
+
+  PostScriptCompiler.prototype = {
+    compile: function PostScriptCompiler_compile(code, domain, range) {
       var stack = [];
       var instructions = [];
       var inputSize = domain.length >> 1,
@@ -49949,16 +48879,14 @@ var PostScriptCompiler = function PostScriptCompilerClosure() {
       });
       return result.join("\n");
     }
-
-  }
-
+  };
   return PostScriptCompiler;
 }();
 
 exports.PostScriptCompiler = PostScriptCompiler;
 
 /***/ }),
-/* 42 */
+/* 40 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50211,7 +49139,7 @@ class PostScriptLexer {
 exports.PostScriptLexer = PostScriptLexer;
 
 /***/ }),
-/* 43 */
+/* 41 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50522,7 +49450,7 @@ function bidi(str, startLevel, vertical) {
 }
 
 /***/ }),
-/* 44 */
+/* 42 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -50534,7 +49462,7 @@ exports.getMetrics = void 0;
 
 var _core_utils = __w_pdfjs_require__(8);
 
-const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
+var getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
   t.Courier = 600;
   t["Courier-Bold"] = 600;
   t["Courier-BoldOblique"] = 600;
@@ -53458,10403 +52386,1485 @@ const getMetrics = (0, _core_utils.getLookupTableFactory)(function (t) {
     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;
-
-/***/ }),
-/* 45 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.MurmurHash3_64 = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-const SEED = 0xc3d2e1f0;
-const MASK_HIGH = 0xffff0000;
-const MASK_LOW = 0xffff;
-
-class MurmurHash3_64 {
-  constructor(seed) {
-    this.h1 = seed ? seed & 0xffffffff : SEED;
-    this.h2 = seed ? seed & 0xffffffff : SEED;
-  }
-
-  update(input) {
-    let data, length;
-
-    if ((0, _util.isString)(input)) {
-      data = new Uint8Array(input.length * 2);
-      length = 0;
-
-      for (let i = 0, ii = input.length; i < ii; i++) {
-        const code = input.charCodeAt(i);
-
-        if (code <= 0xff) {
-          data[length++] = code;
-        } else {
-          data[length++] = code >>> 8;
-          data[length++] = code & 0xff;
-        }
-      }
-    } else if ((0, _util.isArrayBuffer)(input)) {
-      data = input.slice();
-      length = data.byteLength;
-    } else {
-      throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
-    }
-
-    const blockCounts = length >> 2;
-    const tailLength = length - blockCounts * 4;
-    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
-    let k1 = 0,
-        k2 = 0;
-    let h1 = this.h1,
-        h2 = this.h2;
-    const C1 = 0xcc9e2d51,
-          C2 = 0x1b873593;
-    const C1_LOW = C1 & MASK_LOW,
-          C2_LOW = C2 & MASK_LOW;
-
-    for (let 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;
-  }
-
-  hexdigest() {
-    let h1 = this.h1,
-        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;
-    const hex1 = (h1 >>> 0).toString(16),
-          hex2 = (h2 >>> 0).toString(16);
-    return hex1.padStart(8, "0") + hex2.padStart(8, "0");
-  }
-
-}
-
-exports.MurmurHash3_64 = MurmurHash3_64;
-
-/***/ }),
-/* 46 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.OperatorList = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-const QueueOptimizer = function QueueOptimizerClosure() {
-  function addState(parentState, pattern, checkFn, iterateFn, processFn) {
-    let state = parentState;
-
-    for (let i = 0, ii = pattern.length - 1; i < ii; i++) {
-      const item = pattern[i];
-      state = state[item] || (state[item] = []);
-    }
-
-    state[pattern[pattern.length - 1]] = {
-      checkFn,
-      iterateFn,
-      processFn
-    };
-  }
-
-  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
-    const iFirstPIMXO = iFirstSave + 2;
-    let i;
-
-    for (i = 0; i < count; i++) {
-      const arg = argsArray[iFirstPIMXO + 4 * i];
-      const 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;
-  }
-
-  const InitialState = [];
-  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, 
_util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
-    const fnArray = context.fnArray;
-    const iFirstSave = context.iCurr - 3;
-    const pos = (i - iFirstSave) % 4;
-
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
-
-      case 1:
-        return fnArray[i] === _util.OPS.transform;
-
-      case 2:
-        return fnArray[i] === _util.OPS.paintInlineImageXObject;
-
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
-    }
-
-    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);
-  }, function foundInlineImageGroup(context, i) {
-    const MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
-    const MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
-    const MAX_WIDTH = 1000;
-    const IMAGE_PADDING = 1;
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const curr = context.iCurr;
-    const iFirstSave = curr - 3;
-    const iFirstTransform = curr - 2;
-    const iFirstPIIXO = curr - 1;
-    const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
-
-    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
-      return i - (i - iFirstSave) % 4;
-    }
-
-    let maxX = 0;
-    const map = [];
-    let maxLineHeight = 0;
-    let currentX = IMAGE_PADDING,
-        currentY = IMAGE_PADDING;
-
-    for (let q = 0; q < count; q++) {
-      const transform = argsArray[iFirstTransform + (q << 2)];
-      const 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,
-        x: currentX,
-        y: currentY,
-        w: img.width,
-        h: img.height
-      });
-      currentX += img.width + 2 * IMAGE_PADDING;
-      maxLineHeight = Math.max(maxLineHeight, img.height);
-    }
-
-    const imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
-    const imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
-    const imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
-    const imgRowSize = imgWidth << 2;
-
-    for (let q = 0; q < count; q++) {
-      const data = argsArray[iFirstPIIXO + (q << 2)][0].data;
-      const rowSize = map[q].w << 2;
-      let dataOffset = 0;
-      let offset = map[q].x + map[q].y * imgWidth << 2;
-      imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
-
-      for (let 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], null, function iterateImageMaskGroup(context, i) {
-    const fnArray = context.fnArray;
-    const iFirstSave = context.iCurr - 3;
-    const pos = (i - iFirstSave) % 4;
-
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
-
-      case 1:
-        return fnArray[i] === _util.OPS.transform;
-
-      case 2:
-        return fnArray[i] === _util.OPS.paintImageMaskXObject;
-
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
-    }
-
-    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);
-  }, function foundImageMaskGroup(context, i) {
-    const MIN_IMAGES_IN_MASKS_BLOCK = 10;
-    const MAX_IMAGES_IN_MASKS_BLOCK = 100;
-    const MAX_SAME_IMAGES_IN_MASKS_BLOCK = 1000;
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const curr = context.iCurr;
-    const iFirstSave = curr - 3;
-    const iFirstTransform = curr - 2;
-    const iFirstPIMXO = curr - 1;
-    let count = Math.floor((i - iFirstSave) / 4);
-    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
-
-    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
-      return i - (i - iFirstSave) % 4;
-    }
-
-    let isSameImage = false;
-    let iTransform, transformArgs;
-    const firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
-    const firstTransformArg0 = argsArray[iFirstTransform][0],
-          firstTransformArg1 = argsArray[iFirstTransform][1],
-          firstTransformArg2 = argsArray[iFirstTransform][2],
-          firstTransformArg3 = argsArray[iFirstTransform][3];
-
-    if (firstTransformArg1 === firstTransformArg2) {
-      isSameImage = true;
-      iTransform = iFirstTransform + 4;
-      let iPIMXO = iFirstPIMXO + 4;
-
-      for (let q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
-        transformArgs = argsArray[iTransform];
-
-        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || 
transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || 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);
-      const positions = new Float32Array(count * 2);
-      iTransform = iFirstTransform;
-
-      for (let 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, firstTransformArg1, 
firstTransformArg2, firstTransformArg3, positions]);
-    } else {
-      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
-      const images = [];
-
-      for (let q = 0; q < count; q++) {
-        transformArgs = argsArray[iFirstTransform + (q << 2)];
-        const 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) {
-    const argsArray = context.argsArray;
-    const iFirstTransform = context.iCurr - 2;
-    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
-  }, function iterateImageGroup(context, i) {
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const iFirstSave = context.iCurr - 3;
-    const pos = (i - iFirstSave) % 4;
-
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.save;
-
-      case 1:
-        if (fnArray[i] !== _util.OPS.transform) {
-          return false;
-        }
-
-        const iFirstTransform = context.iCurr - 2;
-        const firstTransformArg0 = argsArray[iFirstTransform][0];
-        const firstTransformArg3 = argsArray[iFirstTransform][3];
-
-        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || 
argsArray[i][3] !== firstTransformArg3) {
-          return false;
-        }
-
-        return true;
-
-      case 2:
-        if (fnArray[i] !== _util.OPS.paintImageXObject) {
-          return false;
-        }
-
-        const iFirstPIXO = context.iCurr - 1;
-        const firstPIXOArg0 = argsArray[iFirstPIXO][0];
-
-        if (argsArray[i][0] !== firstPIXOArg0) {
-          return false;
-        }
-
-        return true;
-
-      case 3:
-        return fnArray[i] === _util.OPS.restore;
-    }
-
-    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);
-  }, function (context, i) {
-    const MIN_IMAGES_IN_BLOCK = 3;
-    const MAX_IMAGES_IN_BLOCK = 1000;
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const curr = context.iCurr;
-    const iFirstSave = curr - 3;
-    const iFirstTransform = curr - 2;
-    const iFirstPIXO = curr - 1;
-    const firstPIXOArg0 = argsArray[iFirstPIXO][0];
-    const firstTransformArg0 = argsArray[iFirstTransform][0];
-    const firstTransformArg3 = argsArray[iFirstTransform][3];
-    const count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
-
-    if (count < MIN_IMAGES_IN_BLOCK) {
-      return i - (i - iFirstSave) % 4;
-    }
-
-    const positions = new Float32Array(count * 2);
-    let iTransform = iFirstTransform;
-
-    for (let q = 0; q < count; q++, iTransform += 4) {
-      const transformArgs = argsArray[iTransform];
-      positions[q << 1] = transformArgs[4];
-      positions[(q << 1) + 1] = transformArgs[5];
-    }
-
-    const 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], null, function iterateShowTextGroup(context, i) {
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const iFirstSave = context.iCurr - 4;
-    const pos = (i - iFirstSave) % 5;
-
-    switch (pos) {
-      case 0:
-        return fnArray[i] === _util.OPS.beginText;
-
-      case 1:
-        return fnArray[i] === _util.OPS.setFont;
-
-      case 2:
-        return fnArray[i] === _util.OPS.setTextMatrix;
-
-      case 3:
-        if (fnArray[i] !== _util.OPS.showText) {
-          return false;
-        }
-
-        const iFirstSetFont = context.iCurr - 3;
-        const firstSetFontArg0 = argsArray[iFirstSetFont][0];
-        const firstSetFontArg1 = argsArray[iFirstSetFont][1];
-
-        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
-          return false;
-        }
-
-        return true;
-
-      case 4:
-        return fnArray[i] === _util.OPS.endText;
-    }
-
-    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);
-  }, function (context, i) {
-    const MIN_CHARS_IN_BLOCK = 3;
-    const MAX_CHARS_IN_BLOCK = 1000;
-    const fnArray = context.fnArray,
-          argsArray = context.argsArray;
-    const curr = context.iCurr;
-    const iFirstBeginText = curr - 4;
-    const iFirstSetFont = curr - 3;
-    const iFirstSetTextMatrix = curr - 2;
-    const iFirstShowText = curr - 1;
-    const iFirstEndText = curr;
-    const firstSetFontArg0 = argsArray[iFirstSetFont][0];
-    const firstSetFontArg1 = argsArray[iFirstSetFont][1];
-    let count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
-
-    if (count < MIN_CHARS_IN_BLOCK) {
-      return i - (i - iFirstBeginText) % 5;
-    }
-
-    let 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;
-    }
-
-    let iEndText = iFirst + 4;
-
-    for (let q = 1; q < count; q++) {
-      fnArray.splice(iEndText, 3);
-      argsArray.splice(iEndText, 3);
-      iEndText += 2;
-    }
-
-    return iEndText + 1;
-  });
-
-  function QueueOptimizer(queue) {
-    this.queue = queue;
-    this.state = null;
-    this.context = {
-      iCurr: 0,
-      fnArray: queue.fnArray,
-      argsArray: queue.argsArray
-    };
-    this.match = null;
-    this.lastProcessed = 0;
-  }
-
-  QueueOptimizer.prototype = {
-    _optimize() {
-      const fnArray = this.queue.fnArray;
-      let i = this.lastProcessed,
-          ii = fnArray.length;
-      let state = this.state;
-      let match = this.match;
-
-      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
-        this.lastProcessed = ii;
-        return;
-      }
-
-      const context = this.context;
-
-      while (i < ii) {
-        if (match) {
-          const iterate = (0, match.iterateFn)(context, i);
-
-          if (iterate) {
-            i++;
-            continue;
-          }
-
-          i = (0, match.processFn)(context, i + 1);
-          ii = fnArray.length;
-          match = null;
-          state = null;
-
-          if (i >= ii) {
-            break;
-          }
-        }
-
-        state = (state || InitialState)[fnArray[i]];
-
-        if (!state || Array.isArray(state)) {
-          i++;
-          continue;
-        }
-
-        context.iCurr = i;
-        i++;
-
-        if (state.checkFn && !(0, state.checkFn)(context)) {
-          state = null;
-          continue;
-        }
-
-        match = state;
-        state = null;
-      }
-
-      this.state = state;
-      this.match = match;
-      this.lastProcessed = i;
-    },
-
-    push(fn, args) {
-      this.queue.fnArray.push(fn);
-      this.queue.argsArray.push(args);
-
-      this._optimize();
-    },
-
-    flush() {
-      while (this.match) {
-        const length = this.queue.fnArray.length;
-        this.lastProcessed = (0, this.match.processFn)(this.context, length);
-        this.match = null;
-        this.state = null;
-
-        this._optimize();
-      }
-    },
-
-    reset() {
-      this.state = null;
-      this.match = null;
-      this.lastProcessed = 0;
-    }
-
-  };
-  return QueueOptimizer;
-}();
-
-const NullOptimizer = function NullOptimizerClosure() {
-  function NullOptimizer(queue) {
-    this.queue = queue;
-  }
-
-  NullOptimizer.prototype = {
-    push(fn, args) {
-      this.queue.fnArray.push(fn);
-      this.queue.argsArray.push(args);
-    },
-
-    flush() {},
-
-    reset() {}
-
-  };
-  return NullOptimizer;
-}();
-
-const OperatorList = function OperatorListClosure() {
-  const CHUNK_SIZE = 1000;
-  const CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
-
-  function OperatorList(intent, streamSink) {
-    this._streamSink = streamSink;
-    this.fnArray = [];
-    this.argsArray = [];
-
-    if (streamSink && intent !== "oplist") {
-      this.optimizer = new QueueOptimizer(this);
-    } else {
-      this.optimizer = new NullOptimizer(this);
-    }
-
-    this.dependencies = new Set();
-    this._totalLength = 0;
-    this.weight = 0;
-    this._resolved = streamSink ? null : Promise.resolve();
-  }
-
-  OperatorList.prototype = {
-    get length() {
-      return this.argsArray.length;
-    },
-
-    get ready() {
-      return this._resolved || this._streamSink.ready;
-    },
-
-    get totalLength() {
-      return this._totalLength + this.length;
-    },
-
-    addOp(fn, args) {
-      this.optimizer.push(fn, args);
-      this.weight++;
-
-      if (this._streamSink) {
-        if (this.weight >= CHUNK_SIZE) {
-          this.flush();
-        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === 
_util.OPS.endText)) {
-          this.flush();
-        }
-      }
-    },
-
-    addDependency(dependency) {
-      if (this.dependencies.has(dependency)) {
-        return;
-      }
-
-      this.dependencies.add(dependency);
-      this.addOp(_util.OPS.dependency, [dependency]);
-    },
-
-    addDependencies(dependencies) {
-      for (const dependency of dependencies) {
-        this.addDependency(dependency);
-      }
-    },
-
-    addOpList(opList) {
-      if (!(opList instanceof OperatorList)) {
-        (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.');
-        return;
-      }
-
-      for (const dependency of opList.dependencies) {
-        this.dependencies.add(dependency);
-      }
-
-      for (let i = 0, ii = opList.length; i < ii; i++) {
-        this.addOp(opList.fnArray[i], opList.argsArray[i]);
-      }
-    },
-
-    getIR() {
-      return {
-        fnArray: this.fnArray,
-        argsArray: this.argsArray,
-        length: this.length
-      };
-    },
-
-    get _transfers() {
-      const transfers = [];
-      const {
-        fnArray,
-        argsArray,
-        length
-      } = this;
-
-      for (let i = 0; i < length; i++) {
-        switch (fnArray[i]) {
-          case _util.OPS.paintInlineImageXObject:
-          case _util.OPS.paintInlineImageXObjectGroup:
-          case _util.OPS.paintImageMaskXObject:
-            const arg = argsArray[i][0];
-            ;
-
-            if (!arg.cached) {
-              transfers.push(arg.data.buffer);
-            }
-
-            break;
-        }
-      }
-
-      return transfers;
-    },
-
-    flush(lastChunk = false) {
-      this.optimizer.flush();
-      const length = this.length;
-      this._totalLength += length;
-
-      this._streamSink.enqueue({
-        fnArray: this.fnArray,
-        argsArray: this.argsArray,
-        lastChunk,
-        length
-      }, 1, this._transfers);
-
-      this.dependencies.clear();
-      this.fnArray.length = 0;
-      this.argsArray.length = 0;
-      this.weight = 0;
-      this.optimizer.reset();
-    }
-
-  };
-  return OperatorList;
-}();
-
-exports.OperatorList = OperatorList;
-
-/***/ }),
-/* 47 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.PDFImage = void 0;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _colorspace = __w_pdfjs_require__(23);
-
-var _stream = __w_pdfjs_require__(12);
-
-var _jpeg_stream = __w_pdfjs_require__(18);
-
-var _jpx = __w_pdfjs_require__(21);
-
-function decodeAndClamp(value, addend, coefficient, max) {
-  value = addend + value * coefficient;
-
-  if (value < 0) {
-    value = 0;
-  } else if (value > max) {
-    value = max;
-  }
-
-  return value;
-}
-
-function resizeImageMask(src, bpc, w1, h1, w2, h2) {
-  var length = w2 * h2;
-  let dest;
-
-  if (bpc <= 8) {
-    dest = new Uint8Array(length);
-  } else if (bpc <= 16) {
-    dest = new Uint16Array(length);
-  } else {
-    dest = 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;
-}
-
-class PDFImage {
-  constructor({
-    xref,
-    res,
-    image,
-    isInline = false,
-    smask = null,
-    mask = null,
-    isMask = false,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    this.image = image;
-    var dict = image.dict;
-    const filter = dict.get("Filter");
-
-    if ((0, _primitives.isName)(filter)) {
-      switch (filter.name) {
-        case "JPXDecode":
-          var jpxImage = new _jpx.JpxImage();
-          jpxImage.parseImageProperties(image.stream);
-          image.stream.reset();
-          image.width = jpxImage.width;
-          image.height = jpxImage.height;
-          image.bitsPerComponent = jpxImage.bitsPerComponent;
-          image.numComps = jpxImage.componentsCount;
-          break;
-
-        case "JBIG2Decode":
-          image.bitsPerComponent = 1;
-          image.numComps = 1;
-          break;
-      }
-    }
-
-    let width = dict.get("Width", "W");
-    let height = dict.get("Height", "H");
-
-    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 
0 && (image.width !== width || image.height !== height)) {
-      (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image 
dictionary.");
-      width = image.width;
-      height = image.height;
-    }
-
-    if (width < 1 || height < 1) {
-      throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);
-    }
-
-    this.width = width;
-    this.height = 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) {
-      let colorSpace = dict.getRaw("ColorSpace") || dict.getRaw("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 ${image.numComps} ` + "color components not supported.");
-        }
-      }
-
-      this.colorSpace = _colorspace.ColorSpace.parse({
-        cs: colorSpace,
-        xref,
-        resources: isInline ? res : null,
-        pdfFunctionFactory,
-        localColorSpaceCache
-      });
-      this.numComps = this.colorSpace.numComps;
-    }
-
-    this.decode = dict.getArray("Decode", "D");
-    this.needsDecode = false;
-
-    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) 
|| isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
-      this.needsDecode = true;
-      var max = (1 << bitsPerComponent) - 1;
-      this.decodeCoefficients = [];
-      this.decodeAddends = [];
-      const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed";
-
-      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] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
-        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
-      }
-    }
-
-    if (smask) {
-      this.smask = new PDFImage({
-        xref,
-        res,
-        image: smask,
-        isInline,
-        pdfFunctionFactory,
-        localColorSpaceCache
-      });
-    } 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,
-            image: mask,
-            isInline,
-            isMask: true,
-            pdfFunctionFactory,
-            localColorSpaceCache
-          });
-        }
-      } else {
-        this.mask = mask;
-      }
-    }
-  }
-
-  static async buildImage({
-    xref,
-    res,
-    image,
-    isInline = false,
-    pdfFunctionFactory,
-    localColorSpaceCache
-  }) {
-    const imageData = image;
-    let smaskData = null;
-    let maskData = null;
-    const smask = image.dict.get("SMask");
-    const mask = image.dict.get("Mask");
-
-    if (smask) {
-      smaskData = smask;
-    } else if (mask) {
-      if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
-        maskData = mask;
-      } else {
-        (0, _util.warn)("Unsupported mask format.");
-      }
-    }
-
-    return new PDFImage({
-      xref,
-      res,
-      image: imageData,
-      isInline,
-      smask: smaskData,
-      mask: maskData,
-      pdfFunctionFactory,
-      localColorSpaceCache
-    });
-  }
-
-  static 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 Uint8ClampedArray(actualLength);
-      data.set(imgArray);
-    } else {
-      data = new Uint8ClampedArray(computedLength);
-      data.set(imgArray);
-
-      for (i = actualLength; i < computedLength; i++) {
-        data[i] = 0xff;
-      }
-    }
-
-    if (inverseDecode) {
-      for (i = 0; i < actualLength; i++) {
-        data[i] ^= 0xff;
-      }
-    }
-
-    return {
-      data,
-      width,
-      height
-    };
-  }
-
-  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(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(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;
-    let output;
-
-    if (bpc <= 8) {
-      output = new Uint8Array(length);
-    } else if (bpc <= 16) {
-      output = new Uint16Array(length);
-    } else {
-      output = 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;
-        let value = buf >> remainingBits;
-
-        if (value < 0) {
-          value = 0;
-        } else if (value > max) {
-          value = max;
-        }
-
-        output[i] = value;
-        buf = buf & (1 << remainingBits) - 1;
-        bits = remainingBits;
-      }
-    }
-
-    return output;
-  }
-
-  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 Uint8ClampedArray(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 Uint8ClampedArray(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 (Array.isArray(mask)) {
-        alphaBuf = new Uint8ClampedArray(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(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;
-
-    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;
-      buffer[i] = (buffer[i] - matteR) * k + matteR;
-      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
-      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
-    }
-  }
-
-  createImageData(forceRGBA = false) {
-    var drawWidth = this.drawWidth;
-    var drawHeight = this.drawHeight;
-    var imgData = {
-      width: drawWidth,
-      height: drawHeight,
-      kind: 0,
-      data: null
-    };
-    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 Uint8ClampedArray(imgArray.length);
-          newArray.set(imgArray);
-          imgData.data = newArray;
-        }
-
-        if (this.needsDecode) {
-          (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image 
must be grayscale.");
-          var buffer = imgData.data;
-
-          for (var i = 0, ii = buffer.length; i < ii; i++) {
-            buffer[i] ^= 0xff;
-          }
-        }
-
-        return imgData;
-      }
-
-      if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
-        let imageLength = originalHeight * rowBytes;
-
-        switch (this.colorSpace.name) {
-          case "DeviceGray":
-            imageLength *= 3;
-
-          case "DeviceRGB":
-          case "DeviceCMYK":
-            imgData.kind = _util.ImageKind.RGB_24BPP;
-            imgData.data = this.getImageBytes(imageLength, 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 Uint8ClampedArray(drawWidth * drawHeight * 3);
-      alpha01 = 0;
-      maybeUndoPreblend = false;
-    } else {
-      imgData.kind = _util.ImageKind.RGBA_32BPP;
-      imgData.data = new Uint8ClampedArray(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(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];
-    }
-  }
-
-  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
-    this.image.reset();
-    this.image.drawWidth = drawWidth || this.width;
-    this.image.drawHeight = drawHeight || this.height;
-    this.image.forceRGB = !!forceRGB;
-    return this.image.getBytes(length, true);
-  }
-
-}
-
-exports.PDFImage = PDFImage;
-
-/***/ }),
-/* 48 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.incrementalUpdate = incrementalUpdate;
-exports.writeDict = writeDict;
-
-var _util = __w_pdfjs_require__(2);
-
-var _primitives = __w_pdfjs_require__(5);
-
-var _core_utils = __w_pdfjs_require__(8);
-
-var _xml_parser = __w_pdfjs_require__(26);
-
-var _crypto = __w_pdfjs_require__(22);
-
-function writeDict(dict, buffer, transform) {
-  buffer.push("<<");
-
-  for (const key of dict.getKeys()) {
-    buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `);
-    writeValue(dict.getRaw(key), buffer, transform);
-  }
-
-  buffer.push(">>");
-}
-
-function writeStream(stream, buffer, transform) {
-  writeDict(stream.dict, buffer, transform);
-  buffer.push(" stream\n");
-  let string = (0, _util.bytesToString)(stream.getBytes());
-
-  if (transform !== null) {
-    string = transform.encryptString(string);
-  }
-
-  buffer.push(string);
-  buffer.push("\nendstream\n");
-}
-
-function writeArray(array, buffer, transform) {
-  buffer.push("[");
-  let first = true;
-
-  for (const val of array) {
-    if (!first) {
-      buffer.push(" ");
-    } else {
-      first = false;
-    }
-
-    writeValue(val, buffer, transform);
-  }
-
-  buffer.push("]");
-}
-
-function numberToString(value) {
-  if (Number.isInteger(value)) {
-    return value.toString();
-  }
-
-  const roundedValue = Math.round(value * 100);
-
-  if (roundedValue % 100 === 0) {
-    return (roundedValue / 100).toString();
-  }
-
-  if (roundedValue % 10 === 0) {
-    return value.toFixed(1);
-  }
-
-  return value.toFixed(2);
-}
-
-function writeValue(value, buffer, transform) {
-  if ((0, _primitives.isName)(value)) {
-    buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`);
-  } else if ((0, _primitives.isRef)(value)) {
-    buffer.push(`${value.num} ${value.gen} R`);
-  } else if (Array.isArray(value)) {
-    writeArray(value, buffer, transform);
-  } else if (typeof value === "string") {
-    if (transform !== null) {
-      value = transform.encryptString(value);
-    }
-
-    buffer.push(`(${(0, _util.escapeString)(value)})`);
-  } else if (typeof value === "number") {
-    buffer.push(numberToString(value));
-  } else if ((0, _primitives.isDict)(value)) {
-    writeDict(value, buffer, transform);
-  } else if ((0, _primitives.isStream)(value)) {
-    writeStream(value, buffer, transform);
-  }
-}
-
-function writeInt(number, size, offset, buffer) {
-  for (let i = size + offset - 1; i > offset - 1; i--) {
-    buffer[i] = number & 0xff;
-    number >>= 8;
-  }
-
-  return offset + size;
-}
-
-function writeString(string, offset, buffer) {
-  for (let i = 0, len = string.length; i < len; i++) {
-    buffer[offset + i] = string.charCodeAt(i) & 0xff;
-  }
-}
-
-function computeMD5(filesize, xrefInfo) {
-  const time = Math.floor(Date.now() / 1000);
-  const filename = xrefInfo.filename || "";
-  const md5Buffer = [time.toString(), filename, filesize.toString()];
-  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);
-
-  for (const value of Object.values(xrefInfo.info)) {
-    md5Buffer.push(value);
-    md5BufferLen += value.length;
-  }
-
-  const array = new Uint8Array(md5BufferLen);
-  let offset = 0;
-
-  for (const str of md5Buffer) {
-    writeString(str, offset, array);
-    offset += str.length;
-  }
-
-  return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
-}
-
-function updateXFA(datasetsRef, newRefs, xref) {
-  if (datasetsRef === null || xref === null) {
-    return;
-  }
-
-  const datasets = xref.fetchIfRef(datasetsRef);
-  const str = (0, _util.bytesToString)(datasets.getBytes());
-  const xml = new _xml_parser.SimpleXMLParser({
-    hasAttributes: true
-  }).parseFromString(str);
-
-  for (const {
-    xfa
-  } of newRefs) {
-    if (!xfa) {
-      continue;
-    }
-
-    const {
-      path,
-      value
-    } = xfa;
-
-    if (!path) {
-      continue;
-    }
-
-    const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0);
-
-    if (node) {
-      node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)];
-    } else {
-      (0, _util.warn)(`Node not found for path: ${path}`);
-    }
-  }
-
-  const buffer = [];
-  xml.documentElement.dump(buffer);
-  let updatedXml = buffer.join("");
-  const encrypt = xref.encrypt;
-
-  if (encrypt) {
-    const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
-    updatedXml = transform.encryptString(updatedXml);
-  }
-
-  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n";
-  newRefs.push({
-    ref: datasetsRef,
-    data
-  });
-}
-
-function incrementalUpdate({
-  originalData,
-  xrefInfo,
-  newRefs,
-  xref = null,
-  datasetsRef = null
-}) {
-  updateXFA(datasetsRef, newRefs, xref);
-  const newXref = new _primitives.Dict(null);
-  const refForXrefTable = xrefInfo.newRef;
-  let buffer, baseOffset;
-  const lastByte = originalData[originalData.length - 1];
-
-  if (lastByte === 0x0a || lastByte === 0x0d) {
-    buffer = [];
-    baseOffset = originalData.length;
-  } else {
-    buffer = ["\n"];
-    baseOffset = originalData.length + 1;
-  }
-
-  newXref.set("Size", refForXrefTable.num + 1);
-  newXref.set("Prev", xrefInfo.startXRef);
-  newXref.set("Type", _primitives.Name.get("XRef"));
-
-  if (xrefInfo.rootRef !== null) {
-    newXref.set("Root", xrefInfo.rootRef);
-  }
-
-  if (xrefInfo.infoRef !== null) {
-    newXref.set("Info", xrefInfo.infoRef);
-  }
-
-  if (xrefInfo.encrypt !== null) {
-    newXref.set("Encrypt", xrefInfo.encrypt);
-  }
-
-  newRefs.push({
-    ref: refForXrefTable,
-    data: ""
-  });
-  newRefs = newRefs.sort((a, b) => {
-    return a.ref.num - b.ref.num;
-  });
-  const xrefTableData = [[0, 1, 0xffff]];
-  const indexes = [0, 1];
-  let maxOffset = 0;
-
-  for (const {
-    ref,
-    data
-  } of newRefs) {
-    maxOffset = Math.max(maxOffset, baseOffset);
-    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);
-    baseOffset += data.length;
-    indexes.push(ref.num);
-    indexes.push(1);
-    buffer.push(data);
-  }
-
-  newXref.set("Index", indexes);
-
-  if (xrefInfo.fileIds.length !== 0) {
-    const md5 = computeMD5(baseOffset, xrefInfo);
-    newXref.set("ID", [xrefInfo.fileIds[0], md5]);
-  }
-
-  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);
-  const sizes = [1, offsetSize, 2];
-  const structSize = sizes[0] + sizes[1] + sizes[2];
-  const tableLength = structSize * xrefTableData.length;
-  newXref.set("W", sizes);
-  newXref.set("Length", tableLength);
-  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`);
-  writeDict(newXref, buffer, null);
-  buffer.push(" stream\n");
-  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);
-  const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`;
-  const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);
-  array.set(originalData);
-  let offset = originalData.length;
-
-  for (const str of buffer) {
-    writeString(str, offset, array);
-    offset += str.length;
-  }
-
-  for (const [type, objOffset, gen] of xrefTableData) {
-    offset = writeInt(type, sizes[0], offset, array);
-    offset = writeInt(objOffset, sizes[1], offset, array);
-    offset = writeInt(gen, sizes[2], offset, array);
-  }
-
-  writeString(footer, offset, array);
-  return array;
-}
-
-/***/ }),
-/* 49 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XFAFactory = void 0;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _bind = __w_pdfjs_require__(53);
-
-var _parser = __w_pdfjs_require__(57);
-
-class XFAFactory {
-  constructor(data) {
-    try {
-      this.root = new _parser.XFAParser().parse(XFAFactory._createDocument(data));
-      this.form = new _bind.Binder(this.root).bind();
-      this.pages = this.form[_xfa_object.$toHTML]();
-    } catch (e) {
-      console.log(e);
-    }
-  }
-
-  getPage(pageIndex) {
-    return this.pages.children[pageIndex];
-  }
-
-  get numberPages() {
-    return this.pages.children.length;
-  }
-
-  static _createDocument(data) {
-    if (!data["/xdp:xdp"]) {
-      return data["xdp:xdp"];
-    }
-
-    return Object.values(data).join("");
-  }
-
-}
-
-exports.XFAFactory = XFAFactory;
-
-/***/ }),
-/* 50 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XmlObject = exports.XFAObjectArray = exports.XFAObject = exports.XFAAttribute = exports.StringObject 
= exports.OptionObject = exports.Option10 = exports.Option01 = exports.IntegerObject = exports.ContentObject 
= exports.$uid = exports.$toStyle = exports.$toHTML = exports.$text = exports.$setValue = 
exports.$setSetAttributes = exports.$setId = exports.$resolvePrototypes = exports.$removeChild = 
exports.$onText = exports.$onChildCheck = exports.$onChild = exports.$nsAttributes = exports.$nodeName = 
exports.$namespaceId = exports.$isTransparent = exports.$isDescendent = exports.$isDataValue = 
exports.$insertAt = exports.$indexOf = exports.$hasSettableValue = exports.$hasItem = exports.$global = 
exports.$getRealChildrenByNameIt = exports.$getParent = exports.$getChildrenByNameIt = 
exports.$getChildrenByName = exports.$getChildrenByClass = exports.$getChildren = exports.$getAttributeIt = 
exports.$finalize = exports.$extra = exports.$dump = exports.$data = exports.$content = expor
 ts.$consumed = exports.$clone = exports.$cleanup = exports.$clean = exports.$childrenToHTML = 
exports.$appendChild = void 0;
-
-var _utils = __w_pdfjs_require__(51);
-
-var _util = __w_pdfjs_require__(2);
-
-var _namespaces = __w_pdfjs_require__(52);
-
-const $appendChild = Symbol();
-exports.$appendChild = $appendChild;
-const $childrenToHTML = Symbol();
-exports.$childrenToHTML = $childrenToHTML;
-const $clean = Symbol();
-exports.$clean = $clean;
-const $cleanup = Symbol();
-exports.$cleanup = $cleanup;
-const $clone = Symbol();
-exports.$clone = $clone;
-const $consumed = Symbol();
-exports.$consumed = $consumed;
-const $content = Symbol("content");
-exports.$content = $content;
-const $data = Symbol("data");
-exports.$data = $data;
-const $dump = Symbol();
-exports.$dump = $dump;
-const $extra = Symbol("extra");
-exports.$extra = $extra;
-const $finalize = Symbol();
-exports.$finalize = $finalize;
-const $getAttributeIt = Symbol();
-exports.$getAttributeIt = $getAttributeIt;
-const $getChildrenByClass = Symbol();
-exports.$getChildrenByClass = $getChildrenByClass;
-const $getChildrenByName = Symbol();
-exports.$getChildrenByName = $getChildrenByName;
-const $getChildrenByNameIt = Symbol();
-exports.$getChildrenByNameIt = $getChildrenByNameIt;
-const $getRealChildrenByNameIt = Symbol();
-exports.$getRealChildrenByNameIt = $getRealChildrenByNameIt;
-const $getChildren = Symbol();
-exports.$getChildren = $getChildren;
-const $getParent = Symbol();
-exports.$getParent = $getParent;
-const $global = Symbol();
-exports.$global = $global;
-const $hasItem = Symbol();
-exports.$hasItem = $hasItem;
-const $hasSettableValue = Symbol();
-exports.$hasSettableValue = $hasSettableValue;
-const $indexOf = Symbol();
-exports.$indexOf = $indexOf;
-const $insertAt = Symbol();
-exports.$insertAt = $insertAt;
-const $isDataValue = Symbol();
-exports.$isDataValue = $isDataValue;
-const $isDescendent = Symbol();
-exports.$isDescendent = $isDescendent;
-const $isTransparent = Symbol();
-exports.$isTransparent = $isTransparent;
-const $lastAttribute = Symbol();
-const $namespaceId = Symbol("namespaceId");
-exports.$namespaceId = $namespaceId;
-const $nodeName = Symbol("nodeName");
-exports.$nodeName = $nodeName;
-const $nsAttributes = Symbol();
-exports.$nsAttributes = $nsAttributes;
-const $onChild = Symbol();
-exports.$onChild = $onChild;
-const $onChildCheck = Symbol();
-exports.$onChildCheck = $onChildCheck;
-const $onText = Symbol();
-exports.$onText = $onText;
-const $removeChild = Symbol();
-exports.$removeChild = $removeChild;
-const $resolvePrototypes = Symbol();
-exports.$resolvePrototypes = $resolvePrototypes;
-const $setId = Symbol();
-exports.$setId = $setId;
-const $setSetAttributes = Symbol();
-exports.$setSetAttributes = $setSetAttributes;
-const $setValue = Symbol();
-exports.$setValue = $setValue;
-const $text = Symbol();
-exports.$text = $text;
-const $toHTML = Symbol();
-exports.$toHTML = $toHTML;
-const $toStyle = Symbol();
-exports.$toStyle = $toStyle;
-const $uid = Symbol("uid");
-exports.$uid = $uid;
-
-const _applyPrototype = Symbol();
-
-const _attributes = Symbol();
-
-const _attributeNames = Symbol();
-
-const _children = Symbol("_children");
-
-const _cloneAttribute = Symbol();
-
-const _dataValue = Symbol();
-
-const _defaultValue = Symbol();
-
-const _getPrototype = Symbol();
-
-const _getUnsetAttributes = Symbol();
-
-const _hasChildren = Symbol();
-
-const _max = Symbol();
-
-const _options = Symbol();
-
-const _parent = Symbol("parent");
-
-const _setAttributes = Symbol();
-
-const _validator = Symbol();
-
-let uid = 0;
-
-class XFAObject {
-  constructor(nsId, name, hasChildren = false) {
-    this[$namespaceId] = nsId;
-    this[$nodeName] = name;
-    this[_hasChildren] = hasChildren;
-    this[_parent] = null;
-    this[_children] = [];
-    this[$uid] = `${name}${uid++}`;
-  }
-
-  [$onChild](child) {
-    if (!this[_hasChildren] || !this[$onChildCheck](child)) {
-      return false;
-    }
-
-    const name = child[$nodeName];
-    const node = this[name];
-
-    if (node instanceof XFAObjectArray) {
-      if (node.push(child)) {
-        this[$appendChild](child);
-        return true;
-      }
-    } else {
-      if (node !== null) {
-        this[$removeChild](node);
-      }
-
-      this[name] = child;
-      this[$appendChild](child);
-      return true;
-    }
-
-    let id = "";
-
-    if (this.id) {
-      id = ` (id: ${this.id})`;
-    } else if (this.name) {
-      id = ` (name: ${this.name} ${this.h.value})`;
-    }
-
-    (0, _util.warn)(`XFA - node "${this[$nodeName]}"${id} has already enough "${name}"!`);
-    return false;
-  }
-
-  [$onChildCheck](child) {
-    return this.hasOwnProperty(child[$nodeName]) && child[$namespaceId] === this[$namespaceId];
-  }
-
-  [$setId](ids) {
-    if (this.id && this[$namespaceId] === _namespaces.NamespaceIds.template.id) {
-      ids.set(this.id, this);
-    }
-  }
-
-  [$appendChild](child) {
-    child[_parent] = this;
-
-    this[_children].push(child);
-  }
-
-  [$removeChild](child) {
-    const i = this[_children].indexOf(child);
-
-    this[_children].splice(i, 1);
-  }
-
-  [$hasSettableValue]() {
-    return this.hasOwnProperty("value");
-  }
-
-  [$setValue](_) {}
-
-  [$onText](_) {}
-
-  [$finalize]() {}
-
-  [$clean](builder) {
-    delete this[_hasChildren];
-
-    if (this[$cleanup]) {
-      builder.clean(this[$cleanup]);
-      delete this[$cleanup];
-    }
-  }
-
-  [$hasItem]() {
-    return false;
-  }
-
-  [$indexOf](child) {
-    return this[_children].indexOf(child);
-  }
-
-  [$insertAt](i, child) {
-    child[_parent] = this;
-
-    this[_children].splice(i, 0, child);
-  }
-
-  [$isTransparent]() {
-    return this.name === "";
-  }
-
-  [$lastAttribute]() {
-    return "";
-  }
-
-  [$text]() {
-    if (this[_children].length === 0) {
-      return this[$content];
-    }
-
-    return this[_children].map(c => c[$text]()).join("");
-  }
-
-  get [_attributeNames]() {
-    const proto = Object.getPrototypeOf(this);
-
-    if (!proto._attributes) {
-      const attributes = proto._attributes = new Set();
-
-      for (const name of Object.getOwnPropertyNames(this)) {
-        if (this[name] === null || this[name] instanceof XFAObject || this[name] instanceof XFAObjectArray) {
-          break;
-        }
-
-        attributes.add(name);
-      }
-    }
-
-    return (0, _util.shadow)(this, _attributeNames, proto._attributes);
-  }
-
-  [$isDescendent](parent) {
-    let node = this;
-
-    while (node) {
-      if (node === parent) {
-        return true;
-      }
-
-      node = node[$getParent]();
-    }
-
-    return false;
-  }
-
-  [$getParent]() {
-    return this[_parent];
-  }
-
-  [$getChildren](name = null) {
-    if (!name) {
-      return this[_children];
-    }
-
-    return this[name];
-  }
-
-  [$dump]() {
-    const dumped = Object.create(null);
-
-    if (this[$content]) {
-      dumped.$content = this[$content];
-    }
-
-    for (const name of Object.getOwnPropertyNames(this)) {
-      const value = this[name];
-
-      if (value === null) {
-        continue;
-      }
-
-      if (value instanceof XFAObject) {
-        dumped[name] = value[$dump]();
-      } else if (value instanceof XFAObjectArray) {
-        if (!value.isEmpty()) {
-          dumped[name] = value.dump();
-        }
-      } else {
-        dumped[name] = value;
-      }
-    }
-
-    return dumped;
-  }
-
-  [$toStyle]() {
-    return null;
-  }
-
-  [$toHTML]() {
-    return null;
-  }
-
-  [$childrenToHTML]({
-    filter = null,
-    include = true
-  }) {
-    const res = [];
-    this[$getChildren]().forEach(node => {
-      if (!filter || include === filter.has(node[$nodeName])) {
-        const html = node[$toHTML]();
-
-        if (html) {
-          res.push(html);
-        }
-      }
-    });
-    return res;
-  }
-
-  [$setSetAttributes](attributes) {
-    if (attributes.use || attributes.id) {
-      this[_setAttributes] = new Set(Object.keys(attributes));
-    }
-  }
-
-  [_getUnsetAttributes](protoAttributes) {
-    const allAttr = this[_attributeNames];
-    const setAttr = this[_setAttributes];
-    return [...protoAttributes].filter(x => allAttr.has(x) && !setAttr.has(x));
-  }
-
-  [$resolvePrototypes](ids, ancestors = new Set()) {
-    for (const child of this[_children]) {
-      const proto = child[_getPrototype](ids, ancestors);
-
-      if (proto) {
-        child[_applyPrototype](proto, ids, ancestors);
-      } else {
-        child[$resolvePrototypes](ids, ancestors);
-      }
-    }
-  }
-
-  [_getPrototype](ids, ancestors) {
-    const {
-      use
-    } = this;
-
-    if (use && use.startsWith("#")) {
-      const id = use.slice(1);
-      const proto = ids.get(id);
-      this.use = "";
-
-      if (!proto) {
-        (0, _util.warn)(`XFA - Invalid prototype id: ${id}.`);
-        return null;
-      }
-
-      if (proto[$nodeName] !== this[$nodeName]) {
-        (0, _util.warn)(`XFA - Incompatible prototype: ${proto[$nodeName]} !== ${this[$nodeName]}.`);
-        return null;
-      }
-
-      if (ancestors.has(proto)) {
-        (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);
-        return null;
-      }
-
-      ancestors.add(proto);
-
-      const protoProto = proto[_getPrototype](ids, ancestors);
-
-      if (!protoProto) {
-        ancestors.delete(proto);
-        return proto;
-      }
-
-      proto[_applyPrototype](protoProto, ids, ancestors);
-
-      ancestors.delete(proto);
-      return proto;
-    }
-
-    return null;
-  }
-
-  [_applyPrototype](proto, ids, ancestors) {
-    if (ancestors.has(proto)) {
-      (0, _util.warn)(`XFA - Cycle detected in prototypes use.`);
-      return;
-    }
-
-    if (!this[$content] && proto[$content]) {
-      this[$content] = proto[$content];
-    }
-
-    const newAncestors = new Set(ancestors);
-    newAncestors.add(proto);
-
-    for (const unsetAttrName of this[_getUnsetAttributes](proto[_setAttributes])) {
-      this[unsetAttrName] = proto[unsetAttrName];
-
-      if (this[_setAttributes]) {
-        this[_setAttributes].add(unsetAttrName);
-      }
-    }
-
-    for (const name of Object.getOwnPropertyNames(this)) {
-      if (this[_attributeNames].has(name)) {
-        continue;
-      }
-
-      const value = this[name];
-      const protoValue = proto[name];
-
-      if (value instanceof XFAObjectArray) {
-        for (const child of value[_children]) {
-          child[$resolvePrototypes](ids, ancestors);
-        }
-
-        for (let i = value[_children].length, ii = protoValue[_children].length; i < ii; i++) {
-          const child = proto[_children][i][$clone]();
-
-          if (value.push(child)) {
-            child[_parent] = this;
-
-            this[_children].push(child);
-
-            child[$resolvePrototypes](ids, newAncestors);
-          } else {
-            break;
-          }
-        }
-
-        continue;
-      }
-
-      if (value !== null) {
-        value[$resolvePrototypes](ids, ancestors);
-        continue;
-      }
-
-      if (protoValue !== null) {
-        const child = protoValue[$clone]();
-        child[_parent] = this;
-        this[name] = child;
-
-        this[_children].push(child);
-
-        child[$resolvePrototypes](ids, newAncestors);
-      }
-    }
-  }
-
-  static [_cloneAttribute](obj) {
-    if (Array.isArray(obj)) {
-      return obj.map(x => XFAObject[_cloneAttribute](x));
-    }
-
-    if (obj instanceof Object) {
-      return Object.assign({}, obj);
-    }
-
-    return obj;
-  }
-
-  [$clone]() {
-    const clone = Object.create(Object.getPrototypeOf(this));
-
-    for (const $symbol of Object.getOwnPropertySymbols(this)) {
-      try {
-        clone[$symbol] = this[$symbol];
-      } catch (_) {
-        (0, _util.shadow)(clone, $symbol, this[$symbol]);
-      }
-    }
-
-    clone[_children] = [];
-
-    for (const name of Object.getOwnPropertyNames(this)) {
-      if (this[_attributeNames].has(name)) {
-        clone[name] = XFAObject[_cloneAttribute](this[name]);
-        continue;
-      }
-
-      const value = this[name];
-
-      if (value instanceof XFAObjectArray) {
-        clone[name] = new XFAObjectArray(value[_max]);
-      } else {
-        clone[name] = null;
-      }
-    }
-
-    for (const child of this[_children]) {
-      const name = child[$nodeName];
-      const clonedChild = child[$clone]();
-
-      clone[_children].push(clonedChild);
-
-      clonedChild[_parent] = clone;
-
-      if (clone[name] === null) {
-        clone[name] = clonedChild;
-      } else {
-        clone[name][_children].push(clonedChild);
-      }
-    }
-
-    return clone;
-  }
-
-  [$getChildren](name = null) {
-    if (!name) {
-      return this[_children];
-    }
-
-    return this[_children].filter(c => c[$nodeName] === name);
-  }
-
-  [$getChildrenByClass](name) {
-    return this[name];
-  }
-
-  [$getChildrenByName](name, allTransparent, first = true) {
-    return Array.from(this[$getChildrenByNameIt](name, allTransparent, first));
-  }
-
-  *[$getChildrenByNameIt](name, allTransparent, first = true) {
-    if (name === "parent") {
-      yield this[_parent];
-      return;
-    }
-
-    for (const child of this[_children]) {
-      if (child[$nodeName] === name) {
-        yield child;
-      }
-
-      if (child.name === name) {
-        yield child;
-      }
-
-      if (allTransparent || child[$isTransparent]()) {
-        yield* child[$getChildrenByNameIt](name, allTransparent, false);
-      }
-    }
-
-    if (first && this[_attributeNames].has(name)) {
-      yield new XFAAttribute(this, name, this[name]);
-    }
-  }
-
-}
-
-exports.XFAObject = XFAObject;
-
-class XFAObjectArray {
-  constructor(max = Infinity) {
-    this[_max] = max;
-    this[_children] = [];
-  }
-
-  push(child) {
-    const len = this[_children].length;
-
-    if (len <= this[_max]) {
-      this[_children].push(child);
-
-      return true;
-    }
-
-    (0, _util.warn)(`XFA - node "${child[$nodeName]}" accepts no more than ${this[_max]} children`);
-    return false;
-  }
-
-  isEmpty() {
-    return this[_children].length === 0;
-  }
-
-  dump() {
-    return this[_children].length === 1 ? this[_children][0][$dump]() : this[_children].map(x => x[$dump]());
-  }
-
-  [$clone]() {
-    const clone = new XFAObjectArray(this[_max]);
-    clone[_children] = this[_children].map(c => c[$clone]());
-    return clone;
-  }
-
-  get children() {
-    return this[_children];
-  }
-
-  clear() {
-    this[_children].length = 0;
-  }
-
-}
-
-exports.XFAObjectArray = XFAObjectArray;
-
-class XFAAttribute {
-  constructor(node, name, value) {
-    this[_parent] = node;
-    this[$nodeName] = name;
-    this[$content] = value;
-    this[$consumed] = false;
-  }
-
-  [$getParent]() {
-    return this[_parent];
-  }
-
-  [$isDataValue]() {
-    return true;
-  }
-
-  [$text]() {
-    return this[$content];
-  }
-
-  [$isDescendent](parent) {
-    return this[_parent] === parent || this[_parent][$isDescendent](parent);
-  }
-
-}
-
-exports.XFAAttribute = XFAAttribute;
-
-class XmlObject extends XFAObject {
-  constructor(nsId, name, attributes = {}) {
-    super(nsId, name);
-    this[$content] = "";
-    this[_dataValue] = null;
-
-    if (name !== "#text") {
-      const map = new Map();
-      this[_attributes] = map;
-
-      for (const [attrName, value] of Object.entries(attributes)) {
-        map.set(attrName, new XFAAttribute(this, attrName, value));
-      }
-
-      if (attributes.hasOwnProperty($nsAttributes)) {
-        const dataNode = attributes[$nsAttributes].xfa.dataNode;
-
-        if (dataNode !== undefined) {
-          if (dataNode === "dataGroup") {
-            this[_dataValue] = false;
-          } else if (dataNode === "dataValue") {
-            this[_dataValue] = true;
-          }
-        }
-      }
-    }
-
-    this[$consumed] = false;
-  }
-
-  [$onChild](child) {
-    if (this[$content]) {
-      const node = new XmlObject(this[$namespaceId], "#text");
-      this[$appendChild](node);
-      node[$content] = this[$content];
-      this[$content] = "";
-    }
-
-    this[$appendChild](child);
-    return true;
-  }
-
-  [$onText](str) {
-    this[$content] += str;
-  }
-
-  [$finalize]() {
-    if (this[$content] && this[_children].length > 0) {
-      const node = new XmlObject(this[$namespaceId], "#text");
-      this[$appendChild](node);
-      node[$content] = this[$content];
-      delete this[$content];
-    }
-  }
-
-  [$toHTML]() {
-    if (this[$nodeName] === "#text") {
-      return {
-        name: "#text",
-        value: this[$content]
-      };
-    }
-
-    return null;
-  }
-
-  [$getChildren](name = null) {
-    if (!name) {
-      return this[_children];
-    }
-
-    return this[_children].filter(c => c[$nodeName] === name);
-  }
-
-  [$getChildrenByClass](name) {
-    const value = this[_attributes].get(name);
-
-    if (value !== undefined) {
-      return value;
-    }
-
-    return this[$getChildren](name);
-  }
-
-  *[$getChildrenByNameIt](name, allTransparent) {
-    const value = this[_attributes].get(name);
-
-    if (value) {
-      yield value;
-    }
-
-    for (const child of this[_children]) {
-      if (child[$nodeName] === name) {
-        yield child;
-      }
-
-      if (allTransparent) {
-        yield* child[$getChildrenByNameIt](name, allTransparent);
-      }
-    }
-  }
-
-  *[$getAttributeIt](name, skipConsumed) {
-    const value = this[_attributes].get(name);
-
-    if (value && (!skipConsumed || !value[$consumed])) {
-      yield value;
-    }
-
-    for (const child of this[_children]) {
-      yield* child[$getAttributeIt](name, skipConsumed);
-    }
-  }
-
-  *[$getRealChildrenByNameIt](name, allTransparent, skipConsumed) {
-    for (const child of this[_children]) {
-      if (child[$nodeName] === name && (!skipConsumed || !child[$consumed])) {
-        yield child;
-      }
-
-      if (allTransparent) {
-        yield* child[$getRealChildrenByNameIt](name, allTransparent, skipConsumed);
-      }
-    }
-  }
-
-  [$isDataValue]() {
-    if (this[_dataValue] === null) {
-      return this[_children].length === 0;
-    }
-
-    return this[_dataValue];
-  }
-
-  [$dump]() {
-    const dumped = Object.create(null);
-
-    if (this[$content]) {
-      dumped.$content = this[$content];
-    }
-
-    dumped.$name = this[$nodeName];
-    dumped.children = [];
-
-    for (const child of this[_children]) {
-      dumped.children.push(child[$dump]());
-    }
-
-    dumped.attributes = Object.create(null);
-
-    for (const [name, value] of this[_attributes]) {
-      dumped.attributes[name] = value[$content];
-    }
-
-    return dumped;
-  }
-
-}
-
-exports.XmlObject = XmlObject;
-
-class ContentObject extends XFAObject {
-  constructor(nsId, name) {
-    super(nsId, name);
-    this[$content] = "";
-  }
-
-  [$onText](text) {
-    this[$content] += text;
-  }
-
-  [$finalize]() {}
-
-}
-
-exports.ContentObject = ContentObject;
-
-class OptionObject extends ContentObject {
-  constructor(nsId, name, options) {
-    super(nsId, name);
-    this[_options] = options;
-  }
-
-  [$finalize]() {
-    this[$content] = (0, _utils.getKeyword)({
-      data: this[$content],
-      defaultValue: this[_options][0],
-      validate: k => this[_options].includes(k)
-    });
-  }
-
-  [$clean](builder) {
-    super[$clean](builder);
-    delete this[_options];
-  }
-
-}
-
-exports.OptionObject = OptionObject;
-
-class StringObject extends ContentObject {
-  [$finalize]() {
-    this[$content] = this[$content].trim();
-  }
-
-}
-
-exports.StringObject = StringObject;
-
-class IntegerObject extends ContentObject {
-  constructor(nsId, name, defaultValue, validator) {
-    super(nsId, name);
-    this[_defaultValue] = defaultValue;
-    this[_validator] = validator;
-  }
-
-  [$finalize]() {
-    this[$content] = (0, _utils.getInteger)({
-      data: this[$content],
-      defaultValue: this[_defaultValue],
-      validate: this[_validator]
-    });
-  }
-
-  [$clean](builder) {
-    super[$clean](builder);
-    delete this[_defaultValue];
-    delete this[_validator];
-  }
-
-}
-
-exports.IntegerObject = IntegerObject;
-
-class Option01 extends IntegerObject {
-  constructor(nsId, name) {
-    super(nsId, name, 0, n => n === 1);
-  }
-
-}
-
-exports.Option01 = Option01;
-
-class Option10 extends IntegerObject {
-  constructor(nsId, name) {
-    super(nsId, name, 1, n => n === 0);
-  }
-
-}
-
-exports.Option10 = Option10;
-
-/***/ }),
-/* 51 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getBBox = getBBox;
-exports.getColor = getColor;
-exports.getFloat = getFloat;
-exports.getInteger = getInteger;
-exports.getKeyword = getKeyword;
-exports.getMeasurement = getMeasurement;
-exports.getRatio = getRatio;
-exports.getRelevant = getRelevant;
-exports.getStringOption = getStringOption;
-const dimConverters = {
-  pt: x => x,
-  cm: x => x / 2.54 * 72,
-  mm: x => x / (10 * 2.54) * 72,
-  in: x => x * 72
-};
-const measurementPattern = /([+-]?[0-9]+\.?[0-9]*)(.*)/;
-
-function getInteger({
-  data,
-  defaultValue,
-  validate
-}) {
-  if (!data) {
-    return defaultValue;
-  }
-
-  data = data.trim();
-  const n = parseInt(data, 10);
-
-  if (!isNaN(n) && validate(n)) {
-    return n;
-  }
-
-  return defaultValue;
-}
-
-function getFloat({
-  data,
-  defaultValue,
-  validate
-}) {
-  if (!data) {
-    return defaultValue;
-  }
-
-  data = data.trim();
-  const n = parseFloat(data);
-
-  if (!isNaN(n) && validate(n)) {
-    return n;
-  }
-
-  return defaultValue;
-}
-
-function getKeyword({
-  data,
-  defaultValue,
-  validate
-}) {
-  if (!data) {
-    return defaultValue;
-  }
-
-  data = data.trim();
-
-  if (validate(data)) {
-    return data;
-  }
-
-  return defaultValue;
-}
-
-function getStringOption(data, options) {
-  return getKeyword({
-    data,
-    defaultValue: options[0],
-    validate: k => options.includes(k)
-  });
-}
-
-function getMeasurement(str, def = "0") {
-  def = def || "0";
-
-  if (!str) {
-    return getMeasurement(def);
-  }
-
-  const match = str.trim().match(measurementPattern);
-
-  if (!match) {
-    return getMeasurement(def);
-  }
-
-  const [, valueStr, unit] = match;
-  const value = parseFloat(valueStr);
-
-  if (isNaN(value)) {
-    return getMeasurement(def);
-  }
-
-  if (value === 0) {
-    return 0;
-  }
-
-  const conv = dimConverters[unit];
-
-  if (conv) {
-    return conv(value);
-  }
-
-  return value;
-}
-
-function getRatio(data) {
-  if (!data) {
-    return {
-      num: 1,
-      den: 1
-    };
-  }
-
-  const ratio = data.trim().split(/\s*:\s*/).map(x => parseFloat(x)).filter(x => !isNaN(x));
-
-  if (ratio.length === 1) {
-    ratio.push(1);
-  }
-
-  if (ratio.length === 0) {
-    return {
-      num: 1,
-      den: 1
-    };
-  }
-
-  const [num, den] = ratio;
-  return {
-    num,
-    den
-  };
-}
-
-function getRelevant(data) {
-  if (!data) {
-    return [];
-  }
-
-  return data.trim().split(/\s+/).map(e => {
-    return {
-      excluded: e[0] === "-",
-      viewname: e.substring(1)
-    };
-  });
-}
-
-function getColor(data, def = [0, 0, 0]) {
-  let [r, g, b] = def;
-
-  if (!data) {
-    return {
-      r,
-      g,
-      b
-    };
-  }
-
-  const color = data.trim().split(/\s*,\s*/).map(c => Math.min(Math.max(0, parseInt(c.trim(), 10)), 
255)).map(c => isNaN(c) ? 0 : c);
-
-  if (color.length < 3) {
-    return {
-      r,
-      g,
-      b
-    };
-  }
-
-  [r, g, b] = color;
-  return {
-    r,
-    g,
-    b
-  };
-}
-
-function getBBox(data) {
-  const def = -1;
-
-  if (!data) {
-    return {
-      x: def,
-      y: def,
-      width: def,
-      height: def
-    };
-  }
-
-  const bbox = data.trim().split(/\s*,\s*/).map(m => getMeasurement(m, "-1"));
-
-  if (bbox.length < 4 || bbox[2] < 0 || bbox[3] < 0) {
-    return {
-      x: def,
-      y: def,
-      width: def,
-      height: def
-    };
-  }
-
-  const [x, y, width, height] = bbox;
-  return {
-    x,
-    y,
-    width,
-    height
-  };
-}
-
-/***/ }),
-/* 52 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.NamespaceIds = exports.$buildXFAObject = void 0;
-const $buildXFAObject = Symbol();
-exports.$buildXFAObject = $buildXFAObject;
-const NamespaceIds = {
-  config: {
-    id: 0,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xci/";)
-  },
-  connectionSet: {
-    id: 1,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-connection-set/";)
-  },
-  datasets: {
-    id: 2,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-data/";)
-  },
-  form: {
-    id: 3,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-form/";)
-  },
-  localeSet: {
-    id: 4,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-locale-set/";)
-  },
-  pdf: {
-    id: 5,
-    check: ns => ns === "http://ns.adobe.com/xdp/pdf/";
-  },
-  signature: {
-    id: 6,
-    check: ns => ns === "http://www.w3.org/2000/09/xmldsig#";
-  },
-  sourceSet: {
-    id: 7,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-source-set/";)
-  },
-  stylesheet: {
-    id: 8,
-    check: ns => ns === "http://www.w3.org/1999/XSL/Transform";
-  },
-  template: {
-    id: 9,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xfa-template/";)
-  },
-  xdc: {
-    id: 10,
-    check: ns => ns.startsWith("http://www.xfa.org/schema/xdc/";)
-  },
-  xdp: {
-    id: 11,
-    check: ns => ns === "http://ns.adobe.com/xdp/";
-  },
-  xfdf: {
-    id: 12,
-    check: ns => ns === "http://ns.adobe.com/xfdf/";
-  },
-  xhtml: {
-    id: 13,
-    check: ns => ns === "http://www.w3.org/1999/xhtml";
-  },
-  xmpmeta: {
-    id: 14,
-    check: ns => ns === "http://ns.adobe.com/xmpmeta/";
-  }
-};
-exports.NamespaceIds = NamespaceIds;
-
-/***/ }),
-/* 53 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Binder = void 0;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _template = __w_pdfjs_require__(54);
-
-var _som = __w_pdfjs_require__(56);
-
-var _namespaces = __w_pdfjs_require__(52);
-
-var _util = __w_pdfjs_require__(2);
-
-function createText(content) {
-  const node = new _template.Text({});
-  node[_xfa_object.$content] = content;
-  return node;
-}
-
-class Binder {
-  constructor(root) {
-    this.root = root;
-    this.datasets = root.datasets;
-
-    if (root.datasets && root.datasets.data) {
-      this.emptyMerge = false;
-      this.data = root.datasets.data;
-    } else {
-      this.emptyMerge = true;
-      this.data = new _xfa_object.XmlObject(_namespaces.NamespaceIds.datasets.id, "data");
-    }
-
-    this.root.form = this.form = root.template[_xfa_object.$clone]();
-  }
-
-  _isConsumeData() {
-    return !this.emptyMerge && this._mergeMode;
-  }
-
-  _isMatchTemplate() {
-    return !this._isConsumeData();
-  }
-
-  bind() {
-    this._bindElement(this.form, this.data);
-
-    return this.form;
-  }
-
-  getData() {
-    return this.data;
-  }
-
-  _bindValue(formNode, data, picture) {
-    if (formNode[_xfa_object.$hasSettableValue]()) {
-      if (data[_xfa_object.$isDataValue]()) {
-        const value = data[_xfa_object.$content].trim();
-
-        formNode[_xfa_object.$setValue](createText(value));
-
-        formNode[_xfa_object.$data] = data;
-      } else if (formNode instanceof _template.Field && formNode.ui && formNode.ui.choiceList && 
formNode.ui.choiceList.open === "multiSelect") {
-        const value = data[_xfa_object.$getChildren]().map(child => 
child[_xfa_object.$content].trim()).join("\n");
-
-        formNode[_xfa_object.$setValue](createText(value));
-
-        formNode[_xfa_object.$data] = data;
-      } else if (this._isConsumeData()) {
-        (0, _util.warn)(`XFA - Nodes haven't the same type.`);
-      }
-    } else if (!data[_xfa_object.$isDataValue]() || this._isMatchTemplate()) {
-      this._bindElement(formNode, data);
-
-      formNode[_xfa_object.$data] = data;
-    } else {
-      (0, _util.warn)(`XFA - Nodes haven't the same type.`);
-    }
-  }
-
-  _findDataByNameToConsume(name, dataNode, global) {
-    if (!name) {
-      return null;
-    }
-
-    let generator, match;
-
-    for (let i = 0; i < 3; i++) {
-      generator = dataNode[_xfa_object.$getRealChildrenByNameIt](name, false, true);
-      match = generator.next().value;
-
-      if (match) {
-        return match;
-      }
-
-      if (dataNode[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.datasets.id && 
dataNode[_xfa_object.$nodeName] === "data") {
-        break;
-      }
-
-      dataNode = dataNode[_xfa_object.$getParent]();
-    }
-
-    if (!global) {
-      return null;
-    }
-
-    generator = this.datasets[_xfa_object.$getRealChildrenByNameIt](name, false, false);
-
-    while (true) {
-      match = generator.next().value;
-
-      if (!match) {
-        break;
-      }
-
-      if (match[_xfa_object.$global]) {
-        return match;
-      }
-    }
-
-    generator = this.data[_xfa_object.$getAttributeIt](name, true);
-    match = generator.next().value;
-
-    if (match && match[_xfa_object.$isDataValue]()) {
-      return match;
-    }
-
-    return null;
-  }
-
-  _setProperties(formNode, dataNode) {
-    if (!formNode.hasOwnProperty("setProperty")) {
-      return;
-    }
-
-    for (const {
-      ref,
-      target,
-      connection
-    } of formNode.setProperty.children) {
-      if (connection) {
-        continue;
-      }
-
-      if (!ref) {
-        continue;
-      }
-
-      const [node] = (0, _som.searchNode)(this.root, dataNode, ref, false, false);
-
-      if (!node) {
-        (0, _util.warn)(`XFA - Invalid reference: ${ref}.`);
-        continue;
-      }
-
-      if (!node[_xfa_object.$isDescendent](this.data)) {
-        (0, _util.warn)(`XFA - Invalid node: must be a data node.`);
-        continue;
-      }
-
-      const [targetNode] = (0, _som.searchNode)(this.root, formNode, target, false, false);
-
-      if (!targetNode) {
-        (0, _util.warn)(`XFA - Invalid target: ${target}.`);
-        continue;
-      }
-
-      if (!targetNode[_xfa_object.$isDescendent](formNode)) {
-        (0, _util.warn)(`XFA - Invalid target: must be a property or subproperty.`);
-        continue;
-      }
-
-      const targetParent = targetNode[_xfa_object.$getParent]();
-
-      if (targetNode instanceof _template.SetProperty || targetParent instanceof _template.SetProperty) {
-        (0, _util.warn)(`XFA - Invalid target: cannot be a setProperty or one of its properties.`);
-        continue;
-      }
-
-      if (targetNode instanceof _template.BindItems || targetParent instanceof _template.BindItems) {
-        (0, _util.warn)(`XFA - Invalid target: cannot be a bindItems or one of its properties.`);
-        continue;
-      }
-
-      const content = node[_xfa_object.$text]();
-
-      const name = targetNode[_xfa_object.$nodeName];
-
-      if (targetNode instanceof _xfa_object.XFAAttribute) {
-        const attrs = Object.create(null);
-        attrs[name] = content;
-        const obj = Reflect.construct(Object.getPrototypeOf(targetParent).constructor, [attrs]);
-        targetParent[name] = obj[name];
-        continue;
-      }
-
-      if (!targetNode.hasOwnProperty(_xfa_object.$content)) {
-        (0, _util.warn)(`XFA - Invalid node to use in setProperty`);
-        continue;
-      }
-
-      targetNode[_xfa_object.$data] = node;
-      targetNode[_xfa_object.$content] = content;
-
-      targetNode[_xfa_object.$finalize]();
-    }
-  }
-
-  _bindItems(formNode, dataNode) {
-    if (!formNode.hasOwnProperty("items") || !formNode.hasOwnProperty("bindItems") || 
formNode.bindItems.isEmpty()) {
-      return;
-    }
-
-    for (const item of formNode.items.children) {
-      formNode[_xfa_object.$removeChild](item);
-    }
-
-    formNode.items.clear();
-    const labels = new _template.Items({});
-    const values = new _template.Items({});
-
-    formNode[_xfa_object.$appendChild](labels);
-
-    formNode.items.push(labels);
-
-    formNode[_xfa_object.$appendChild](values);
-
-    formNode.items.push(values);
-
-    for (const {
-      ref,
-      labelRef,
-      valueRef,
-      connection
-    } of formNode.bindItems.children) {
-      if (connection) {
-        continue;
-      }
-
-      if (!ref) {
-        continue;
-      }
-
-      const nodes = (0, _som.searchNode)(this.root, dataNode, ref, false, false);
-
-      if (!nodes) {
-        (0, _util.warn)(`XFA - Invalid reference: ${ref}.`);
-        continue;
-      }
-
-      for (const node of nodes) {
-        if (!node[_xfa_object.$isDescendent](this.datasets)) {
-          (0, _util.warn)(`XFA - Invalid ref (${ref}): must be a datasets child.`);
-          continue;
-        }
-
-        const [labelNode] = (0, _som.searchNode)(this.root, node, labelRef, true, false);
-
-        if (!labelNode) {
-          (0, _util.warn)(`XFA - Invalid label: ${labelRef}.`);
-          continue;
-        }
-
-        if (!labelNode[_xfa_object.$isDescendent](this.datasets)) {
-          (0, _util.warn)(`XFA - Invalid label: must be a datasets child.`);
-          continue;
-        }
-
-        const [valueNode] = (0, _som.searchNode)(this.root, node, valueRef, true, false);
-
-        if (!valueNode) {
-          (0, _util.warn)(`XFA - Invalid value: ${valueRef}.`);
-          continue;
-        }
-
-        if (!valueNode[_xfa_object.$isDescendent](this.datasets)) {
-          (0, _util.warn)(`XFA - Invalid value: must be a datasets child.`);
-          continue;
-        }
-
-        const label = createText(labelNode[_xfa_object.$text]());
-        const value = createText(valueNode[_xfa_object.$text]());
-
-        labels[_xfa_object.$appendChild](label);
-
-        labels.text.push(label);
-
-        values[_xfa_object.$appendChild](value);
-
-        values.text.push(value);
-      }
-    }
-  }
-
-  _bindOccurrences(formNode, matches, picture) {
-    let baseClone;
-
-    if (matches.length > 1) {
-      baseClone = formNode[_xfa_object.$clone]();
-    }
-
-    this._bindValue(formNode, matches[0], picture);
-
-    this._setProperties(formNode, matches[0]);
-
-    this._bindItems(formNode, matches[0]);
-
-    if (matches.length === 1) {
-      return;
-    }
-
-    const parent = formNode[_xfa_object.$getParent]();
-
-    const name = formNode[_xfa_object.$nodeName];
-
-    const pos = parent[_xfa_object.$indexOf](formNode);
-
-    for (let i = 1, ii = matches.length; i < ii; i++) {
-      const match = matches[i];
-
-      const clone = baseClone[_xfa_object.$clone]();
-
-      clone.occur.min = 1;
-      clone.occur.max = 1;
-      clone.occur.initial = 1;
-      parent[name].push(clone);
-
-      parent[_xfa_object.$insertAt](pos + i, clone);
-
-      this._bindValue(clone, match, picture);
-
-      this._setProperties(clone, match);
-
-      this._bindItems(clone, match);
-    }
-  }
-
-  _createOccurrences(formNode) {
-    if (!this.emptyMerge) {
-      return;
-    }
-
-    const {
-      occur
-    } = formNode;
-
-    if (!occur || occur.initial <= 1) {
-      return;
-    }
-
-    const parent = formNode[_xfa_object.$getParent]();
-
-    const name = formNode[_xfa_object.$nodeName];
-
-    for (let i = 0, ii = occur.initial; i < ii; i++) {
-      const clone = formNode[_xfa_object.$clone]();
-
-      clone.occur.min = 1;
-      clone.occur.max = 1;
-      clone.occur.initial = 1;
-      parent[name].push(clone);
-
-      parent[_xfa_object.$appendChild](clone);
-    }
-  }
-
-  _getOccurInfo(formNode) {
-    const {
-      occur
-    } = formNode;
-    const dataName = formNode.name;
-
-    if (!occur || !dataName) {
-      return [1, 1];
-    }
-
-    const max = occur.max === -1 ? Infinity : occur.max;
-    return [occur.min, max];
-  }
-
-  _bindElement(formNode, dataNode) {
-    const uselessNodes = [];
-
-    this._createOccurrences(formNode);
-
-    for (const child of formNode[_xfa_object.$getChildren]()) {
-      if (child[_xfa_object.$data]) {
-        continue;
-      }
-
-      if (this._mergeMode === undefined && child[_xfa_object.$nodeName] === "subform") {
-        this._mergeMode = child.mergeMode === "consumeData";
-      }
-
-      let global = false;
-      let picture = null;
-      let ref = null;
-      let match = null;
-
-      if (child.bind) {
-        switch (child.bind.match) {
-          case "none":
-            continue;
-
-          case "global":
-            global = true;
-            break;
-
-          case "dataRef":
-            if (!child.bind.ref) {
-              (0, _util.warn)(`XFA - ref is empty in node ${child[_xfa_object.$nodeName]}.`);
-              continue;
-            }
-
-            ref = child.bind.ref;
-            break;
-
-          default:
-            break;
-        }
-
-        if (child.bind.picture) {
-          picture = child.bind.picture[_xfa_object.$content];
-        }
-      }
-
-      const [min, max] = this._getOccurInfo(child);
-
-      if (ref) {
-        match = (0, _som.searchNode)(this.root, dataNode, ref, true, false);
-
-        if (match === null) {
-          match = (0, _som.createDataNode)(this.data, dataNode, ref);
-
-          if (this._isConsumeData()) {
-            match[_xfa_object.$consumed] = true;
-          }
-
-          match = [match];
-        } else {
-          if (this._isConsumeData()) {
-            match = match.filter(node => !node[_xfa_object.$consumed]);
-          }
-
-          if (match.length > max) {
-            match = match.slice(0, max);
-          } else if (match.length === 0) {
-            match = null;
-          }
-
-          if (match && this._isConsumeData()) {
-            match.forEach(node => {
-              node[_xfa_object.$consumed] = true;
-            });
-          }
-        }
-      } else {
-        if (!child.name) {
-          this._bindElement(child, dataNode);
-
-          continue;
-        }
-
-        if (this._isConsumeData()) {
-          const matches = [];
-
-          while (matches.length < max) {
-            const found = this._findDataByNameToConsume(child.name, dataNode, global);
-
-            if (!found) {
-              break;
-            }
-
-            found[_xfa_object.$consumed] = true;
-            matches.push(found);
-          }
-
-          match = matches.length > 0 ? matches : null;
-        } else {
-          match = dataNode[_xfa_object.$getRealChildrenByNameIt](child.name, false, false).next().value;
-
-          if (!match) {
-            match = new _xfa_object.XmlObject(dataNode[_xfa_object.$namespaceId], child.name);
-
-            dataNode[_xfa_object.$appendChild](match);
-          }
-
-          match = [match];
-        }
-      }
-
-      if (match) {
-        if (match.length < min) {
-          (0, _util.warn)(`XFA - Must have at least ${min} occurrences: 
${formNode[_xfa_object.$nodeName]}.`);
-          continue;
-        }
-
-        this._bindOccurrences(child, match, picture);
-      } else if (min > 0) {
-        this._bindElement(child, dataNode);
-      } else {
-        uselessNodes.push(child);
-      }
-    }
-
-    uselessNodes.forEach(node => node[_xfa_object.$getParent]()[_xfa_object.$removeChild](node));
-  }
-
-}
-
-exports.Binder = Binder;
-
-/***/ }),
-/* 54 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Value = exports.Text = exports.TemplateNamespace = exports.Template = exports.SetProperty = 
exports.Items = exports.Field = exports.BindItems = void 0;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _namespaces = __w_pdfjs_require__(52);
-
-var _utils = __w_pdfjs_require__(51);
-
-var _html_utils = __w_pdfjs_require__(55);
-
-var _util = __w_pdfjs_require__(2);
-
-const TEMPLATE_NS_ID = _namespaces.NamespaceIds.template.id;
-
-function _setValue(templateNode, value) {
-  if (!templateNode.value) {
-    const nodeValue = new Value({});
-
-    templateNode[_xfa_object.$appendChild](nodeValue);
-
-    templateNode.value = nodeValue;
-  }
-
-  templateNode.value[_xfa_object.$setValue](value);
-}
-
-class AppearanceFilter extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "appearanceFilter");
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Arc extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "arc", true);
-    this.circular = (0, _utils.getInteger)({
-      data: attributes.circular,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]);
-    this.id = attributes.id || "";
-    this.startAngle = (0, _utils.getFloat)({
-      data: attributes.startAngle,
-      defaultValue: 0,
-      validate: x => true
-    });
-    this.sweepAngle = (0, _utils.getFloat)({
-      data: attributes.sweepAngle,
-      defaultValue: 360,
-      validate: x => true
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.edge = null;
-    this.fill = null;
-  }
-
-}
-
-class Area extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "area", true);
-    this.colSpan = (0, _utils.getInteger)({
-      data: attributes.colSpan,
-      defaultValue: 1,
-      validate: n => n >= 1
-    });
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.desc = null;
-    this.extras = null;
-    this.area = new _xfa_object.XFAObjectArray();
-    this.draw = new _xfa_object.XFAObjectArray();
-    this.exObject = new _xfa_object.XFAObjectArray();
-    this.exclGroup = new _xfa_object.XFAObjectArray();
-    this.field = new _xfa_object.XFAObjectArray();
-    this.subform = new _xfa_object.XFAObjectArray();
-    this.subformSet = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$isTransparent]() {
-    return true;
-  }
-
-}
-
-class Assist extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "assist", true);
-    this.id = attributes.id || "";
-    this.role = attributes.role || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.speak = null;
-    this.toolTip = null;
-  }
-
-}
-
-class Barcode extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "barcode", true);
-    this.charEncoding = (0, _utils.getKeyword)({
-      data: attributes.charEncoding ? attributes.charEncoding.toLowerCase() : "",
-      defaultValue: "",
-      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-[0-9]{2}/)
-    });
-    this.checksum = (0, _utils.getStringOption)(attributes.checksum, ["none", "1mod10", "1mod10_1mod11", 
"2mod10", "auto"]);
-    this.dataColumnCount = (0, _utils.getInteger)({
-      data: attributes.dataColumnCount,
-      defaultValue: -1,
-      validate: x => x >= 0
-    });
-    this.dataLength = (0, _utils.getInteger)({
-      data: attributes.dataLength,
-      defaultValue: -1,
-      validate: x => x >= 0
-    });
-    this.dataPrep = (0, _utils.getStringOption)(attributes.dataPrep, ["none", "flateCompress"]);
-    this.dataRowCount = (0, _utils.getInteger)({
-      data: attributes.dataRowCount,
-      defaultValue: -1,
-      validate: x => x >= 0
-    });
-    this.endChar = attributes.endChar || "";
-    this.errorCorrectionLevel = (0, _utils.getInteger)({
-      data: attributes.errorCorrectionLevel,
-      defaultValue: -1,
-      validate: x => x >= 0 && x <= 8
-    });
-    this.id = attributes.id || "";
-    this.moduleHeight = (0, _utils.getMeasurement)(attributes.moduleHeight, "5mm");
-    this.moduleWidth = (0, _utils.getMeasurement)(attributes.moduleWidth, "0.25mm");
-    this.printCheckDigit = (0, _utils.getInteger)({
-      data: attributes.printCheckDigit,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.rowColumnRatio = (0, _utils.getRatio)(attributes.rowColumnRatio);
-    this.startChar = attributes.startChar || "";
-    this.textLocation = (0, _utils.getStringOption)(attributes.textLocation, ["below", "above", 
"aboveEmbedded", "belowEmbedded", "none"]);
-    this.truncate = (0, _utils.getInteger)({
-      data: attributes.truncate,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.type = (0, _utils.getStringOption)(attributes.type ? attributes.type.toLowerCase() : "", ["aztec", 
"codabar", "code2of5industrial", "code2of5interleaved", "code2of5matrix", "code2of5standard", "code3of9", 
"code3of9extended", "code11", "code49", "code93", "code128", "code128a", "code128b", "code128c", 
"code128sscc", "datamatrix", "ean8", "ean8add2", "ean8add5", "ean13", "ean13add2", "ean13add5", "ean13pwcd", 
"fim", "logmars", "maxicode", "msi", "pdf417", "pdf417macro", "plessey", "postauscust2", "postauscust3", 
"postausreplypaid", "postausstandard", "postukrm4scc", "postusdpbc", "postusimb", "postusstandard", 
"postus5zip", "qrcode", "rfid", "rss14", "rss14expanded", "rss14limited", "rss14stacked", "rss14stackedomni", 
"rss14truncated", "telepen", "ucc128", "ucc128random", "ucc128sscc", "upca", "upcaadd2", "upcaadd5", 
"upcapwcd", "upce", "upceadd2", "upceadd5", "upcean2", "upcean5", "upsmaxicode"]);
-    this.upsMode = (0, _utils.getStringOption)(attributes.upsMode, ["usCarrier", "internationalCarrier", 
"secureSymbol", "standardSymbol"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.wideNarrowRatio = (0, _utils.getRatio)(attributes.wideNarrowRatio);
-    this.encrypt = null;
-    this.extras = null;
-  }
-
-}
-
-class Bind extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "bind", true);
-    this.match = (0, _utils.getStringOption)(attributes.match, ["once", "dataRef", "global", "none"]);
-    this.ref = attributes.ref || "";
-    this.picture = null;
-  }
-
-}
-
-class BindItems extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "bindItems");
-    this.connection = attributes.connection || "";
-    this.labelRef = attributes.labelRef || "";
-    this.ref = attributes.ref || "";
-    this.valueRef = attributes.valueRef || "";
-  }
-
-}
-
-exports.BindItems = BindItems;
-
-class Bookend extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "bookend");
-    this.id = attributes.id || "";
-    this.leader = attributes.leader || "";
-    this.trailer = attributes.trailer || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class BooleanElement extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "boolean");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content] === 1;
-  }
-
-}
-
-class Border extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "border", true);
-    this.break = (0, _utils.getStringOption)(attributes.break, ["close", "open"]);
-    this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]);
-    this.id = attributes.id || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.corner = new _xfa_object.XFAObjectArray(4);
-    this.edge = new _xfa_object.XFAObjectArray(4);
-    this.extras = null;
-    this.fill = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toStyle](widths, margins) {
-    const edgeStyles = this.edge.children.map(node => node[_xfa_object.$toStyle]());
-    const cornerStyles = this.edge.children.map(node => node[_xfa_object.$toStyle]());
-    let style;
-
-    if (this.margin) {
-      style = this.margin[_xfa_object.$toStyle]();
-
-      if (margins) {
-        margins.push(this.margin.topInset, this.margin.rightInset, this.margin.bottomInset, 
this.margin.leftInset);
-      }
-    } else {
-      style = Object.create(null);
-
-      if (margins) {
-        margins.push(0, 0, 0, 0);
-      }
-    }
-
-    if (this.fill) {
-      Object.assign(style, this.fill[_xfa_object.$toStyle]());
-    }
-
-    if (edgeStyles.length > 0) {
-      if (widths) {
-        this.edge.children.forEach(node => widths.push(node.thickness));
-
-        if (widths.length < 4) {
-          const last = widths[widths.length - 1];
-
-          for (let i = widths.length; i < 4; i++) {
-            widths.push(last);
-          }
-        }
-      }
-
-      if (edgeStyles.length === 2 || edgeStyles.length === 3) {
-        const last = edgeStyles[edgeStyles.length - 1];
-
-        for (let i = edgeStyles.length; i < 4; i++) {
-          edgeStyles.push(last);
-        }
-      }
-
-      style.borderWidth = edgeStyles.map(s => s.width).join(" ");
-      style.borderColor = edgeStyles.map(s => s.color).join(" ");
-      style.borderStyle = edgeStyles.map(s => s.style).join(" ");
-    } else {
-      if (widths) {
-        widths.push(0, 0, 0, 0);
-      }
-    }
-
-    if (cornerStyles.length > 0) {
-      if (cornerStyles.length === 2 || cornerStyles.length === 3) {
-        const last = cornerStyles[cornerStyles.length - 1];
-
-        for (let i = cornerStyles.length; i < 4; i++) {
-          cornerStyles.push(last);
-        }
-      }
-
-      style.borderRadius = cornerStyles.map(s => s.radius).join(" ");
-    }
-
-    switch (this.presence) {
-      case "invisible":
-      case "hidden":
-        style.borderStyle = "";
-        break;
-
-      case "inactive":
-        style.borderStyle = "none";
-        break;
-    }
-
-    return style;
-  }
-
-}
-
-class Break extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "break", true);
-    this.after = (0, _utils.getStringOption)(attributes.after, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
-    this.afterTarget = attributes.afterTarget || "";
-    this.before = (0, _utils.getStringOption)(attributes.before, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
-    this.beforeTarget = attributes.beforeTarget || "";
-    this.bookendLeader = attributes.bookendLeader || "";
-    this.bookendTrailer = attributes.bookendTrailer || "";
-    this.id = attributes.id || "";
-    this.overflowLeader = attributes.overflowLeader || "";
-    this.overflowTarget = attributes.overflowTarget || "";
-    this.overflowTrailer = attributes.overflowTrailer || "";
-    this.startNew = (0, _utils.getInteger)({
-      data: attributes.startNew,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-}
-
-class BreakAfter extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "breakAfter", true);
-    this.id = attributes.id || "";
-    this.leader = attributes.leader || "";
-    this.startNew = (0, _utils.getInteger)({
-      data: attributes.startNew,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.target = attributes.target || "";
-    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
-    this.trailer = attributes.trailer || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.script = null;
-  }
-
-}
-
-class BreakBefore extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "breakBefore", true);
-    this.id = attributes.id || "";
-    this.leader = attributes.leader || "";
-    this.startNew = (0, _utils.getInteger)({
-      data: attributes.startNew,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.target = attributes.target || "";
-    this.targetType = (0, _utils.getStringOption)(attributes.targetType, ["auto", "contentArea", "pageArea", 
"pageEven", "pageOdd"]);
-    this.trailer = attributes.trailer || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.script = null;
-  }
-
-}
-
-class Button extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "button", true);
-    this.highlight = (0, _utils.getStringOption)(attributes.highlight, ["inverted", "none", "outline", 
"push"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    return {
-      name: "button",
-      attributes: {
-        class: "xfaButton",
-        style: {}
-      }
-    };
-  }
-
-}
-
-class Calculate extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "calculate", true);
-    this.id = attributes.id || "";
-    this.override = (0, _utils.getStringOption)(attributes.override, ["disabled", "error", "ignore", 
"warning"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.message = null;
-    this.script = null;
-  }
-
-}
-
-class Caption extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "caption", true);
-    this.id = attributes.id || "";
-    this.placement = (0, _utils.getStringOption)(attributes.placement, ["left", "bottom", "inline", "right", 
"top"]);
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.reserve = (0, _utils.getMeasurement)(attributes.reserve);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.font = null;
-    this.margin = null;
-    this.para = null;
-    this.value = null;
-  }
-
-  [_xfa_object.$setValue](value) {
-    _setValue(this, value);
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (!this.value) {
-      return null;
-    }
-
-    const value = this.value[_xfa_object.$toHTML]();
-
-    if (!value) {
-      return null;
-    }
-
-    const children = [];
-
-    if (typeof value === "string") {
-      children.push({
-        name: "#text",
-        value
-      });
-    } else {
-      children.push(value);
-    }
-
-    const style = (0, _html_utils.toStyle)(this, "font", "margin", "para", "visibility");
-
-    switch (this.placement) {
-      case "left":
-      case "right":
-        style.minWidth = (0, _html_utils.measureToString)(this.reserve);
-        break;
-
-      case "top":
-      case "bottom":
-        style.minHeight = (0, _html_utils.measureToString)(this.reserve);
-        break;
-    }
-
-    return {
-      name: "div",
-      attributes: {
-        style
-      },
-      children
-    };
-  }
-
-}
-
-class Certificate extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "certificate");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Certificates extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "certificates", true);
-    this.credentialServerPolicy = (0, _utils.getStringOption)(attributes.credentialServerPolicy, 
["optional", "required"]);
-    this.id = attributes.id || "";
-    this.url = attributes.url || "";
-    this.urlPolicy = attributes.urlPolicy || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.encryption = null;
-    this.issuers = null;
-    this.keyUsage = null;
-    this.oids = null;
-    this.signing = null;
-    this.subjectDNs = null;
-  }
-
-}
-
-class CheckButton extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "checkButton", true);
-    this.id = attributes.id || "";
-    this.mark = (0, _utils.getStringOption)(attributes.mark, ["default", "check", "circle", "cross", 
"diamond", "square", "star"]);
-    this.shape = (0, _utils.getStringOption)(attributes.shape, ["square", "round"]);
-    this.size = (0, _utils.getMeasurement)(attributes.size, "10pt");
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = (0, _html_utils.toStyle)(this, "border", "margin");
-    const size = (0, _html_utils.measureToString)(this.size);
-    style.width = style.height = size;
-    let mark, radius;
-
-    if (this.shape === "square") {
-      mark = "■";
-      radius = "10%";
-    } else {
-      mark = "●";
-      radius = "50%";
-    }
-
-    if (!style.borderRadius) {
-      style.borderRadius = radius;
-    }
-
-    if (this.mark !== "default") {
-      switch (this.mark) {
-        case "check":
-          mark = "✓";
-          break;
-
-        case "circle":
-          mark = "●";
-          break;
-
-        case "cross":
-          mark = "✕";
-          break;
-
-        case "diamond":
-          mark = "♦";
-          break;
-
-        case "square":
-          mark = "■";
-          break;
-
-        case "star":
-          mark = "★";
-          break;
-      }
-    }
-
-    if (size !== "10px") {
-      style.fontSize = size;
-      style.lineHeight = size;
-      style.width = size;
-      style.height = size;
-    }
-
-    return {
-      name: "label",
-      attributes: {
-        class: "xfaLabel"
-      },
-      children: [{
-        name: "input",
-        attributes: {
-          class: "xfaCheckbox",
-          type: "checkbox"
-        }
-      }, {
-        name: "span",
-        attributes: {
-          class: "xfaCheckboxMark",
-          mark,
-          style
-        }
-      }]
-    };
-  }
-
-}
-
-class ChoiceList extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "choiceList", true);
-    this.commitOn = (0, _utils.getStringOption)(attributes.commitOn, ["select", "exit"]);
-    this.id = attributes.id || "";
-    this.open = (0, _utils.getStringOption)(attributes.open, ["userControl", "always", "multiSelect", 
"onEntry"]);
-    this.textEntry = (0, _utils.getInteger)({
-      data: attributes.textEntry,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = (0, _html_utils.toStyle)(this, "border", "margin");
-    return {
-      name: "label",
-      attributes: {
-        class: "xfaLabel"
-      },
-      children: [{
-        name: "select",
-        attributes: {
-          class: "xfaSxelect",
-          multiple: this.open === "multiSelect",
-          style
-        }
-      }]
-    };
-  }
-
-}
-
-class Color extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "color", true);
-    this.cSpace = (0, _utils.getStringOption)(attributes.cSpace, ["SRGB"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.value = (0, _utils.getColor)(attributes.value);
-    this.extras = null;
-  }
-
-  [_xfa_object.$hasSettableValue]() {
-    return false;
-  }
-
-  [_xfa_object.$toStyle]() {
-    return _util.Util.makeHexColor(this.value.r, this.value.g, this.value.b);
-  }
-
-}
-
-class Comb extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "comb");
-    this.id = attributes.id || "";
-    this.numberOfCells = (0, _utils.getInteger)({
-      data: attributes.numberOfCells,
-      defaultValue: 0,
-      validate: x => x >= 0
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Connect extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "connect", true);
-    this.connection = attributes.connection || "";
-    this.id = attributes.id || "";
-    this.ref = attributes.ref || "";
-    this.usage = (0, _utils.getStringOption)(attributes.usage, ["exportAndImport", "exportOnly", 
"importOnly"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.picture = null;
-  }
-
-}
-
-class ContentArea extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "contentArea", true);
-    this.h = (0, _utils.getMeasurement)(attributes.h);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.w = (0, _utils.getMeasurement)(attributes.w);
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.desc = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const left = (0, _html_utils.measureToString)(this.x);
-    const top = (0, _html_utils.measureToString)(this.y);
-    const style = {
-      position: "absolute",
-      left,
-      top,
-      width: (0, _html_utils.measureToString)(this.w),
-      height: (0, _html_utils.measureToString)(this.h)
-    };
-    return {
-      name: "div",
-      children: [],
-      attributes: {
-        style,
-        class: "xfaContentarea",
-        id: this[_xfa_object.$uid]
-      }
-    };
-  }
-
-}
-
-class Corner extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "corner", true);
-    this.id = attributes.id || "";
-    this.inverted = (0, _utils.getInteger)({
-      data: attributes.inverted,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.join = (0, _utils.getStringOption)(attributes.join, ["square", "round"]);
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.radius = (0, _utils.getMeasurement)(attributes.radius);
-    this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", 
"dashed", "dotted", "embossed", "etched", "lowered", "raised"]);
-    this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt");
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle]() {
-    const style = (0, _html_utils.toStyle)(this, "visibility");
-    style.radius = (0, _html_utils.measureToString)(this.radius);
-    return style;
-  }
-
-}
-
-class DateElement extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "date");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content].trim());
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content].toString();
-  }
-
-}
-
-class DateTime extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "dateTime");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content].trim());
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content].toString();
-  }
-
-}
-
-class DateTimeEdit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "dateTimeEdit", true);
-    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
-    this.id = attributes.id || "";
-    this.picker = (0, _utils.getStringOption)(attributes.picker, ["host", "none"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.comb = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
-    const html = {
-      name: "input",
-      attributes: {
-        type: "text",
-        class: "xfaTextfield",
-        style
-      }
-    };
-    return {
-      name: "label",
-      attributes: {
-        class: "xfaLabel"
-      },
-      children: [html]
-    };
-  }
-
-}
-
-class Decimal extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "decimal");
-    this.fracDigits = (0, _utils.getInteger)({
-      data: attributes.fracDigits,
-      defaultValue: 2,
-      validate: x => true
-    });
-    this.id = attributes.id || "";
-    this.leadDigits = (0, _utils.getInteger)({
-      data: attributes.leadDigits,
-      defaultValue: -1,
-      validate: x => true
-    });
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    const number = parseFloat(this[_xfa_object.$content].trim());
-    this[_xfa_object.$content] = isNaN(number) ? null : number;
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "";
-  }
-
-}
-
-class DefaultUi extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "defaultUi", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-}
-
-class Desc extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "desc", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class DigestMethod extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "digestMethod", ["", "SHA1", "SHA256", "SHA512", "RIPEMD160"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class DigestMethods extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "digestMethods", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.digestMethod = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Draw extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "draw", true);
-    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", 
"bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]);
-    this.colSpan = (0, _utils.getInteger)({
-      data: attributes.colSpan,
-      defaultValue: 1,
-      validate: x => x >= 1
-    });
-    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : "";
-    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", 
"radix", "right"]);
-    this.id = attributes.id || "";
-    this.locale = attributes.locale || "";
-    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt");
-    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt");
-    this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt");
-    this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt");
-    this.name = attributes.name || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.rotate = (0, _utils.getInteger)({
-      data: attributes.rotate,
-      defaultValue: 0,
-      validate: x => x % 90 === 0
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : "";
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.assist = null;
-    this.border = null;
-    this.caption = null;
-    this.desc = null;
-    this.extras = null;
-    this.font = null;
-    this.keep = null;
-    this.margin = null;
-    this.para = null;
-    this.traversal = null;
-    this.ui = null;
-    this.value = null;
-    this.setProperty = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$setValue](value) {
-    _setValue(this, value);
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (!this.value) {
-      return null;
-    }
-
-    const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "presence", "rotate", 
"anchorType");
-    const clazz = ["xfaDraw"];
-
-    if (this.font) {
-      clazz.push("xfaFont");
-    }
-
-    const attributes = {
-      style,
-      id: this[_xfa_object.$uid],
-      class: clazz.join(" ")
-    };
-
-    if (this.name) {
-      attributes.xfaName = this.name;
-    }
-
-    return {
-      name: "div",
-      attributes,
-      children: []
-    };
-  }
-
-}
-
-class Edge extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "edge", true);
-    this.cap = (0, _utils.getStringOption)(attributes.cap, ["square", "butt", "round"]);
-    this.id = attributes.id || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.stroke = (0, _utils.getStringOption)(attributes.stroke, ["solid", "dashDot", "dashDotDot", 
"dashed", "dotted", "embossed", "etched", "lowered", "raised"]);
-    this.thickness = (0, _utils.getMeasurement)(attributes.thickness, "0.5pt");
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle]() {
-    const style = (0, _html_utils.toStyle)(this, "visibility");
-    Object.assign(style, {
-      linecap: this.cap,
-      width: (0, _html_utils.measureToString)(this.thickness),
-      color: this.color ? this.color[_xfa_object.$toHTML]() : "#000000",
-      style: ""
-    });
-
-    if (this.presence !== "visible") {
-      style.style = "none";
-    } else {
-      switch (this.stroke) {
-        case "solid":
-          style.style = "solid";
-          break;
-
-        case "dashDot":
-          style.style = "dashed";
-          break;
-
-        case "dashDotDot":
-          style.style = "dashed";
-          break;
-
-        case "dashed":
-          style.style = "dashed";
-          break;
-
-        case "dotted":
-          style.style = "dotted";
-          break;
-
-        case "embossed":
-          style.style = "ridge";
-          break;
-
-        case "etched":
-          style.style = "groove";
-          break;
-
-        case "lowered":
-          style.style = "inset";
-          break;
-
-        case "raised":
-          style.style = "outset";
-          break;
-      }
-    }
-
-    return style;
-  }
-
-}
-
-class Encoding extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encoding", ["adbe.x509.rsa_sha1", "adbe.pkcs7.detached", "adbe.pkcs7.sha1"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Encodings extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encodings", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.encoding = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Encrypt extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encrypt", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.certificate = null;
-  }
-
-}
-
-class EncryptData extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encryptData", true);
-    this.id = attributes.id || "";
-    this.operation = (0, _utils.getStringOption)(attributes.operation, ["encrypt", "decrypt"]);
-    this.target = attributes.target || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.filter = null;
-    this.manifest = null;
-  }
-
-}
-
-class Encryption extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encryption", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.certificate = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class EncryptionMethod extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encryptionMethod", ["", "AES256-CBC", "TRIPLEDES-CBC", "AES128-CBC", 
"AES192-CBC"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class EncryptionMethods extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "encryptionMethods", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.encryptionMethod = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Event extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "event", true);
-    this.activity = (0, _utils.getStringOption)(attributes.activity, ["click", "change", "docClose", 
"docReady", "enter", "exit", "full", "indexChange", "initialize", "mouseDown", "mouseEnter", "mouseExit", 
"mouseUp", "postExecute", "postOpen", "postPrint", "postSave", "postSign", "postSubmit", "preExecute", 
"preOpen", "prePrint", "preSave", "preSign", "preSubmit", "ready", "validationState"]);
-    this.id = attributes.id || "";
-    this.listen = (0, _utils.getStringOption)(attributes.listen, ["refOnly", "refAndDescendents"]);
-    this.name = attributes.name || "";
-    this.ref = attributes.ref || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.encryptData = null;
-    this.execute = null;
-    this.script = null;
-    this.signData = null;
-    this.submit = null;
-  }
-
-}
-
-class ExData extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "exData");
-    this.contentType = attributes.contentType || "";
-    this.href = attributes.href || "";
-    this.id = attributes.id || "";
-    this.maxLength = (0, _utils.getInteger)({
-      data: attributes.maxLength,
-      defaultValue: -1,
-      validate: x => x >= -1
-    });
-    this.name = attributes.name || "";
-    this.rid = attributes.rid || "";
-    this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["none", "base64", 
"package"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$onChild](child) {
-    if (this.contentType === "text/html" && child[_xfa_object.$namespaceId] === 
_namespaces.NamespaceIds.xhtml.id) {
-      this[_xfa_object.$content] = child;
-      return true;
-    }
-
-    if (this.contentType === "text/xml") {
-      this[_xfa_object.$content] = child;
-      return true;
-    }
-
-    return false;
-  }
-
-}
-
-class ExObject extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "exObject", true);
-    this.archive = attributes.archive || "";
-    this.classId = attributes.classId || "";
-    this.codeBase = attributes.codeBase || "";
-    this.codeType = attributes.codeType || "";
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.exObject = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class ExclGroup extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "exclGroup", true);
-    this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", 
"readOnly"]);
-    this.accessKey = attributes.accessKey || "";
-    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", 
"bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]);
-    this.colSpan = (0, _utils.getInteger)({
-      data: attributes.colSpan,
-      defaultValue: 1,
-      validate: x => x >= 1
-    });
-    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : "";
-    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", 
"radix", "right"]);
-    this.id = attributes.id || "";
-    this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", 
"row", "table", "tb"]);
-    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt");
-    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt");
-    this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt");
-    this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt");
-    this.name = attributes.name || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : "";
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.assist = null;
-    this.bind = null;
-    this.border = null;
-    this.calculate = null;
-    this.caption = null;
-    this.desc = null;
-    this.extras = null;
-    this.margin = null;
-    this.para = null;
-    this.traversal = null;
-    this.validate = null;
-    this.connect = new _xfa_object.XFAObjectArray();
-    this.event = new _xfa_object.XFAObjectArray();
-    this.field = new _xfa_object.XFAObjectArray();
-    this.setProperty = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$hasSettableValue]() {
-    return true;
-  }
-
-  [_xfa_object.$setValue](value) {
-    for (const field of this.field.children) {
-      if (!field.value) {
-        const nodeValue = new Value({});
-
-        field[_xfa_object.$appendChild](nodeValue);
-
-        field.value = nodeValue;
-      }
-
-      const nodeBoolean = new BooleanElement({});
-      nodeBoolean[_xfa_object.$content] = 0;
-
-      for (const item of field.items.children) {
-        if (item[_xfa_object.$hasItem](value)) {
-          nodeBoolean[_xfa_object.$content] = 1;
-          break;
-        }
-      }
-
-      field.value[_xfa_object.$setValue](nodeBoolean);
-    }
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (!this.value) {
-      return null;
-    }
-
-    const style = (0, _html_utils.toStyle)(this, "dimensions", "position", "anchorType");
-    const attributes = {
-      style,
-      id: this[_xfa_object.$uid],
-      class: "xfaExclgroup"
-    };
-
-    const children = this[_xfa_object.$childrenToHTML]({
-      filter: new Set(["field"]),
-      include: true
-    });
-
-    return {
-      name: "div",
-      attributes,
-      children
-    };
-  }
-
-}
-
-class Execute extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "execute");
-    this.connection = attributes.connection || "";
-    this.executeType = (0, _utils.getStringOption)(attributes.executeType, ["import", "remerge"]);
-    this.id = attributes.id || "";
-    this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Extras extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "extras", true);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.extras = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Field extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "field", true);
-    this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", 
"readOnly"]);
-    this.accessKey = attributes.accessKey || "";
-    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", 
"bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]);
-    this.colSpan = (0, _utils.getInteger)({
-      data: attributes.colSpan,
-      defaultValue: 1,
-      validate: x => x >= 1
-    });
-    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : "";
-    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", 
"radix", "right"]);
-    this.id = attributes.id || "";
-    this.locale = attributes.locale || "";
-    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt");
-    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt");
-    this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt");
-    this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt");
-    this.name = attributes.name || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.rotate = (0, _utils.getInteger)({
-      data: attributes.rotate,
-      defaultValue: 0,
-      validate: x => x % 90 === 0
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : "";
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.assist = null;
-    this.bind = null;
-    this.border = null;
-    this.calculate = null;
-    this.caption = null;
-    this.desc = null;
-    this.extras = null;
-    this.font = null;
-    this.format = null;
-    this.items = new _xfa_object.XFAObjectArray(2);
-    this.keep = null;
-    this.margin = null;
-    this.para = null;
-    this.traversal = null;
-    this.ui = null;
-    this.validate = null;
-    this.value = null;
-    this.bindItems = new _xfa_object.XFAObjectArray();
-    this.connect = new _xfa_object.XFAObjectArray();
-    this.event = new _xfa_object.XFAObjectArray();
-    this.setProperty = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$setValue](value) {
-    _setValue(this, value);
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (!this.ui) {
-      return null;
-    }
-
-    const style = (0, _html_utils.toStyle)(this, "font", "dimensions", "position", "rotate", "anchorType", 
"presence");
-    const borderWidths = [];
-    const marginWidths = [];
-
-    if (this.border) {
-      Object.assign(style, this.border[_xfa_object.$toStyle](borderWidths, marginWidths));
-    }
-
-    if (this.margin) {
-      style.paddingTop = (0, _html_utils.measureToString)(this.margin.topInset - borderWidths[0] - 
marginWidths[0]);
-      style.paddingRight = (0, _html_utils.measureToString)(this.margin.rightInset - borderWidths[1] - 
marginWidths[1]);
-      style.paddingBottom = (0, _html_utils.measureToString)(this.margin.bottomInset - borderWidths[2] - 
marginWidths[2]);
-      style.paddingLeft = (0, _html_utils.measureToString)(this.margin.leftInset - borderWidths[3] - 
marginWidths[3]);
-    } else {
-      style.paddingTop = (0, _html_utils.measureToString)(-borderWidths[0] - marginWidths[0]);
-      style.paddingRight = (0, _html_utils.measureToString)(-borderWidths[1] - marginWidths[1]);
-      style.paddingBottom = (0, _html_utils.measureToString)(-borderWidths[2] - marginWidths[2]);
-      style.paddingLeft = (0, _html_utils.measureToString)(-borderWidths[3] - marginWidths[3]);
-    }
-
-    const clazz = ["xfaField"];
-
-    if (this.font) {
-      clazz.push("xfaFont");
-    }
-
-    const attributes = {
-      style,
-      id: this[_xfa_object.$uid],
-      class: clazz.join(" ")
-    };
-
-    if (this.name) {
-      attributes.xfaName = this.name;
-    }
-
-    const children = [];
-    const html = {
-      name: "div",
-      attributes,
-      children
-    };
-    const ui = this.ui ? this.ui[_xfa_object.$toHTML]() : null;
-
-    if (!ui) {
-      return html;
-    }
-
-    if (!ui.attributes.style) {
-      ui.attributes.style = Object.create(null);
-    }
-
-    children.push(ui);
-
-    if (this.value && ui.name !== "button") {
-      ui.children[0].attributes.value = this.value[_xfa_object.$toHTML]();
-    }
-
-    const caption = this.caption ? this.caption[_xfa_object.$toHTML]() : null;
-
-    if (!caption) {
-      return html;
-    }
-
-    if (ui.name === "button") {
-      ui.attributes.style.background = style.color;
-      delete style.color;
-
-      if (caption.name === "div") {
-        caption.name = "span";
-      }
-
-      ui.children = [caption];
-      return html;
-    }
-
-    ui.children.splice(0, 0, caption);
-
-    switch (this.caption.placement) {
-      case "left":
-        ui.attributes.style.flexDirection = "row";
-        break;
-
-      case "right":
-        ui.attributes.style.flexDirection = "row-reverse";
-        break;
-
-      case "top":
-        ui.attributes.style.flexDirection = "column";
-        break;
-
-      case "bottom":
-        ui.attributes.style.flexDirection = "column-reverse";
-        break;
-
-      case "inline":
-        delete ui.attributes.class;
-        caption.attributes.style.float = "left";
-        break;
-    }
-
-    return html;
-  }
-
-}
-
-exports.Field = Field;
-
-class Fill extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "fill", true);
-    this.id = attributes.id || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-    this.linear = null;
-    this.pattern = null;
-    this.radial = null;
-    this.solid = null;
-    this.stipple = null;
-  }
-
-  [_xfa_object.$toStyle]() {
-    for (const name of Object.getOwnPropertyNames(this)) {
-      if (name === "extras" || name === "color") {
-        continue;
-      }
-
-      const obj = this[name];
-
-      if (!(obj instanceof _xfa_object.XFAObject)) {
-        continue;
-      }
-
-      return {
-        color: obj[_xfa_object.$toStyle](this.color)
-      };
-    }
-
-    return {
-      color: this.color ? this.color[_xfa_object.$toStyle]() : "#000000"
-    };
-  }
-
-}
-
-class Filter extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "filter", true);
-    this.addRevocationInfo = (0, _utils.getStringOption)(attributes.addRevocationInfo, ["", "required", 
"optional", "none"]);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.version = (0, _utils.getInteger)({
-      data: this.version,
-      defaultValue: 5,
-      validate: x => x >= 1 && x <= 5
-    });
-    this.appearanceFilter = null;
-    this.certificates = null;
-    this.digestMethods = null;
-    this.encodings = null;
-    this.encryptionMethods = null;
-    this.handler = null;
-    this.lockDocument = null;
-    this.mdp = null;
-    this.reasons = null;
-    this.timeStamp = null;
-  }
-
-}
-
-class Float extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "float");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    const number = parseFloat(this[_xfa_object.$content].trim());
-    this[_xfa_object.$content] = isNaN(number) ? null : number;
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "";
-  }
-
-}
-
-class Font extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "font", true);
-    this.baselineShift = (0, _utils.getMeasurement)(attributes.baselineShift);
-    this.fontHorizontalScale = (0, _utils.getFloat)({
-      data: attributes.fontHorizontalScale,
-      defaultValue: 100,
-      validate: x => x >= 0
-    });
-    this.fontVerticalScale = (0, _utils.getFloat)({
-      data: attributes.fontVerticalScale,
-      defaultValue: 100,
-      validate: x => x >= 0
-    });
-    this.id = attributes.id || "";
-    this.kerningMode = (0, _utils.getStringOption)(attributes.kerningMode, ["none", "pair"]);
-    this.letterSpacing = (0, _utils.getMeasurement)(attributes.letterSpacing, "0");
-    this.lineThrough = (0, _utils.getInteger)({
-      data: attributes.lineThrough,
-      defaultValue: 0,
-      validate: x => x === 1 || x === 2
-    });
-    this.lineThroughPeriod = (0, _utils.getStringOption)(attributes.lineThroughPeriod, ["all", "word"]);
-    this.overline = (0, _utils.getInteger)({
-      data: attributes.overline,
-      defaultValue: 0,
-      validate: x => x === 1 || x === 2
-    });
-    this.overlinePeriod = (0, _utils.getStringOption)(attributes.overlinePeriod, ["all", "word"]);
-    this.posture = (0, _utils.getStringOption)(attributes.posture, ["normal", "italic"]);
-    this.size = (0, _utils.getMeasurement)(attributes.size, "10pt");
-    this.typeface = attributes.typeface || "";
-    this.underline = (0, _utils.getInteger)({
-      data: attributes.underline,
-      defaultValue: 0,
-      validate: x => x === 1 || x === 2
-    });
-    this.underlinePeriod = (0, _utils.getStringOption)(attributes.underlinePeriod, ["all", "word"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.weight = (0, _utils.getStringOption)(attributes.weight, ["normal", "bold"]);
-    this.extras = null;
-    this.fill = null;
-  }
-
-  [_xfa_object.$toStyle]() {
-    const style = (0, _html_utils.toStyle)(this, "fill");
-
-    if (style.color) {
-      if (!style.color.startsWith("#")) {
-        style.backgroundClip = "text";
-        style.background = style.color;
-        style.color = "transparent";
-      } else if (style.color === "#000000") {
-        delete style.color;
-      }
-    }
-
-    if (this.baselineShift) {
-      style.verticalAlign = (0, _html_utils.measureToString)(this.baselineShift);
-    }
-
-    if (this.kerningMode !== "none") {
-      style.fontKerning = "normal";
-    }
-
-    if (this.letterSpacing) {
-      style.letterSpacing = (0, _html_utils.measureToString)(this.letterSpacing);
-    }
-
-    if (this.lineThrough !== 0) {
-      style.textDecoration = "line-through";
-
-      if (this.lineThrough === 2) {
-        style.textDecorationStyle = "double";
-      }
-    }
-
-    if (this.overline !== 0) {
-      style.textDecoration = "overline";
-
-      if (this.overline === 2) {
-        style.textDecorationStyle = "double";
-      }
-    }
-
-    if (this.posture !== "normal") {
-      style.fontStyle = this.posture;
-    }
-
-    const fontSize = (0, _html_utils.measureToString)(this.size);
-
-    if (fontSize !== "10px") {
-      style.fontSize = fontSize;
-    }
-
-    style.fontFamily = this.typeface;
-
-    if (this.underline !== 0) {
-      style.textDecoration = "underline";
-
-      if (this.underline === 2) {
-        style.textDecorationStyle = "double";
-      }
-    }
-
-    if (this.weight !== "normal") {
-      style.fontWeight = this.weight;
-    }
-
-    return style;
-  }
-
-}
-
-class Format extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "format", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.picture = null;
-  }
-
-}
-
-class Handler extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "handler");
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Hyphenation extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "hyphenation");
-    this.excludeAllCaps = (0, _utils.getInteger)({
-      data: attributes.excludeAllCaps,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.excludeInitialCap = (0, _utils.getInteger)({
-      data: attributes.excludeInitialCap,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.hyphenate = (0, _utils.getInteger)({
-      data: attributes.hyphenate,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.id = attributes.id || "";
-    this.pushCharacterCount = (0, _utils.getInteger)({
-      data: attributes.pushCharacterCount,
-      defaultValue: 3,
-      validate: x => x >= 0
-    });
-    this.remainCharacterCount = (0, _utils.getInteger)({
-      data: attributes.remainCharacterCount,
-      defaultValue: 3,
-      validate: x => x >= 0
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.wordCharacterCount = (0, _utils.getInteger)({
-      data: attributes.wordCharacterCount,
-      defaultValue: 7,
-      validate: x => x >= 0
-    });
-  }
-
-}
-
-class Image extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "image");
-    this.aspect = (0, _utils.getStringOption)(attributes.aspect, ["fit", "actual", "height", "none", 
"width"]);
-    this.contentType = attributes.contentType || "";
-    this.href = attributes.href || "";
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.transferEncoding = (0, _utils.getStringOption)(attributes.transferEncoding, ["base64", "none", 
"package"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$toHTML]() {
-    const html = {
-      name: "img",
-      attributes: {
-        style: {}
-      }
-    };
-
-    if (this.href) {
-      html.attributes.src = new URL(this.href);
-      return html;
-    }
-
-    if (this.transferEncoding === "base64") {
-      const buffer = Uint8Array.from(atob(this[_xfa_object.$content]), c => c.charCodeAt(0));
-      const blob = new Blob([buffer], {
-        type: this.contentType
-      });
-      html.attributes.src = URL.createObjectURL(blob);
-      return html;
-    }
-
-    return null;
-  }
-
-}
-
-class ImageEdit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "imageEdit", true);
-    this.data = (0, _utils.getStringOption)(attributes.data, ["link", "embed"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-}
-
-class Integer extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "integer");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    const number = parseInt(this[_xfa_object.$content].trim(), 10);
-    this[_xfa_object.$content] = isNaN(number) ? null : number;
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content] !== null ? this[_xfa_object.$content].toString() : "";
-  }
-
-}
-
-class Issuers extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "issuers", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.certificate = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Items extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "items", true);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.ref = attributes.ref || "";
-    this.save = (0, _utils.getInteger)({
-      data: attributes.save,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$hasItem](value) {
-    return this.hasOwnProperty(value[_xfa_object.$nodeName]) && 
this[value[_xfa_object.$nodeName]].children.some(node => node[_xfa_object.$content] === 
value[_xfa_object.$content]);
-  }
-
-}
-
-exports.Items = Items;
-
-class Keep extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "keep", true);
-    this.id = attributes.id || "";
-    const options = ["none", "contentArea", "pageArea"];
-    this.intact = (0, _utils.getStringOption)(attributes.intact, options);
-    this.next = (0, _utils.getStringOption)(attributes.next, options);
-    this.previous = (0, _utils.getStringOption)(attributes.previous, options);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-}
-
-class KeyUsage extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "keyUsage");
-    const options = ["", "yes", "no"];
-    this.crlSign = (0, _utils.getStringOption)(attributes.crlSign, options);
-    this.dataEncipherment = (0, _utils.getStringOption)(attributes.dataEncipherment, options);
-    this.decipherOnly = (0, _utils.getStringOption)(attributes.decipherOnly, options);
-    this.digitalSignature = (0, _utils.getStringOption)(attributes.digitalSignature, options);
-    this.encipherOnly = (0, _utils.getStringOption)(attributes.encipherOnly, options);
-    this.id = attributes.id || "";
-    this.keyAgreement = (0, _utils.getStringOption)(attributes.keyAgreement, options);
-    this.keyCertSign = (0, _utils.getStringOption)(attributes.keyCertSign, options);
-    this.keyEncipherment = (0, _utils.getStringOption)(attributes.keyEncipherment, options);
-    this.nonRepudiation = (0, _utils.getStringOption)(attributes.nonRepudiation, options);
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Line extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "line", true);
-    this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]);
-    this.id = attributes.id || "";
-    this.slope = (0, _utils.getStringOption)(attributes.slope, ["\\", "/"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.edge = null;
-  }
-
-}
-
-class Linear extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "linear", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["toRight", "toBottom", "toLeft", "toTop"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle](startColor) {
-    startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF";
-    const transf = this.type.replace(/([RBLT])/, " $1").toLowerCase();
-    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000";
-    return `linear-gradient(${transf}, ${startColor}, ${endColor})`;
-  }
-
-}
-
-class LockDocument extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "lockDocument");
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = (0, _utils.getStringOption)(this[_xfa_object.$content], ["auto", "0", "1"]);
-  }
-
-}
-
-class Manifest extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "manifest", true);
-    this.action = (0, _utils.getStringOption)(attributes.action, ["include", "all", "exclude"]);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.ref = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Margin extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "margin", true);
-    this.bottomInset = (0, _utils.getMeasurement)(attributes.bottomInset, "0");
-    this.id = attributes.id || "";
-    this.leftInset = (0, _utils.getMeasurement)(attributes.leftInset, "0");
-    this.rightInset = (0, _utils.getMeasurement)(attributes.rightInset, "0");
-    this.topInset = (0, _utils.getMeasurement)(attributes.topInset, "0");
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle]() {
-    return {
-      marginLeft: (0, _html_utils.measureToString)(this.leftInset),
-      marginRight: (0, _html_utils.measureToString)(this.rightInset),
-      marginTop: (0, _html_utils.measureToString)(this.topInset),
-      marginBottom: (0, _html_utils.measureToString)(this.bottomInset)
-    };
-  }
-
-}
-
-class Mdp extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "mdp");
-    this.id = attributes.id || "";
-    this.permissions = (0, _utils.getInteger)({
-      data: attributes.permissions,
-      defaultValue: 2,
-      validate: x => x === 1 || x === 3
-    });
-    this.signatureType = (0, _utils.getStringOption)(attributes.signatureType, ["filler", "author"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Medium extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "medium");
-    this.id = attributes.id || "";
-    this.imagingBBox = (0, _utils.getBBox)(attributes.imagingBBox);
-    this.long = (0, _utils.getMeasurement)(attributes.long);
-    this.orientation = (0, _utils.getStringOption)(attributes.orientation, ["portrait", "landscape"]);
-    this.short = (0, _utils.getMeasurement)(attributes.short);
-    this.stock = attributes.stock || "";
-    this.trayIn = (0, _utils.getStringOption)(attributes.trayIn, ["auto", "delegate", "pageFront"]);
-    this.trayOut = (0, _utils.getStringOption)(attributes.trayOut, ["auto", "delegate"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Message extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "message", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.text = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class NumericEdit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "numericEdit", true);
-    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.comb = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
-    const html = {
-      name: "input",
-      attributes: {
-        type: "text",
-        class: "xfaTextfield",
-        style
-      }
-    };
-    return {
-      name: "label",
-      attributes: {
-        class: "xfaLabel"
-      },
-      children: [html]
-    };
-  }
-
-}
-
-class Occur extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "occur", true);
-    this.id = attributes.id || "";
-    this.initial = (0, _utils.getInteger)({
-      data: attributes.initial,
-      defaultValue: 1,
-      validate: x => true
-    });
-    this.max = (0, _utils.getInteger)({
-      data: attributes.max,
-      defaultValue: 1,
-      validate: x => true
-    });
-    this.min = (0, _utils.getInteger)({
-      data: attributes.min,
-      defaultValue: 1,
-      validate: x => true
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-}
-
-class Oid extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "oid");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Oids extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "oids", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.oid = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Overflow extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "overflow");
-    this.id = attributes.id || "";
-    this.leader = attributes.leader || "";
-    this.target = attributes.target || "";
-    this.trailer = attributes.trailer || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class PageArea extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "pageArea", true);
-    this.blankOrNotBlank = (0, _utils.getStringOption)(attributes.blankOrNotBlank, ["any", "blank", 
"notBlank"]);
-    this.id = attributes.id || "";
-    this.initialNumber = (0, _utils.getInteger)({
-      data: attributes.initialNumber,
-      defaultValue: 1,
-      validate: x => true
-    });
-    this.name = attributes.name || "";
-    this.numbered = (0, _utils.getInteger)({
-      data: attributes.numbered,
-      defaultValue: 1,
-      validate: x => true
-    });
-    this.oddOrEven = (0, _utils.getStringOption)(attributes.oddOrEven, ["any", "even", "odd"]);
-    this.pagePosition = (0, _utils.getStringOption)(attributes.pagePosition, ["any", "first", "last", 
"only", "rest"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.desc = null;
-    this.extras = null;
-    this.medium = null;
-    this.occur = null;
-    this.area = new _xfa_object.XFAObjectArray();
-    this.contentArea = new _xfa_object.XFAObjectArray();
-    this.draw = new _xfa_object.XFAObjectArray();
-    this.exclGroup = new _xfa_object.XFAObjectArray();
-    this.field = new _xfa_object.XFAObjectArray();
-    this.subform = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (this.contentArea.children.length === 0) {
-      return null;
-    }
-
-    const children = this[_xfa_object.$childrenToHTML]({
-      filter: new Set(["area", "draw", "field", "subform", "contentArea"]),
-      include: true
-    });
-
-    const contentArea = children.find(node => node.attributes.class === "xfaContentarea");
-    const style = Object.create(null);
-
-    if (this.medium && this.medium.short && this.medium.long) {
-      style.width = (0, _html_utils.measureToString)(this.medium.short);
-      style.height = (0, _html_utils.measureToString)(this.medium.long);
-    } else {}
-
-    return {
-      name: "div",
-      children,
-      attributes: {
-        id: this[_xfa_object.$uid],
-        style
-      },
-      contentArea
-    };
-  }
-
-}
-
-class PageSet extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "pageSet", true);
-    this.duplexImposition = (0, _utils.getStringOption)(attributes.duplexImposition, ["longEdge", 
"shortEdge"]);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.relation = (0, _utils.getStringOption)(attributes.relation, ["orderedOccurrence", 
"duplexPaginated", "simplexPaginated"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.occur = null;
-    this.pageArea = new _xfa_object.XFAObjectArray();
-    this.pageSet = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$toHTML]() {
-    return {
-      name: "div",
-      children: this[_xfa_object.$childrenToHTML]({
-        filter: new Set(["pageArea", "pageSet"]),
-        include: true
-      }),
-      attributes: {
-        id: this[_xfa_object.$uid]
-      }
-    };
-  }
-
-}
-
-class Para extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "para", true);
-    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", 
"radix", "right"]);
-    this.id = attributes.id || "";
-    this.lineHeight = (0, _utils.getMeasurement)(attributes.lineHeight, "0pt");
-    this.marginLeft = (0, _utils.getMeasurement)(attributes.marginLeft, "0");
-    this.marginRight = (0, _utils.getMeasurement)(attributes.marginRight, "0");
-    this.orphans = (0, _utils.getInteger)({
-      data: attributes.orphans,
-      defaultValue: 0,
-      validate: x => x >= 0
-    });
-    this.preserve = attributes.preserve || "";
-    this.radixOffset = (0, _utils.getMeasurement)(attributes.radixOffset, "0");
-    this.spaceAbove = (0, _utils.getMeasurement)(attributes.spaceAbove, "0");
-    this.spaceBelow = (0, _utils.getMeasurement)(attributes.spaceBelow, "0");
-    this.tabDefault = attributes.tabDefault ? (0, _utils.getMeasurement)(this.tabDefault) : null;
-    this.tabStops = (attributes.tabStops || "").trim().split(/\s+/).map((x, i) => i % 2 === 1 ? (0, 
_utils.getMeasurement)(x) : x);
-    this.textIndent = (0, _utils.getMeasurement)(attributes.textIndent, "0");
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.vAlign = (0, _utils.getStringOption)(attributes.vAlign, ["top", "bottom", "middle"]);
-    this.widows = (0, _utils.getInteger)({
-      data: attributes.widows,
-      defaultValue: 0,
-      validate: x => x >= 0
-    });
-    this.hyphenation = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = {
-      marginLeft: (0, _html_utils.measureToString)(this.marginLeft),
-      marginRight: (0, _html_utils.measureToString)(this.marginRight),
-      paddingTop: (0, _html_utils.measureToString)(this.spaceAbove),
-      paddingBottom: (0, _html_utils.measureToString)(this.spaceBelow),
-      textIndent: (0, _html_utils.measureToString)(this.textIndent),
-      verticalAlign: this.vAlign
-    };
-
-    if (this.lineHeight.value >= 0) {
-      style.lineHeight = (0, _html_utils.measureToString)(this.lineHeight);
-    }
-
-    if (this.tabDefault) {
-      style.tabSize = (0, _html_utils.measureToString)(this.tabDefault);
-    }
-
-    if (this.tabStops.length > 0) {}
-
-    if (this.hyphenatation) {
-      Object.assign(style, this.hyphenatation[_xfa_object.$toHTML]());
-    }
-
-    return style;
-  }
-
-}
-
-class PasswordEdit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "passwordEdit", true);
-    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
-    this.id = attributes.id || "";
-    this.passwordChar = attributes.passwordChar || "*";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-}
-
-class Pattern extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "pattern", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["crossHatch", "crossDiagonal", "diagonalLeft", 
"diagonalRight", "horizontal", "vertical"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle](startColor) {
-    startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF";
-    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000";
-    const width = 5;
-    const cmd = "repeating-linear-gradient";
-    const colors = `${startColor},${startColor} ${width}px,${endColor} ${width}px,${endColor} ${2 * 
width}px`;
-
-    switch (this.type) {
-      case "crossHatch":
-        return `${cmd}(to top,${colors}) ${cmd}(to right,${colors})`;
-
-      case "crossDiagonal":
-        return `${cmd}(45deg,${colors}) ${cmd}(-45deg,${colors})`;
-
-      case "diagonalLeft":
-        return `${cmd}(45deg,${colors})`;
-
-      case "diagonalRight":
-        return `${cmd}(-45deg,${colors})`;
-
-      case "horizontal":
-        return `${cmd}(to top,${colors})`;
-
-      case "vertical":
-        return `${cmd}(to right,${colors})`;
-    }
-
-    return "";
-  }
-
-}
-
-class Picture extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "picture");
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Proto extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "proto", true);
-    this.appearanceFilter = new _xfa_object.XFAObjectArray();
-    this.arc = new _xfa_object.XFAObjectArray();
-    this.area = new _xfa_object.XFAObjectArray();
-    this.assist = new _xfa_object.XFAObjectArray();
-    this.barcode = new _xfa_object.XFAObjectArray();
-    this.bindItems = new _xfa_object.XFAObjectArray();
-    this.bookend = new _xfa_object.XFAObjectArray();
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.border = new _xfa_object.XFAObjectArray();
-    this.break = new _xfa_object.XFAObjectArray();
-    this.breakAfter = new _xfa_object.XFAObjectArray();
-    this.breakBefore = new _xfa_object.XFAObjectArray();
-    this.button = new _xfa_object.XFAObjectArray();
-    this.calculate = new _xfa_object.XFAObjectArray();
-    this.caption = new _xfa_object.XFAObjectArray();
-    this.certificate = new _xfa_object.XFAObjectArray();
-    this.certificates = new _xfa_object.XFAObjectArray();
-    this.checkButton = new _xfa_object.XFAObjectArray();
-    this.choiceList = new _xfa_object.XFAObjectArray();
-    this.color = new _xfa_object.XFAObjectArray();
-    this.comb = new _xfa_object.XFAObjectArray();
-    this.connect = new _xfa_object.XFAObjectArray();
-    this.contentArea = new _xfa_object.XFAObjectArray();
-    this.corner = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.dateTimeEdit = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.defaultUi = new _xfa_object.XFAObjectArray();
-    this.desc = new _xfa_object.XFAObjectArray();
-    this.digestMethod = new _xfa_object.XFAObjectArray();
-    this.digestMethods = new _xfa_object.XFAObjectArray();
-    this.draw = new _xfa_object.XFAObjectArray();
-    this.edge = new _xfa_object.XFAObjectArray();
-    this.encoding = new _xfa_object.XFAObjectArray();
-    this.encodings = new _xfa_object.XFAObjectArray();
-    this.encrypt = new _xfa_object.XFAObjectArray();
-    this.encryptData = new _xfa_object.XFAObjectArray();
-    this.encryption = new _xfa_object.XFAObjectArray();
-    this.encryptionMethod = new _xfa_object.XFAObjectArray();
-    this.encryptionMethods = new _xfa_object.XFAObjectArray();
-    this.event = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.exObject = new _xfa_object.XFAObjectArray();
-    this.exclGroup = new _xfa_object.XFAObjectArray();
-    this.execute = new _xfa_object.XFAObjectArray();
-    this.extras = new _xfa_object.XFAObjectArray();
-    this.field = new _xfa_object.XFAObjectArray();
-    this.fill = new _xfa_object.XFAObjectArray();
-    this.filter = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.font = new _xfa_object.XFAObjectArray();
-    this.format = new _xfa_object.XFAObjectArray();
-    this.handler = new _xfa_object.XFAObjectArray();
-    this.hyphenation = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.imageEdit = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.issuers = new _xfa_object.XFAObjectArray();
-    this.items = new _xfa_object.XFAObjectArray();
-    this.keep = new _xfa_object.XFAObjectArray();
-    this.keyUsage = new _xfa_object.XFAObjectArray();
-    this.line = new _xfa_object.XFAObjectArray();
-    this.linear = new _xfa_object.XFAObjectArray();
-    this.lockDocument = new _xfa_object.XFAObjectArray();
-    this.manifest = new _xfa_object.XFAObjectArray();
-    this.margin = new _xfa_object.XFAObjectArray();
-    this.mdp = new _xfa_object.XFAObjectArray();
-    this.medium = new _xfa_object.XFAObjectArray();
-    this.message = new _xfa_object.XFAObjectArray();
-    this.numericEdit = new _xfa_object.XFAObjectArray();
-    this.occur = new _xfa_object.XFAObjectArray();
-    this.oid = new _xfa_object.XFAObjectArray();
-    this.oids = new _xfa_object.XFAObjectArray();
-    this.overflow = new _xfa_object.XFAObjectArray();
-    this.pageArea = new _xfa_object.XFAObjectArray();
-    this.pageSet = new _xfa_object.XFAObjectArray();
-    this.para = new _xfa_object.XFAObjectArray();
-    this.passwordEdit = new _xfa_object.XFAObjectArray();
-    this.pattern = new _xfa_object.XFAObjectArray();
-    this.picture = new _xfa_object.XFAObjectArray();
-    this.radial = new _xfa_object.XFAObjectArray();
-    this.reason = new _xfa_object.XFAObjectArray();
-    this.reasons = new _xfa_object.XFAObjectArray();
-    this.rectangle = new _xfa_object.XFAObjectArray();
-    this.ref = new _xfa_object.XFAObjectArray();
-    this.script = new _xfa_object.XFAObjectArray();
-    this.setProperty = new _xfa_object.XFAObjectArray();
-    this.signData = new _xfa_object.XFAObjectArray();
-    this.signature = new _xfa_object.XFAObjectArray();
-    this.signing = new _xfa_object.XFAObjectArray();
-    this.solid = new _xfa_object.XFAObjectArray();
-    this.speak = new _xfa_object.XFAObjectArray();
-    this.stipple = new _xfa_object.XFAObjectArray();
-    this.subform = new _xfa_object.XFAObjectArray();
-    this.subformSet = new _xfa_object.XFAObjectArray();
-    this.subjectDN = new _xfa_object.XFAObjectArray();
-    this.subjectDNs = new _xfa_object.XFAObjectArray();
-    this.submit = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.textEdit = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-    this.timeStamp = new _xfa_object.XFAObjectArray();
-    this.toolTip = new _xfa_object.XFAObjectArray();
-    this.traversal = new _xfa_object.XFAObjectArray();
-    this.traverse = new _xfa_object.XFAObjectArray();
-    this.ui = new _xfa_object.XFAObjectArray();
-    this.validate = new _xfa_object.XFAObjectArray();
-    this.value = new _xfa_object.XFAObjectArray();
-    this.variables = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Radial extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "radial", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["toEdge", "toCenter"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle](startColor) {
-    startColor = startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF";
-    const endColor = this.color ? this.color[_xfa_object.$toStyle]() : "#000000";
-    const colors = this.type === "toEdge" ? `${startColor},${endColor}` : `${endColor},${startColor}`;
-    return `radial-gradient(circle to center, ${colors})`;
-  }
-
-}
-
-class Reason extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "reason");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Reasons extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "reasons", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.reason = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Rectangle extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "rectangle", true);
-    this.hand = (0, _utils.getStringOption)(attributes.hand, ["even", "left", "right"]);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.corner = new _xfa_object.XFAObjectArray(4);
-    this.edge = new _xfa_object.XFAObjectArray(4);
-    this.fill = null;
-  }
-
-}
-
-class RefElement extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "ref");
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Script extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "script");
-    this.binding = attributes.binding || "";
-    this.contentType = attributes.contentType || "";
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.runAt = (0, _utils.getStringOption)(attributes.runAt, ["client", "both", "server"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class SetProperty extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "setProperty");
-    this.connection = attributes.connection || "";
-    this.ref = attributes.ref || "";
-    this.target = attributes.target || "";
-  }
-
-}
-
-exports.SetProperty = SetProperty;
-
-class SignData extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "signData", true);
-    this.id = attributes.id || "";
-    this.operation = (0, _utils.getStringOption)(attributes.operation, ["sign", "clear", "verify"]);
-    this.ref = attributes.ref || "";
-    this.target = attributes.target || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.filter = null;
-    this.manifest = null;
-  }
-
-}
-
-class Signature extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "signature", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["PDF1.3", "PDF1.6"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.border = null;
-    this.extras = null;
-    this.filter = null;
-    this.manifest = null;
-    this.margin = null;
-  }
-
-}
-
-class Signing extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "signing", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.certificate = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Solid extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "solid", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle](startColor) {
-    return startColor ? startColor[_xfa_object.$toStyle]() : "#FFFFFF";
-  }
-
-}
-
-class Speak extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "speak");
-    this.disable = (0, _utils.getInteger)({
-      data: attributes.disable,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.id = attributes.id || "";
-    this.priority = (0, _utils.getStringOption)(attributes.priority, ["custom", "caption", "name", 
"toolTip"]);
-    this.rid = attributes.rid || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Stipple extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "stipple", true);
-    this.id = attributes.id || "";
-    this.rate = (0, _utils.getInteger)({
-      data: attributes.rate,
-      defaultValue: 50,
-      validate: x => x >= 0 && x <= 100
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.color = null;
-    this.extras = null;
-  }
-
-  [_xfa_object.$toStyle](bgColor) {
-    const alpha = this.rate / 100;
-    return _util.Util.makeHexColor(Math.round(bgColor.value.r * (1 - alpha) + this.value.r * alpha), 
Math.round(bgColor.value.g * (1 - alpha) + this.value.g * alpha), Math.round(bgColor.value.b * (1 - alpha) + 
this.value.b * alpha));
-  }
-
-}
-
-class Subform extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "subform", true);
-    this.access = (0, _utils.getStringOption)(attributes.access, ["open", "nonInteractive", "protected", 
"readOnly"]);
-    this.allowMacro = (0, _utils.getInteger)({
-      data: attributes.allowMacro,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.anchorType = (0, _utils.getStringOption)(attributes.anchorType, ["topLeft", "bottomCenter", 
"bottomLeft", "bottomRight", "middleCenter", "middleLeft", "middleRight", "topCenter", "topRight"]);
-    this.colSpan = (0, _utils.getInteger)({
-      data: attributes.colSpan,
-      defaultValue: 1,
-      validate: x => x >= 1
-    });
-    this.columnWidths = (attributes.columnWidths || "").trim().split(/\s+/).map(x => x === "-1" ? -1 : (0, 
_utils.getMeasurement)(x));
-    this.h = attributes.h ? (0, _utils.getMeasurement)(attributes.h) : "";
-    this.hAlign = (0, _utils.getStringOption)(attributes.hAlign, ["left", "center", "justify", "justifyAll", 
"radix", "right"]);
-    this.id = attributes.id || "";
-    this.layout = (0, _utils.getStringOption)(attributes.layout, ["position", "lr-tb", "rl-row", "rl-tb", 
"row", "table", "tb"]);
-    this.locale = attributes.locale || "";
-    this.maxH = (0, _utils.getMeasurement)(attributes.maxH, "0pt");
-    this.maxW = (0, _utils.getMeasurement)(attributes.maxW, "0pt");
-    this.mergeMode = (0, _utils.getStringOption)(attributes.mergeMode, ["consumeData", "matchTemplate"]);
-    this.minH = (0, _utils.getMeasurement)(attributes.minH, "0pt");
-    this.minW = (0, _utils.getMeasurement)(attributes.minW, "0pt");
-    this.name = attributes.name || "";
-    this.presence = (0, _utils.getStringOption)(attributes.presence, ["visible", "hidden", "inactive", 
"invisible"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.restoreState = (0, _utils.getStringOption)(attributes.restoreState, ["manual", "auto"]);
-    this.scope = (0, _utils.getStringOption)(attributes.scope, ["name", "none"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.w = attributes.w ? (0, _utils.getMeasurement)(attributes.w) : "";
-    this.x = (0, _utils.getMeasurement)(attributes.x, "0pt");
-    this.y = (0, _utils.getMeasurement)(attributes.y, "0pt");
-    this.assist = null;
-    this.bind = null;
-    this.bookend = null;
-    this.border = null;
-    this.break = null;
-    this.calculate = null;
-    this.desc = null;
-    this.extras = null;
-    this.keep = null;
-    this.margin = null;
-    this.occur = null;
-    this.overflow = null;
-    this.pageSet = null;
-    this.para = null;
-    this.traversal = null;
-    this.validate = null;
-    this.variables = null;
-    this.area = new _xfa_object.XFAObjectArray();
-    this.breakAfter = new _xfa_object.XFAObjectArray();
-    this.breakBefore = new _xfa_object.XFAObjectArray();
-    this.connect = new _xfa_object.XFAObjectArray();
-    this.draw = new _xfa_object.XFAObjectArray();
-    this.event = new _xfa_object.XFAObjectArray();
-    this.exObject = new _xfa_object.XFAObjectArray();
-    this.exclGroup = new _xfa_object.XFAObjectArray();
-    this.field = new _xfa_object.XFAObjectArray();
-    this.proto = new _xfa_object.XFAObjectArray();
-    this.setProperty = new _xfa_object.XFAObjectArray();
-    this.subform = new _xfa_object.XFAObjectArray();
-    this.subformSet = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$toHTML]() {
-    this[_xfa_object.$extra] = Object.create(null);
-
-    const parent = this[_xfa_object.$getParent]();
-
-    let page = null;
-
-    if (parent[_xfa_object.$nodeName] === "template") {
-      if (this.pageSet !== null) {
-        this[_xfa_object.$extra].pageNumber = 0;
-      } else {
-        (0, _util.warn)("XFA - No pageSet in root subform");
-      }
-    } else if (parent[_xfa_object.$extra] && parent[_xfa_object.$extra].pageNumber !== undefined) {
-      const pageNumber = parent[_xfa_object.$extra].pageNumber;
-      const pageAreas = parent.pageSet.pageArea.children;
-      parent[_xfa_object.$extra].pageNumber = (parent[_xfa_object.$extra].pageNumber + 1) % pageAreas.length;
-      page = pageAreas[pageNumber][_xfa_object.$toHTML]();
-    }
-
-    const style = (0, _html_utils.toStyle)(this, "dimensions", "position", "presence");
-    const clazz = ["xfaSubform"];
-    const cl = (0, _html_utils.layoutClass)(this);
-
-    if (cl) {
-      clazz.push(cl);
-    }
-
-    const attributes = {
-      style,
-      id: this[_xfa_object.$uid],
-      class: clazz.join(" ")
-    };
-
-    if (this.name) {
-      attributes.xfaName = this.name;
-    }
-
-    const children = this[_xfa_object.$childrenToHTML]({
-      filter: new Set(["area", "draw", "field", "subform", "subformSet"]),
-      include: true
-    });
-
-    const html = {
-      name: "div",
-      attributes,
-      children
-    };
-
-    if (page) {
-      page.contentArea.children.push(html);
-      delete page.contentArea;
-      return page;
-    }
-
-    return html;
-  }
-
-}
-
-class SubformSet extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "subformSet", true);
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.relation = (0, _utils.getStringOption)(attributes.relation, ["ordered", "choice", "unordered"]);
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.bookend = null;
-    this.break = null;
-    this.desc = null;
-    this.extras = null;
-    this.occur = null;
-    this.overflow = null;
-    this.breakAfter = new _xfa_object.XFAObjectArray();
-    this.breakBefore = new _xfa_object.XFAObjectArray();
-    this.subform = new _xfa_object.XFAObjectArray();
-    this.subformSet = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class SubjectDN extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "subjectDN");
-    this.delimiter = attributes.delimiter || ",";
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].split(this.delimiter).map(kv => {
-      kv = kv.split("=", 2);
-      kv[0] = kv[0].trim();
-      return kv;
-    }));
-  }
-
-}
-
-class SubjectDNs extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "subjectDNs", true);
-    this.id = attributes.id || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.subjectDN = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Submit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "submit", true);
-    this.embedPDF = (0, _utils.getInteger)({
-      data: attributes.embedPDF,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.format = (0, _utils.getStringOption)(attributes.format, ["xdp", "formdata", "pdf", "urlencoded", 
"xfd", "xml"]);
-    this.id = attributes.id || "";
-    this.target = attributes.target || "";
-    this.textEncoding = (0, _utils.getKeyword)({
-      data: attributes.textEncoding ? attributes.textEncoding.toLowerCase() : "",
-      defaultValue: "",
-      validate: k => ["utf-8", "big-five", "fontspecific", "gbk", "gb-18030", "gb-2312", "ksc-5601", "none", 
"shift-jis", "ucs-2", "utf-16"].includes(k) || k.match(/iso-8859-[0-9]{2}/)
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.xdpContent = attributes.xdpContent || "";
-    this.encrypt = null;
-    this.encryptData = new _xfa_object.XFAObjectArray();
-    this.signData = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Template extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "template", true);
-    this.baseProfile = (0, _utils.getStringOption)(attributes.baseProfile, ["full", "interactiveForms"]);
-    this.extras = null;
-    this.subform = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$finalize]() {
-    if (this.subform.children.length === 0) {
-      (0, _util.warn)("XFA - No subforms in template node.");
-    }
-
-    if (this.subform.children.length >= 2) {
-      (0, _util.warn)("XFA - Several subforms in template node: please file a bug.");
-    }
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (this.subform.children.length > 0) {
-      return this.subform.children[0][_xfa_object.$toHTML]();
-    }
-
-    return {
-      name: "div",
-      children: []
-    };
-  }
-
-}
-
-exports.Template = Template;
-
-class Text extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "text");
-    this.id = attributes.id || "";
-    this.maxChars = (0, _utils.getInteger)({
-      data: attributes.maxChars,
-      defaultValue: 0,
-      validate: x => x >= 0
-    });
-    this.name = attributes.name || "";
-    this.rid = attributes.rid || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$onChild](child) {
-    if (child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.xhtml.id) {
-      this[_xfa_object.$content] = child;
-      return true;
-    }
-
-    (0, _util.warn)(`XFA - Invalid content in Text: ${child[_xfa_object.$nodeName]}.`);
-    return false;
-  }
-
-  [_xfa_object.$toHTML]() {
-    if (typeof this[_xfa_object.$content] === "string") {
-      return this[_xfa_object.$content];
-    }
-
-    return this[_xfa_object.$content][_xfa_object.$toHTML]();
-  }
-
-}
-
-exports.Text = Text;
-
-class TextEdit extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "textEdit", true);
-    this.allowRichText = (0, _utils.getInteger)({
-      data: attributes.allowRichText,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.hScrollPolicy = (0, _utils.getStringOption)(attributes.hScrollPolicy, ["auto", "off", "on"]);
-    this.id = attributes.id || "";
-    this.multiLine = (0, _utils.getInteger)({
-      data: attributes.multiLine,
-      defaultValue: 1,
-      validate: x => x === 0
-    });
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.vScrollPolicy = (0, _utils.getStringOption)(attributes.vScrollPolicy, ["auto", "off", "on"]);
-    this.border = null;
-    this.comb = null;
-    this.extras = null;
-    this.margin = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    const style = (0, _html_utils.toStyle)(this, "border", "font", "margin");
-    let html;
-
-    if (this.multiline === 1) {
-      html = {
-        name: "textarea",
-        attributes: {
-          style
-        }
-      };
-    } else {
-      html = {
-        name: "input",
-        attributes: {
-          type: "text",
-          class: "xfaTextfield",
-          style
-        }
-      };
-    }
-
-    return {
-      name: "label",
-      attributes: {
-        class: "xfaLabel"
-      },
-      children: [html]
-    };
-  }
-
-}
-
-class Time extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "time");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Date(this[_xfa_object.$content]);
-  }
-
-  [_xfa_object.$toHTML]() {
-    return this[_xfa_object.$content].toString();
-  }
-
-}
-
-class TimeStamp extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "timeStamp");
-    this.id = attributes.id || "";
-    this.server = attributes.server || "";
-    this.type = (0, _utils.getStringOption)(attributes.type, ["optional", "required"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class ToolTip extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "toolTip");
-    this.id = attributes.id || "";
-    this.rid = attributes.rid || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
-
-}
-
-class Traversal extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "traversal", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.traverse = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Traverse extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "traverse", true);
-    this.id = attributes.id || "";
-    this.operation = (0, _utils.getStringOption)(attributes.operation, ["next", "back", "down", "first", 
"left", "right", "up"]);
-    this.ref = attributes.ref || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.script = null;
-  }
-
-  get name() {
-    return this.operation;
-  }
-
-  [_xfa_object.$isTransparent]() {
-    return false;
-  }
-
-}
-
-class Ui extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "ui", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.picture = null;
-    this.barcode = null;
-    this.button = null;
-    this.checkButton = null;
-    this.choiceList = null;
-    this.dateTimeEdit = null;
-    this.defaultUi = null;
-    this.imageEdit = null;
-    this.numericEdit = null;
-    this.passwordEdit = null;
-    this.signature = null;
-    this.textEdit = null;
-  }
-
-  [_xfa_object.$toHTML]() {
-    for (const name of Object.getOwnPropertyNames(this)) {
-      if (name === "extras" || name === "picture") {
-        continue;
-      }
-
-      const obj = this[name];
-
-      if (!(obj instanceof _xfa_object.XFAObject)) {
-        continue;
-      }
-
-      return obj[_xfa_object.$toHTML]();
-    }
-
-    return null;
-  }
-
-}
-
-class Validate extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "validate", true);
-    this.formatTest = (0, _utils.getStringOption)(attributes.formatTest, ["warning", "disabled", "error"]);
-    this.id = attributes.id || "";
-    this.nullTest = (0, _utils.getStringOption)(attributes.nullTest, ["disabled", "error", "warning"]);
-    this.scriptTest = (0, _utils.getStringOption)(attributes.scriptTest, ["error", "disabled", "warning"]);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.extras = null;
-    this.message = null;
-    this.picture = null;
-    this.script = null;
-  }
-
-}
-
-class Value extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "value", true);
-    this.id = attributes.id || "";
-    this.override = (0, _utils.getInteger)({
-      data: attributes.override,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.relevant = (0, _utils.getRelevant)(attributes.relevant);
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.arc = null;
-    this.boolean = null;
-    this.date = null;
-    this.dateTime = null;
-    this.decimal = null;
-    this.exData = null;
-    this.float = null;
-    this.image = null;
-    this.integer = null;
-    this.line = null;
-    this.rectangle = null;
-    this.text = null;
-    this.time = null;
-  }
-
-  [_xfa_object.$setValue](value) {
-    const valueName = value[_xfa_object.$nodeName];
-
-    if (this[valueName] !== null) {
-      this[valueName][_xfa_object.$content] = value[_xfa_object.$content];
-      return;
-    }
-
-    for (const name of Object.getOwnPropertyNames(this)) {
-      const obj = this[name];
-
-      if (obj instanceof _xfa_object.XFAObject) {
-        this[name] = null;
-
-        this[_xfa_object.$removeChild](obj);
-      }
-    }
-
-    this[value[_xfa_object.$nodeName]] = value;
-
-    this[_xfa_object.$appendChild](value);
-  }
-
-  [_xfa_object.$toHTML]() {
-    for (const name of Object.getOwnPropertyNames(this)) {
-      const obj = this[name];
-
-      if (!(obj instanceof _xfa_object.XFAObject)) {
-        continue;
-      }
-
-      return obj[_xfa_object.$toHTML]();
-    }
-
-    return null;
-  }
-
-}
-
-exports.Value = Value;
-
-class Variables extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(TEMPLATE_NS_ID, "variables", true);
-    this.id = attributes.id || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-    this.boolean = new _xfa_object.XFAObjectArray();
-    this.date = new _xfa_object.XFAObjectArray();
-    this.dateTime = new _xfa_object.XFAObjectArray();
-    this.decimal = new _xfa_object.XFAObjectArray();
-    this.exData = new _xfa_object.XFAObjectArray();
-    this.float = new _xfa_object.XFAObjectArray();
-    this.image = new _xfa_object.XFAObjectArray();
-    this.integer = new _xfa_object.XFAObjectArray();
-    this.manifest = new _xfa_object.XFAObjectArray();
-    this.script = new _xfa_object.XFAObjectArray();
-    this.text = new _xfa_object.XFAObjectArray();
-    this.time = new _xfa_object.XFAObjectArray();
-  }
-
-  [_xfa_object.$isTransparent]() {
-    return true;
-  }
-
-}
-
-class TemplateNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (TemplateNamespace.hasOwnProperty(name)) {
-      const node = TemplateNamespace[name](attributes);
-
-      node[_xfa_object.$setSetAttributes](attributes);
-
-      return node;
-    }
-
-    return undefined;
-  }
-
-  static appearanceFilter(attrs) {
-    return new AppearanceFilter(attrs);
-  }
-
-  static arc(attrs) {
-    return new Arc(attrs);
-  }
-
-  static area(attrs) {
-    return new Area(attrs);
-  }
-
-  static assist(attrs) {
-    return new Assist(attrs);
-  }
-
-  static barcode(attrs) {
-    return new Barcode(attrs);
-  }
-
-  static bind(attrs) {
-    return new Bind(attrs);
-  }
-
-  static bindItems(attrs) {
-    return new BindItems(attrs);
-  }
-
-  static bookend(attrs) {
-    return new Bookend(attrs);
-  }
-
-  static boolean(attrs) {
-    return new BooleanElement(attrs);
-  }
-
-  static border(attrs) {
-    return new Border(attrs);
-  }
-
-  static break(attrs) {
-    return new Break(attrs);
-  }
-
-  static breakAfter(attrs) {
-    return new BreakAfter(attrs);
-  }
-
-  static breakBefore(attrs) {
-    return new BreakBefore(attrs);
-  }
-
-  static button(attrs) {
-    return new Button(attrs);
-  }
-
-  static calculate(attrs) {
-    return new Calculate(attrs);
-  }
-
-  static caption(attrs) {
-    return new Caption(attrs);
-  }
-
-  static certificate(attrs) {
-    return new Certificate(attrs);
-  }
-
-  static certificates(attrs) {
-    return new Certificates(attrs);
-  }
-
-  static checkButton(attrs) {
-    return new CheckButton(attrs);
-  }
-
-  static choiceList(attrs) {
-    return new ChoiceList(attrs);
-  }
-
-  static color(attrs) {
-    return new Color(attrs);
-  }
-
-  static comb(attrs) {
-    return new Comb(attrs);
-  }
-
-  static connect(attrs) {
-    return new Connect(attrs);
-  }
-
-  static contentArea(attrs) {
-    return new ContentArea(attrs);
-  }
-
-  static corner(attrs) {
-    return new Corner(attrs);
-  }
-
-  static date(attrs) {
-    return new DateElement(attrs);
-  }
-
-  static dateTime(attrs) {
-    return new DateTime(attrs);
-  }
-
-  static dateTimeEdit(attrs) {
-    return new DateTimeEdit(attrs);
-  }
-
-  static decimal(attrs) {
-    return new Decimal(attrs);
-  }
-
-  static defaultUi(attrs) {
-    return new DefaultUi(attrs);
-  }
-
-  static desc(attrs) {
-    return new Desc(attrs);
-  }
-
-  static digestMethod(attrs) {
-    return new DigestMethod(attrs);
-  }
-
-  static digestMethods(attrs) {
-    return new DigestMethods(attrs);
-  }
-
-  static draw(attrs) {
-    return new Draw(attrs);
-  }
-
-  static edge(attrs) {
-    return new Edge(attrs);
-  }
-
-  static encoding(attrs) {
-    return new Encoding(attrs);
-  }
-
-  static encodings(attrs) {
-    return new Encodings(attrs);
-  }
-
-  static encrypt(attrs) {
-    return new Encrypt(attrs);
-  }
-
-  static encryptData(attrs) {
-    return new EncryptData(attrs);
-  }
-
-  static encryption(attrs) {
-    return new Encryption(attrs);
-  }
-
-  static encryptionMethod(attrs) {
-    return new EncryptionMethod(attrs);
-  }
-
-  static encryptionMethods(attrs) {
-    return new EncryptionMethods(attrs);
-  }
-
-  static event(attrs) {
-    return new Event(attrs);
-  }
-
-  static exData(attrs) {
-    return new ExData(attrs);
-  }
-
-  static exObject(attrs) {
-    return new ExObject(attrs);
-  }
-
-  static exclGroup(attrs) {
-    return new ExclGroup(attrs);
-  }
-
-  static execute(attrs) {
-    return new Execute(attrs);
-  }
-
-  static extras(attrs) {
-    return new Extras(attrs);
-  }
-
-  static field(attrs) {
-    return new Field(attrs);
-  }
-
-  static fill(attrs) {
-    return new Fill(attrs);
-  }
-
-  static filter(attrs) {
-    return new Filter(attrs);
-  }
-
-  static float(attrs) {
-    return new Float(attrs);
-  }
-
-  static font(attrs) {
-    return new Font(attrs);
-  }
-
-  static format(attrs) {
-    return new Format(attrs);
-  }
-
-  static handler(attrs) {
-    return new Handler(attrs);
-  }
-
-  static hyphenation(attrs) {
-    return new Hyphenation(attrs);
-  }
-
-  static image(attrs) {
-    return new Image(attrs);
-  }
-
-  static imageEdit(attrs) {
-    return new ImageEdit(attrs);
-  }
-
-  static integer(attrs) {
-    return new Integer(attrs);
-  }
-
-  static issuers(attrs) {
-    return new Issuers(attrs);
-  }
-
-  static items(attrs) {
-    return new Items(attrs);
-  }
-
-  static keep(attrs) {
-    return new Keep(attrs);
-  }
-
-  static keyUsage(attrs) {
-    return new KeyUsage(attrs);
-  }
-
-  static line(attrs) {
-    return new Line(attrs);
-  }
-
-  static linear(attrs) {
-    return new Linear(attrs);
-  }
-
-  static lockDocument(attrs) {
-    return new LockDocument(attrs);
-  }
-
-  static manifest(attrs) {
-    return new Manifest(attrs);
-  }
-
-  static margin(attrs) {
-    return new Margin(attrs);
-  }
-
-  static mdp(attrs) {
-    return new Mdp(attrs);
-  }
-
-  static medium(attrs) {
-    return new Medium(attrs);
-  }
-
-  static message(attrs) {
-    return new Message(attrs);
-  }
-
-  static numericEdit(attrs) {
-    return new NumericEdit(attrs);
-  }
-
-  static occur(attrs) {
-    return new Occur(attrs);
-  }
-
-  static oid(attrs) {
-    return new Oid(attrs);
-  }
-
-  static oids(attrs) {
-    return new Oids(attrs);
-  }
-
-  static overflow(attrs) {
-    return new Overflow(attrs);
-  }
-
-  static pageArea(attrs) {
-    return new PageArea(attrs);
-  }
-
-  static pageSet(attrs) {
-    return new PageSet(attrs);
-  }
-
-  static para(attrs) {
-    return new Para(attrs);
-  }
-
-  static passwordEdit(attrs) {
-    return new PasswordEdit(attrs);
-  }
-
-  static pattern(attrs) {
-    return new Pattern(attrs);
-  }
-
-  static picture(attrs) {
-    return new Picture(attrs);
-  }
-
-  static proto(attrs) {
-    return new Proto(attrs);
-  }
-
-  static radial(attrs) {
-    return new Radial(attrs);
-  }
-
-  static reason(attrs) {
-    return new Reason(attrs);
-  }
-
-  static reasons(attrs) {
-    return new Reasons(attrs);
-  }
-
-  static rectangle(attrs) {
-    return new Rectangle(attrs);
-  }
-
-  static ref(attrs) {
-    return new RefElement(attrs);
-  }
-
-  static script(attrs) {
-    return new Script(attrs);
-  }
-
-  static setProperty(attrs) {
-    return new SetProperty(attrs);
-  }
-
-  static signData(attrs) {
-    return new SignData(attrs);
-  }
-
-  static signature(attrs) {
-    return new Signature(attrs);
-  }
-
-  static signing(attrs) {
-    return new Signing(attrs);
-  }
-
-  static solid(attrs) {
-    return new Solid(attrs);
-  }
-
-  static speak(attrs) {
-    return new Speak(attrs);
-  }
-
-  static stipple(attrs) {
-    return new Stipple(attrs);
-  }
-
-  static subform(attrs) {
-    return new Subform(attrs);
-  }
-
-  static subformSet(attrs) {
-    return new SubformSet(attrs);
-  }
-
-  static subjectDN(attrs) {
-    return new SubjectDN(attrs);
-  }
-
-  static subjectDNs(attrs) {
-    return new SubjectDNs(attrs);
-  }
-
-  static submit(attrs) {
-    return new Submit(attrs);
-  }
-
-  static template(attrs) {
-    return new Template(attrs);
-  }
-
-  static text(attrs) {
-    return new Text(attrs);
-  }
-
-  static textEdit(attrs) {
-    return new TextEdit(attrs);
-  }
-
-  static time(attrs) {
-    return new Time(attrs);
-  }
-
-  static timeStamp(attrs) {
-    return new TimeStamp(attrs);
-  }
-
-  static toolTip(attrs) {
-    return new ToolTip(attrs);
-  }
-
-  static traversal(attrs) {
-    return new Traversal(attrs);
-  }
-
-  static traverse(attrs) {
-    return new Traverse(attrs);
-  }
-
-  static ui(attrs) {
-    return new Ui(attrs);
-  }
-
-  static validate(attrs) {
-    return new Validate(attrs);
-  }
-
-  static value(attrs) {
-    return new Value(attrs);
-  }
-
-  static variables(attrs) {
-    return new Variables(attrs);
-  }
-
-}
-
-exports.TemplateNamespace = TemplateNamespace;
-
-/***/ }),
-/* 55 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.layoutClass = layoutClass;
-exports.measureToString = measureToString;
-exports.toStyle = toStyle;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _util = __w_pdfjs_require__(2);
-
-function measureToString(m) {
-  if (typeof m === "string") {
-    return "0px";
-  }
-
-  return Number.isInteger(m) ? `${m}px` : `${m.toFixed(2)}px`;
-}
-
-const converters = {
-  anchorType(node, style) {
-    if (!("transform" in style)) {
-      style.transform = "";
-    }
-
-    switch (node.anchorType) {
-      case "bottomCenter":
-        style.transform += "translate(-50%, -100%)";
-        break;
-
-      case "bottomLeft":
-        style.transform += "translate(0,-100%)";
-        break;
-
-      case "bottomRight":
-        style.transform += "translate(-100%,-100%)";
-        break;
-
-      case "middleCenter":
-        style.transform += "translate(-50%,-50%)";
-        break;
-
-      case "middleLeft":
-        style.transform += "translate(0,-50%)";
-        break;
-
-      case "middleRight":
-        style.transform += "translate(-100%,-50%)";
-        break;
-
-      case "topCenter":
-        style.transform += "translate(-50%,0)";
-        break;
-
-      case "topRight":
-        style.transform += "translate(-100%,0)";
-        break;
-    }
-  },
-
-  dimensions(node, style) {
-    if (node.w) {
-      style.width = measureToString(node.w);
-    } else {
-      style.width = "auto";
-
-      if (node.maxW > 0) {
-        style.maxWidth = measureToString(node.maxW);
-      }
-
-      style.minWidth = measureToString(node.minW);
-    }
-
-    if (node.h) {
-      style.height = measureToString(node.h);
-    } else {
-      style.height = "auto";
-
-      if (node.maxH > 0) {
-        style.maxHeight = measureToString(node.maxH);
-      }
-
-      style.minHeight = measureToString(node.minH);
-    }
-  },
-
-  position(node, style) {
-    const parent = node[_xfa_object.$getParent]();
-
-    if (parent && parent.layout && parent.layout !== "position") {
-      return;
-    }
-
-    style.position = "absolute";
-    style.left = measureToString(node.x);
-    style.top = measureToString(node.y);
-  },
-
-  rotate(node, style) {
-    if (node.rotate) {
-      if (!("transform" in style)) {
-        style.transform = "";
-      }
-
-      style.transform += `rotate(-${node.rotate}deg)`;
-      style.transformOrigin = "top left";
-    }
-  },
-
-  presence(node, style) {
-    switch (node.presence) {
-      case "invisible":
-        style.visibility = "hidden";
-        break;
-
-      case "hidden":
-      case "inactive":
-        style.display = "none";
-        break;
-    }
-  }
-
-};
-
-function layoutClass(node) {
-  switch (node.layout) {
-    case "position":
-      return "xfaPosition";
-
-    case "lr-tb":
-      return "xfaLrTb";
-
-    case "rl-row":
-      return "xfaRlRow";
-
-    case "rl-tb":
-      return "xfaRlTb";
-
-    case "row":
-      return "xfaRow";
-
-    case "table":
-      return "xfaTable";
-
-    case "tb":
-      return "xfaTb";
-
-    default:
-      return "xfaPosition";
-  }
-}
-
-function toStyle(node, ...names) {
-  const style = Object.create(null);
-
-  for (const name of names) {
-    const value = node[name];
-
-    if (value === null) {
-      continue;
-    }
-
-    if (value instanceof _xfa_object.XFAObject) {
-      const newStyle = value[_xfa_object.$toStyle]();
-
-      if (newStyle) {
-        Object.assign(style, newStyle);
-      } else {
-        (0, _util.warn)(`(DEBUG) - XFA - style for ${name} not implemented yet`);
-      }
-
-      continue;
-    }
-
-    if (converters.hasOwnProperty(name)) {
-      converters[name](node, style);
-    }
-  }
-
-  return style;
-}
-
-/***/ }),
-/* 56 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.createDataNode = createDataNode;
-exports.searchNode = searchNode;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _util = __w_pdfjs_require__(2);
-
-const namePattern = /^[^.[]+/;
-const indexPattern = /^[^\]]+/;
-const operators = {
-  dot: 0,
-  dotDot: 1,
-  dotHash: 2,
-  dotBracket: 3,
-  dotParen: 4
-};
-const shortcuts = new Map([["$data", (root, current) => root.datasets.data], ["$template", (root, current) 
=> root.template], ["$connectionSet", (root, current) => root.connectionSet], ["$form", (root, current) => 
root.form], ["$layout", (root, current) => root.layout], ["$host", (root, current) => root.host], 
["$dataWindow", (root, current) => root.dataWindow], ["$event", (root, current) => root.event], ["!", (root, 
current) => root.datasets], ["$xfa", (root, current) => root], ["xfa", (root, current) => root], ["$", (root, 
current) => current]]);
-const somCache = new WeakMap();
-
-function parseIndex(index) {
-  index = index.trim();
-
-  if (index === "*") {
-    return Infinity;
-  }
-
-  return parseInt(index, 10) || 0;
-}
-
-function parseExpression(expr, dotDotAllowed) {
-  let match = expr.match(namePattern);
-
-  if (!match) {
-    return null;
-  }
-
-  let [name] = match;
-  const parsed = [{
-    name,
-    cacheName: "." + name,
-    index: 0,
-    js: null,
-    formCalc: null,
-    operator: operators.dot
-  }];
-  let pos = name.length;
-
-  while (pos < expr.length) {
-    const spos = pos;
-    const char = expr.charAt(pos++);
-
-    if (char === "[") {
-      match = expr.slice(pos).match(indexPattern);
-
-      if (!match) {
-        (0, _util.warn)("XFA - Invalid index in SOM expression");
-        return null;
-      }
-
-      parsed[parsed.length - 1].index = parseIndex(match[0]);
-      pos += match[0].length + 1;
-      continue;
-    }
-
-    let operator;
-
-    switch (expr.charAt(pos)) {
-      case ".":
-        if (!dotDotAllowed) {
-          return null;
-        }
-
-        pos++;
-        operator = operators.dotDot;
-        break;
-
-      case "#":
-        pos++;
-        operator = operators.dotHash;
-        break;
-
-      case "[":
-        operator = operators.dotBracket;
-        break;
-
-      case "(":
-        operator = operators.dotParen;
-        break;
-
-      default:
-        operator = operators.dot;
-        break;
-    }
-
-    match = expr.slice(pos).match(namePattern);
-
-    if (!match) {
-      break;
-    }
-
-    [name] = match;
-    pos += name.length;
-    parsed.push({
-      name,
-      cacheName: expr.slice(spos, pos),
-      operator,
-      index: 0,
-      js: null,
-      formCalc: null
-    });
-  }
-
-  return parsed;
-}
-
-function searchNode(root, container, expr, dotDotAllowed = true, useCache = true) {
-  const parsed = parseExpression(expr, dotDotAllowed);
-
-  if (!parsed) {
-    return null;
-  }
-
-  const fn = shortcuts.get(parsed[0].name);
-  let i = 0;
-  let isQualified;
-
-  if (fn) {
-    isQualified = true;
-    root = [fn(root, container)];
-    i = 1;
-  } else {
-    isQualified = container === null;
-    root = [container || root];
-  }
-
-  for (let ii = parsed.length; i < ii; i++) {
-    const {
-      name,
-      cacheName,
-      operator,
-      index
-    } = parsed[i];
-    const nodes = [];
-
-    for (const node of root) {
-      if (!(node instanceof _xfa_object.XFAObject)) {
-        continue;
-      }
-
-      let children, cached;
-
-      if (useCache) {
-        cached = somCache.get(node);
-
-        if (!cached) {
-          cached = new Map();
-          somCache.set(node, cached);
-        }
-
-        children = cached.get(cacheName);
-      }
-
-      if (!children) {
-        switch (operator) {
-          case operators.dot:
-            children = node[_xfa_object.$getChildrenByName](name, false);
-            break;
-
-          case operators.dotDot:
-            children = node[_xfa_object.$getChildrenByName](name, true);
-            break;
-
-          case operators.dotHash:
-            children = node[_xfa_object.$getChildrenByClass](name);
-
-            if (children instanceof _xfa_object.XFAObjectArray) {
-              children = children.children;
-            } else {
-              children = [children];
-            }
-
-            break;
-
-          default:
-            break;
-        }
-
-        if (useCache) {
-          cached.set(cacheName, children);
-        }
-      }
-
-      if (children.length > 0) {
-        nodes.push(children);
-      }
-    }
-
-    if (nodes.length === 0 && !isQualified && i === 0) {
-      const parent = container[_xfa_object.$getParent]();
-
-      container = parent;
-
-      if (!container) {
-        return null;
-      }
-
-      i = -1;
-      root = [container];
-      continue;
-    }
-
-    if (isFinite(index)) {
-      root = nodes.filter(node => index < node.length).map(node => node[index]);
-    } else {
-      root = nodes.reduce((acc, node) => acc.concat(node), []);
-    }
-  }
-
-  if (root.length === 0) {
-    return null;
-  }
-
-  return root;
-}
-
-function createNodes(root, path) {
-  let node = null;
-
-  for (const {
-    name,
-    index
-  } of path) {
-    for (let i = 0; i <= index; i++) {
-      node = new _xfa_object.XmlObject(root[_xfa_object.$namespaceId], name);
-
-      root[_xfa_object.$appendChild](node);
-    }
-
-    root = node;
-  }
-
-  return node;
-}
-
-function createDataNode(root, container, expr) {
-  const parsed = parseExpression(expr);
-
-  if (!parsed) {
-    return null;
-  }
-
-  if (parsed.some(x => x.operator === operators.dotDot)) {
-    return null;
-  }
-
-  const fn = shortcuts.get(parsed[0].name);
-  let i = 0;
-
-  if (fn) {
-    root = fn(root, container);
-    i = 1;
-  } else {
-    root = container || root;
-  }
-
-  for (let ii = parsed.length; i < ii; i++) {
-    const {
-      cacheName,
-      index
-    } = parsed[i];
-
-    if (!isFinite(index)) {
-      parsed[i].index = 0;
-      return createNodes(root, parsed.slice(i));
-    }
-
-    const cached = somCache.get(root);
-
-    if (!cached) {
-      (0, _util.warn)(`XFA - createDataNode must be called after searchNode.`);
-      return null;
-    }
-
-    const children = cached.get(cacheName);
-
-    if (children.length === 0) {
-      return createNodes(root, parsed.slice(i));
-    }
-
-    if (index < children.length) {
-      const child = children[index];
-
-      if (!(child instanceof _xfa_object.XFAObject)) {
-        (0, _util.warn)(`XFA - Cannot create a node.`);
-        return null;
-      }
-
-      root = child;
-    } else {
-      parsed[i].index = children.length - index;
-      return createNodes(root, parsed.slice(i));
-    }
-  }
-
-  return null;
-}
-
-/***/ }),
-/* 57 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XFAParser = void 0;
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _xml_parser = __w_pdfjs_require__(26);
-
-var _builder = __w_pdfjs_require__(58);
-
-var _util = __w_pdfjs_require__(2);
-
-class XFAParser extends _xml_parser.XMLParserBase {
-  constructor() {
-    super();
-    this._builder = new _builder.Builder();
-    this._stack = [];
-    this._ids = new Map();
-    this._current = this._builder.buildRoot(this._ids);
-    this._errorCode = _xml_parser.XMLParserErrorCode.NoError;
-    this._whiteRegex = /^\s+$/;
-  }
-
-  parse(data) {
-    this.parseXml(data);
-
-    if (this._errorCode !== _xml_parser.XMLParserErrorCode.NoError) {
-      return undefined;
-    }
-
-    this._current[_xfa_object.$finalize]();
-
-    return this._current.element;
-  }
-
-  onText(text) {
-    if (this._whiteRegex.test(text)) {
-      return;
-    }
-
-    this._current[_xfa_object.$onText](text.trim());
-  }
-
-  onCdata(text) {
-    this._current[_xfa_object.$onText](text);
-  }
-
-  _mkAttributes(attributes, tagName) {
-    let namespace = null;
-    let prefixes = null;
-    const attributeObj = Object.create({});
-
-    for (const {
-      name,
-      value
-    } of attributes) {
-      if (name === "xmlns") {
-        if (!namespace) {
-          namespace = value;
-        } else {
-          (0, _util.warn)(`XFA - multiple namespace definition in <${tagName}>`);
-        }
-      } else if (name.startsWith("xmlns:")) {
-        const prefix = name.substring("xmlns:".length);
-
-        if (!prefixes) {
-          prefixes = [];
-        }
-
-        prefixes.push({
-          prefix,
-          value
-        });
-      } else {
-        const i = name.indexOf(":");
-
-        if (i === -1) {
-          attributeObj[name] = value;
-        } else {
-          let nsAttrs = attributeObj[_xfa_object.$nsAttributes];
-
-          if (!nsAttrs) {
-            nsAttrs = attributeObj[_xfa_object.$nsAttributes] = Object.create(null);
-          }
-
-          const [ns, attrName] = [name.slice(0, i), name.slice(i + 1)];
-          let attrs = nsAttrs[ns];
-
-          if (!attrs) {
-            attrs = nsAttrs[ns] = Object.create(null);
-          }
-
-          attrs[attrName] = value;
-        }
-      }
-    }
-
-    return [namespace, prefixes, attributeObj];
-  }
-
-  _getNameAndPrefix(name) {
-    const i = name.indexOf(":");
-
-    if (i === -1) {
-      return [name, null];
-    }
-
-    return [name.substring(i + 1), name.substring(0, i)];
-  }
-
-  onBeginElement(tagName, attributes, isEmpty) {
-    const [namespace, prefixes, attributesObj] = this._mkAttributes(attributes, tagName);
-
-    const [name, nsPrefix] = this._getNameAndPrefix(tagName);
-
-    const node = this._builder.build({
-      nsPrefix,
-      name,
-      attributes: attributesObj,
-      namespace,
-      prefixes
-    });
-
-    if (isEmpty) {
-      node[_xfa_object.$finalize]();
-
-      if (this._current[_xfa_object.$onChild](node)) {
-        node[_xfa_object.$setId](this._ids);
-      }
-
-      node[_xfa_object.$clean](this._builder);
-
-      return;
-    }
-
-    this._stack.push(this._current);
-
-    this._current = node;
-  }
-
-  onEndElement(name) {
-    const node = this._current;
-
-    node[_xfa_object.$finalize]();
-
-    this._current = this._stack.pop();
-
-    if (this._current[_xfa_object.$onChild](node)) {
-      node[_xfa_object.$setId](this._ids);
-    }
-
-    node[_xfa_object.$clean](this._builder);
-  }
-
-  onError(code) {
-    this._errorCode = code;
-  }
-
-}
-
-exports.XFAParser = XFAParser;
-
-/***/ }),
-/* 58 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.Builder = void 0;
-
-var _namespaces = __w_pdfjs_require__(52);
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _setup = __w_pdfjs_require__(59);
-
-var _template = __w_pdfjs_require__(54);
-
-var _unknown = __w_pdfjs_require__(68);
-
-var _util = __w_pdfjs_require__(2);
-
-const _ids = Symbol();
-
-class Root extends _xfa_object.XFAObject {
-  constructor(ids) {
-    super(-1, "root", Object.create(null));
-    this.element = null;
-    this[_ids] = ids;
-  }
-
-  [_xfa_object.$onChild](child) {
-    this.element = child;
-    return true;
-  }
-
-  [_xfa_object.$finalize]() {
-    super[_xfa_object.$finalize]();
-
-    if (this.element.template instanceof _template.Template) {
-      this.element.template[_xfa_object.$resolvePrototypes](this[_ids]);
-    }
-  }
-
-}
-
-class Empty extends _xfa_object.XFAObject {
-  constructor() {
-    super(-1, "", Object.create(null));
-  }
-
-  [_xfa_object.$onChild](_) {
-    return false;
-  }
-
-}
-
-class Builder {
-  constructor() {
-    this._namespaceStack = [];
-    this._namespacePrefixes = new Map();
-    this._namespaces = new Map();
-    this._nextNsId = Math.max(...Object.values(_namespaces.NamespaceIds).map(({
-      id
-    }) => id));
-    this._currentNamespace = new _unknown.UnknownNamespace(++this._nextNsId);
-  }
-
-  buildRoot(ids) {
-    return new Root(ids);
-  }
-
-  build({
-    nsPrefix,
-    name,
-    attributes,
-    namespace,
-    prefixes
-  }) {
-    const hasNamespaceDef = namespace !== null;
-
-    if (hasNamespaceDef) {
-      this._namespaceStack.push(this._currentNamespace);
-
-      this._currentNamespace = this._searchNamespace(namespace);
-    }
-
-    if (prefixes) {
-      this._addNamespacePrefix(prefixes);
-    }
-
-    if (attributes.hasOwnProperty(_xfa_object.$nsAttributes)) {
-      const dataTemplate = _setup.NamespaceSetUp.datasets;
-      const nsAttrs = attributes[_xfa_object.$nsAttributes];
-      let xfaAttrs = null;
-
-      for (const [ns, attrs] of Object.entries(nsAttrs)) {
-        const nsToUse = this._getNamespaceToUse(ns);
-
-        if (nsToUse === dataTemplate) {
-          xfaAttrs = {
-            xfa: attrs
-          };
-          break;
-        }
-      }
-
-      if (xfaAttrs) {
-        attributes[_xfa_object.$nsAttributes] = xfaAttrs;
-      } else {
-        delete attributes[_xfa_object.$nsAttributes];
-      }
-    }
-
-    const namespaceToUse = this._getNamespaceToUse(nsPrefix);
-
-    const node = namespaceToUse && namespaceToUse[_namespaces.$buildXFAObject](name, attributes) || new 
Empty();
-
-    if (hasNamespaceDef || prefixes) {
-      node[_xfa_object.$cleanup] = {
-        hasNamespace: hasNamespaceDef,
-        prefixes
-      };
-    }
-
-    return node;
-  }
-
-  _searchNamespace(nsName) {
-    let ns = this._namespaces.get(nsName);
-
-    if (ns) {
-      return ns;
-    }
-
-    for (const [name, {
-      check
-    }] of Object.entries(_namespaces.NamespaceIds)) {
-      if (check(nsName)) {
-        ns = _setup.NamespaceSetUp[name];
-
-        if (ns) {
-          this._namespaces.set(nsName, ns);
-
-          return ns;
-        }
-
-        break;
-      }
-    }
-
-    ns = new _unknown.UnknownNamespace(++this._nextNsId);
-
-    this._namespaces.set(nsName, ns);
-
-    return ns;
-  }
-
-  _addNamespacePrefix(prefixes) {
-    for (const {
-      prefix,
-      value
-    } of prefixes) {
-      const namespace = this._searchNamespace(value);
-
-      let prefixStack = this._namespacePrefixes.get(prefix);
-
-      if (!prefixStack) {
-        prefixStack = [];
-
-        this._namespacePrefixes.set(prefix, prefixStack);
-      }
-
-      prefixStack.push(namespace);
-    }
-  }
-
-  _getNamespaceToUse(prefix) {
-    if (!prefix) {
-      return this._currentNamespace;
-    }
-
-    const prefixStack = this._namespacePrefixes.get(prefix);
-
-    if (prefixStack && prefixStack.length > 0) {
-      return prefixStack[prefixStack.length - 1];
-    }
-
-    (0, _util.warn)(`Unknown namespace prefix: ${prefix}.`);
-    return null;
-  }
-
-  clean(data) {
-    const {
-      hasNamespace,
-      prefixes
-    } = data;
-
-    if (hasNamespace) {
-      this._currentNamespace = this._namespaceStack.pop();
-    }
-
-    if (prefixes) {
-      prefixes.forEach(({
-        prefix
-      }) => {
-        this._namespacePrefixes.get(prefix).pop();
-      });
-    }
-  }
-
-}
-
-exports.Builder = Builder;
-
-/***/ }),
-/* 59 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.NamespaceSetUp = void 0;
-
-var _config = __w_pdfjs_require__(60);
-
-var _connection_set = __w_pdfjs_require__(61);
-
-var _datasets = __w_pdfjs_require__(62);
-
-var _locale_set = __w_pdfjs_require__(63);
-
-var _signature = __w_pdfjs_require__(64);
-
-var _stylesheet = __w_pdfjs_require__(65);
-
-var _template = __w_pdfjs_require__(54);
-
-var _xdp = __w_pdfjs_require__(66);
-
-var _xhtml = __w_pdfjs_require__(67);
-
-const NamespaceSetUp = {
-  config: _config.ConfigNamespace,
-  connection: _connection_set.ConnectionSetNamespace,
-  datasets: _datasets.DatasetsNamespace,
-  localeSet: _locale_set.LocaleSetNamespace,
-  signature: _signature.SignatureNamespace,
-  stylesheet: _stylesheet.StylesheetNamespace,
-  template: _template.TemplateNamespace,
-  xdp: _xdp.XdpNamespace,
-  xhtml: _xhtml.XhtmlNamespace
-};
-exports.NamespaceSetUp = NamespaceSetUp;
-
-/***/ }),
-/* 60 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.ConfigNamespace = void 0;
-
-var _namespaces = __w_pdfjs_require__(52);
-
-var _xfa_object = __w_pdfjs_require__(50);
-
-var _utils = __w_pdfjs_require__(51);
-
-var _util = __w_pdfjs_require__(2);
-
-const CONFIG_NS_ID = _namespaces.NamespaceIds.config.id;
-
-class Acrobat extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "acrobat", true);
-    this.acrobat7 = null;
-    this.autoSave = null;
-    this.common = null;
-    this.validate = null;
-    this.validateApprovalSignatures = null;
-    this.submitUrl = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Acrobat7 extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "acrobat7", true);
-    this.dynamicRender = null;
-  }
-
-}
-
-class ADBE_JSConsole extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "ADBE_JSConsole", ["delegate", "Enable", "Disable"]);
-  }
-
-}
-
-class ADBE_JSDebugger extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "ADBE_JSDebugger", ["delegate", "Enable", "Disable"]);
-  }
-
-}
-
-class AddSilentPrint extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "addSilentPrint");
-  }
-
-}
-
-class AddViewerPreferences extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "addViewerPreferences");
-  }
-
-}
-
-class AdjustData extends _xfa_object.Option10 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "adjustData");
-  }
-
-}
-
-class AdobeExtensionLevel extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "adobeExtensionLevel", 0, n => n >= 1 && n <= 8);
-  }
-
-}
-
-class Agent extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "agent", true);
-    this.name = attributes.name ? attributes.name.trim() : "";
-    this.common = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class AlwaysEmbed extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "alwaysEmbed");
-  }
-
-}
-
-class Amd extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "amd");
-  }
-
-}
-
-class Area extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "area");
-    this.level = (0, _utils.getInteger)({
-      data: attributes.level,
-      defaultValue: 0,
-      validator: n => n >= 1 && n <= 3
-    });
-    this.name = (0, _utils.getStringOption)(attributes.name, ["", "barcode", "coreinit", "deviceDriver", 
"font", "general", "layout", "merge", "script", "signature", "sourceSet", "templateCache"]);
-  }
-
-}
-
-class Attributes extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "attributes", ["preserve", "delegate", "ignore"]);
-  }
-
-}
-
-class AutoSave extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "autoSave", ["disabled", "enabled"]);
-  }
-
-}
-
-class Base extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "base");
-  }
-
-}
-
-class BatchOutput extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "batchOutput");
-    this.format = (0, _utils.getStringOption)(attributes.format, ["none", "concat", "zip", "zipCompress"]);
-  }
-
-}
-
-class BehaviorOverride extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "behaviorOverride");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = new Map(this[_xfa_object.$content].trim().split(/\s+/).filter(x => !!x && 
x.include(":")).map(x => x.split(":", 2)));
-  }
-
-}
-
-class Cache extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "cache", true);
-    this.templateCache = null;
-  }
-
-}
-
-class Change extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "change");
-  }
-
-}
-
-class Common extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "common", true);
-    this.data = null;
-    this.locale = null;
-    this.localeSet = null;
-    this.messaging = null;
-    this.suppressBanner = null;
-    this.template = null;
-    this.validationMessaging = null;
-    this.versionControl = null;
-    this.log = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Compress extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "compress");
-    this.scope = (0, _utils.getStringOption)(attributes.scope, ["imageOnly", "document"]);
-  }
-
-}
-
-class CompressLogicalStructure extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "compressLogicalStructure");
-  }
-
-}
-
-class CompressObjectStream extends _xfa_object.Option10 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "compressObjectStream");
-  }
-
-}
-
-class Compression extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "compression", true);
-    this.compressLogicalStructure = null;
-    this.compressObjectStream = null;
-    this.level = null;
-    this.type = null;
-  }
-
-}
-
-class Config extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "config", true);
-    this.acrobat = null;
-    this.present = null;
-    this.trace = null;
-    this.agent = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Conformance extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "conformance", ["A", "B"]);
-  }
-
-}
-
-class ContentCopy extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "contentCopy");
-  }
-
-}
-
-class Copies extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "copies", 1, n => n >= 1);
-  }
-
-}
-
-class Creator extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "creator");
-  }
-
-}
-
-class CurrentPage extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "currentPage", 0, n => n >= 0);
-  }
-
-}
-
-class Data extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "data", true);
-    this.adjustData = null;
-    this.attributes = null;
-    this.incrementalLoad = null;
-    this.outputXSL = null;
-    this.range = null;
-    this.record = null;
-    this.startNode = null;
-    this.uri = null;
-    this.window = null;
-    this.xsl = null;
-    this.excludeNS = new _xfa_object.XFAObjectArray();
-    this.transform = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Debug extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "debug", true);
-    this.uri = null;
-  }
-
-}
-
-class DefaultTypeface extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "defaultTypeface");
-    this.writingScript = (0, _utils.getStringOption)(attributes.writingScript, ["*", "Arabic", "Cyrillic", 
"EastEuropeanRoman", "Greek", "Hebrew", "Japanese", "Korean", "Roman", "SimplifiedChinese", "Thai", 
"TraditionalChinese", "Vietnamese"]);
-  }
-
-}
-
-class Destination extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "destination", ["pdf", "pcl", "ps", "webClient", "zpl"]);
-  }
-
-}
-
-class DocumentAssembly extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "documentAssembly");
-  }
-
-}
-
-class Driver extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "driver", true);
-    this.name = attributes.name ? attributes.name.trim() : "";
-    this.fontInfo = null;
-    this.xdc = null;
-  }
-
-}
-
-class DuplexOption extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "duplexOption", ["simplex", "duplexFlipLongEdge", "duplexFlipShortEdge"]);
-  }
-
-}
-
-class DynamicRender extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "dynamicRender", ["forbidden", "required"]);
-  }
-
-}
-
-class Embed extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "embed");
-  }
-
-}
-
-class Encrypt extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "encrypt");
-  }
-
-}
-
-class Encryption extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "encryption", true);
-    this.encrypt = null;
-    this.encryptionLevel = null;
-    this.permissions = null;
-  }
-
-}
-
-class EncryptionLevel extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "encryptionLevel", ["40bit", "128bit"]);
-  }
-
-}
-
-class Enforce extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "enforce");
-  }
-
-}
-
-class Equate extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "equate");
-    this.force = (0, _utils.getInteger)({
-      data: attributes.force,
-      defaultValue: 1,
-      validator: n => n === 0
-    });
-    this.from = attributes.from || "";
-    this.to = attributes.to || "";
-  }
-
-}
-
-class EquateRange extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "equateRange");
-    this.from = attributes.from || "";
-    this.to = attributes.to || "";
-    this._unicodeRange = attributes.unicodeRange || "";
-  }
-
-  get unicodeRange() {
-    const ranges = [];
-    const unicodeRegex = /U\+([0-9a-fA-F]+)/;
-    const unicodeRange = this._unicodeRange;
-
-    for (let range of unicodeRange.split(",").map(x => x.trim()).filter(x => !!x)) {
-      range = range.split("-", 2).map(x => {
-        const found = x.match(unicodeRegex);
-
-        if (!found) {
-          return 0;
-        }
-
-        return parseInt(found[1], 16);
-      });
-
-      if (range.length === 1) {
-        range.push(range[0]);
-      }
-
-      ranges.push(range);
-    }
-
-    return (0, _util.shadow)(this, "unicodeRange", ranges);
-  }
-
-}
-
-class Exclude extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "exclude");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => x && 
["calculate", "close", "enter", "exit", "initialize", "ready", "validate"].includes(x));
-  }
-
-}
-
-class ExcludeNS extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "excludeNS");
-  }
-
-}
-
-class FlipLabel extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "flipLabel", ["usePrinterSetting", "on", "off"]);
-  }
-
-}
-
-class FontInfo extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "fontInfo", true);
-    this.embed = null;
-    this.map = null;
-    this.subsetBelow = null;
-    this.alwaysEmbed = new _xfa_object.XFAObjectArray();
-    this.defaultTypeface = new _xfa_object.XFAObjectArray();
-    this.neverEmbed = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class FormFieldFilling extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "formFieldFilling");
-  }
-
-}
-
-class GroupParent extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "groupParent");
-  }
-
-}
-
-class IfEmpty extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "ifEmpty", ["dataValue", "dataGroup", "ignore", "remove"]);
-  }
-
-}
-
-class IncludeXDPContent extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "includeXDPContent");
-  }
-
-}
-
-class IncrementalLoad extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "incrementalLoad", ["none", "forwardOnly"]);
-  }
-
-}
-
-class IncrementalMerge extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "incrementalMerge");
-  }
-
-}
-
-class Interactive extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "interactive");
-  }
-
-}
-
-class Jog extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "jog", ["usePrinterSetting", "none", "pageSet"]);
-  }
-
-}
-
-class LabelPrinter extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "labelPrinter", true);
-    this.name = (0, _utils.getStringOption)(attributes.name, ["zpl", "dpl", "ipl", "tcpl"]);
-    this.batchOutput = null;
-    this.flipLabel = null;
-    this.fontInfo = null;
-    this.xdc = null;
-  }
-
-}
-
-class Layout extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "layout", ["paginate", "panel"]);
-  }
-
-}
-
-class Level extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "level", 0, n => n > 0);
-  }
-
-}
-
-class Linearized extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "linearized");
-  }
-
-}
-
-class Locale extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "locale");
-  }
-
-}
-
-class LocaleSet extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "localeSet");
-  }
-
-}
-
-class Log extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "log", true);
-    this.mode = null;
-    this.threshold = null;
-    this.to = null;
-    this.uri = null;
-  }
-
-}
-
-class MapElement extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "map", true);
-    this.equate = new _xfa_object.XFAObjectArray();
-    this.equateRange = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class MediumInfo extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "mediumInfo", true);
-    this.map = null;
-  }
-
-}
-
-class Message extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "message", true);
-    this.msgId = null;
-    this.severity = null;
-  }
-
-}
-
-class Messaging extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "messaging", true);
-    this.message = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Mode extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "mode", ["append", "overwrite"]);
-  }
-
-}
-
-class ModifyAnnots extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "modifyAnnots");
-  }
-
-}
-
-class MsgId extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "msgId", 1, n => n >= 1);
-  }
-
-}
-
-class NameAttr extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "nameAttr");
-  }
-
-}
-
-class NeverEmbed extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "neverEmbed");
-  }
-
-}
-
-class NumberOfCopies extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "numberOfCopies", null, n => n >= 2 && n <= 5);
-  }
-
-}
-
-class OpenAction extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "openAction", true);
-    this.destination = null;
-  }
-
-}
-
-class Output extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "output", true);
-    this.to = null;
-    this.type = null;
-    this.uri = null;
-  }
-
-}
-
-class OutputBin extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "outputBin");
-  }
-
-}
-
-class OutputXSL extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "outputXSL", true);
-    this.uri = null;
-  }
-
-}
-
-class Overprint extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "overprint", ["none", "both", "draw", "field"]);
-  }
-
-}
-
-class Packets extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "packets");
-  }
-
-  [_xfa_object.$finalize]() {
-    if (this[_xfa_object.$content] === "*") {
-      return;
-    }
-
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["config", 
"datasets", "template", "xfdf", "xslt"].includes(x));
-  }
-
-}
-
-class PageOffset extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pageOffset");
-    this.x = (0, _utils.getInteger)({
-      data: attributes.x,
-      defaultValue: "useXDCSetting",
-      validator: n => true
-    });
-    this.y = (0, _utils.getInteger)({
-      data: attributes.y,
-      defaultValue: "useXDCSetting",
-      validator: n => true
-    });
-  }
-
-}
-
-class PageRange extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pageRange");
-  }
-
-  [_xfa_object.$finalize]() {
-    const numbers = this[_xfa_object.$content].trim().split(/\s+/).map(x => parseInt(x, 10));
-
-    const ranges = [];
-
-    for (let i = 0, ii = numbers.length; i < ii; i += 2) {
-      ranges.push(numbers.slice(i, i + 2));
-    }
-
-    this[_xfa_object.$content] = ranges;
-  }
-
-}
-
-class Pagination extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pagination", ["simplex", "duplexShortEdge", "duplexLongEdge"]);
-  }
-
-}
-
-class PaginationOverride extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "paginationOverride", ["none", "forceDuplex", "forceDuplexLongEdge", 
"forceDuplexShortEdge", "forceSimplex"]);
-  }
-
-}
-
-class Part extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "part", 1, n => false);
-  }
-
-}
-
-class Pcl extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pcl", true);
-    this.name = attributes.name || "";
-    this.batchOutput = null;
-    this.fontInfo = null;
-    this.jog = null;
-    this.mediumInfo = null;
-    this.outputBin = null;
-    this.pageOffset = null;
-    this.staple = null;
-    this.xdc = null;
-  }
-
-}
-
-class Pdf extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pdf", true);
-    this.name = attributes.name || "";
-    this.adobeExtensionLevel = null;
-    this.batchOutput = null;
-    this.compression = null;
-    this.creator = null;
-    this.encryption = null;
-    this.fontInfo = null;
-    this.interactive = null;
-    this.linearized = null;
-    this.openAction = null;
-    this.pdfa = null;
-    this.producer = null;
-    this.renderPolicy = null;
-    this.scriptModel = null;
-    this.silentPrint = null;
-    this.submitFormat = null;
-    this.tagged = null;
-    this.version = null;
-    this.viewerPreferences = null;
-    this.xdc = null;
-  }
-
-}
-
-class Pdfa extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pdfa", true);
-    this.amd = null;
-    this.conformance = null;
-    this.includeXDPContent = null;
-    this.part = null;
-  }
-
-}
-
-class Permissions extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "permissions", true);
-    this.accessibleContent = null;
-    this.change = null;
-    this.contentCopy = null;
-    this.documentAssembly = null;
-    this.formFieldFilling = null;
-    this.modifyAnnots = null;
-    this.plaintextMetadata = null;
-    this.print = null;
-    this.printHighQuality = null;
-  }
-
-}
-
-class PickTrayByPDFSize extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "pickTrayByPDFSize");
-  }
-
-}
-
-class Picture extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "picture");
-  }
-
-}
-
-class PlaintextMetadata extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "plaintextMetadata");
-  }
-
-}
-
-class Presence extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "presence", ["preserve", "dissolve", "dissolveStructure", "ignore", "remove"]);
-  }
-
-}
-
-class Present extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "present", true);
-    this.behaviorOverride = null;
-    this.cache = null;
-    this.common = null;
-    this.copies = null;
-    this.destination = null;
-    this.incrementalMerge = null;
-    this.layout = null;
-    this.output = null;
-    this.overprint = null;
-    this.pagination = null;
-    this.paginationOverride = null;
-    this.script = null;
-    this.validate = null;
-    this.xdp = null;
-    this.driver = new _xfa_object.XFAObjectArray();
-    this.labelPrinter = new _xfa_object.XFAObjectArray();
-    this.pcl = new _xfa_object.XFAObjectArray();
-    this.pdf = new _xfa_object.XFAObjectArray();
-    this.ps = new _xfa_object.XFAObjectArray();
-    this.submitUrl = new _xfa_object.XFAObjectArray();
-    this.webClient = new _xfa_object.XFAObjectArray();
-    this.zpl = new _xfa_object.XFAObjectArray();
-  }
-
-}
-
-class Print extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "print");
-  }
-
-}
-
-class PrintHighQuality extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "printHighQuality");
-  }
-
-}
-
-class PrintScaling extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "printScaling", ["appdefault", "noScaling"]);
-  }
-
-}
-
-class PrinterName extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "printerName");
-  }
-
-}
-
-class Producer extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "producer");
-  }
-
-}
-
-class Ps extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "ps", true);
-    this.name = attributes.name || "";
-    this.batchOutput = null;
-    this.fontInfo = null;
-    this.jog = null;
-    this.mediumInfo = null;
-    this.outputBin = null;
-    this.staple = null;
-    this.xdc = null;
-  }
-
-}
-
-class Range extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "range");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(range => 
range.split("-").map(x => parseInt(x.trim(), 10))).filter(range => range.every(x => !isNaN(x))).map(range => {
-      if (range.length === 1) {
-        range.push(range[0]);
-      }
-
-      return range;
-    });
-  }
-
-}
-
-class Record extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "record");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim();
-    const n = parseInt(this[_xfa_object.$content], 10);
-
-    if (!isNaN(n) && n >= 0) {
-      this[_xfa_object.$content] = n;
-    }
-  }
-
-}
-
-class Relevant extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "relevant");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/);
-  }
-
-}
-
-class Rename extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "rename");
-  }
-
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim();
-
-    if (this[_xfa_object.$content].toLowerCase().startsWith("xml") || this[_xfa_object.$content].match(new 
RegExp("[\\p{L}_][\\p{L}\\d._\\p{M}-]*", "u"))) {
-      (0, _util.warn)("XFA - Rename: invalid XFA name");
-    }
-  }
-
-}
-
-class RenderPolicy extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "renderPolicy", ["server", "client"]);
-  }
-
-}
-
-class RunScripts extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "runScripts", ["both", "client", "none", "server"]);
-  }
-
-}
-
-class Script extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "script", true);
-    this.currentPage = null;
-    this.exclude = null;
-    this.runScripts = null;
-  }
-
-}
-
-class ScriptModel extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "scriptModel", ["XFA", "none"]);
-  }
-
-}
-
-class Severity extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "severity", ["ignore", "error", "information", "trace", "warning"]);
-  }
-
-}
+    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;
 
-class SilentPrint extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "silentPrint", true);
-    this.addSilentPrint = null;
-    this.printerName = null;
-  }
+/***/ }),
+/* 43 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-}
 
-class Staple extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "staple");
-    this.mode = (0, _utils.getStringOption)(attributes.mode, ["usePrinterSetting", "on", "off"]);
-  }
 
-}
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.MurmurHash3_64 = void 0;
 
-class StartNode extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "startNode");
-  }
+var _util = __w_pdfjs_require__(2);
 
-}
+const SEED = 0xc3d2e1f0;
+const MASK_HIGH = 0xffff0000;
+const MASK_LOW = 0xffff;
 
-class StartPage extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "startPage", 0, n => true);
+class MurmurHash3_64 {
+  constructor(seed) {
+    this.h1 = seed ? seed & 0xffffffff : SEED;
+    this.h2 = seed ? seed & 0xffffffff : SEED;
   }
 
-}
-
-class SubmitFormat extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "submitFormat", ["html", "delegate", "fdf", "xml", "pdf"]);
-  }
+  update(input) {
+    let data, length;
 
-}
+    if ((0, _util.isString)(input)) {
+      data = new Uint8Array(input.length * 2);
+      length = 0;
 
-class SubmitUrl extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "submitUrl");
-  }
+      for (let i = 0, ii = input.length; i < ii; i++) {
+        const code = input.charCodeAt(i);
 
-}
+        if (code <= 0xff) {
+          data[length++] = code;
+        } else {
+          data[length++] = code >>> 8;
+          data[length++] = code & 0xff;
+        }
+      }
+    } else if ((0, _util.isArrayBuffer)(input)) {
+      data = input.slice();
+      length = data.byteLength;
+    } else {
+      throw new Error("Wrong data format in MurmurHash3_64_update. " + "Input must be a string or array.");
+    }
 
-class SubsetBelow extends _xfa_object.IntegerObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "subsetBelow", 100, n => n >= 0 && n <= 100);
-  }
+    const blockCounts = length >> 2;
+    const tailLength = length - blockCounts * 4;
+    const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
+    let k1 = 0,
+        k2 = 0;
+    let h1 = this.h1,
+        h2 = this.h2;
+    const C1 = 0xcc9e2d51,
+          C2 = 0x1b873593;
+    const C1_LOW = C1 & MASK_LOW,
+          C2_LOW = C2 & MASK_LOW;
 
-}
+    for (let 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;
+      }
+    }
 
-class SuppressBanner extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "suppressBanner");
-  }
+    k1 = 0;
 
-}
+    switch (tailLength) {
+      case 3:
+        k1 ^= data[blockCounts * 4 + 2] << 16;
 
-class Tagged extends _xfa_object.Option01 {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "tagged");
-  }
+      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;
 
-class Template extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "template", true);
-    this.base = null;
-    this.relevant = null;
-    this.startPage = null;
-    this.uri = null;
-    this.xsl = null;
-  }
+        if (blockCounts & 1) {
+          h1 ^= k1;
+        } else {
+          h2 ^= k1;
+        }
 
-}
+    }
 
-class Threshold extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "threshold", ["trace", "error", "information", "warning"]);
+    this.h1 = h1;
+    this.h2 = h2;
   }
 
-}
-
-class To extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "to", ["null", "memory", "stderr", "stdout", "system", "uri"]);
+  hexdigest() {
+    let h1 = this.h1,
+        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;
+    const hex1 = (h1 >>> 0).toString(16),
+          hex2 = (h2 >>> 0).toString(16);
+    return hex1.padStart(8, "0") + hex2.padStart(8, "0");
   }
 
 }
 
-class TemplateCache extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "templateCache");
-    this.maxEntries = (0, _utils.getInteger)({
-      data: attributes.maxEntries,
-      defaultValue: 5,
-      validator: n => n >= 0
-    });
-  }
+exports.MurmurHash3_64 = MurmurHash3_64;
 
-}
+/***/ }),
+/* 44 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-class Trace extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "trace", true);
-    this.area = new _xfa_object.XFAObjectArray();
-  }
 
-}
 
-class Transform extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "transform", true);
-    this.groupParent = null;
-    this.ifEmpty = null;
-    this.nameAttr = null;
-    this.picture = null;
-    this.presence = null;
-    this.rename = null;
-    this.whitespace = null;
-  }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.OperatorList = void 0;
 
-}
+var _util = __w_pdfjs_require__(2);
 
-class Type extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "type", ["none", "ascii85", "asciiHex", "ccittfax", "flate", "lzw", "runLength", 
"native", "xdp", "mergedXDP"]);
-  }
+var QueueOptimizer = function QueueOptimizerClosure() {
+  function addState(parentState, pattern, checkFn, iterateFn, processFn) {
+    var state = parentState;
 
-}
+    for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
+      var item = pattern[i];
+      state = state[item] || (state[item] = []);
+    }
 
-class Uri extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "uri");
+    state[pattern[pattern.length - 1]] = {
+      checkFn,
+      iterateFn,
+      processFn
+    };
   }
 
-}
+  function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
+    var iFirstPIMXO = iFirstSave + 2;
 
-class Validate extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "validate", ["preSubmit", "prePrint", "preExecute", "preSave"]);
-  }
+    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;
+      }
 
-class ValidateApprovalSignatures extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "validateApprovalSignatures");
-  }
+      break;
+    }
 
-  [_xfa_object.$finalize]() {
-    this[_xfa_object.$content] = this[_xfa_object.$content].trim().split(/\s+/).filter(x => ["docReady", 
"postSign"].includes(x));
+    return count - i;
   }
 
-}
+  var InitialState = [];
+  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, 
_util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
+    var fnArray = context.fnArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
 
-class ValidationMessaging extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "validationMessaging", ["allMessagesIndividually", "allMessagesTogether", 
"firstMessageOnly", "noMessages"]);
-  }
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
 
-}
+      case 1:
+        return fnArray[i] === _util.OPS.transform;
 
-class Version extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "version", ["1.7", "1.6", "1.5", "1.4", "1.3", "1.2"]);
-  }
+      case 2:
+        return fnArray[i] === _util.OPS.paintInlineImageXObject;
 
-}
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
 
-class VersionControl extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "VersionControl");
-    this.outputBelow = (0, _utils.getStringOption)(attributes.outputBelow, ["warn", "error", "update"]);
-    this.sourceAbove = (0, _utils.getStringOption)(attributes.sourceAbove, ["warn", "error"]);
-    this.sourceBelow = (0, _utils.getStringOption)(attributes.sourceBelow, ["update", "maintain"]);
-  }
+    throw new Error(`iterateInlineImageGroup - invalid pos: ${pos}`);
+  }, function foundInlineImageGroup(context, i) {
+    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 count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
 
-}
+    if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
 
-class ViewerPreferences extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "viewerPreferences", true);
-    this.ADBE_JSConsole = null;
-    this.ADBE_JSDebugger = null;
-    this.addViewerPreferences = null;
-    this.duplexOption = null;
-    this.enforce = null;
-    this.numberOfCopies = null;
-    this.pageRange = null;
-    this.pickTrayByPDFSize = null;
-    this.printScaling = null;
-  }
+    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];
 
-class WebClient extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "webClient", true);
-    this.name = attributes.name ? attributes.name.trim() : "";
-    this.fontInfo = null;
-    this.xdc = null;
-  }
+      if (currentX + img.width > MAX_WIDTH) {
+        maxX = Math.max(maxX, currentX);
+        currentY += maxLineHeight + 2 * IMAGE_PADDING;
+        currentX = 0;
+        maxLineHeight = 0;
+      }
 
-}
+      map.push({
+        transform,
+        x: currentX,
+        y: currentY,
+        w: img.width,
+        h: img.height
+      });
+      currentX += img.width + 2 * IMAGE_PADDING;
+      maxLineHeight = Math.max(maxLineHeight, img.height);
+    }
 
-class Whitespace extends _xfa_object.OptionObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "whitespace", ["preserve", "ltrim", "normalize", "rtrim", "trim"]);
-  }
+    var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
+    var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
+    var imgData = new Uint8ClampedArray(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);
 
-class Window extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "window");
-  }
+      for (var k = 0, kk = map[q].h; k < kk; k++) {
+        imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
+        dataOffset += rowSize;
+        offset += imgRowSize;
+      }
 
-  [_xfa_object.$finalize]() {
-    const pair = this[_xfa_object.$content].trim().split(/\s*,\s*/, 2).map(x => parseInt(x, 10));
+      imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
 
-    if (pair.some(x => isNaN(x))) {
-      this[_xfa_object.$content] = [0, 0];
-      return;
+      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;
+      }
     }
 
-    if (pair.length === 1) {
-      pair.push(pair[0]);
-    }
+    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], null, function iterateImageMaskGroup(context, i) {
+    var fnArray = context.fnArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
 
-    this[_xfa_object.$content] = pair;
-  }
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
 
-}
+      case 1:
+        return fnArray[i] === _util.OPS.transform;
 
-class Xdc extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "xdc", true);
-    this.uri = new _xfa_object.XFAObjectArray();
-    this.xsl = new _xfa_object.XFAObjectArray();
-  }
+      case 2:
+        return fnArray[i] === _util.OPS.paintImageMaskXObject;
 
-}
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
 
-class Xdp extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "xdp", true);
-    this.packets = null;
-  }
+    throw new Error(`iterateImageMaskGroup - invalid pos: ${pos}`);
+  }, function foundImageMaskGroup(context, i) {
+    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 count = Math.floor((i - iFirstSave) / 4);
+    count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
 
-}
+    if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
 
-class Xsl extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "xsl", true);
-    this.debug = null;
-    this.uri = null;
-  }
+    var q;
+    var isSameImage = false;
+    var iTransform, transformArgs;
+    var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
+    const firstTransformArg0 = argsArray[iFirstTransform][0],
+          firstTransformArg1 = argsArray[iFirstTransform][1],
+          firstTransformArg2 = argsArray[iFirstTransform][2],
+          firstTransformArg3 = argsArray[iFirstTransform][3];
 
-}
+    if (firstTransformArg1 === firstTransformArg2) {
+      isSameImage = true;
+      iTransform = iFirstTransform + 4;
+      var iPIMXO = iFirstPIMXO + 4;
 
-class Zpl extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONFIG_NS_ID, "zpl", true);
-    this.name = attributes.name ? attributes.name.trim() : "";
-    this.batchOutput = null;
-    this.flipLabel = null;
-    this.fontInfo = null;
-    this.xdc = null;
-  }
+      for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
+        transformArgs = argsArray[iTransform];
 
-}
+        if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || 
transformArgs[1] !== firstTransformArg1 || transformArgs[2] !== firstTransformArg2 || transformArgs[3] !== 
firstTransformArg3) {
+          if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
+            isSameImage = false;
+          } else {
+            count = q;
+          }
 
-class ConfigNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (ConfigNamespace.hasOwnProperty(name)) {
-      return ConfigNamespace[name](attributes);
+          break;
+        }
+      }
     }
 
-    return undefined;
-  }
-
-  static acrobat(attrs) {
-    return new Acrobat(attrs);
-  }
+    if (isSameImage) {
+      count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
+      var positions = new Float32Array(count * 2);
+      iTransform = iFirstTransform;
 
-  static acrobat7(attrs) {
-    return new Acrobat7(attrs);
-  }
+      for (q = 0; q < count; q++, iTransform += 4) {
+        transformArgs = argsArray[iTransform];
+        positions[q << 1] = transformArgs[4];
+        positions[(q << 1) + 1] = transformArgs[5];
+      }
 
-  static ADBE_JSConsole(attrs) {
-    return new ADBE_JSConsole(attrs);
-  }
+      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
+      argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg1, 
firstTransformArg2, firstTransformArg3, positions]);
+    } else {
+      count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
+      var images = [];
 
-  static ADBE_JSDebugger(attrs) {
-    return new ADBE_JSDebugger(attrs);
-  }
+      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
+        });
+      }
 
-  static addSilentPrint(attrs) {
-    return new AddSilentPrint(attrs);
-  }
+      fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
+      argsArray.splice(iFirstSave, count * 4, [images]);
+    }
 
-  static addViewerPreferences(attrs) {
-    return new AddViewerPreferences(attrs);
-  }
+    return iFirstSave + 1;
+  });
+  addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, 
_util.OPS.restore], function (context) {
+    var argsArray = context.argsArray;
+    var iFirstTransform = context.iCurr - 2;
+    return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
+  }, function iterateImageGroup(context, i) {
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var iFirstSave = context.iCurr - 3;
+    var pos = (i - iFirstSave) % 4;
 
-  static adjustData(attrs) {
-    return new AdjustData(attrs);
-  }
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.save;
 
-  static adobeExtensionLevel(attrs) {
-    return new AdobeExtensionLevel(attrs);
-  }
+      case 1:
+        if (fnArray[i] !== _util.OPS.transform) {
+          return false;
+        }
 
-  static agent(attrs) {
-    return new Agent(attrs);
-  }
+        var iFirstTransform = context.iCurr - 2;
+        var firstTransformArg0 = argsArray[iFirstTransform][0];
+        var firstTransformArg3 = argsArray[iFirstTransform][3];
 
-  static alwaysEmbed(attrs) {
-    return new AlwaysEmbed(attrs);
-  }
+        if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || 
argsArray[i][3] !== firstTransformArg3) {
+          return false;
+        }
 
-  static amd(attrs) {
-    return new Amd(attrs);
-  }
+        return true;
 
-  static area(attrs) {
-    return new Area(attrs);
-  }
+      case 2:
+        if (fnArray[i] !== _util.OPS.paintImageXObject) {
+          return false;
+        }
 
-  static attributes(attrs) {
-    return new Attributes(attrs);
-  }
+        var iFirstPIXO = context.iCurr - 1;
+        var firstPIXOArg0 = argsArray[iFirstPIXO][0];
 
-  static autoSave(attrs) {
-    return new AutoSave(attrs);
-  }
+        if (argsArray[i][0] !== firstPIXOArg0) {
+          return false;
+        }
 
-  static base(attrs) {
-    return new Base(attrs);
-  }
+        return true;
 
-  static batchOutput(attrs) {
-    return new BatchOutput(attrs);
-  }
+      case 3:
+        return fnArray[i] === _util.OPS.restore;
+    }
 
-  static behaviorOverride(attrs) {
-    return new BehaviorOverride(attrs);
-  }
+    throw new Error(`iterateImageGroup - invalid pos: ${pos}`);
+  }, function (context, i) {
+    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 firstPIXOArg0 = argsArray[iFirstPIXO][0];
+    var firstTransformArg0 = argsArray[iFirstTransform][0];
+    var firstTransformArg3 = argsArray[iFirstTransform][3];
+    var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
 
-  static cache(attrs) {
-    return new Cache(attrs);
-  }
+    if (count < MIN_IMAGES_IN_BLOCK) {
+      return i - (i - iFirstSave) % 4;
+    }
 
-  static change(attrs) {
-    return new Change(attrs);
-  }
+    var positions = new Float32Array(count * 2);
+    var iTransform = iFirstTransform;
 
-  static common(attrs) {
-    return new Common(attrs);
-  }
+    for (var q = 0; q < count; q++, iTransform += 4) {
+      var transformArgs = argsArray[iTransform];
+      positions[q << 1] = transformArgs[4];
+      positions[(q << 1) + 1] = transformArgs[5];
+    }
 
-  static compress(attrs) {
-    return new Compress(attrs);
-  }
+    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], null, function iterateShowTextGroup(context, i) {
+    var fnArray = context.fnArray,
+        argsArray = context.argsArray;
+    var iFirstSave = context.iCurr - 4;
+    var pos = (i - iFirstSave) % 5;
 
-  static compressLogicalStructure(attrs) {
-    return new CompressLogicalStructure(attrs);
-  }
+    switch (pos) {
+      case 0:
+        return fnArray[i] === _util.OPS.beginText;
 
-  static compressObjectStream(attrs) {
-    return new CompressObjectStream(attrs);
-  }
+      case 1:
+        return fnArray[i] === _util.OPS.setFont;
 
-  static compression(attrs) {
-    return new Compression(attrs);
-  }
+      case 2:
+        return fnArray[i] === _util.OPS.setTextMatrix;
 
-  static config(attrs) {
-    return new Config(attrs);
-  }
+      case 3:
+        if (fnArray[i] !== _util.OPS.showText) {
+          return false;
+        }
 
-  static conformance(attrs) {
-    return new Conformance(attrs);
-  }
+        var iFirstSetFont = context.iCurr - 3;
+        var firstSetFontArg0 = argsArray[iFirstSetFont][0];
+        var firstSetFontArg1 = argsArray[iFirstSetFont][1];
 
-  static contentCopy(attrs) {
-    return new ContentCopy(attrs);
-  }
+        if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
+          return false;
+        }
 
-  static copies(attrs) {
-    return new Copies(attrs);
-  }
+        return true;
 
-  static creator(attrs) {
-    return new Creator(attrs);
-  }
+      case 4:
+        return fnArray[i] === _util.OPS.endText;
+    }
 
-  static currentPage(attrs) {
-    return new CurrentPage(attrs);
-  }
+    throw new Error(`iterateShowTextGroup - invalid pos: ${pos}`);
+  }, function (context, i) {
+    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 count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
 
-  static data(attrs) {
-    return new Data(attrs);
-  }
+    if (count < MIN_CHARS_IN_BLOCK) {
+      return i - (i - iFirstBeginText) % 5;
+    }
 
-  static debug(attrs) {
-    return new Debug(attrs);
-  }
+    var iFirst = iFirstBeginText;
 
-  static defaultTypeface(attrs) {
-    return new DefaultTypeface(attrs);
-  }
+    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;
+    }
 
-  static destination(attrs) {
-    return new Destination(attrs);
-  }
+    var iEndText = iFirst + 4;
 
-  static documentAssembly(attrs) {
-    return new DocumentAssembly(attrs);
-  }
+    for (var q = 1; q < count; q++) {
+      fnArray.splice(iEndText, 3);
+      argsArray.splice(iEndText, 3);
+      iEndText += 2;
+    }
 
-  static driver(attrs) {
-    return new Driver(attrs);
-  }
+    return iEndText + 1;
+  });
 
-  static duplexOption(attrs) {
-    return new DuplexOption(attrs);
+  function QueueOptimizer(queue) {
+    this.queue = queue;
+    this.state = null;
+    this.context = {
+      iCurr: 0,
+      fnArray: queue.fnArray,
+      argsArray: queue.argsArray
+    };
+    this.match = null;
+    this.lastProcessed = 0;
   }
 
-  static dynamicRender(attrs) {
-    return new DynamicRender(attrs);
-  }
+  QueueOptimizer.prototype = {
+    _optimize() {
+      const fnArray = this.queue.fnArray;
+      let i = this.lastProcessed,
+          ii = fnArray.length;
+      let state = this.state;
+      let match = this.match;
 
-  static embed(attrs) {
-    return new Embed(attrs);
-  }
+      if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
+        this.lastProcessed = ii;
+        return;
+      }
 
-  static encrypt(attrs) {
-    return new Encrypt(attrs);
-  }
+      const context = this.context;
 
-  static encryption(attrs) {
-    return new Encryption(attrs);
-  }
+      while (i < ii) {
+        if (match) {
+          const iterate = (0, match.iterateFn)(context, i);
 
-  static encryptionLevel(attrs) {
-    return new EncryptionLevel(attrs);
-  }
+          if (iterate) {
+            i++;
+            continue;
+          }
 
-  static enforce(attrs) {
-    return new Enforce(attrs);
-  }
+          i = (0, match.processFn)(context, i + 1);
+          ii = fnArray.length;
+          match = null;
+          state = null;
 
-  static equate(attrs) {
-    return new Equate(attrs);
-  }
+          if (i >= ii) {
+            break;
+          }
+        }
 
-  static equateRange(attrs) {
-    return new EquateRange(attrs);
-  }
+        state = (state || InitialState)[fnArray[i]];
 
-  static exclude(attrs) {
-    return new Exclude(attrs);
-  }
+        if (!state || Array.isArray(state)) {
+          i++;
+          continue;
+        }
 
-  static excludeNS(attrs) {
-    return new ExcludeNS(attrs);
-  }
+        context.iCurr = i;
+        i++;
 
-  static flipLabel(attrs) {
-    return new FlipLabel(attrs);
-  }
+        if (state.checkFn && !(0, state.checkFn)(context)) {
+          state = null;
+          continue;
+        }
 
-  static fontInfo(attrs) {
-    return new FontInfo(attrs);
-  }
+        match = state;
+        state = null;
+      }
 
-  static formFieldFilling(attrs) {
-    return new FormFieldFilling(attrs);
-  }
+      this.state = state;
+      this.match = match;
+      this.lastProcessed = i;
+    },
 
-  static groupParent(attrs) {
-    return new GroupParent(attrs);
-  }
+    push(fn, args) {
+      this.queue.fnArray.push(fn);
+      this.queue.argsArray.push(args);
 
-  static ifEmpty(attrs) {
-    return new IfEmpty(attrs);
-  }
+      this._optimize();
+    },
 
-  static includeXDPContent(attrs) {
-    return new IncludeXDPContent(attrs);
-  }
+    flush() {
+      while (this.match) {
+        const length = this.queue.fnArray.length;
+        this.lastProcessed = (0, this.match.processFn)(this.context, length);
+        this.match = null;
+        this.state = null;
 
-  static incrementalLoad(attrs) {
-    return new IncrementalLoad(attrs);
-  }
+        this._optimize();
+      }
+    },
 
-  static incrementalMerge(attrs) {
-    return new IncrementalMerge(attrs);
-  }
+    reset() {
+      this.state = null;
+      this.match = null;
+      this.lastProcessed = 0;
+    }
 
-  static interactive(attrs) {
-    return new Interactive(attrs);
-  }
+  };
+  return QueueOptimizer;
+}();
 
-  static jog(attrs) {
-    return new Jog(attrs);
+var NullOptimizer = function NullOptimizerClosure() {
+  function NullOptimizer(queue) {
+    this.queue = queue;
   }
 
-  static labelPrinter(attrs) {
-    return new LabelPrinter(attrs);
-  }
+  NullOptimizer.prototype = {
+    push(fn, args) {
+      this.queue.fnArray.push(fn);
+      this.queue.argsArray.push(args);
+    },
 
-  static layout(attrs) {
-    return new Layout(attrs);
-  }
+    flush() {},
 
-  static level(attrs) {
-    return new Level(attrs);
-  }
+    reset() {}
 
-  static linearized(attrs) {
-    return new Linearized(attrs);
-  }
+  };
+  return NullOptimizer;
+}();
 
-  static locale(attrs) {
-    return new Locale(attrs);
-  }
+var OperatorList = function OperatorListClosure() {
+  var CHUNK_SIZE = 1000;
+  var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
 
-  static localeSet(attrs) {
-    return new LocaleSet(attrs);
-  }
+  function OperatorList(intent, streamSink) {
+    this._streamSink = streamSink;
+    this.fnArray = [];
+    this.argsArray = [];
 
-  static log(attrs) {
-    return new Log(attrs);
-  }
+    if (streamSink && intent !== "oplist") {
+      this.optimizer = new QueueOptimizer(this);
+    } else {
+      this.optimizer = new NullOptimizer(this);
+    }
 
-  static map(attrs) {
-    return new MapElement(attrs);
+    this.dependencies = new Set();
+    this._totalLength = 0;
+    this.weight = 0;
+    this._resolved = streamSink ? null : Promise.resolve();
   }
 
-  static mediumInfo(attrs) {
-    return new MediumInfo(attrs);
-  }
+  OperatorList.prototype = {
+    get length() {
+      return this.argsArray.length;
+    },
 
-  static message(attrs) {
-    return new Message(attrs);
-  }
+    get ready() {
+      return this._resolved || this._streamSink.ready;
+    },
 
-  static messaging(attrs) {
-    return new Messaging(attrs);
-  }
+    get totalLength() {
+      return this._totalLength + this.length;
+    },
 
-  static mode(attrs) {
-    return new Mode(attrs);
-  }
+    addOp(fn, args) {
+      this.optimizer.push(fn, args);
+      this.weight++;
 
-  static modifyAnnots(attrs) {
-    return new ModifyAnnots(attrs);
-  }
+      if (this._streamSink) {
+        if (this.weight >= CHUNK_SIZE) {
+          this.flush();
+        } else if (this.weight >= CHUNK_SIZE_ABOUT && (fn === _util.OPS.restore || fn === 
_util.OPS.endText)) {
+          this.flush();
+        }
+      }
+    },
 
-  static msgId(attrs) {
-    return new MsgId(attrs);
-  }
+    addDependency(dependency) {
+      if (this.dependencies.has(dependency)) {
+        return;
+      }
 
-  static nameAttr(attrs) {
-    return new NameAttr(attrs);
-  }
+      this.dependencies.add(dependency);
+      this.addOp(_util.OPS.dependency, [dependency]);
+    },
 
-  static neverEmbed(attrs) {
-    return new NeverEmbed(attrs);
-  }
+    addDependencies(dependencies) {
+      for (const dependency of dependencies) {
+        this.addDependency(dependency);
+      }
+    },
 
-  static numberOfCopies(attrs) {
-    return new NumberOfCopies(attrs);
-  }
+    addOpList(opList) {
+      if (!(opList instanceof OperatorList)) {
+        (0, _util.warn)('addOpList - ignoring invalid "opList" parameter.');
+        return;
+      }
 
-  static openAction(attrs) {
-    return new OpenAction(attrs);
-  }
+      for (const dependency of opList.dependencies) {
+        this.dependencies.add(dependency);
+      }
 
-  static output(attrs) {
-    return new Output(attrs);
-  }
+      for (var i = 0, ii = opList.length; i < ii; i++) {
+        this.addOp(opList.fnArray[i], opList.argsArray[i]);
+      }
+    },
 
-  static outputBin(attrs) {
-    return new OutputBin(attrs);
-  }
+    getIR() {
+      return {
+        fnArray: this.fnArray,
+        argsArray: this.argsArray,
+        length: this.length
+      };
+    },
 
-  static outputXSL(attrs) {
-    return new OutputXSL(attrs);
-  }
+    get _transfers() {
+      const transfers = [];
+      const {
+        fnArray,
+        argsArray,
+        length
+      } = this;
 
-  static overprint(attrs) {
-    return new Overprint(attrs);
-  }
+      for (let i = 0; i < length; i++) {
+        switch (fnArray[i]) {
+          case _util.OPS.paintInlineImageXObject:
+          case _util.OPS.paintInlineImageXObjectGroup:
+          case _util.OPS.paintImageMaskXObject:
+            const arg = argsArray[i][0];
+            ;
 
-  static packets(attrs) {
-    return new Packets(attrs);
-  }
+            if (!arg.cached) {
+              transfers.push(arg.data.buffer);
+            }
 
-  static pageOffset(attrs) {
-    return new PageOffset(attrs);
-  }
+            break;
+        }
+      }
 
-  static pageRange(attrs) {
-    return new PageRange(attrs);
-  }
+      return transfers;
+    },
 
-  static pagination(attrs) {
-    return new Pagination(attrs);
-  }
+    flush(lastChunk = false) {
+      this.optimizer.flush();
+      const length = this.length;
+      this._totalLength += length;
 
-  static paginationOverride(attrs) {
-    return new PaginationOverride(attrs);
-  }
+      this._streamSink.enqueue({
+        fnArray: this.fnArray,
+        argsArray: this.argsArray,
+        lastChunk,
+        length
+      }, 1, this._transfers);
 
-  static part(attrs) {
-    return new Part(attrs);
-  }
+      this.dependencies.clear();
+      this.fnArray.length = 0;
+      this.argsArray.length = 0;
+      this.weight = 0;
+      this.optimizer.reset();
+    }
 
-  static pcl(attrs) {
-    return new Pcl(attrs);
-  }
+  };
+  return OperatorList;
+}();
 
-  static pdf(attrs) {
-    return new Pdf(attrs);
-  }
+exports.OperatorList = OperatorList;
 
-  static pdfa(attrs) {
-    return new Pdfa(attrs);
-  }
+/***/ }),
+/* 45 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-  static permissions(attrs) {
-    return new Permissions(attrs);
-  }
 
-  static pickTrayByPDFSize(attrs) {
-    return new PickTrayByPDFSize(attrs);
-  }
 
-  static picture(attrs) {
-    return new Picture(attrs);
-  }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.PDFImage = void 0;
 
-  static plaintextMetadata(attrs) {
-    return new PlaintextMetadata(attrs);
-  }
+var _util = __w_pdfjs_require__(2);
 
-  static presence(attrs) {
-    return new Presence(attrs);
-  }
+var _primitives = __w_pdfjs_require__(5);
 
-  static present(attrs) {
-    return new Present(attrs);
-  }
+var _colorspace = __w_pdfjs_require__(23);
 
-  static print(attrs) {
-    return new Print(attrs);
-  }
+var _stream = __w_pdfjs_require__(12);
 
-  static printHighQuality(attrs) {
-    return new PrintHighQuality(attrs);
-  }
+var _jpeg_stream = __w_pdfjs_require__(18);
 
-  static printScaling(attrs) {
-    return new PrintScaling(attrs);
-  }
+var _jpx = __w_pdfjs_require__(21);
 
-  static printerName(attrs) {
-    return new PrinterName(attrs);
-  }
+function decodeAndClamp(value, addend, coefficient, max) {
+  value = addend + value * coefficient;
 
-  static producer(attrs) {
-    return new Producer(attrs);
+  if (value < 0) {
+    value = 0;
+  } else if (value > max) {
+    value = max;
   }
 
-  static ps(attrs) {
-    return new Ps(attrs);
-  }
+  return value;
+}
 
-  static range(attrs) {
-    return new Range(attrs);
-  }
+function resizeImageMask(src, bpc, w1, h1, w2, h2) {
+  var length = w2 * h2;
+  let dest;
 
-  static record(attrs) {
-    return new Record(attrs);
+  if (bpc <= 8) {
+    dest = new Uint8Array(length);
+  } else if (bpc <= 16) {
+    dest = new Uint16Array(length);
+  } else {
+    dest = new Uint32Array(length);
   }
 
-  static relevant(attrs) {
-    return new Relevant(attrs);
-  }
+  var xRatio = w1 / w2;
+  var yRatio = h1 / h2;
+  var i,
+      j,
+      py,
+      newIndex = 0,
+      oldIndex;
+  var xScaled = new Uint16Array(w2);
+  var w1Scanline = w1;
 
-  static rename(attrs) {
-    return new Rename(attrs);
+  for (i = 0; i < w2; i++) {
+    xScaled[i] = Math.floor(i * xRatio);
   }
 
-  static renderPolicy(attrs) {
-    return new RenderPolicy(attrs);
-  }
+  for (i = 0; i < h2; i++) {
+    py = Math.floor(i * yRatio) * w1Scanline;
 
-  static runScripts(attrs) {
-    return new RunScripts(attrs);
+    for (j = 0; j < w2; j++) {
+      oldIndex = py + xScaled[j];
+      dest[newIndex++] = src[oldIndex];
+    }
   }
 
-  static script(attrs) {
-    return new Script(attrs);
-  }
+  return dest;
+}
 
-  static scriptModel(attrs) {
-    return new ScriptModel(attrs);
-  }
+class PDFImage {
+  constructor({
+    xref,
+    res,
+    image,
+    isInline = false,
+    smask = null,
+    mask = null,
+    isMask = false,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    this.image = image;
+    var dict = image.dict;
+    const filter = dict.get("Filter");
 
-  static severity(attrs) {
-    return new Severity(attrs);
-  }
+    if ((0, _primitives.isName)(filter)) {
+      switch (filter.name) {
+        case "JPXDecode":
+          var jpxImage = new _jpx.JpxImage();
+          jpxImage.parseImageProperties(image.stream);
+          image.stream.reset();
+          image.width = jpxImage.width;
+          image.height = jpxImage.height;
+          image.bitsPerComponent = jpxImage.bitsPerComponent;
+          image.numComps = jpxImage.componentsCount;
+          break;
 
-  static silentPrint(attrs) {
-    return new SilentPrint(attrs);
-  }
+        case "JBIG2Decode":
+          image.bitsPerComponent = 1;
+          image.numComps = 1;
+          break;
+      }
+    }
 
-  static staple(attrs) {
-    return new Staple(attrs);
-  }
+    let width = dict.get("Width", "W");
+    let height = dict.get("Height", "H");
 
-  static startNode(attrs) {
-    return new StartNode(attrs);
-  }
+    if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 
0 && (image.width !== width || image.height !== height)) {
+      (0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image 
dictionary.");
+      width = image.width;
+      height = image.height;
+    }
 
-  static startPage(attrs) {
-    return new StartPage(attrs);
-  }
+    if (width < 1 || height < 1) {
+      throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);
+    }
 
-  static submitFormat(attrs) {
-    return new SubmitFormat(attrs);
-  }
+    this.width = width;
+    this.height = 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;
 
-  static submitUrl(attrs) {
-    return new SubmitUrl(attrs);
-  }
+    if (!bitsPerComponent) {
+      bitsPerComponent = dict.get("BitsPerComponent", "BPC");
 
-  static subsetBelow(attrs) {
-    return new SubsetBelow(attrs);
-  }
+      if (!bitsPerComponent) {
+        if (this.imageMask) {
+          bitsPerComponent = 1;
+        } else {
+          throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);
+        }
+      }
+    }
 
-  static suppressBanner(attrs) {
-    return new SuppressBanner(attrs);
-  }
+    this.bpc = bitsPerComponent;
 
-  static tagged(attrs) {
-    return new Tagged(attrs);
-  }
+    if (!this.imageMask) {
+      let colorSpace = dict.getRaw("ColorSpace") || dict.getRaw("CS");
 
-  static template(attrs) {
-    return new Template(attrs);
-  }
+      if (!colorSpace) {
+        (0, _util.info)("JPX images (which do not require color spaces)");
 
-  static templateCache(attrs) {
-    return new TemplateCache(attrs);
-  }
+        switch (image.numComps) {
+          case 1:
+            colorSpace = _primitives.Name.get("DeviceGray");
+            break;
 
-  static threshold(attrs) {
-    return new Threshold(attrs);
-  }
+          case 3:
+            colorSpace = _primitives.Name.get("DeviceRGB");
+            break;
 
-  static to(attrs) {
-    return new To(attrs);
-  }
+          case 4:
+            colorSpace = _primitives.Name.get("DeviceCMYK");
+            break;
 
-  static trace(attrs) {
-    return new Trace(attrs);
-  }
+          default:
+            throw new Error(`JPX images with ${image.numComps} ` + "color components not supported.");
+        }
+      }
 
-  static transform(attrs) {
-    return new Transform(attrs);
-  }
+      this.colorSpace = _colorspace.ColorSpace.parse({
+        cs: colorSpace,
+        xref,
+        resources: isInline ? res : null,
+        pdfFunctionFactory,
+        localColorSpaceCache
+      });
+      this.numComps = this.colorSpace.numComps;
+    }
 
-  static type(attrs) {
-    return new Type(attrs);
-  }
+    this.decode = dict.getArray("Decode", "D");
+    this.needsDecode = false;
 
-  static uri(attrs) {
-    return new Uri(attrs);
-  }
+    if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) 
|| isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
+      this.needsDecode = true;
+      var max = (1 << bitsPerComponent) - 1;
+      this.decodeCoefficients = [];
+      this.decodeAddends = [];
+      const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed";
 
-  static validate(attrs) {
-    return new Validate(attrs);
-  }
+      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] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
+        this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
+      }
+    }
 
-  static validateApprovalSignatures(attrs) {
-    return new ValidateApprovalSignatures(attrs);
-  }
+    if (smask) {
+      this.smask = new PDFImage({
+        xref,
+        res,
+        image: smask,
+        isInline,
+        pdfFunctionFactory,
+        localColorSpaceCache
+      });
+    } else if (mask) {
+      if ((0, _primitives.isStream)(mask)) {
+        var maskDict = mask.dict,
+            imageMask = maskDict.get("ImageMask", "IM");
 
-  static validationMessaging(attrs) {
-    return new ValidationMessaging(attrs);
+        if (!imageMask) {
+          (0, _util.warn)("Ignoring /Mask in image without /ImageMask.");
+        } else {
+          this.mask = new PDFImage({
+            xref,
+            res,
+            image: mask,
+            isInline,
+            isMask: true,
+            pdfFunctionFactory,
+            localColorSpaceCache
+          });
+        }
+      } else {
+        this.mask = mask;
+      }
+    }
   }
 
-  static version(attrs) {
-    return new Version(attrs);
-  }
+  static async buildImage({
+    xref,
+    res,
+    image,
+    isInline = false,
+    pdfFunctionFactory,
+    localColorSpaceCache
+  }) {
+    const imageData = image;
+    let smaskData = null;
+    let maskData = null;
+    const smask = image.dict.get("SMask");
+    const mask = image.dict.get("Mask");
 
-  static versionControl(attrs) {
-    return new VersionControl(attrs);
-  }
+    if (smask) {
+      smaskData = smask;
+    } else if (mask) {
+      if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
+        maskData = mask;
+      } else {
+        (0, _util.warn)("Unsupported mask format.");
+      }
+    }
 
-  static viewerPreferences(attrs) {
-    return new ViewerPreferences(attrs);
+    return new PDFImage({
+      xref,
+      res,
+      image: imageData,
+      isInline,
+      smask: smaskData,
+      mask: maskData,
+      pdfFunctionFactory,
+      localColorSpaceCache
+    });
   }
 
-  static webClient(attrs) {
-    return new WebClient(attrs);
-  }
+  static createMask({
+    imgArray,
+    width,
+    height,
+    imageIsFromDecodeStream,
+    inverseDecode
+  }) {
+    var computedLength = (width + 7 >> 3) * height;
+    var actualLength = imgArray.byteLength;
+    var haveFullData = computedLength === actualLength;
+    var data, i;
 
-  static whitespace(attrs) {
-    return new Whitespace(attrs);
-  }
+    if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
+      data = imgArray;
+    } else if (!inverseDecode) {
+      data = new Uint8ClampedArray(actualLength);
+      data.set(imgArray);
+    } else {
+      data = new Uint8ClampedArray(computedLength);
+      data.set(imgArray);
 
-  static window(attrs) {
-    return new Window(attrs);
-  }
+      for (i = actualLength; i < computedLength; i++) {
+        data[i] = 0xff;
+      }
+    }
 
-  static xdc(attrs) {
-    return new Xdc(attrs);
-  }
+    if (inverseDecode) {
+      for (i = 0; i < actualLength; i++) {
+        data[i] ^= 0xff;
+      }
+    }
 
-  static xdp(attrs) {
-    return new Xdp(attrs);
+    return {
+      data,
+      width,
+      height
+    };
   }
 
-  static xsl(attrs) {
-    return new Xsl(attrs);
+  get drawWidth() {
+    return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
   }
 
-  static zpl(attrs) {
-    return new Zpl(attrs);
+  get drawHeight() {
+    return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
   }
 
-}
-
-exports.ConfigNamespace = ConfigNamespace;
+  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;
 
-/***/ }),
-/* 61 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+    if (bpc === 1) {
+      for (i = 0, ii = buffer.length; i < ii; i++) {
+        buffer[i] = +!buffer[i];
+      }
 
+      return;
+    }
 
+    var index = 0;
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.ConnectionSetNamespace = void 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++;
+      }
+    }
+  }
 
-var _namespaces = __w_pdfjs_require__(52);
+  getComponents(buffer) {
+    var bpc = this.bpc;
 
-var _xfa_object = __w_pdfjs_require__(50);
+    if (bpc === 8) {
+      return buffer;
+    }
 
-const CONNECTION_SET_NS_ID = _namespaces.NamespaceIds.connectionSet.id;
+    var width = this.width;
+    var height = this.height;
+    var numComps = this.numComps;
+    var length = width * height * numComps;
+    var bufferPos = 0;
+    let output;
 
-class ConnectionSet extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "connectionSet", true);
-    this.wsdlConnection = new _xfa_object.XFAObjectArray();
-    this.xmlConnection = new _xfa_object.XFAObjectArray();
-    this.xsdConnection = new _xfa_object.XFAObjectArray();
-  }
+    if (bpc <= 8) {
+      output = new Uint8Array(length);
+    } else if (bpc <= 16) {
+      output = new Uint16Array(length);
+    } else {
+      output = new Uint32Array(length);
+    }
 
-}
+    var rowComps = width * numComps;
+    var max = (1 << bpc) - 1;
+    var i = 0,
+        ii,
+        buf;
 
-class EffectiveInputPolicy extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "effectiveInputPolicy");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+    if (bpc === 1) {
+      var mask, loop1End, loop2End;
 
-}
+      for (var j = 0; j < height; j++) {
+        loop1End = i + (rowComps & ~7);
+        loop2End = i + rowComps;
 
-class EffectiveOutputPolicy extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "effectiveOutputPolicy");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+        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;
 
-class Operation extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "operation");
-    this.id = attributes.id || "";
-    this.input = attributes.input || "";
-    this.name = attributes.name || "";
-    this.output = attributes.output || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+          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;
+        }
 
-class RootElement extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "rootElement");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+        while (bits < bpc) {
+          buf = buf << 8 | buffer[bufferPos++];
+          bits += 8;
+        }
 
-}
+        var remainingBits = bits - bpc;
+        let value = buf >> remainingBits;
 
-class SoapAction extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "soapAction");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+        if (value < 0) {
+          value = 0;
+        } else if (value > max) {
+          value = max;
+        }
 
-}
+        output[i] = value;
+        buf = buf & (1 << remainingBits) - 1;
+        bits = remainingBits;
+      }
+    }
 
-class SoapAddress extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "soapAddress");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
+    return output;
   }
 
-}
+  fillOpacity(rgbaBuf, width, height, actualHeight, image) {
+    var smask = this.smask;
+    var mask = this.mask;
+    var alphaBuf, sw, sh, i, ii, j;
 
-class Uri extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "uri");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+    if (smask) {
+      sw = smask.width;
+      sh = smask.height;
+      alphaBuf = new Uint8ClampedArray(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 Uint8ClampedArray(sw * sh);
+        mask.numComps = 1;
+        mask.fillGrayBuffer(alphaBuf);
 
-class WsdlAddress extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "wsdlAddress");
-    this.id = attributes.id || "";
-    this.name = attributes.name || "";
-    this.use = attributes.use || "";
-    this.usehref = attributes.usehref || "";
-  }
+        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 (Array.isArray(mask)) {
+        alphaBuf = new Uint8ClampedArray(width * height);
+        var numComps = this.numComps;
 
-class WsdlConnection extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "wsdlConnection", true);
-    this.dataDescription = attributes.dataDescription || "";
-    this.name = attributes.name || "";
-    this.effectiveInputPolicy = null;
-    this.effectiveOutputPolicy = null;
-    this.operation = null;
-    this.soapAction = null;
-    this.soapAddress = null;
-    this.wsdlAddress = null;
-  }
+        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;
 
-class XmlConnection extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "xmlConnection", true);
-    this.dataDescription = attributes.dataDescription || "";
-    this.name = attributes.name || "";
-    this.uri = null;
-  }
+            if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
+              opacity = 255;
+              break;
+            }
+          }
 
-}
+          alphaBuf[i] = opacity;
+        }
+      } else {
+        throw new _util.FormatError("Unknown mask format.");
+      }
+    }
 
-class XsdConnection extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(CONNECTION_SET_NS_ID, "xsdConnection", true);
-    this.dataDescription = attributes.dataDescription || "";
-    this.name = attributes.name || "";
-    this.rootElement = null;
-    this.uri = null;
+    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(buffer, width, height) {
+    var matte = this.smask && this.smask.matte;
 
-class ConnectionSetNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (ConnectionSetNamespace.hasOwnProperty(name)) {
-      return ConnectionSetNamespace[name](attributes);
+    if (!matte) {
+      return;
     }
 
-    return undefined;
-  }
-
-  static connectionSet(attrs) {
-    return new ConnectionSet(attrs);
-  }
-
-  static effectiveInputPolicy(attrs) {
-    return new EffectiveInputPolicy(attrs);
-  }
+    var matteRgb = this.colorSpace.getRgb(matte, 0);
+    var matteR = matteRgb[0];
+    var matteG = matteRgb[1];
+    var matteB = matteRgb[2];
+    var length = width * height * 4;
 
-  static effectiveOutputPolicy(attrs) {
-    return new EffectiveOutputPolicy(attrs);
-  }
+    for (var i = 0; i < length; i += 4) {
+      var alpha = buffer[i + 3];
 
-  static operation(attrs) {
-    return new Operation(attrs);
-  }
+      if (alpha === 0) {
+        buffer[i] = 255;
+        buffer[i + 1] = 255;
+        buffer[i + 2] = 255;
+        continue;
+      }
 
-  static rootElement(attrs) {
-    return new RootElement(attrs);
+      var k = 255 / alpha;
+      buffer[i] = (buffer[i] - matteR) * k + matteR;
+      buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
+      buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
+    }
   }
 
-  static soapAction(attrs) {
-    return new SoapAction(attrs);
-  }
+  createImageData(forceRGBA = false) {
+    var drawWidth = this.drawWidth;
+    var drawHeight = this.drawHeight;
+    var imgData = {
+      width: drawWidth,
+      height: drawHeight,
+      kind: 0,
+      data: null
+    };
+    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;
 
-  static soapAddress(attrs) {
-    return new SoapAddress(attrs);
-  }
+    if (!forceRGBA) {
+      var kind;
 
-  static uri(attrs) {
-    return new Uri(attrs);
-  }
+      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;
+      }
 
-  static wsdlAddress(attrs) {
-    return new WsdlAddress(attrs);
-  }
+      if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) 
{
+        imgData.kind = kind;
+        imgArray = this.getImageBytes(originalHeight * rowBytes);
 
-  static wsdlConnection(attrs) {
-    return new WsdlConnection(attrs);
-  }
+        if (this.image instanceof _stream.DecodeStream) {
+          imgData.data = imgArray;
+        } else {
+          var newArray = new Uint8ClampedArray(imgArray.length);
+          newArray.set(imgArray);
+          imgData.data = newArray;
+        }
 
-  static xmlConnection(attrs) {
-    return new XmlConnection(attrs);
-  }
+        if (this.needsDecode) {
+          (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image 
must be grayscale.");
+          var buffer = imgData.data;
 
-  static xsdConnection(attrs) {
-    return new XsdConnection(attrs);
-  }
+          for (var i = 0, ii = buffer.length; i < ii; i++) {
+            buffer[i] ^= 0xff;
+          }
+        }
 
-}
+        return imgData;
+      }
 
-exports.ConnectionSetNamespace = ConnectionSetNamespace;
+      if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
+        let imageLength = originalHeight * rowBytes;
 
-/***/ }),
-/* 62 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+        switch (this.colorSpace.name) {
+          case "DeviceGray":
+            imageLength *= 3;
 
+          case "DeviceRGB":
+          case "DeviceCMYK":
+            imgData.kind = _util.ImageKind.RGB_24BPP;
+            imgData.data = this.getImageBytes(imageLength, 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;
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.DatasetsNamespace = void 0;
+    if (!forceRGBA && !this.smask && !this.mask) {
+      imgData.kind = _util.ImageKind.RGB_24BPP;
+      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
+      alpha01 = 0;
+      maybeUndoPreblend = false;
+    } else {
+      imgData.kind = _util.ImageKind.RGBA_32BPP;
+      imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
+      alpha01 = 1;
+      maybeUndoPreblend = true;
+      this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
+    }
 
-var _xfa_object = __w_pdfjs_require__(50);
+    if (this.needsDecode) {
+      this.decodeBuffer(comps);
+    }
 
-var _namespaces = __w_pdfjs_require__(52);
+    this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, 
actualHeight, bpc, comps, alpha01);
 
-const DATASETS_NS_ID = _namespaces.NamespaceIds.datasets.id;
+    if (maybeUndoPreblend) {
+      this.undoPreblend(imgData.data, drawWidth, actualHeight);
+    }
 
-class Data extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(DATASETS_NS_ID, "data", attributes);
+    return imgData;
   }
 
-}
+  fillGrayBuffer(buffer) {
+    var numComps = this.numComps;
 
-class Datasets extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(DATASETS_NS_ID, "datasets", true);
-    this.data = null;
-    this.Signature = null;
-  }
+    if (numComps !== 1) {
+      throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
+    }
 
-  [_xfa_object.$onChild](child) {
-    const name = child[_xfa_object.$nodeName];
+    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 (name === "data" && child[_xfa_object.$namespaceId] === DATASETS_NS_ID || name === "Signature" && 
child[_xfa_object.$namespaceId] === _namespaces.NamespaceIds.signature.id) {
-      this[name] = child;
-    } else {
-      child[_xfa_object.$global] = true;
-    }
+    if (bpc === 1) {
+      length = width * height;
 
-    this[_xfa_object.$appendChild](child);
-  }
+      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;
+    }
 
-class DatasetsNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (DatasetsNamespace.hasOwnProperty(name)) {
-      return DatasetsNamespace[name](attributes);
+    if (this.needsDecode) {
+      this.decodeBuffer(comps);
     }
 
-    return undefined;
-  }
+    length = width * height;
+    var scale = 255 / ((1 << bpc) - 1);
 
-  static datasets(attributes) {
-    return new Datasets(attributes);
+    for (i = 0; i < length; ++i) {
+      buffer[i] = scale * comps[i];
+    }
   }
 
-  static data(attributes) {
-    return new Data(attributes);
+  getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
+    this.image.reset();
+    this.image.drawWidth = drawWidth || this.width;
+    this.image.drawHeight = drawHeight || this.height;
+    this.image.forceRGB = !!forceRGB;
+    return this.image.getBytes(length, true);
   }
 
 }
 
-exports.DatasetsNamespace = DatasetsNamespace;
+exports.PDFImage = PDFImage;
 
 /***/ }),
-/* 63 */
+/* 46 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -63862,701 +53872,839 @@ exports.DatasetsNamespace = DatasetsNamespace;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.LocaleSetNamespace = void 0;
+exports.incrementalUpdate = incrementalUpdate;
+exports.writeDict = writeDict;
 
-var _namespaces = __w_pdfjs_require__(52);
+var _util = __w_pdfjs_require__(2);
 
-var _xfa_object = __w_pdfjs_require__(50);
+var _primitives = __w_pdfjs_require__(5);
 
-var _utils = __w_pdfjs_require__(51);
+var _core_utils = __w_pdfjs_require__(8);
 
-const LOCALE_SET_NS_ID = _namespaces.NamespaceIds.localeSet.id;
+var _xml_parser = __w_pdfjs_require__(47);
 
-class CalendarSymbols extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "calendarSymbols", true);
-    this.name = "gregorian";
-    this.dayNames = new _xfa_object.XFAObjectArray(2);
-    this.eraNames = null;
-    this.meridiemNames = null;
-    this.monthNames = new _xfa_object.XFAObjectArray(2);
-  }
+var _crypto = __w_pdfjs_require__(22);
 
-}
+function writeDict(dict, buffer, transform) {
+  buffer.push("<<");
 
-class CurrencySymbol extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "currencySymbol");
-    this.name = (0, _utils.getStringOption)(attributes.name, ["symbol", "isoname", "decimal"]);
+  for (const key of dict.getKeys()) {
+    buffer.push(` /${(0, _core_utils.escapePDFName)(key)} `);
+    writeValue(dict.getRaw(key), buffer, transform);
   }
 
+  buffer.push(">>");
 }
 
-class CurrencySymbols extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "currencySymbols", true);
-    this.currencySymbol = new _xfa_object.XFAObjectArray(3);
-  }
-
-}
+function writeStream(stream, buffer, transform) {
+  writeDict(stream.dict, buffer, transform);
+  buffer.push(" stream\n");
+  let string = (0, _util.bytesToString)(stream.getBytes());
 
-class DatePattern extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "datePattern");
-    this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]);
+  if (transform !== null) {
+    string = transform.encryptString(string);
   }
 
+  buffer.push(string);
+  buffer.push("\nendstream\n");
 }
 
-class DatePatterns extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "datePatterns", true);
-    this.datePattern = new _xfa_object.XFAObjectArray(4);
-  }
+function writeArray(array, buffer, transform) {
+  buffer.push("[");
+  let first = true;
 
-}
+  for (const val of array) {
+    if (!first) {
+      buffer.push(" ");
+    } else {
+      first = false;
+    }
 
-class DateTimeSymbols extends _xfa_object.ContentObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "dateTimeSymbols");
+    writeValue(val, buffer, transform);
   }
 
+  buffer.push("]");
 }
 
-class Day extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "day");
+function numberToString(value) {
+  if (Number.isInteger(value)) {
+    return value.toString();
   }
 
-}
+  const roundedValue = Math.round(value * 100);
 
-class DayNames extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "dayNames", true);
-    this.abbr = (0, _utils.getInteger)({
-      data: attributes.abbr,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.day = new _xfa_object.XFAObjectArray(7);
+  if (roundedValue % 100 === 0) {
+    return (roundedValue / 100).toString();
   }
 
-}
-
-class Era extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "era");
+  if (roundedValue % 10 === 0) {
+    return value.toFixed(1);
   }
 
+  return value.toFixed(2);
 }
 
-class EraNames extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "eraNames", true);
-    this.era = new _xfa_object.XFAObjectArray(2);
-  }
-
-}
+function writeValue(value, buffer, transform) {
+  if ((0, _primitives.isName)(value)) {
+    buffer.push(`/${(0, _core_utils.escapePDFName)(value.name)}`);
+  } else if ((0, _primitives.isRef)(value)) {
+    buffer.push(`${value.num} ${value.gen} R`);
+  } else if (Array.isArray(value)) {
+    writeArray(value, buffer, transform);
+  } else if (typeof value === "string") {
+    if (transform !== null) {
+      value = transform.encryptString(value);
+    }
 
-class Locale extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "locale", true);
-    this.desc = attributes.desc || "";
-    this.name = "isoname";
-    this.calendarSymbols = null;
-    this.currencySymbols = null;
-    this.datePatterns = null;
-    this.dateTimeSymbols = null;
-    this.numberPatterns = null;
-    this.numberSymbols = null;
-    this.timePatterns = null;
-    this.typeFaces = null;
+    buffer.push(`(${(0, _util.escapeString)(value)})`);
+  } else if (typeof value === "number") {
+    buffer.push(numberToString(value));
+  } else if ((0, _primitives.isDict)(value)) {
+    writeDict(value, buffer, transform);
+  } else if ((0, _primitives.isStream)(value)) {
+    writeStream(value, buffer, transform);
   }
-
 }
 
-class LocaleSet extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "localeSet", true);
-    this.locale = new _xfa_object.XFAObjectArray();
+function writeInt(number, size, offset, buffer) {
+  for (let i = size + offset - 1; i > offset - 1; i--) {
+    buffer[i] = number & 0xff;
+    number >>= 8;
   }
 
+  return offset + size;
 }
 
-class Meridiem extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "meridiem");
+function writeString(string, offset, buffer) {
+  for (let i = 0, len = string.length; i < len; i++) {
+    buffer[offset + i] = string.charCodeAt(i) & 0xff;
   }
-
 }
 
-class MeridiemNames extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "meridiemNames", true);
-    this.meridiem = new _xfa_object.XFAObjectArray(2);
-  }
-
-}
+function computeMD5(filesize, xrefInfo) {
+  const time = Math.floor(Date.now() / 1000);
+  const filename = xrefInfo.filename || "";
+  const md5Buffer = [time.toString(), filename, filesize.toString()];
+  let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);
 
-class Month extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "month");
+  for (const value of Object.values(xrefInfo.info)) {
+    md5Buffer.push(value);
+    md5BufferLen += value.length;
   }
 
-}
+  const array = new Uint8Array(md5BufferLen);
+  let offset = 0;
 
-class MonthNames extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "monthNames", true);
-    this.abbr = (0, _utils.getInteger)({
-      data: attributes.abbr,
-      defaultValue: 0,
-      validate: x => x === 1
-    });
-    this.month = new _xfa_object.XFAObjectArray(12);
+  for (const str of md5Buffer) {
+    writeString(str, offset, array);
+    offset += str.length;
   }
 
+  return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
 }
 
-class NumberPattern extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "numberPattern");
-    this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]);
+function updateXFA(datasetsRef, newRefs, xref) {
+  if (datasetsRef === null || xref === null) {
+    return;
   }
 
-}
+  const datasets = xref.fetchIfRef(datasetsRef);
+  const str = (0, _util.bytesToString)(datasets.getBytes());
+  const xml = new _xml_parser.SimpleXMLParser({
+    hasAttributes: true
+  }).parseFromString(str);
 
-class NumberPatterns extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "numberPatterns", true);
-    this.numberPattern = new _xfa_object.XFAObjectArray(4);
-  }
+  for (const {
+    xfa
+  } of newRefs) {
+    if (!xfa) {
+      continue;
+    }
 
-}
+    const {
+      path,
+      value
+    } = xfa;
 
-class NumberSymbol extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "numberSymbol");
-    this.name = (0, _utils.getStringOption)(attributes.name, ["decimal", "grouping", "percent", "minus", 
"zero"]);
-  }
+    if (!path) {
+      continue;
+    }
 
-}
+    const node = xml.documentElement.searchNode((0, _core_utils.parseXFAPath)(path), 0);
 
-class NumberSymbols extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "numberSymbols", true);
-    this.numberSymbol = new _xfa_object.XFAObjectArray(5);
+    if (node) {
+      node.childNodes = [new _xml_parser.SimpleDOMNode("#text", value)];
+    } else {
+      (0, _util.warn)(`Node not found for path: ${path}`);
+    }
   }
 
-}
+  const buffer = [];
+  xml.documentElement.dump(buffer);
+  let updatedXml = buffer.join("");
+  const encrypt = xref.encrypt;
 
-class TimePattern extends _xfa_object.StringObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "timePattern");
-    this.name = (0, _utils.getStringOption)(attributes.name, ["full", "long", "med", "short"]);
+  if (encrypt) {
+    const transform = encrypt.createCipherTransform(datasetsRef.num, datasetsRef.gen);
+    updatedXml = transform.encryptString(updatedXml);
   }
 
+  const data = `${datasetsRef.num} ${datasetsRef.gen} obj\n` + `<< /Type /EmbeddedFile /Length 
${updatedXml.length}>>\nstream\n` + updatedXml + "\nendstream\nendobj\n";
+  newRefs.push({
+    ref: datasetsRef,
+    data
+  });
 }
 
-class TimePatterns extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "timePatterns", true);
-    this.timePattern = new _xfa_object.XFAObjectArray(4);
+function incrementalUpdate({
+  originalData,
+  xrefInfo,
+  newRefs,
+  xref = null,
+  datasetsRef = null
+}) {
+  updateXFA(datasetsRef, newRefs, xref);
+  const newXref = new _primitives.Dict(null);
+  const refForXrefTable = xrefInfo.newRef;
+  let buffer, baseOffset;
+  const lastByte = originalData[originalData.length - 1];
+
+  if (lastByte === 0x0a || lastByte === 0x0d) {
+    buffer = [];
+    baseOffset = originalData.length;
+  } else {
+    buffer = ["\n"];
+    baseOffset = originalData.length + 1;
   }
 
-}
+  newXref.set("Size", refForXrefTable.num + 1);
+  newXref.set("Prev", xrefInfo.startXRef);
+  newXref.set("Type", _primitives.Name.get("XRef"));
 
-class TypeFace extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "typeFace", true);
-    this.name = attributes.name | "";
+  if (xrefInfo.rootRef !== null) {
+    newXref.set("Root", xrefInfo.rootRef);
   }
 
-}
-
-class TypeFaces extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(LOCALE_SET_NS_ID, "typeFaces", true);
-    this.typeFace = new _xfa_object.XFAObjectArray();
+  if (xrefInfo.infoRef !== null) {
+    newXref.set("Info", xrefInfo.infoRef);
   }
 
-}
+  if (xrefInfo.encrypt !== null) {
+    newXref.set("Encrypt", xrefInfo.encrypt);
+  }
 
-class LocaleSetNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (LocaleSetNamespace.hasOwnProperty(name)) {
-      return LocaleSetNamespace[name](attributes);
-    }
+  newRefs.push({
+    ref: refForXrefTable,
+    data: ""
+  });
+  newRefs = newRefs.sort((a, b) => {
+    return a.ref.num - b.ref.num;
+  });
+  const xrefTableData = [[0, 1, 0xffff]];
+  const indexes = [0, 1];
+  let maxOffset = 0;
 
-    return undefined;
+  for (const {
+    ref,
+    data
+  } of newRefs) {
+    maxOffset = Math.max(maxOffset, baseOffset);
+    xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);
+    baseOffset += data.length;
+    indexes.push(ref.num);
+    indexes.push(1);
+    buffer.push(data);
   }
 
-  static calendarSymbols(attrs) {
-    return new CalendarSymbols(attrs);
-  }
+  newXref.set("Index", indexes);
 
-  static currencySymbol(attrs) {
-    return new CurrencySymbol(attrs);
+  if (xrefInfo.fileIds.length !== 0) {
+    const md5 = computeMD5(baseOffset, xrefInfo);
+    newXref.set("ID", [xrefInfo.fileIds[0], md5]);
   }
 
-  static currencySymbols(attrs) {
-    return new CurrencySymbols(attrs);
+  const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);
+  const sizes = [1, offsetSize, 2];
+  const structSize = sizes[0] + sizes[1] + sizes[2];
+  const tableLength = structSize * xrefTableData.length;
+  newXref.set("W", sizes);
+  newXref.set("Length", tableLength);
+  buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`);
+  writeDict(newXref, buffer, null);
+  buffer.push(" stream\n");
+  const bufferLen = buffer.reduce((a, str) => a + str.length, 0);
+  const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`;
+  const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);
+  array.set(originalData);
+  let offset = originalData.length;
+
+  for (const str of buffer) {
+    writeString(str, offset, array);
+    offset += str.length;
   }
 
-  static datePattern(attrs) {
-    return new DatePattern(attrs);
+  for (const [type, objOffset, gen] of xrefTableData) {
+    offset = writeInt(type, sizes[0], offset, array);
+    offset = writeInt(objOffset, sizes[1], offset, array);
+    offset = writeInt(gen, sizes[2], offset, array);
   }
 
-  static datePatterns(attrs) {
-    return new DatePatterns(attrs);
-  }
+  writeString(footer, offset, array);
+  return array;
+}
 
-  static dateTimeSymbols(attrs) {
-    return new DateTimeSymbols(attrs);
-  }
+/***/ }),
+/* 47 */
+/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
-  static day(attrs) {
-    return new Day(attrs);
-  }
 
-  static dayNames(attrs) {
-    return new DayNames(attrs);
-  }
 
-  static era(attrs) {
-    return new Era(attrs);
-  }
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+exports.SimpleXMLParser = exports.SimpleDOMNode = void 0;
 
-  static eraNames(attrs) {
-    return new EraNames(attrs);
-  }
+var _util = __w_pdfjs_require__(2);
 
-  static locale(attrs) {
-    return new Locale(attrs);
-  }
+const XMLParserErrorCode = {
+  NoError: 0,
+  EndOfDocument: -1,
+  UnterminatedCdat: -2,
+  UnterminatedXmlDeclaration: -3,
+  UnterminatedDoctypeDeclaration: -4,
+  UnterminatedComment: -5,
+  MalformedElement: -6,
+  OutOfMemory: -7,
+  UnterminatedAttributeValue: -8,
+  UnterminatedElement: -9,
+  ElementNeverBegun: -10
+};
 
-  static localeSet(attrs) {
-    return new LocaleSet(attrs);
-  }
+function isWhitespace(s, index) {
+  const ch = s[index];
+  return ch === " " || ch === "\n" || ch === "\r" || ch === "\t";
+}
 
-  static meridiem(attrs) {
-    return new Meridiem(attrs);
+function isWhitespaceString(s) {
+  for (let i = 0, ii = s.length; i < ii; i++) {
+    if (!isWhitespace(s, i)) {
+      return false;
+    }
   }
 
-  static meridiemNames(attrs) {
-    return new MeridiemNames(attrs);
-  }
+  return true;
+}
 
-  static month(attrs) {
-    return new Month(attrs);
-  }
+class XMLParserBase {
+  _resolveEntities(s) {
+    return s.replace(/&([^;]+);/g, (all, entity) => {
+      if (entity.substring(0, 2) === "#x") {
+        return String.fromCodePoint(parseInt(entity.substring(2), 16));
+      } else if (entity.substring(0, 1) === "#") {
+        return String.fromCodePoint(parseInt(entity.substring(1), 10));
+      }
 
-  static monthNames(attrs) {
-    return new MonthNames(attrs);
-  }
+      switch (entity) {
+        case "lt":
+          return "<";
 
-  static numberPattern(attrs) {
-    return new NumberPattern(attrs);
-  }
+        case "gt":
+          return ">";
 
-  static numberPatterns(attrs) {
-    return new NumberPatterns(attrs);
-  }
+        case "amp":
+          return "&";
 
-  static numberSymbol(attrs) {
-    return new NumberSymbol(attrs);
-  }
+        case "quot":
+          return '"';
+      }
 
-  static numberSymbols(attrs) {
-    return new NumberSymbols(attrs);
+      return this.onResolveEntity(entity);
+    });
   }
 
-  static timePattern(attrs) {
-    return new TimePattern(attrs);
-  }
+  _parseContent(s, start) {
+    const attributes = [];
+    let pos = start;
 
-  static timePatterns(attrs) {
-    return new TimePatterns(attrs);
-  }
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
+      }
+    }
 
-  static typeFace(attrs) {
-    return new TypeFace(attrs);
-  }
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
+    }
 
-  static typeFaces(attrs) {
-    return new TypeFaces(attrs);
-  }
+    const name = s.substring(start, pos);
+    skipWs();
 
-}
+    while (pos < s.length && s[pos] !== ">" && s[pos] !== "/" && s[pos] !== "?") {
+      skipWs();
+      let attrName = "",
+          attrValue = "";
 
-exports.LocaleSetNamespace = LocaleSetNamespace;
+      while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== "=") {
+        attrName += s[pos];
+        ++pos;
+      }
 
-/***/ }),
-/* 64 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+      skipWs();
 
+      if (s[pos] !== "=") {
+        return null;
+      }
 
+      ++pos;
+      skipWs();
+      const attrEndChar = s[pos];
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.SignatureNamespace = void 0;
+      if (attrEndChar !== '"' && attrEndChar !== "'") {
+        return null;
+      }
 
-var _namespaces = __w_pdfjs_require__(52);
+      const attrEndIndex = s.indexOf(attrEndChar, ++pos);
 
-var _xfa_object = __w_pdfjs_require__(50);
+      if (attrEndIndex < 0) {
+        return null;
+      }
 
-const SIGNATURE_NS_ID = _namespaces.NamespaceIds.signature.id;
+      attrValue = s.substring(pos, attrEndIndex);
+      attributes.push({
+        name: attrName,
+        value: this._resolveEntities(attrValue)
+      });
+      pos = attrEndIndex + 1;
+      skipWs();
+    }
 
-class Signature extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(SIGNATURE_NS_ID, "signature", true);
+    return {
+      name,
+      attributes,
+      parsed: pos - start
+    };
   }
 
-}
+  _parseProcessingInstruction(s, start) {
+    let pos = start;
 
-class SignatureNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (SignatureNamespace.hasOwnProperty(name)) {
-      return SignatureNamespace[name](attributes);
+    function skipWs() {
+      while (pos < s.length && isWhitespace(s, pos)) {
+        ++pos;
+      }
     }
 
-    return undefined;
-  }
+    while (pos < s.length && !isWhitespace(s, pos) && s[pos] !== ">" && s[pos] !== "/") {
+      ++pos;
+    }
+
+    const name = s.substring(start, pos);
+    skipWs();
+    const attrStart = pos;
+
+    while (pos < s.length && (s[pos] !== "?" || s[pos + 1] !== ">")) {
+      ++pos;
+    }
 
-  static signature(attributes) {
-    return new Signature(attributes);
+    const value = s.substring(attrStart, pos);
+    return {
+      name,
+      value,
+      parsed: pos - start
+    };
   }
 
-}
+  parseXml(s) {
+    let i = 0;
 
-exports.SignatureNamespace = SignatureNamespace;
+    while (i < s.length) {
+      const ch = s[i];
+      let j = i;
 
-/***/ }),
-/* 65 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+      if (ch === "<") {
+        ++j;
+        const ch2 = s[j];
+        let q;
 
+        switch (ch2) {
+          case "/":
+            ++j;
+            q = s.indexOf(">", j);
 
+            if (q < 0) {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.StylesheetNamespace = void 0;
+            this.onEndElement(s.substring(j, q));
+            j = q + 1;
+            break;
 
-var _namespaces = __w_pdfjs_require__(52);
+          case "?":
+            ++j;
 
-var _xfa_object = __w_pdfjs_require__(50);
+            const pi = this._parseProcessingInstruction(s, j);
 
-const STYLESHEET_NS_ID = _namespaces.NamespaceIds.stylesheet.id;
+            if (s.substring(j + pi.parsed, j + pi.parsed + 2) !== "?>") {
+              this.onError(XMLParserErrorCode.UnterminatedXmlDeclaration);
+              return;
+            }
 
-class Stylesheet extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(STYLESHEET_NS_ID, "stylesheet", true);
-  }
+            this.onPi(pi.name, pi.value);
+            j += pi.parsed + 2;
+            break;
 
-}
+          case "!":
+            if (s.substring(j + 1, j + 3) === "--") {
+              q = s.indexOf("-->", j + 3);
 
-class StylesheetNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (StylesheetNamespace.hasOwnProperty(name)) {
-      return StylesheetNamespace[name](attributes);
-    }
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedComment);
+                return;
+              }
 
-    return undefined;
-  }
+              this.onComment(s.substring(j + 3, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "[CDATA[") {
+              q = s.indexOf("]]>", j + 8);
 
-  static stylesheet(attributes) {
-    return new Stylesheet(attributes);
-  }
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedCdat);
+                return;
+              }
 
-}
+              this.onCdata(s.substring(j + 8, q));
+              j = q + 3;
+            } else if (s.substring(j + 1, j + 8) === "DOCTYPE") {
+              const q2 = s.indexOf("[", j + 8);
+              let complexDoctype = false;
+              q = s.indexOf(">", j + 8);
 
-exports.StylesheetNamespace = StylesheetNamespace;
+              if (q < 0) {
+                this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                return;
+              }
 
-/***/ }),
-/* 66 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+              if (q2 > 0 && q > q2) {
+                q = s.indexOf("]>", j + 8);
 
+                if (q < 0) {
+                  this.onError(XMLParserErrorCode.UnterminatedDoctypeDeclaration);
+                  return;
+                }
 
+                complexDoctype = true;
+              }
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XdpNamespace = void 0;
+              const doctypeContent = s.substring(j + 8, q + (complexDoctype ? 1 : 0));
+              this.onDoctype(doctypeContent);
+              j = q + (complexDoctype ? 2 : 1);
+            } else {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
+            }
 
-var _namespaces = __w_pdfjs_require__(52);
+            break;
 
-var _xfa_object = __w_pdfjs_require__(50);
+          default:
+            const content = this._parseContent(s, j);
 
-const XDP_NS_ID = _namespaces.NamespaceIds.xdp.id;
+            if (content === null) {
+              this.onError(XMLParserErrorCode.MalformedElement);
+              return;
+            }
 
-class Xdp extends _xfa_object.XFAObject {
-  constructor(attributes) {
-    super(XDP_NS_ID, "xdp", true);
-    this.uuid = attributes.uuid || "";
-    this.timeStamp = attributes.timeStamp || "";
-    this.config = null;
-    this.connectionSet = null;
-    this.datasets = null;
-    this.localeSet = null;
-    this.stylesheet = new _xfa_object.XFAObjectArray();
-    this.template = null;
-  }
+            let isClosed = false;
 
-  [_xfa_object.$onChildCheck](child) {
-    const ns = _namespaces.NamespaceIds[child[_xfa_object.$nodeName]];
-    return ns && child[_xfa_object.$namespaceId] === ns.id;
-  }
+            if (s.substring(j + content.parsed, j + content.parsed + 2) === "/>") {
+              isClosed = true;
+            } else if (s.substring(j + content.parsed, j + content.parsed + 1) !== ">") {
+              this.onError(XMLParserErrorCode.UnterminatedElement);
+              return;
+            }
 
-}
+            this.onBeginElement(content.name, content.attributes, isClosed);
+            j += content.parsed + (isClosed ? 2 : 1);
+            break;
+        }
+      } else {
+        while (j < s.length && s[j] !== "<") {
+          j++;
+        }
 
-class XdpNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (XdpNamespace.hasOwnProperty(name)) {
-      return XdpNamespace[name](attributes);
-    }
+        const text = s.substring(i, j);
+        this.onText(this._resolveEntities(text));
+      }
 
-    return undefined;
+      i = j;
+    }
   }
 
-  static xdp(attributes) {
-    return new Xdp(attributes);
+  onResolveEntity(name) {
+    return `&${name};`;
   }
 
-}
-
-exports.XdpNamespace = XdpNamespace;
-
-/***/ }),
-/* 67 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+  onPi(name, value) {}
 
+  onComment(text) {}
 
+  onCdata(text) {}
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XhtmlNamespace = void 0;
+  onDoctype(doctypeContent) {}
 
-var _namespaces = __w_pdfjs_require__(52);
+  onText(text) {}
 
-var _xfa_object = __w_pdfjs_require__(50);
+  onBeginElement(name, attributes, isEmpty) {}
 
-const XHTML_NS_ID = _namespaces.NamespaceIds.xhtml.id;
-const VALID_STYLES = new Set(["color", "font", "font-family", "font-size", "font-stretch", "font-style", 
"font-weight", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "letter-spacing", 
"line-height", "orphans", "page-break-after", "page-break-before", "page-break-inside", "tab-interval", 
"tab-stop", "text-decoration", "text-indent", "vertical-align", "widows", "kerning-mode", 
"xfa-font-horizontal-scale", "xfa-font-vertical-scale", "xfa-tab-stops"]);
+  onEndElement(name) {}
 
-function checkStyle(style) {
-  if (!style) {
-    return "";
-  }
+  onError(code) {}
 
-  return style.trim().split(/\s*;\s*/).filter(s => !!s).map(s => s.split(/\s*:\s*/, 2)).filter(([key]) => 
VALID_STYLES.has(key)).map(kv => kv.join(":")).join(";");
 }
 
-class A extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "a");
-    this.href = attributes.href || "";
-    this.style = checkStyle(attributes.style);
+class SimpleDOMNode {
+  constructor(nodeName, nodeValue) {
+    this.nodeName = nodeName;
+    this.nodeValue = nodeValue;
+    Object.defineProperty(this, "parentNode", {
+      value: null,
+      writable: true
+    });
   }
 
-}
-
-class B extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "b");
-    this.style = checkStyle(attributes.style);
+  get firstChild() {
+    return this.childNodes && this.childNodes[0];
   }
 
-}
+  get nextSibling() {
+    const childNodes = this.parentNode.childNodes;
 
-class Body extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "body");
-    this.style = checkStyle(attributes.style);
-  }
+    if (!childNodes) {
+      return undefined;
+    }
 
-}
+    const index = childNodes.indexOf(this);
 
-class Br extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "br");
-    this.style = checkStyle(attributes.style);
-  }
+    if (index === -1) {
+      return undefined;
+    }
 
-  [_xfa_object.$text]() {
-    return "\n";
+    return childNodes[index + 1];
   }
 
-}
+  get textContent() {
+    if (!this.childNodes) {
+      return this.nodeValue || "";
+    }
 
-class Html extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "html");
-    this.style = checkStyle(attributes.style);
+    return this.childNodes.map(function (child) {
+      return child.textContent;
+    }).join("");
   }
 
-}
-
-class I extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "i");
-    this.style = checkStyle(attributes.style);
+  hasChildNodes() {
+    return this.childNodes && this.childNodes.length > 0;
   }
 
-}
+  searchNode(paths, pos) {
+    if (pos >= paths.length) {
+      return this;
+    }
 
-class Li extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "li");
-    this.style = checkStyle(attributes.style);
-  }
+    const component = paths[pos];
+    const stack = [];
+    let node = this;
 
-}
+    while (true) {
+      if (component.name === node.nodeName) {
+        if (component.pos === 0) {
+          const res = node.searchNode(paths, pos + 1);
 
-class Ol extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "ol");
-    this.style = checkStyle(attributes.style);
-  }
+          if (res !== null) {
+            return res;
+          }
+        } else if (stack.length === 0) {
+          return null;
+        } else {
+          const [parent] = stack.pop();
+          let siblingPos = 0;
 
-}
+          for (const child of parent.childNodes) {
+            if (component.name === child.nodeName) {
+              if (siblingPos === component.pos) {
+                return child.searchNode(paths, pos + 1);
+              }
 
-class P extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "p");
-    this.style = checkStyle(attributes.style);
-  }
+              siblingPos++;
+            }
+          }
 
-}
+          return node.searchNode(paths, pos + 1);
+        }
+      }
 
-class Span extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "span");
-    this.style = checkStyle(attributes.style);
-  }
+      if (node.childNodes && node.childNodes.length !== 0) {
+        stack.push([node, 0]);
+        node = node.childNodes[0];
+      } else if (stack.length === 0) {
+        return null;
+      } else {
+        while (stack.length !== 0) {
+          const [parent, currentPos] = stack.pop();
+          const newPos = currentPos + 1;
 
-}
+          if (newPos < parent.childNodes.length) {
+            stack.push([parent, newPos]);
+            node = parent.childNodes[newPos];
+            break;
+          }
+        }
 
-class Sub extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "sub");
-    this.style = checkStyle(attributes.style);
+        if (stack.length === 0) {
+          return null;
+        }
+      }
+    }
   }
 
-}
+  dump(buffer) {
+    if (this.nodeName === "#text") {
+      buffer.push((0, _util.encodeToXmlString)(this.nodeValue));
+      return;
+    }
 
-class Sup extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "sup");
-    this.style = checkStyle(attributes.style);
-  }
+    buffer.push(`<${this.nodeName}`);
 
-}
+    if (this.attributes) {
+      for (const attribute of this.attributes) {
+        buffer.push(` ${attribute.name}="${(0, _util.encodeToXmlString)(attribute.value)}"`);
+      }
+    }
 
-class Ul extends _xfa_object.XmlObject {
-  constructor(attributes) {
-    super(XHTML_NS_ID, "ul");
-    this.style = checkStyle(attributes.style);
+    if (this.hasChildNodes()) {
+      buffer.push(">");
+
+      for (const child of this.childNodes) {
+        child.dump(buffer);
+      }
+
+      buffer.push(`</${this.nodeName}>`);
+    } else if (this.nodeValue) {
+      buffer.push(`>${(0, _util.encodeToXmlString)(this.nodeValue)}</${this.nodeName}>`);
+    } else {
+      buffer.push("/>");
+    }
   }
 
 }
 
-class XhtmlNamespace {
-  static [_namespaces.$buildXFAObject](name, attributes) {
-    if (XhtmlNamespace.hasOwnProperty(name)) {
-      return XhtmlNamespace[name](attributes);
-    }
+exports.SimpleDOMNode = SimpleDOMNode;
 
-    return undefined;
+class SimpleXMLParser extends XMLParserBase {
+  constructor({
+    hasAttributes = false,
+    lowerCaseName = false
+  }) {
+    super();
+    this._currentFragment = null;
+    this._stack = null;
+    this._errorCode = XMLParserErrorCode.NoError;
+    this._hasAttributes = hasAttributes;
+    this._lowerCaseName = lowerCaseName;
   }
 
-  static a(attributes) {
-    return new A(attributes);
-  }
+  parseFromString(data) {
+    this._currentFragment = [];
+    this._stack = [];
+    this._errorCode = XMLParserErrorCode.NoError;
+    this.parseXml(data);
 
-  static b(attributes) {
-    return new B(attributes);
-  }
+    if (this._errorCode !== XMLParserErrorCode.NoError) {
+      return undefined;
+    }
 
-  static body(attributes) {
-    return new Body(attributes);
-  }
+    const [documentElement] = this._currentFragment;
 
-  static br(attributes) {
-    return new Br(attributes);
-  }
+    if (!documentElement) {
+      return undefined;
+    }
 
-  static html(attributes) {
-    return new Html(attributes);
+    return {
+      documentElement
+    };
   }
 
-  static i(attributes) {
-    return new I(attributes);
-  }
+  onResolveEntity(name) {
+    switch (name) {
+      case "apos":
+        return "'";
+    }
 
-  static li(attributes) {
-    return new Li(attributes);
+    return super.onResolveEntity(name);
   }
 
-  static ol(attributes) {
-    return new Ol(attributes);
-  }
+  onText(text) {
+    if (isWhitespaceString(text)) {
+      return;
+    }
 
-  static p(attributes) {
-    return new P(attributes);
-  }
+    const node = new SimpleDOMNode("#text", text);
 
-  static span(attributes) {
-    return new Span(attributes);
+    this._currentFragment.push(node);
   }
 
-  static sub(attributes) {
-    return new Sub(attributes);
-  }
+  onCdata(text) {
+    const node = new SimpleDOMNode("#text", text);
 
-  static sup(attributes) {
-    return new Sup(attributes);
+    this._currentFragment.push(node);
   }
 
-  static ul(attributes) {
-    return new Ul(attributes);
-  }
+  onBeginElement(name, attributes, isEmpty) {
+    if (this._lowerCaseName) {
+      name = name.toLowerCase();
+    }
 
-}
+    const node = new SimpleDOMNode(name);
+    node.childNodes = [];
 
-exports.XhtmlNamespace = XhtmlNamespace;
+    if (this._hasAttributes) {
+      node.attributes = attributes;
+    }
 
-/***/ }),
-/* 68 */
-/***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
+    this._currentFragment.push(node);
 
+    if (isEmpty) {
+      return;
+    }
 
+    this._stack.push(this._currentFragment);
 
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.UnknownNamespace = void 0;
+    this._currentFragment = node.childNodes;
+  }
 
-var _namespaces = __w_pdfjs_require__(52);
+  onEndElement(name) {
+    this._currentFragment = this._stack.pop() || [];
+    const lastElement = this._currentFragment[this._currentFragment.length - 1];
 
-var _xfa_object = __w_pdfjs_require__(50);
+    if (!lastElement) {
+      return;
+    }
 
-class UnknownNamespace {
-  constructor(nsId) {
-    this.namespaceId = nsId;
+    for (let i = 0, ii = lastElement.childNodes.length; i < ii; i++) {
+      lastElement.childNodes[i].parentNode = lastElement;
+    }
   }
 
-  [_namespaces.$buildXFAObject](name, attributes) {
-    return new _xfa_object.XmlObject(this.namespaceId, name, attributes);
+  onError(code) {
+    this._errorCode = code;
   }
 
 }
 
-exports.UnknownNamespace = UnknownNamespace;
+exports.SimpleXMLParser = SimpleXMLParser;
 
 /***/ }),
-/* 69 */
+/* 48 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -65056,7 +55204,7 @@ class MessageHandler {
 exports.MessageHandler = MessageHandler;
 
 /***/ }),
-/* 70 */
+/* 49 */
 /***/ ((__unused_webpack_module, exports, __w_pdfjs_require__) => {
 
 
@@ -65216,9 +55364,8 @@ class PDFWorkerStreamRangeReader {
 /******/       // The require function
 /******/       function __w_pdfjs_require__(moduleId) {
 /******/               // Check if module is in cache
-/******/               var cachedModule = __webpack_module_cache__[moduleId];
-/******/               if (cachedModule !== undefined) {
-/******/                       return cachedModule.exports;
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
 /******/               }
 /******/               // Create a new module (and put it into the cache)
 /******/               var module = __webpack_module_cache__[moduleId] = {
@@ -65249,7 +55396,7 @@ class PDFWorkerStreamRangeReader {
 /******/       
 /******/       /* webpack/runtime/hasOwnProperty shorthand */
 /******/       (() => {
-/******/               __w_pdfjs_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, 
prop))
+/******/               __w_pdfjs_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
 /******/       })();
 /******/       
 /******/       /* webpack/runtime/make namespace object */
@@ -65264,29 +55411,10 @@ class PDFWorkerStreamRangeReader {
 /******/       })();
 /******/       
 /************************************************************************/
-var __webpack_exports__ = {};
-// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.
-(() => {
-var exports = __webpack_exports__;
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-Object.defineProperty(exports, "WorkerMessageHandler", ({
-  enumerable: true,
-  get: function () {
-    return _worker.WorkerMessageHandler;
-  }
-}));
-
-var _worker = __w_pdfjs_require__(1);
-
-const pdfjsVersion = '2.8.335';
-const pdfjsBuild = '228adbf67';
-})();
-
-/******/       return __webpack_exports__;
+/******/       // module exports must be returned from runtime so entry inlining is disabled
+/******/       // startup
+/******/       // Load entry module and return exports
+/******/       return __w_pdfjs_require__(0);
 /******/ })()
 ;
 });
diff --git a/third-party/pdfjs/epiphany-pdfjs-changes.patch b/third-party/pdfjs/epiphany-pdfjs-changes.patch
index eefde370e..a6e1e2764 100644
--- a/third-party/pdfjs/epiphany-pdfjs-changes.patch
+++ b/third-party/pdfjs/epiphany-pdfjs-changes.patch
@@ -1,5 +1,5 @@
 diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
-index 9616f67cd..04c4516e8 100644
+index b7277df3d..d7322b41e 100644
 --- a/third-party/pdfjs/web/viewer.css
 +++ b/third-party/pdfjs/web/viewer.css
 @@ -1,4 +1,5 @@
@@ -8,7 +8,7 @@ index 9616f67cd..04c4516e8 100644
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -1491,6 +1492,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
+@@ -2321,6 +2322,7 @@ html[dir="rtl"] .dropdownToolbarButton::after {
  }
  
  .dropdownToolbarButton > select {
@@ -16,7 +16,7 @@ index 9616f67cd..04c4516e8 100644
    width: 162px;
    height: 28px;
    font-size: 12px;
-@@ -1852,6 +1854,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
+@@ -2942,6 +2944,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
  }
  
  .toolbarField.pageNumber {
@@ -25,10 +25,18 @@ index 9616f67cd..04c4516e8 100644
    min-width: 16px;
    text-align: right;
 diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
-index a6144010e..379e73482 100644
+index f661cb9f5..7b8dd7663 100644
 --- a/third-party/pdfjs/web/viewer.html
 +++ b/third-party/pdfjs/web/viewer.html
-@@ -21,14 +21,14 @@ Adobe CMap resources are covered by their own copyright but the same license:
+@@ -1,6 +1,7 @@
+ <!DOCTYPE html>
+ <!--
+ Copyright 2012 Mozilla Foundation
++Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+@@ -21,14 +22,14 @@ Adobe CMap resources are covered by their own copyright but the same license:
  See https://github.com/adobe-type-tools/cmap-resources
  -->
  <html dir="ltr" mozdisallowselectionprint>
@@ -45,7 +53,7 @@ index a6144010e..379e73482 100644
      <link rel="stylesheet" href="viewer.css">
  
  
-@@ -136,7 +136,7 @@ See https://github.com/adobe-type-tools/cmap-resources
+@@ -136,7 +137,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                <span data-l10n-id="download_label">Download</span>
              </button>
  
@@ -54,7 +62,7 @@ index a6144010e..379e73482 100644
                <span data-l10n-id="bookmark_label">Current View</span>
              </a>
  
-@@ -238,7 +238,7 @@ See https://github.com/adobe-type-tools/cmap-resources
+@@ -238,7 +239,7 @@ See https://github.com/adobe-type-tools/cmap-resources
                  <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
                    <span data-l10n-id="download_label">Download</span>
                  </button>
@@ -64,18 +72,18 @@ index a6144010e..379e73482 100644
                  </a>
  
 diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
-index 5382c3673..28d471e17 100644
+index d093d773b..ed36e7f02 100644
 --- a/third-party/pdfjs/web/viewer.js
 +++ b/third-party/pdfjs/web/viewer.js
 @@ -3,6 +3,7 @@
   * Javascript code in this page
   *
-  * Copyright 2021 Mozilla Foundation
+  * Copyright 2020 Mozilla Foundation
 + * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
-@@ -2254,8 +2255,7 @@ function webViewerInitialized() {
+@@ -2663,8 +2664,7 @@ function webViewerInitialized() {
    let file;
    const queryString = document.location.search.substring(1);
    const params = (0, _ui_utils.parseQueryString)(queryString);
@@ -85,13 +93,13 @@ index 5382c3673..28d471e17 100644
    const fileInput = document.createElement("input");
    fileInput.id = appConfig.openFileInputName;
    fileInput.className = "fileInput";
-@@ -2263,12 +2263,8 @@ function webViewerInitialized() {
+@@ -2672,12 +2672,8 @@ function webViewerInitialized() {
    fileInput.oncontextmenu = _ui_utils.noContextMenuHandler;
    document.body.appendChild(fileInput);
  
 -  if (!window.File || !window.FileReader || !window.FileList || !window.Blob) {
--    appConfig.toolbar.openFile.hidden = true;
--    appConfig.secondaryToolbar.openFileButton.hidden = true;
+-    appConfig.toolbar.openFile.setAttribute("hidden", "true");
+-    appConfig.secondaryToolbar.openFileButton.setAttribute("hidden", "true");
 -  } else {
 -    fileInput.value = null;
 -  }
@@ -100,7 +108,7 @@ index 5382c3673..28d471e17 100644
  
    fileInput.addEventListener("change", function (evt) {
      const files = evt.target.files;
-@@ -2330,8 +2326,18 @@ function webViewerInitialized() {
+@@ -2739,8 +2735,18 @@ function webViewerInitialized() {
      }
    }, true);
  
@@ -118,9 +126,9 @@ index 5382c3673..28d471e17 100644
 +    PDFViewerApplication.open(array);
 +    PDFViewerApplication.setTitleUsingUrl(file_name);
    } catch (reason) {
-     PDFViewerApplication.l10n.get("loading_error").then(msg => {
-       PDFViewerApplication._documentError(msg, reason);
-@@ -6404,6 +6410,8 @@ class PDFHistory {
+     PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
+       PDFViewerApplication.error(msg, reason);
+@@ -6977,6 +6983,8 @@ class PDFHistory {
        }
      }
  
@@ -129,3 +137,10 @@ index 5382c3673..28d471e17 100644
      if (shouldReplace) {
        window.history.replaceState(newState, "", newUrl);
      } else {
+@@ -14896,4 +14904,4 @@ _app.PDFPrintServiceFactory.instance = {
+ /******/      // This entry module used 'exports' so it can't be inlined
+ /******/ })()
+ ;
+-//# sourceMappingURL=viewer.js.map
+\ No newline at end of file
++//# sourceMappingURL=viewer.js.map
diff --git a/third-party/pdfjs/pdfjs.gresource.xml b/third-party/pdfjs/pdfjs.gresource.xml
index 4b2e78f97..a8b511b2e 100644
--- a/third-party/pdfjs/pdfjs.gresource.xml
+++ b/third-party/pdfjs/pdfjs.gresource.xml
@@ -6,9 +6,9 @@
                <file compressed="true">build/pdf.worker.js</file>
                <file compressed="true">web/compressed.tracemonkey-pldi-09.pdf</file>
                <file compressed="true">web/debugger.js</file>
-               <file compressed="true">web/viewer.js</file>
                <file compressed="true">web/viewer.css</file>
                <file compressed="true">web/viewer.html</file>
+               <file compressed="true">web/viewer.js</file>
                <file compressed="true">web/cmaps/78-EUC-H.bcmap</file>
                <file compressed="true">web/cmaps/78-EUC-V.bcmap</file>
                <file compressed="true">web/cmaps/78-H.bcmap</file>
diff --git a/third-party/pdfjs/web/debugger.js b/third-party/pdfjs/web/debugger.js
index b6f7d1638..c79aeeecf 100644
--- a/third-party/pdfjs/web/debugger.js
+++ b/third-party/pdfjs/web/debugger.js
@@ -201,7 +201,7 @@ var StepperManager = (function StepperManagerClosure() {
     create: function create(pageIndex) {
       var debug = document.createElement("div");
       debug.id = "stepper" + pageIndex;
-      debug.hidden = true;
+      debug.setAttribute("hidden", true);
       debug.className = "stepper";
       stepperDiv.appendChild(debug);
       var b = document.createElement("option");
@@ -224,7 +224,11 @@ var StepperManager = (function StepperManagerClosure() {
       }
       for (i = 0; i < steppers.length; ++i) {
         var stepper = steppers[i];
-        stepper.panel.hidden = stepper.pageIndex !== pageIndex;
+        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) {
@@ -604,10 +608,15 @@ window.PDFBug = (function PDFBugClosure() {
       activePanel = index;
       var tools = this.tools;
       for (var j = 0; j < tools.length; ++j) {
-        var isActive = j === index;
-        buttons[j].classList.toggle("active", isActive);
-        tools[j].active = isActive;
-        tools[j].panel.hidden = !isActive;
+        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/third-party/pdfjs/web/locale/ach/viewer.properties 
b/third-party/pdfjs/web/locale/ach/viewer.properties
index cd327d520..46e36fb7e 100644
--- a/third-party/pdfjs/web/locale/ach/viewer.properties
+++ b/third-party/pdfjs/web/locale/ach/viewer.properties
@@ -185,6 +185,7 @@ page_scale_actual=Dite kikome
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Bal
 loading_error=Bal otime kun cano PDF.
 invalid_file_error=Pwail me PDF ma pe atir onyo obale woko.
 missing_file_error=Pwail me PDF tye ka rem.
diff --git a/third-party/pdfjs/web/locale/af/viewer.properties 
b/third-party/pdfjs/web/locale/af/viewer.properties
index 2d471bbaf..c7d6c42b4 100644
--- a/third-party/pdfjs/web/locale/af/viewer.properties
+++ b/third-party/pdfjs/web/locale/af/viewer.properties
@@ -162,6 +162,7 @@ page_scale_actual=Werklike grootte
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Fout
 loading_error='n Fout het voorgekom met die laai van die PDF.
 invalid_file_error=Ongeldige of korrupte PDF-lêer.
 missing_file_error=PDF-lêer is weg.
diff --git a/third-party/pdfjs/web/locale/an/viewer.properties 
b/third-party/pdfjs/web/locale/an/viewer.properties
index ccbefc95e..e33936cde 100644
--- a/third-party/pdfjs/web/locale/an/viewer.properties
+++ b/third-party/pdfjs/web/locale/an/viewer.properties
@@ -226,6 +226,7 @@ page_scale_actual=Grandaria actual
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=S'ha produciu una error en cargar o PDF.
 invalid_file_error=O PDF no ye valido u ye estorbau.
 missing_file_error=No i ha fichero PDF.
diff --git a/third-party/pdfjs/web/locale/ar/viewer.properties 
b/third-party/pdfjs/web/locale/ar/viewer.properties
index 440eed6b9..c1ae0bfff 100644
--- a/third-party/pdfjs/web/locale/ar/viewer.properties
+++ b/third-party/pdfjs/web/locale/ar/viewer.properties
@@ -226,6 +226,7 @@ page_scale_actual=الحجم الفعلي
 page_scale_percent={{scale}}٪
 
 # Loading indicator messages
+loading_error_indicator=عطل
 loading_error=حدث عطل أثناء تحميل ملف PDF.
 invalid_file_error=ملف PDF تالف أو غير صحيح.
 missing_file_error=ملف PDF غير موجود.
diff --git a/third-party/pdfjs/web/locale/ast/viewer.properties 
b/third-party/pdfjs/web/locale/ast/viewer.properties
index f33ad6763..5f6d5e7c0 100644
--- a/third-party/pdfjs/web/locale/ast/viewer.properties
+++ b/third-party/pdfjs/web/locale/ast/viewer.properties
@@ -28,32 +28,65 @@ of_pages=de {{pagesCount}}
 # respectively a number representing the total number of pages in the document.
 page_of_pages=({{pageNumber}} de {{pagesCount}})
 
+zoom_out.title=Reducir
+zoom_out_label=Reducir
+zoom_in.title=Aumentar
+zoom_in_label=Aumentar
+zoom.title=Tamañu
+open_file.title=Abrir ficheru
+open_file_label=Abrir
+print.title=Imprentar
+print_label=Imprentar
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copiar o abrir nuna nueva ventana)
 bookmark_label=Vista actual
 
 # Secondary toolbar and context menu
 tools.title=Ferramientes
 tools_label=Ferramientes
+first_page.title=Dir a la primer páxina
+first_page.label=Dir a la primer páxina
+first_page_label=Dir a la primer páxina
+last_page.title=Dir a la postrer páxina
+last_page.label=Dir a la cabera páxina
+last_page_label=Dir a la postrer páxina
+page_rotate_cw.title=Xirar en sen horariu
+page_rotate_cw_label=Xirar en sen horariu
+page_rotate_ccw.title=Xirar en sen antihorariu
+page_rotate_ccw_label=Xirar en sen antihorariu
 
 
 scroll_vertical_label=Desplazamientu vertical
 scroll_horizontal_label=Desplazamientu horizontal
-scroll_wrapped_label=Desplazamientu continuu
 
 
 # Document properties dialog box
+document_properties.title=Propiedaes del documentu…
+document_properties_label=Propiedaes del documentu…
+document_properties_file_name=Nome de ficheru:
+document_properties_file_size=Tamañu de ficheru:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in kilobytes, respectively in bytes.
 document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
 # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
 # will be replaced by the PDF file size in megabytes, respectively in bytes.
 document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Títulu:
+document_properties_author=Autor:
+document_properties_subject=Asuntu:
+document_properties_keywords=Pallabres clave:
+document_properties_creation_date=Data de creación:
+document_properties_modification_date=Data de modificación:
 # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
 # will be replaced by the creation/modification date, and time, of the PDF file.
 document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=Productor PDF:
+document_properties_version=Versión PDF:
+document_properties_page_count=Númberu de páxines:
 document_properties_page_size_unit_inches=in
 document_properties_page_size_unit_millimeters=mm
-document_properties_page_size_orientation_portrait=vertical
-document_properties_page_size_orientation_landscape=horizontal
 document_properties_page_size_name_a3=A3
 document_properties_page_size_name_a4=A4
 # LOCALIZATION NOTE (document_properties_page_size_dimension_string):
@@ -68,24 +101,48 @@ document_properties_page_size_dimension_name_string={{width}} × {{height}} {{un
 # the document; usually called "Fast Web View" in English locales of Adobe software.
 document_properties_linearized_yes=Sí
 document_properties_linearized_no=Non
+document_properties_close=Zarrar
 
+print_progress_message=Tresnando documentu pa imprentar…
 # LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
 # a numerical per cent value.
 print_progress_percent={{progress}}%
+print_progress_close=Encaboxar
 
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
+toggle_sidebar.title=Camudar barra llateral
+toggle_sidebar_label=Camudar barra llateral
+document_outline.title=Amosar esquema del documentu (duble clic pa espander/contrayer tolos elementos)
+document_outline_label=Esquema del documentu
+attachments.title=Amosar axuntos
+attachments_label=Axuntos
+thumbs.title=Amosar miniatures
+thumbs_label=Miniatures
+findbar.title=Guetar nel documentu
+findbar_label=Guetar
 
-# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
+thumb_page_title=Páxina {{page}}
 # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
 # number.
+thumb_page_canvas=Miniatura de la páxina {{page}}
 
 # Find panel button title and messages
-find_entire_word_label=Pallabres completes
+find_input.title=Guetar
+find_input.placeholder=Guetar nel documentu…
+find_previous.title=Alcontrar l'anterior apaición de la fras
+find_previous_label=Anterior
+find_next.title=Alcontrar la siguiente apaición d'esta fras
+find_next_label=Siguiente
+find_highlight=Remarcar toos
+find_match_case_label=Coincidencia de mayús./minús.
+find_entire_word_label=Pallabres enteres
+find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final
+find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu
 # LOCALIZATION NOTE (find_match_count): The supported plural forms are
 # [one|two|few|many|other], with [other] as the default value.
 # "{{current}}" and "{{total}}" will be replaced by a number representing the
@@ -94,47 +151,56 @@ find_entire_word_label=Pallabres completes
 # LOCALIZATION NOTE (find_match_count_limit): The supported plural forms are
 # [zero|one|two|few|many|other], with [other] as the default value.
 # "{{limit}}" will be replaced by a numerical value.
-find_match_count_limit[zero]=Más de {{limit}} coincidencies
-find_match_count_limit[one]=Más de {{limit}} coincidencia
-find_match_count_limit[two]=Más de {{limit}} coincidencies
-find_match_count_limit[few]=Más de {{limit}} coincidencies
-find_match_count_limit[many]=Más de {{limit}} coincidencies
-find_match_count_limit[other]=Más de {{limit}} coincidencies
+find_not_found=Frase non atopada
 
 # Error panel labels
 error_more_info=Más información
 error_less_info=Menos información
+error_close=Zarrar
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
 # replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (compilación: {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
 # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
 # english string describing the error.
 error_message=Mensaxe: {{message}}
 # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
 # trace.
+error_stack=Pila: {{stack}}
 # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
 error_file=Ficheru: {{file}}
 # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
 error_line=Llinia: {{line}}
+rendering_error=Hebo un fallu al renderizar la páxina.
 
 # Predefined zoom values
-page_scale_auto=Zoom automáticu
-page_scale_actual=Tamañu real
+page_scale_width=Anchor de la páxina
+page_scale_fit=Axuste de la páxina
+page_scale_auto=Tamañu automáticu
+page_scale_actual=Tamañu actual
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
-loading_error=Asocedió un fallu mentanto se cargaba'l PDF.
+loading_error_indicator=Fallu
+loading_error=Hebo un fallu al cargar el PDF.
+invalid_file_error=Ficheru PDF inválidu o corruptu.
+missing_file_error=Nun hai ficheru PDF.
+unexpected_response_error=Rempuesta inesperada del sirvidor.
 
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
-annotation_date_string={{date}}, {{time}}
 
 # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
 # "{{type}}" will be replaced with an annotation type from a list defined in
 # the PDF spec (32000-1:2008 Table 169 – Annotation types).
 # Some common types are e.g.: "Check", "Text", "Comment", "Note"
-password_ok=Aceptar
+text_annotation_type.alt=[Anotación {{type}}]
+password_label=Introduz la contraseña p'abrir esti ficheru PDF
+password_invalid=Contraseña non válida. Vuelvi a intentalo.
+password_ok=Aceutar
 password_cancel=Encaboxar
 
+printing_not_supported=Alvertencia: La imprentación entá nun ta sofitada dafechu nesti restolador.
+printing_not_ready=Avisu: Esti PDF nun se cargó completamente pa poder imprentase.
+web_fonts_disabled=Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.
diff --git a/third-party/pdfjs/web/locale/az/viewer.properties 
b/third-party/pdfjs/web/locale/az/viewer.properties
index b692fc256..99b94a31c 100644
--- a/third-party/pdfjs/web/locale/az/viewer.properties
+++ b/third-party/pdfjs/web/locale/az/viewer.properties
@@ -226,6 +226,7 @@ page_scale_actual=Hazırkı Həcm
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Səhv
 loading_error=PDF yüklenərkən bir səhv yarandı.
 invalid_file_error=Səhv və ya zədələnmiş olmuş PDF fayl.
 missing_file_error=PDF fayl yoxdur.
diff --git a/third-party/pdfjs/web/locale/be/viewer.properties 
b/third-party/pdfjs/web/locale/be/viewer.properties
index 90478d764..d4204c179 100644
--- a/third-party/pdfjs/web/locale/be/viewer.properties
+++ b/third-party/pdfjs/web/locale/be/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Паказаць пласты (двойчы пстрыкніце, 
 layers_label=Пласты
 thumbs.title=Паказ мініяцюр
 thumbs_label=Мініяцюры
-current_outline_item.title=Знайсці бягучы элемент структуры
-current_outline_item_label=Бягучы элемент структуры
 findbar.title=Пошук у дакуменце
 findbar_label=Знайсці
 
@@ -228,6 +226,7 @@ page_scale_actual=Сапраўдны памер
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Памылка
 loading_error=Здарылася памылка падчас загрузкі PDF.
 invalid_file_error=Няспраўны або пашкоджаны файл PDF.
 missing_file_error=Адсутны файл PDF.
diff --git a/third-party/pdfjs/web/locale/bg/viewer.properties 
b/third-party/pdfjs/web/locale/bg/viewer.properties
index d6007e8f1..b93e3d1e4 100644
--- a/third-party/pdfjs/web/locale/bg/viewer.properties
+++ b/third-party/pdfjs/web/locale/bg/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Действителен размер
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Грешка
 loading_error=Получи се грешка при зареждане на PDF-а.
 invalid_file_error=Невалиден или повреден PDF файл.
 missing_file_error=Липсващ PDF файл.
diff --git a/third-party/pdfjs/web/locale/bn/viewer.properties 
b/third-party/pdfjs/web/locale/bn/viewer.properties
index aa5483f12..c106df10c 100644
--- a/third-party/pdfjs/web/locale/bn/viewer.properties
+++ b/third-party/pdfjs/web/locale/bn/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=প্রকৃত আকার
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=ত্রুটি
 loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
 invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
 missing_file_error=নিখোঁজ PDF ফাইল।
diff --git a/third-party/pdfjs/web/locale/bo/viewer.properties 
b/third-party/pdfjs/web/locale/bo/viewer.properties
index f9e7b982c..3ffa84819 100644
--- a/third-party/pdfjs/web/locale/bo/viewer.properties
+++ b/third-party/pdfjs/web/locale/bo/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Actual Size
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/br/viewer.properties 
b/third-party/pdfjs/web/locale/br/viewer.properties
index 90f91b91f..d46d82f4b 100644
--- a/third-party/pdfjs/web/locale/br/viewer.properties
+++ b/third-party/pdfjs/web/locale/br/viewer.properties
@@ -224,6 +224,7 @@ page_scale_actual=Ment wir
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Fazi
 loading_error=Degouezhet ez eus bet ur fazi e-pad kargañ ar PDF.
 invalid_file_error=Restr PDF didalvoudek pe kontronet.
 missing_file_error=Restr PDF o vankout.
diff --git a/third-party/pdfjs/web/locale/brx/viewer.properties 
b/third-party/pdfjs/web/locale/brx/viewer.properties
index 7e88fd234..cd3656380 100644
--- a/third-party/pdfjs/web/locale/brx/viewer.properties
+++ b/third-party/pdfjs/web/locale/brx/viewer.properties
@@ -185,6 +185,7 @@ page_scale_actual=थार महर
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=गोरोन्थि
 loading_error=PDF ल'ड खालामनाय समाव मोनसे गोरोन्थि जाबाय।
 invalid_file_error=बाहायजायै एबा गाज्रि जानाय PDF फाइल
 missing_file_error=गोमानाय PDF फाइल
diff --git a/third-party/pdfjs/web/locale/bs/viewer.properties 
b/third-party/pdfjs/web/locale/bs/viewer.properties
index 36f8433f2..e5346cb0c 100644
--- a/third-party/pdfjs/web/locale/bs/viewer.properties
+++ b/third-party/pdfjs/web/locale/bs/viewer.properties
@@ -179,6 +179,7 @@ page_scale_actual=Stvarna veličina
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Greška
 loading_error=Došlo je do greške prilikom učitavanja PDF-a.
 invalid_file_error=Neispravan ili oštećen PDF fajl.
 missing_file_error=Nedostaje PDF fajl.
diff --git a/third-party/pdfjs/web/locale/ca/viewer.properties 
b/third-party/pdfjs/web/locale/ca/viewer.properties
index 596189d65..22ae91c1a 100644
--- a/third-party/pdfjs/web/locale/ca/viewer.properties
+++ b/third-party/pdfjs/web/locale/ca/viewer.properties
@@ -138,22 +138,16 @@ print_progress_close=Cancel·la
 # tooltips)
 toggle_sidebar.title=Mostra/amaga la barra lateral
 toggle_sidebar_notification.title=Mostra/amaga la barra lateral (el document conté un esquema o adjuncions)
-toggle_sidebar_notification2.title=Mostra/amaga la barra lateral (el document conté un esquema, adjuncions o 
capes)
 toggle_sidebar_label=Mostra/amaga la barra lateral
 document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements)
-document_outline_label=Esquema del document
+document_outline_label=Contorn del document
 attachments.title=Mostra les adjuncions
 attachments_label=Adjuncions
-layers.title=Mostra les capes (doble clic per restablir totes les capes al seu estat per defecte)
-layers_label=Capes
 thumbs.title=Mostra les miniatures
 thumbs_label=Miniatures
-current_outline_item.title=Cerca l'element d'esquema actual
-current_outline_item_label=Element d'esquema actual
 findbar.title=Cerca al document
 findbar_label=Cerca
 
-additional_layers=Capes addicionals
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
 page_canvas=Pàgina {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
@@ -228,6 +222,7 @@ page_scale_actual=Mida real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=S'ha produït un error en carregar el PDF.
 invalid_file_error=El fitxer PDF no és vàlid o està malmès.
 missing_file_error=Falta el fitxer PDF.
diff --git a/third-party/pdfjs/web/locale/cak/viewer.properties 
b/third-party/pdfjs/web/locale/cak/viewer.properties
index 4710d5620..5d9be9a07 100644
--- a/third-party/pdfjs/web/locale/cak/viewer.properties
+++ b/third-party/pdfjs/web/locale/cak/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Kek'ut taq Kuchuj (ka'i'-pitz' richin yetzolïx ronojel ri taq kuch
 layers_label=Taq kuchuj
 thumbs.title=Kek'ut pe taq ch'utiq
 thumbs_label=Koköj
-current_outline_item.title=Kekanöx  Taq Ch'akulal Kik'wan Chib'äl
-current_outline_item_label=Taq Ch'akulal Kik'wan Chib'äl
 findbar.title=Tikanöx chupam ri wuj
 findbar_label=Tikanöx
 
@@ -228,6 +226,7 @@ page_scale_actual=Runimilem Wakami
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Sachoj
 loading_error=\u0020Xk'ulwachitäj jun sach'oj toq xnuk'ux ri PDF .
 invalid_file_error=Man oke ta o yujtajinäq ri PDF yakb'äl.
 missing_file_error=Man xilitäj ta ri PDF yakb'äl.
diff --git a/third-party/pdfjs/web/locale/ckb/viewer.properties 
b/third-party/pdfjs/web/locale/ckb/viewer.properties
index 309428313..4cef6ccbc 100644
--- a/third-party/pdfjs/web/locale/ckb/viewer.properties
+++ b/third-party/pdfjs/web/locale/ckb/viewer.properties
@@ -33,16 +33,12 @@ zoom_out_label=ڕۆچوونی
 zoom_in.title=هێنانەپێش
 zoom_in_label=هێنانەپێش
 zoom.title=زووم
-presentation_mode.title=گۆڕین بۆ دۆخی پێشکەشکردن
-presentation_mode_label=دۆخی پێشکەشکردن
 open_file.title=پەڕگە بکەرەوە
 open_file_label=کردنەوە
 print.title=چاپکردن
 print_label=چاپکردن
 download.title=داگرتن
 download_label=داگرتن
-bookmark.title=پێشبینینی ئێستا(لەبەریبگرەوە یان پەنجەرەیەکی نوێ بکەرەوە)
-bookmark_label=پیشبینینی ئێستا
 
 # Secondary toolbar and context menu
 tools.title=ئامرازەکان
@@ -74,8 +70,6 @@ scroll_wrapped_label=ناردنی لوولکراو
 
 
 # Document properties dialog box
-document_properties.title=تایبەتمەندییەکانی بەڵگەنامە...
-document_properties_label=تایبەتمەندییەکانی بەڵگەنامە...
 document_properties_file_name=ناوی پەڕگە:
 document_properties_file_size=قەبارەی پەڕگە:
 # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
@@ -216,6 +210,7 @@ page_scale_actual=قەبارەی ڕاستی
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=هەڵە
 loading_error=هەڵەیەک ڕوویدا لە کاتی بارکردنی  PDF.
 invalid_file_error=پەڕگەی pdf تێکچووە یان نەگونجاوە.
 missing_file_error=پەڕگەی pdf بوونی نیە.
diff --git a/third-party/pdfjs/web/locale/cs/viewer.properties 
b/third-party/pdfjs/web/locale/cs/viewer.properties
index 6521dcaa3..a5a36c512 100644
--- a/third-party/pdfjs/web/locale/cs/viewer.properties
+++ b/third-party/pdfjs/web/locale/cs/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Zobrazit vrstvy (poklepáním obnovíte všechny vrstvy do výchoz
 layers_label=Vrstvy
 thumbs.title=Zobrazí náhledy
 thumbs_label=Náhledy
-current_outline_item.title=Najít aktuální položku v osnově
-current_outline_item_label=Aktuální položka v osnově
 findbar.title=Najde v dokumentu
 findbar_label=Najít
 
@@ -228,6 +226,7 @@ page_scale_actual=Skutečná velikost
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Chyba
 loading_error=Při nahrávání PDF nastala chyba.
 invalid_file_error=Neplatný nebo chybný soubor PDF.
 missing_file_error=Chybí soubor PDF.
diff --git a/third-party/pdfjs/web/locale/cy/viewer.properties 
b/third-party/pdfjs/web/locale/cy/viewer.properties
index 76f3dfa55..3f819c2be 100644
--- a/third-party/pdfjs/web/locale/cy/viewer.properties
+++ b/third-party/pdfjs/web/locale/cy/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Maint Gwirioneddol
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Gwall
 loading_error=Digwyddodd gwall wrth lwytho'r PDF.
 invalid_file_error=Ffeil PDF annilys neu llwgr.
 missing_file_error=Ffeil PDF coll.
diff --git a/third-party/pdfjs/web/locale/da/viewer.properties 
b/third-party/pdfjs/web/locale/da/viewer.properties
index 25e6fa9d9..8a33f3c45 100644
--- a/third-party/pdfjs/web/locale/da/viewer.properties
+++ b/third-party/pdfjs/web/locale/da/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Vis lag (dobbeltklik for at nulstille alle lag til standard-tilstan
 layers_label=Lag
 thumbs.title=Vis miniaturer
 thumbs_label=Miniaturer
-current_outline_item.title=Find det aktuelle dispositions-element
-current_outline_item_label=Aktuelt dispositions-element
 findbar.title=Find i dokument
 findbar_label=Find
 
@@ -228,6 +226,7 @@ page_scale_actual=Faktisk størrelse
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Fejl
 loading_error=Der opstod en fejl ved indlæsning af PDF-filen.
 invalid_file_error=PDF-filen er ugyldig eller ødelagt.
 missing_file_error=Manglende PDF-fil.
diff --git a/third-party/pdfjs/web/locale/de/viewer.properties 
b/third-party/pdfjs/web/locale/de/viewer.properties
index f37d7f444..ed2431616 100644
--- a/third-party/pdfjs/web/locale/de/viewer.properties
+++ b/third-party/pdfjs/web/locale/de/viewer.properties
@@ -148,7 +148,7 @@ layers.title=Ebenen anzeigen (Doppelklicken, um alle Ebenen auf den Standardzust
 layers_label=Ebenen
 thumbs.title=Miniaturansichten anzeigen
 thumbs_label=Miniaturansichten
-current_outline_item.title=Aktuelles Struktur-Element finden
+current_outline_item.title=Aktuelles Struktur-Element suchen
 current_outline_item_label=Aktuelles Struktur-Element
 findbar.title=Dokument durchsuchen
 findbar_label=Suchen
@@ -228,6 +228,7 @@ page_scale_actual=Originalgröße
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Fehler
 loading_error=Beim Laden der PDF-Datei trat ein Fehler auf.
 invalid_file_error=Ungültige oder beschädigte PDF-Datei
 missing_file_error=Fehlende PDF-Datei
diff --git a/third-party/pdfjs/web/locale/dsb/viewer.properties 
b/third-party/pdfjs/web/locale/dsb/viewer.properties
index 41b142d51..4902a97e6 100644
--- a/third-party/pdfjs/web/locale/dsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/dsb/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Aktualna wjelikosć
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Zmólka
 loading_error=Pśi zacytowanju PDF jo zmólka nastała.
 invalid_file_error=Njepłaśiwa abo wobškóźona PDF-dataja.
 missing_file_error=Felujuca PDF-dataja.
diff --git a/third-party/pdfjs/web/locale/el/viewer.properties 
b/third-party/pdfjs/web/locale/el/viewer.properties
index e9b5c542e..2de70330e 100644
--- a/third-party/pdfjs/web/locale/el/viewer.properties
+++ b/third-party/pdfjs/web/locale/el/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Πραγματικό μέγεθος
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Σφάλμα
 loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF.
 invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF.
 missing_file_error=Λείπει αρχείο PDF.
diff --git a/third-party/pdfjs/web/locale/en-CA/viewer.properties 
b/third-party/pdfjs/web/locale/en-CA/viewer.properties
index 25eb4484e..3e0906def 100644
--- a/third-party/pdfjs/web/locale/en-CA/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-CA/viewer.properties
@@ -56,9 +56,9 @@ last_page_label=Go to Last Page
 page_rotate_cw.title=Rotate Clockwise
 page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
-page_rotate_ccw.title=Rotate Counterclockwise
-page_rotate_ccw.label=Rotate Counterclockwise
-page_rotate_ccw_label=Rotate Counterclockwise
+page_rotate_ccw.title=Rotate Anti-Clockwise
+page_rotate_ccw.label=Rotate Anti-Clockwise
+page_rotate_ccw_label=Rotate Anti-Clockwise
 
 cursor_text_select_tool.title=Enable Text Selection Tool
 cursor_text_select_tool_label=Text Selection Tool
@@ -148,8 +148,6 @@ layers.title=Show Layers (double-click to reset all layers to the default state)
 layers_label=Layers
 thumbs.title=Show Thumbnails
 thumbs_label=Thumbnails
-current_outline_item.title=Find Current Outline Item
-current_outline_item_label=Current Outline Item
 findbar.title=Find in Document
 findbar_label=Find
 
@@ -228,6 +226,7 @@ page_scale_actual=Actual Size
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/en-GB/viewer.properties 
b/third-party/pdfjs/web/locale/en-GB/viewer.properties
index 494e609a8..7b2c7cd9c 100644
--- a/third-party/pdfjs/web/locale/en-GB/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-GB/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Actual Size
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/en-US/viewer.properties 
b/third-party/pdfjs/web/locale/en-US/viewer.properties
index 5fe094b76..5d1429f75 100644
--- a/third-party/pdfjs/web/locale/en-US/viewer.properties
+++ b/third-party/pdfjs/web/locale/en-US/viewer.properties
@@ -48,12 +48,16 @@ bookmark_label=Current View
 tools.title=Tools
 tools_label=Tools
 first_page.title=Go to First Page
+first_page.label=Go to First Page
 first_page_label=Go to First Page
 last_page.title=Go to Last Page
+last_page.label=Go to Last Page
 last_page_label=Go to Last Page
 page_rotate_cw.title=Rotate Clockwise
+page_rotate_cw.label=Rotate Clockwise
 page_rotate_cw_label=Rotate Clockwise
 page_rotate_ccw.title=Rotate Counterclockwise
+page_rotate_ccw.label=Rotate Counterclockwise
 page_rotate_ccw_label=Rotate Counterclockwise
 
 cursor_text_select_tool.title=Enable Text Selection Tool
@@ -149,8 +153,8 @@ findbar.title=Find in Document
 findbar_label=Find
 
 additional_layers=Additional Layers
-# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
-page_landmark=Page {{page}}
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=Page {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -223,7 +227,7 @@ page_scale_actual=Actual Size
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
-loading=Loading…
+loading_error_indicator=Error
 loading_error=An error occurred while loading the PDF.
 invalid_file_error=Invalid or corrupted PDF file.
 missing_file_error=Missing PDF file.
diff --git a/third-party/pdfjs/web/locale/eo/viewer.properties 
b/third-party/pdfjs/web/locale/eo/viewer.properties
index 3a38340f2..6300f0844 100644
--- a/third-party/pdfjs/web/locale/eo/viewer.properties
+++ b/third-party/pdfjs/web/locale/eo/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Montri tavolojn (duoble alklaku por remeti ĉiujn tavolojn en la no
 layers_label=Tavoloj
 thumbs.title=Montri miniaturojn
 thumbs_label=Miniaturoj
-current_outline_item.title=Trovi nunan konturan elementon
-current_outline_item_label=Nuna kontura elemento
 findbar.title=Serĉi en dokumento
 findbar_label=Serĉi
 
@@ -228,6 +226,7 @@ page_scale_actual=Reala grando
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Eraro
 loading_error=Okazis eraro dum la ŝargado de la PDF dosiero.
 invalid_file_error=Nevalida aŭ difektita PDF dosiero.
 missing_file_error=Mankas dosiero PDF.
diff --git a/third-party/pdfjs/web/locale/es-AR/viewer.properties 
b/third-party/pdfjs/web/locale/es-AR/viewer.properties
index 5cf89ce27..14f588367 100644
--- a/third-party/pdfjs/web/locale/es-AR/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-AR/viewer.properties
@@ -149,7 +149,6 @@ layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
 current_outline_item.title=Buscar elemento de esquema actual
-current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en documento
 findbar_label=Buscar
 
@@ -228,6 +227,7 @@ page_scale_actual=Tamaño real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Ocurrió un error al cargar el PDF.
 invalid_file_error=Archivo PDF no válido o cocrrupto.
 missing_file_error=Archivo PDF faltante.
diff --git a/third-party/pdfjs/web/locale/es-CL/viewer.properties 
b/third-party/pdfjs/web/locale/es-CL/viewer.properties
index e5bcb2ec0..eaba35e5d 100644
--- a/third-party/pdfjs/web/locale/es-CL/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-CL/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Mostrar capas (doble clic para restablecer todas las capas al estad
 layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
-current_outline_item.title=Buscar elemento de esquema actual
-current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
@@ -228,6 +226,7 @@ page_scale_actual=Tamaño actual
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Ocurrió un error al cargar el PDF.
 invalid_file_error=Archivo PDF inválido o corrupto.
 missing_file_error=Falta el archivo PDF.
diff --git a/third-party/pdfjs/web/locale/es-ES/viewer.properties 
b/third-party/pdfjs/web/locale/es-ES/viewer.properties
index 4a64217ba..806f4f5d5 100644
--- a/third-party/pdfjs/web/locale/es-ES/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-ES/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Mostrar capas (doble clic para restablecer todas las capas al estad
 layers_label=Capas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
-current_outline_item.title=Encontrar elemento de esquema actual
-current_outline_item_label=Elemento de esquema actual
 findbar.title=Buscar en el documento
 findbar_label=Buscar
 
@@ -228,6 +226,7 @@ page_scale_actual=Tamaño real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Ocurrió un error al cargar el PDF.
 invalid_file_error=Fichero PDF no válido o corrupto.
 missing_file_error=No hay fichero PDF.
diff --git a/third-party/pdfjs/web/locale/es-MX/viewer.properties 
b/third-party/pdfjs/web/locale/es-MX/viewer.properties
index 7c8206264..c39823d36 100644
--- a/third-party/pdfjs/web/locale/es-MX/viewer.properties
+++ b/third-party/pdfjs/web/locale/es-MX/viewer.properties
@@ -226,6 +226,7 @@ page_scale_actual=Tamaño real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Un error ocurrió al cargar el PDF.
 invalid_file_error=Archivo PDF invalido o dañado.
 missing_file_error=Archivo PDF no encontrado.
diff --git a/third-party/pdfjs/web/locale/et/viewer.properties 
b/third-party/pdfjs/web/locale/et/viewer.properties
index a2de15bbe..97f2c9bd7 100644
--- a/third-party/pdfjs/web/locale/et/viewer.properties
+++ b/third-party/pdfjs/web/locale/et/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Tegelik suurus
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Viga
 loading_error=PDFi laadimisel esines viga.
 invalid_file_error=Vigane või rikutud PDF-fail.
 missing_file_error=PDF-fail puudub.
diff --git a/third-party/pdfjs/web/locale/eu/viewer.properties 
b/third-party/pdfjs/web/locale/eu/viewer.properties
index 160656974..40956b54b 100644
--- a/third-party/pdfjs/web/locale/eu/viewer.properties
+++ b/third-party/pdfjs/web/locale/eu/viewer.properties
@@ -138,18 +138,14 @@ print_progress_close=Utzi
 # tooltips)
 toggle_sidebar.title=Txandakatu alboko barra
 toggle_sidebar_notification.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak ditu)
-toggle_sidebar_notification2.title=Txandakatu alboko barra (dokumentuak eskema/eranskinak/geruzak ditu)
 toggle_sidebar_label=Txandakatu alboko barra
 document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko)
 document_outline_label=Dokumentuaren eskema
 attachments.title=Erakutsi eranskinak
 attachments_label=Eranskinak
-layers.title=Erakutsi geruzak (klik bikoitza geruza guztiak egoera lehenetsira berrezartzeko)
 layers_label=Geruzak
 thumbs.title=Erakutsi koadro txikiak
 thumbs_label=Koadro txikiak
-current_outline_item.title=Bilatu uneko eskemaren elementua
-current_outline_item_label=Uneko eskemaren elementua
 findbar.title=Bilatu dokumentuan
 findbar_label=Bilatu
 
@@ -228,6 +224,7 @@ page_scale_actual=Benetako tamaina
 page_scale_percent=%{{scale}}
 
 # Loading indicator messages
+loading_error_indicator=Errorea
 loading_error=Errorea gertatu da PDFa kargatzean.
 invalid_file_error=PDF fitxategi baliogabe edo hondatua.
 missing_file_error=PDF fitxategia falta da.
diff --git a/third-party/pdfjs/web/locale/fa/viewer.properties 
b/third-party/pdfjs/web/locale/fa/viewer.properties
index dffe4670e..9886b39d2 100644
--- a/third-party/pdfjs/web/locale/fa/viewer.properties
+++ b/third-party/pdfjs/web/locale/fa/viewer.properties
@@ -201,6 +201,7 @@ page_scale_actual=اندازه واقعی‌
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=خطا
 loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد.
 invalid_file_error=پرونده PDF نامعتبر یامعیوب می‌باشد.
 missing_file_error=پرونده PDF یافت نشد.
diff --git a/third-party/pdfjs/web/locale/ff/viewer.properties 
b/third-party/pdfjs/web/locale/ff/viewer.properties
index d494fbfd0..0a081021b 100644
--- a/third-party/pdfjs/web/locale/ff/viewer.properties
+++ b/third-party/pdfjs/web/locale/ff/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Ɓetol Jaati
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Juumre
 loading_error=Juumre waɗii tuma nde loowata PDF oo.
 invalid_file_error=Fiilde PDF moƴƴaani walla jiibii.
 missing_file_error=Fiilde PDF ena ŋakki.
diff --git a/third-party/pdfjs/web/locale/fi/viewer.properties 
b/third-party/pdfjs/web/locale/fi/viewer.properties
index 454e6e823..f444bc6ee 100644
--- a/third-party/pdfjs/web/locale/fi/viewer.properties
+++ b/third-party/pdfjs/web/locale/fi/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Näytä tasot (kaksoisnapsauta palauttaaksesi kaikki tasot oletusti
 layers_label=Tasot
 thumbs.title=Näytä pienoiskuvat
 thumbs_label=Pienoiskuvat
-current_outline_item.title=Etsi nykyinen sisällyksen kohta
-current_outline_item_label=Nykyinen sisällyksen kohta
 findbar.title=Etsi dokumentista
 findbar_label=Etsi
 
@@ -228,6 +226,7 @@ page_scale_actual=Todellinen koko
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Virhe
 loading_error=Tapahtui virhe ladattaessa PDF-tiedostoa.
 invalid_file_error=Virheellinen tai vioittunut PDF-tiedosto.
 missing_file_error=Puuttuva PDF-tiedosto.
diff --git a/third-party/pdfjs/web/locale/fr/viewer.properties 
b/third-party/pdfjs/web/locale/fr/viewer.properties
index 32290a0ad..af54b0966 100644
--- a/third-party/pdfjs/web/locale/fr/viewer.properties
+++ b/third-party/pdfjs/web/locale/fr/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Afficher les calques (double-cliquer pour réinitialiser tous les c
 layers_label=Calques
 thumbs.title=Afficher les vignettes
 thumbs_label=Vignettes
-current_outline_item.title=Trouver l’élément de plan actuel
-current_outline_item_label=Élément de plan actuel
 findbar.title=Rechercher dans le document
 findbar_label=Rechercher
 
@@ -228,6 +226,7 @@ page_scale_actual=Taille réelle
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Erreur
 loading_error=Une erreur s’est produite lors du chargement du fichier PDF.
 invalid_file_error=Fichier PDF invalide ou corrompu.
 missing_file_error=Fichier PDF manquant.
diff --git a/third-party/pdfjs/web/locale/fy-NL/viewer.properties 
b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
index 1d2f055bb..3d69d0db1 100644
--- a/third-party/pdfjs/web/locale/fy-NL/viewer.properties
+++ b/third-party/pdfjs/web/locale/fy-NL/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Lagen toane (dûbelklik om alle lagen nei de standertsteat werom te
 layers_label=Lagen
 thumbs.title=Foarbylden toane
 thumbs_label=Foarbylden
-current_outline_item.title=Aktueel item yn ynhâldsopjefte sykje
-current_outline_item_label=Aktueel item yn ynhâldsopjefte
 findbar.title=Sykje yn dokumint
 findbar_label=Sykje
 
@@ -228,6 +226,7 @@ page_scale_actual=Werklike grutte
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Flater
 loading_error=Der is in flater bard by it laden fan de PDF.
 invalid_file_error=Ynfalide of korruptearre PDF-bestân.
 missing_file_error=PDF-bestân ûntbrekt.
diff --git a/third-party/pdfjs/web/locale/ga-IE/viewer.properties 
b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
index dab541743..f606e81b0 100644
--- a/third-party/pdfjs/web/locale/ga-IE/viewer.properties
+++ b/third-party/pdfjs/web/locale/ga-IE/viewer.properties
@@ -162,6 +162,7 @@ page_scale_actual=Fíormhéid
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Earráid
 loading_error=Tharla earráid agus an cháipéis PDF á lódáil.
 invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
 missing_file_error=Comhad PDF ar iarraidh.
diff --git a/third-party/pdfjs/web/locale/gd/viewer.properties 
b/third-party/pdfjs/web/locale/gd/viewer.properties
index ac5cff17b..bce4dee36 100644
--- a/third-party/pdfjs/web/locale/gd/viewer.properties
+++ b/third-party/pdfjs/web/locale/gd/viewer.properties
@@ -221,6 +221,7 @@ page_scale_actual=Am fìor-mheud
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Mearachd
 loading_error=Thachair mearachd rè luchdadh a' PDF.
 invalid_file_error=Faidhle PDF a tha mì-dhligheach no coirbte.
 missing_file_error=Faidhle PDF a tha a dhìth.
diff --git a/third-party/pdfjs/web/locale/gl/viewer.properties 
b/third-party/pdfjs/web/locale/gl/viewer.properties
index 7662efe62..fedfb8e74 100644
--- a/third-party/pdfjs/web/locale/gl/viewer.properties
+++ b/third-party/pdfjs/web/locale/gl/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Tamaño actual
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Erro
 loading_error=Produciuse un erro ao cargar o PDF.
 invalid_file_error=Ficheiro PDF danado ou non válido.
 missing_file_error=Falta o ficheiro PDF.
diff --git a/third-party/pdfjs/web/locale/gn/viewer.properties 
b/third-party/pdfjs/web/locale/gn/viewer.properties
index 26143b569..7f79a223c 100644
--- a/third-party/pdfjs/web/locale/gn/viewer.properties
+++ b/third-party/pdfjs/web/locale/gn/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Ehechauka ñuãha (eikutu jo’a emomba’apo hag̃ua opaite ñuãh
 layers_label=Ñuãha
 thumbs.title=Mba’emirĩ jehechauka
 thumbs_label=Mba’emirĩ
-current_outline_item.title=Eheka mba’epuru ag̃aguaitéva
-current_outline_item_label=Mba’epuru ag̃aguaitéva
 findbar.title=Kuatiápe jeheka
 findbar_label=Juhu
 
@@ -228,6 +226,7 @@ page_scale_actual=Tuichakue ag̃agua
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Oĩvaíva
 loading_error=Oiko jejavy PDF oñemyeñyhẽnguévo.
 invalid_file_error=PDF marandurenda ndoikóiva térã ivaipyréva.
 missing_file_error=Ndaipóri PDF marandurenda
diff --git a/third-party/pdfjs/web/locale/gu-IN/viewer.properties 
b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
index 07aba6956..579c068d9 100644
--- a/third-party/pdfjs/web/locale/gu-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/gu-IN/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=ચોક્કસ માપ
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=ભૂલ
 loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.
 invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.
 missing_file_error=ગુમ થયેલ PDF ફાઇલ.
diff --git a/third-party/pdfjs/web/locale/he/viewer.properties 
b/third-party/pdfjs/web/locale/he/viewer.properties
index ef19e9e38..02069df09 100644
--- a/third-party/pdfjs/web/locale/he/viewer.properties
+++ b/third-party/pdfjs/web/locale/he/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=גודל אמיתי
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=שגיאה
 loading_error=אירעה שגיאה בעת טעינת ה־PDF.
 invalid_file_error=קובץ PDF פגום או לא תקין.
 missing_file_error=קובץ PDF חסר.
@@ -248,5 +249,5 @@ password_ok=אישור
 password_cancel=ביטול
 
 printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה.
-printing_not_ready=אזהרה: מסמך ה־PDF לא נטען לחלוטין עד מצב שמאפשר הדפסה.
+printing_not_ready=אזהרה: ה־PDF לא ניתן לחלוטין עד מצב שמאפשר הדפסה.
 web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.
diff --git a/third-party/pdfjs/web/locale/hi-IN/viewer.properties 
b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
index 9ce8872c9..6a49a9a98 100644
--- a/third-party/pdfjs/web/locale/hi-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/hi-IN/viewer.properties
@@ -218,6 +218,7 @@ page_scale_actual=वास्तविक आकार
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=त्रुटि
 loading_error=PDF लोड करते समय एक त्रुटि हुई.
 invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.
 missing_file_error=\u0020अनुपस्थित PDF फ़ाइल.
diff --git a/third-party/pdfjs/web/locale/hr/viewer.properties 
b/third-party/pdfjs/web/locale/hr/viewer.properties
index d045a7d5c..5cbca458b 100644
--- a/third-party/pdfjs/web/locale/hr/viewer.properties
+++ b/third-party/pdfjs/web/locale/hr/viewer.properties
@@ -137,8 +137,8 @@ print_progress_close=Odustani
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=Prikaži/sakrij bočnu traku
-toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži strukturu/privitke)
-toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži 
strukturu/privitke/slojeve)
+toggle_sidebar_notification.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži konturu/privitke)
+toggle_sidebar_notification2.title=Prikazivanje i sklanjanje bočne trake (dokument sadrži 
konturu/privitke/slojeve)
 toggle_sidebar_label=Prikaži/sakrij bočnu traku
 document_outline.title=Prikaži strukturu dokumenta (dvostruki klik za rasklapanje/sklapanje svih stavki)
 document_outline_label=Struktura dokumenta
@@ -148,10 +148,8 @@ layers.title=Prikaži slojeve (dvoklik za vraćanje svih slojeva u zadano stanje
 layers_label=Slojevi
 thumbs.title=Prikaži minijature
 thumbs_label=Minijature
-current_outline_item.title=Pronađi trenutačni element strukture
-current_outline_item_label=Trenutačni element strukture
-findbar.title=Pronađi u dokumentu
-findbar_label=Pronađi
+findbar.title=Traži u dokumentu
+findbar_label=Traži
 
 additional_layers=Dodatni slojevi
 # LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
@@ -165,8 +163,8 @@ thumb_page_title=Stranica {{page}}
 thumb_page_canvas=Minijatura stranice {{page}}
 
 # Find panel button title and messages
-find_input.title=Pronađi
-find_input.placeholder=Pronađi u dokumentu …
+find_input.title=Traži
+find_input.placeholder=Traži u dokumentu…
 find_previous.title=Pronađi prethodno pojavljivanje ovog izraza
 find_previous_label=Prethodno
 find_next.title=Pronađi sljedeće pojavljivanje ovog izraza
@@ -228,6 +226,7 @@ page_scale_actual=Stvarna veličina
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Greška
 loading_error=Došlo je do greške pri učitavanju PDF-a.
 invalid_file_error=Neispravna ili oštećena PDF datoteka.
 missing_file_error=Nedostaje PDF datoteka.
diff --git a/third-party/pdfjs/web/locale/hsb/viewer.properties 
b/third-party/pdfjs/web/locale/hsb/viewer.properties
index d14060369..11dea4a90 100644
--- a/third-party/pdfjs/web/locale/hsb/viewer.properties
+++ b/third-party/pdfjs/web/locale/hsb/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Aktualna wulkosć
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Zmylk
 loading_error=Při začitowanju PDF je zmylk wustupił.
 invalid_file_error=Njepłaćiwa abo wobškodźena PDF-dataja.
 missing_file_error=Falowaca PDF-dataja.
diff --git a/third-party/pdfjs/web/locale/hu/viewer.properties 
b/third-party/pdfjs/web/locale/hu/viewer.properties
index 7dbc8d5ce..e2d4b4955 100644
--- a/third-party/pdfjs/web/locale/hu/viewer.properties
+++ b/third-party/pdfjs/web/locale/hu/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Valódi méret
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Hiba
 loading_error=Hiba történt a PDF betöltésekor.
 invalid_file_error=Érvénytelen vagy sérült PDF fájl.
 missing_file_error=Hiányzó PDF fájl.
diff --git a/third-party/pdfjs/web/locale/hy-AM/viewer.properties 
b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
index 282cd2d75..09394f7d8 100644
--- a/third-party/pdfjs/web/locale/hy-AM/viewer.properties
+++ b/third-party/pdfjs/web/locale/hy-AM/viewer.properties
@@ -222,6 +222,7 @@ page_scale_actual=Իրական չափը
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Սխալ
 loading_error=Սխալ՝ PDF ֆայլը բացելիս։
 invalid_file_error=Սխալ կամ վնասված PDF ֆայլ:
 missing_file_error=PDF ֆայլը բացակայում է:
diff --git a/third-party/pdfjs/web/locale/hye/viewer.properties 
b/third-party/pdfjs/web/locale/hye/viewer.properties
index 55f1617cf..c87dd0767 100644
--- a/third-party/pdfjs/web/locale/hye/viewer.properties
+++ b/third-party/pdfjs/web/locale/hye/viewer.properties
@@ -32,7 +32,7 @@ zoom_out.title=Փոքրացնել
 zoom_out_label=Փոքրացնել
 zoom_in.title=Խոշորացնել
 zoom_in_label=Խոշորացնել
-zoom.title=Խոշորացում
+zoom.title=Չափափոխում
 presentation_mode.title=Անցնել ներկայացման եղանակին
 presentation_mode_label=Ներկայացման եղանակ
 open_file.title=Բացել նիշքը
@@ -148,8 +148,6 @@ layers.title=Ցուցադրել շերտերը (կրկնահպել վերակա
 layers_label=Շերտեր
 thumbs.title=Ցուցադրել մանրապատկերը
 thumbs_label=Մանրապատկեր
-current_outline_item.title=Գտէք ընթացիկ գծագրման տարրը
-current_outline_item_label=Ընթացիկ գծագրման տարր
 findbar.title=Գտնել փաստաթղթում
 findbar_label=Որոնում
 
@@ -221,13 +219,14 @@ rendering_error=Սխալ է տեղի ունեցել էջի մեկնաբանմա
 # Predefined zoom values
 page_scale_width=Էջի լայնութիւն
 page_scale_fit=Հարմարեցնել էջը
-page_scale_auto=Ինքնաշխատ խոշորացում
+page_scale_auto=Ինքնաշխատ չափափոխում
 page_scale_actual=Իրական չափը
 # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
 # numerical scale value.
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Սխալ
 loading_error=PDF նիշքը բացելիս սխալ է տեղի ունեցել։
 invalid_file_error=Սխալ կամ վնասուած PDF նիշք։
 missing_file_error=PDF նիշքը բացակաիւմ է։
diff --git a/third-party/pdfjs/web/locale/ia/viewer.properties 
b/third-party/pdfjs/web/locale/ia/viewer.properties
index ff46b7efa..a1d7f4281 100644
--- a/third-party/pdfjs/web/locale/ia/viewer.properties
+++ b/third-party/pdfjs/web/locale/ia/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Monstrar stratos (clicca duple pro remontar tote le stratos al stat
 layers_label=Stratos
 thumbs.title=Monstrar le vignettes
 thumbs_label=Vignettes
-current_outline_item.title=Trovar le elemento de structura actual
-current_outline_item_label=Elemento de structura actual
 findbar.title=Cercar in le documento
 findbar_label=Cercar
 
@@ -228,6 +226,7 @@ page_scale_actual=Dimension actual
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Un error occurreva durante que on cargava le file PDF.
 invalid_file_error=File PDF corrumpite o non valide.
 missing_file_error=File PDF mancante.
diff --git a/third-party/pdfjs/web/locale/id/viewer.properties 
b/third-party/pdfjs/web/locale/id/viewer.properties
index c415452f3..3583317f6 100644
--- a/third-party/pdfjs/web/locale/id/viewer.properties
+++ b/third-party/pdfjs/web/locale/id/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Tampilkan Lapisan (klik ganda untuk mengatur ulang semua lapisan ke
 layers_label=Lapisan
 thumbs.title=Tampilkan Miniatur
 thumbs_label=Miniatur
-current_outline_item.title=Cari Butir Ikhtisar Saat Ini
-current_outline_item_label=Butir Ikhtisar Saat Ini
 findbar.title=Temukan di Dokumen
 findbar_label=Temukan
 
@@ -228,6 +226,7 @@ page_scale_actual=Ukuran Asli
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Galat
 loading_error=Galat terjadi saat memuat PDF.
 invalid_file_error=Berkas PDF tidak valid atau rusak.
 missing_file_error=Berkas PDF tidak ada.
diff --git a/third-party/pdfjs/web/locale/is/viewer.properties 
b/third-party/pdfjs/web/locale/is/viewer.properties
index 032db7603..72dc8acd6 100644
--- a/third-party/pdfjs/web/locale/is/viewer.properties
+++ b/third-party/pdfjs/web/locale/is/viewer.properties
@@ -217,6 +217,7 @@ page_scale_actual=Raunstærð
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Villa
 loading_error=Villa kom upp við að hlaða inn PDF.
 invalid_file_error=Ógild eða skemmd PDF skrá.
 missing_file_error=Vantar PDF skrá.
diff --git a/third-party/pdfjs/web/locale/it/viewer.properties 
b/third-party/pdfjs/web/locale/it/viewer.properties
index 2a3bfde16..95c40036a 100644
--- a/third-party/pdfjs/web/locale/it/viewer.properties
+++ b/third-party/pdfjs/web/locale/it/viewer.properties
@@ -131,7 +131,6 @@ findbar_label = Trova
 
 additional_layers = Livelli aggiuntivi
 page_canvas = Pagina {{page}}
-page_landmark = Pagina {{page}}
 thumb_page_title = Pagina {{page}}
 thumb_page_canvas = Miniatura della pagina {{page}}
 
@@ -177,7 +176,7 @@ page_scale_auto = Zoom automatico
 page_scale_actual = Dimensioni effettive
 page_scale_percent = {{scale}}%
 
-loading = Caricamento in corso…
+loading_error_indicator = Errore
 loading_error = Si è verificato un errore durante il caricamento del PDF.
 invalid_file_error = File PDF non valido o danneggiato.
 missing_file_error = File PDF non disponibile.
diff --git a/third-party/pdfjs/web/locale/ja/viewer.properties 
b/third-party/pdfjs/web/locale/ja/viewer.properties
index df612b45d..0ea2acda6 100644
--- a/third-party/pdfjs/web/locale/ja/viewer.properties
+++ b/third-party/pdfjs/web/locale/ja/viewer.properties
@@ -148,8 +148,6 @@ layers.title=レイヤーを表示します (ダブルクリックですべて
 layers_label=レイヤー
 thumbs.title=縮小版を表示します
 thumbs_label=縮小版
-current_outline_item.title=現在のアウトライン項目を検索
-current_outline_item_label=現在のアウトライン項目
 findbar.title=文書内を検索します
 findbar_label=検索
 
@@ -228,6 +226,7 @@ page_scale_actual=実際のサイズ
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=エラー
 loading_error=PDF の読み込み中にエラーが発生しました。
 invalid_file_error=無効または破損した PDF ファイル。
 missing_file_error=PDF ファイルが見つかりません。
diff --git a/third-party/pdfjs/web/locale/ka/viewer.properties 
b/third-party/pdfjs/web/locale/ka/viewer.properties
index 9fbf08399..0e9e592ad 100644
--- a/third-party/pdfjs/web/locale/ka/viewer.properties
+++ b/third-party/pdfjs/web/locale/ka/viewer.properties
@@ -137,8 +137,8 @@ print_progress_close=გაუქმება
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
 toggle_sidebar.title=გვერდითა ზოლის გამოჩენა/დამალვა
-toggle_sidebar_notification.title=გვერდითა ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს)
-toggle_sidebar_notification2.title=გვერდითი ზოლის გამოჩენა (შეიცავს სარჩევს/დანართს/ფენებს)
+toggle_sidebar_notification.title=გვერდითა ზოლის ჩართვა/გამორთვა (დოკუმენტი შეიცავს სარჩევს/დანართს)
+toggle_sidebar_notification2.title=გვერდითი ზოლის გადართვა (ახლავს მოხაზულობა/დანართი/ფენები)
 toggle_sidebar_label=გვერდითა ზოლის გამოჩენა/დამალვა
 document_outline.title=დოკუმენტის სარჩევის ჩვენება (ორმაგი წკაპით თითოეულის ჩამოშლა/აკეცვა)
 document_outline_label=დოკუმენტის სარჩევი
@@ -148,8 +148,6 @@ layers.title=ფენების გამოჩენა (ორმაგი
 layers_label=ფენები
 thumbs.title=შეთვალიერება
 thumbs_label=ესკიზები
-current_outline_item.title=მიმდინარე გვერდის მონახვა სარჩევში
-current_outline_item_label=მიმდინარე გვერდი სარჩევში
 findbar.title=პოვნა დოკუმენტში
 findbar_label=ძიება
 
@@ -228,6 +226,7 @@ page_scale_actual=საწყისი ზომა
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=შეცდომა
 loading_error=შეცდომა, PDF-ფაილის ჩატვირთვისას.
 invalid_file_error=არამართებული ან დაზიანებული PDF-ფაილი.
 missing_file_error=ნაკლული PDF-ფაილი.
diff --git a/third-party/pdfjs/web/locale/kab/viewer.properties 
b/third-party/pdfjs/web/locale/kab/viewer.properties
index 310b2e472..f397bc9f4 100644
--- a/third-party/pdfjs/web/locale/kab/viewer.properties
+++ b/third-party/pdfjs/web/locale/kab/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Skeen tissiwin (sit sin yiberdan i uwennez n meṛṛa tissiwin ɣe
 layers_label=Tissiwin
 thumbs.title=Sken tanfult.
 thumbs_label=Tinfulin
-current_outline_item.title=Af-d aferdis n uɣawas amiran
-current_outline_item_label=Aferdis n uɣawas amiran
 findbar.title=Nadi deg isemli
 findbar_label=Nadi
 
@@ -228,6 +226,7 @@ page_scale_actual=Teɣzi tilawt
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Teḍra-d tuccḍa deg alluy n PDF:
 invalid_file_error=Afaylu PDF arameɣtu neɣ yexṣeṛ.
 missing_file_error=Ulac afaylu PDF.
diff --git a/third-party/pdfjs/web/locale/kk/viewer.properties 
b/third-party/pdfjs/web/locale/kk/viewer.properties
index 6e3228477..a2db99f5f 100644
--- a/third-party/pdfjs/web/locale/kk/viewer.properties
+++ b/third-party/pdfjs/web/locale/kk/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Қабаттарды көрсету (барлық қабаттар
 layers_label=Қабаттар
 thumbs.title=Кіші көріністерді көрсету
 thumbs_label=Кіші көріністер
-current_outline_item.title=Құрылымның ағымдағы элементін табу
-current_outline_item_label=Құрылымның ағымдағы элементі
 findbar.title=Құжаттан табу
 findbar_label=Табу
 
@@ -228,6 +226,7 @@ page_scale_actual=Нақты өлшемі
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Қате
 loading_error=PDF жүктеу кезінде қате кетті.
 invalid_file_error=Зақымдалған немесе қате PDF файл.
 missing_file_error=PDF файлы жоқ.
diff --git a/third-party/pdfjs/web/locale/km/viewer.properties 
b/third-party/pdfjs/web/locale/km/viewer.properties
index b59d7fa11..109de4b16 100644
--- a/third-party/pdfjs/web/locale/km/viewer.properties
+++ b/third-party/pdfjs/web/locale/km/viewer.properties
@@ -192,6 +192,7 @@ page_scale_actual=ទំហំ​ជាក់ស្ដែង
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=កំហុស
 loading_error=មាន​កំហុស​បាន​កើតឡើង​ពេល​កំពុង​ផ្ទុក PDF ។
 invalid_file_error=ឯកសារ PDF ខូច ឬ​មិន​ត្រឹមត្រូវ ។
 missing_file_error=បាត់​ឯកសារ PDF
diff --git a/third-party/pdfjs/web/locale/kn/viewer.properties 
b/third-party/pdfjs/web/locale/kn/viewer.properties
index a5ba38a94..b37a71c2e 100644
--- a/third-party/pdfjs/web/locale/kn/viewer.properties
+++ b/third-party/pdfjs/web/locale/kn/viewer.properties
@@ -171,6 +171,7 @@ page_scale_actual=ನಿಜವಾದ ಗಾತ್ರ
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=ದೋಷ
 loading_error=PDF ಅನ್ನು ಲೋಡ್ ಮಾಡುವಾಗ ಒಂದು ದೋಷ ಎದುರಾಗಿದೆ.
 invalid_file_error=ಅಮಾನ್ಯವಾದ ಅಥವ ಹಾಳಾದ PDF ಕಡತ.
 missing_file_error=PDF ಕಡತ ಇಲ್ಲ.
diff --git a/third-party/pdfjs/web/locale/ko/viewer.properties 
b/third-party/pdfjs/web/locale/ko/viewer.properties
index 5ff42af6d..c578f9109 100644
--- a/third-party/pdfjs/web/locale/ko/viewer.properties
+++ b/third-party/pdfjs/web/locale/ko/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=실제 크기
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=오류
 loading_error=PDF를 로드하는 동안 오류가 발생했습니다.
 invalid_file_error=잘못되었거나 손상된 PDF 파일.
 missing_file_error=PDF 파일 없음.
diff --git a/third-party/pdfjs/web/locale/lij/viewer.properties 
b/third-party/pdfjs/web/locale/lij/viewer.properties
index b9dc27364..0cfa7d27f 100644
--- a/third-party/pdfjs/web/locale/lij/viewer.properties
+++ b/third-party/pdfjs/web/locale/lij/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Dimenscioin efetive
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Erô
 loading_error=S'é verificou 'n'erô itno caregamento do PDF.
 invalid_file_error=O schedaio PDF o l'é no valido ò aroinou.
 missing_file_error=O schedaio PDF o no gh'é.
diff --git a/third-party/pdfjs/web/locale/lo/viewer.properties 
b/third-party/pdfjs/web/locale/lo/viewer.properties
index 9b8fe6379..00d3309c0 100644
--- a/third-party/pdfjs/web/locale/lo/viewer.properties
+++ b/third-party/pdfjs/web/locale/lo/viewer.properties
@@ -139,6 +139,7 @@ rendering_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະ
 # numerical scale value.
 
 # Loading indicator messages
+loading_error_indicator=ຂໍ້ຜິດພາດ
 loading_error=ມີຂໍ້ຜິດພາດເກີດຂື້ນຂະນະທີ່ກຳລັງໂຫລດ PDF.
 invalid_file_error=ໄຟລ໌ PDF ບໍ່ຖືກຕ້ອງຫລືເສຍຫາຍ.
 
diff --git a/third-party/pdfjs/web/locale/lt/viewer.properties 
b/third-party/pdfjs/web/locale/lt/viewer.properties
index 312a23db2..017a36ba2 100644
--- a/third-party/pdfjs/web/locale/lt/viewer.properties
+++ b/third-party/pdfjs/web/locale/lt/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Rodyti sluoksnius (spustelėkite dukart, norėdami atstatyti visus
 layers_label=Sluoksniai
 thumbs.title=Rodyti puslapių miniatiūras
 thumbs_label=Miniatiūros
-current_outline_item.title=Rasti dabartinį struktūros elementą
-current_outline_item_label=Dabartinis struktūros elementas
 findbar.title=Ieškoti dokumente
 findbar_label=Rasti
 
@@ -228,6 +226,7 @@ page_scale_actual=Tikras dydis
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Klaida
 loading_error=Įkeliant PDF failą įvyko klaida.
 invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas.
 missing_file_error=PDF failas nerastas.
diff --git a/third-party/pdfjs/web/locale/ltg/viewer.properties 
b/third-party/pdfjs/web/locale/ltg/viewer.properties
index 87996ef19..4fffa864d 100644
--- a/third-party/pdfjs/web/locale/ltg/viewer.properties
+++ b/third-party/pdfjs/web/locale/ltg/viewer.properties
@@ -198,6 +198,7 @@ page_scale_actual=Patīsais izmārs
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Klaida
 loading_error=Īluodejūt PDF nūtyka klaida.
 invalid_file_error=Nadereigs voi būjuots PDF fails.
 missing_file_error=PDF fails nav atrosts.
diff --git a/third-party/pdfjs/web/locale/lv/viewer.properties 
b/third-party/pdfjs/web/locale/lv/viewer.properties
index c69db7507..b6d6ad38f 100644
--- a/third-party/pdfjs/web/locale/lv/viewer.properties
+++ b/third-party/pdfjs/web/locale/lv/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Patiesais izmērs
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Kļūda
 loading_error=Ielādējot PDF notika kļūda.
 invalid_file_error=Nederīgs vai bojāts PDF fails.
 missing_file_error=PDF fails nav atrasts.
diff --git a/third-party/pdfjs/web/locale/mk/viewer.properties 
b/third-party/pdfjs/web/locale/mk/viewer.properties
index b7d027a23..c1b091ed6 100644
--- a/third-party/pdfjs/web/locale/mk/viewer.properties
+++ b/third-party/pdfjs/web/locale/mk/viewer.properties
@@ -128,6 +128,7 @@ page_scale_actual=Вистинска големина
 # numerical scale value.
 
 # Loading indicator messages
+loading_error_indicator=Грешка
 loading_error=Настана грешка при вчитувањето на PDF-от.
 invalid_file_error=Невалидна или корумпирана PDF датотека.
 missing_file_error=Недостасува PDF документ.
diff --git a/third-party/pdfjs/web/locale/mr/viewer.properties 
b/third-party/pdfjs/web/locale/mr/viewer.properties
index b3da755e4..b33646f51 100644
--- a/third-party/pdfjs/web/locale/mr/viewer.properties
+++ b/third-party/pdfjs/web/locale/mr/viewer.properties
@@ -212,6 +212,7 @@ page_scale_actual=प्रत्यक्ष आकार
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=त्रुटी
 loading_error=PDF लोड करतेवेळी त्रुटी आढळली.
 invalid_file_error=अवैध किंवा दोषीत PDF फाइल.
 missing_file_error=न आढळणारी PDF फाइल.
diff --git a/third-party/pdfjs/web/locale/ms/viewer.properties 
b/third-party/pdfjs/web/locale/ms/viewer.properties
index 7769f3465..61f155397 100644
--- a/third-party/pdfjs/web/locale/ms/viewer.properties
+++ b/third-party/pdfjs/web/locale/ms/viewer.properties
@@ -220,6 +220,7 @@ page_scale_actual=Saiz Sebenar
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Ralat
 loading_error=Masalah berlaku semasa menuatkan sebuah PDF.
 invalid_file_error=Tidak sah atau fail PDF rosak.
 missing_file_error=Fail PDF Hilang.
diff --git a/third-party/pdfjs/web/locale/my/viewer.properties 
b/third-party/pdfjs/web/locale/my/viewer.properties
index da7e220b6..3e6f2c305 100644
--- a/third-party/pdfjs/web/locale/my/viewer.properties
+++ b/third-party/pdfjs/web/locale/my/viewer.properties
@@ -176,6 +176,7 @@ page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ်
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=အမှား
 loading_error=PDF ဖိုင် ကိုဆွဲတင်နေချိန်မှာ အမှားတစ်ခုတွေ့ရပါတယ်။
 invalid_file_error=မရသော သို့ ပျက်နေသော PDF ဖိုင်
 missing_file_error=PDF ပျောက်ဆုံး
diff --git a/third-party/pdfjs/web/locale/nb-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
index e632d10f5..1d39aaa86 100644
--- a/third-party/pdfjs/web/locale/nb-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nb-NO/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Virkelig størrelse
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Feil
 loading_error=En feil oppstod ved lasting av PDF.
 invalid_file_error=Ugyldig eller skadet PDF-fil.
 missing_file_error=Manglende PDF-fil.
diff --git a/third-party/pdfjs/web/locale/ne-NP/viewer.properties 
b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
index 7baf6056d..3bf8ed8f3 100644
--- a/third-party/pdfjs/web/locale/ne-NP/viewer.properties
+++ b/third-party/pdfjs/web/locale/ne-NP/viewer.properties
@@ -162,6 +162,7 @@ page_scale_actual=वास्तविक आकार
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=त्रुटि
 loading_error=यो PDF लोड गर्दा एउटा त्रुटि देखापर्‍यो।
 invalid_file_error=अवैध वा दुषित PDF फाइल।
 missing_file_error=हराईरहेको PDF फाइल।
diff --git a/third-party/pdfjs/web/locale/nl/viewer.properties 
b/third-party/pdfjs/web/locale/nl/viewer.properties
index d15407cf9..0491255d8 100644
--- a/third-party/pdfjs/web/locale/nl/viewer.properties
+++ b/third-party/pdfjs/web/locale/nl/viewer.properties
@@ -148,8 +148,8 @@ layers.title=Lagen tonen (dubbelklik om alle lagen naar de standaardstatus terug
 layers_label=Lagen
 thumbs.title=Miniaturen tonen
 thumbs_label=Miniaturen
-current_outline_item.title=Huidig item in inhoudsopgave zoeken
-current_outline_item_label=Huidig item in inhoudsopgave
+current_outline_item.title=Huidige positie in documentoverzicht selecteren
+current_outline_item_label=Huidige positie in documentoverzicht
 findbar.title=Zoeken in document
 findbar_label=Zoeken
 
@@ -228,6 +228,7 @@ page_scale_actual=Werkelijke grootte
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Fout
 loading_error=Er is een fout opgetreden bij het laden van de PDF.
 invalid_file_error=Ongeldig of beschadigd PDF-bestand.
 missing_file_error=PDF-bestand ontbreekt. 
diff --git a/third-party/pdfjs/web/locale/nn-NO/viewer.properties 
b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
index f8702065c..43dff5a31 100644
--- a/third-party/pdfjs/web/locale/nn-NO/viewer.properties
+++ b/third-party/pdfjs/web/locale/nn-NO/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Vis lag (dobbeltklikk for å tilbakestille alle lag til standardtil
 layers_label=Lag
 thumbs.title=Vis miniatyrbilde
 thumbs_label=Miniatyrbilde
-current_outline_item.title=Finn gjeldande disposisjonselement
-current_outline_item_label=Gjeldande disposisjonselement
 findbar.title=Finn i dokumentet
 findbar_label=Finn
 
@@ -228,6 +226,7 @@ page_scale_actual=Verkeleg storleik
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Feil
 loading_error=Ein feil oppstod ved lasting av PDF.
 invalid_file_error=Ugyldig eller korrupt PDF-fil.
 missing_file_error=Manglande PDF-fil.
diff --git a/third-party/pdfjs/web/locale/oc/viewer.properties 
b/third-party/pdfjs/web/locale/oc/viewer.properties
index 026849686..c7d4884be 100644
--- a/third-party/pdfjs/web/locale/oc/viewer.properties
+++ b/third-party/pdfjs/web/locale/oc/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Afichar los calques (doble-clicar per reïnicializar totes los calq
 layers_label=Calques
 thumbs.title=Afichar las vinhetas
 thumbs_label=Vinhetas
-current_outline_item.title=Trobar l’element de plan actual
-current_outline_item_label=Element de plan actual
 findbar.title=Cercar dins lo document
 findbar_label=Recercar
 
@@ -228,6 +226,7 @@ page_scale_actual=Talha vertadièra
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Una error s'es producha pendent lo cargament del fichièr PDF.
 invalid_file_error=Fichièr PDF invalid o corromput.
 missing_file_error=Fichièr PDF mancant.
diff --git a/third-party/pdfjs/web/locale/pa-IN/viewer.properties 
b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
index dcfaa5182..0bfd2a778 100644
--- a/third-party/pdfjs/web/locale/pa-IN/viewer.properties
+++ b/third-party/pdfjs/web/locale/pa-IN/viewer.properties
@@ -75,9 +75,7 @@ scroll_wrapped_label=ਸਮੇਟਿਆ ਸਰਕਾਉਣਾ
 spread_none.title=ਸਫ਼ਾ ਫੈਲਾਅ ਵਿੱਚ ਸ਼ਾਮਲ ਨਾ ਹੋਵੋ
 spread_none_label=ਕੋਈ ਫੈਲਾਅ ਨਹੀਂ
 spread_odd.title=ਟਾਂਕ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
-spread_odd_label=ਟਾਂਕ ਫੈਲਾਅ
 spread_even.title=ਜਿਸਤ ਅੰਕ ਵਾਲੇ ਸਫ਼ਿਆਂ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣ ਵਾਲੇ ਸਫਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ
-spread_even_label=ਜਿਸਤ ਫੈਲਾਅ
 
 # Document properties dialog box
 document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ
@@ -148,8 +146,6 @@ layers.title=ਪਰਤਾਂ ਵੇਖਾਓ (ਸਾਰੀਆਂ ਪਰਤਾਂ
 layers_label=ਪਰਤਾਂ
 thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ
 thumbs_label=ਥੰਮਨੇਲ
-current_outline_item.title=ਮੌੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼ ਲੱਭੋ
-current_outline_item_label=ਮੌਜੂਦਾ ਖਾਕਾ ਚੀਜ਼
 findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
 findbar_label=ਲੱਭੋ
 
@@ -228,6 +224,7 @@ page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=ਗਲਤੀ
 loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
 invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ।
 missing_file_error=ਨਾ-ਮੌਜੂਦ PDF ਫਾਈਲ।
diff --git a/third-party/pdfjs/web/locale/pl/viewer.properties 
b/third-party/pdfjs/web/locale/pl/viewer.properties
index cb31a5fa2..e436f1f3f 100644
--- a/third-party/pdfjs/web/locale/pl/viewer.properties
+++ b/third-party/pdfjs/web/locale/pl/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Warstwy (podwójne kliknięcie przywraca wszystkie warstwy do stanu
 layers_label=Warstwy
 thumbs.title=Miniatury
 thumbs_label=Miniatury
-current_outline_item.title=Znajdź bieżący element konspektu
-current_outline_item_label=Bieżący element konspektu
 findbar.title=Znajdź w dokumencie
 findbar_label=Znajdź
 
@@ -228,6 +226,7 @@ page_scale_actual=Rozmiar oryginalny
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Błąd
 loading_error=Podczas wczytywania dokumentu PDF wystąpił błąd.
 invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF.
 missing_file_error=Brak pliku PDF.
diff --git a/third-party/pdfjs/web/locale/pt-BR/viewer.properties 
b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
index e091bf934..a1a5e357b 100644
--- a/third-party/pdfjs/web/locale/pt-BR/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-BR/viewer.properties
@@ -62,15 +62,15 @@ page_rotate_ccw_label=Girar no sentido anti-horário
 
 cursor_text_select_tool.title=Ativar a ferramenta de seleção de texto
 cursor_text_select_tool_label=Ferramenta de seleção de texto
-cursor_hand_tool.title=Ativar ferramenta de deslocamento
-cursor_hand_tool_label=Ferramenta de deslocamento
+cursor_hand_tool.title=Ativar ferramenta de mão
+cursor_hand_tool_label=Ferramenta de mão
 
-scroll_vertical.title=Usar deslocamento vertical
-scroll_vertical_label=Deslocamento vertical
-scroll_horizontal.title=Usar deslocamento horizontal
-scroll_horizontal_label=Deslocamento horizontal
-scroll_wrapped.title=Usar deslocamento contido
-scroll_wrapped_label=Deslocamento contido
+scroll_vertical.title=Usar rolagem vertical
+scroll_vertical_label=Rolagem vertical
+scroll_horizontal.title=Usar rolagem horizontal
+scroll_horizontal_label=Rolagem horizontal
+scroll_wrapped.title=Usar rolagem contida
+scroll_wrapped_label=Rolagem contida
 
 spread_none.title=Não reagrupar páginas
 spread_none_label=Não estender
@@ -122,7 +122,7 @@ document_properties_page_size_dimension_string={{width}} × {{height}} {{unit}}
 document_properties_page_size_dimension_name_string={{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})
 # LOCALIZATION NOTE (document_properties_linearized): The linearization status of
 # the document; usually called "Fast Web View" in English locales of Adobe software.
-document_properties_linearized=Exibição web rápida:
+document_properties_linearized=Exibição rápida da web:
 document_properties_linearized_yes=Sim
 document_properties_linearized_no=Não
 document_properties_close=Fechar
@@ -136,9 +136,9 @@ print_progress_close=Cancelar
 # Tooltips and alt text for side panel toolbar buttons
 # (the _label strings are alt text for the buttons, the .title strings are
 # tooltips)
-toggle_sidebar.title=Exibir/ocultar painel lateral
-toggle_sidebar_notification.title=Exibir/ocultar painel lateral (documento contém estrutura/anexos)
-toggle_sidebar_notification2.title=Exibir/ocultar painel (documento contém estrutura/anexos/camadas)
+toggle_sidebar.title=Exibir/ocultar painel
+toggle_sidebar_notification.title=Exibir/ocultar o painel (documento contém estrutura/anexos)
+toggle_sidebar_notification2.title=Exibir/ocultar o painel (documento contém estrutura/anexos/camadas)
 toggle_sidebar_label=Exibir/ocultar painel
 document_outline.title=Mostrar a estrutura do documento (dê um duplo-clique para expandir/recolher todos os 
itens)
 document_outline_label=Estrutura do documento
@@ -228,6 +228,7 @@ page_scale_actual=Tamanho real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Erro
 loading_error=Ocorreu um erro ao carregar o PDF.
 invalid_file_error=Arquivo PDF corrompido ou inválido.
 missing_file_error=Arquivo PDF ausente.
diff --git a/third-party/pdfjs/web/locale/pt-PT/viewer.properties 
b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
index 437eaa489..de11bb5a2 100644
--- a/third-party/pdfjs/web/locale/pt-PT/viewer.properties
+++ b/third-party/pdfjs/web/locale/pt-PT/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Mostrar camadas (clique duas vezes para repor todas as camadas para
 layers_label=Camadas
 thumbs.title=Mostrar miniaturas
 thumbs_label=Miniaturas
-current_outline_item.title=Encontrar o item atualmente destacado
-current_outline_item_label=Item atualmente destacado
 findbar.title=Localizar em documento
 findbar_label=Localizar
 
@@ -228,6 +226,7 @@ page_scale_actual=Tamanho real
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Erro
 loading_error=Ocorreu um erro ao carregar o PDF.
 invalid_file_error=Ficheiro PDF inválido ou danificado.
 missing_file_error=Ficheiro PDF inexistente.
diff --git a/third-party/pdfjs/web/locale/rm/viewer.properties 
b/third-party/pdfjs/web/locale/rm/viewer.properties
index bb5fb0229..f63af0f07 100644
--- a/third-party/pdfjs/web/locale/rm/viewer.properties
+++ b/third-party/pdfjs/web/locale/rm/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Mussar ils nivels (cliccar dubel per restaurar il stadi da standard
 layers_label=Nivels
 thumbs.title=Mussar las miniaturas
 thumbs_label=Miniaturas
-current_outline_item.title=Tschertgar l'element da structura actual
-current_outline_item_label=Element da structura actual
 findbar.title=Tschertgar en il document
 findbar_label=Tschertgar
 
@@ -228,6 +226,7 @@ page_scale_actual=Grondezza actuala
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Errur
 loading_error=Ina errur è cumparida cun chargiar il PDF.
 invalid_file_error=Datoteca PDF nunvalida u donnegiada.
 missing_file_error=Datoteca PDF manconta.
diff --git a/third-party/pdfjs/web/locale/ro/viewer.properties 
b/third-party/pdfjs/web/locale/ro/viewer.properties
index e397c96b1..0e4fbf70e 100644
--- a/third-party/pdfjs/web/locale/ro/viewer.properties
+++ b/third-party/pdfjs/web/locale/ro/viewer.properties
@@ -222,6 +222,7 @@ page_scale_actual=Mărime reală
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Eroare
 loading_error=A intervenit o eroare la încărcarea PDF-ului.
 invalid_file_error=Fișier PDF nevalid sau corupt.
 missing_file_error=Fișier PDF lipsă.
diff --git a/third-party/pdfjs/web/locale/ru/viewer.properties 
b/third-party/pdfjs/web/locale/ru/viewer.properties
index 8c865d20d..25e439013 100644
--- a/third-party/pdfjs/web/locale/ru/viewer.properties
+++ b/third-party/pdfjs/web/locale/ru/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Показать слои (дважды щёлкните, чтоб
 layers_label=Слои
 thumbs.title=Показать миниатюры
 thumbs_label=Миниатюры
-current_outline_item.title=Найти текущий элемент структуры
-current_outline_item_label=Текущий элемент структуры
 findbar.title=Найти в документе
 findbar_label=Найти
 
@@ -228,6 +226,7 @@ page_scale_actual=Реальный размер
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Ошибка
 loading_error=При загрузке PDF произошла ошибка.
 invalid_file_error=Некорректный или повреждённый PDF-файл.
 missing_file_error=PDF-файл отсутствует.
diff --git a/third-party/pdfjs/web/locale/si/viewer.properties 
b/third-party/pdfjs/web/locale/si/viewer.properties
index e4ac12549..9a1d1e8bc 100644
--- a/third-party/pdfjs/web/locale/si/viewer.properties
+++ b/third-party/pdfjs/web/locale/si/viewer.properties
@@ -186,6 +186,7 @@ page_scale_actual=නියමිත ප්‍රමාණය
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=දෝෂය
 loading_error=PDF පූරණය විමේදි දෝෂයක් හට ගැනුණි.
 invalid_file_error=දූශිත හෝ සාවද්‍ය PDF ගොනුව.
 missing_file_error=නැතිවූ PDF ගොනුව.
diff --git a/third-party/pdfjs/web/locale/sk/viewer.properties 
b/third-party/pdfjs/web/locale/sk/viewer.properties
index 4be243903..888303ec4 100644
--- a/third-party/pdfjs/web/locale/sk/viewer.properties
+++ b/third-party/pdfjs/web/locale/sk/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Zobraziť vrstvy (dvojitým kliknutím uvediete všetky vrstvy do p
 layers_label=Vrstvy
 thumbs.title=Zobraziť miniatúry
 thumbs_label=Miniatúry
-current_outline_item.title=Nájsť aktuálnu položku v osnove
-current_outline_item_label=Aktuálna položka v osnove
 findbar.title=Hľadať v dokumente
 findbar_label=Hľadať
 
@@ -200,7 +198,7 @@ find_match_count_limit[other]=Viac než {{limit}} výsledkov
 find_not_found=Výraz nebol nájdený
 
 # Error panel labels
-error_more_info=Ďalšie informácie
+error_more_info=Viac informácií
 error_less_info=Menej informácií
 error_close=Zavrieť
 # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
@@ -228,6 +226,7 @@ page_scale_actual=Skutočná veľkosť
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Chyba
 loading_error=Počas načítavania dokumentu PDF sa vyskytla chyba.
 invalid_file_error=Neplatný alebo poškodený súbor PDF.
 missing_file_error=Chýbajúci súbor PDF.
diff --git a/third-party/pdfjs/web/locale/sl/viewer.properties 
b/third-party/pdfjs/web/locale/sl/viewer.properties
index 9678b0324..274d96235 100644
--- a/third-party/pdfjs/web/locale/sl/viewer.properties
+++ b/third-party/pdfjs/web/locale/sl/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Prikaži plasti (dvokliknite za ponastavitev vseh plasti na privzet
 layers_label=Plasti
 thumbs.title=Prikaži sličice
 thumbs_label=Sličice
-current_outline_item.title=Najdi trenutni predmet orisa
-current_outline_item_label=Trenutni predmet orisa
 findbar.title=Iskanje po dokumentu
 findbar_label=Najdi
 
@@ -228,6 +226,7 @@ page_scale_actual=Dejanska velikost
 page_scale_percent={{scale}} %
 
 # Loading indicator messages
+loading_error_indicator=Napaka
 loading_error=Med nalaganjem datoteke PDF je prišlo do napake.
 invalid_file_error=Neveljavna ali pokvarjena datoteka PDF.
 missing_file_error=Ni datoteke PDF.
diff --git a/third-party/pdfjs/web/locale/son/viewer.properties 
b/third-party/pdfjs/web/locale/son/viewer.properties
index df2bd1009..683ed14d4 100644
--- a/third-party/pdfjs/web/locale/son/viewer.properties
+++ b/third-party/pdfjs/web/locale/son/viewer.properties
@@ -158,6 +158,7 @@ page_scale_actual=Adadu cimi
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Firka
 loading_error=Firka bangay kaŋ PDF goo ma zumandi.
 invalid_file_error=PDF tuku laala wala laybante.
 missing_file_error=PDF tuku kumante.
diff --git a/third-party/pdfjs/web/locale/sq/viewer.properties 
b/third-party/pdfjs/web/locale/sq/viewer.properties
index dbed4c27f..516cb96c5 100644
--- a/third-party/pdfjs/web/locale/sq/viewer.properties
+++ b/third-party/pdfjs/web/locale/sq/viewer.properties
@@ -219,6 +219,7 @@ page_scale_actual=Madhësia Faktike
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Gabim
 loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.
 invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
 missing_file_error=Kartelë PDF që mungon.
diff --git a/third-party/pdfjs/web/locale/sr/viewer.properties 
b/third-party/pdfjs/web/locale/sr/viewer.properties
index 581da478e..edcf7ba15 100644
--- a/third-party/pdfjs/web/locale/sr/viewer.properties
+++ b/third-party/pdfjs/web/locale/sr/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Прикажи слојеве (дупли клик за враћа
 layers_label=Слојеви
 thumbs.title=Прикажи сличице
 thumbs_label=Сличице
-current_outline_item.title=Пронађите тренутни елемент структуре
-current_outline_item_label=Тренутна контура
 findbar.title=Пронађи у документу
 findbar_label=Пронађи
 
@@ -228,6 +226,7 @@ page_scale_actual=Стварна величина
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Грешка
 loading_error=Дошло је до грешке приликом учитавања PDF-а.
 invalid_file_error=PDF датотека је оштећена или је неисправна.
 missing_file_error=PDF датотека није пронађена.
diff --git a/third-party/pdfjs/web/locale/sv-SE/viewer.properties 
b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
index 69e053901..57f2cc2ad 100644
--- a/third-party/pdfjs/web/locale/sv-SE/viewer.properties
+++ b/third-party/pdfjs/web/locale/sv-SE/viewer.properties
@@ -154,8 +154,8 @@ findbar.title=Sök i dokument
 findbar_label=Sök
 
 additional_layers=Ytterligare lager
-# LOCALIZATION NOTE (page_landmark): "{{page}}" will be replaced by the page number.
-page_landmark=Sida {{page}}
+# LOCALIZATION NOTE (page_canvas): "{{page}}" will be replaced by the page number.
+page_canvas=Sida {{page}}
 # Thumbnails panel item (tooltip and alt text for images)
 # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
 # number.
@@ -228,7 +228,7 @@ page_scale_actual=Verklig storlek
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
-loading=Laddar…
+loading_error_indicator=Fel
 loading_error=Ett fel uppstod vid laddning av PDF-filen.
 invalid_file_error=Ogiltig eller korrupt PDF-fil.
 missing_file_error=Saknad PDF-fil.
diff --git a/third-party/pdfjs/web/locale/szl/viewer.properties 
b/third-party/pdfjs/web/locale/szl/viewer.properties
index ea709b7cc..80a5e6bda 100644
--- a/third-party/pdfjs/web/locale/szl/viewer.properties
+++ b/third-party/pdfjs/web/locale/szl/viewer.properties
@@ -140,7 +140,7 @@ toggle_sidebar.title=Przełōncz posek na rancie
 toggle_sidebar_notification.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki)
 toggle_sidebar_notification2.title=Przełōncz posek na rancie (dokumynt mo struktura/przidowki/warstwy)
 toggle_sidebar_label=Przełōncz posek na rancie
-document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynta)
+document_outline.title=Pokoż struktura dokumyntu (tuplowane klikniyncie rozszyrzo/swijo wszyskie elymynty)
 document_outline_label=Struktura dokumyntu
 attachments.title=Pokoż przidowki
 attachments_label=Przidowki
@@ -226,6 +226,7 @@ page_scale_actual=Aktualno srogość
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Feler
 loading_error=Przi ladowaniu PDFa pokozoł sie feler.
 invalid_file_error=Zły abo felerny zbiōr PDF.
 missing_file_error=Chybio zbioru PDF.
diff --git a/third-party/pdfjs/web/locale/ta/viewer.properties 
b/third-party/pdfjs/web/locale/ta/viewer.properties
index 179c93405..669ba0c56 100644
--- a/third-party/pdfjs/web/locale/ta/viewer.properties
+++ b/third-party/pdfjs/web/locale/ta/viewer.properties
@@ -179,6 +179,7 @@ page_scale_actual=உண்மையான அளவு
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=பிழை
 loading_error=PDF ஐ ஏற்றும் போது ஒரு பிழை ஏற்பட்டது.
 invalid_file_error=செல்லுபடியாகாத அல்லது சிதைந்த PDF கோப்பு.
 missing_file_error=PDF கோப்பு காணவில்லை.
diff --git a/third-party/pdfjs/web/locale/te/viewer.properties 
b/third-party/pdfjs/web/locale/te/viewer.properties
index 014d102df..6839138b1 100644
--- a/third-party/pdfjs/web/locale/te/viewer.properties
+++ b/third-party/pdfjs/web/locale/te/viewer.properties
@@ -200,6 +200,7 @@ page_scale_actual=యథార్ధ పరిమాణం
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=దోషం
 loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది.
 invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.
 missing_file_error=దొరకని PDF ఫైలు.
diff --git a/third-party/pdfjs/web/locale/th/viewer.properties 
b/third-party/pdfjs/web/locale/th/viewer.properties
index 1a4347c50..49642836c 100644
--- a/third-party/pdfjs/web/locale/th/viewer.properties
+++ b/third-party/pdfjs/web/locale/th/viewer.properties
@@ -148,8 +148,6 @@ layers.title=แสดงเลเยอร์ (คลิกสองครั
 layers_label=เลเยอร์
 thumbs.title=แสดงภาพขนาดย่อ
 thumbs_label=ภาพขนาดย่อ
-current_outline_item.title=ค้นหารายการเค้าร่างปัจจุบัน
-current_outline_item_label=รายการเค้าร่างปัจจุบัน
 findbar.title=ค้นหาในเอกสาร
 findbar_label=ค้นหา
 
@@ -228,6 +226,7 @@ page_scale_actual=ขนาดจริง
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=ข้อผิดพลาด
 loading_error=เกิดข้อผิดพลาดขณะโหลด PDF
 invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย
 missing_file_error=ไฟล์ PDF หายไป
diff --git a/third-party/pdfjs/web/locale/tl/viewer.properties 
b/third-party/pdfjs/web/locale/tl/viewer.properties
index 9b1a15e17..d3cce44e9 100644
--- a/third-party/pdfjs/web/locale/tl/viewer.properties
+++ b/third-party/pdfjs/web/locale/tl/viewer.properties
@@ -226,6 +226,7 @@ page_scale_actual=Totoong sukat
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Error
 loading_error=Nagkaproblema habang niloload ang PDF.
 invalid_file_error=Di-wasto o sira ang PDF file.
 missing_file_error=Nawawalang PDF file.
diff --git a/third-party/pdfjs/web/locale/tr/viewer.properties 
b/third-party/pdfjs/web/locale/tr/viewer.properties
index ed6d8eb49..e898dd51f 100644
--- a/third-party/pdfjs/web/locale/tr/viewer.properties
+++ b/third-party/pdfjs/web/locale/tr/viewer.properties
@@ -138,7 +138,7 @@ print_progress_close=İptal
 # tooltips)
 toggle_sidebar.title=Kenar çubuğunu aç/kapat
 toggle_sidebar_notification.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler içeriyor)
-toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge ana hat/ekler/katmanlar içeriyor)
+toggle_sidebar_notification2.title=Kenar çubuğunu aç/kapat (Belge anahat/ekler/katmanlar içeriyor)
 toggle_sidebar_label=Kenar çubuğunu aç/kapat
 document_outline.title=Belge ana hatlarını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)
 document_outline_label=Belge ana hatları
@@ -148,8 +148,6 @@ layers.title=Katmanları göster (tüm katmanları varsayılan duruma sıfırlam
 layers_label=Katmanlar
 thumbs.title=Küçük resimleri göster
 thumbs_label=Küçük resimler
-current_outline_item.title=Mevcut ana hat öğesini bul
-current_outline_item_label=Mevcut ana hat öğesi
 findbar.title=Belgede bul
 findbar_label=Bul
 
@@ -228,6 +226,7 @@ page_scale_actual=Gerçek boyut
 page_scale_percent=%{{scale}}
 
 # Loading indicator messages
+loading_error_indicator=Hata
 loading_error=PDF yüklenirken bir hata oluştu.
 invalid_file_error=Geçersiz veya bozulmuş PDF dosyası.
 missing_file_error=PDF dosyası eksik.
diff --git a/third-party/pdfjs/web/locale/trs/viewer.properties 
b/third-party/pdfjs/web/locale/trs/viewer.properties
index 75e1f2fa0..65252f7fe 100644
--- a/third-party/pdfjs/web/locale/trs/viewer.properties
+++ b/third-party/pdfjs/web/locale/trs/viewer.properties
@@ -199,6 +199,7 @@ page_scale_actual=Dàj yàchi akuan' nín
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Nitaj si hua hue'ej
 
 # LOCALIZATION NOTE (annotation_date_string): "{{date}}" and "{{time}}" will be
 # replaced by the modification date, and time, of the annotation.
diff --git a/third-party/pdfjs/web/locale/uk/viewer.properties 
b/third-party/pdfjs/web/locale/uk/viewer.properties
index e834e0c25..eaeb551eb 100644
--- a/third-party/pdfjs/web/locale/uk/viewer.properties
+++ b/third-party/pdfjs/web/locale/uk/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=Дійсний розмір
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Помилка
 loading_error=Під час завантаження PDF сталася помилка.
 invalid_file_error=Недійсний або пошкоджений PDF-файл.
 missing_file_error=Відсутній PDF-файл.
diff --git a/third-party/pdfjs/web/locale/ur/viewer.properties 
b/third-party/pdfjs/web/locale/ur/viewer.properties
index 15f563176..162ca1475 100644
--- a/third-party/pdfjs/web/locale/ur/viewer.properties
+++ b/third-party/pdfjs/web/locale/ur/viewer.properties
@@ -216,6 +216,7 @@ page_scale_actual=اصل سائز
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=نقص
 loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔
 invalid_file_error=ناجائز یا خراب PDF مسل
 missing_file_error=PDF مسل غائب ہے۔
diff --git a/third-party/pdfjs/web/locale/uz/viewer.properties 
b/third-party/pdfjs/web/locale/uz/viewer.properties
index 000e07719..6ad24319e 100644
--- a/third-party/pdfjs/web/locale/uz/viewer.properties
+++ b/third-party/pdfjs/web/locale/uz/viewer.properties
@@ -148,6 +148,7 @@ page_scale_actual=Haqiqiy hajmi
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Xato
 loading_error=PDF yuklanayotganda xato yuz berdi.
 invalid_file_error=Xato yoki buzuq PDF fayli.
 missing_file_error=PDF fayl kerak.
diff --git a/third-party/pdfjs/web/locale/vi/viewer.properties 
b/third-party/pdfjs/web/locale/vi/viewer.properties
index f0b38fe5d..00ff02195 100644
--- a/third-party/pdfjs/web/locale/vi/viewer.properties
+++ b/third-party/pdfjs/web/locale/vi/viewer.properties
@@ -148,8 +148,6 @@ layers.title=Hiển thị các lớp (nhấp đúp để đặt lại tất cả
 layers_label=Lớp
 thumbs.title=Hiển thị ảnh thu nhỏ
 thumbs_label=Ảnh thu nhỏ
-current_outline_item.title=Tìm mục phác thảo hiện tại
-current_outline_item_label=Mục phác thảo hiện tại
 findbar.title=Tìm trong tài liệu
 findbar_label=Tìm
 
@@ -228,6 +226,7 @@ page_scale_actual=Kích thước thực
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Lỗi
 loading_error=Lỗi khi tải tài liệu PDF.
 invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ.
 missing_file_error=Thiếu tập tin PDF.
diff --git a/third-party/pdfjs/web/locale/wo/viewer.properties 
b/third-party/pdfjs/web/locale/wo/viewer.properties
index 17b7214a1..38c7bc184 100644
--- a/third-party/pdfjs/web/locale/wo/viewer.properties
+++ b/third-party/pdfjs/web/locale/wo/viewer.properties
@@ -109,6 +109,7 @@ page_scale_actual=Dayo bi am
 # numerical scale value.
 
 # Loading indicator messages
+loading_error_indicator=Njumte
 loading_error=Am na njumte ci yebum dencukaay PDF bi.
 invalid_file_error=Dencukaay PDF bi baaxul walla mu sankar.
 
diff --git a/third-party/pdfjs/web/locale/xh/viewer.properties 
b/third-party/pdfjs/web/locale/xh/viewer.properties
index a5c40dbb7..52cd75e5b 100644
--- a/third-party/pdfjs/web/locale/xh/viewer.properties
+++ b/third-party/pdfjs/web/locale/xh/viewer.properties
@@ -162,6 +162,7 @@ page_scale_actual=Ubungakanani bokwenene
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=Imposiso
 loading_error=Imposiso yenzekile xa kulayishwa i-PDF.
 invalid_file_error=Ifayile ye-PDF engeyiyo okanye eyonakalisiweyo.
 missing_file_error=Ifayile ye-PDF edukileyo.
diff --git a/third-party/pdfjs/web/locale/zh-CN/viewer.properties 
b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
index f7a43287d..becd80284 100644
--- a/third-party/pdfjs/web/locale/zh-CN/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-CN/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=实际大小
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=错误
 loading_error=载入 PDF 时发生错误。
 invalid_file_error=无效或损坏的 PDF 文件。
 missing_file_error=缺少 PDF 文件。
diff --git a/third-party/pdfjs/web/locale/zh-TW/viewer.properties 
b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
index 8116cd6f8..0f095de03 100644
--- a/third-party/pdfjs/web/locale/zh-TW/viewer.properties
+++ b/third-party/pdfjs/web/locale/zh-TW/viewer.properties
@@ -228,6 +228,7 @@ page_scale_actual=實際大小
 page_scale_percent={{scale}}%
 
 # Loading indicator messages
+loading_error_indicator=錯誤
 loading_error=載入 PDF 時發生錯誤。
 invalid_file_error=無效或毀損的 PDF 檔案。
 missing_file_error=找不到 PDF 檔案。
diff --git a/third-party/pdfjs/web/viewer.css b/third-party/pdfjs/web/viewer.css
index 9616f67cd..d7322b41e 100644
--- a/third-party/pdfjs/web/viewer.css
+++ b/third-party/pdfjs/web/viewer.css
@@ -1,4 +1,5 @@
 /* Copyright 2014 Mozilla Foundation
+ * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -74,6 +75,7 @@
   cursor: default;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
 }
 
@@ -277,184 +279,6 @@
   cursor: pointer;
 }
 
-*/* Copyright 2021 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-.xfaLayer {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 200;
-  transform-origin: 0 0;
-}
-
-.xfaLayer * {
-  color: inherit;
-  font: inherit;
-  -webkit-font-kerning: inherit;
-          font-kerning: inherit;
-  letter-spacing: inherit;
-  text-align: inherit;
-  text-decoration: inherit;
-  vertical-align: inherit;
-  box-sizing: border-box;
-}
-
-.xfaFont {
-  color: black;
-  font-weight: normal;
-  -webkit-font-kerning: none;
-          font-kerning: none;
-  font-size: 10px;
-  font-style: normal;
-  letter-spacing: 0;
-  text-decoration: none;
-  vertical-align: 0;
-}
-
-.xfaDraw {
-  z-index: 200;
-}
-
-.xfaExclgroup {
-  z-index: 300;
-}
-
-.xfaField {
-  z-index: 300;
-}
-
-.xfaSubform {
-  z-index: 100;
-}
-
-.xfaLabel {
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-  width: 100%;
-  height: 100%;
-}
-
-.xfaCaption {
-  flex: 1 1 auto;
-}
-
-.xfaTextfield,
-.xfaSelect {
-  width: 100%;
-  height: 100%;
-  flex: 1 1 auto;
-  border: none;
-}
-
-.xfaLabel > input[type="checkbox"] {
-  /* Use this trick to make the checkbox invisible but
-       but still focusable. */
-  position: absolute;
-  left: -99999px;
-}
-
-.xfaLabel > input[type="checkbox"]:focus + .xfaCheckboxMark {
-  box-shadow: 0 0 5px rgba(0, 0, 0, 0.7);
-}
-
-.xfaCheckboxMark {
-  cursor: pointer;
-  flex: 0 0 auto;
-  border-style: solid;
-  border-width: 2px;
-  border-color: #8f8f9d;
-  font-size: 10px;
-  line-height: 10px;
-  width: 10px;
-  height: 10px;
-  text-align: center;
-  vertical-align: middle;
-  display: flex;
-  flex-direction: row;
-  align-items: center;
-}
-
-.xfaCheckbox:checked + .xfaCheckboxMark::after {
-  content: attr(mark);
-}
-
-.xfaButton {
-  cursor: pointer;
-  width: 100%;
-  height: 100%;
-  border: none;
-  text-align: center;
-}
-
-.xfaButton:hover {
-  background: Highlight;
-}
-
-.xfaLrTb,
-.xfaRlTb,
-.xfaTb,
-.xfaPosition {
-  display: block;
-}
-
-.xfaPosition {
-  position: relative;
-}
-
-.xfaValignMiddle {
-  display: flex;
-  align-items: center;
-}
-
-.xfaLrTb > div {
-  display: inline;
-  float: left;
-}
-
-.xfaRlTb > div {
-  display: inline;
-  float: right;
-}
-
-.xfaTable {
-  display: flex;
-  flex-direction: column;
-}
-
-.xfaTable .xfaRow {
-  display: flex;
-  flex-direction: row;
-  flex: 1 1 auto;
-}
-
-.xfaTable .xfaRow > div {
-  flex: 1 1 auto;
-}
-
-.xfaTable .xfaRlRow {
-  display: flex;
-  flex-direction: row-reverse;
-  flex: 1;
-}
-
-.xfaTable .xfaRlRow > div {
-  flex: 1;
-}
-
 .pdfViewer .canvasWrapper {
   overflow: hidden;
 }
@@ -575,6 +399,11 @@
   border: 0;
 }
 
+.pdfPresentationMode:-ms-fullscreen .pdfViewer .page {
+  margin-bottom: 100%;
+  border: 0;
+}
+
 .pdfPresentationMode:fullscreen .pdfViewer .page {
   margin-bottom: 100%;
   border: 0;
@@ -599,8 +428,7 @@
   --scrollbar-bg-color: auto;
   --toolbar-icon-bg-color: rgba(0, 0, 0, 1);
 
-  --sidebar-narrow-bg-color: rgba(237, 237, 240, 0.9);
-  --sidebar-toolbar-bg-color: rgba(245, 246, 247, 1);
+  --sidebar-bg-color: rgba(245, 246, 247, 1);
   --toolbar-bg-color: rgba(249, 249, 250, 1);
   --toolbar-border-color: rgba(204, 204, 204, 1);
   --button-hover-color: rgba(221, 222, 223, 1);
@@ -674,8 +502,7 @@
     --scrollbar-bg-color: rgba(35, 35, 39, 1);
     --toolbar-icon-bg-color: rgba(255, 255, 255, 1);
 
-    --sidebar-narrow-bg-color: rgba(42, 42, 46, 0.9);
-    --sidebar-toolbar-bg-color: rgba(50, 50, 52, 1);
+    --sidebar-bg-color: rgba(50, 50, 52, 1);
     --toolbar-bg-color: rgba(56, 56, 61, 1);
     --toolbar-border-color: rgba(12, 12, 13, 1);
     --button-hover-color: rgba(102, 102, 103, 1);
@@ -721,16 +548,172 @@ html {
 body {
   height: 100%;
   width: 100%;
+  background-color: rgba(237, 237, 240, 1);
+  background-color: var(--body-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  body {
+  background-color: rgba(42, 42, 46, 1);
   background-color: var(--body-bg-color);
+  }
+}
+
+body {
+  font: message-box;
+  outline: none;
+  scrollbar-color: auto auto;
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  body {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  body {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  body {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  body {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+input {
+  font: message-box;
+  outline: none;
+  scrollbar-color: auto auto;
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  input {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  input {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  input {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  input {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+button {
+  font: message-box;
+  outline: none;
+  scrollbar-color: auto auto;
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  button {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  button {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  button {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  button {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
 }
 
-body,
-input,
-button,
 select {
   font: message-box;
   outline: none;
+  scrollbar-color: auto auto;
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  select {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  select {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
   scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  select {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  select {
+  scrollbar-color: rgba(121, 121, 123, 1) rgba(35, 35, 39, 1);
+  scrollbar-color: var(--scrollbar-color) var(--scrollbar-bg-color);
+  }
 }
 
 .hidden {
@@ -743,6 +726,7 @@ select {
 .pdfViewer.enablePermissions .textLayer > span {
   -webkit-user-select: none !important;
      -moz-user-select: none !important;
+      -ms-user-select: none !important;
           user-select: none !important;
   cursor: not-allowed;
 }
@@ -771,6 +755,18 @@ select {
        user-select: none;
 }
 
+#viewerContainer.pdfPresentationMode:-ms-fullscreen {
+  top: 0;
+  border-top: 2px solid rgba(0, 0, 0, 0);
+  background-color: rgba(0, 0, 0, 1);
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+  cursor: none;
+  -ms-user-select: none;
+      user-select: none;
+}
+
 #viewerContainer.pdfPresentationMode:fullscreen {
   top: 0;
   border-top: 2px solid rgba(0, 0, 0, 0);
@@ -781,6 +777,7 @@ select {
   cursor: none;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
 }
 
@@ -792,6 +789,10 @@ select {
   display: none;
 }
 
+.pdfPresentationMode:-ms-fullscreen a:not(.internalLink) {
+  display: none;
+}
+
 .pdfPresentationMode:fullscreen a:not(.internalLink) {
   display: none;
 }
@@ -804,6 +805,10 @@ select {
   cursor: none;
 }
 
+.pdfPresentationMode:-ms-fullscreen .textLayer > span {
+  cursor: none;
+}
+
 .pdfPresentationMode:fullscreen .textLayer > span {
   cursor: none;
 }
@@ -823,19 +828,24 @@ select {
   position: absolute;
   top: 32px;
   bottom: 0;
+  width: 200px;
   width: var(--sidebar-width);
   visibility: hidden;
   z-index: 100;
   border-top: 1px solid rgba(51, 51, 51, 1);
+  transition-duration: 200ms;
   transition-duration: var(--sidebar-transition-duration);
+  transition-timing-function: ease;
   transition-timing-function: var(--sidebar-transition-timing-function);
 }
 html[dir="ltr"] #sidebarContainer {
   transition-property: left;
+  left: -200px;
   left: calc(0px - var(--sidebar-width));
 }
 html[dir="rtl"] #sidebarContainer {
   transition-property: right;
+  right: -200px;
   right: calc(0px - var(--sidebar-width));
 }
 
@@ -845,6 +855,7 @@ html[dir="rtl"] #sidebarContainer {
   /* Prevent e.g. the thumbnails being selected when the sidebar is resized. */
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
 }
 
@@ -897,7 +908,9 @@ html[dir="rtl"] #sidebarContent {
   outline: none;
 }
 #viewerContainer:not(.pdfPresentationMode) {
+  transition-duration: 200ms;
   transition-duration: var(--sidebar-transition-duration);
+  transition-timing-function: ease;
   transition-timing-function: var(--sidebar-transition-timing-function);
 }
 
@@ -910,12 +923,14 @@ html[dir="ltr"]
   #outerContainer.sidebarOpen
   #viewerContainer:not(.pdfPresentationMode) {
   transition-property: left;
+  left: 200px;
   left: var(--sidebar-width);
 }
 html[dir="rtl"]
   #outerContainer.sidebarOpen
   #viewerContainer:not(.pdfPresentationMode) {
   transition-property: right;
+  right: 200px;
   right: var(--sidebar-width);
 }
 
@@ -934,7 +949,16 @@ html[dir="rtl"]
 #toolbarSidebar {
   width: 100%;
   height: 32px;
-  background-color: var(--sidebar-toolbar-bg-color);
+  background-color: rgba(245, 246, 247, 1);
+  background-color: var(--sidebar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #toolbarSidebar {
+  background-color: rgba(50, 50, 52, 1);
+  background-color: var(--sidebar-bg-color);
+  }
 }
 html[dir="ltr"] #toolbarSidebar {
   box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), 0 1px 0 rgba(0, 0, 0, 0.15),
@@ -974,43 +998,134 @@ html[dir="rtl"] #sidebarResizer {
   left: -6px;
 }
 
-#toolbarContainer,
-.findbar,
-.secondaryToolbar {
+#toolbarContainer {
   position: relative;
   height: 32px;
+  background-color: rgba(249, 249, 250, 1);
   background-color: var(--toolbar-bg-color);
+  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
   box-shadow: 0 1px 0 var(--toolbar-border-color);
 }
 
-#toolbarViewer {
-  height: 32px;
+@media (prefers-color-scheme: dark) {
+
+  #toolbarContainer {
+  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
+  }
 }
 
-#loadingBar {
-  position: absolute;
-  height: 4px;
-  background-color: var(--body-bg-color);
-  border-bottom: 1px solid var(--toolbar-border-color);
+@media (prefers-color-scheme: dark) {
+
+  #toolbarContainer {
+  background-color: rgba(56, 56, 61, 1);
+  background-color: var(--toolbar-bg-color);
+  }
+}
+
+.findbar {
+  position: relative;
+  height: 32px;
+  background-color: rgba(249, 249, 250, 1);
+  background-color: var(--toolbar-bg-color);
+  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .findbar {
+  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .findbar {
+  background-color: rgba(56, 56, 61, 1);
+  background-color: var(--toolbar-bg-color);
+  }
+}
+
+.secondaryToolbar {
+  position: relative;
+  height: 32px;
+  background-color: rgba(249, 249, 250, 1);
+  background-color: var(--toolbar-bg-color);
+  box-shadow: 0 1px 0 rgba(204, 204, 204, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbar {
+  box-shadow: 0 1px 0 rgba(12, 12, 13, 1);
+  box-shadow: 0 1px 0 var(--toolbar-border-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbar {
+  background-color: rgba(56, 56, 61, 1);
+  background-color: var(--toolbar-bg-color);
+  }
+}
+
+#toolbarViewer {
+  height: 32px;
+}
+
+#loadingBar {
+  position: absolute;
+  height: 4px;
+  background-color: rgba(237, 237, 240, 1);
+  background-color: var(--body-bg-color);
+  border-bottom: 1px solid rgba(204, 204, 204, 1);
+  border-bottom: 1px solid var(--toolbar-border-color);
+
+  transition-duration: 200ms;
 
   transition-duration: var(--sidebar-transition-duration);
+  transition-timing-function: ease;
   transition-timing-function: var(--sidebar-transition-timing-function);
 }
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar {
+  border-bottom: 1px solid rgba(12, 12, 13, 1);
+  border-bottom: 1px solid var(--toolbar-border-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar {
+  background-color: rgba(42, 42, 46, 1);
+  background-color: var(--body-bg-color);
+  }
+}
 html[dir="ltr"] #loadingBar {
   transition-property: left;
   left: 0;
+  right: 0;
   right: var(--loadingBar-end-offset);
 }
 html[dir="rtl"] #loadingBar {
   transition-property: right;
+  left: 0;
   left: var(--loadingBar-end-offset);
   right: 0;
 }
 
 html[dir="ltr"] #outerContainer.sidebarOpen #loadingBar {
+  left: 200px;
   left: var(--sidebar-width);
 }
 html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
+  right: 200px;
   right: var(--sidebar-width);
 }
 
@@ -1025,11 +1140,20 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
   left: 0;
   width: 0%;
   height: 100%;
+  background-color: rgba(10, 132, 255, 1);
   background-color: var(--progressBar-color);
   overflow: hidden;
   transition: width 200ms;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress {
+  background-color: rgba(0, 96, 223, 1);
+  background-color: var(--progressBar-color);
+  }
+}
+
 @-webkit-keyframes progressIndeterminate {
   0% {
     left: -142px;
@@ -1049,16 +1173,34 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
 }
 
 #loadingBar .progress.indeterminate {
+  background-color: rgba(221, 221, 222, 1);
   background-color: var(--progressBar-indeterminate-bg-color);
   transition: none;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate {
+  background-color: rgba(40, 40, 43, 1);
+  background-color: var(--progressBar-indeterminate-bg-color);
+  }
+}
+
 #loadingBar .progress.indeterminate .glimmer {
   position: absolute;
   top: 0;
   left: 0;
   height: 100%;
   width: calc(100% + 150px);
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(116, 177, 239, 1) 0,
+    rgba(221, 221, 222, 1) 5px,
+    rgba(221, 221, 222, 1) 45px,
+    rgba(10, 132, 255, 1) 55px,
+    rgba(10, 132, 255, 1) 95px,
+    rgba(116, 177, 239, 1) 100px
+  );
   background: repeating-linear-gradient(
     135deg,
     var(--progressBar-indeterminate-blend-color) 0,
@@ -1072,6 +1214,222 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
           animation: progressIndeterminate 1s linear infinite;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #loadingBar .progress.indeterminate .glimmer {
+  background: repeating-linear-gradient(
+    135deg,
+    rgba(20, 68, 133, 1) 0,
+    rgba(40, 40, 43, 1) 5px,
+    rgba(40, 40, 43, 1) 45px,
+    rgba(0, 96, 223, 1) 55px,
+    rgba(0, 96, 223, 1) 95px,
+    rgba(20, 68, 133, 1) 100px
+  );
+  background: repeating-linear-gradient(
+    135deg,
+    var(--progressBar-indeterminate-blend-color) 0,
+    var(--progressBar-indeterminate-bg-color) 5px,
+    var(--progressBar-indeterminate-bg-color) 45px,
+    var(--progressBar-color) 55px,
+    var(--progressBar-color) 95px,
+    var(--progressBar-indeterminate-blend-color) 100px
+  );
+  }
+}
+
 .findbar,
 .secondaryToolbar {
   top: 32px;
@@ -1090,7 +1448,16 @@ html[dir="rtl"] #outerContainer.sidebarOpen #loadingBar {
 
 .findbar {
   min-width: 300px;
+  background-color: rgba(249, 249, 250, 1);
+  background-color: var(--toolbar-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .findbar {
+  background-color: rgba(56, 56, 61, 1);
   background-color: var(--toolbar-bg-color);
+  }
 }
 .findbar > div {
   height: 32px;
@@ -1121,30 +1488,73 @@ html[dir="rtl"] .findbar .splitToolbarButton {
 }
 
 .findbar .splitToolbarButton > .toolbarButton {
+  background-color: rgba(227, 228, 230, 1);
   background-color: var(--findbar-nextprevious-btn-bg-color);
   border-radius: 0;
   height: 26px;
+  border-top: 1px solid rgba(187, 187, 188, 1);
   border-top: 1px solid var(--field-border-color);
+  border-bottom: 1px solid rgba(187, 187, 188, 1);
   border-bottom: 1px solid var(--field-border-color);
 }
 
-.findbar .splitToolbarButton > .toolbarButton::before {
-  top: 5px;
+@media (prefers-color-scheme: dark) {
+
+  .findbar .splitToolbarButton > .toolbarButton {
+  border-bottom: 1px solid rgba(115, 115, 115, 1);
+  border-bottom: 1px solid var(--field-border-color);
+  }
 }
 
-.findbar .splitToolbarButton > .findNext {
-  width: 29px;
+@media (prefers-color-scheme: dark) {
+
+  .findbar .splitToolbarButton > .toolbarButton {
+  border-top: 1px solid rgba(115, 115, 115, 1);
+  border-top: 1px solid var(--field-border-color);
+  }
 }
-html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
-  border-bottom-right-radius: 2px;
+
+@media (prefers-color-scheme: dark) {
+
+  .findbar .splitToolbarButton > .toolbarButton {
+  background-color: rgba(89, 89, 89, 1);
+  background-color: var(--findbar-nextprevious-btn-bg-color);
+  }
+}
+
+.findbar .splitToolbarButton > .toolbarButton::before {
+  top: 5px;
+}
+
+.findbar .splitToolbarButton > .findNext {
+  width: 29px;
+}
+html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
+  border-bottom-right-radius: 2px;
   border-top-right-radius: 2px;
+  border-right: 1px solid rgba(187, 187, 188, 1);
   border-right: 1px solid var(--field-border-color);
 }
+@media (prefers-color-scheme: dark) {
+
+  html[dir="ltr"] .findbar .splitToolbarButton > .findNext {
+  border-right: 1px solid rgba(115, 115, 115, 1);
+  border-right: 1px solid var(--field-border-color);
+  }
+}
 html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
   border-bottom-left-radius: 2px;
   border-top-left-radius: 2px;
+  border-left: 1px solid rgba(187, 187, 188, 1);
   border-left: 1px solid var(--field-border-color);
 }
+@media (prefers-color-scheme: dark) {
+
+  html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
+  border-left: 1px solid rgba(115, 115, 115, 1);
+  border-left: 1px solid var(--field-border-color);
+  }
+}
 
 .findbar input[type="checkbox"] {
   pointer-events: none;
@@ -1153,14 +1563,36 @@ html[dir="rtl"] .findbar .splitToolbarButton > .findNext {
 .findbar label {
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
 }
 
-.findbar label:hover,
+.findbar label:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .findbar label:hover {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
 .findbar input:focus + label {
+  background-color: rgba(221, 222, 223, 1);
   background-color: var(--button-hover-color);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .findbar input:focus + label {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
 html[dir="ltr"] #findInput {
   border-top-right-radius: 0;
   border-bottom-right-radius: 0;
@@ -1171,9 +1603,18 @@ html[dir="rtl"] #findInput {
 }
 
 .findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel {
+  background-color: rgba(0, 0, 0, 0.3) !important;
   background-color: var(--toggled-btn-bg-color) !important;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .findbar .toolbarField[type="checkbox"]:checked + .toolbarLabel {
+  background-color: rgba(0, 0, 0, 0.3) !important;
+  background-color: var(--toggled-btn-bg-color) !important;
+  }
+}
+
 #findInput {
   width: 200px;
 }
@@ -1183,14 +1624,25 @@ html[dir="rtl"] #findInput {
 #findInput::-moz-placeholder {
   font-style: normal;
 }
+#findInput:-ms-input-placeholder {
+  font-style: normal;
+}
 #findInput::placeholder {
   font-style: normal;
 }
 #findInput[data-status="pending"] {
+  background-image: url(images/loading.svg);
   background-image: var(--loading-icon);
   background-repeat: no-repeat;
   background-position: 98%;
 }
+@media (prefers-color-scheme: dark) {
+
+  #findInput[data-status="pending"] {
+  background-image: url(images/loading-dark.svg);
+  background-image: var(--loading-icon);
+  }
+}
 html[dir="rtl"] #findInput[data-status="pending"] {
   background-position: 3px;
 }
@@ -1202,8 +1654,17 @@ html[dir="rtl"] #findInput[data-status="pending"] {
   padding: 6px 0 10px;
   height: auto;
   z-index: 30000;
+  background-color: rgba(255, 255, 255, 1);
   background-color: var(--doorhanger-bg-color);
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbar {
+  background-color: rgba(74, 74, 79, 1);
+  background-color: var(--doorhanger-bg-color);
+  }
+}
 html[dir="ltr"] .secondaryToolbar {
   right: 4px;
 }
@@ -1224,12 +1685,41 @@ html[dir="rtl"] .secondaryToolbar {
   display: none !important;
 }
 
-.doorHanger,
+.doorHanger {
+  border-radius: 2px;
+  box-shadow: 0 1px 5px rgba(12, 12, 13, 0.2),
+    0 0 0 1px rgba(12, 12, 13, 0.2);
+  box-shadow: 0 1px 5px var(--doorhanger-border-color),
+    0 0 0 1px var(--doorhanger-border-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .doorHanger {
+  box-shadow: 0 1px 5px rgba(39, 39, 43, 1),
+    0 0 0 1px rgba(39, 39, 43, 1);
+  box-shadow: 0 1px 5px var(--doorhanger-border-color),
+    0 0 0 1px var(--doorhanger-border-color);
+  }
+}
+
 .doorHangerRight {
   border-radius: 2px;
+  box-shadow: 0 1px 5px rgba(12, 12, 13, 0.2),
+    0 0 0 1px rgba(12, 12, 13, 0.2);
   box-shadow: 0 1px 5px var(--doorhanger-border-color),
     0 0 0 1px var(--doorhanger-border-color);
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .doorHangerRight {
+  box-shadow: 0 1px 5px rgba(39, 39, 43, 1),
+    0 0 0 1px rgba(39, 39, 43, 1);
+  box-shadow: 0 1px 5px var(--doorhanger-border-color),
+    0 0 0 1px var(--doorhanger-border-color);
+  }
+}
 .doorHanger:after,
 .doorHanger:before,
 .doorHangerRight:after,
@@ -1247,16 +1737,51 @@ html[dir="rtl"] .secondaryToolbar {
   border-width: 8px;
 }
 .doorHanger:after {
+  border-bottom-color: rgba(249, 249, 250, 1);
+  border-bottom-color: var(--toolbar-bg-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  .doorHanger:after {
+  border-bottom-color: rgba(56, 56, 61, 1);
   border-bottom-color: var(--toolbar-bg-color);
+  }
 }
 .doorHangerRight:after {
+  border-bottom-color: rgba(255, 255, 255, 1);
   border-bottom-color: var(--doorhanger-bg-color);
 }
-.doorHanger:before,
+@media (prefers-color-scheme: dark) {
+
+  .doorHangerRight:after {
+  border-bottom-color: rgba(74, 74, 79, 1);
+  border-bottom-color: var(--doorhanger-bg-color);
+  }
+}
+.doorHanger:before {
+  border-bottom-color: rgba(12, 12, 13, 0.2);
+  border-bottom-color: var(--doorhanger-border-color);
+  border-width: 9px;
+}
+@media (prefers-color-scheme: dark) {
+
+  .doorHanger:before {
+  border-bottom-color: rgba(39, 39, 43, 1);
+  border-bottom-color: var(--doorhanger-border-color);
+  }
+}
 .doorHangerRight:before {
+  border-bottom-color: rgba(12, 12, 13, 0.2);
   border-bottom-color: var(--doorhanger-border-color);
   border-width: 9px;
 }
+@media (prefers-color-scheme: dark) {
+
+  .doorHangerRight:before {
+  border-bottom-color: rgba(39, 39, 43, 1);
+  border-bottom-color: var(--doorhanger-border-color);
+  }
+}
 
 html[dir="ltr"] .doorHanger:after,
 html[dir="rtl"] .doorHangerRight:after {
@@ -1354,14 +1879,43 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
   height: 28px;
 }
 .overlayButton {
+  background-color: rgba(12, 12, 13, 0.1);
   background-color: var(--overlay-button-bg-color);
 }
+@media (prefers-color-scheme: dark) {
+
+  .overlayButton {
+  background-color: rgba(92, 92, 97, 1);
+  background-color: var(--overlay-button-bg-color);
+  }
+}
+
+.overlayButton:hover {
+  background-color: rgba(12, 12, 13, 0.3);
+  background-color: var(--overlay-button-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .overlayButton:hover {
+  background-color: rgba(115, 115, 115, 1);
+  background-color: var(--overlay-button-hover-color);
+  }
+}
 
-.overlayButton:hover,
 .overlayButton:focus {
+  background-color: rgba(12, 12, 13, 0.3);
   background-color: var(--overlay-button-hover-color);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .overlayButton:focus {
+  background-color: rgba(115, 115, 115, 1);
+  background-color: var(--overlay-button-hover-color);
+  }
+}
+
 .toolbarButton > span {
   display: inline-block;
   width: 0;
@@ -1379,14 +1933,75 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton {
   margin: 0;
 }
 
-.splitToolbarButton > .toolbarButton:hover,
-.splitToolbarButton > .toolbarButton:focus,
-.dropdownToolbarButton:hover,
-.toolbarButton.textButton:hover,
+.splitToolbarButton > .toolbarButton:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+  z-index: 199;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButton > .toolbarButton:hover {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
+.splitToolbarButton > .toolbarButton:focus {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+  z-index: 199;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButton > .toolbarButton:focus {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
+.dropdownToolbarButton:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+  z-index: 199;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton:hover {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
+.toolbarButton.textButton:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+  z-index: 199;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton.textButton:hover {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+
 .toolbarButton.textButton:focus {
+  background-color: rgba(221, 222, 223, 1);
   background-color: var(--button-hover-color);
   z-index: 199;
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton.textButton:focus {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
 .splitToolbarButton > .toolbarButton {
   position: relative;
 }
@@ -1401,18 +2016,35 @@ html[dir="rtl"] .splitToolbarButton > .toolbarButton:first-child {
 .splitToolbarButtonSeparator {
   padding: 10px 0;
   width: 1px;
+  background-color: rgba(0, 0, 0, 0.3);
   background-color: var(--separator-color);
   z-index: 99;
   display: inline-block;
   margin: 4px 0;
 }
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButtonSeparator {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--separator-color);
+  }
+}
 
 .findbar .splitToolbarButtonSeparator {
+  background-color: rgba(187, 187, 188, 1);
   background-color: var(--field-border-color);
   margin: 0;
   padding: 13px 0;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .findbar .splitToolbarButtonSeparator {
+  background-color: rgba(115, 115, 115, 1);
+  background-color: var(--field-border-color);
+  }
+}
+
 html[dir="ltr"] .splitToolbarButtonSeparator {
   float: left;
 }
@@ -1420,25 +2052,110 @@ html[dir="rtl"] .splitToolbarButtonSeparator {
   float: right;
 }
 
-.toolbarButton,
-.dropdownToolbarButton,
-.secondaryToolbarButton,
+.toolbarButton {
+  min-width: 16px;
+  margin: 2px 1px;
+  padding: 2px 6px 0;
+  border: none;
+  border-radius: 2px;
+  color: rgba(12, 12, 13, 1);
+  color: var(--main-color);
+  font-size: 12px;
+  line-height: 14px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  cursor: default;
+  box-sizing: border-box;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
+.dropdownToolbarButton {
+  min-width: 16px;
+  margin: 2px 1px;
+  padding: 2px 6px 0;
+  border: none;
+  border-radius: 2px;
+  color: rgba(12, 12, 13, 1);
+  color: var(--main-color);
+  font-size: 12px;
+  line-height: 14px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  cursor: default;
+  box-sizing: border-box;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
+.secondaryToolbarButton {
+  min-width: 16px;
+  margin: 2px 1px;
+  padding: 2px 6px 0;
+  border: none;
+  border-radius: 2px;
+  color: rgba(12, 12, 13, 1);
+  color: var(--main-color);
+  font-size: 12px;
+  line-height: 14px;
+  -webkit-user-select: none;
+     -moz-user-select: none;
+      -ms-user-select: none;
+          user-select: none;
+  cursor: default;
+  box-sizing: border-box;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
 .overlayButton {
   min-width: 16px;
   margin: 2px 1px;
   padding: 2px 6px 0;
   border: none;
   border-radius: 2px;
+  color: rgba(12, 12, 13, 1);
   color: var(--main-color);
   font-size: 12px;
   line-height: 14px;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
   cursor: default;
   box-sizing: border-box;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .overlayButton {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
 html[dir="ltr"] #toolbarViewerLeft > .toolbarButton:first-child,
 html[dir="rtl"] #toolbarViewerRight > .toolbarButton:last-child {
   margin-left: 2px;
@@ -1448,39 +2165,153 @@ html[dir="ltr"] #toolbarViewerRight > .toolbarButton:last-child,
 html[dir="rtl"] #toolbarViewerLeft > .toolbarButton:first-child {
   margin-right: 2px;
 }
-.toolbarButton:hover,
+.toolbarButton:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton:hover {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
 .toolbarButton:focus {
+  background-color: rgba(221, 222, 223, 1);
   background-color: var(--button-hover-color);
 }
-.secondaryToolbarButton:hover,
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton:focus {
+  background-color: rgba(102, 102, 103, 1);
+  background-color: var(--button-hover-color);
+  }
+}
+.secondaryToolbarButton:hover {
+  background-color: rgba(237, 237, 237, 1);
+  background-color: var(--doorhanger-hover-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton:hover {
+  background-color: rgba(93, 94, 98, 1);
+  background-color: var(--doorhanger-hover-color);
+  }
+}
 .secondaryToolbarButton:focus {
+  background-color: rgba(237, 237, 237, 1);
+  background-color: var(--doorhanger-hover-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton:focus {
+  background-color: rgba(93, 94, 98, 1);
   background-color: var(--doorhanger-hover-color);
+  }
+}
+
+.toolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--toggled-btn-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--toggled-btn-bg-color);
+  }
+}
+
+.splitToolbarButton.toggled > .toolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--toggled-btn-bg-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButton.toggled > .toolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--toggled-btn-bg-color);
+  }
 }
 
-.toolbarButton.toggled,
-.splitToolbarButton.toggled > .toolbarButton.toggled,
 .secondaryToolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
   background-color: var(--toggled-btn-bg-color);
 }
 
-.toolbarButton.toggled:hover:active,
-.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active,
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton.toggled {
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--toggled-btn-bg-color);
+  }
+}
+
+.toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+  }
+}
+
+.splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .splitToolbarButton.toggled > .toolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+  }
+}
+
 .secondaryToolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
+  background-color: var(--toggled-hover-active-btn-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton.toggled:hover:active {
+  background-color: rgba(0, 0, 0, 0.4);
   background-color: var(--toggled-hover-active-btn-color);
+  }
 }
 
 .dropdownToolbarButton {
   width: 140px;
   padding: 0;
   overflow: hidden;
+  background-color: rgba(215, 215, 219, 1);
   background-color: var(--dropdown-btn-bg-color);
   margin-top: 2px !important;
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton {
+  background-color: rgba(74, 74, 79, 1);
+  background-color: var(--dropdown-btn-bg-color);
+  }
+}
 .dropdownToolbarButton::after {
   top: 6px;
   pointer-events: none;
 
+  -webkit-mask-image: url(images/toolbarButton-menuArrow.svg);
+
   -webkit-mask-image: var(--toolbarButton-menuArrow-icon);
+  mask-image: url(images/toolbarButton-menuArrow.svg);
   mask-image: var(--toolbarButton-menuArrow-icon);
 }
 html[dir="ltr"] .dropdownToolbarButton::after {
@@ -1491,15 +2322,34 @@ html[dir="rtl"] .dropdownToolbarButton::after {
 }
 
 .dropdownToolbarButton > select {
+  -webkit-appearance: none;
   width: 162px;
   height: 28px;
   font-size: 12px;
+  color: rgba(12, 12, 13, 1);
   color: var(--main-color);
   margin: 0;
   padding: 1px 0 2px;
   border: none;
+  background-color: rgba(215, 215, 219, 1);
   background-color: var(--dropdown-btn-bg-color);
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton > select {
+  background-color: rgba(74, 74, 79, 1);
+  background-color: var(--dropdown-btn-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton > select {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
 html[dir="ltr"] .dropdownToolbarButton > select {
   padding-left: 4px;
 }
@@ -1507,34 +2357,126 @@ html[dir="rtl"] .dropdownToolbarButton > select {
   padding-right: 4px;
 }
 .dropdownToolbarButton > select:hover {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+}
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton > select:hover {
+  background-color: rgba(102, 102, 103, 1);
   background-color: var(--button-hover-color);
+  }
 }
 
 .dropdownToolbarButton > select:focus {
+  background-color: rgba(221, 222, 223, 1);
+  background-color: var(--button-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton > select:focus {
+  background-color: rgba(102, 102, 103, 1);
   background-color: var(--button-hover-color);
+  }
 }
 
 .dropdownToolbarButton > select > option {
+  background: rgba(255, 255, 255, 1);
   background: var(--doorhanger-bg-color);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .dropdownToolbarButton > select > option {
+  background: rgba(74, 74, 79, 1);
+  background: var(--doorhanger-bg-color);
+  }
+}
+
 #customScaleOption {
   display: none;
 }
 
-#pageWidthOption {
-  border-bottom: 1px rgba(255, 255, 255, 0.5) solid;
-}
+#pageWidthOption {
+  border-bottom: 1px rgba(255, 255, 255, 0.5) solid;
+}
+
+.toolbarButtonSpacer {
+  width: 30px;
+  display: inline-block;
+  height: 1px;
+}
+
+.toolbarButton::before {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarButton::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  }
+}
+
+.secondaryToolbarButton::before {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .secondaryToolbarButton::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  }
+}
+
+.dropdownToolbarButton::after {
+  /* All matching images have a size of 16x16
+   * All relevant containers have a size of 28x28 */
+  position: absolute;
+  display: inline-block;
+  width: 16px;
+  height: 16px;
+
+  content: "";
+  background-color: rgba(0, 0, 0, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  -webkit-mask-size: cover;
+  mask-size: cover;
+}
+
+@media (prefers-color-scheme: dark) {
 
-.toolbarButtonSpacer {
-  width: 30px;
-  display: inline-block;
-  height: 1px;
+  .dropdownToolbarButton::after {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  }
 }
 
-.toolbarButton::before,
-.secondaryToolbarButton::before,
-.dropdownToolbarButton::after,
 .treeItemToggler::before {
   /* All matching images have a size of 16x16
    * All relevant containers have a size of 28x28 */
@@ -1544,18 +2486,29 @@ html[dir="rtl"] .dropdownToolbarButton > select {
   height: 16px;
 
   content: "";
+  background-color: rgba(0, 0, 0, 1);
   background-color: var(--toolbar-icon-bg-color);
   -webkit-mask-size: cover;
   mask-size: cover;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler::before {
+  background-color: rgba(255, 255, 255, 1);
+  background-color: var(--toolbar-icon-bg-color);
+  }
+}
+
 .toolbarButton::before {
+  opacity: 0.7;
   opacity: var(--toolbar-icon-opacity);
   top: 6px;
   left: 6px;
 }
 
 .secondaryToolbarButton::before {
+  opacity: 0.9;
   opacity: var(--doorhanger-icon-opacity);
   top: 5px;
 }
@@ -1567,7 +2520,9 @@ html[dir="rtl"] .secondaryToolbarButton::before {
 }
 
 .toolbarButton#sidebarToggle::before {
+  -webkit-mask-image: url(images/toolbarButton-sidebarToggle.svg);
   -webkit-mask-image: var(--toolbarButton-sidebarToggle-icon);
+  mask-image: url(images/toolbarButton-sidebarToggle.svg);
   mask-image: var(--toolbarButton-sidebarToggle-icon);
 }
 html[dir="rtl"] .toolbarButton#sidebarToggle::before {
@@ -1575,7 +2530,9 @@ html[dir="rtl"] .toolbarButton#sidebarToggle::before {
 }
 
 .toolbarButton#secondaryToolbarToggle::before {
+  -webkit-mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg);
   -webkit-mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
+  mask-image: url(images/toolbarButton-secondaryToolbarToggle.svg);
   mask-image: var(--toolbarButton-secondaryToolbarToggle-icon);
 }
 html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
@@ -1583,56 +2540,100 @@ html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
 }
 
 .toolbarButton.findPrevious::before {
+  -webkit-mask-image: url(images/findbarButton-previous.svg);
   -webkit-mask-image: var(--findbarButton-previous-icon);
+  mask-image: url(images/findbarButton-previous.svg);
   mask-image: var(--findbarButton-previous-icon);
 }
 
 .toolbarButton.findNext::before {
+  -webkit-mask-image: url(images/findbarButton-next.svg);
   -webkit-mask-image: var(--findbarButton-next-icon);
+  mask-image: url(images/findbarButton-next.svg);
   mask-image: var(--findbarButton-next-icon);
 }
 
 .toolbarButton.pageUp::before {
+  -webkit-mask-image: url(images/toolbarButton-pageUp.svg);
   -webkit-mask-image: var(--toolbarButton-pageUp-icon);
+  mask-image: url(images/toolbarButton-pageUp.svg);
   mask-image: var(--toolbarButton-pageUp-icon);
 }
 
 .toolbarButton.pageDown::before {
+  -webkit-mask-image: url(images/toolbarButton-pageDown.svg);
   -webkit-mask-image: var(--toolbarButton-pageDown-icon);
+  mask-image: url(images/toolbarButton-pageDown.svg);
   mask-image: var(--toolbarButton-pageDown-icon);
 }
 
 .toolbarButton.zoomOut::before {
+  -webkit-mask-image: url(images/toolbarButton-zoomOut.svg);
   -webkit-mask-image: var(--toolbarButton-zoomOut-icon);
+  mask-image: url(images/toolbarButton-zoomOut.svg);
   mask-image: var(--toolbarButton-zoomOut-icon);
 }
 
 .toolbarButton.zoomIn::before {
+  -webkit-mask-image: url(images/toolbarButton-zoomIn.svg);
   -webkit-mask-image: var(--toolbarButton-zoomIn-icon);
+  mask-image: url(images/toolbarButton-zoomIn.svg);
   mask-image: var(--toolbarButton-zoomIn-icon);
 }
 
-.toolbarButton.presentationMode::before,
+.toolbarButton.presentationMode::before {
+  -webkit-mask-image: url(images/toolbarButton-presentationMode.svg);
+  -webkit-mask-image: var(--toolbarButton-presentationMode-icon);
+  mask-image: url(images/toolbarButton-presentationMode.svg);
+  mask-image: var(--toolbarButton-presentationMode-icon);
+}
+
 .secondaryToolbarButton.presentationMode::before {
+  -webkit-mask-image: url(images/toolbarButton-presentationMode.svg);
   -webkit-mask-image: var(--toolbarButton-presentationMode-icon);
+  mask-image: url(images/toolbarButton-presentationMode.svg);
   mask-image: var(--toolbarButton-presentationMode-icon);
 }
 
-.toolbarButton.print::before,
+.toolbarButton.print::before {
+  -webkit-mask-image: url(images/toolbarButton-print.svg);
+  -webkit-mask-image: var(--toolbarButton-print-icon);
+  mask-image: url(images/toolbarButton-print.svg);
+  mask-image: var(--toolbarButton-print-icon);
+}
+
 .secondaryToolbarButton.print::before {
+  -webkit-mask-image: url(images/toolbarButton-print.svg);
   -webkit-mask-image: var(--toolbarButton-print-icon);
+  mask-image: url(images/toolbarButton-print.svg);
   mask-image: var(--toolbarButton-print-icon);
 }
 
-.toolbarButton.openFile::before,
+.toolbarButton.openFile::before {
+  -webkit-mask-image: url(images/toolbarButton-openFile.svg);
+  -webkit-mask-image: var(--toolbarButton-openFile-icon);
+  mask-image: url(images/toolbarButton-openFile.svg);
+  mask-image: var(--toolbarButton-openFile-icon);
+}
+
 .secondaryToolbarButton.openFile::before {
+  -webkit-mask-image: url(images/toolbarButton-openFile.svg);
   -webkit-mask-image: var(--toolbarButton-openFile-icon);
+  mask-image: url(images/toolbarButton-openFile.svg);
   mask-image: var(--toolbarButton-openFile-icon);
 }
 
-.toolbarButton.download::before,
+.toolbarButton.download::before {
+  -webkit-mask-image: url(images/toolbarButton-download.svg);
+  -webkit-mask-image: var(--toolbarButton-download-icon);
+  mask-image: url(images/toolbarButton-download.svg);
+  mask-image: var(--toolbarButton-download-icon);
+}
+
 .secondaryToolbarButton.download::before {
+  -webkit-mask-image: url(images/toolbarButton-download.svg);
   -webkit-mask-image: var(--toolbarButton-download-icon);
+  mask-image: url(images/toolbarButton-download.svg);
   mask-image: var(--toolbarButton-download-icon);
 }
 
@@ -1646,19 +2647,31 @@ html[dir="rtl"] .toolbarButton#secondaryToolbarToggle::before {
   pointer-events: none;
 }
 
-.toolbarButton.bookmark::before,
+.toolbarButton.bookmark::before {
+  -webkit-mask-image: url(images/toolbarButton-bookmark.svg);
+  -webkit-mask-image: var(--toolbarButton-bookmark-icon);
+  mask-image: url(images/toolbarButton-bookmark.svg);
+  mask-image: var(--toolbarButton-bookmark-icon);
+}
+
 .secondaryToolbarButton.bookmark::before {
+  -webkit-mask-image: url(images/toolbarButton-bookmark.svg);
   -webkit-mask-image: var(--toolbarButton-bookmark-icon);
+  mask-image: url(images/toolbarButton-bookmark.svg);
   mask-image: var(--toolbarButton-bookmark-icon);
 }
 
 #viewThumbnail.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-viewThumbnail.svg);
   -webkit-mask-image: var(--toolbarButton-viewThumbnail-icon);
+  mask-image: url(images/toolbarButton-viewThumbnail.svg);
   mask-image: var(--toolbarButton-viewThumbnail-icon);
 }
 
 #viewOutline.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-viewOutline.svg);
   -webkit-mask-image: var(--toolbarButton-viewOutline-icon);
+  mask-image: url(images/toolbarButton-viewOutline.svg);
   mask-image: var(--toolbarButton-viewOutline-icon);
 }
 html[dir="rtl"] #viewOutline.toolbarButton::before {
@@ -1666,17 +2679,23 @@ html[dir="rtl"] #viewOutline.toolbarButton::before {
 }
 
 #viewAttachments.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-viewAttachments.svg);
   -webkit-mask-image: var(--toolbarButton-viewAttachments-icon);
+  mask-image: url(images/toolbarButton-viewAttachments.svg);
   mask-image: var(--toolbarButton-viewAttachments-icon);
 }
 
 #viewLayers.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-viewLayers.svg);
   -webkit-mask-image: var(--toolbarButton-viewLayers-icon);
+  mask-image: url(images/toolbarButton-viewLayers.svg);
   mask-image: var(--toolbarButton-viewLayers-icon);
 }
 
 #currentOutlineItem.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-currentOutlineItem.svg);
   -webkit-mask-image: var(--toolbarButton-currentOutlineItem-icon);
+  mask-image: url(images/toolbarButton-currentOutlineItem.svg);
   mask-image: var(--toolbarButton-currentOutlineItem-icon);
 }
 html[dir="rtl"] #currentOutlineItem.toolbarButton::before {
@@ -1684,7 +2703,9 @@ html[dir="rtl"] #currentOutlineItem.toolbarButton::before {
 }
 
 #viewFind.toolbarButton::before {
+  -webkit-mask-image: url(images/toolbarButton-search.svg);
   -webkit-mask-image: var(--toolbarButton-search-icon);
+  mask-image: url(images/toolbarButton-search.svg);
   mask-image: var(--toolbarButton-search-icon);
 }
 
@@ -1735,67 +2756,93 @@ html[dir="rtl"] .secondaryToolbarButton > span {
 }
 
 .secondaryToolbarButton.firstPage::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-firstPage.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-firstPage-icon);
+  mask-image: url(images/secondaryToolbarButton-firstPage.svg);
   mask-image: var(--secondaryToolbarButton-firstPage-icon);
 }
 
 .secondaryToolbarButton.lastPage::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-lastPage.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-lastPage-icon);
+  mask-image: url(images/secondaryToolbarButton-lastPage.svg);
   mask-image: var(--secondaryToolbarButton-lastPage-icon);
 }
 
 .secondaryToolbarButton.rotateCcw::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-rotateCcw.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
+  mask-image: url(images/secondaryToolbarButton-rotateCcw.svg);
   mask-image: var(--secondaryToolbarButton-rotateCcw-icon);
 }
 
 .secondaryToolbarButton.rotateCw::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-rotateCw.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-rotateCw-icon);
+  mask-image: url(images/secondaryToolbarButton-rotateCw.svg);
   mask-image: var(--secondaryToolbarButton-rotateCw-icon);
 }
 
 .secondaryToolbarButton.selectTool::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-selectTool.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-selectTool-icon);
+  mask-image: url(images/secondaryToolbarButton-selectTool.svg);
   mask-image: var(--secondaryToolbarButton-selectTool-icon);
 }
 
 .secondaryToolbarButton.handTool::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-handTool.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-handTool-icon);
+  mask-image: url(images/secondaryToolbarButton-handTool.svg);
   mask-image: var(--secondaryToolbarButton-handTool-icon);
 }
 
 .secondaryToolbarButton.scrollVertical::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollVertical.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollVertical.svg);
   mask-image: var(--secondaryToolbarButton-scrollVertical-icon);
 }
 
 .secondaryToolbarButton.scrollHorizontal::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollHorizontal.svg);
   mask-image: var(--secondaryToolbarButton-scrollHorizontal-icon);
 }
 
 .secondaryToolbarButton.scrollWrapped::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
+  mask-image: url(images/secondaryToolbarButton-scrollWrapped.svg);
   mask-image: var(--secondaryToolbarButton-scrollWrapped-icon);
 }
 
 .secondaryToolbarButton.spreadNone::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadNone.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-spreadNone-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadNone.svg);
   mask-image: var(--secondaryToolbarButton-spreadNone-icon);
 }
 
 .secondaryToolbarButton.spreadOdd::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadOdd.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadOdd.svg);
   mask-image: var(--secondaryToolbarButton-spreadOdd-icon);
 }
 
 .secondaryToolbarButton.spreadEven::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-spreadEven.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-spreadEven-icon);
+  mask-image: url(images/secondaryToolbarButton-spreadEven.svg);
   mask-image: var(--secondaryToolbarButton-spreadEven-icon);
 }
 
 .secondaryToolbarButton.documentProperties::before {
+  -webkit-mask-image: url(images/secondaryToolbarButton-documentProperties.svg);
   -webkit-mask-image: var(--secondaryToolbarButton-documentProperties-icon);
+  mask-image: url(images/secondaryToolbarButton-documentProperties.svg);
   mask-image: var(--secondaryToolbarButton-documentProperties-icon);
 }
 
@@ -1804,7 +2851,16 @@ html[dir="rtl"] .secondaryToolbarButton > span {
   padding: 11px 0;
   margin: 5px 2px;
   width: 1px;
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--separator-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .verticalToolbarSeparator {
+  background-color: rgba(0, 0, 0, 0.3);
   background-color: var(--separator-color);
+  }
 }
 html[dir="ltr"] .verticalToolbarSeparator {
   margin-left: 2px;
@@ -1818,25 +2874,61 @@ html[dir="rtl"] .verticalToolbarSeparator {
   margin: 6px 0 5px;
   height: 1px;
   width: 100%;
+  border-top: 1px solid rgba(222, 222, 222, 1);
+  border-top: 1px solid var(--doorhanger-separator-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .horizontalToolbarSeparator {
+  border-top: 1px solid rgba(92, 92, 97, 1);
   border-top: 1px solid var(--doorhanger-separator-color);
+  }
 }
 
 .toolbarField {
   padding: 4px 7px;
   margin: 3px 0;
   border-radius: 2px;
+  background-color: rgba(255, 255, 255, 1);
   background-color: var(--field-bg-color);
   background-clip: padding-box;
   border-width: 1px;
   border-style: solid;
+  border-color: rgba(187, 187, 188, 1);
   border-color: var(--field-border-color);
   box-shadow: none;
+  color: rgba(6, 6, 6, 1);
   color: var(--field-color);
   font-size: 12px;
   line-height: 16px;
   outline-style: none;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .toolbarField {
+  color: rgba(250, 250, 250, 1);
+  color: var(--field-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarField {
+  border-color: rgba(115, 115, 115, 1);
+  border-color: var(--field-border-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .toolbarField {
+  background-color: rgba(64, 64, 68, 1);
+  background-color: var(--field-bg-color);
+  }
+}
+
 .toolbarField[type="checkbox"] {
   opacity: 0;
   position: absolute !important;
@@ -1852,6 +2944,7 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
 }
 
 .toolbarField.pageNumber {
+  -webkit-appearance: none;
   -moz-appearance: textfield; /* hides the spinner in moz */
   min-width: 16px;
   text-align: right;
@@ -1859,11 +2952,20 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
 }
 
 .toolbarField.pageNumber.visiblePageIsLoading {
+  background-image: url(images/loading.svg);
   background-image: var(--loading-icon);
   background-repeat: no-repeat;
   background-position: 3px;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .toolbarField.pageNumber.visiblePageIsLoading {
+  background-image: url(images/loading-dark.svg);
+  background-image: var(--loading-icon);
+  }
+}
+
 .toolbarField.pageNumber::-webkit-inner-spin-button,
 .toolbarField.pageNumber::-webkit-outer-spin-button {
   -webkit-appearance: none;
@@ -1880,16 +2982,26 @@ html[dir="rtl"] .toolbarField[type="checkbox"] {
   margin: 2px;
   border: 1px solid rgba(0, 0, 0, 0);
   border-radius: 2px;
+  color: rgba(12, 12, 13, 1);
   color: var(--main-color);
   font-size: 12px;
   line-height: 14px;
   text-align: left;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
   cursor: default;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .toolbarLabel {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
 html[dir="ltr"] #numPages.toolbarLabel {
   padding-left: 2px;
 }
@@ -1954,23 +3066,55 @@ a:focus > .thumbnail > .thumbnailSelectionRing > .thumbnailImage,
   opacity: 0.9;
 }
 
-a:focus > .thumbnail > .thumbnailSelectionRing,
+a:focus > .thumbnail > .thumbnailSelectionRing {
+  background-color: rgba(0, 0, 0, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  background-clip: padding-box;
+  color: rgba(255, 255, 255, 0.9);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  a:focus > .thumbnail > .thumbnailSelectionRing {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
+}
+
 .thumbnail:hover > .thumbnailSelectionRing {
+  background-color: rgba(0, 0, 0, 0.15);
   background-color: var(--sidebaritem-bg-color);
   background-clip: padding-box;
   color: rgba(255, 255, 255, 0.9);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .thumbnail:hover > .thumbnailSelectionRing {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
+}
+
 .thumbnail.selected > .thumbnailSelectionRing > .thumbnailImage {
   opacity: 1;
 }
 
 .thumbnail.selected > .thumbnailSelectionRing {
+  background-color: rgba(0, 0, 0, 0.15);
   background-color: var(--sidebaritem-bg-color);
   background-clip: padding-box;
   color: rgba(255, 255, 255, 1);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  .thumbnail.selected > .thumbnailSelectionRing {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
+}
+
 #outlineView,
 #attachmentsView,
 #layersView {
@@ -1983,6 +3127,7 @@ a:focus > .thumbnail > .thumbnailSelectionRing,
   -webkit-overflow-scrolling: touch;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
 }
 
@@ -2005,15 +3150,25 @@ html[dir="rtl"] .treeItem > .treeItems {
   height: auto;
   margin-bottom: 1px;
   border-radius: 2px;
+  color: rgba(0, 0, 0, 0.8);
   color: var(--treeitem-color);
   font-size: 13px;
   line-height: 15px;
   -webkit-user-select: none;
      -moz-user-select: none;
+      -ms-user-select: none;
           user-select: none;
   white-space: normal;
   cursor: pointer;
 }
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem > a {
+  color: rgba(255, 255, 255, 0.8);
+  color: var(--treeitem-color);
+  }
+}
 html[dir="ltr"] .treeItem > a {
   padding: 2px 0 5px 4px;
 }
@@ -2038,11 +3193,15 @@ html[dir="rtl"] #layersView .treesItem > a > label {
   color: rgba(255, 255, 255, 0.5);
 }
 .treeItemToggler::before {
+  -webkit-mask-image: url(images/treeitem-expanded.svg);
   -webkit-mask-image: var(--treeitem-expanded-icon);
+  mask-image: url(images/treeitem-expanded.svg);
   mask-image: var(--treeitem-expanded-icon);
 }
 .treeItemToggler.treeItemsHidden::before {
+  -webkit-mask-image: url(images/treeitem-collapsed.svg);
   -webkit-mask-image: var(--treeitem-collapsed-icon);
+  mask-image: url(images/treeitem-collapsed.svg);
   mask-image: var(--treeitem-collapsed-icon);
 }
 html[dir="rtl"] .treeItemToggler.treeItemsHidden::before {
@@ -2065,18 +3224,126 @@ html[dir="rtl"] .treeItemToggler::before {
 }
 
 .treeItem.selected > a {
+  background-color: rgba(0, 0, 0, 0.25);
   background-color: var(--treeitem-selected-bg-color);
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-selected-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem.selected > a {
+  color: rgba(255, 255, 255, 0.9);
   color: var(--treeitem-selected-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem.selected > a {
+  background-color: rgba(255, 255, 255, 0.25);
+  background-color: var(--treeitem-selected-bg-color);
+  }
+}
+
+.treeItemToggler:hover {
+  background-color: rgba(0, 0, 0, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  background-clip: padding-box;
+  border-radius: 2px;
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover {
+  color: rgba(255, 255, 255, 0.9);
+  color: var(--treeitem-hover-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
+}
+
+.treeItemToggler:hover + a {
+  background-color: rgba(0, 0, 0, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  background-clip: padding-box;
+  border-radius: 2px;
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover + a {
+  color: rgba(255, 255, 255, 0.9);
+  color: var(--treeitem-hover-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover + a {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
+}
+
+.treeItemToggler:hover ~ .treeItems {
+  background-color: rgba(0, 0, 0, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  background-clip: padding-box;
+  border-radius: 2px;
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover ~ .treeItems {
+  color: rgba(255, 255, 255, 0.9);
+  color: var(--treeitem-hover-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItemToggler:hover ~ .treeItems {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
 }
 
-.treeItemToggler:hover,
-.treeItemToggler:hover + a,
-.treeItemToggler:hover ~ .treeItems,
 .treeItem > a:hover {
+  background-color: rgba(0, 0, 0, 0.15);
   background-color: var(--sidebaritem-bg-color);
   background-clip: padding-box;
   border-radius: 2px;
+  color: rgba(0, 0, 0, 0.9);
+  color: var(--treeitem-hover-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem > a:hover {
+  color: rgba(255, 255, 255, 0.9);
   color: var(--treeitem-hover-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .treeItem > a:hover {
+  background-color: rgba(255, 255, 255, 0.15);
+  background-color: var(--sidebaritem-bg-color);
+  }
 }
 
 /* TODO: file FF bug to support ::-moz-selection:window-inactive
@@ -2090,7 +3357,9 @@ html[dir="rtl"] .treeItemToggler::before {
 }
 
 #errorWrapper {
+  background: none repeat scroll 0 0 rgba(255, 74, 74, 1);
   background: none repeat scroll 0 0 var(--errorWrapper-bg-color);
+  color: rgba(12, 12, 13, 1);
   color: var(--main-color);
   left: 0;
   position: absolute;
@@ -2099,6 +3368,22 @@ html[dir="rtl"] .treeItemToggler::before {
   padding: 3px 6px;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #errorWrapper {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #errorWrapper {
+  background: none repeat scroll 0 0 rgba(199, 17, 17, 1);
+  background: none repeat scroll 0 0 var(--errorWrapper-bg-color);
+  }
+}
+
 #errorMessageLeft {
   float: left;
 }
@@ -2108,14 +3393,41 @@ html[dir="rtl"] .treeItemToggler::before {
 }
 
 #errorMoreInfo {
+  background-color: rgba(255, 255, 255, 1);
   background-color: var(--field-bg-color);
+  color: rgba(6, 6, 6, 1);
   color: var(--field-color);
+  border: 1px solid rgba(187, 187, 188, 1);
   border: 1px solid var(--field-border-color);
   padding: 3px;
   margin: 3px;
   width: 98%;
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #errorMoreInfo {
+  border: 1px solid rgba(115, 115, 115, 1);
+  border: 1px solid var(--field-border-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #errorMoreInfo {
+  color: rgba(250, 250, 250, 1);
+  color: var(--field-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #errorMoreInfo {
+  background-color: rgba(64, 64, 68, 1);
+  background-color: var(--field-bg-color);
+  }
+}
+
 .overlayButton {
   width: auto;
   margin: 3px 4px 2px !important;
@@ -2145,15 +3457,33 @@ html[dir="rtl"] .treeItemToggler::before {
   display: inline-block;
   padding: 15px;
   border-spacing: 4px;
+  color: rgba(12, 12, 13, 1);
   color: var(--main-color);
   font-size: 12px;
   line-height: 14px;
+  background-color: rgba(255, 255, 255, 1);
   background-color: var(--doorhanger-bg-color);
   border: 1px solid rgba(0, 0, 0, 0.5);
   border-radius: 4px;
   box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3);
 }
 
+@media (prefers-color-scheme: dark) {
+
+  #overlayContainer > .container > .dialog {
+  background-color: rgba(74, 74, 79, 1);
+  background-color: var(--doorhanger-bg-color);
+  }
+}
+
+@media (prefers-color-scheme: dark) {
+
+  #overlayContainer > .container > .dialog {
+  color: rgba(249, 249, 250, 1);
+  color: var(--main-color);
+  }
+}
+
 .dialog > .row {
   display: table-row;
 }
@@ -2171,7 +3501,16 @@ html[dir="rtl"] .treeItemToggler::before {
   margin: 4px 0;
   height: 1px;
   width: 100%;
+  background-color: rgba(0, 0, 0, 0.3);
+  background-color: var(--separator-color);
+}
+
+@media (prefers-color-scheme: dark) {
+
+  .dialog .separator {
+  background-color: rgba(0, 0, 0, 0.3);
   background-color: var(--separator-color);
+  }
 }
 
 .dialog .buttonRow {
@@ -2397,24 +3736,17 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
   }
   /* wrapper around (scaled) print canvas elements */
   #printContainer > div {
+    position: relative;
+    top: 0;
+    left: 0;
+    width: 1px;
+    height: 1px;
+    overflow: visible;
     page-break-after: always;
     page-break-inside: avoid;
-
-    /* The wrapper always cover the whole page. */
-    height: 100%;
-    width: 100%;
-
-    display: flex;
-    flex-direction: column;
-    justify-content: center;
-    align-items: center;
   }
   #printContainer canvas,
   #printContainer img {
-    /* The intrinsic canvas / image size will make sure that we fit the page. */
-    max-width: 100%;
-    max-height: 100%;
-
     direction: ltr;
     display: block;
   }
@@ -2437,8 +3769,8 @@ html[dir="rtl"] #documentPropertiesOverlay .row > * {
 }
 
 @media all and (max-width: 840px) {
-  #sidebarContainer {
-    background-color: var(--sidebar-narrow-bg-color);
+  #sidebarContent {
+    background-color: rgba(0, 0, 0, 0.7);
   }
 
   html[dir="ltr"] #outerContainer.sidebarOpen #viewerContainer {
diff --git a/third-party/pdfjs/web/viewer.html b/third-party/pdfjs/web/viewer.html
index fdfc173b0..7b8dd7663 100644
--- a/third-party/pdfjs/web/viewer.html
+++ b/third-party/pdfjs/web/viewer.html
@@ -1,6 +1,7 @@
 <!DOCTYPE html>
 <!--
 Copyright 2012 Mozilla Foundation
+Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
 
 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
@@ -136,7 +137,7 @@ See https://github.com/adobe-type-tools/cmap-resources
               <span data-l10n-id="download_label">Download</span>
             </button>
 
-            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark visibleSmallView" 
title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
+            <a href="#" id="secondaryViewBookmark" class="secondaryToolbarButton bookmark hidden" 
title="Current view (copy or open in new window)" tabindex="55" data-l10n-id="bookmark">
               <span data-l10n-id="bookmark_label">Current View</span>
             </a>
 
@@ -203,11 +204,11 @@ See https://github.com/adobe-type-tools/cmap-resources
           <div id="toolbarContainer">
             <div id="toolbarViewer">
               <div id="toolbarViewerLeft">
-                <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11" 
data-l10n-id="toggle_sidebar" aria-expanded="false" aria-controls="sidebarContainer">
+                <button id="sidebarToggle" class="toolbarButton" title="Toggle Sidebar" tabindex="11" 
data-l10n-id="toggle_sidebar">
                   <span data-l10n-id="toggle_sidebar_label">Toggle Sidebar</span>
                 </button>
                 <div class="toolbarButtonSpacer"></div>
-                <button id="viewFind" class="toolbarButton" title="Find in Document" tabindex="12" 
data-l10n-id="findbar" aria-expanded="false" aria-controls="findbar">
+                <button id="viewFind" class="toolbarButton" title="Find in Document" tabindex="12" 
data-l10n-id="findbar">
                   <span data-l10n-id="findbar_label">Find</span>
                 </button>
                 <div class="splitToolbarButton hiddenSmallView">
@@ -238,13 +239,13 @@ See https://github.com/adobe-type-tools/cmap-resources
                 <button id="download" class="toolbarButton download hiddenMediumView" title="Download" 
tabindex="34" data-l10n-id="download">
                   <span data-l10n-id="download_label">Download</span>
                 </button>
-                <a href="#" id="viewBookmark" class="toolbarButton bookmark hiddenSmallView" title="Current 
view (copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
+                <a href="#" id="viewBookmark" class="toolbarButton bookmark hidden" title="Current view 
(copy or open in new window)" tabindex="35" data-l10n-id="bookmark">
                   <span data-l10n-id="bookmark_label">Current View</span>
                 </a>
 
                 <div class="verticalToolbarSeparator hiddenSmallView"></div>
 
-                <button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36" 
data-l10n-id="tools" aria-expanded="false" aria-controls="secondaryToolbar">
+                <button id="secondaryToolbarToggle" class="toolbarButton" title="Tools" tabindex="36" 
data-l10n-id="tools">
                   <span data-l10n-id="tools_label">Tools</span>
                 </button>
               </div>
@@ -286,6 +287,17 @@ See https://github.com/adobe-type-tools/cmap-resources
           </div>
         </div>
 
+        <menu type="context" id="viewerContextMenu">
+          <menuitem id="contextFirstPage" label="First Page"
+                    data-l10n-id="first_page"></menuitem>
+          <menuitem id="contextLastPage" label="Last Page"
+                    data-l10n-id="last_page"></menuitem>
+          <menuitem id="contextPageRotateCw" label="Rotate Clockwise"
+                    data-l10n-id="page_rotate_cw"></menuitem>
+          <menuitem id="contextPageRotateCcw" label="Rotate Counter-Clockwise"
+                    data-l10n-id="page_rotate_ccw"></menuitem>
+        </menu>
+
         <div id="viewerContainer" tabindex="0">
           <div id="viewer" class="pdfViewer"></div>
         </div>
@@ -397,3 +409,4 @@ See https://github.com/adobe-type-tools/cmap-resources
     <div id="printContainer"></div>
   </body>
 </html>
+
diff --git a/third-party/pdfjs/web/viewer.js b/third-party/pdfjs/web/viewer.js
index 28d471e17..ed36e7f02 100644
--- a/third-party/pdfjs/web/viewer.js
+++ b/third-party/pdfjs/web/viewer.js
@@ -2,7 +2,7 @@
  * @licstart The following is the entire license notice for the
  * Javascript code in this page
  *
- * Copyright 2021 Mozilla Foundation
+ * Copyright 2020 Mozilla Foundation
  * Modifications made for Epiphany by Jan-Michael Brummer <jan brummer tabos org>
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,196 @@
 /******/ (() => { // webpackBootstrap
 /******/       "use strict";
 /******/       var __webpack_modules__ = ([
-/* 0 */,
+/* 0 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+
+
+
+Object.defineProperty(exports, "__esModule", ({
+  value: true
+}));
+Object.defineProperty(exports, "PDFViewerApplicationOptions", ({
+  enumerable: true,
+  get: function () {
+    return _app_options.AppOptions;
+  }
+}));
+Object.defineProperty(exports, "PDFViewerApplication", ({
+  enumerable: true,
+  get: function () {
+    return _app.PDFViewerApplication;
+  }
+}));
+
+var _app_options = __webpack_require__(1);
+
+var _app = __webpack_require__(3);
+
+const pdfjsVersion = '2.7.570';
+const pdfjsBuild = 'f2c7338b0';
+window.PDFViewerApplication = _app.PDFViewerApplication;
+window.PDFViewerApplicationOptions = _app_options.AppOptions;
+;
+;
+{
+  __webpack_require__(35);
+}
+;
+{
+  __webpack_require__(41);
+}
+
+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"),
+      scrollVerticalButton: document.getElementById("scrollVertical"),
+      scrollHorizontalButton: document.getElementById("scrollHorizontal"),
+      scrollWrappedButton: document.getElementById("scrollWrapped"),
+      spreadNoneButton: document.getElementById("spreadNone"),
+      spreadOddButton: document.getElementById("spreadOdd"),
+      spreadEvenButton: document.getElementById("spreadEven"),
+      documentPropertiesButton: document.getElementById("documentProperties")
+    },
+    fullscreen: {
+      contextFirstPage: document.getElementById("contextFirstPage"),
+      contextLastPage: document.getElementById("contextLastPage"),
+      contextPageRotateCw: document.getElementById("contextPageRotateCw"),
+      contextPageRotateCcw: document.getElementById("contextPageRotateCcw")
+    },
+    sidebar: {
+      outerContainer: document.getElementById("outerContainer"),
+      viewerContainer: document.getElementById("viewerContainer"),
+      toggleButton: document.getElementById("sidebarToggle"),
+      thumbnailButton: document.getElementById("viewThumbnail"),
+      outlineButton: document.getElementById("viewOutline"),
+      attachmentsButton: document.getElementById("viewAttachments"),
+      layersButton: document.getElementById("viewLayers"),
+      thumbnailView: document.getElementById("thumbnailView"),
+      outlineView: document.getElementById("outlineView"),
+      attachmentsView: document.getElementById("attachmentsView"),
+      layersView: document.getElementById("layersView"),
+      outlineOptionsContainer: document.getElementById("outlineOptionsContainer"),
+      currentOutlineItemButton: document.getElementById("currentOutlineItem")
+    },
+    sidebarResizer: {
+      outerContainer: document.getElementById("outerContainer"),
+      resizer: document.getElementById("sidebarResizer")
+    },
+    findBar: {
+      bar: document.getElementById("findbar"),
+      toggleButton: document.getElementById("viewFind"),
+      findField: document.getElementById("findInput"),
+      highlightAllCheckbox: document.getElementById("findHighlightAll"),
+      caseSensitiveCheckbox: document.getElementById("findMatchCase"),
+      entireWordCheckbox: document.getElementById("findEntireWord"),
+      findMsg: document.getElementById("findMsg"),
+      findResultsCount: document.getElementById("findResultsCount"),
+      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"),
+        pageSize: document.getElementById("pageSizeField"),
+        linearized: document.getElementById("linearizedField")
+      }
+    },
+    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"
+  };
+}
+
+function webViewerLoad() {
+  const config = getViewerConfiguration();
+  const event = document.createEvent("CustomEvent");
+  event.initCustomEvent("webviewerloaded", true, true, {
+    source: window
+  });
+
+  try {
+    parent.document.dispatchEvent(event);
+  } catch (ex) {
+    console.error(`webviewerloaded: ${ex}`);
+    document.dispatchEvent(event);
+  }
+
+  _app.PDFViewerApplication.run(config);
+}
+
+if (document.readyState === "interactive" || document.readyState === "complete") {
+  webViewerLoad();
+} else {
+  document.addEventListener("DOMContentLoaded", webViewerLoad, true);
+}
+
+/***/ }),
 /* 1 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
@@ -70,11 +259,11 @@ const defaultOptions = {
     kind: OptionKind.VIEWER + OptionKind.PREFERENCE
   },
   enablePrintAutoRotate: {
-    value: true,
+    value: false,
     kind: OptionKind.VIEWER + OptionKind.PREFERENCE
   },
   enableScripting: {
-    value: true,
+    value: false,
     kind: OptionKind.VIEWER + OptionKind.PREFERENCE
   },
   enableWebGL: {
@@ -178,10 +367,6 @@ const defaultOptions = {
     value: "",
     kind: OptionKind.API
   },
-  enableXfa: {
-    value: false,
-    kind: OptionKind.API
-  },
   fontExtraProperties: {
     value: false,
     kind: OptionKind.API
@@ -242,7 +427,7 @@ class AppOptions {
     const defaultOption = defaultOptions[name];
 
     if (defaultOption !== undefined) {
-      return defaultOption.compatibility ?? defaultOption.value;
+      return defaultOption.compatibility || defaultOption.value;
     }
 
     return undefined;
@@ -273,7 +458,7 @@ class AppOptions {
       }
 
       const userOption = userOptions[name];
-      options[name] = userOption !== undefined ? userOption : defaultOption.compatibility ?? 
defaultOption.value;
+      options[name] = userOption !== undefined ? userOption : defaultOption.compatibility || 
defaultOption.value;
     }
 
     return options;
@@ -374,23 +559,21 @@ var _pdf_outline_viewer = __webpack_require__(20);
 
 var _pdf_presentation_mode = __webpack_require__(21);
 
-var _pdf_scripting_manager = __webpack_require__(22);
+var _pdf_sidebar = __webpack_require__(22);
 
-var _pdf_sidebar = __webpack_require__(23);
+var _pdf_sidebar_resizer = __webpack_require__(23);
 
-var _pdf_sidebar_resizer = __webpack_require__(24);
+var _pdf_thumbnail_viewer = __webpack_require__(24);
 
-var _pdf_thumbnail_viewer = __webpack_require__(25);
+var _pdf_viewer = __webpack_require__(26);
 
-var _pdf_viewer = __webpack_require__(27);
+var _secondary_toolbar = __webpack_require__(31);
 
-var _secondary_toolbar = __webpack_require__(34);
-
-var _toolbar = __webpack_require__(36);
+var _toolbar = __webpack_require__(33);
 
 var _viewer_compatibility = __webpack_require__(2);
 
-var _view_history = __webpack_require__(37);
+var _view_history = __webpack_require__(34);
 
 const DEFAULT_SCALE_DELTA = 1.1;
 const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
@@ -484,7 +667,6 @@ const PDFViewerApplication = {
   pdfAttachmentViewer: null,
   pdfLayerViewer: null,
   pdfCursorTools: null,
-  pdfScriptingManager: null,
   store: null,
   downloadManager: null,
   overlayManager: null,
@@ -508,6 +690,8 @@ const PDFViewerApplication = {
   _saveInProgress: false,
   _wheelUnusedTicks: 0,
   _idleCallbacks: new Set(),
+  _scriptingInstance: null,
+  _mouseState: Object.create(null),
 
   async initialize(appConfig) {
     this.preferences = this.externalServices.createPreferences();
@@ -683,7 +867,7 @@ const PDFViewerApplication = {
     this.eventBus = eventBus;
     this.overlayManager = new _overlay_manager.OverlayManager();
     const pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
-    pdfRenderingQueue.onIdle = this._cleanup.bind(this);
+    pdfRenderingQueue.onIdle = this.cleanup.bind(this);
     this.pdfRenderingQueue = pdfRenderingQueue;
     const pdfLinkService = new _pdf_link_service.PDFLinkService({
       eventBus,
@@ -699,13 +883,6 @@ const PDFViewerApplication = {
       eventBus
     });
     this.findController = findController;
-    const pdfScriptingManager = new _pdf_scripting_manager.PDFScriptingManager({
-      eventBus,
-      sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc"),
-      scriptingFactory: this.externalServices,
-      docPropertiesLookup: this._scriptingDocProperties.bind(this)
-    });
-    this.pdfScriptingManager = pdfScriptingManager;
     const container = appConfig.mainContainer;
     const viewer = appConfig.viewerContainer;
     this.pdfViewer = new _pdf_viewer.PDFViewer({
@@ -716,7 +893,6 @@ const PDFViewerApplication = {
       linkService: pdfLinkService,
       downloadManager,
       findController,
-      scriptingManager: pdfScriptingManager,
       renderer: _app_options.AppOptions.get("renderer"),
       enableWebGL: _app_options.AppOptions.get("enableWebGL"),
       l10n: this.l10n,
@@ -726,11 +902,11 @@ const PDFViewerApplication = {
       enablePrintAutoRotate: _app_options.AppOptions.get("enablePrintAutoRotate"),
       useOnlyCssZoom: _app_options.AppOptions.get("useOnlyCssZoom"),
       maxCanvasPixels: _app_options.AppOptions.get("maxCanvasPixels"),
-      enableScripting: _app_options.AppOptions.get("enableScripting")
+      enableScripting: _app_options.AppOptions.get("enableScripting"),
+      mouseState: this._mouseState
     });
     pdfRenderingQueue.setViewer(this.pdfViewer);
     pdfLinkService.setViewer(this.pdfViewer);
-    pdfScriptingManager.setViewer(this.pdfViewer);
     this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
       container: appConfig.sidebar.thumbnailView,
       eventBus,
@@ -762,11 +938,12 @@ const PDFViewerApplication = {
       this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
         container,
         pdfViewer: this.pdfViewer,
-        eventBus
+        eventBus,
+        contextMenuItems: appConfig.fullscreen
       });
     }
 
-    this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, 
this.overlayManager, this.l10n, this.isViewerEmbedded);
+    this.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay, 
this.overlayManager, this.l10n);
     this.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({
       container: appConfig.sidebar.outlineView,
       eventBus,
@@ -862,8 +1039,9 @@ const PDFViewerApplication = {
   },
 
   get supportsFullscreen() {
+    let support;
     const doc = document.documentElement;
-    let support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen);
+    support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen);
 
     if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || 
document.webkitFullscreenEnabled === false) {
       support = false;
@@ -896,7 +1074,7 @@ const PDFViewerApplication = {
   setTitleUsingUrl(url = "") {
     this.url = url;
     this.baseUrl = url.split("#")[0];
-    let title = (0, _pdfjsLib.getPdfFilenameFromUrl)(url, "");
+    let title = (0, _ui_utils.getPDFFileNameFromURL)(url, "");
 
     if (!title) {
       try {
@@ -918,7 +1096,7 @@ const PDFViewerApplication = {
   },
 
   get _docFilename() {
-    return this._contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url);
+    return this._contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url);
   },
 
   _cancelIdleCallbacks() {
@@ -933,24 +1111,42 @@ const PDFViewerApplication = {
     this._idleCallbacks.clear();
   },
 
-  async close() {
-    this._unblockDocumentLoadEvent();
+  async _destroyScriptingInstance() {
+    if (!this._scriptingInstance) {
+      return;
+    }
 
     const {
-      container
-    } = this.appConfig.errorWrapper;
-    container.hidden = true;
+      scripting,
+      internalEvents,
+      domEvents
+    } = this._scriptingInstance;
 
-    if (!this.pdfLoadingTask) {
-      return;
+    try {
+      await scripting.destroySandbox();
+    } catch (ex) {}
+
+    for (const [name, listener] of internalEvents) {
+      this.eventBus._off(name, listener);
     }
 
-    if (this.pdfDocument?.annotationStorage.size > 0 && this._annotationStorageModified) {
-      try {
-        await this.save({
-          sourceEventType: "save"
-        });
-      } catch (reason) {}
+    internalEvents.clear();
+
+    for (const [name, listener] of domEvents) {
+      window.removeEventListener(name, listener);
+    }
+
+    domEvents.clear();
+    delete this._mouseState.isDown;
+    this._scriptingInstance = null;
+  },
+
+  async close() {
+    const errorWrapper = this.appConfig.errorWrapper.container;
+    errorWrapper.setAttribute("hidden", "true");
+
+    if (!this.pdfLoadingTask) {
+      return undefined;
     }
 
     const promises = [];
@@ -980,7 +1176,7 @@ const PDFViewerApplication = {
 
     this._cancelIdleCallbacks();
 
-    promises.push(this.pdfScriptingManager.destroyPromise);
+    promises.push(this._destroyScriptingInstance());
     this.pdfSidebar.reset();
     this.pdfOutlineViewer.reset();
     this.pdfAttachmentViewer.reset();
@@ -1002,6 +1198,7 @@ const PDFViewerApplication = {
     }
 
     await Promise.all(promises);
+    return undefined;
   },
 
   async open(file, args) {
@@ -1067,51 +1264,50 @@ const PDFViewerApplication = {
         return undefined;
       }
 
-      let key = "loading_error";
+      const message = exception?.message;
+      let loadingErrorMessage;
 
       if (exception instanceof _pdfjsLib.InvalidPDFException) {
-        key = "invalid_file_error";
+        loadingErrorMessage = this.l10n.get("invalid_file_error", null, "Invalid or corrupted PDF file.");
       } else if (exception instanceof _pdfjsLib.MissingPDFException) {
-        key = "missing_file_error";
+        loadingErrorMessage = this.l10n.get("missing_file_error", null, "Missing PDF file.");
       } else if (exception instanceof _pdfjsLib.UnexpectedResponseException) {
-        key = "unexpected_response_error";
+        loadingErrorMessage = this.l10n.get("unexpected_response_error", null, "Unexpected server 
response.");
+      } else {
+        loadingErrorMessage = this.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.");
       }
 
-      return this.l10n.get(key).then(msg => {
-        this._documentError(msg, {
-          message: exception?.message
+      return loadingErrorMessage.then(msg => {
+        this.error(msg, {
+          message
         });
-
         throw exception;
       });
     });
   },
 
-  _ensureDownloadComplete() {
-    if (this.pdfDocument && this.downloadComplete) {
-      return;
-    }
-
-    throw new Error("PDF document not downloaded.");
-  },
-
-  async download({
+  download({
     sourceEventType = "download"
   } = {}) {
-    const url = this.baseUrl,
+    function downloadByUrl() {
+      downloadManager.downloadUrl(url, filename);
+    }
+
+    const downloadManager = this.downloadManager,
+          url = this.baseUrl,
           filename = this._docFilename;
 
-    try {
-      this._ensureDownloadComplete();
+    if (!this.pdfDocument || !this.downloadComplete) {
+      downloadByUrl();
+      return;
+    }
 
-      const data = await this.pdfDocument.getData();
+    this.pdfDocument.getData().then(function (data) {
       const blob = new Blob([data], {
         type: "application/pdf"
       });
-      await this.downloadManager.download(blob, url, filename, sourceEventType);
-    } catch (reason) {
-      await this.downloadManager.downloadUrl(url, filename);
-    }
+      downloadManager.download(blob, url, filename, sourceEventType);
+    }).catch(downloadByUrl);
   },
 
   async save({
@@ -1121,27 +1317,38 @@ const PDFViewerApplication = {
       return;
     }
 
-    this._saveInProgress = true;
-    await this.pdfScriptingManager.dispatchWillSave();
-    const url = this.baseUrl,
+    const downloadManager = this.downloadManager,
+          url = this.baseUrl,
           filename = this._docFilename;
 
-    try {
-      this._ensureDownloadComplete();
+    if (!this.pdfDocument || !this.downloadComplete) {
+      this.download({
+        sourceEventType
+      });
+      return;
+    }
 
-      const data = await this.pdfDocument.saveDocument(this.pdfDocument.annotationStorage);
+    this._saveInProgress = true;
+    await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "WillSave"
+    });
+    this.pdfDocument.saveDocument(this.pdfDocument.annotationStorage).then(data => {
       const blob = new Blob([data], {
         type: "application/pdf"
       });
-      await this.downloadManager.download(blob, url, filename, sourceEventType);
-    } catch (reason) {
-      await this.download({
+      downloadManager.download(blob, url, filename, sourceEventType);
+    }).catch(() => {
+      this.download({
         sourceEventType
       });
-    } finally {
-      await this.pdfScriptingManager.dispatchDidSave();
+    }).finally(async () => {
+      await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+        id: "doc",
+        name: "DidSave"
+      });
       this._saveInProgress = false;
-    }
+    });
   },
 
   downloadOrSave(options) {
@@ -1172,12 +1379,6 @@ const PDFViewerApplication = {
       featureId
     });
 
-    switch (featureId) {
-      case _pdfjsLib.UNSUPPORTED_FEATURES.errorFontLoadNative:
-      case _pdfjsLib.UNSUPPORTED_FEATURES.errorFontMissing:
-        return;
-    }
-
     if (this.fellback) {
       return;
     }
@@ -1197,51 +1398,45 @@ const PDFViewerApplication = {
     });
   },
 
-  _documentError(message, moreInfo = null) {
-    this._unblockDocumentLoadEvent();
-
-    this._otherError(message, moreInfo);
-  },
-
-  _otherError(message, moreInfo = null) {
+  error(message, moreInfo) {
     const 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}}"));
         }
       }
     }
 
     const errorWrapperConfig = this.appConfig.errorWrapper;
     const errorWrapper = errorWrapperConfig.container;
-    errorWrapper.hidden = false;
+    errorWrapper.removeAttribute("hidden");
     const errorMessage = errorWrapperConfig.errorMessage;
     errorMessage.textContent = message;
     const closeButton = errorWrapperConfig.closeButton;
 
     closeButton.onclick = function () {
-      errorWrapper.hidden = true;
+      errorWrapper.setAttribute("hidden", "true");
     };
 
     const errorMoreInfo = errorWrapperConfig.errorMoreInfo;
@@ -1249,23 +1444,23 @@ const PDFViewerApplication = {
     const lessInfoButton = errorWrapperConfig.lessInfoButton;
 
     moreInfoButton.onclick = function () {
-      errorMoreInfo.hidden = false;
-      moreInfoButton.hidden = true;
-      lessInfoButton.hidden = false;
+      errorMoreInfo.removeAttribute("hidden");
+      moreInfoButton.setAttribute("hidden", "true");
+      lessInfoButton.removeAttribute("hidden");
       errorMoreInfo.style.height = errorMoreInfo.scrollHeight + "px";
     };
 
     lessInfoButton.onclick = function () {
-      errorMoreInfo.hidden = true;
-      moreInfoButton.hidden = false;
-      lessInfoButton.hidden = true;
+      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.hidden = false;
-    lessInfoButton.hidden = true;
+    moreInfoButton.removeAttribute("hidden");
+    lessInfoButton.setAttribute("hidden", "true");
     Promise.all(moreInfoText).then(parts => {
       errorMoreInfo.value = parts.join("\n");
     });
@@ -1352,7 +1547,7 @@ const PDFViewerApplication = {
         this._initializePdfHistory({
           fingerprint: pdfDocument.fingerprint,
           viewOnLoad,
-          initialDest: openAction?.dest
+          initialDest: openAction && openAction.dest
         });
 
         const initialBookmark = this.initialBookmark;
@@ -1386,11 +1581,11 @@ const PDFViewerApplication = {
         }
 
         if (pageMode && sidebarView === _ui_utils.SidebarView.UNKNOWN) {
-          sidebarView = (0, _ui_utils.apiPageModeToSidebarView)(pageMode);
+          sidebarView = apiPageModeToSidebarView(pageMode);
         }
 
         if (pageLayout && spreadMode === _ui_utils.SpreadMode.UNKNOWN) {
-          spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(pageLayout);
+          spreadMode = apiPageLayoutToSpreadMode(pageLayout);
         }
 
         this.setInitialView(hash, {
@@ -1431,8 +1626,6 @@ const PDFViewerApplication = {
       });
     });
     pagesPromise.then(() => {
-      this._unblockDocumentLoadEvent();
-
       this._initializeAutoPrint(pdfDocument, openActionPromise);
     });
     onePageRendered.then(() => {
@@ -1465,6 +1658,8 @@ const PDFViewerApplication = {
 
         this._idleCallbacks.add(callback);
       }
+
+      this._initializeJavaScript(pdfDocument);
     });
 
     this._initializePageLabels(pdfDocument);
@@ -1472,40 +1667,243 @@ const PDFViewerApplication = {
     this._initializeMetadata(pdfDocument);
   },
 
-  async _scriptingDocProperties(pdfDocument) {
-    if (!this.documentInfo) {
-      await new Promise(resolve => {
-        this.eventBus._on("metadataloaded", resolve, {
-          once: true
-        });
-      });
+  async _initializeJavaScript(pdfDocument) {
+    if (!_app_options.AppOptions.get("enableScripting")) {
+      return;
+    }
 
-      if (pdfDocument !== this.pdfDocument) {
-        return null;
+    const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), 
pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);
+
+    if (!objects && !docActions) {
+      return;
+    }
+
+    if (pdfDocument !== this.pdfDocument) {
+      return;
+    }
+
+    const scripting = this.externalServices.createScripting({
+      sandboxBundleSrc: _app_options.AppOptions.get("sandboxBundleSrc")
+    });
+    const internalEvents = new Map(),
+          domEvents = new Map();
+    this._scriptingInstance = {
+      scripting,
+      ready: false,
+      internalEvents,
+      domEvents
+    };
+
+    if (!this.documentInfo) {
+      await new Promise(resolve => {
+        this.eventBus._on("metadataloaded", evt => {
+          resolve();
+        }, {
+          once: true
+        });
+      });
+
+      if (pdfDocument !== this.pdfDocument) {
+        return;
       }
     }
 
     if (!this._contentLength) {
       await new Promise(resolve => {
-        this.eventBus._on("documentloaded", resolve, {
+        this.eventBus._on("documentloaded", evt => {
+          resolve();
+        }, {
           once: true
         });
       });
 
       if (pdfDocument !== this.pdfDocument) {
-        return null;
+        return;
       }
     }
 
-    return { ...this.documentInfo,
-      baseURL: this.baseUrl,
-      filesize: this._contentLength,
-      filename: this._docFilename,
-      metadata: this.metadata?.getRaw(),
-      authors: this.metadata?.get("dc:creator"),
-      numPages: this.pagesCount,
-      URL: this.url
+    const updateFromSandbox = ({
+      detail
+    }) => {
+      const {
+        id,
+        command,
+        value
+      } = detail;
+
+      if (!id) {
+        switch (command) {
+          case "clear":
+            console.clear();
+            break;
+
+          case "error":
+            console.error(value);
+            break;
+
+          case "layout":
+            this.pdfViewer.spreadMode = apiPageLayoutToSpreadMode(value);
+            break;
+
+          case "page-num":
+            this.pdfViewer.currentPageNumber = value + 1;
+            break;
+
+          case "print":
+            this.pdfViewer.pagesPromise.then(() => {
+              this.triggerPrinting();
+            });
+            break;
+
+          case "println":
+            console.log(value);
+            break;
+
+          case "zoom":
+            this.pdfViewer.currentScaleValue = value;
+            break;
+        }
+
+        return;
+      }
+
+      const element = document.getElementById(id);
+
+      if (element) {
+        element.dispatchEvent(new CustomEvent("updatefromsandbox", {
+          detail
+        }));
+      } else {
+        if (value !== undefined && value !== null) {
+          pdfDocument.annotationStorage.setValue(id, value);
+        }
+      }
+    };
+
+    internalEvents.set("updatefromsandbox", updateFromSandbox);
+    const visitedPages = new Map();
+
+    const pageOpen = ({
+      pageNumber,
+      actionsPromise
+    }) => {
+      visitedPages.set(pageNumber, (async () => {
+        let actions = null;
+
+        if (!visitedPages.has(pageNumber)) {
+          actions = await actionsPromise;
+
+          if (pdfDocument !== this.pdfDocument) {
+            return;
+          }
+        }
+
+        await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+          id: "page",
+          name: "PageOpen",
+          pageNumber,
+          actions
+        });
+      })());
+    };
+
+    const pageClose = async ({
+      pageNumber
+    }) => {
+      const actionsPromise = visitedPages.get(pageNumber);
+
+      if (!actionsPromise) {
+        return;
+      }
+
+      visitedPages.set(pageNumber, null);
+      await actionsPromise;
+
+      if (pdfDocument !== this.pdfDocument) {
+        return;
+      }
+
+      await this._scriptingInstance?.scripting.dispatchEventInSandbox({
+        id: "page",
+        name: "PageClose",
+        pageNumber
+      });
+    };
+
+    internalEvents.set("pageopen", pageOpen);
+    internalEvents.set("pageclose", pageClose);
+
+    const dispatchEventInSandbox = ({
+      detail
+    }) => {
+      scripting.dispatchEventInSandbox(detail);
+    };
+
+    internalEvents.set("dispatcheventinsandbox", dispatchEventInSandbox);
+
+    const mouseDown = event => {
+      this._mouseState.isDown = true;
+    };
+
+    domEvents.set("mousedown", mouseDown);
+
+    const mouseUp = event => {
+      this._mouseState.isDown = false;
     };
+
+    domEvents.set("mouseup", mouseUp);
+
+    for (const [name, listener] of internalEvents) {
+      this.eventBus._on(name, listener);
+    }
+
+    for (const [name, listener] of domEvents) {
+      window.addEventListener(name, listener);
+    }
+
+    try {
+      await scripting.createSandbox({
+        objects,
+        calculationOrder,
+        appInfo: {
+          platform: navigator.platform,
+          language: navigator.language
+        },
+        docInfo: { ...this.documentInfo,
+          baseURL: this.baseUrl,
+          filesize: this._contentLength,
+          filename: this._docFilename,
+          metadata: this.metadata?.getRaw(),
+          authors: this.metadata?.get("dc:creator"),
+          numPages: pdfDocument.numPages,
+          URL: this.url,
+          actions: docActions
+        }
+      });
+
+      if (this.externalServices.isInAutomation) {
+        this.eventBus.dispatch("sandboxcreated", {
+          source: this
+        });
+      }
+    } catch (error) {
+      console.error(`_initializeJavaScript: "${error?.message}".`);
+
+      this._destroyScriptingInstance();
+
+      return;
+    }
+
+    await scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "Open"
+    });
+    await this.pdfViewer.initializeScriptingEvents();
+    Promise.resolve().then(() => {
+      if (this._scriptingInstance) {
+        this._scriptingInstance.ready = true;
+      }
+    });
   },
 
   async _collectTelemetry(pdfDocument) {
@@ -1523,7 +1921,7 @@ const PDFViewerApplication = {
   },
 
   async _initializeAutoPrint(pdfDocument, openActionPromise) {
-    const [openAction, javaScript] = await Promise.all([openActionPromise, !this.pdfViewer.enableScripting ? 
pdfDocument.getJavaScript() : null]);
+    const [openAction, javaScript] = await Promise.all([openActionPromise, 
!_app_options.AppOptions.get("enableScripting") ? pdfDocument.getJavaScript() : null]);
 
     if (pdfDocument !== this.pdfDocument) {
       return;
@@ -1577,11 +1975,17 @@ const PDFViewerApplication = {
 
     this.documentInfo = info;
     this.metadata = metadata;
-    this._contentDispositionFilename ?? (this._contentDispositionFilename = contentDispositionFilename);
+    this._contentDispositionFilename = contentDispositionFilename;
     this._contentLength ?? (this._contentLength = contentLength);
     console.log(`PDF ${pdfDocument.fingerprint} [${info.PDFFormatVersion} ` + `${(info.Producer || 
"-").trim()} / ${(info.Creator || "-").trim()}] ` + `(PDF.js: ${_pdfjsLib.version || "-"}` + 
`${this.pdfViewer.enableWebGL ? " [WebGL]" : ""})`);
-    let pdfTitle = info?.Title;
-    const metadataTitle = metadata?.get("dc:title");
+    let pdfTitle;
+    const infoTitle = info && info.Title;
+
+    if (infoTitle) {
+      pdfTitle = infoTitle;
+    }
+
+    const metadataTitle = metadata && metadata.get("dc:title");
 
     if (metadataTitle) {
       if (metadataTitle !== "Untitled" && !/[\uFFF0-\uFFFF]/g.test(metadataTitle)) {
@@ -1595,7 +1999,7 @@ const PDFViewerApplication = {
       this.setTitle(contentDispositionFilename);
     }
 
-    if (info.IsXFAPresent && !info.IsAcroFormPresent && !pdfDocument.isPureXfa) {
+    if (info.IsXFAPresent && !info.IsAcroFormPresent) {
       console.warn("Warning: XFA is not supported");
 
       this._delayedFallback(_pdfjsLib.UNSUPPORTED_FEATURES.forms);
@@ -1737,14 +2141,12 @@ const PDFViewerApplication = {
       annotationStorage
     } = pdfDocument;
 
-    annotationStorage.onSetModified = () => {
+    annotationStorage.onSetModified = function () {
       window.addEventListener("beforeunload", beforeUnload);
-      this._annotationStorageModified = true;
     };
 
-    annotationStorage.onResetModified = () => {
+    annotationStorage.onResetModified = function () {
       window.removeEventListener("beforeunload", beforeUnload);
-      delete this._annotationStorageModified;
     };
   },
 
@@ -1792,14 +2194,17 @@ const PDFViewerApplication = {
     }
   },
 
-  _cleanup() {
+  cleanup() {
     if (!this.pdfDocument) {
       return;
     }
 
     this.pdfViewer.cleanup();
     this.pdfThumbnailViewer.cleanup();
-    this.pdfDocument.cleanup(this.pdfViewer.renderer === _ui_utils.RendererType.SVG);
+
+    if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) {
+      this.pdfDocument.cleanup();
+    }
   },
 
   forceRendering() {
@@ -1809,22 +2214,25 @@ const PDFViewerApplication = {
   },
 
   beforePrint() {
-    this.pdfScriptingManager.dispatchWillPrint();
+    this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "WillPrint"
+    });
 
     if (this.printService) {
       return;
     }
 
     if (!this.supportsPrinting) {
-      this.l10n.get("printing_not_supported").then(msg => {
-        this._otherError(msg);
+      this.l10n.get("printing_not_supported", null, "Warning: Printing is not fully supported by this 
browser.").then(printMessage => {
+        this.error(printMessage);
       });
       return;
     }
 
     if (!this.pdfViewer.pageViewsReady) {
-      this.l10n.get("printing_not_ready").then(msg => {
-        window.alert(msg);
+      this.l10n.get("printing_not_ready", null, "Warning: The PDF is not fully loaded for 
printing.").then(notReadyMessage => {
+        window.alert(notReadyMessage);
       });
       return;
     }
@@ -1845,7 +2253,10 @@ const PDFViewerApplication = {
   },
 
   afterPrint() {
-    this.pdfScriptingManager.dispatchDidPrint();
+    this._scriptingInstance?.scripting.dispatchEventInSandbox({
+      id: "doc",
+      name: "DidPrint"
+    });
 
     if (this.printService) {
       this.printService.destroy();
@@ -1860,7 +2271,12 @@ const PDFViewerApplication = {
   },
 
   rotatePages(delta) {
-    this.pdfViewer.pagesRotation += delta;
+    if (!this.pdfDocument) {
+      return;
+    }
+
+    const newRotation = (this.pdfViewer.pagesRotation + 360 + delta) % 360;
+    this.pdfViewer.pagesRotation = newRotation;
   },
 
   requestPresentationMode() {
@@ -2166,16 +2582,8 @@ const PDFViewerApplication = {
     return wholeTicks;
   },
 
-  _unblockDocumentLoadEvent() {
-    if (document.blockUnblockOnload) {
-      document.blockUnblockOnload(false);
-    }
-
-    this._unblockDocumentLoadEvent = () => {};
-  },
-
   get scriptingReady() {
-    return this.pdfScriptingManager.ready;
+    return this._scriptingInstance?.ready || false;
   }
 
 };
@@ -2205,9 +2613,10 @@ let validateFileURL;
         throw new Error("file origin does not match viewer's");
       }
     } catch (ex) {
-      PDFViewerApplication.l10n.get("loading_error").then(msg => {
-        PDFViewerApplication._documentError(msg, {
-          message: ex?.message
+      const message = ex && ex.message;
+      PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(loadingErrorMessage => {
+        PDFViewerApplication.error(loadingErrorMessage, {
+          message
         });
       });
       throw ex;
@@ -2241,7 +2650,7 @@ function reportPageStatsPDFBug({
   }
 
   const pageView = PDFViewerApplication.pdfViewer.getPageView(pageNumber - 1);
-  const pageStats = pageView?.pdfPage?.stats;
+  const pageStats = pageView && pageView.pdfPage && pageView.pdfPage.stats;
 
   if (!pageStats) {
     return;
@@ -2299,7 +2708,7 @@ function webViewerInitialized() {
   if (!PDFViewerApplication.supportsDocumentFonts) {
     _app_options.AppOptions.set("disableFontFace", true);
 
-    PDFViewerApplication.l10n.get("web_fonts_disabled").then(msg => {
+    PDFViewerApplication.l10n.get("web_fonts_disabled", null, "Web fonts are disabled: unable to use 
embedded PDF fonts.").then(msg => {
       console.warn(msg);
     });
   }
@@ -2339,16 +2748,33 @@ function webViewerInitialized() {
     PDFViewerApplication.open(array);
     PDFViewerApplication.setTitleUsingUrl(file_name);
   } catch (reason) {
-    PDFViewerApplication.l10n.get("loading_error").then(msg => {
-      PDFViewerApplication._documentError(msg, reason);
+    PDFViewerApplication.l10n.get("loading_error", null, "An error occurred while loading the 
PDF.").then(msg => {
+      PDFViewerApplication.error(msg, reason);
     });
   }
 }
 
-function webViewerOpenFileViaURL(file) {
-  if (file) {
-    PDFViewerApplication.open(file);
-  }
+let webViewerOpenFileViaURL;
+{
+  webViewerOpenFileViaURL = function (file) {
+    if (file && file.lastIndexOf("file:", 0) === 0) {
+      PDFViewerApplication.setTitleUsingUrl(file);
+      const xhr = new XMLHttpRequest();
+
+      xhr.onload = function () {
+        PDFViewerApplication.open(new Uint8Array(xhr.response));
+      };
+
+      xhr.open("GET", file);
+      xhr.responseType = "arraybuffer";
+      xhr.send();
+      return;
+    }
+
+    if (file) {
+      PDFViewerApplication.open(file);
+    }
+  };
 }
 
 function webViewerResetPermissions() {
@@ -2382,8 +2808,8 @@ function webViewerPageRendered({
   }
 
   if (error) {
-    PDFViewerApplication.l10n.get("rendering_error").then(msg => {
-      PDFViewerApplication._otherError(msg, error);
+    PDFViewerApplication.l10n.get("rendering_error", null, "An error occurred while rendering the 
page.").then(msg => {
+      PDFViewerApplication.error(msg, error);
     });
   }
 
@@ -2488,7 +2914,7 @@ function webViewerUpdateViewarea(evt) {
   PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href;
   PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href;
   const currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1);
-  const loading = currentPage?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED;
+  const loading = (currentPage && currentPage.renderingState) !== 
_pdf_rendering_queue.RenderingStates.FINISHED;
   PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading);
 }
 
@@ -2544,7 +2970,7 @@ function webViewerHashchange(evt) {
 let webViewerFileInputChange, webViewerOpenFile;
 {
   webViewerFileInputChange = function (evt) {
-    if (PDFViewerApplication.pdfViewer?.isInPresentationMode) {
+    if (PDFViewerApplication.pdfViewer && PDFViewerApplication.pdfViewer.isInPresentationMode) {
       return;
     }
 
@@ -2574,10 +3000,10 @@ let webViewerFileInputChange, webViewerOpenFile;
     }
 
     const appConfig = PDFViewerApplication.appConfig;
-    appConfig.toolbar.viewBookmark.hidden = true;
-    appConfig.secondaryToolbar.viewBookmarkButton.hidden = true;
-    appConfig.toolbar.download.hidden = true;
-    appConfig.secondaryToolbar.downloadButton.hidden = true;
+    appConfig.toolbar.viewBookmark.setAttribute("hidden", "true");
+    appConfig.secondaryToolbar.viewBookmarkButton.setAttribute("hidden", "true");
+    appConfig.toolbar.download.setAttribute("hidden", "true");
+    appConfig.secondaryToolbar.downloadButton.setAttribute("hidden", "true");
   };
 
   webViewerOpenFile = function (evt) {
@@ -2861,7 +3287,7 @@ function webViewerKeyDown(evt) {
       ensureViewerFocused = false;
   const cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0);
   const pdfViewer = PDFViewerApplication.pdfViewer;
-  const isViewerInPresentationMode = pdfViewer?.isInPresentationMode;
+  const isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode;
 
   if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) {
     switch (evt.keyCode) {
@@ -2993,9 +3419,9 @@ function webViewerKeyDown(evt) {
   }
 
   const curElement = (0, _ui_utils.getActiveOrFocusedElement)();
-  const curElementTagName = curElement?.tagName.toUpperCase();
+  const curElementTagName = curElement && curElement.tagName.toUpperCase();
 
-  if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || 
curElement?.isContentEditable) {
+  if (curElementTagName === "INPUT" || curElementTagName === "TEXTAREA" || curElementTagName === "SELECT" || 
curElement && curElement.isContentEditable) {
     if (evt.keyCode !== 27) {
       return;
     }
@@ -3162,6 +3588,45 @@ function beforeUnload(evt) {
   return false;
 }
 
+function apiPageLayoutToSpreadMode(layout) {
+  switch (layout) {
+    case "SinglePage":
+    case "OneColumn":
+      return _ui_utils.SpreadMode.NONE;
+
+    case "TwoColumnLeft":
+    case "TwoPageLeft":
+      return _ui_utils.SpreadMode.ODD;
+
+    case "TwoColumnRight":
+    case "TwoPageRight":
+      return _ui_utils.SpreadMode.EVEN;
+  }
+
+  return _ui_utils.SpreadMode.NONE;
+}
+
+function apiPageModeToSidebarView(mode) {
+  switch (mode) {
+    case "UseNone":
+      return _ui_utils.SidebarView.NONE;
+
+    case "UseThumbs":
+      return _ui_utils.SidebarView.THUMBS;
+
+    case "UseOutlines":
+      return _ui_utils.SidebarView.OUTLINE;
+
+    case "UseAttachments":
+      return _ui_utils.SidebarView.ATTACHMENTS;
+
+    case "UseOC":
+      return _ui_utils.SidebarView.LAYERS;
+  }
+
+  return _ui_utils.SidebarView.NONE;
+}
+
 const PDFPrintServiceFactory = {
   instance: {
     supportsPrinting: false,
@@ -3183,14 +3648,13 @@ exports.PDFPrintServiceFactory = PDFPrintServiceFactory;
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.apiPageLayoutToSpreadMode = apiPageLayoutToSpreadMode;
-exports.apiPageModeToSidebarView = apiPageModeToSidebarView;
 exports.approximateFraction = approximateFraction;
 exports.backtrackBeforeAllVisibleElements = backtrackBeforeAllVisibleElements;
 exports.binarySearchFirstItem = binarySearchFirstItem;
 exports.getActiveOrFocusedElement = getActiveOrFocusedElement;
 exports.getOutputScale = getOutputScale;
 exports.getPageSizeInches = getPageSizeInches;
+exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
 exports.getVisibleElements = getVisibleElements;
 exports.isPortraitOrientation = isPortraitOrientation;
 exports.isValidRotation = isValidRotation;
@@ -3205,7 +3669,7 @@ exports.roundToDivide = roundToDivide;
 exports.scrollIntoView = scrollIntoView;
 exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
 exports.watchScroll = watchScroll;
-exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = 
exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = 
exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.MIN_SCALE = 
exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = exports.DEFAULT_SCALE_VALUE = 
exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = exports.animationStarted = void 0;
+exports.WaitOnType = exports.VERTICAL_PADDING = exports.UNKNOWN_SCALE = exports.TextLayerMode = 
exports.SpreadMode = exports.SidebarView = exports.ScrollMode = exports.SCROLLBAR_PADDING = 
exports.RendererType = exports.ProgressBar = exports.PresentationModeState = exports.NullL10n = 
exports.MIN_SCALE = exports.MAX_SCALE = exports.MAX_AUTO_SCALE = exports.EventBus = 
exports.DEFAULT_SCALE_VALUE = exports.DEFAULT_SCALE = exports.CSS_UNITS = exports.AutoPrintRegExp = 
exports.animationStarted = void 0;
 const CSS_UNITS = 96.0 / 72.0;
 exports.CSS_UNITS = CSS_UNITS;
 const DEFAULT_SCALE_VALUE = "auto";
@@ -3269,6 +3733,34 @@ exports.SpreadMode = SpreadMode;
 const AutoPrintRegExp = /\bprint\s*\(/;
 exports.AutoPrintRegExp = AutoPrintRegExp;
 
+function formatL10nValue(text, args) {
+  if (!args) {
+    return text;
+  }
+
+  return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => {
+    return name in args ? args[name] : "{{" + name + "}}";
+  });
+}
+
+const NullL10n = {
+  async getLanguage() {
+    return "en-us";
+  },
+
+  async getDirection() {
+    return "ltr";
+  },
+
+  async get(property, args, fallback) {
+    return formatL10nValue(fallback, args);
+  },
+
+  async translate(element) {}
+
+};
+exports.NullL10n = NullL10n;
+
 function getOutputScale(ctx) {
   const devicePixelRatio = window.devicePixelRatio || 1;
   const backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || 
ctx.backingStorePixelRatio || 1;
@@ -3592,8 +4084,47 @@ function noContextMenuHandler(evt) {
   evt.preventDefault();
 }
 
+function isDataSchema(url) {
+  let i = 0;
+  const ii = url.length;
+
+  while (i < ii && url[i].trim() === "") {
+    i++;
+  }
+
+  return url.substring(i, i + 5).toLowerCase() === "data:";
+}
+
+function getPDFFileNameFromURL(url, defaultFilename = "document.pdf") {
+  if (typeof url !== "string") {
+    return defaultFilename;
+  }
+
+  if (isDataSchema(url)) {
+    console.warn("getPDFFileNameFromURL: " + 'ignoring "data:" URL for performance reasons.');
+    return defaultFilename;
+  }
+
+  const reURI = /^(?:(?:[^:]+:)?\/\/[^/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
+  const reFilename = /[^/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
+  const splitURI = reURI.exec(url);
+  let suggestedFilename = reFilename.exec(splitURI[1]) || reFilename.exec(splitURI[2]) || 
reFilename.exec(splitURI[3]);
+
+  if (suggestedFilename) {
+    suggestedFilename = suggestedFilename[0];
+
+    if (suggestedFilename.includes("%")) {
+      try {
+        suggestedFilename = reFilename.exec(decodeURIComponent(suggestedFilename))[0];
+      } catch (ex) {}
+    }
+  }
+
+  return suggestedFilename || defaultFilename;
+}
+
 function normalizeWheelEventDirection(evt) {
-  let delta = Math.hypot(evt.deltaX, evt.deltaY);
+  let delta = Math.sqrt(evt.deltaX * evt.deltaX + evt.deltaY * evt.deltaY);
   const angle = Math.atan2(evt.deltaY, evt.deltaX);
 
   if (-0.25 * Math.PI < angle && angle < 0.75 * Math.PI) {
@@ -3872,7 +4403,7 @@ function getActiveOrFocusedElement() {
   let curRoot = document;
   let curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
 
-  while (curActiveOrFocused?.shadowRoot) {
+  while (curActiveOrFocused && curActiveOrFocused.shadowRoot) {
     curRoot = curActiveOrFocused.shadowRoot;
     curActiveOrFocused = curRoot.activeElement || curRoot.querySelector(":focus");
   }
@@ -3880,64 +4411,25 @@ function getActiveOrFocusedElement() {
   return curActiveOrFocused;
 }
 
-function apiPageLayoutToSpreadMode(layout) {
-  switch (layout) {
-    case "SinglePage":
-    case "OneColumn":
-      return SpreadMode.NONE;
+/***/ }),
+/* 5 */
+/***/ ((module) => {
 
-    case "TwoColumnLeft":
-    case "TwoPageLeft":
-      return SpreadMode.ODD;
 
-    case "TwoColumnRight":
-    case "TwoPageRight":
-      return SpreadMode.EVEN;
-  }
 
-  return SpreadMode.NONE;
+let pdfjsLib;
+
+if (typeof window !== "undefined" && window["pdfjs-dist/build/pdf"]) {
+  pdfjsLib = window["pdfjs-dist/build/pdf"];
+} else {
+  pdfjsLib = require("../build/pdf.js");
 }
 
-function apiPageModeToSidebarView(mode) {
-  switch (mode) {
-    case "UseNone":
-      return SidebarView.NONE;
+module.exports = pdfjsLib;
 
-    case "UseThumbs":
-      return SidebarView.THUMBS;
-
-    case "UseOutlines":
-      return SidebarView.OUTLINE;
-
-    case "UseAttachments":
-      return SidebarView.ATTACHMENTS;
-
-    case "UseOC":
-      return SidebarView.LAYERS;
-  }
-
-  return SidebarView.NONE;
-}
-
-/***/ }),
-/* 5 */
-/***/ ((module) => {
-
-
-
-let 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;
-
-/***/ }),
-/* 6 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
+/***/ }),
+/* 6 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
 
@@ -4039,6 +4531,9 @@ class PDFCursorTools {
 
     this.eventBus._on("presentationmodechanged", evt => {
       switch (evt.state) {
+        case _ui_utils.PresentationModeState.CHANGING:
+          break;
+
         case _ui_utils.PresentationModeState.FULLSCREEN:
           {
             const previouslyActive = this.active;
@@ -4127,7 +4622,7 @@ GrabToPan.prototype = {
     }
   },
   ignoreTarget: function GrabToPan_ignoreTarget(node) {
-    return node.matches("a[href], a[href] *, input, textarea, button, button *, select, option");
+    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)) {
@@ -4193,16 +4688,32 @@ GrabToPan.prototype = {
     this.overlay.remove();
   }
 };
+let matchesSelector;
+["webkitM", "mozM", "m"].some(function (prefix) {
+  let name = prefix + "atches";
+
+  if (name in document.documentElement) {
+    matchesSelector = name;
+  }
+
+  name += "Selector";
+
+  if (name in document.documentElement) {
+    matchesSelector = name;
+  }
+
+  return matchesSelector;
+});
+const isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9;
+const chrome = window.chrome;
+const isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);
+const isSafari6plus = /Apple/.test(navigator.vendor) && 
/Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent);
 
 function isLeftMouseReleased(event) {
-  if ("buttons" in event) {
+  if ("buttons" in event && isNotIEorIsIE10plus) {
     return !(event.buttons & 1);
   }
 
-  const chrome = window.chrome;
-  const isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app);
-  const isSafari6plus = /Apple/.test(navigator.vendor) && 
/Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent);
-
   if (isChrome15OrOpera15plus || isSafari6plus) {
     return event.which === 0;
   }
@@ -4473,10 +4984,12 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PasswordPrompt = void 0;
 
+var _ui_utils = __webpack_require__(4);
+
 var _pdfjsLib = __webpack_require__(5);
 
 class PasswordPrompt {
-  constructor(options, overlayManager, l10n, isViewerEmbedded = false) {
+  constructor(options, overlayManager, l10n = _ui_utils.NullL10n) {
     this.overlayName = options.overlayName;
     this.container = options.container;
     this.label = options.label;
@@ -4485,7 +4998,6 @@ class PasswordPrompt {
     this.cancelButton = options.cancelButton;
     this.overlayManager = overlayManager;
     this.l10n = l10n;
-    this._isViewerEmbedded = isViewerEmbedded;
     this.updateCallback = null;
     this.reason = null;
     this.submitButton.addEventListener("click", this.verify.bind(this));
@@ -4498,15 +5010,21 @@ class PasswordPrompt {
     this.overlayManager.register(this.overlayName, this.container, this.close.bind(this), true);
   }
 
-  async open() {
-    await this.overlayManager.open(this.overlayName);
-    const passwordIncorrect = this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD;
-
-    if (!this._isViewerEmbedded || passwordIncorrect) {
+  open() {
+    this.overlayManager.open(this.overlayName).then(() => {
       this.input.focus();
-    }
+      let promptString;
+
+      if (this.reason === _pdfjsLib.PasswordResponses.INCORRECT_PASSWORD) {
+        promptString = this.l10n.get("password_invalid", null, "Invalid password. Please try again.");
+      } else {
+        promptString = this.l10n.get("password_label", null, "Enter the password to open this PDF file.");
+      }
 
-    this.label.textContent = await this.l10n.get(`password_${passwordIncorrect ? "invalid" : "label"}`);
+      promptString.then(msg => {
+        this.label.textContent = msg;
+      });
+    });
   }
 
   close() {
@@ -4518,7 +5036,7 @@ class PasswordPrompt {
   verify() {
     const password = this.input.value;
 
-    if (password?.length > 0) {
+    if (password && password.length > 0) {
       this.close();
       this.updateCallback(password);
     }
@@ -4548,6 +5066,10 @@ var _pdfjsLib = __webpack_require__(5);
 
 var _base_tree_viewer = __webpack_require__(12);
 
+var _viewer_compatibility = __webpack_require__(2);
+
+const PdfFileRegExp = /\.pdf$/i;
+
 class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
   constructor(options) {
     super(options);
@@ -4596,12 +5118,42 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
     });
   }
 
+  _bindPdfLink(element, {
+    content,
+    filename
+  }) {
+    let blobUrl;
+
+    element.onclick = () => {
+      if (!blobUrl) {
+        blobUrl = URL.createObjectURL(new Blob([content], {
+          type: "application/pdf"
+        }));
+      }
+
+      let viewerUrl;
+      viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
+
+      try {
+        window.open(viewerUrl);
+      } catch (ex) {
+        console.error(`_bindPdfLink: ${ex}`);
+        URL.revokeObjectURL(blobUrl);
+        blobUrl = null;
+        this.downloadManager.downloadData(content, filename, "application/pdf");
+      }
+
+      return false;
+    };
+  }
+
   _bindLink(element, {
     content,
     filename
   }) {
     element.onclick = () => {
-      this.downloadManager.openOrDownloadData(element, content, filename);
+      const contentType = PdfFileRegExp.test(filename) ? "application/pdf" : "";
+      this.downloadManager.downloadData(content, filename, contentType);
       return false;
     };
   }
@@ -4630,16 +5182,22 @@ class PDFAttachmentViewer extends _base_tree_viewer.BaseTreeViewer {
 
     for (const name of names) {
       const item = attachments[name];
-      const content = item.content,
-            filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename);
+      const filename = (0, _pdfjsLib.getFilenameFromUrl)(item.filename);
       const div = document.createElement("div");
       div.className = "treeItem";
       const element = document.createElement("a");
 
-      this._bindLink(element, {
-        content,
-        filename
-      });
+      if (PdfFileRegExp.test(filename) && 
!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
+        this._bindPdfLink(element, {
+          content: item.content,
+          filename
+        });
+      } else {
+        this._bindLink(element, {
+          content: item.content,
+          filename
+        });
+      }
 
       element.textContent = this._normalizeTextContent(filename);
       div.appendChild(element);
@@ -4860,7 +5418,7 @@ class PDFDocumentProperties {
     fields,
     container,
     closeButton
-  }, overlayManager, eventBus, l10n) {
+  }, overlayManager, eventBus, l10n = _ui_utils.NullL10n) {
     this.overlayName = overlayName;
     this.fields = fields;
     this.container = container;
@@ -4911,7 +5469,7 @@ class PDFDocumentProperties {
       contentDispositionFilename,
       contentLength
     } = await this.pdfDocument.getMetadata();
-    const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await 
Promise.all([contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(this.url), 
this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), 
this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
+    const [fileName, fileSize, creationDate, modificationDate, pageSize, isLinearized] = await 
Promise.all([contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), 
this._parseFileSize(contentLength), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), 
this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
       return this._parsePageSize((0, _ui_utils.getPageSizeInches)(pdfPage), pagesRotation);
     }), this._parseLinearization(info.IsLinearized)]);
     freezeFieldData({
@@ -5000,18 +5558,21 @@ class PDFDocumentProperties {
   }
 
   async _parseFileSize(fileSize = 0) {
-    const kb = fileSize / 1024,
-          mb = kb / 1024;
+    const kb = fileSize / 1024;
 
     if (!kb) {
       return 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 >= 1 ? "mb" : "kb"}`, {
-      size_mb: mb >= 1 && (+mb.toPrecision(3)).toLocaleString(),
-      size_kb: mb < 1 && (+kb.toPrecision(3)).toLocaleString(),
+    return this.l10n.get("document_properties_mb", {
+      size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
       size_b: fileSize.toLocaleString()
-    });
+    }, "{{size_mb}} MB ({{size_b}} bytes)");
   }
 
   async _parsePageSize(pageSizeInches, pagesRotation) {
@@ -5035,6 +5596,7 @@ class PDFDocumentProperties {
       width: Math.round(pageSizeInches.width * 25.4 * 10) / 10,
       height: Math.round(pageSizeInches.height * 25.4 * 10) / 10
     };
+    let pageName = null;
     let rawName = getPageName(sizeInches, isPortrait, US_PAGE_NAMES) || getPageName(sizeMillimeters, 
isPortrait, METRIC_PAGE_NAMES);
 
     if (!rawName && !(Number.isInteger(sizeMillimeters.width) && Number.isInteger(sizeMillimeters.height))) {
@@ -5060,16 +5622,21 @@ class PDFDocumentProperties {
       }
     }
 
-    const [{
+    if (rawName) {
+      pageName = this.l10n.get("document_properties_page_size_name_" + rawName.toLowerCase(), null, rawName);
+    }
+
+    return Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, 
this.l10n.get("document_properties_page_size_unit_" + (this._isNonMetricLocale ? "inches" : "millimeters"), 
null, this._isNonMetricLocale ? "in" : "mm"), pageName, 
this.l10n.get("document_properties_page_size_orientation_" + (isPortrait ? "portrait" : "landscape"), null, 
isPortrait ? "portrait" : "landscape")]).then(([{
       width,
       height
-    }, unit, name, orientation] = await Promise.all([this._isNonMetricLocale ? sizeInches : sizeMillimeters, 
this.l10n.get(`document_properties_page_size_unit_${this._isNonMetricLocale ? "inches" : "millimeters"}`), 
rawName && this.l10n.get(`document_properties_page_size_name_${rawName.toLowerCase()}`), 
this.l10n.get(`document_properties_page_size_orientation_${isPortrait ? "portrait" : "landscape"}`)]);
-    return this.l10n.get(`document_properties_page_size_dimension_${name ? "name_" : ""}string`, {
-      width: width.toLocaleString(),
-      height: height.toLocaleString(),
-      unit,
-      name,
-      orientation
+    }, unit, name, orientation]) => {
+      return this.l10n.get("document_properties_page_size_dimension_" + (name ? "name_" : "") + "string", {
+        width: width.toLocaleString(),
+        height: height.toLocaleString(),
+        unit,
+        name,
+        orientation
+      }, "{{width}} × {{height}} {{unit}} (" + (name ? "{{name}}, " : "") + "{{orientation}})");
     });
   }
 
@@ -5083,11 +5650,11 @@ class PDFDocumentProperties {
     return this.l10n.get("document_properties_date_string", {
       date: dateObject.toLocaleDateString(),
       time: dateObject.toLocaleTimeString()
-    });
+    }, "{{date}}, {{time}}");
   }
 
   _parseLinearization(isLinearized) {
-    return this.l10n.get(`document_properties_linearized_${isLinearized ? "yes" : "no"}`);
+    return this.l10n.get("document_properties_linearized_" + (isLinearized ? "yes" : "no"), null, 
isLinearized ? "Yes" : "No");
   }
 
 }
@@ -5107,21 +5674,23 @@ exports.PDFFindBar = void 0;
 
 var _pdf_find_controller = __webpack_require__(15);
 
+var _ui_utils = __webpack_require__(4);
+
 const MATCHES_COUNT_LIMIT = 1000;
 
 class PDFFindBar {
-  constructor(options, eventBus, l10n) {
+  constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
     this.opened = false;
-    this.bar = options.bar;
-    this.toggleButton = options.toggleButton;
-    this.findField = options.findField;
-    this.highlightAll = options.highlightAllCheckbox;
-    this.caseSensitive = options.caseSensitiveCheckbox;
-    this.entireWord = options.entireWordCheckbox;
-    this.findMsg = options.findMsg;
-    this.findResultsCount = options.findResultsCount;
-    this.findPreviousButton = options.findPreviousButton;
-    this.findNextButton = options.findNextButton;
+    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.entireWord = options.entireWordCheckbox || null;
+    this.findMsg = options.findMsg || null;
+    this.findResultsCount = options.findResultsCount || null;
+    this.findPreviousButton = options.findPreviousButton || null;
+    this.findNextButton = options.findNextButton || null;
     this.eventBus = eventBus;
     this.l10n = l10n;
     this.toggleButton.addEventListener("click", () => {
@@ -5181,7 +5750,7 @@ class PDFFindBar {
   }
 
   updateUIState(state, previous, matchesCount) {
-    let findMsg = Promise.resolve("");
+    let findMsg = "";
     let status = "";
 
     switch (state) {
@@ -5193,17 +5762,22 @@ class PDFFindBar {
         break;
 
       case _pdf_find_controller.FindState.NOT_FOUND:
-        findMsg = this.l10n.get("find_not_found");
+        findMsg = this.l10n.get("find_not_found", null, "Phrase not found");
         status = "notFound";
         break;
 
       case _pdf_find_controller.FindState.WRAPPED:
-        findMsg = this.l10n.get(`find_reached_${previous ? "top" : "bottom"}`);
+        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;
     }
 
     this.findField.setAttribute("data-status", status);
-    findMsg.then(msg => {
+    Promise.resolve(findMsg).then(msg => {
       this.findMsg.textContent = msg;
 
       this._adjustWidth();
@@ -5215,25 +5789,27 @@ class PDFFindBar {
     current = 0,
     total = 0
   } = {}) {
+    if (!this.findResultsCount) {
+      return;
+    }
+
     const limit = MATCHES_COUNT_LIMIT;
-    let matchCountMsg = Promise.resolve("");
+    let matchesCountMsg = "";
 
     if (total > 0) {
       if (total > limit) {
-        let key = "find_match_count_limit";
-        matchCountMsg = this.l10n.get(key, {
+        matchesCountMsg = this.l10n.get("find_match_count_limit", {
           limit
-        });
+        }, "More than {{limit}} match" + (limit !== 1 ? "es" : ""));
       } else {
-        let key = "find_match_count";
-        matchCountMsg = this.l10n.get(key, {
+        matchesCountMsg = this.l10n.get("find_match_count", {
           current,
           total
-        });
+        }, "{{current}} of {{total}} match" + (total !== 1 ? "es" : ""));
       }
     }
 
-    matchCountMsg.then(msg => {
+    Promise.resolve(matchesCountMsg).then(msg => {
       this.findResultsCount.textContent = msg;
       this.findResultsCount.classList.toggle("hidden", !total);
 
@@ -5245,7 +5821,6 @@ class PDFFindBar {
     if (!this.opened) {
       this.opened = true;
       this.toggleButton.classList.add("toggled");
-      this.toggleButton.setAttribute("aria-expanded", "true");
       this.bar.classList.remove("hidden");
     }
 
@@ -5262,7 +5837,6 @@ class PDFFindBar {
 
     this.opened = false;
     this.toggleButton.classList.remove("toggled");
-    this.toggleButton.setAttribute("aria-expanded", "false");
     this.bar.classList.add("hidden");
     this.eventBus.dispatch("findbarclose", {
       source: this
@@ -5985,7 +6559,7 @@ class PDFFindController {
 
     if (matchIdx !== -1) {
       for (let i = 0; i < pageIdx; i++) {
-        current += this._pageMatches[i]?.length || 0;
+        current += this._pageMatches[i] && this._pageMatches[i].length || 0;
       }
 
       current += matchIdx + 1;
@@ -6014,7 +6588,7 @@ class PDFFindController {
       state,
       previous,
       matchesCount: this._requestMatchesCount(),
-      rawQuery: this._state?.query ?? null
+      rawQuery: this._state ? this._state.query : null
     });
   }
 
@@ -6271,7 +6845,7 @@ class PDFHistory {
     } else if (!Array.isArray(explicitDest)) {
       console.error("PDFHistory.push: " + `"${explicitDest}" is not a valid explicitDest parameter.`);
       return;
-    } else if (!this._isValidPage(pageNumber)) {
+    } else if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= 
this.linkService.pagesCount)) {
       if (pageNumber !== null || this._destination) {
         console.error("PDFHistory.push: " + `"${pageNumber}" is not a valid pageNumber parameter.`);
         return;
@@ -6318,7 +6892,7 @@ class PDFHistory {
       return;
     }
 
-    if (!this._isValidPage(pageNumber)) {
+    if (!(Number.isInteger(pageNumber) && pageNumber > 0 && pageNumber <= this.linkService.pagesCount)) {
       console.error(`PDFHistory.pushPage: "${pageNumber}" is not a valid page number.`);
       return;
     }
@@ -6332,7 +6906,6 @@ class PDFHistory {
     }
 
     this._pushOrReplaceState({
-      dest: null,
       hash: `page=${pageNumber}`,
       page: pageNumber,
       rotation: this.linkService.rotation
@@ -6454,7 +7027,7 @@ return;
     let forceReplace = false;
 
     if (this._destination.page >= position.first && this._destination.page <= position.page) {
-      if (this._destination.dest !== undefined || !this._destination.first) {
+      if (this._destination.dest || !this._destination.first) {
         return;
       }
 
@@ -6464,10 +7037,6 @@ return;
     this._pushOrReplaceState(position, forceReplace);
   }
 
-  _isValidPage(val) {
-    return Number.isInteger(val) && val > 0 && val <= this.linkService.pagesCount;
-  }
-
   _isValidState(state, checkReload = false) {
     if (!state) {
       return false;
@@ -6522,7 +7091,7 @@ return;
     const nameddest = params.nameddest || "";
     let page = params.page | 0;
 
-    if (!this._isValidPage(page) || checkNameddest && nameddest.length > 0) {
+    if (!(Number.isInteger(page) && page > 0 && page <= this.linkService.pagesCount) || checkNameddest && 
nameddest.length > 0) {
       page = null;
     }
 
@@ -6803,7 +7372,7 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
       return;
     }
 
-    element.textContent = await this.l10n.get("additional_layers");
+    element.textContent = await this.l10n.get("additional_layers", null, "Additional Layers");
     element.style.fontStyle = "italic";
   }
 
@@ -6831,7 +7400,7 @@ class PDFLayerViewer extends _base_tree_viewer.BaseTreeViewer {
 
     this._optionalContentConfig = optionalContentConfig || null;
     this._pdfDocument = pdfDocument || null;
-    const groups = optionalContentConfig?.getOrder();
+    const groups = optionalContentConfig && optionalContentConfig.getOrder();
 
     if (!groups) {
       this._dispatchEvent(0);
@@ -7246,7 +7815,7 @@ class PDFLinkService {
 
   _cachedPageNumber(pageRef) {
     const refStr = pageRef.gen === 0 ? `${pageRef.num}R` : `${pageRef.num}R${pageRef.gen}`;
-    return this._pagesRefCache?.[refStr] || null;
+    return this._pagesRefCache && this._pagesRefCache[refStr] || null;
   }
 
   isPageVisible(pageNumber) {
@@ -7664,7 +8233,7 @@ class PDFOutlineViewer extends _base_tree_viewer.BaseTreeViewer {
         if (Array.isArray(explicitDest)) {
           const [destRef] = explicitDest;
 
-          if (destRef instanceof Object) {
+          if (typeof destRef === "object") {
             pageNumber = this.linkService._cachedPageNumber(destRef);
 
             if (!pageNumber) {
@@ -7733,7 +8302,8 @@ class PDFPresentationMode {
   constructor({
     container,
     pdfViewer,
-    eventBus
+    eventBus,
+    contextMenuItems = null
   }) {
     this.container = container;
     this.pdfViewer = pdfViewer;
@@ -7744,6 +8314,33 @@ class PDFPresentationMode {
     this.mouseScrollTimeStamp = 0;
     this.mouseScrollDelta = 0;
     this.touchSwipeState = null;
+
+    if (contextMenuItems) {
+      contextMenuItems.contextFirstPage.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("firstpage", {
+          source: this
+        });
+      });
+      contextMenuItems.contextLastPage.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("lastpage", {
+          source: this
+        });
+      });
+      contextMenuItems.contextPageRotateCw.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("rotatecw", {
+          source: this
+        });
+      });
+      contextMenuItems.contextPageRotateCcw.addEventListener("click", () => {
+        this.contextMenuOpen = false;
+        this.eventBus.dispatch("rotateccw", {
+          source: this
+        });
+      });
+    }
   }
 
   request() {
@@ -7781,7 +8378,7 @@ class PDFPresentationMode {
 
     evt.preventDefault();
     const delta = (0, _ui_utils.normalizeWheelEventDelta)(evt);
-    const currentTime = Date.now();
+    const currentTime = new Date().getTime();
     const storedTime = this.mouseScrollTimeStamp;
 
     if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) {
@@ -7874,6 +8471,7 @@ class PDFPresentationMode {
     this._showControls();
 
     this.contextMenuOpen = false;
+    this.container.setAttribute("contextmenu", "viewerContextMenu");
     window.getSelection().removeAllRanges();
   }
 
@@ -7898,6 +8496,7 @@ class PDFPresentationMode {
 
     this._resetMouseScrollState();
 
+    this.container.removeAttribute("contextmenu");
     this.contextMenuOpen = false;
   }
 
@@ -8073,449 +8672,10 @@ class PDFPresentationMode {
 
 }
 
-exports.PDFPresentationMode = PDFPresentationMode;
-
-/***/ }),
-/* 22 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.PDFScriptingManager = void 0;
-
-var _pdfjsLib = __webpack_require__(5);
-
-var _ui_utils = __webpack_require__(4);
-
-var _pdf_rendering_queue = __webpack_require__(8);
-
-class PDFScriptingManager {
-  constructor({
-    eventBus,
-    sandboxBundleSrc = null,
-    scriptingFactory = null,
-    docPropertiesLookup = null
-  }) {
-    this._pdfDocument = null;
-    this._pdfViewer = null;
-    this._closeCapability = null;
-    this._destroyCapability = null;
-    this._scripting = null;
-    this._mouseState = Object.create(null);
-    this._pageEventsReady = false;
-    this._ready = false;
-    this._eventBus = eventBus;
-    this._sandboxBundleSrc = sandboxBundleSrc;
-    this._scriptingFactory = scriptingFactory;
-    this._docPropertiesLookup = docPropertiesLookup;
-  }
-
-  setViewer(pdfViewer) {
-    this._pdfViewer = pdfViewer;
-  }
-
-  async setDocument(pdfDocument) {
-    if (this._pdfDocument) {
-      await this._destroyScripting();
-    }
-
-    this._pdfDocument = pdfDocument;
-
-    if (!pdfDocument) {
-      return;
-    }
-
-    const [objects, calculationOrder, docActions] = await Promise.all([pdfDocument.getFieldObjects(), 
pdfDocument.getCalculationOrderIds(), pdfDocument.getJSActions()]);
-
-    if (!objects && !docActions) {
-      await this._destroyScripting();
-      return;
-    }
-
-    if (pdfDocument !== this._pdfDocument) {
-      return;
-    }
-
-    this._scripting = this._createScripting();
-
-    this._internalEvents.set("updatefromsandbox", event => {
-      if (event?.source !== window) {
-        return;
-      }
-
-      this._updateFromSandbox(event.detail);
-    });
-
-    this._internalEvents.set("dispatcheventinsandbox", event => {
-      this._scripting?.dispatchEventInSandbox(event.detail);
-    });
-
-    this._internalEvents.set("pagechanging", ({
-      pageNumber,
-      previous
-    }) => {
-      if (pageNumber === previous) {
-        return;
-      }
-
-      this._dispatchPageClose(previous);
-
-      this._dispatchPageOpen(pageNumber);
-    });
-
-    this._internalEvents.set("pagerendered", ({
-      pageNumber
-    }) => {
-      if (!this._pageOpenPending.has(pageNumber)) {
-        return;
-      }
-
-      if (pageNumber !== this._pdfViewer.currentPageNumber) {
-        return;
-      }
-
-      this._dispatchPageOpen(pageNumber);
-    });
-
-    this._internalEvents.set("pagesdestroy", async event => {
-      await this._dispatchPageClose(this._pdfViewer.currentPageNumber);
-      await this._scripting?.dispatchEventInSandbox({
-        id: "doc",
-        name: "WillClose"
-      });
-      this._closeCapability?.resolve();
-    });
-
-    this._domEvents.set("mousedown", event => {
-      this._mouseState.isDown = true;
-    });
-
-    this._domEvents.set("mouseup", event => {
-      this._mouseState.isDown = false;
-    });
-
-    for (const [name, listener] of this._internalEvents) {
-      this._eventBus._on(name, listener);
-    }
-
-    for (const [name, listener] of this._domEvents) {
-      window.addEventListener(name, listener);
-    }
-
-    try {
-      const docProperties = await this._getDocProperties();
-
-      if (pdfDocument !== this._pdfDocument) {
-        return;
-      }
-
-      await this._scripting.createSandbox({
-        objects,
-        calculationOrder,
-        appInfo: {
-          platform: navigator.platform,
-          language: navigator.language
-        },
-        docInfo: { ...docProperties,
-          actions: docActions
-        }
-      });
-
-      this._eventBus.dispatch("sandboxcreated", {
-        source: this
-      });
-    } catch (error) {
-      console.error(`PDFScriptingManager.setDocument: "${error?.message}".`);
-      await this._destroyScripting();
-      return;
-    }
-
-    await this._scripting?.dispatchEventInSandbox({
-      id: "doc",
-      name: "Open"
-    });
-    await this._dispatchPageOpen(this._pdfViewer.currentPageNumber, true);
-    Promise.resolve().then(() => {
-      if (pdfDocument === this._pdfDocument) {
-        this._ready = true;
-      }
-    });
-  }
-
-  async dispatchWillSave(detail) {
-    return this._scripting?.dispatchEventInSandbox({
-      id: "doc",
-      name: "WillSave"
-    });
-  }
-
-  async dispatchDidSave(detail) {
-    return this._scripting?.dispatchEventInSandbox({
-      id: "doc",
-      name: "DidSave"
-    });
-  }
-
-  async dispatchWillPrint(detail) {
-    return this._scripting?.dispatchEventInSandbox({
-      id: "doc",
-      name: "WillPrint"
-    });
-  }
-
-  async dispatchDidPrint(detail) {
-    return this._scripting?.dispatchEventInSandbox({
-      id: "doc",
-      name: "DidPrint"
-    });
-  }
-
-  get mouseState() {
-    return this._mouseState;
-  }
-
-  get destroyPromise() {
-    return this._destroyCapability?.promise || null;
-  }
-
-  get ready() {
-    return this._ready;
-  }
-
-  get _internalEvents() {
-    return (0, _pdfjsLib.shadow)(this, "_internalEvents", new Map());
-  }
-
-  get _domEvents() {
-    return (0, _pdfjsLib.shadow)(this, "_domEvents", new Map());
-  }
-
-  get _pageOpenPending() {
-    return (0, _pdfjsLib.shadow)(this, "_pageOpenPending", new Set());
-  }
-
-  get _visitedPages() {
-    return (0, _pdfjsLib.shadow)(this, "_visitedPages", new Map());
-  }
-
-  async _updateFromSandbox(detail) {
-    const isInPresentationMode = this._pdfViewer.isInPresentationMode || 
this._pdfViewer.isChangingPresentationMode;
-    const {
-      id,
-      command,
-      value
-    } = detail;
-
-    if (!id) {
-      switch (command) {
-        case "clear":
-          console.clear();
-          break;
-
-        case "error":
-          console.error(value);
-          break;
-
-        case "layout":
-          this._pdfViewer.spreadMode = (0, _ui_utils.apiPageLayoutToSpreadMode)(value);
-          break;
-
-        case "page-num":
-          this._pdfViewer.currentPageNumber = value + 1;
-          break;
-
-        case "print":
-          await this._pdfViewer.pagesPromise;
-
-          this._eventBus.dispatch("print", {
-            source: this
-          });
-
-          break;
-
-        case "println":
-          console.log(value);
-          break;
-
-        case "zoom":
-          if (isInPresentationMode) {
-            return;
-          }
-
-          this._pdfViewer.currentScaleValue = value;
-          break;
-      }
-
-      return;
-    }
-
-    if (isInPresentationMode) {
-      if (detail.focus) {
-        return;
-      }
-    }
-
-    const element = document.getElementById(id);
-
-    if (element) {
-      element.dispatchEvent(new CustomEvent("updatefromsandbox", {
-        detail
-      }));
-    } else {
-      delete detail.id;
-      this._pdfDocument?.annotationStorage.setValue(id, detail);
-    }
-  }
-
-  async _dispatchPageOpen(pageNumber, initialize = false) {
-    const pdfDocument = this._pdfDocument,
-          visitedPages = this._visitedPages;
-
-    if (initialize) {
-      this._closeCapability = (0, _pdfjsLib.createPromiseCapability)();
-      this._pageEventsReady = true;
-    }
-
-    if (!this._pageEventsReady) {
-      return;
-    }
-
-    const pageView = this._pdfViewer.getPageView(pageNumber - 1);
-
-    if (pageView?.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) {
-      this._pageOpenPending.add(pageNumber);
-
-      return;
-    }
-
-    this._pageOpenPending.delete(pageNumber);
-
-    const actionsPromise = (async () => {
-      const actions = await (!visitedPages.has(pageNumber) ? pageView.pdfPage?.getJSActions() : null);
-
-      if (pdfDocument !== this._pdfDocument) {
-        return;
-      }
-
-      await this._scripting?.dispatchEventInSandbox({
-        id: "page",
-        name: "PageOpen",
-        pageNumber,
-        actions
-      });
-    })();
-
-    visitedPages.set(pageNumber, actionsPromise);
-  }
-
-  async _dispatchPageClose(pageNumber) {
-    const pdfDocument = this._pdfDocument,
-          visitedPages = this._visitedPages;
-
-    if (!this._pageEventsReady) {
-      return;
-    }
-
-    if (this._pageOpenPending.has(pageNumber)) {
-      return;
-    }
-
-    const actionsPromise = visitedPages.get(pageNumber);
-
-    if (!actionsPromise) {
-      return;
-    }
-
-    visitedPages.set(pageNumber, null);
-    await actionsPromise;
-
-    if (pdfDocument !== this._pdfDocument) {
-      return;
-    }
-
-    await this._scripting?.dispatchEventInSandbox({
-      id: "page",
-      name: "PageClose",
-      pageNumber
-    });
-  }
-
-  async _getDocProperties() {
-    if (this._docPropertiesLookup) {
-      return this._docPropertiesLookup(this._pdfDocument);
-    }
-
-    throw new Error("_getDocProperties: Unable to lookup properties.");
-  }
-
-  _createScripting() {
-    this._destroyCapability = (0, _pdfjsLib.createPromiseCapability)();
-
-    if (this._scripting) {
-      throw new Error("_createScripting: Scripting already exists.");
-    }
-
-    if (this._scriptingFactory) {
-      return this._scriptingFactory.createScripting({
-        sandboxBundleSrc: this._sandboxBundleSrc
-      });
-    }
-
-    throw new Error("_createScripting: Cannot create scripting.");
-  }
-
-  async _destroyScripting() {
-    if (!this._scripting) {
-      this._pdfDocument = null;
-      this._destroyCapability?.resolve();
-      return;
-    }
-
-    if (this._closeCapability) {
-      await Promise.race([this._closeCapability.promise, new Promise(resolve => {
-        setTimeout(resolve, 1000);
-      })]).catch(reason => {});
-      this._closeCapability = null;
-    }
-
-    this._pdfDocument = null;
-
-    try {
-      await this._scripting.destroySandbox();
-    } catch (ex) {}
-
-    for (const [name, listener] of this._internalEvents) {
-      this._eventBus._off(name, listener);
-    }
-
-    this._internalEvents.clear();
-
-    for (const [name, listener] of this._domEvents) {
-      window.removeEventListener(name, listener);
-    }
-
-    this._domEvents.clear();
-
-    this._pageOpenPending.clear();
-
-    this._visitedPages.clear();
-
-    this._scripting = null;
-    delete this._mouseState.isDown;
-    this._pageEventsReady = false;
-    this._ready = false;
-    this._destroyCapability?.resolve();
-  }
-
-}
-
-exports.PDFScriptingManager = PDFScriptingManager;
+exports.PDFPresentationMode = PDFPresentationMode;
 
 /***/ }),
-/* 23 */
+/* 22 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -8537,7 +8697,7 @@ class PDFSidebar {
     pdfViewer,
     pdfThumbnailViewer,
     eventBus,
-    l10n
+    l10n = _ui_utils.NullL10n
   }) {
     this.isOpen = false;
     this.active = _ui_utils.SidebarView.THUMBS;
@@ -8701,7 +8861,6 @@ class PDFSidebar {
 
     this.isOpen = true;
     this.toggleButton.classList.add("toggled");
-    this.toggleButton.setAttribute("aria-expanded", "true");
     this.outerContainer.classList.add("sidebarMoving", "sidebarOpen");
 
     if (this.active === _ui_utils.SidebarView.THUMBS) {
@@ -8722,7 +8881,6 @@ class PDFSidebar {
 
     this.isOpen = false;
     this.toggleButton.classList.remove("toggled");
-    this.toggleButton.setAttribute("aria-expanded", "false");
     this.outerContainer.classList.add("sidebarMoving");
     this.outerContainer.classList.remove("sidebarOpen");
 
@@ -8765,7 +8923,7 @@ class PDFSidebar {
     for (let pageIndex = 0; pageIndex < pagesCount; pageIndex++) {
       const pageView = pdfViewer.getPageView(pageIndex);
 
-      if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
+      if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
         const thumbnailView = pdfThumbnailViewer.getThumbnail(pageIndex);
         thumbnailView.setImage(pageView);
       }
@@ -8775,7 +8933,7 @@ class PDFSidebar {
   }
 
   _showUINotification() {
-    this.l10n.get("toggle_sidebar_notification2.title").then(msg => {
+    this.l10n.get("toggle_sidebar_notification2.title", null, "Toggle Sidebar (document contains 
outline/attachments/layers)").then(msg => {
       this.toggleButton.title = msg;
     });
 
@@ -8790,7 +8948,7 @@ class PDFSidebar {
     }
 
     if (reset) {
-      this.l10n.get("toggle_sidebar.title").then(msg => {
+      this.l10n.get("toggle_sidebar.title", null, "Toggle Sidebar").then(msg => {
         this.toggleButton.title = msg;
       });
     }
@@ -8874,8 +9032,8 @@ class PDFSidebar {
 exports.PDFSidebar = PDFSidebar;
 
 /***/ }),
-/* 24 */
-/***/ ((__unused_webpack_module, exports) => {
+/* 23 */
+/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
 
@@ -8883,12 +9041,15 @@ Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
 exports.PDFSidebarResizer = void 0;
+
+var _ui_utils = __webpack_require__(4);
+
 const SIDEBAR_WIDTH_VAR = "--sidebar-width";
 const SIDEBAR_MIN_WIDTH = 200;
 const SIDEBAR_RESIZING_CLASS = "sidebarResizing";
 
 class PDFSidebarResizer {
-  constructor(options, eventBus, l10n) {
+  constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
     this.isRTL = false;
     this.sidebarOpen = false;
     this.doc = document.documentElement;
@@ -8906,7 +9067,11 @@ class PDFSidebarResizer {
   }
 
   get outerContainerWidth() {
-    return this._outerContainerWidth || (this._outerContainerWidth = this.outerContainer.clientWidth);
+    if (!this._outerContainerWidth) {
+      this._outerContainerWidth = this.outerContainer.clientWidth;
+    }
+
+    return this._outerContainerWidth;
   }
 
   _updateWidth(width = 0) {
@@ -8964,11 +9129,11 @@ class PDFSidebarResizer {
     });
 
     this.eventBus._on("sidebarviewchanged", evt => {
-      this.sidebarOpen = !!evt?.view;
+      this.sidebarOpen = !!(evt && evt.view);
     });
 
     this.eventBus._on("resize", evt => {
-      if (evt?.source !== window) {
+      if (!evt || evt.source !== window) {
         return;
       }
 
@@ -9005,7 +9170,7 @@ class PDFSidebarResizer {
 exports.PDFSidebarResizer = PDFSidebarResizer;
 
 /***/ }),
-/* 25 */
+/* 24 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9017,7 +9182,7 @@ exports.PDFThumbnailViewer = void 0;
 
 var _ui_utils = __webpack_require__(4);
 
-var _pdf_thumbnail_view = __webpack_require__(26);
+var _pdf_thumbnail_view = __webpack_require__(25);
 
 var _pdf_rendering_queue = __webpack_require__(8);
 
@@ -9030,7 +9195,7 @@ class PDFThumbnailViewer {
     eventBus,
     linkService,
     renderingQueue,
-    l10n
+    l10n = _ui_utils.NullL10n
   }) {
     this.container = container;
     this.linkService = linkService;
@@ -9233,7 +9398,9 @@ class PDFThumbnailViewer {
     }
 
     for (let i = 0, ii = this._thumbnails.length; i < ii; i++) {
-      this._thumbnails[i].setPageLabel(this._pageLabels?.[i] ?? null);
+      const label = this._pageLabels && this._pageLabels[i];
+
+      this._thumbnails[i].setPageLabel(label);
     }
   }
 
@@ -9286,7 +9453,7 @@ class PDFThumbnailViewer {
 exports.PDFThumbnailViewer = PDFThumbnailViewer;
 
 /***/ }),
-/* 26 */
+/* 25 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9356,7 +9523,7 @@ class PDFThumbnailView {
     renderingQueue,
     checkSetImageDisabled,
     disableCanvasToImageConversion = false,
-    l10n
+    l10n = _ui_utils.NullL10n
   }) {
     this.id = id;
     this.renderingId = "thumbnail" + id;
@@ -9674,13 +9841,13 @@ class PDFThumbnailView {
   get _thumbPageTitle() {
     return this.l10n.get("thumb_page_title", {
       page: this.pageLabel ?? this.id
-    });
+    }, "Page {{page}}");
   }
 
   get _thumbPageCanvas() {
     return this.l10n.get("thumb_page_canvas", {
       page: this.pageLabel ?? this.id
-    });
+    }, "Thumbnail of Page {{page}}");
   }
 
   setPageLabel(label) {
@@ -9708,7 +9875,7 @@ class PDFThumbnailView {
 exports.PDFThumbnailView = PDFThumbnailView;
 
 /***/ }),
-/* 27 */
+/* 26 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9720,7 +9887,7 @@ exports.PDFViewer = void 0;
 
 var _ui_utils = __webpack_require__(4);
 
-var _base_viewer = __webpack_require__(28);
+var _base_viewer = __webpack_require__(27);
 
 var _pdfjsLib = __webpack_require__(5);
 
@@ -9796,7 +9963,7 @@ class PDFViewer extends _base_viewer.BaseViewer {
 exports.PDFViewer = PDFViewer;
 
 /***/ }),
-/* 28 */
+/* 27 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -9812,17 +9979,13 @@ var _ui_utils = __webpack_require__(4);
 
 var _pdf_rendering_queue = __webpack_require__(8);
 
-var _annotation_layer_builder = __webpack_require__(29);
+var _annotation_layer_builder = __webpack_require__(28);
 
-var _l10n_utils = __webpack_require__(30);
-
-var _pdf_page_view = __webpack_require__(31);
+var _pdf_page_view = __webpack_require__(29);
 
 var _pdf_link_service = __webpack_require__(19);
 
-var _text_layer_builder = __webpack_require__(32);
-
-var _xfa_layer_builder = __webpack_require__(33);
+var _text_layer_builder = __webpack_require__(30);
 
 const DEFAULT_CACHE_SIZE = 10;
 
@@ -9886,7 +10049,7 @@ class BaseViewer {
       throw new Error("Cannot initialize BaseViewer.");
     }
 
-    const viewerVersion = '2.8.335';
+    const viewerVersion = '2.7.570';
 
     if (_pdfjsLib.version !== viewerVersion) {
       throw new Error(`The API version "${_pdfjsLib.version}" does not match the Viewer version 
"${viewerVersion}".`);
@@ -9900,7 +10063,7 @@ class BaseViewer {
       throw new Error("Invalid `container` and/or `viewer` option.");
     }
 
-    if (this.container.offsetParent && getComputedStyle(this.container).position !== "absolute") {
+    if (getComputedStyle(this.container).position !== "absolute") {
       throw new Error("The `container` must be absolutely positioned.");
     }
 
@@ -9908,18 +10071,18 @@ class BaseViewer {
     this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService();
     this.downloadManager = options.downloadManager || null;
     this.findController = options.findController || null;
-    this._scriptingManager = options.scriptingManager || null;
     this.removePageBorders = options.removePageBorders || false;
     this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : 
_ui_utils.TextLayerMode.ENABLE;
     this.imageResourcesPath = options.imageResourcesPath || "";
-    this.renderInteractiveForms = options.renderInteractiveForms !== false;
+    this.renderInteractiveForms = typeof options.renderInteractiveForms === "boolean" ? 
options.renderInteractiveForms : true;
     this.enablePrintAutoRotate = options.enablePrintAutoRotate || false;
     this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
     this.enableWebGL = options.enableWebGL || false;
     this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.maxCanvasPixels = options.maxCanvasPixels;
-    this.l10n = options.l10n || _l10n_utils.NullL10n;
-    this.enableScripting = options.enableScripting === true && !!this._scriptingManager;
+    this.l10n = options.l10n || _ui_utils.NullL10n;
+    this.enableScripting = options.enableScripting || false;
+    this._mouseState = options.mouseState || null;
     this.defaultRenderingQueue = !options.renderingQueue;
 
     if (this.defaultRenderingQueue) {
@@ -9960,7 +10123,7 @@ class BaseViewer {
     }
 
     return this._pages.every(function (pageView) {
-      return pageView?.pdfPage;
+      return pageView && pageView.pdfPage;
     });
   }
 
@@ -10000,7 +10163,7 @@ class BaseViewer {
     this.eventBus.dispatch("pagechanging", {
       source: this,
       pageNumber: val,
-      pageLabel: this._pageLabels?.[val - 1] ?? null,
+      pageLabel: this._pageLabels && this._pageLabels[val - 1],
       previous
     });
 
@@ -10012,7 +10175,7 @@ class BaseViewer {
   }
 
   get currentPageLabel() {
-    return this._pageLabels?.[this._currentPageNumber - 1] ?? null;
+    return this._pageLabels && this._pageLabels[this._currentPageNumber - 1];
   }
 
   set currentPageLabel(val) {
@@ -10076,12 +10239,6 @@ class BaseViewer {
       return;
     }
 
-    rotation %= 360;
-
-    if (rotation < 0) {
-      rotation += 360;
-    }
-
     if (this._pagesRotation === rotation) {
       return;
     }
@@ -10146,10 +10303,6 @@ class BaseViewer {
       if (this.findController) {
         this.findController.setDocument(null);
       }
-
-      if (this._scriptingManager) {
-        this._scriptingManager.setDocument(null);
-      }
     }
 
     this.pdfDocument = pdfDocument;
@@ -10158,7 +10311,6 @@ class BaseViewer {
       return;
     }
 
-    const isPureXfa = pdfDocument.isPureXfa;
     const pagesCount = pdfDocument.numPages;
     const firstPagePromise = pdfDocument.getPage(1);
     const optionalContentConfigPromise = pdfDocument.getOptionalContentConfig();
@@ -10205,7 +10357,6 @@ class BaseViewer {
         scale: scale * _ui_utils.CSS_UNITS
       });
       const textLayerFactory = this.textLayerMode !== _ui_utils.TextLayerMode.DISABLE ? this : null;
-      const xfaLayerFactory = isPureXfa ? this : null;
 
       for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
         const pageView = new _pdf_page_view.PDFPageView({
@@ -10219,7 +10370,6 @@ class BaseViewer {
           textLayerFactory,
           textLayerMode: this.textLayerMode,
           annotationLayerFactory: this,
-          xfaLayerFactory,
           imageResourcesPath: this.imageResourcesPath,
           renderInteractiveForms: this.renderInteractiveForms,
           renderer: this.renderer,
@@ -10249,10 +10399,6 @@ class BaseViewer {
           this.findController.setDocument(pdfDocument);
         }
 
-        if (this.enableScripting) {
-          this._scriptingManager.setDocument(pdfDocument);
-        }
-
         if (pdfDocument.loadingParams.disableAutoFetch || pagesCount > 7500) {
           this._pagesCapability.resolve();
 
@@ -10317,7 +10463,9 @@ class BaseViewer {
     }
 
     for (let i = 0, ii = this._pages.length; i < ii; i++) {
-      this._pages[i].setPageLabel(this._pageLabels?.[i] ?? null);
+      const pageView = this._pages[i];
+      const label = this._pageLabels && this._pageLabels[i];
+      pageView.setPageLabel(label);
     }
   }
 
@@ -10350,6 +10498,8 @@ class BaseViewer {
       this._onAfterDraw = null;
     }
 
+    this._resetScriptingEvents();
+
     this.viewer.textContent = "";
 
     this._updateScrollMode();
@@ -10422,7 +10572,7 @@ class BaseViewer {
   }
 
   get _pageWidthScaleFactor() {
-    if (this._spreadMode !== _ui_utils.SpreadMode.NONE && this._scrollMode !== 
_ui_utils.ScrollMode.HORIZONTAL && !this.isInPresentationMode) {
+    if (this.spreadMode !== _ui_utils.SpreadMode.NONE && this.scrollMode !== _ui_utils.ScrollMode.HORIZONTAL 
&& !this.isInPresentationMode) {
       return 2;
     }
 
@@ -10855,7 +11005,7 @@ class BaseViewer {
     });
   }
 
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = false, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = false, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
     return new _annotation_layer_builder.AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
@@ -10867,14 +11017,7 @@ class BaseViewer {
       l10n,
       enableScripting,
       hasJSActionsPromise: hasJSActionsPromise || this.pdfDocument?.hasJSActions(),
-      mouseState: mouseState || this._scriptingManager?.mouseState
-    });
-  }
-
-  createXfaLayerBuilder(pageDiv, pdfPage) {
-    return new _xfa_layer_builder.XfaLayerBuilder({
-      pageDiv,
-      pdfPage
+      mouseState: mouseState || this._mouseState
     });
   }
 
@@ -10893,23 +11036,30 @@ class BaseViewer {
   }
 
   getPagesOverview() {
-    return this._pages.map(pageView => {
+    const pagesOverview = this._pages.map(function (pageView) {
       const viewport = pageView.pdfPage.getViewport({
         scale: 1
       });
+      return {
+        width: viewport.width,
+        height: viewport.height,
+        rotation: viewport.rotation
+      };
+    });
 
-      if (!this.enablePrintAutoRotate || (0, _ui_utils.isPortraitOrientation)(viewport)) {
-        return {
-          width: viewport.width,
-          height: viewport.height,
-          rotation: viewport.rotation
-        };
+    if (!this.enablePrintAutoRotate) {
+      return pagesOverview;
+    }
+
+    return pagesOverview.map(function (size) {
+      if ((0, _ui_utils.isPortraitOrientation)(size)) {
+        return size;
       }
 
       return {
-        width: viewport.height,
-        height: viewport.width,
-        rotation: (viewport.rotation - 90) % 360
+        width: size.height,
+        height: size.width,
+        rotation: (size.rotation + 90) % 360
       };
     });
   }
@@ -11216,12 +11366,108 @@ class BaseViewer {
     return true;
   }
 
+  initializeScriptingEvents() {
+    if (!this.enableScripting || this._pageOpenPendingSet) {
+      return;
+    }
+
+    const eventBus = this.eventBus,
+          pageOpenPendingSet = this._pageOpenPendingSet = new Set(),
+          scriptingEvents = this._scriptingEvents || (this._scriptingEvents = Object.create(null));
+
+    const dispatchPageClose = pageNumber => {
+      if (pageOpenPendingSet.has(pageNumber)) {
+        return;
+      }
+
+      eventBus.dispatch("pageclose", {
+        source: this,
+        pageNumber
+      });
+    };
+
+    const dispatchPageOpen = pageNumber => {
+      const pageView = this._pages[pageNumber - 1];
+
+      if (pageView?.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) {
+        pageOpenPendingSet.delete(pageNumber);
+        eventBus.dispatch("pageopen", {
+          source: this,
+          pageNumber,
+          actionsPromise: pageView.pdfPage?.getJSActions()
+        });
+      } else {
+        pageOpenPendingSet.add(pageNumber);
+      }
+    };
+
+    scriptingEvents.onPageChanging = ({
+      pageNumber,
+      previous
+    }) => {
+      if (pageNumber === previous) {
+        return;
+      }
+
+      dispatchPageClose(previous);
+      dispatchPageOpen(pageNumber);
+    };
+
+    eventBus._on("pagechanging", scriptingEvents.onPageChanging);
+
+    scriptingEvents.onPageRendered = ({
+      pageNumber
+    }) => {
+      if (!pageOpenPendingSet.has(pageNumber)) {
+        return;
+      }
+
+      if (pageNumber !== this._currentPageNumber) {
+        return;
+      }
+
+      dispatchPageOpen(pageNumber);
+    };
+
+    eventBus._on("pagerendered", scriptingEvents.onPageRendered);
+
+    scriptingEvents.onPagesDestroy = () => {
+      dispatchPageClose(this._currentPageNumber);
+    };
+
+    eventBus._on("pagesdestroy", scriptingEvents.onPagesDestroy);
+
+    dispatchPageOpen(this._currentPageNumber);
+  }
+
+  _resetScriptingEvents() {
+    if (!this.enableScripting || !this._pageOpenPendingSet) {
+      return;
+    }
+
+    const eventBus = this.eventBus,
+          scriptingEvents = this._scriptingEvents;
+
+    eventBus._off("pagechanging", scriptingEvents.onPageChanging);
+
+    scriptingEvents.onPageChanging = null;
+
+    eventBus._off("pagerendered", scriptingEvents.onPageRendered);
+
+    scriptingEvents.onPageRendered = null;
+
+    eventBus._off("pagesdestroy", scriptingEvents.onPagesDestroy);
+
+    scriptingEvents.onPagesDestroy = null;
+    this._pageOpenPendingSet = null;
+  }
+
 }
 
 exports.BaseViewer = BaseViewer;
 
 /***/ }),
-/* 29 */
+/* 28 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -11233,7 +11479,7 @@ exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-var _l10n_utils = __webpack_require__(30);
+var _ui_utils = __webpack_require__(4);
 
 var _pdf_link_service = __webpack_require__(19);
 
@@ -11246,7 +11492,7 @@ class AnnotationLayerBuilder {
     annotationStorage = null,
     imageResourcesPath = "",
     renderInteractiveForms = true,
-    l10n = _l10n_utils.NullL10n,
+    l10n = _ui_utils.NullL10n,
     enableScripting = false,
     hasJSActionsPromise = null,
     mouseState = null
@@ -11319,7 +11565,7 @@ class AnnotationLayerBuilder {
       return;
     }
 
-    this.div.hidden = true;
+    this.div.setAttribute("hidden", "true");
   }
 
 }
@@ -11327,7 +11573,7 @@ class AnnotationLayerBuilder {
 exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
 
 class DefaultAnnotationLayerFactory {
-  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = true, l10n = _l10n_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
+  createAnnotationLayerBuilder(pageDiv, pdfPage, annotationStorage = null, imageResourcesPath = "", 
renderInteractiveForms = true, l10n = _ui_utils.NullL10n, enableScripting = false, hasJSActionsPromise = 
null, mouseState = null) {
     return new AnnotationLayerBuilder({
       pageDiv,
       pdfPage,
@@ -11347,113 +11593,7 @@ class DefaultAnnotationLayerFactory {
 exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
 
 /***/ }),
-/* 30 */
-/***/ ((__unused_webpack_module, exports) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.getL10nFallback = getL10nFallback;
-exports.NullL10n = void 0;
-const DEFAULT_L10N_STRINGS = {
-  of_pages: "of {{pagesCount}}",
-  page_of_pages: "({{pageNumber}} of {{pagesCount}})",
-  document_properties_kb: "{{size_kb}} KB ({{size_b}} bytes)",
-  document_properties_mb: "{{size_mb}} MB ({{size_b}} bytes)",
-  document_properties_date_string: "{{date}}, {{time}}",
-  document_properties_page_size_unit_inches: "in",
-  document_properties_page_size_unit_millimeters: "mm",
-  document_properties_page_size_orientation_portrait: "portrait",
-  document_properties_page_size_orientation_landscape: "landscape",
-  document_properties_page_size_name_a3: "A3",
-  document_properties_page_size_name_a4: "A4",
-  document_properties_page_size_name_letter: "Letter",
-  document_properties_page_size_name_legal: "Legal",
-  document_properties_page_size_dimension_string: "{{width}} × {{height}} {{unit}} ({{orientation}})",
-  document_properties_page_size_dimension_name_string: "{{width}} × {{height}} {{unit}} ({{name}}, 
{{orientation}})",
-  document_properties_linearized_yes: "Yes",
-  document_properties_linearized_no: "No",
-  print_progress_percent: "{{progress}}%",
-  "toggle_sidebar.title": "Toggle Sidebar",
-  "toggle_sidebar_notification2.title": "Toggle Sidebar (document contains outline/attachments/layers)",
-  additional_layers: "Additional Layers",
-  page_landmark: "Page {{page}}",
-  thumb_page_title: "Page {{page}}",
-  thumb_page_canvas: "Thumbnail of Page {{page}}",
-  find_reached_top: "Reached top of document, continued from bottom",
-  find_reached_bottom: "Reached end of document, continued from top",
-  "find_match_count[one]": "{{current}} of {{total}} match",
-  "find_match_count[other]": "{{current}} of {{total}} matches",
-  "find_match_count_limit[one]": "More than {{limit}} match",
-  "find_match_count_limit[other]": "More than {{limit}} matches",
-  find_not_found: "Phrase not found",
-  error_version_info: "PDF.js v{{version}} (build: {{build}})",
-  error_message: "Message: {{message}}",
-  error_stack: "Stack: {{stack}}",
-  error_file: "File: {{file}}",
-  error_line: "Line: {{line}}",
-  rendering_error: "An error occurred while rendering the page.",
-  page_scale_width: "Page Width",
-  page_scale_fit: "Page Fit",
-  page_scale_auto: "Automatic Zoom",
-  page_scale_actual: "Actual Size",
-  page_scale_percent: "{{scale}}%",
-  loading: "Loading…",
-  loading_error: "An error occurred while loading the PDF.",
-  invalid_file_error: "Invalid or corrupted PDF file.",
-  missing_file_error: "Missing PDF file.",
-  unexpected_response_error: "Unexpected server response.",
-  printing_not_supported: "Warning: Printing is not fully supported by this browser.",
-  printing_not_ready: "Warning: The PDF is not fully loaded for printing.",
-  web_fonts_disabled: "Web fonts are disabled: unable to use embedded PDF fonts."
-};
-
-function getL10nFallback(key, args) {
-  switch (key) {
-    case "find_match_count":
-      key = `find_match_count[${args.total === 1 ? "one" : "other"}]`;
-      break;
-
-    case "find_match_count_limit":
-      key = `find_match_count_limit[${args.limit === 1 ? "one" : "other"}]`;
-      break;
-  }
-
-  return DEFAULT_L10N_STRINGS[key] || "";
-}
-
-function formatL10nValue(text, args) {
-  if (!args) {
-    return text;
-  }
-
-  return text.replace(/\{\{\s*(\w+)\s*\}\}/g, (all, name) => {
-    return name in args ? args[name] : "{{" + name + "}}";
-  });
-}
-
-const NullL10n = {
-  async getLanguage() {
-    return "en-us";
-  },
-
-  async getDirection() {
-    return "ltr";
-  },
-
-  async get(key, args = null, fallback = getL10nFallback(key, args)) {
-    return formatL10nValue(fallback, args);
-  },
-
-  async translate(element) {}
-
-};
-exports.NullL10n = NullL10n;
-
-/***/ }),
-/* 31 */
+/* 29 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -11467,8 +11607,6 @@ var _ui_utils = __webpack_require__(4);
 
 var _pdfjsLib = __webpack_require__(5);
 
-var _l10n_utils = __webpack_require__(30);
-
 var _pdf_rendering_queue = __webpack_require__(8);
 
 var _viewer_compatibility = __webpack_require__(2);
@@ -11491,18 +11629,17 @@ class PDFPageView {
     this.hasRestrictedScaling = false;
     this.textLayerMode = Number.isInteger(options.textLayerMode) ? options.textLayerMode : 
_ui_utils.TextLayerMode.ENABLE;
     this.imageResourcesPath = options.imageResourcesPath || "";
-    this.renderInteractiveForms = options.renderInteractiveForms !== false;
+    this.renderInteractiveForms = typeof options.renderInteractiveForms === "boolean" ? 
options.renderInteractiveForms : true;
     this.useOnlyCssZoom = options.useOnlyCssZoom || false;
     this.maxCanvasPixels = options.maxCanvasPixels || MAX_CANVAS_PIXELS;
     this.eventBus = options.eventBus;
     this.renderingQueue = options.renderingQueue;
     this.textLayerFactory = options.textLayerFactory;
     this.annotationLayerFactory = options.annotationLayerFactory;
-    this.xfaLayerFactory = options.xfaLayerFactory;
     this.renderer = options.renderer || _ui_utils.RendererType.CANVAS;
     this.enableWebGL = options.enableWebGL || false;
-    this.l10n = options.l10n || _l10n_utils.NullL10n;
-    this.enableScripting = options.enableScripting === true;
+    this.l10n = options.l10n || _ui_utils.NullL10n;
+    this.enableScripting = options.enableScripting || false;
     this.paintTask = null;
     this.paintedViewportMap = new WeakMap();
     this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL;
@@ -11511,18 +11648,11 @@ class PDFPageView {
     this.annotationLayer = null;
     this.textLayer = null;
     this.zoomLayer = null;
-    this.xfaLayer = null;
     const 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);
-    div.setAttribute("role", "region");
-    this.l10n.get("page_landmark", {
-      page: this.id
-    }).then(msg => {
-      div.setAttribute("aria-label", msg);
-    });
     this.div = div;
     container.appendChild(div);
   }
@@ -11562,22 +11692,6 @@ class PDFPageView {
     }
   }
 
-  async _renderXfaLayer() {
-    let error = null;
-
-    try {
-      await this.xfaLayer.render(this.viewport, "display");
-    } catch (ex) {
-      error = ex;
-    } finally {
-      this.eventBus.dispatch("xfalayerrendered", {
-        source: this,
-        pageNumber: this.id,
-        error
-      });
-    }
-  }
-
   _resetZoomLayer(removeFromDOM = false) {
     if (!this.zoomLayer) {
       return;
@@ -11603,13 +11717,12 @@ class PDFPageView {
     div.style.height = Math.floor(this.viewport.height) + "px";
     const childNodes = div.childNodes;
     const currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null;
-    const currentAnnotationNode = keepAnnotations && this.annotationLayer?.div || null;
-    const currentXfaLayerNode = this.xfaLayer?.div || null;
+    const currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || 
null;
 
     for (let i = childNodes.length - 1; i >= 0; i--) {
       const node = childNodes[i];
 
-      if (currentZoomLayerNode === node || currentAnnotationNode === node || currentXfaLayerNode === node) {
+      if (currentZoomLayerNode === node || currentAnnotationNode === node) {
         continue;
       }
 
@@ -11643,10 +11756,6 @@ class PDFPageView {
 
     this.loadingIconDiv = document.createElement("div");
     this.loadingIconDiv.className = "loadingIcon";
-    this.loadingIconDiv.setAttribute("role", "img");
-    this.l10n.get("loading").then(msg => {
-      this.loadingIconDiv?.setAttribute("aria-label", msg);
-    });
     div.appendChild(this.loadingIconDiv);
   }
 
@@ -11702,7 +11811,7 @@ class PDFPageView {
         return;
       }
 
-      if (!this.zoomLayer && !this.canvas.hidden) {
+      if (!this.zoomLayer && !this.canvas.hasAttribute("hidden")) {
         this.zoomLayer = this.canvas.parentNode;
         this.zoomLayer.style.position = "absolute";
       }
@@ -11797,10 +11906,6 @@ class PDFPageView {
     if (redrawAnnotations && this.annotationLayer) {
       this._renderAnnotationLayer();
     }
-
-    if (this.xfaLayer) {
-      this._renderXfaLayer();
-    }
   }
 
   get width() {
@@ -11843,7 +11948,7 @@ class PDFPageView {
     canvasWrapper.style.height = div.style.height;
     canvasWrapper.classList.add("canvasWrapper");
 
-    if (this.annotationLayer?.div) {
+    if (this.annotationLayer && this.annotationLayer.div) {
       div.insertBefore(canvasWrapper, this.annotationLayer.div);
     } else {
       div.appendChild(canvasWrapper);
@@ -11857,7 +11962,7 @@ class PDFPageView {
       textLayerDiv.style.width = canvasWrapper.style.width;
       textLayerDiv.style.height = canvasWrapper.style.height;
 
-      if (this.annotationLayer?.div) {
+      if (this.annotationLayer && this.annotationLayer.div) {
         div.insertBefore(textLayerDiv, this.annotationLayer.div);
       } else {
         div.appendChild(textLayerDiv);
@@ -11944,14 +12049,6 @@ class PDFPageView {
       this._renderAnnotationLayer();
     }
 
-    if (this.xfaLayerFactory) {
-      if (!this.xfaLayer) {
-        this.xfaLayer = this.xfaLayerFactory.createXfaLayerBuilder(div, pdfPage);
-      }
-
-      this._renderXfaLayer();
-    }
-
     div.setAttribute("data-loaded", true);
     this.eventBus.dispatch("pagerender", {
       source: this,
@@ -11976,12 +12073,17 @@ class PDFPageView {
     };
     const viewport = this.viewport;
     const canvas = document.createElement("canvas");
-    canvas.hidden = true;
+    this.l10n.get("page_canvas", {
+      page: this.id
+    }, "Page {{page}}").then(msg => {
+      canvas.setAttribute("aria-label", msg);
+    });
+    canvas.setAttribute("hidden", "hidden");
     let isCanvasHidden = true;
 
     const showCanvas = function () {
       if (isCanvasHidden) {
-        canvas.hidden = false;
+        canvas.removeAttribute("hidden");
         isCanvasHidden = false;
       }
     };
@@ -12071,7 +12173,7 @@ class PDFPageView {
     });
     const promise = pdfPage.getOperatorList().then(opList => {
       ensureNotCancelled();
-      const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs, 
_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL);
+      const svgGfx = new _pdfjsLib.SVGGraphics(pdfPage.commonObjs, pdfPage.objs);
       return svgGfx.getSVG(opList, actualSizeViewport).then(svg => {
         ensureNotCancelled();
         this.svg = svg;
@@ -12111,7 +12213,7 @@ class PDFPageView {
 exports.PDFPageView = PDFPageView;
 
 /***/ }),
-/* 32 */
+/* 30 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -12401,7 +12503,7 @@ class TextLayerBuilder {
       clearedUntilDivIdx = match.end.divIdx + 1;
     }
 
-    if (!findController?.highlightMatches) {
+    if (!findController || !findController.highlightMatches) {
       return;
     }
 
@@ -12462,111 +12564,32 @@ class TextLayerBuilder {
         return;
       }
 
-      end.style.top = "";
-      end.classList.remove("active");
-    });
-  }
-
-}
-
-exports.TextLayerBuilder = TextLayerBuilder;
-
-class DefaultTextLayerFactory {
-  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) {
-    return new TextLayerBuilder({
-      textLayerDiv,
-      pageIndex,
-      viewport,
-      enhanceTextSelection,
-      eventBus
-    });
-  }
-
-}
-
-exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
-
-/***/ }),
-/* 33 */
-/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
-
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-exports.XfaLayerBuilder = exports.DefaultXfaLayerFactory = void 0;
-
-var _pdfjsLib = __webpack_require__(5);
-
-class XfaLayerBuilder {
-  constructor({
-    pageDiv,
-    pdfPage
-  }) {
-    this.pageDiv = pageDiv;
-    this.pdfPage = pdfPage;
-    this.div = null;
-    this._cancelled = false;
-  }
-
-  render(viewport, intent = "display") {
-    return this.pdfPage.getXfa().then(xfa => {
-      if (this._cancelled) {
-        return;
-      }
-
-      const parameters = {
-        viewport: viewport.clone({
-          dontFlip: true
-        }),
-        div: this.div,
-        xfa,
-        page: this.pdfPage
-      };
-
-      if (this.div) {
-        _pdfjsLib.XfaLayer.update(parameters);
-      } else {
-        this.div = document.createElement("div");
-        this.pageDiv.appendChild(this.div);
-        parameters.div = this.div;
-
-        _pdfjsLib.XfaLayer.render(parameters);
-      }
-    });
-  }
-
-  cancel() {
-    this._cancelled = true;
-  }
-
-  hide() {
-    if (!this.div) {
-      return;
-    }
-
-    this.div.hidden = true;
+      end.style.top = "";
+      end.classList.remove("active");
+    });
   }
 
 }
 
-exports.XfaLayerBuilder = XfaLayerBuilder;
+exports.TextLayerBuilder = TextLayerBuilder;
 
-class DefaultXfaLayerFactory {
-  createXfaLayerBuilder(pageDiv, pdfPage) {
-    return new XfaLayerBuilder({
-      pageDiv,
-      pdfPage
+class DefaultTextLayerFactory {
+  createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection = false, eventBus) {
+    return new TextLayerBuilder({
+      textLayerDiv,
+      pageIndex,
+      viewport,
+      enhanceTextSelection,
+      eventBus
     });
   }
 
 }
 
-exports.DefaultXfaLayerFactory = DefaultXfaLayerFactory;
+exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
 
 /***/ }),
-/* 34 */
+/* 31 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -12580,7 +12603,7 @@ var _ui_utils = __webpack_require__(4);
 
 var _pdf_cursor_tools = __webpack_require__(6);
 
-var _pdf_single_page_viewer = __webpack_require__(35);
+var _pdf_single_page_viewer = __webpack_require__(32);
 
 class SecondaryToolbar {
   constructor(options, mainContainer, eventBus) {
@@ -12842,7 +12865,6 @@ class SecondaryToolbar {
     this._setMaxHeight();
 
     this.toggleButton.classList.add("toggled");
-    this.toggleButton.setAttribute("aria-expanded", "true");
     this.toolbar.classList.remove("hidden");
   }
 
@@ -12854,7 +12876,6 @@ class SecondaryToolbar {
     this.opened = false;
     this.toolbar.classList.add("hidden");
     this.toggleButton.classList.remove("toggled");
-    this.toggleButton.setAttribute("aria-expanded", "false");
   }
 
   toggle() {
@@ -12885,7 +12906,7 @@ class SecondaryToolbar {
 exports.SecondaryToolbar = SecondaryToolbar;
 
 /***/ }),
-/* 35 */
+/* 32 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -12895,7 +12916,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFSinglePageViewer = void 0;
 
-var _base_viewer = __webpack_require__(28);
+var _base_viewer = __webpack_require__(27);
 
 var _pdfjsLib = __webpack_require__(5);
 
@@ -13014,7 +13035,7 @@ class PDFSinglePageViewer extends _base_viewer.BaseViewer {
 exports.PDFSinglePageViewer = PDFSinglePageViewer;
 
 /***/ }),
-/* 36 */
+/* 33 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -13031,7 +13052,7 @@ const SCALE_SELECT_CONTAINER_WIDTH = 140;
 const SCALE_SELECT_WIDTH = 162;
 
 class Toolbar {
-  constructor(options, eventBus, l10n) {
+  constructor(options, eventBus, l10n = _ui_utils.NullL10n) {
     this.toolbar = options.container;
     this.eventBus = eventBus;
     this.l10n = l10n;
@@ -13184,7 +13205,7 @@ class Toolbar {
         items.pageNumber.type = "number";
         this.l10n.get("of_pages", {
           pagesCount
-        }).then(msg => {
+        }, "of {{pagesCount}}").then(msg => {
           items.numPages.textContent = msg;
         });
       }
@@ -13197,7 +13218,7 @@ class Toolbar {
       this.l10n.get("page_of_pages", {
         pageNumber,
         pagesCount
-      }).then(msg => {
+      }, "({{pageNumber}} of {{pagesCount}})").then(msg => {
         items.numPages.textContent = msg;
       });
     } else {
@@ -13208,9 +13229,10 @@ class Toolbar {
     items.next.disabled = pageNumber >= pagesCount;
     items.zoomOut.disabled = pageScale <= _ui_utils.MIN_SCALE;
     items.zoomIn.disabled = pageScale >= _ui_utils.MAX_SCALE;
+    const customScale = Math.round(pageScale * 10000) / 100;
     this.l10n.get("page_scale_percent", {
-      scale: Math.round(pageScale * 10000) / 100
-    }).then(msg => {
+      scale: customScale
+    }, "{{scale}}%").then(msg => {
       let predefinedValueFound = false;
 
       for (const option of items.scaleSelect.options) {
@@ -13240,7 +13262,7 @@ class Toolbar {
       items,
       l10n
     } = this;
-    const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto"), l10n.get("page_scale_actual"), 
l10n.get("page_scale_fit"), l10n.get("page_scale_width")]);
+    const predefinedValuesPromise = Promise.all([l10n.get("page_scale_auto", null, "Automatic Zoom"), 
l10n.get("page_scale_actual", null, "Actual Size"), l10n.get("page_scale_fit", null, "Page Fit"), 
l10n.get("page_scale_width", null, "Page Width")]);
     let canvas = document.createElement("canvas");
     canvas.mozOpaque = true;
     let ctx = canvas.getContext("2d", {
@@ -13282,7 +13304,7 @@ class Toolbar {
 exports.Toolbar = Toolbar;
 
 /***/ }),
-/* 37 */
+/* 34 */
 /***/ ((__unused_webpack_module, exports) => {
 
 
@@ -13377,7 +13399,7 @@ class ViewHistory {
 exports.ViewHistory = ViewHistory;
 
 /***/ }),
-/* 38 */
+/* 35 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -13389,13 +13411,13 @@ exports.GenericCom = void 0;
 
 var _app = __webpack_require__(3);
 
-var _preferences = __webpack_require__(39);
+var _preferences = __webpack_require__(36);
 
-var _download_manager = __webpack_require__(40);
+var _download_manager = __webpack_require__(37);
 
-var _genericl10n = __webpack_require__(41);
+var _genericl10n = __webpack_require__(38);
 
-var _generic_scripting = __webpack_require__(43);
+var _generic_scripting = __webpack_require__(40);
 
 ;
 const GenericCom = {};
@@ -13438,7 +13460,7 @@ class GenericExternalServices extends _app.DefaultExternalServices {
 _app.PDFViewerApplication.externalServices = GenericExternalServices;
 
 /***/ }),
-/* 39 */
+/* 36 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -13462,8 +13484,8 @@ class BasePreferences {
         "defaultZoomValue": "",
         "disablePageLabels": false,
         "enablePermissions": false,
-        "enablePrintAutoRotate": true,
-        "enableScripting": true,
+        "enablePrintAutoRotate": false,
+        "enableScripting": false,
         "enableWebGL": false,
         "externalLinkTarget": 0,
         "historyUpdateUrl": false,
@@ -13487,14 +13509,21 @@ class BasePreferences {
       enumerable: true,
       configurable: false
     });
-    this.prefs = Object.create(null);
+    this.prefs = Object.assign(Object.create(null), this.defaults);
     this._initializedPromise = this._readFromStorage(this.defaults).then(prefs => {
-      for (const name in this.defaults) {
-        const prefValue = prefs?.[name];
+      if (!prefs) {
+        return;
+      }
+
+      for (const name in prefs) {
+        const defaultValue = this.defaults[name],
+              prefValue = prefs[name];
 
-        if (typeof prefValue === typeof this.defaults[name]) {
-          this.prefs[name] = prefValue;
+        if (defaultValue === undefined || typeof prefValue !== typeof defaultValue) {
+          continue;
         }
+
+        this.prefs[name] = prefValue;
       }
     });
   }
@@ -13509,7 +13538,7 @@ class BasePreferences {
 
   async reset() {
     await this._initializedPromise;
-    this.prefs = Object.create(null);
+    this.prefs = Object.assign(Object.create(null), this.defaults);
     return this._writeToStorage(this.defaults);
   }
 
@@ -13530,7 +13559,7 @@ class BasePreferences {
       if (valueType === "number" && defaultType === "string") {
         value = value.toString();
       } else {
-        throw new Error(`Set preference: "${value}" is a ${valueType}, expected a ${defaultType}.`);
+        throw new Error(`Set preference: "${value}" is a ${valueType}, ` + `expected a ${defaultType}.`);
       }
     } else {
       if (valueType === "number" && !Number.isInteger(value)) {
@@ -13544,26 +13573,24 @@ class BasePreferences {
 
   async get(name) {
     await this._initializedPromise;
-    const defaultValue = this.defaults[name],
-          prefValue = this.prefs[name];
+    const defaultValue = this.defaults[name];
 
     if (defaultValue === undefined) {
       throw new Error(`Get preference: "${name}" is undefined.`);
+    } else {
+      const prefValue = this.prefs[name];
+
+      if (prefValue !== undefined) {
+        return prefValue;
+      }
     }
 
-    return prefValue !== undefined ? prefValue : defaultValue;
+    return defaultValue;
   }
 
   async getAll() {
     await this._initializedPromise;
-    const obj = Object.create(null);
-
-    for (const name in this.defaults) {
-      const prefValue = this.prefs[name];
-      obj[name] = prefValue !== undefined ? prefValue : this.defaults[name];
-    }
-
-    return obj;
+    return Object.assign(Object.create(null), this.defaults, this.prefs);
   }
 
 }
@@ -13571,7 +13598,7 @@ class BasePreferences {
 exports.BasePreferences = BasePreferences;
 
 /***/ }),
-/* 40 */
+/* 37 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -13607,10 +13634,6 @@ function download(blobUrl, filename) {
 }
 
 class DownloadManager {
-  constructor() {
-    this._openBlobUrls = new WeakMap();
-  }
-
   downloadUrl(url, filename) {
     if (!(0, _pdfjsLib.createValidAbsoluteUrl)(url, "http://example.com";)) {
       return;
@@ -13624,39 +13647,6 @@ class DownloadManager {
     download(blobUrl, filename);
   }
 
-  openOrDownloadData(element, data, filename) {
-    const isPdfData = (0, _pdfjsLib.isPdfFile)(filename);
-    const contentType = isPdfData ? "application/pdf" : "";
-
-    if (isPdfData && !_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
-      let blobUrl = this._openBlobUrls.get(element);
-
-      if (!blobUrl) {
-        blobUrl = URL.createObjectURL(new Blob([data], {
-          type: contentType
-        }));
-
-        this._openBlobUrls.set(element, blobUrl);
-      }
-
-      let viewerUrl;
-      viewerUrl = "?file=" + encodeURIComponent(blobUrl + "#" + filename);
-
-      try {
-        window.open(viewerUrl);
-        return true;
-      } catch (ex) {
-        console.error(`openOrDownloadData: ${ex}`);
-        URL.revokeObjectURL(blobUrl);
-
-        this._openBlobUrls.delete(element);
-      }
-    }
-
-    this.downloadData(data, filename, contentType);
-    return false;
-  }
-
   download(blob, url, filename, sourceEventType = "download") {
     if (_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
       this.downloadUrl(url, filename);
@@ -13672,7 +13662,7 @@ class DownloadManager {
 exports.DownloadManager = DownloadManager;
 
 /***/ }),
-/* 41 */
+/* 38 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -13682,9 +13672,7 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.GenericL10n = void 0;
 
-__webpack_require__(42);
-
-var _l10n_utils = __webpack_require__(30);
+__webpack_require__(39);
 
 const webL10n = document.webL10n;
 
@@ -13708,9 +13696,9 @@ class GenericL10n {
     return l10n.getDirection();
   }
 
-  async get(key, args = null, fallback = (0, _l10n_utils.getL10nFallback)(key, args)) {
+  async get(property, args, fallback) {
     const l10n = await this._ready;
-    return l10n.get(key, args, fallback);
+    return l10n.get(property, args, fallback);
   }
 
   async translate(element) {
@@ -13723,7 +13711,7 @@ class GenericL10n {
 exports.GenericL10n = GenericL10n;
 
 /***/ }),
-/* 42 */
+/* 39 */
 /***/ (() => {
 
 
@@ -14545,7 +14533,7 @@ document.webL10n = function (window, document, undefined) {
 }(window, document);
 
 /***/ }),
-/* 43 */
+/* 40 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -14553,39 +14541,10 @@ document.webL10n = function (window, document, undefined) {
 Object.defineProperty(exports, "__esModule", ({
   value: true
 }));
-exports.docPropertiesLookup = docPropertiesLookup;
 exports.GenericScripting = void 0;
 
 var _pdfjsLib = __webpack_require__(5);
 
-async function docPropertiesLookup(pdfDocument) {
-  const url = "",
-        baseUrl = url.split("#")[0];
-  let {
-    info,
-    metadata,
-    contentDispositionFilename,
-    contentLength
-  } = await pdfDocument.getMetadata();
-
-  if (!contentLength) {
-    const {
-      length
-    } = await pdfDocument.getDownloadInfo();
-    contentLength = length;
-  }
-
-  return { ...info,
-    baseURL: baseUrl,
-    filesize: contentLength,
-    filename: contentDispositionFilename || (0, _pdfjsLib.getPdfFilenameFromUrl)(url),
-    metadata: metadata?.getRaw(),
-    authors: metadata?.get("dc:creator"),
-    numPages: pdfDocument.numPages,
-    URL: url
-  };
-}
-
 class GenericScripting {
   constructor(sandboxBundleSrc) {
     this._ready = (0, _pdfjsLib.loadScript)(sandboxBundleSrc, true).then(() => {
@@ -14613,7 +14572,7 @@ class GenericScripting {
 exports.GenericScripting = GenericScripting;
 
 /***/ }),
-/* 44 */
+/* 41 */
 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
 
 
@@ -14623,6 +14582,8 @@ Object.defineProperty(exports, "__esModule", ({
 }));
 exports.PDFPrintService = PDFPrintService;
 
+var _ui_utils = __webpack_require__(4);
+
 var _app = __webpack_require__(3);
 
 var _viewer_compatibility = __webpack_require__(2);
@@ -14635,6 +14596,8 @@ function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printRe
   const PRINT_UNITS = printResolution / 72.0;
   scratchCanvas.width = Math.floor(size.width * PRINT_UNITS);
   scratchCanvas.height = Math.floor(size.height * PRINT_UNITS);
+  const width = Math.floor(size.width * _ui_utils.CSS_UNITS) + "px";
+  const height = Math.floor(size.height * _ui_utils.CSS_UNITS) + "px";
   const ctx = scratchCanvas.getContext("2d");
   ctx.save();
   ctx.fillStyle = "rgb(255, 255, 255)";
@@ -14653,6 +14616,11 @@ function renderPage(activeServiceOnEntry, pdfDocument, pageNumber, size, printRe
       optionalContentConfigPromise
     };
     return pdfPage.render(renderContext).promise;
+  }).then(function () {
+    return {
+      width,
+      height
+    };
   });
 }
 
@@ -14662,7 +14630,7 @@ function PDFPrintService(pdfDocument, pagesOverview, printContainer, printResolu
   this.printContainer = printContainer;
   this._printResolution = printResolution || 150;
   this._optionalContentConfigPromise = optionalContentConfigPromise || 
pdfDocument.getOptionalContentConfig();
-  this.l10n = l10n;
+  this.l10n = l10n || _ui_utils.NullL10n;
   this.currentPage = -1;
   this.scratchCanvas = document.createElement("canvas");
 }
@@ -14682,7 +14650,7 @@ PDFPrintService.prototype = {
 
     this.pageStyleSheet = document.createElement("style");
     const pageSize = this.pagesOverview[0];
-    this.pageStyleSheet.textContent = "@page { size: " + pageSize.width + "pt " + pageSize.height + "pt;}";
+    this.pageStyleSheet.textContent = "@supports ((size:A4) and (size:1pt 1pt)) {" + "@page { size: " + 
pageSize.width + "pt " + pageSize.height + "pt;}" + "}";
     body.appendChild(this.pageStyleSheet);
   },
 
@@ -14734,9 +14702,11 @@ PDFPrintService.prototype = {
     return new Promise(renderNextPage);
   },
 
-  useRenderedPage() {
+  useRenderedPage(printItem) {
     this.throwIfInactive();
     const img = document.createElement("img");
+    img.style.width = printItem.width;
+    img.style.height = printItem.height;
     const scratchCanvas = this.scratchCanvas;
 
     if ("toBlob" in scratchCanvas && 
!_viewer_compatibility.viewerCompatibilityParams.disableCreateObjectURL) {
@@ -14841,7 +14811,7 @@ function renderProgress(index, total, l10n) {
   progressBar.value = progress;
   l10n.get("print_progress_percent", {
     progress
-  }).then(msg => {
+  }, progress + "%").then(msg => {
     progressPerc.textContent = msg;
   });
 }
@@ -14910,9 +14880,8 @@ _app.PDFPrintServiceFactory.instance = {
 /******/       // The require function
 /******/       function __webpack_require__(moduleId) {
 /******/               // Check if module is in cache
-/******/               var cachedModule = __webpack_module_cache__[moduleId];
-/******/               if (cachedModule !== undefined) {
-/******/                       return cachedModule.exports;
+/******/               if(__webpack_module_cache__[moduleId]) {
+/******/                       return __webpack_module_cache__[moduleId].exports;
 /******/               }
 /******/               // Create a new module (and put it into the cache)
 /******/               var module = __webpack_module_cache__[moduleId] = {
@@ -14929,197 +14898,10 @@ _app.PDFPrintServiceFactory.instance = {
 /******/       }
 /******/       
 /************************************************************************/
-var __webpack_exports__ = {};
-// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the 
chunk.
-(() => {
-var exports = __webpack_exports__;
-
-
-Object.defineProperty(exports, "__esModule", ({
-  value: true
-}));
-Object.defineProperty(exports, "PDFViewerApplicationOptions", ({
-  enumerable: true,
-  get: function () {
-    return _app_options.AppOptions;
-  }
-}));
-Object.defineProperty(exports, "PDFViewerApplication", ({
-  enumerable: true,
-  get: function () {
-    return _app.PDFViewerApplication;
-  }
-}));
-
-var _app_options = __webpack_require__(1);
-
-var _app = __webpack_require__(3);
-
-const pdfjsVersion = '2.8.335';
-const pdfjsBuild = '228adbf67';
-window.PDFViewerApplication = _app.PDFViewerApplication;
-window.PDFViewerApplicationOptions = _app_options.AppOptions;
-;
-;
-{
-  __webpack_require__(38);
-}
-;
-{
-  __webpack_require__(44);
-}
-
-function getViewerConfiguration() {
-  let errorWrapper = null;
-  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")
-  };
-  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"),
-      scrollVerticalButton: document.getElementById("scrollVertical"),
-      scrollHorizontalButton: document.getElementById("scrollHorizontal"),
-      scrollWrappedButton: document.getElementById("scrollWrapped"),
-      spreadNoneButton: document.getElementById("spreadNone"),
-      spreadOddButton: document.getElementById("spreadOdd"),
-      spreadEvenButton: document.getElementById("spreadEven"),
-      documentPropertiesButton: document.getElementById("documentProperties")
-    },
-    sidebar: {
-      outerContainer: document.getElementById("outerContainer"),
-      viewerContainer: document.getElementById("viewerContainer"),
-      toggleButton: document.getElementById("sidebarToggle"),
-      thumbnailButton: document.getElementById("viewThumbnail"),
-      outlineButton: document.getElementById("viewOutline"),
-      attachmentsButton: document.getElementById("viewAttachments"),
-      layersButton: document.getElementById("viewLayers"),
-      thumbnailView: document.getElementById("thumbnailView"),
-      outlineView: document.getElementById("outlineView"),
-      attachmentsView: document.getElementById("attachmentsView"),
-      layersView: document.getElementById("layersView"),
-      outlineOptionsContainer: document.getElementById("outlineOptionsContainer"),
-      currentOutlineItemButton: document.getElementById("currentOutlineItem")
-    },
-    sidebarResizer: {
-      outerContainer: document.getElementById("outerContainer"),
-      resizer: document.getElementById("sidebarResizer")
-    },
-    findBar: {
-      bar: document.getElementById("findbar"),
-      toggleButton: document.getElementById("viewFind"),
-      findField: document.getElementById("findInput"),
-      highlightAllCheckbox: document.getElementById("findHighlightAll"),
-      caseSensitiveCheckbox: document.getElementById("findMatchCase"),
-      entireWordCheckbox: document.getElementById("findEntireWord"),
-      findMsg: document.getElementById("findMsg"),
-      findResultsCount: document.getElementById("findResultsCount"),
-      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"),
-        pageSize: document.getElementById("pageSizeField"),
-        linearized: document.getElementById("linearizedField")
-      }
-    },
-    errorWrapper,
-    printContainer: document.getElementById("printContainer"),
-    openFileInputName: "fileInput",
-    debuggerScriptPath: "./debugger.js"
-  };
-}
-
-function webViewerLoad() {
-  const config = getViewerConfiguration();
-  const event = document.createEvent("CustomEvent");
-  event.initCustomEvent("webviewerloaded", true, true, {
-    source: window
-  });
-
-  try {
-    parent.document.dispatchEvent(event);
-  } catch (ex) {
-    console.error(`webviewerloaded: ${ex}`);
-    document.dispatchEvent(event);
-  }
-
-  _app.PDFViewerApplication.run(config);
-}
-
-if (document.blockUnblockOnload) {
-  document.blockUnblockOnload(true);
-}
-
-if (document.readyState === "interactive" || document.readyState === "complete") {
-  webViewerLoad();
-} else {
-  document.addEventListener("DOMContentLoaded", webViewerLoad, true);
-}
-})();
-
+/******/       // startup
+/******/       // Load entry module
+/******/       __webpack_require__(0);
+/******/       // This entry module used 'exports' so it can't be inlined
 /******/ })()
 ;
 //# sourceMappingURL=viewer.js.map


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]