UNPKG

993 kBSource Map (JSON)View Raw
1{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/shared/util.js","webpack://pdfjs-dist/build/pdf/src/shared/compatibility.js","webpack://pdfjs-dist/build/pdf/src/shared/is_node.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/api.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/node_utils.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/display/canvas.js","webpack://pdfjs-dist/build/pdf/src/display/pattern_helper.js","webpack://pdfjs-dist/build/pdf/src/display/worker_options.js","webpack://pdfjs-dist/build/pdf/src/shared/message_handler.js","webpack://pdfjs-dist/build/pdf/src/display/metadata.js","webpack://pdfjs-dist/build/pdf/src/display/optional_content_config.js","webpack://pdfjs-dist/build/pdf/src/display/transport_stream.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_text.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_layer.js","webpack://pdfjs-dist/build/pdf/src/shared/scripting_utils.js","webpack://pdfjs-dist/build/pdf/src/display/xfa_layer.js","webpack://pdfjs-dist/build/pdf/src/display/text_layer.js","webpack://pdfjs-dist/build/pdf/src/display/svg.js","webpack://pdfjs-dist/build/pdf/src/display/node_stream.js","webpack://pdfjs-dist/build/pdf/src/display/network_utils.js","webpack://pdfjs-dist/build/pdf/src/display/content_disposition.js","webpack://pdfjs-dist/build/pdf/src/display/network.js","webpack://pdfjs-dist/build/pdf/src/display/fetch_stream.js","webpack://pdfjs-dist/build/pdf/webpack/bootstrap","webpack://pdfjs-dist/build/pdf/src/pdf.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"pdfjs-dist/build/pdf\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"pdfjs-dist/build/pdf\"] = factory();\n\telse\n\t\troot[\"pdfjs-dist/build/pdf\"] = factory();\n})(this, function() {\nreturn ","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n BaseException,\n isString,\n removeNullCharacters,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\n\nconst DEFAULT_LINK_REL = \"noopener noreferrer nofollow\";\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nconst PixelsPerInch = {\n CSS: 96.0,\n PDF: 72.0,\n\n /** @type {number} */\n get PDF_TO_CSS_UNITS() {\n return shadow(this, \"PDF_TO_CSS_UNITS\", this.CSS / this.PDF);\n },\n};\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, asTypedArray = false) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n return asTypedArray\n ? new Uint8Array(await response.arrayBuffer())\n : stringToBytes(await response.text());\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* asTypedArray = */ true);\n\n if (asTypedArray) {\n request.responseType = \"arraybuffer\";\n }\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n if (asTypedArray && request.response) {\n data = new Uint8Array(request.response);\n } else if (!asTypedArray && request.responseText) {\n data = stringToBytes(request.responseText);\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url, /* asTypedArray = */ this.isCompressed).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = Math.abs(viewBox[3] - viewBox[1]) * scale;\n height = Math.abs(viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = Math.abs(viewBox[2] - viewBox[0]) * scale;\n height = Math.abs(viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Object} Object containing `x` and `y` properties of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, type) {\n super(msg, \"RenderingCancelledException\");\n this.type = type;\n }\n}\n\nconst LinkTarget = {\n NONE: 0, // Default value.\n SELF: 1,\n BLANK: 2,\n PARENT: 3,\n TOP: 4,\n};\n\n/**\n * @typedef ExternalLinkParameters\n * @typedef {Object} ExternalLinkParameters\n * @property {string} url - An absolute URL.\n * @property {LinkTarget} [target] - The link target. The default value is\n * `LinkTarget.NONE`.\n * @property {string} [rel] - The link relationship. The default value is\n * `DEFAULT_LINK_REL`.\n * @property {boolean} [enabled] - Whether the link should be enabled. The\n * default value is true.\n */\n\n/**\n * Adds various attributes (href, title, target, rel) to hyperlinks.\n * @param {HTMLAnchorElement} link - The link element.\n * @param {ExternalLinkParameters} params\n */\nfunction addLinkAttributes(link, { url, target, rel, enabled = true } = {}) {\n assert(\n url && typeof url === \"string\",\n 'addLinkAttributes: A valid \"url\" parameter must provided.'\n );\n\n const urlNullRemoved = removeNullCharacters(url);\n if (enabled) {\n link.href = link.title = urlNullRemoved;\n } else {\n link.href = \"\";\n link.title = `Disabled: ${urlNullRemoved}`;\n link.onclick = () => {\n return false;\n };\n }\n\n let targetStr = \"\"; // LinkTarget.NONE\n switch (target) {\n case LinkTarget.NONE:\n break;\n case LinkTarget.SELF:\n targetStr = \"_self\";\n break;\n case LinkTarget.BLANK:\n targetStr = \"_blank\";\n break;\n case LinkTarget.PARENT:\n targetStr = \"_parent\";\n break;\n case LinkTarget.TOP:\n targetStr = \"_top\";\n break;\n }\n link.target = targetStr;\n\n link.rel = typeof rel === \"string\" ? rel : DEFAULT_LINK_REL;\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n const anchor = url.indexOf(\"#\");\n const query = url.indexOf(\"?\");\n const end = Math.min(\n anchor > 0 ? anchor : url.length,\n query > 0 ? query : url.length\n );\n return url.substring(url.lastIndexOf(\"/\", end) + 1, end);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch (ex) {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n constructor() {\n this.started = Object.create(null);\n this.times = [];\n }\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const time of this.times) {\n const name = time.name;\n if (name.length > longest) {\n longest = name.length;\n }\n }\n for (const time of this.times) {\n const duration = time.end - time.start;\n outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch (ex) {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * @param {string} src\n * @param {boolean} [removeScriptElement]\n * @returns {Promise<void>}\n */\nfunction loadScript(src, removeScriptElement = false) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = src;\n\n script.onload = function (evt) {\n if (removeScriptElement) {\n script.remove();\n }\n resolve(evt);\n };\n script.onerror = function () {\n reject(new Error(`Cannot load script at: ${script.src}`));\n };\n (document.head || document.documentElement).appendChild(script);\n });\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || !isString(input)) {\n return null;\n }\n\n // Lazily initialize the regular expression.\n if (!pdfDateStringRegex) {\n pdfDateStringRegex = new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n }\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nexport {\n addLinkAttributes,\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport \"./compatibility.js\";\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationStateModelType = {\n MARKED: \"Marked\",\n REVIEW: \"Review\",\n};\n\nconst AnnotationMarkedState = {\n MARKED: \"Marked\",\n UNMARKED: \"Unmarked\",\n};\n\nconst AnnotationReviewState = {\n ACCEPTED: \"Accepted\",\n REJECTED: \"Rejected\",\n CANCELLED: \"Cancelled\",\n COMPLETED: \"Completed\",\n NONE: \"None\",\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst StreamType = {\n UNKNOWN: \"UNKNOWN\",\n FLATE: \"FLATE\",\n LZW: \"LZW\",\n DCT: \"DCT\",\n JPX: \"JPX\",\n JBIG: \"JBIG\",\n A85: \"A85\",\n AHX: \"AHX\",\n CCF: \"CCF\",\n RLX: \"RLX\", // PDF short name is 'RL', but telemetry requires three chars.\n};\n\nconst FontType = {\n UNKNOWN: \"UNKNOWN\",\n TYPE1: \"TYPE1\",\n TYPE1STANDARD: \"TYPE1STANDARD\",\n TYPE1C: \"TYPE1C\",\n CIDFONTTYPE0: \"CIDFONTTYPE0\",\n CIDFONTTYPE0C: \"CIDFONTTYPE0C\",\n TRUETYPE: \"TRUETYPE\",\n CIDFONTTYPE2: \"CIDFONTTYPE2\",\n TYPE3: \"TYPE3\",\n OPENTYPE: \"OPENTYPE\",\n TYPE0: \"TYPE0\",\n MMTYPE1: \"MMTYPE1\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n STREAM: 2,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n beginAnnotations: 78,\n endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n /** @deprecated unused */\n paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst UNSUPPORTED_FEATURES = {\n /** @deprecated unused */\n unknown: \"unknown\",\n forms: \"forms\",\n javaScript: \"javaScript\",\n signatures: \"signatures\",\n smask: \"smask\",\n shadingPattern: \"shadingPattern\",\n /** @deprecated unused */\n font: \"font\",\n errorTilingPattern: \"errorTilingPattern\",\n errorExtGState: \"errorExtGState\",\n errorXObject: \"errorXObject\",\n errorFontLoadType3: \"errorFontLoadType3\",\n errorFontState: \"errorFontState\",\n errorFontMissing: \"errorFontMissing\",\n errorFontTranslate: \"errorFontTranslate\",\n errorColorSpace: \"errorColorSpace\",\n errorOperatorList: \"errorOperatorList\",\n errorFontToUnicode: \"errorFontToUnicode\",\n errorFontLoadNative: \"errorFontLoadNative\",\n errorFontBuildPath: \"errorFontBuildPath\",\n errorFontGetPath: \"errorFontGetPath\",\n errorMarkedContent: \"errorMarkedContent\",\n errorContentSubStream: \"errorContentSubStream\",\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs have the same origin. For non-HTTP based URLs, returns false.\nfunction isSameOrigin(baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch (e) {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n if (!url) {\n return false;\n }\n switch (url.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots && dots.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch (ex) {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch (ex) {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: true,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nconst NullCharactersRegExp = /\\x00+/g;\nconst InvisibleCharactersRegExp = /[\\x01-\\x1F]/g;\n\n/**\n * @param {string} str\n */\nfunction removeNullCharacters(str, replaceInvisible = false) {\n if (typeof str !== \"string\") {\n warn(\"The argument for removeNullCharacters must be a string.\");\n return str;\n }\n if (replaceInvisible) {\n str = str.replace(InvisibleCharactersRegExp, \" \");\n }\n return str.replace(NullCharactersRegExp, \"\");\n}\n\nfunction bytesToString(bytes) {\n assert(\n bytes !== null && typeof bytes === \"object\" && bytes.length !== undefined,\n \"Invalid argument for bytesToString\"\n );\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n assert(typeof str === \"string\", \"Invalid argument for stringToBytes\");\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\n/**\n * Gets length of the array (Array, Uint8Array, or string) in bytes.\n * @param {Array<any>|Uint8Array|string} arr\n * @returns {number}\n */\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n assert(arr.byteLength !== undefined, \"arrayByteLength - invalid argument.\");\n return arr.byteLength;\n}\n\n/**\n * Combines array items (arrays) into single Uint8Array object.\n * @param {Array<Array<any>|Uint8Array|string>} arr - the array of the arrays\n * (Array, Uint8Array, or string).\n * @returns {Uint8Array}\n */\nfunction arraysToBytes(arr) {\n const length = arr.length;\n // Shortcut: if first and only item is Uint8Array, return it.\n if (length === 1 && arr[0] instanceof Uint8Array) {\n return arr[0];\n }\n let resultLength = 0;\n for (let i = 0; i < length; i++) {\n resultLength += arrayByteLength(arr[i]);\n }\n let pos = 0;\n const data = new Uint8Array(resultLength);\n for (let i = 0; i < length; i++) {\n let item = arr[i];\n if (!(item instanceof Uint8Array)) {\n if (typeof item === \"string\") {\n item = stringToBytes(item);\n } else {\n item = new Uint8Array(item);\n }\n }\n const itemLength = item.byteLength;\n data.set(item, pos);\n pos += itemLength;\n }\n return data;\n}\n\nfunction string32(value) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\nconst IsLittleEndianCached = {\n get value() {\n return shadow(this, \"value\", isLittleEndian());\n },\n};\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\nconst IsEvalSupportedCached = {\n get value() {\n return shadow(this, \"value\", isEvalSupported());\n },\n};\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = Util.applyTransform(r, m);\n const p2 = Util.applyTransform(r.slice(2, 4), m);\n const p3 = Util.applyTransform([r[0], r[3]], m);\n const p4 = Util.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // Apply a generic 3d matrix M on a 3-vector v:\n // | a b c | | X |\n // | d e f | x | Y |\n // | g h i | | Z |\n // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],\n // with v as [X,Y,Z]\n static apply3dTransform(m, v) {\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2],\n m[3] * v[0] + m[4] * v[1] + m[5] * v[2],\n m[6] * v[0] + m[7] * v[1] + m[8] * v[2],\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'false'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n function compare(a, b) {\n return a - b;\n }\n\n // Order points along the axes\n const orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare);\n const orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare);\n const result = [];\n\n rect1 = Util.normalizeRect(rect1);\n rect2 = Util.normalizeRect(rect2);\n\n // X: first and second points belong to different rectangles?\n if (\n (orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||\n (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])\n ) {\n // Intersection must be between second and third points\n result[0] = orderedX[1];\n result[2] = orderedX[2];\n } else {\n return null;\n }\n\n // Y: first and second points belong to different rectangles?\n if (\n (orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||\n (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])\n ) {\n // Intersection must be between second and third points\n result[1] = orderedY[1];\n result[3] = orderedY[2];\n } else {\n return null;\n }\n\n return result;\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n const length = str.length,\n strBuf = [];\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n // UTF16BE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i) << 8) | str.charCodeAt(i + 1))\n );\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n // UTF16LE BOM\n for (let i = 2; i < length; i += 2) {\n strBuf.push(\n String.fromCharCode((str.charCodeAt(i + 1) << 8) | str.charCodeAt(i))\n );\n }\n } else {\n for (let i = 0; i < length; ++i) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n }\n return strBuf.join(\"\");\n}\n\nfunction escapeString(str) {\n // replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\"\n // by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n // in order to write it in a PDF file.\n return str.replace(/([()\\\\\\n\\r])/g, match => {\n if (match === \"\\n\") {\n return \"\\\\n\";\n } else if (match === \"\\r\") {\n return \"\\\\r\";\n }\n return `\\\\${match}`;\n });\n}\n\nfunction isAscii(str) {\n return /^[\\x00-\\x7F]*$/.test(str);\n}\n\nfunction stringToUTF16BEString(str) {\n const buf = [\"\\xFE\\xFF\"];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(\n String.fromCharCode((char >> 8) & 0xff),\n String.fromCharCode(char & 0xff)\n );\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isBool(v) {\n return typeof v === \"boolean\";\n}\n\nfunction isNum(v) {\n return typeof v === \"number\";\n}\n\nfunction isString(v) {\n return typeof v === \"string\";\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v !== null && v.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\n/**\n * Promise Capability object.\n *\n * @typedef {Object} PromiseCapability\n * @property {Promise<any>} promise - A Promise object.\n * @property {boolean} settled - If the Promise has been fulfilled/rejected.\n * @property {function} resolve - Fulfills the Promise.\n * @property {function} reject - Rejects the Promise.\n */\n\n/**\n * Creates a promise capability object.\n * @alias createPromiseCapability\n *\n * @returns {PromiseCapability}\n */\nfunction createPromiseCapability() {\n const capability = Object.create(null);\n let isSettled = false;\n\n Object.defineProperty(capability, \"settled\", {\n get() {\n return isSettled;\n },\n });\n capability.promise = new Promise(function (resolve, reject) {\n capability.resolve = function (data) {\n isSettled = true;\n resolve(data);\n };\n capability.reject = function (reason) {\n isSettled = true;\n reject(reason);\n };\n });\n return capability;\n}\n\nfunction createObjectURL(data, contentType = \"\", forceDataSchema = false) {\n if (URL.createObjectURL && typeof Blob !== \"undefined\" && !forceDataSchema) {\n return URL.createObjectURL(new Blob([data], { type: contentType }));\n }\n // Blob/createObjectURL is not available, falling back to data schema.\n const digits =\n \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n let buffer = `data:${contentType};base64,`;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n const b1 = data[i] & 0xff;\n const b2 = data[i + 1] & 0xff;\n const b3 = data[i + 2] & 0xff;\n const d1 = b1 >> 2,\n d2 = ((b1 & 3) << 4) | (b2 >> 4);\n const d3 = i + 1 < ii ? ((b2 & 0xf) << 2) | (b3 >> 6) : 64;\n const d4 = i + 2 < ii ? b3 & 0x3f : 64;\n buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];\n }\n return buffer;\n}\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMarkedState,\n AnnotationMode,\n AnnotationReplyType,\n AnnotationReviewState,\n AnnotationStateModelType,\n AnnotationType,\n arrayByteLength,\n arraysToBytes,\n assert,\n BaseException,\n bytesToString,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FONT_IDENTITY_MATRIX,\n FontType,\n FormatError,\n getModificationDate,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isAscii,\n isBool,\n IsEvalSupportedCached,\n IsLittleEndianCached,\n isNum,\n isSameOrigin,\n isString,\n MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n StreamType,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF16BEString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n UNSUPPORTED_FEATURES,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isNodeJS } from \"./is_node.js\";\n\n// Skip compatibility checks for modern builds and if we already ran the module.\nif (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"SKIP_BABEL\")) &&\n (typeof globalThis === \"undefined\" || !globalThis._pdfjsCompatibilityChecked)\n) {\n // Provides support for `globalThis` in legacy browsers.\n // Support: Firefox<65, Chrome<71, Safari<12.1, Node.js<12.0.0\n if (typeof globalThis === \"undefined\" || globalThis.Math !== Math) {\n // eslint-disable-next-line no-global-assign\n globalThis = require(\"core-js/es/global-this\");\n }\n globalThis._pdfjsCompatibilityChecked = true;\n\n // Support: Node.js\n (function checkNodeBtoa() {\n if (globalThis.btoa || !isNodeJS) {\n return;\n }\n globalThis.btoa = function (chars) {\n // eslint-disable-next-line no-undef\n return Buffer.from(chars, \"binary\").toString(\"base64\");\n };\n })();\n\n // Support: Node.js\n (function checkNodeAtob() {\n if (globalThis.atob || !isNodeJS) {\n return;\n }\n globalThis.atob = function (input) {\n // eslint-disable-next-line no-undef\n return Buffer.from(input, \"base64\").toString(\"binary\");\n };\n })();\n\n // Support: Node.js\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n globalThis.DOMMatrix = require(\"dommatrix/dist/dommatrix.js\");\n })();\n\n // Provides support for Object.fromEntries in legacy browsers.\n // Support: Firefox<63, Chrome<73, Safari<12.1, Node.js<12.0.0\n (function checkObjectFromEntries() {\n if (Object.fromEntries) {\n return;\n }\n require(\"core-js/es/object/from-entries.js\");\n })();\n\n // Provides support for *recent* additions to the Promise specification,\n // however basic Promise support is assumed to be available natively.\n // Support: Firefox<71, Chrome<76, Safari<13, Node.js<12.9.0\n (function checkPromise() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `Promise` shouldn't\n // need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.Promise.allSettled) {\n return;\n }\n globalThis.Promise = require(\"core-js/es/promise/index.js\");\n })();\n\n // Support: Node.js\n (function checkReadableStream() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `ReadableStream`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")) {\n // Slightly reduce the size of the Chromium-extension, given\n // that `ReadableStream` has been supported since Chrome 43.\n return;\n }\n if (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream =\n require(\"web-streams-polyfill/dist/ponyfill.js\").ReadableStream;\n })();\n}\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nexport { isNodeJS };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @private\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = false }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @private\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @private\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @private\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n createPromiseCapability,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isSameOrigin,\n MissingPDFException,\n PasswordException,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n loadScript,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n} from \"./node_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\nconst DefaultCanvasFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultStandardFontDataFactory =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef {function} IPDFStreamFactory\n * @param {DocumentInitParameters} params - The document initialization\n * parameters. The \"url\" key is always present.\n * @returns {Promise} A promise, which is resolved with an instance of\n * {IPDFStream}.\n * @ignore\n */\n\n/**\n * @type IPDFStreamFactory\n * @private\n */\nlet createPDFNetworkStream;\n\n/**\n * Sets the function that instantiates an {IPDFStream} as an alternative PDF\n * data transport.\n *\n * @param {IPDFStreamFactory} pdfNetworkStreamFactory - The factory function\n * that takes document initialization parameters (including a \"url\") and\n * returns a promise which is resolved with an instance of {IPDFStream}.\n * @ignore\n */\nfunction setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {\n createPDFNetworkStream = pdfNetworkStreamFactory;\n}\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string|URL} [url] - The URL of the PDF.\n * @property {TypedArray|Array<number>|string} [data] - Binary PDF data. Use\n * typed arrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {TypedArray} [initialData] - A typed array with the first portion\n * or all of the pdf data. Used by the extension since some data is already\n * loaded before the switch to range requests.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string|URL|TypedArray|PDFDataRangeTransport|DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n const task = new PDFDocumentLoadingTask();\n\n let source;\n if (typeof src === \"string\" || src instanceof URL) {\n source = { url: src };\n } else if (isArrayBuffer(src)) {\n source = { data: src };\n } else if (src instanceof PDFDataRangeTransport) {\n source = { range: src };\n } else {\n if (typeof src !== \"object\") {\n throw new Error(\n \"Invalid parameter in getDocument, \" +\n \"need either string, URL, Uint8Array, or parameter object.\"\n );\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n source = src;\n }\n const params = Object.create(null);\n let rangeTransport = null,\n worker = null;\n\n for (const key in source) {\n const value = source[key];\n\n switch (key) {\n case \"url\":\n if (typeof window !== \"undefined\") {\n try {\n // The full path is required in the 'url' field.\n params[key] = new URL(value, window.location).href;\n continue;\n } catch (ex) {\n warn(`Cannot create valid URL: \"${ex}\".`);\n }\n } else if (typeof value === \"string\" || value instanceof URL) {\n params[key] = value.toString(); // Support Node.js environments.\n continue;\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n case \"range\":\n rangeTransport = value;\n continue;\n case \"worker\":\n worker = value;\n continue;\n case \"data\":\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n value instanceof Buffer // eslint-disable-line no-undef\n ) {\n params[key] = new Uint8Array(value);\n } else if (value instanceof Uint8Array) {\n break; // Use the data as-is when it's already a Uint8Array.\n } else if (typeof value === \"string\") {\n params[key] = stringToBytes(value);\n } else if (\n typeof value === \"object\" &&\n value !== null &&\n !isNaN(value.length)\n ) {\n params[key] = new Uint8Array(value);\n } else if (isArrayBuffer(value)) {\n params[key] = new Uint8Array(value);\n } else {\n throw new Error(\n \"Invalid PDF binary data: either typed array, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n }\n continue;\n }\n params[key] = value;\n }\n\n params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;\n params.CMapReaderFactory =\n params.CMapReaderFactory || DefaultCMapReaderFactory;\n params.StandardFontDataFactory =\n params.StandardFontDataFactory || DefaultStandardFontDataFactory;\n params.ignoreErrors = params.stopAtErrors !== true;\n params.fontExtraProperties = params.fontExtraProperties === true;\n params.pdfBug = params.pdfBug === true;\n params.enableXfa = params.enableXfa === true;\n\n if (\n typeof params.docBaseUrl !== \"string\" ||\n isDataScheme(params.docBaseUrl)\n ) {\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n params.docBaseUrl = null;\n }\n if (!Number.isInteger(params.maxImageSize)) {\n params.maxImageSize = -1;\n }\n if (typeof params.useWorkerFetch !== \"boolean\") {\n params.useWorkerFetch =\n params.CMapReaderFactory === DOMCMapReaderFactory &&\n params.StandardFontDataFactory === DOMStandardFontDataFactory;\n }\n if (typeof params.isEvalSupported !== \"boolean\") {\n params.isEvalSupported = true;\n }\n if (typeof params.disableFontFace !== \"boolean\") {\n params.disableFontFace =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts =\n !(\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n isNodeJS\n ) && !params.disableFontFace;\n }\n if (typeof params.ownerDocument === \"undefined\") {\n params.ownerDocument = globalThis.document;\n }\n\n if (typeof params.disableRange !== \"boolean\") {\n params.disableRange = false;\n }\n if (typeof params.disableStream !== \"boolean\") {\n params.disableStream = false;\n }\n if (typeof params.disableAutoFetch !== \"boolean\") {\n params.disableAutoFetch = false;\n }\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(params.verbosity);\n\n if (!worker) {\n const workerParams = {\n verbosity: params.verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n const docId = task.docId;\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(\n worker,\n params,\n rangeTransport,\n docId\n );\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length: params.length,\n initialData: params.initialData,\n progressiveDone: params.progressiveDone,\n contentDispositionFilename: params.contentDispositionFilename,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n },\n rangeTransport\n );\n } else if (!params.data) {\n networkStream = createPDFNetworkStream({\n url: params.url,\n length: params.length,\n httpHeaders: params.httpHeaders,\n withCredentials: params.withCredentials,\n rangeChunkSize: params.rangeChunkSize,\n disableRange: params.disableRange,\n disableStream: params.disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n params\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @param {PDFDataRangeTransport} pdfDataRangeTransport\n * @param {string} docId - Unique document ID, used in `MessageHandler`.\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n\n if (pdfDataRangeTransport) {\n source.length = pdfDataRangeTransport.length;\n source.initialData = pdfDataRangeTransport.initialData;\n source.progressiveDone = pdfDataRangeTransport.progressiveDone;\n source.contentDispositionFilename =\n pdfDataRangeTransport.contentDispositionFilename;\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n // Only send the required properties, and *not* the entire object.\n source: {\n data: source.data,\n url: source.url,\n password: source.password,\n disableAutoFetch: source.disableAutoFetch,\n rangeChunkSize: source.rangeChunkSize,\n length: source.length,\n },\n maxImageSize: source.maxImageSize,\n disableFontFace: source.disableFontFace,\n docBaseUrl: source.docBaseUrl,\n ignoreErrors: source.ignoreErrors,\n isEvalSupported: source.isEvalSupported,\n fontExtraProperties: source.fontExtraProperties,\n enableXfa: source.enableXfa,\n useSystemFonts: source.useSystemFonts,\n cMapUrl: source.useWorkerFetch ? source.cMapUrl : null,\n standardFontDataUrl: source.useWorkerFetch\n ? source.standardFontDataUrl\n : null,\n }\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static get idCounters() {\n return shadow(this, \"idCounters\", { doc: 0 });\n }\n\n constructor() {\n this._capability = createPromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.idCounters.doc++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n\n /**\n * Callback for when an unsupported feature is used in the PDF document.\n * The callback receives an {@link UNSUPPORTED_FEATURES} argument.\n * @type {function}\n */\n this.onUnsupportedFeature = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n await this._transport?.destroy();\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = createPromiseCapability();\n }\n\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n Object.defineProperty(this, \"fingerprint\", {\n get() {\n deprecated(\n \"`PDFDocumentProxy.fingerprint`, \" +\n \"please use `PDFDocumentProxy.fingerprints` instead.\"\n );\n return this.fingerprints[0];\n },\n });\n\n Object.defineProperty(this, \"getStats\", {\n value: async () => {\n deprecated(\n \"`PDFDocumentProxy.getStats`, \" +\n \"please use the `PDFDocumentProxy.stats`-getter instead.\"\n );\n return this.stats || { streamTypes: {}, fontTypes: {} };\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @typedef {Object} PDFDocumentStats\n * @property {Object<string, boolean>} streamTypes - Used stream types in the\n * document (an item is set to true if specific stream ID was used in the\n * document).\n * @property {Object<string, boolean>} fontTypes - Used font types in the\n * document (an item is set to true if specific font ID was used in the\n * document).\n */\n\n /**\n * @type {PDFDocumentStats | null} The current statistics about document\n * structures, or `null` when no statistics exists.\n */\n get stats() {\n return this._transport.stats;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return !!this._transport._htmlForXfa;\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} of all the JavaScript strings in the name tree, or `null`\n * if no JavaScript exists.\n */\n getJavaScript() {\n return this._transport.getJavaScript();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree (like getJavaScript);\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<TypedArray>} A promise that is resolved with a\n * {TypedArray} that has the raw data from the PDF.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n this._transport.annotationStorage.size <= 0\n ) {\n deprecated(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} normalizeWhitespace - Replaces all occurrences of\n * whitespace with standard spaces (0x20). The default value is `false`.\n * @property {boolean} disableCombineTextItems - Do not attempt to combine\n * same line {@link TextItem}'s. The default value is `false`.\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {Object} canvasContext - A 2D context of a DOM Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {Object} [imageLayer] - An object that has `beginLayout`,\n * `endLayout` and `appendImage` functions.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object | string} [background] - Background to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n constructor(pageIndex, pageInfo, transport, ownerDocument, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._ownerDocument = ownerDocument;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this.cleanupAfterRender = false;\n this.pendingCleanup = false;\n this._intentStates = new Map();\n this._annotationPromises = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n let promise = this._annotationPromises.get(intentArgs.cacheKey);\n if (!promise) {\n promise = this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n this._annotationPromises.set(intentArgs.cacheKey, promise);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n promise = promise.then(annotations => {\n for (const annotation of annotations) {\n if (annotation.titleObj !== undefined) {\n Object.defineProperty(annotation, \"title\", {\n get() {\n deprecated(\n \"`title`-property on annotation, please use `titleObj` instead.\"\n );\n return annotation.titleObj.str;\n },\n });\n }\n if (annotation.contentsObj !== undefined) {\n Object.defineProperty(annotation, \"contents\", {\n get() {\n deprecated(\n \"`contents`-property on annotation, please use `contentsObj` instead.\"\n );\n return annotation.contentsObj.str;\n },\n });\n }\n }\n return annotations;\n });\n }\n }\n return promise;\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return (this._jsActionsPromise ||= this._transport.getPageJSActions(\n this._pageIndex\n ));\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n imageLayer = null,\n canvasFactory = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n }) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n if (arguments[0]?.renderInteractiveForms !== undefined) {\n deprecated(\n \"render no longer accepts the `renderInteractiveForms`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].renderInteractiveForms === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_FORMS;\n }\n }\n if (arguments[0]?.includeAnnotationStorage !== undefined) {\n deprecated(\n \"render no longer accepts the `includeAnnotationStorage`-option, \" +\n \"please use the `annotationMode`-option instead.\"\n );\n if (\n arguments[0].includeAnnotationStorage === true &&\n annotationMode === AnnotationMode.ENABLE\n ) {\n annotationMode = AnnotationMode.ENABLE_STORAGE;\n }\n }\n }\n\n if (this._stats) {\n this._stats.time(\"Overall\");\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render.\n this.pendingCleanup = false;\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const canvasFactoryInstance =\n canvasFactory ||\n new DefaultCanvasFactory({ ownerDocument: this._ownerDocument });\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = createPromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup once rendering has finished (regardless of cleanupAfterRender).\n if (this.cleanupAfterRender || intentPrint) {\n this.pendingCleanup = true;\n }\n this._tryCleanup();\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n if (this._stats) {\n this._stats.timeEnd(\"Rendering\");\n this._stats.timeEnd(\"Overall\");\n }\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n imageLayer,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: canvasFactoryInstance,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.pendingCleanup) {\n complete();\n return;\n }\n if (this._stats) {\n this._stats.time(\"Rendering\");\n }\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n } = {}) {\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = createPromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n };\n\n if (this._stats) {\n this._stats.time(\"Page Request\");\n }\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n normalizeWhitespace = false,\n disableCombineTextItems = false,\n includeMarkedContent = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n normalizeWhitespace: normalizeWhitespace === true,\n combineTextItems: disableCombineTextItems !== true,\n includeMarkedContent: includeMarkedContent === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return (this._structTreePromise ||= this._transport.getStructTree(\n this._pageIndex\n ));\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n this.pendingCleanup = false;\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.pendingCleanup = true;\n return this._tryCleanup(resetStats);\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @private\n */\n _tryCleanup(resetStats = false) {\n if (!this.pendingCleanup) {\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n\n this._intentStates.clear();\n this.objs.clear();\n this._annotationPromises.clear();\n this._jsActionsPromise = null;\n this._structTreePromise = null;\n if (resetStats && this._stats) {\n this._stats = new StatTimer();\n }\n this.pendingCleanup = false;\n return true;\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n if (this._stats) {\n this._stats.timeEnd(\"Page Request\");\n }\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.resolve(transparency);\n }\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this._tryCleanup();\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({ renderingIntent, cacheKey }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage:\n renderingIntent & RenderingIntentFlag.ANNOTATIONS_STORAGE\n ? this._transport.annotationStorage.serializable\n : null,\n }\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this._tryCleanup();\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n this._abortOperatorList({ intentState, reason, force: true });\n intentState.streamReaderCancelTimeout = null;\n }, RENDERING_CANCELLED_TIMEOUT);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {Object} Returns page stats, if enabled; returns `null` otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n constructor() {\n this._listeners = [];\n this._deferred = Promise.resolve();\n }\n\n postMessage(obj, transfers) {\n function cloneValue(object) {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n globalThis.structuredClone\n ) {\n return globalThis.structuredClone(object, transfers);\n }\n\n // Trying to perform a structured clone close to the spec, including\n // transfers.\n function fallbackCloneValue(value) {\n if (\n typeof value === \"function\" ||\n typeof value === \"symbol\" ||\n value instanceof URL\n ) {\n throw new Error(\n `LoopbackPort.postMessage - cannot clone: ${value?.toString()}`\n );\n }\n\n if (typeof value !== \"object\" || value === null) {\n return value;\n }\n if (cloned.has(value)) {\n // already cloned the object\n return cloned.get(value);\n }\n let buffer, result;\n if ((buffer = value.buffer) && isArrayBuffer(buffer)) {\n // We found object with ArrayBuffer (typed array).\n if (transfers?.includes(buffer)) {\n result = new value.constructor(\n buffer,\n value.byteOffset,\n value.byteLength\n );\n } else {\n result = new value.constructor(value);\n }\n cloned.set(value, result);\n return result;\n }\n if (value instanceof Map) {\n result = new Map();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const [key, val] of value) {\n result.set(key, fallbackCloneValue(val));\n }\n return result;\n }\n if (value instanceof Set) {\n result = new Set();\n cloned.set(value, result); // Adding to cache now for cyclic references.\n for (const val of value) {\n result.add(fallbackCloneValue(val));\n }\n return result;\n }\n result = Array.isArray(value) ? [] : Object.create(null);\n cloned.set(value, result); // Adding to cache now for cyclic references.\n // Cloning all value and object properties, however ignoring properties\n // defined via getter.\n for (const i in value) {\n let desc,\n p = value;\n while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {\n p = Object.getPrototypeOf(p);\n }\n if (typeof desc.value === \"undefined\") {\n continue;\n }\n if (typeof desc.value === \"function\" && !value.hasOwnProperty?.(i)) {\n continue;\n }\n result[i] = fallbackCloneValue(desc.value);\n }\n return result;\n }\n\n const cloned = new WeakMap();\n return fallbackCloneValue(object);\n }\n\n const event = { data: cloneValue(obj) };\n\n this._deferred.then(() => {\n for (const listener of this._listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this._listeners.push(listener);\n }\n\n removeEventListener(name, listener) {\n const i = this._listeners.indexOf(listener);\n this._listeners.splice(i, 1);\n }\n\n terminate() {\n this._listeners.length = 0;\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Object} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fallbackWorkerSrc: null,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n // eslint-disable-next-line no-undef\n if (isNodeJS && typeof __non_webpack_require__ === \"function\") {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n PDFWorkerUtil.fallbackWorkerSrc = PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.js\";\n } else if (typeof document === \"object\") {\n const pdfjsFilePath = document?.currentScript?.src;\n if (pdfjsFilePath) {\n PDFWorkerUtil.fallbackWorkerSrc = pdfjsFilePath.replace(\n /(\\.(?:min\\.)?js)(\\?.*)?$/i,\n \".worker$1$2\"\n );\n }\n }\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `importScripts(\"${url}\");`;\n return URL.createObjectURL(new Blob([wrapper]));\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static get _workerPorts() {\n return shadow(this, \"_workerPorts\", new WeakMap());\n }\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n if (port && PDFWorker._workerPorts.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = createPromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (port) {\n PDFWorker._workerPorts.set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n typeof Worker !== \"undefined\" &&\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker._mainThreadWorkerMessageHandler\n ) {\n let workerSrc = PDFWorker.workerSrc;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n // Some versions of FF can't create a worker on localhost, see:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=683280\n const worker = new Worker(workerSrc);\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch (e) {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array([255]);\n // Some versions of Opera throw a DATA_CLONE_ERR on serializing the\n // typed array. Also, checking if we can use transfers.\n try {\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n } catch (ex) {\n warn(\"Cannot use postMessage transfers.\");\n testObj[0] = 0;\n messageHandler.send(\"test\", testObj);\n }\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch (e) {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker._workerPorts.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n if (this._workerPorts.has(params.port)) {\n return this._workerPorts.get(params.port);\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n if (PDFWorkerUtil.fallbackWorkerSrc !== null) {\n if (!isNodeJS) {\n deprecated('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n return PDFWorkerUtil.fallbackWorkerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get _mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch (ex) {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n const mainWorkerMessageHandler = this._mainThreadWorkerMessageHandler;\n\n if (mainWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return mainWorkerMessageHandler;\n }\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const worker = await import(\"pdfjs/core/worker.js\");\n return worker.WorkerMessageHandler;\n }\n if (\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n // eslint-disable-next-line no-undef\n typeof __non_webpack_require__ === \"function\"\n ) {\n // Since bundlers, such as Webpack, cannot be told to leave `require`\n // statements alone we are thus forced to jump through hoops in order\n // to prevent `Critical dependency: ...` warnings in third-party\n // deployments of the built `pdf.js`/`pdf.worker.js` files; see\n // https://github.com/webpack/webpack/issues/8826\n //\n // The following hack is based on the assumption that code running in\n // Node.js won't ever be affected by e.g. Content Security Policies that\n // prevent the use of `eval`. If that ever occurs, we should revert this\n // to a normal `__non_webpack_require__` statement and simply document\n // the Webpack warnings instead (telling users to ignore them).\n //\n // eslint-disable-next-line no-eval\n const worker = eval(\"require\")(this.workerSrc);\n return worker.WorkerMessageHandler;\n }\n await loadScript(this.workerSrc);\n return window.pdfjsWorker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\")) {\n PDFWorker.getWorkerSrc = function () {\n deprecated(\n \"`PDFWorker.getWorkerSrc()`, please use `PDFWorker.workerSrc` instead.\"\n );\n return this.workerSrc;\n };\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #docStats = null;\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #metadataPromise = null;\n\n constructor(messageHandler, loadingTask, networkStream, params) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n docId: loadingTask.docId,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n if (!params.useWorkerFetch) {\n this.CMapReaderFactory = new params.CMapReaderFactory({\n baseUrl: params.cMapUrl,\n isCompressed: params.cMapPacked,\n });\n this.StandardFontDataFactory = new params.StandardFontDataFactory({\n baseUrl: params.standardFontDataUrl,\n });\n }\n\n this.destroyed = false;\n this.destroyCapability = null;\n this._passwordCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = createPromiseCapability();\n\n this.setupMessageHandler();\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n get stats() {\n return this.#docStats;\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let lastModified = \"\";\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n lastModified = this.annotationStorage.lastModified;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${lastModified}`,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = createPromiseCapability();\n\n if (this._passwordCapability) {\n this._passwordCapability.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n }\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n\n if (this._networkStream) {\n this._networkStream.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n }\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = createPromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n isArrayBuffer(value),\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this._passwordCapability = createPromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n this._passwordCapability.resolve({\n password,\n });\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this._passwordCapability.reject(ex);\n }\n } else {\n this._passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this._passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n let fontRegistry = null;\n if (params.pdfBug && globalThis.FontInspector?.enabled) {\n fontRegistry = {\n registerFont(font, url) {\n globalThis.FontInspector.fontAdded(font, url);\n },\n };\n }\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n onUnsupportedFeature: this._onUnsupportedFeature.bind(this),\n fontRegistry,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n const MAX_IMAGE_SIZE_TO_STORE = 8000000;\n if (imageData?.data?.length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"DocStats\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Ensure that a `PDFDocumentProxy.stats` call-site cannot accidentally\n // modify this internal data.\n this.#docStats = Object.freeze({\n streamTypes: Object.freeze(data.streamTypes),\n fontTypes: Object.freeze(data.fontTypes),\n });\n });\n\n messageHandler.on(\n \"UnsupportedFeature\",\n this._onUnsupportedFeature.bind(this)\n );\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.CMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.CMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.StandardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.StandardFontDataFactory.fetch(data);\n });\n }\n\n _onUnsupportedFeature({ featureId }) {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this.loadingTask.onUnsupportedFeature?.(featureId);\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.ownerDocument,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n ref,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n saveDocument() {\n return this.messageHandler\n .sendWithPromise(\"SaveDocument\", {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: this.annotationStorage.serializable,\n filename: this._fullReader?.filename ?? null,\n })\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getFieldObjects() {\n return (this._getFieldObjectsPromise ||=\n this.messageHandler.sendWithPromise(\"GetFieldObjects\", null));\n }\n\n hasJSActions() {\n return (this._hasJSActionsPromise ||= this.messageHandler.sendWithPromise(\n \"HasJSActions\",\n null\n ));\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getJavaScript() {\n return this.messageHandler.sendWithPromise(\"GetJavaScript\", null);\n }\n\n getDocJSActions() {\n return this.messageHandler.sendWithPromise(\"GetDocJSActions\", null);\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n return (this.#metadataPromise ||= this.messageHandler\n .sendWithPromise(\"GetMetadata\", null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n }));\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#metadataPromise = null;\n this._getFieldObjectsPromise = null;\n this._hasJSActionsPromise = null;\n }\n\n get loadingParams() {\n const params = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch: params.disableAutoFetch,\n enableXfa: params.enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n * @ignore\n */\nclass PDFObjects {\n constructor() {\n this._objs = Object.create(null);\n }\n\n /**\n * Ensures there is an object defined for `objId`.\n * @private\n */\n _ensureObj(objId) {\n if (this._objs[objId]) {\n return this._objs[objId];\n }\n return (this._objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\n resolved: false,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n this._ensureObj(objId).capability.promise.then(callback);\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this._objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj || !obj.resolved) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n has(objId) {\n const obj = this._objs[objId];\n return obj?.resolved || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n */\n resolve(objId, data) {\n const obj = this._ensureObj(objId);\n\n obj.resolved = true;\n obj.data = data;\n obj.capability.resolve(data);\n }\n\n clear() {\n this._objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n constructor(internalRenderTask) {\n this._internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n */\n cancel() {\n this._internalRenderTask.cancel();\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static get canvasInUse() {\n return shadow(this, \"canvasInUse\", new WeakSet());\n }\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = createPromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, imageLayer, background } =\n this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n imageLayer,\n optionalContentConfig,\n this.annotationCanvasMap\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n if (this.graphicsReadyCallback) {\n this.graphicsReadyCallback();\n }\n }\n\n cancel(error = null) {\n this.running = false;\n this.cancelled = true;\n if (this.gfx) {\n this.gfx.endDrawing();\n }\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n \"canvas\"\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n if (!this.graphicsReadyCallback) {\n this.graphicsReadyCallback = this._continueBound;\n }\n return;\n }\n\n if (this.stepper) {\n this.stepper.updateOperatorList(this.operatorList);\n }\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n if (this._canvas) {\n InternalRenderTask.canvasInUse.delete(this._canvas);\n }\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n IsEvalSupportedCached,\n shadow,\n string32,\n unreachable,\n UNSUPPORTED_FEATURES,\n warn,\n} from \"../shared/util.js\";\n\nclass BaseFontLoader {\n constructor({\n docId,\n onUnsupportedFeature,\n ownerDocument = globalThis.document,\n // For testing only.\n styleElement = null,\n }) {\n if (this.constructor === BaseFontLoader) {\n unreachable(\"Cannot initialize BaseFontLoader.\");\n }\n this.docId = docId;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this._document = ownerDocument;\n\n this.nativeFontFaces = [];\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ? styleElement\n : null;\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.push(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n insertRule(rule) {\n let styleElement = this.styleElement;\n if (!styleElement) {\n styleElement = this.styleElement = this._document.createElement(\"style\");\n styleElement.id = `PDFJS_FONT_STYLE_TAG_${this.docId}`;\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .appendChild(styleElement);\n }\n const styleSheet = styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.length = 0;\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || font.missingFile) {\n return;\n }\n font.attached = true;\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontLoadNative,\n });\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent([rule], [font], request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n _queueLoadingCallback(callback) {\n unreachable(\"Abstract method `_queueLoadingCallback`.\");\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n // eslint-disable-next-line getter-return\n get isSyncFontLoadingSupported() {\n unreachable(\"Abstract method `isSyncFontLoadingSupported`.\");\n }\n\n // eslint-disable-next-line getter-return\n get _loadTestFont() {\n unreachable(\"Abstract method `_loadTestFont`.\");\n }\n\n _prepareFontLoadEvent(rules, fontsToLoad, request) {\n unreachable(\"Abstract method `_prepareFontLoadEvent`.\");\n }\n}\n\nlet FontLoader;\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n FontLoader = class MozcentralFontLoader extends BaseFontLoader {\n get isSyncFontLoadingSupported() {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n };\n} else {\n // PDFJSDev.test('CHROME || GENERIC')\n\n FontLoader = class GenericFontLoader extends BaseFontLoader {\n constructor(params) {\n super(params);\n this.loadingContext = {\n requests: [],\n nextRequestId: 0,\n };\n this.loadTestFontId = 0;\n }\n\n get isSyncFontLoadingSupported() {\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (typeof navigator === \"undefined\") {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else {\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n const m = /Mozilla\\/5.0.*?rv:(\\d+).*? Gecko/.exec(\n navigator.userAgent\n );\n if (m?.[1] >= 14) {\n supported = true;\n }\n // TODO - other browsers...\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (context.requests.length > 0 && context.requests[0].done) {\n const otherRequest = context.requests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const context = this.loadingContext;\n const request = {\n id: `pdfjs-font-loading-${context.nextRequestId++}`,\n done: false,\n complete: completeRequest,\n callback,\n };\n context.requests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n const getLoadTestFont = function () {\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n return atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n };\n return shadow(this, \"_loadTestFont\", getLoadTestFont());\n }\n\n _prepareFontLoadEvent(rules, fonts, request) {\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n called++;\n // With setTimeout clamping this gives the font ~100ms to load.\n if (called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum =\n (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const names = [];\n for (const font of fonts) {\n names.push(font.loadedName);\n }\n names.push(loadTestFontId);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of names) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.appendChild(span);\n }\n this._document.body.appendChild(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n };\n} // End of PDFJSDev.test('CHROME || GENERIC')\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n onUnsupportedFeature,\n fontRegistry = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._onUnsupportedFeature = onUnsupportedFeature;\n this.fontRegistry = fontRegistry;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this);\n }\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n if (this.fontRegistry) {\n this.fontRegistry.registerFont(this, url);\n }\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n this._onUnsupportedFeature({\n featureId: UNSUPPORTED_FEATURES.errorFontGetPath,\n });\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && IsEvalSupportedCached.value) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nlet NodeCanvasFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCanvasFactory\");\n }\n};\n\nlet NodeCMapReaderFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeCMapReaderFactory\");\n }\n};\n\nlet NodeStandardFontDataFactory = class {\n constructor() {\n unreachable(\"Not implemented: NodeStandardFontDataFactory\");\n }\n};\n\nif ((typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) && isNodeJS) {\n const fetchData = function (url) {\n return new Promise((resolve, reject) => {\n const fs = __non_webpack_require__(\"fs\");\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n };\n\n NodeCanvasFactory = class extends BaseCanvasFactory {\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n };\n\n NodeCMapReaderFactory = class extends BaseCMapReaderFactory {\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n };\n\n NodeStandardFontDataFactory = class extends BaseStandardFontDataFactory {\n _fetchData(url) {\n return fetchData(url);\n }\n };\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n constructor() {\n this._storage = new Map();\n this._timeStamp = Date.now();\n this._modified = false;\n\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this._storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Set the value for a given key\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this._storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this._storage.set(key, value);\n }\n if (modified) {\n this._timeStamp = Date.now();\n this._setModified();\n }\n }\n\n getAll() {\n return this._storage.size > 0 ? objectFromMap(this._storage) : null;\n }\n\n get size() {\n return this._storage.size;\n }\n\n /**\n * @private\n */\n _setModified() {\n if (!this._modified) {\n this._modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this._modified) {\n this._modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this._storage.size > 0 ? this._storage : null;\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get lastModified() {\n return this._timeStamp.toString();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n IsLittleEndianCached,\n isNum,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { PixelsPerInch } from \"./display_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and shedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst COMPILE_TYPE3_GLYPHS = true;\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Because of https://bugs.chromium.org/p/chromium/issues/detail?id=1170396\n// some curves aren't rendered correctly.\n// Multiplying lineWidth by this factor should help to have \"correct\"\n// rendering with no artifacts.\n// Once the bug is fixed upstream, we can remove this constant and its use.\nconst LINEWIDTH_SCALE_FACTOR = 1.000001;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nfunction addContextCurrentTransform(ctx) {\n // If the context doesn't expose a `mozCurrentTransform`, add a JS based one.\n if (ctx.mozCurrentTransform) {\n return;\n }\n ctx._originalSave = ctx.save;\n ctx._originalRestore = ctx.restore;\n ctx._originalRotate = ctx.rotate;\n ctx._originalScale = ctx.scale;\n ctx._originalTranslate = ctx.translate;\n ctx._originalTransform = ctx.transform;\n ctx._originalSetTransform = ctx.setTransform;\n ctx._originalResetTransform = ctx.resetTransform;\n\n ctx._transformMatrix = ctx._transformMatrix || [1, 0, 0, 1, 0, 0];\n ctx._transformStack = [];\n\n try {\n // The call to getOwnPropertyDescriptor throws an exception in Node.js:\n // \"TypeError: Method lineWidth called on incompatible receiver\n // #<CanvasRenderingContext2D>\".\n const desc = Object.getOwnPropertyDescriptor(\n Object.getPrototypeOf(ctx),\n \"lineWidth\"\n );\n\n ctx._setLineWidth = desc.set;\n ctx._getLineWidth = desc.get;\n\n Object.defineProperty(ctx, \"lineWidth\", {\n set: function setLineWidth(width) {\n this._setLineWidth(width * LINEWIDTH_SCALE_FACTOR);\n },\n get: function getLineWidth() {\n return this._getLineWidth();\n },\n });\n } catch (_) {}\n\n Object.defineProperty(ctx, \"mozCurrentTransform\", {\n get: function getCurrentTransform() {\n return this._transformMatrix;\n },\n });\n\n Object.defineProperty(ctx, \"mozCurrentTransformInverse\", {\n get: function getCurrentTransformInverse() {\n // Calculation done using WolframAlpha:\n // http://www.wolframalpha.com/input/?\n // i=Inverse+{{a%2C+c%2C+e}%2C+{b%2C+d%2C+f}%2C+{0%2C+0%2C+1}}\n\n const [a, b, c, d, e, f] = this._transformMatrix;\n const ad_bc = a * d - b * c;\n const bc_ad = b * c - a * d;\n\n return [\n d / ad_bc,\n b / bc_ad,\n c / bc_ad,\n a / ad_bc,\n (d * e - c * f) / bc_ad,\n (b * e - a * f) / ad_bc,\n ];\n },\n });\n\n ctx.save = function ctxSave() {\n const old = this._transformMatrix;\n this._transformStack.push(old);\n this._transformMatrix = old.slice(0, 6);\n\n this._originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n const prev = this._transformStack.pop();\n if (prev) {\n this._transformMatrix = prev;\n this._originalRestore();\n }\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n const m = this._transformMatrix;\n m[4] = m[0] * x + m[2] * y + m[4];\n m[5] = m[1] * x + m[3] * y + m[5];\n\n this._originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n const m = this._transformMatrix;\n m[0] *= x;\n m[1] *= x;\n m[2] *= y;\n m[3] *= y;\n\n this._originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * a + m[2] * b,\n m[1] * a + m[3] * b,\n m[0] * c + m[2] * d,\n m[1] * c + m[3] * d,\n m[0] * e + m[2] * f + m[4],\n m[1] * e + m[3] * f + m[5],\n ];\n\n ctx._originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n this._transformMatrix = [a, b, c, d, e, f];\n\n ctx._originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n this._transformMatrix = [1, 0, 0, 1, 0, 0];\n\n ctx._originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n const cosValue = Math.cos(angle);\n const sinValue = Math.sin(angle);\n\n const m = this._transformMatrix;\n this._transformMatrix = [\n m[0] * cosValue + m[2] * sinValue,\n m[1] * cosValue + m[3] * sinValue,\n m[0] * -sinValue + m[2] * cosValue,\n m[1] * -sinValue + m[3] * cosValue,\n m[4],\n m[5],\n ];\n\n this._originalRotate(angle);\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height, trackTransform) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n // reset canvas transform for emulated mozCurrentTransform, if needed\n canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n if (trackTransform) {\n addContextCurrentTransform(canvasEntry.context);\n }\n return canvasEntry;\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction compileType3Glyph(imgData) {\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width = imgData.width,\n height = imgData.height,\n width1 = width + 1;\n let i, ii, j, j0;\n const points = new Uint8Array(width1 * (height + 1));\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7,\n data0 = imgData.data;\n const data = new Uint8Array(lineSize * height);\n let pos = 0;\n for (i = 0, ii = data0.length; i < ii; i++) {\n const elem = data0[i];\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const outlines = [];\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n const coords = [p % width1, i];\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n\n coords.push(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n outlines.push(coords);\n --i;\n }\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.beginPath();\n for (let k = 0, kk = outlines.length; k < kk; k++) {\n const o = outlines[k];\n c.moveTo(o[0], o[1]);\n for (let l = 2, ll = o.length; l < ll; l += 2) {\n c.lineTo(o[l], o[l + 1]);\n }\n }\n c.fill();\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = null;\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n this.updatePathMinMax(transform, box[0], box[1]);\n this.updatePathMinMax(transform, box[2], box[3]);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData, transferMaps = null) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n let transferMapRed, transferMapGreen, transferMapBlue, transferMapGray;\n if (transferMaps) {\n switch (transferMaps.length) {\n case 1:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[0];\n transferMapBlue = transferMaps[0];\n transferMapGray = transferMaps[0];\n break;\n case 4:\n transferMapRed = transferMaps[0];\n transferMapGreen = transferMaps[1];\n transferMapBlue = transferMaps[2];\n transferMapGray = transferMaps[3];\n break;\n }\n }\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n let white = 0xffffffff;\n let black = IsLittleEndianCached.value ? 0xff000000 : 0x000000ff;\n\n if (transferMapGray) {\n if (transferMapGray[0] === 0xff && transferMapGray[0xff] === 0) {\n [white, black] = [black, white];\n }\n }\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n if (hasTransferMaps) {\n for (let k = 0; k < elemsInThisChunk; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n const hasTransferMaps = !!(\n transferMapRed ||\n transferMapGreen ||\n transferMapBlue\n );\n\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n if (hasTransferMaps) {\n for (let k = 0; k < destPos; k += 4) {\n if (transferMapRed) {\n dest[k + 0] = transferMapRed[dest[k + 0]];\n }\n if (transferMapGreen) {\n dest[k + 1] = transferMapGreen[dest[k + 1]];\n }\n if (transferMapBlue) {\n dest[k + 2] = transferMapBlue[dest[k + 2]];\n }\n }\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n let destPos = 3; // alpha component offset\n for (let j = 0; j < thisChunkHeight; j++) {\n let elem,\n mask = 0;\n for (let k = 0; k < width; k++) {\n if (!mask) {\n elem = src[srcPos++];\n mask = 128;\n }\n dest[destPos] = elem & mask ? 0 : 255;\n destPos += 4;\n mask >>= 1;\n }\n }\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n ];\n for (let i = 0, ii = properties.length; i < ii; i++) {\n const property = properties[i];\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = \"#000000\";\n ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n let composeFn;\n if (subtype === \"Luminosity\") {\n composeFn = composeSMaskLuminosity;\n } else {\n composeFn = composeSMaskAlpha;\n }\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n imageLayer,\n optionalContentConfig,\n annotationCanvasMap\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.imageLayer = imageLayer;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n if (canvasCtx) {\n // NOTE: if mozCurrentTransform is polyfilled, then the current state of\n // the transformation must already be set in canvasCtx._transformMatrix.\n addContextCurrentTransform(canvasCtx);\n }\n this._cachedGetSinglePixelWidth = null;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n this.ctx.save();\n this.ctx.fillStyle = background || \"rgb(255, 255, 255)\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.restore();\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height,\n true\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform.apply(this.ctx, transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform.apply(this.ctx, viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = this.ctx.mozCurrentTransform.slice();\n this._combinedScaleFactor = Math.hypot(\n this.baseTransform[0],\n this.baseTransform[2]\n );\n\n if (this.imageLayer) {\n this.imageLayer.beginLayout();\n }\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n endDrawing() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.current.activeSMask !== null) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n if (this.imageLayer) {\n this.imageLayer.endLayout();\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n newWidth = Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n newHeight = Math.ceil(paintHeight / 2);\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n putBinaryImageMask(maskCtx, img);\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n const objToCanvas = ctx.mozCurrentTransform;\n let maskToCanvas = Util.transform(objToCanvas, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const cord1 = Util.applyTransform([0, 0], maskToCanvas);\n const cord2 = Util.applyTransform([width, height], maskToCanvas);\n const rect = Util.normalizeRect([cord1[0], cord1[1], cord2[0], cord2[1]]);\n const drawnWidth = Math.ceil(rect[2] - rect[0]);\n const drawnHeight = Math.ceil(rect[3] - rect[1]);\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n true\n );\n const fillCtx = fillCanvas.context;\n // The offset will be the top-left cordinate mask.\n const offsetX = Math.min(cord1[0], cord2[0]);\n const offsetY = Math.min(cord1[1], cord2[1]);\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform.apply(fillCtx, maskToCanvas);\n // Pre-scale if needed to improve image smoothing.\n const scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n fillCtx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.img.width,\n scaled.img.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(fillCtx.mozCurrentTransformInverse, [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (let i = 0, ii = states.length; i < ii; i++) {\n const state = states[i];\n const key = state[0];\n const value = state[1];\n\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = state[1];\n break;\n case \"ca\":\n this.current.fillAlpha = state[1];\n this.ctx.globalAlpha = state[1];\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.current.transferMaps = value;\n }\n }\n }\n\n checkSMaskState() {\n const inSMaskMode = !!this.suspendedCtx;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.suspendedCtx) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform.apply(ctx, this.suspendedCtx.mozCurrentTransform);\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.suspendedCtx) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.current.activeSMask = null;\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n this.ctx.save();\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.current.activeSMask) {\n this.endSMaskMode();\n }\n\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n this.ctx.restore();\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, xw, yh);\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n current.updatePathMinMax(ctx.mozCurrentTransform, x, y);\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n ctx.mozCurrentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n const lineWidth = this.getSinglePixelWidth();\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n ctx.restore();\n } else {\n const lineWidth = this.getSinglePixelWidth();\n if (lineWidth < 0 && -lineWidth >= this.current.lineWidth) {\n // The current transform will transform a square pixel into a\n // parallelogram where both heights are lower than 1 and not equal.\n ctx.save();\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.stroke();\n ctx.restore();\n } else {\n // Prevent drawing too thin lines by enforcing a minimum line width.\n ctx.lineWidth = Math.max(lineWidth, this.current.lineWidth);\n ctx.stroke();\n }\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath) {\n consumePath = typeof consumePath !== \"undefined\" ? consumePath : true;\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (let i = 0; i < paths.length; i++) {\n const path = paths[i];\n ctx.setTransform.apply(ctx, path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n const typeface = `\"${name}\", ${fontObj.fallbackName}`;\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform, resetLineWidthToOne) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform.apply(ctx, patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n }\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (resetLineWidthToOne) {\n ctx.save();\n ctx.moveTo(x, y);\n ctx.resetTransform();\n ctx.lineWidth = Math.round(this._combinedScaleFactor);\n ctx.strokeText(character, 0, 0);\n ctx.restore();\n } else {\n ctx.strokeText(character, x, y);\n }\n }\n }\n\n if (isAddToPathSet) {\n const paths = this.pendingTextPaths || (this.pendingTextPaths = []);\n paths.push({\n transform: ctx.mozCurrentTransform,\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n );\n patternTransform = ctx.mozCurrentTransform;\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n let resetLineWidthToOne = false;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n this._cachedGetSinglePixelWidth = null;\n lineWidth = this.getSinglePixelWidth();\n resetLineWidthToOne = lineWidth < 0;\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (isNum(glyph)) {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(\n character,\n scaledX,\n scaledY,\n patternTransform,\n resetLineWidthToOne\n );\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform,\n resetLineWidthToOne\n );\n }\n }\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform.apply(ctx, current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (isNum(glyph)) {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform.apply(ctx, fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n // TODO According to the spec we're also suppose to ignore any operators\n // that set color or include images while processing this type3 font.\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform =\n this.baseTransform || this.ctx.mozCurrentTransform.slice();\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.objs.get(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.SHADING\n );\n\n const inv = ctx.mozCurrentTransformInverse;\n if (inv) {\n const canvas = ctx.canvas;\n const width = canvas.width;\n const height = canvas.height;\n\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform.apply(this, matrix);\n }\n\n this.baseTransform = this.ctx.mozCurrentTransform;\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[0],\n bbox[1]\n );\n this.current.updatePathMinMax(\n this.ctx.mozCurrentTransform,\n bbox[2],\n bbox[3]\n );\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n const suspendedCtx = this.suspendedCtx;\n if (this.current.activeSMask) {\n this.suspendedCtx = null;\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = currentCtx.mozCurrentTransform;\n if (group.matrix) {\n currentCtx.transform.apply(currentCtx, group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n currentCtx.mozCurrentTransform\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight,\n true\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform.apply(groupCtx, currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push({\n ctx: currentCtx,\n suspendedCtx,\n });\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const { ctx, suspendedCtx } = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (suspendedCtx) {\n this.suspendedCtx = suspendedCtx;\n }\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = this.ctx.mozCurrentTransform;\n this.restore();\n this.ctx.save();\n this.ctx.setTransform.apply(this.ctx, currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotations() {\n this.save();\n if (this.baseTransform) {\n this.ctx.setTransform.apply(this.ctx, this.baseTransform);\n }\n }\n\n endAnnotations() {\n this.restore();\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n this.save();\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n this.ctx.mozCurrentTransform\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n canvas.style.width = `calc(${width}px * var(--viewport-scale-factor))`;\n canvas.style.height = `calc(${height}px * var(--viewport-scale-factor))`;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n addContextCurrentTransform(this.ctx);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform.apply(this, transform);\n this.transform.apply(this, matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n this.restore();\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const width = img.width,\n height = img.height;\n\n const glyph = this.processingType3;\n\n if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {\n if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {\n glyph.compiled = compileType3Glyph({ data: img.data, width, height });\n } else {\n glyph.compiled = null;\n }\n }\n\n if (glyph?.compiled) {\n glyph.compiled(ctx);\n return;\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n imgData,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = ctx.mozCurrentTransform;\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(imgData);\n\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n for (let i = 0, ii = images.length; i < ii; i++) {\n const image = images[i];\n const width = image.width,\n height = image.height;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n putBinaryImageMask(maskCtx, image);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform.apply(ctx, image.transform);\n ctx.scale(1, -1);\n ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n // typeof check is needed due to node.js support, see issue #8489\n if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n imgToPaint = tmpCanvas.canvas;\n }\n\n const scaled = this._scaleImage(imgToPaint, ctx.mozCurrentTransformInverse);\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n ctx.mozCurrentTransform,\n imgData.interpolate\n );\n ctx.drawImage(\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n\n if (this.imageLayer) {\n const position = this.getCanvasPosition(0, -height);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: width / ctx.mozCurrentTransformInverse[0],\n height: height / ctx.mozCurrentTransformInverse[3],\n });\n }\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData, this.current.transferMaps);\n\n for (let i = 0, ii = map.length; i < ii; i++) {\n const entry = map[i];\n ctx.save();\n ctx.transform.apply(ctx, entry.transform);\n ctx.scale(1, -1);\n ctx.drawImage(\n tmpCanvas.canvas,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n if (this.imageLayer) {\n const position = this.getCanvasPosition(entry.x, entry.y);\n this.imageLayer.appendImage({\n imgData,\n left: position[0],\n top: position[1],\n width: w,\n height: h,\n });\n }\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (this._cachedGetSinglePixelWidth === null) {\n // If transform is [a b] then a pixel (square) is transformed\n // [c d]\n // into a parallelogram: its area is the abs value of the determinant.\n // This parallelogram has 2 heights:\n // - Area / |col_1|;\n // - Area / |col_2|.\n // so in order to get a height of at least 1, pixel height\n // must be computed as followed:\n // h = max(sqrt(a² + c²) / |det(M)|, sqrt(b² + d²) / |det(M)|).\n // This is equivalent to:\n // h = max(|line_1_inv(M)|, |line_2_inv(M)|)\n const m = this.ctx.mozCurrentTransform;\n\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const sqNorm1 = m[0] ** 2 + m[2] ** 2;\n const sqNorm2 = m[1] ** 2 + m[3] ** 2;\n const pixelHeight = Math.sqrt(Math.max(sqNorm1, sqNorm2)) / absDet;\n if (sqNorm1 !== sqNorm2 && this._combinedScaleFactor * pixelHeight > 1) {\n // The parallelogram isn't a square and at least one height\n // is lower than 1 so the resulting line width must be 1\n // but it cannot be achieved with one scale: when scaling a pixel\n // we'll get a rectangle (see issue #12295).\n // For example with matrix [0.001 0, 0, 100], a pixel is transformed\n // in a rectangle 0.001x100. If we just scale by 1000 (to have a 1)\n // then we'll get a rectangle 1x1e5 which is wrong.\n // In this case, we must reset the transform, set linewidth to 1\n // and then stroke.\n this._cachedGetSinglePixelWidth = -(\n this._combinedScaleFactor * pixelHeight\n );\n } else if (absDet > Number.EPSILON) {\n this._cachedGetSinglePixelWidth = pixelHeight;\n } else {\n // Matrix is non-invertible.\n this._cachedGetSinglePixelWidth = 1;\n }\n }\n\n return this._cachedGetSinglePixelWidth;\n }\n\n getCanvasPosition(x, y) {\n const transform = this.ctx.mozCurrentTransform;\n return [\n transform[0] * x + transform[2] * y + transform[4],\n transform[1] * x + transform[3] * y + transform[5],\n ];\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || typeof Path2D === \"undefined\") {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n ctx.mozCurrentTransform\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform.apply(tmpCtx, owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform.apply(tmpCtx, this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`RadialAxialShadingPattern.getPattern: \"${ex?.message}\".`);\n }\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n let k;\n if (y < y1) {\n k = 0;\n } else {\n k = (y1 - y) / (y1 - y2);\n }\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform);\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform.apply(ctx, owner.baseTransform);\n if (this.matrix) {\n ctx.transform.apply(ctx, this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static get MAX_PATTERN_SIZE() {\n return shadow(this, \"MAX_PATTERN_SIZE\", 3000);\n }\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 cordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = graphics.ctx.mozCurrentTransform.slice();\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n try {\n pattern.setTransform(domMatrix);\n } catch (ex) {\n // Avoid rendering breaking completely in Firefox 78 ESR,\n // and in Node.js (see issue 13724).\n warn(`TilingPattern.getPattern: \"${ex?.message}\".`);\n }\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort =\n GlobalWorkerOptions.workerPort === undefined\n ? null\n : GlobalWorkerOptions.workerPort;\n\nGlobalWorkerOptions.workerSrc =\n GlobalWorkerOptions.workerSrc === undefined\n ? \"\"\n : GlobalWorkerOptions.workerSrc;\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n PasswordException,\n UnexpectedResponseException,\n UnknownErrorException,\n warn,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n throw new Error(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n warn('wrapReason: Expected \"reason\" to be a (possibly cloned) Error.');\n return reason;\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this._processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this._createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = createPromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = createPromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = createPromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = createPromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n /**\n * @private\n */\n _createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = createPromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: createPromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n /**\n * @private\n */\n _processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull && streamSink.onPull());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this._deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(\n streamSink.onCancel && streamSink.onCancel(wrapReason(data.reason))\n );\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n /**\n * @private\n */\n async _deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall && streamController.startCall.promise,\n streamController.pullCall && streamController.pullCall.promise,\n streamController.cancelCall && streamController.cancelCall.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { objectFromMap, warn } from \"../shared/util.js\";\n\nclass OptionalContentGroup {\n constructor(name, intent) {\n this.visible = true;\n this.name = name;\n this.intent = intent;\n }\n}\n\nclass OptionalContentConfig {\n constructor(data) {\n this.name = null;\n this.creator = null;\n this._order = null;\n this._groups = new Map();\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this._order = data.order;\n for (const group of data.groups) {\n this._groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this._groups) {\n group.visible = false;\n }\n }\n\n for (const on of data.on) {\n this._groups.get(on).visible = true;\n }\n\n for (const off of data.off) {\n this._groups.get(off).visible = false;\n }\n }\n\n _evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this._evaluateVisibilityExpression(element);\n } else if (this._groups.has(element)) {\n state = this._groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this._groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this._groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this._groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this._evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this._groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this._groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this._groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this._groups.get(id).visible = !!visible;\n }\n\n getOrder() {\n if (!this._groups.size) {\n return null;\n }\n if (this._order) {\n return this._order.slice();\n }\n return Array.from(this._groups.keys());\n }\n\n getGroups() {\n return this._groups.size > 0 ? objectFromMap(this._groups) : null;\n }\n\n getGroup(id) {\n return this._groups.get(id) || null;\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, createPromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(params, pdfDataRangeTransport) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = params.progressiveDone || false;\n this._contentDispositionFilename =\n params.contentDispositionFilename || null;\n\n const initialData = params.initialData;\n if (initialData?.length > 0) {\n const buffer = new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !params.disableStream;\n this._isRangeSupported = !params.disableRange;\n this._contentLength = params.length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData(args) {\n const buffer = new Uint8Array(args.chunk).buffer;\n if (args.begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== args.begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n const firstReader = this._rangeReaders[0];\n if (firstReader?.onProgress) {\n firstReader.onProgress({ loaded: evt.loaded });\n }\n } else {\n const fullReader = this._fullRequestReader;\n if (fullReader?.onProgress) {\n fullReader.onProgress({ loaded: evt.loaded, total: evt.total });\n }\n }\n }\n\n _onProgressiveDone() {\n if (this._fullRequestReader) {\n this._fullRequestReader.progressiveDone();\n }\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationType,\n assert,\n shadow,\n stringToPDFString,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst GetElementsByNameSet = new WeakSet();\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {PDFPageProxy} page\n * @property {PageViewport} viewport\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n * @property {Object} [mouseState]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.page = parameters.page;\n this.viewport = parameters.viewport;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this._mouseState = parameters.mouseState;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this.quadrilaterals = this._createQuadrilaterals(ignoreBorder);\n }\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement}\n */\n _createContainer(ignoreBorder = false) {\n const data = this.data,\n page = this.page,\n viewport = this.viewport;\n const container = document.createElement(\"section\");\n let width = data.rect[2] - data.rect[0];\n let height = data.rect[3] - data.rect[1];\n\n container.setAttribute(\"data-annotation-id\", data.id);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (data.hasOwnCanvas) {\n const transform = viewport.transform.slice();\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(transform);\n width = Math.ceil(width * scaleX);\n height = Math.ceil(height * scaleY);\n rect[0] *= scaleX;\n rect[1] *= scaleY;\n // Reset the scale part of the transform matrix (which must be diagonal\n // or anti-diagonal) in order to avoid to rescale the canvas.\n // The canvas for the annotation is correctly scaled when it is drawn\n // (see `beginAnnotation` in canvas.js).\n for (let i = 0; i < 4; i++) {\n transform[i] = Math.sign(transform[i]);\n }\n container.style.transform = `matrix(${transform.join(\",\")})`;\n } else {\n container.style.transform = `matrix(${viewport.transform.join(\",\")})`;\n }\n\n container.style.transformOrigin = `${-rect[0]}px ${-rect[1]}px`;\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {\n // Underline styles only have a bottom border, so we do not need\n // to adjust for all borders. This yields a similar result as\n // Adobe Acrobat/Reader.\n width -= 2 * data.borderStyle.width;\n height -= 2 * data.borderStyle.width;\n }\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `${horizontalRadius}px / ${verticalRadius}px`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || data.color || null;\n if (borderColor) {\n container.style.borderColor = Util.makeHexColor(\n data.color[0] | 0,\n data.color[1] | 0,\n data.color[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${rect[0]}px`;\n container.style.top = `${rect[1]}px`;\n\n if (data.hasOwnCanvas) {\n container.style.width = container.style.height = \"auto\";\n } else {\n container.style.width = `${width}px`;\n container.style.height = `${height}px`;\n }\n return container;\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _createQuadrilaterals(ignoreBorder = false) {\n if (!this.data.quadPoints) {\n return null;\n }\n\n const quadrilaterals = [];\n const savedRect = this.data.rect;\n for (const quadPoint of this.data.quadPoints) {\n this.data.rect = [\n quadPoint[2].x,\n quadPoint[2].y,\n quadPoint[1].x,\n quadPoint[1].y,\n ];\n quadrilaterals.push(this._createContainer(ignoreBorder));\n }\n this.data.rect = savedRect;\n return quadrilaterals;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @param {HTMLDivElement|HTMLImageElement|null} trigger\n * @param {Object} data\n * @memberof AnnotationElement\n */\n _createPopup(trigger, data) {\n let container = this.container;\n if (this.quadrilaterals) {\n trigger = trigger || this.quadrilaterals;\n container = this.quadrilaterals[0];\n }\n\n // If no trigger element is specified, create it.\n if (!trigger) {\n trigger = document.createElement(\"div\");\n trigger.style.height = container.style.height;\n trigger.style.width = container.style.width;\n container.appendChild(trigger);\n }\n\n const popupElement = new PopupElement({\n container,\n trigger,\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n hideWrapper: true,\n });\n const popup = popupElement.render();\n\n // Position the popup next to the annotation's container.\n popup.style.left = container.style.width;\n\n container.appendChild(popup);\n }\n\n /**\n * Render the quadrilaterals of the annotation.\n *\n * @private\n * @param {string} className\n * @memberof AnnotationElement\n * @returns {Array<HTMLSectionElement>}\n */\n _renderQuadrilaterals(className) {\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(this.quadrilaterals, \"Missing quadrilaterals during rendering\");\n }\n\n for (const quadrilateral of this.quadrilaterals) {\n quadrilateral.className = className;\n }\n return this.quadrilaterals;\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n * @returns {HTMLSectionElement|Array<HTMLSectionElement>}\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.getElementById(id);\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { id, exportValue } = domElement;\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n static get platform() {\n const platform = typeof navigator !== \"undefined\" ? navigator.platform : \"\";\n\n return shadow(this, \"platform\", {\n isWin: platform.includes(\"Win\"),\n isMac: platform.includes(\"Mac\"),\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n const isRenderable = !!(\n parameters.data.url ||\n parameters.data.dest ||\n parameters.data.action ||\n parameters.data.isTooltipOnly ||\n parameters.data.resetForm ||\n (parameters.data.actions &&\n (parameters.data.actions.Action ||\n parameters.data.actions[\"Mouse Up\"] ||\n parameters.data.actions[\"Mouse Down\"]))\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n\n if (data.url) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"LinkAnnotationElement.render - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(link, data.url, data.newWindow);\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n } else {\n let hasClickAction = false;\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n hasClickAction = true;\n this._bindJSAction(link, data);\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n } else if (!hasClickAction) {\n this._bindLink(link, \"\");\n }\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"linkAnnotation\").map(\n (quadrilateral, index) => {\n const linkElement = index === 0 ? link : link.cloneNode();\n quadrilateral.appendChild(linkElement);\n return quadrilateral;\n }\n );\n }\n\n this.container.className = \"linkAnnotation\";\n this.container.appendChild(link);\n return this.container;\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n link.className = \"internalLink\";\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n link.className = \"internalLink\";\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n link.className = \"internalLink\";\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n link.className = \"internalLink\";\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n if (otherClickAction) {\n otherClickAction();\n }\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value, valueAsString: value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n const domElement = document.getElementById(id);\n if (!domElement || !GetElementsByNameSet.has(domElement)) {\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n this.container.className = \"textAnnotation\";\n\n const image = document.createElement(\"img\");\n image.style.height = this.container.style.height;\n image.style.width = this.container.style.width;\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.alt = \"[{{type}} Annotation]\";\n image.dataset.l10nId = \"text_annotation_type\";\n image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });\n\n if (!this.data.hasPopup) {\n this._createPopup(image, this.data);\n }\n\n this.container.appendChild(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n _getKeyModifier(event) {\n const { isWin, isMac } = AnnotationElement.platform;\n return (isWin && event.ctrlKey) || (isMac && event.metaKey);\n }\n\n _setEventListener(element, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non mouse event\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: event.target.checked,\n },\n });\n });\n }\n }\n\n _setEventListeners(element, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n this._setEventListener(element, baseName, eventName, getter);\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n event.target.style[styleName] = ColorConverters[`${color[0]}_HTML`](\n color.slice(1)\n );\n };\n\n const commonActions = {\n display: event => {\n const hidden = event.detail.display % 2 === 1;\n event.target.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden,\n print: event.detail.display === 0 || event.detail.display === 3,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n print: event.detail.print,\n });\n },\n hidden: event => {\n event.target.style.visibility = event.detail.hidden\n ? \"hidden\"\n : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n hidden: event.detail.hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n if (event.detail.readonly) {\n event.target.setAttribute(\"readonly\", \"\");\n } else {\n event.target.removeAttribute(\"readonly\");\n }\n },\n required: event => {\n if (event.detail.required) {\n event.target.setAttribute(\"required\", \"\");\n } else {\n event.target.removeAttribute(\"required\");\n }\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n };\n\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.className = \"textWidgetAnnotation\";\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n valueAsString: this.data.fieldValue,\n });\n const textContent = storedData.valueAsString || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n beforeInputSelectionRange: null,\n beforeInputValue: null,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = textContent;\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", textContent);\n }\n GetElementsByNameSet.add(element);\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n elementData.userValue = textContent;\n element.setAttribute(\"id\", id);\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue || \"\";\n element.value = elementData.userValue = defaultValue;\n delete elementData.formattedValue;\n });\n\n let blurListener = event => {\n if (elementData.formattedValue) {\n event.target.value = elementData.formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n elementData.beforeInputSelectionRange = null;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.userValue) {\n event.target.value = elementData.userValue;\n }\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value || \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n if (!elementData.formattedValue) {\n event.target.value = elementData.userValue;\n }\n },\n valueAsString(event) {\n elementData.formattedValue = event.detail.valueAsString || \"\";\n if (event.target !== document.activeElement) {\n // Input hasn't the focus so display formatted string\n event.target.value = elementData.formattedValue;\n }\n storage.setValue(id, {\n formattedValue: elementData.formattedValue,\n });\n },\n selRange(event) {\n const [selStart, selEnd] = event.detail.selRange;\n if (selStart >= 0 && selEnd < event.target.value.length) {\n event.target.setSelectionRange(selStart, selEnd);\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.beforeInputValue = event.target.value;\n // if the key is one of Escape, Enter or Tab\n // then the data are committed\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\") {\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n // Save the entered value\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (this._mouseState.isDown) {\n // Focus out using the mouse: data are committed\n elementData.userValue = event.target.value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: event.target.value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n element.addEventListener(\"mousedown\", event => {\n elementData.beforeInputValue = event.target.value;\n elementData.beforeInputSelectionRange = null;\n });\n element.addEventListener(\"keyup\", event => {\n // keyup is triggered after input\n if (event.target.selectionStart === event.target.selectionEnd) {\n elementData.beforeInputSelectionRange = null;\n }\n });\n element.addEventListener(\"select\", event => {\n elementData.beforeInputSelectionRange = [\n event.target.selectionStart,\n event.target.selectionEnd,\n ];\n });\n\n if (this.data.actions?.Keystroke) {\n // We should use beforeinput but this\n // event isn't available in Firefox\n element.addEventListener(\"input\", event => {\n let selStart = -1;\n let selEnd = -1;\n if (elementData.beforeInputSelectionRange) {\n [selStart, selEnd] = elementData.beforeInputSelectionRange;\n }\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: elementData.beforeInputValue,\n change: event.data,\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.maxLen !== null) {\n element.maxLength = this.data.maxLen;\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / this.data.maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontSize, fontColor } = this.data.defaultAppearanceData;\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n if (fontSize) {\n style.fontSize = `${fontSize}px`;\n }\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.className = \"buttonWidgetAnnotation checkBox\";\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"buttonWidgetAnnotation radioButton\";\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.disabled = data.readOnly;\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"id\", id);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n\n this.container.appendChild(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.className = \"buttonWidgetAnnotation pushButton\";\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.className = \"choiceWidgetAnnotation\";\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n // For printing/saving we currently only support choice widgets with one\n // option selection. Therefore, listboxes (#12189) and comboboxes (#12224)\n // are not properly printed/saved yet, so we only store the first item in\n // the field value array instead of the entire array. Once support for those\n // two field types is implemented, we should use the same pattern as the\n // other interactive widgets where the return value of `getValue`\n // is used and the full array of field values is stored.\n storage.getValue(id, {\n value:\n this.data.fieldValue.length > 0 ? this.data.fieldValue[0] : undefined,\n });\n\n let { fontSize } = this.data.defaultAppearanceData;\n if (!fontSize) {\n fontSize = 9;\n }\n const fontSizeStyle = `calc(${fontSize}px * var(--zoom-factor))`;\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.disabled = this.data.readOnly;\n selectElement.name = this.data.fieldName;\n selectElement.setAttribute(\"id\", id);\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n selectElement.style.fontSize = `${fontSize}px`;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (this.data.combo) {\n optionElement.style.fontSize = fontSizeStyle;\n }\n if (this.data.fieldValue.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n }\n selectElement.appendChild(optionElement);\n }\n\n const getValue = (event, isExport) => {\n const name = isExport ? \"value\" : \"textContent\";\n const options = event.target.options;\n if (!event.target.multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.insertBefore(\n optionElement,\n selectElement.children[index]\n );\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.appendChild(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n items: getItems(event),\n });\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(event, /* isExport */ true),\n });\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(event, /* isExport */ true);\n const value = getValue(event, /* isExport */ false);\n storage.setValue(id, { value: exportValue });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n changeEx: exportValue,\n willCommit: true,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n ],\n event => event.target.checked\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(event) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n\n this.container.appendChild(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable });\n }\n\n render() {\n // Do not render popup annotations for parent elements with these types as\n // they create the popups themselves (because of custom trigger divs).\n const IGNORE_TYPES = [\n \"Line\",\n \"Square\",\n \"Circle\",\n \"PolyLine\",\n \"Polygon\",\n \"Ink\",\n ];\n\n this.container.className = \"popupAnnotation\";\n\n if (IGNORE_TYPES.includes(this.data.parentType)) {\n return this.container;\n }\n\n const selector = `[data-annotation-id=\"${this.data.parentId}\"]`;\n const parentElements = this.layer.querySelectorAll(selector);\n if (parentElements.length === 0) {\n return this.container;\n }\n\n const popup = new PopupElement({\n container: this.container,\n trigger: Array.from(parentElements),\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n });\n\n // Position the popup next to the parent annotation's container.\n // PDF viewers ignore a popup annotation's rectangle.\n const page = this.page;\n const rect = Util.normalizeRect([\n this.data.parentRect[0],\n page.view[3] - this.data.parentRect[1] + page.view[1],\n this.data.parentRect[2],\n page.view[3] - this.data.parentRect[3] + page.view[1],\n ]);\n const popupLeft =\n rect[0] + this.data.parentRect[2] - this.data.parentRect[0];\n const popupTop = rect[1];\n\n this.container.style.transformOrigin = `${-popupLeft}px ${-popupTop}px`;\n this.container.style.left = `${popupLeft}px`;\n this.container.style.top = `${popupTop}px`;\n\n this.container.appendChild(popup.render());\n return this.container;\n }\n}\n\nclass PopupElement {\n constructor(parameters) {\n this.container = parameters.container;\n this.trigger = parameters.trigger;\n this.color = parameters.color;\n this.titleObj = parameters.titleObj;\n this.modificationDate = parameters.modificationDate;\n this.contentsObj = parameters.contentsObj;\n this.richText = parameters.richText;\n this.hideWrapper = parameters.hideWrapper || false;\n\n this.pinned = false;\n }\n\n render() {\n const BACKGROUND_ENLIGHT = 0.7;\n\n const wrapper = document.createElement(\"div\");\n wrapper.className = \"popupWrapper\";\n\n // For Popup annotations we hide the entire section because it contains\n // only the popup. However, for Text annotations without a separate Popup\n // annotation, we cannot hide the entire container as the image would\n // disappear too. In that special case, hiding the wrapper suffices.\n this.hideElement = this.hideWrapper ? wrapper : this.container;\n this.hideElement.hidden = true;\n\n const popup = document.createElement(\"div\");\n popup.className = \"popup\";\n\n const color = this.color;\n if (color) {\n // Enlighten the color.\n const r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];\n const g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];\n const b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];\n popup.style.backgroundColor = Util.makeHexColor(r | 0, g | 0, b | 0);\n }\n\n const title = document.createElement(\"h1\");\n title.dir = this.titleObj.dir;\n title.textContent = this.titleObj.str;\n popup.appendChild(title);\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n const dateObject = PDFDateString.toDateObject(this.modificationDate);\n if (dateObject) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.className = \"popupDate\";\n modificationDate.textContent = \"{{date}}, {{time}}\";\n modificationDate.dataset.l10nId = \"annotation_date_string\";\n modificationDate.dataset.l10nArgs = JSON.stringify({\n date: dateObject.toLocaleDateString(),\n time: dateObject.toLocaleTimeString(),\n });\n popup.appendChild(modificationDate);\n }\n\n if (\n this.richText?.str &&\n (!this.contentsObj?.str || this.contentsObj.str === this.richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: this.richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.className = \"richText popupContent\";\n } else {\n const contents = this._formatContents(this.contentsObj);\n popup.appendChild(contents);\n }\n\n if (!Array.isArray(this.trigger)) {\n this.trigger = [this.trigger];\n }\n\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this._toggle.bind(this));\n element.addEventListener(\"mouseover\", this._show.bind(this, false));\n element.addEventListener(\"mouseout\", this._hide.bind(this, false));\n }\n popup.addEventListener(\"click\", this._hide.bind(this, true));\n\n wrapper.appendChild(popup);\n return wrapper;\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.className = \"popupContent\";\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.appendChild(document.createTextNode(line));\n if (i < ii - 1) {\n p.appendChild(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n /**\n * Toggle the visibility of the popup.\n *\n * @private\n * @memberof PopupElement\n */\n _toggle() {\n if (this.pinned) {\n this._hide(true);\n } else {\n this._show(true);\n }\n }\n\n /**\n * Show the popup.\n *\n * @private\n * @param {boolean} pin\n * @memberof PopupElement\n */\n _show(pin = false) {\n if (pin) {\n this.pinned = true;\n }\n if (this.hideElement.hidden) {\n this.hideElement.hidden = false;\n this.container.style.zIndex += 1;\n }\n }\n\n /**\n * Hide the popup.\n *\n * @private\n * @param {boolean} unpin\n * @memberof PopupElement\n */\n _hide(unpin = true) {\n if (unpin) {\n this.pinned = false;\n }\n if (!this.hideElement.hidden && !this.pinned) {\n this.hideElement.hidden = true;\n this.container.style.zIndex -= 1;\n }\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"freeTextAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"lineAnnotation\";\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = this.svgFactory.createElement(\"svg:line\");\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n this._createPopup(line, data);\n\n return this.container;\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"squareAnnotation\";\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = this.svgFactory.createElement(\"svg:rect\");\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n this._createPopup(square, data);\n\n return this.container;\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"circleAnnotation\";\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = this.svgFactory.createElement(\"svg:ellipse\");\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n this._createPopup(circle, data);\n\n return this.container;\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.appendChild(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n return this.container;\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"caretAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.className = this.containerClassName;\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const width = data.rect[2] - data.rect[0];\n const height = data.rect[3] - data.rect[1];\n const svg = this.svgFactory.create(width, height);\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n this._createPopup(polyline, data);\n\n svg.appendChild(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"highlightAnnotation\");\n }\n\n this.container.className = \"highlightAnnotation\";\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"underlineAnnotation\");\n }\n\n this.container.className = \"underlineAnnotation\";\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"squigglyAnnotation\");\n }\n\n this.container.className = \"squigglyAnnotation\";\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, {\n isRenderable,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n\n if (this.quadrilaterals) {\n return this._renderQuadrilaterals(\"strikeoutAnnotation\");\n }\n\n this.container.className = \"strikeoutAnnotation\";\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const isRenderable = !!(\n parameters.data.hasPopup ||\n parameters.data.titleObj?.str ||\n parameters.data.contentsObj?.str ||\n parameters.data.richText?.str\n );\n super(parameters, { isRenderable, ignoreBorder: true });\n }\n\n render() {\n this.container.className = \"stampAnnotation\";\n\n if (!this.data.hasPopup) {\n this._createPopup(null, this.data);\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n id: stringToPDFString(filename),\n filename,\n content,\n });\n }\n\n render() {\n this.container.className = \"fileAttachmentAnnotation\";\n\n const trigger = document.createElement(\"div\");\n trigger.style.height = this.container.style.height;\n trigger.style.width = this.container.style.width;\n trigger.addEventListener(\"dblclick\", this._download.bind(this));\n\n if (\n !this.data.hasPopup &&\n (this.data.titleObj?.str ||\n this.data.contentsObj?.str ||\n this.data.richText)\n ) {\n this._createPopup(trigger, this.data);\n }\n\n this.container.appendChild(trigger);\n return this.container;\n }\n\n /**\n * Download the file attachment associated with this annotation.\n *\n * @private\n * @memberof FileAttachmentAnnotationElement\n */\n _download() {\n this.downloadManager?.openOrDownloadData(\n this.container,\n this.content,\n this.filename\n );\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n */\n\nclass AnnotationLayer {\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static render(parameters) {\n const sortedAnnotations = [],\n popupAnnotations = [];\n // Ensure that Popup annotations are handled last, since they're dependant\n // upon the parent annotation having already been rendered (please refer to\n // the `PopupAnnotationElement.render` method); fixes issue 11362.\n for (const data of parameters.annotations) {\n if (!data) {\n continue;\n }\n if (data.annotationType === AnnotationType.POPUP) {\n popupAnnotations.push(data);\n continue;\n }\n sortedAnnotations.push(data);\n }\n if (popupAnnotations.length) {\n sortedAnnotations.push(...popupAnnotations);\n }\n\n const div = parameters.div;\n\n for (const data of sortedAnnotations) {\n const element = AnnotationElementFactory.create({\n data,\n layer: div,\n page: parameters.page,\n viewport: parameters.viewport,\n linkService: parameters.linkService,\n downloadManager: parameters.downloadManager,\n imageResourcesPath: parameters.imageResourcesPath || \"\",\n renderForms: parameters.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage:\n parameters.annotationStorage || new AnnotationStorage(),\n enableScripting: parameters.enableScripting,\n hasJSActions: parameters.hasJSActions,\n fieldObjects: parameters.fieldObjects,\n mouseState: parameters.mouseState || { isDown: false },\n });\n if (element.isRenderable) {\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n if (Array.isArray(rendered)) {\n for (const renderedElement of rendered) {\n div.appendChild(renderedElement);\n }\n } else {\n if (element instanceof PopupAnnotationElement) {\n // Popup annotation elements should not be on top of other\n // annotation elements to prevent interfering with mouse events.\n div.prepend(rendered);\n } else {\n div.appendChild(rendered);\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, parameters.annotationCanvasMap);\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @public\n * @param {AnnotationLayerParameters} parameters\n * @memberof AnnotationLayer\n */\n static update(parameters) {\n const { page, viewport, annotations, annotationCanvasMap, div } =\n parameters;\n const transform = viewport.transform;\n const matrix = `matrix(${transform.join(\",\")})`;\n\n let scale, ownMatrix;\n for (const data of annotations) {\n const elements = div.querySelectorAll(\n `[data-annotation-id=\"${data.id}\"]`\n );\n if (elements) {\n for (const element of elements) {\n if (data.hasOwnCanvas) {\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ownMatrix) {\n // When an annotation has its own canvas, then\n // the scale has been already applied to the canvas,\n // so we musn't scale it twice.\n scale = Math.abs(transform[0] || transform[1]);\n const ownTransform = transform.slice();\n for (let i = 0; i < 4; i++) {\n ownTransform[i] = Math.sign(ownTransform[i]);\n }\n ownMatrix = `matrix(${ownTransform.join(\",\")})`;\n }\n\n const left = rect[0] * scale;\n const top = rect[1] * scale;\n element.style.left = `${left}px`;\n element.style.top = `${top}px`;\n element.style.transformOrigin = `${-left}px ${-top}px`;\n element.style.transform = ownMatrix;\n } else {\n element.style.transform = matrix;\n }\n }\n }\n }\n\n this.#setAnnotationCanvasMap(div, annotationCanvasMap);\n div.hidden = false;\n }\n\n static #setAnnotationCanvasMap(div, annotationCanvasMap) {\n if (!annotationCanvasMap) {\n return;\n }\n for (const [id, canvas] of annotationCanvasMap) {\n const element = div.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (firstChild.nodeName === \"CANVAS\") {\n element.replaceChild(canvas, firstChild);\n } else {\n element.insertBefore(canvas, firstChild);\n }\n }\n annotationCanvasMap.clear();\n }\n}\n\nexport { AnnotationLayer };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\n// PDF specifications section 10.3\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 return \"#00000000\";\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\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\nexport { ColorConverters };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { warn } from \"../shared/util.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n if (value === null || value === undefined || key === \"dataId\") {\n continue;\n }\n\n if (key !== \"style\") {\n if (key === \"textContent\") {\n html.textContent = value;\n } else if (key === \"class\") {\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n } else {\n if (isHTMLAnchorElement && (key === \"href\" || key === \"newWindow\")) {\n continue; // Handled below.\n }\n html.setAttribute(key, value);\n }\n } else {\n Object.assign(html.style, value);\n }\n }\n\n if (isHTMLAnchorElement) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n !linkService.addLinkAttributes\n ) {\n warn(\n \"XfaLayer.setAttribute - missing `addLinkAttributes`-method on the `linkService`-instance.\"\n );\n }\n linkService.addLinkAttributes?.(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure overwrite\n // any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n const stack = [[root, -1, rootHtml]];\n\n const rootDiv = parameters.div;\n rootDiv.appendChild(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (intent !== \"richText\") {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack[stack.length - 1];\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack[stack.length - 1][1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.appendChild(node);\n continue;\n }\n\n let childHtml;\n if (child?.attributes?.xmlns) {\n childHtml = document.createElementNS(child.attributes.xmlns, name);\n } else {\n childHtml = document.createElement(name);\n }\n\n html.appendChild(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children && child.children.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.appendChild(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n createPromiseCapability,\n Util,\n} from \"../shared/util.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {import(\"./api\").TextContent} [textContent] - Text content to\n * render (the object is returned by the page's `getTextContent` method).\n * @property {ReadableStream} [textContentStream] - Text content stream to\n * render (the stream is returned by the page's `streamTextContent` method).\n * @property {HTMLElement} container - HTML element that will contain text runs.\n * @property {import(\"./display_utils\").PageViewport} viewport - The target\n * viewport to properly layout the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that are correspond\n * to the text items of the textContent input. This is output and shall be\n * initially be set to empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of textContent input. This is output\n * and shall be initially be set to empty array.\n * @property {number} [timeout] - Delay in milliseconds before rendering of the\n * text runs occurs.\n * @property {boolean} [enhanceTextSelection] - Whether to turn on the text\n * selection enhancement.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\nconst AllWhitespaceRegexp = /^\\s+$/g;\n\nfunction getAscent(fontFamily, ctx) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n ctx.save();\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n ctx.restore();\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.restore();\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles, ctx) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = task._enhanceTextSelection\n ? {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n originalTransform: null,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0,\n paddingTop: 0,\n scale: 1,\n }\n : {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n };\n\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._viewport.transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent = fontHeight * getAscent(style.fontFamily, ctx);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n textDiv.style.left = `${left}px`;\n textDiv.style.top = `${top}px`;\n textDiv.style.fontSize = `${fontHeight}px`;\n textDiv.style.fontFamily = style.fontFamily;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName = geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (\n geom.str.length > 1 ||\n (task._enhanceTextSelection && AllWhitespaceRegexp.test(geom.str))\n ) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n if (style.vertical) {\n textDivProperties.canvasWidth = geom.height * task._viewport.scale;\n } else {\n textDivProperties.canvasWidth = geom.width * task._viewport.scale;\n }\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._textContentStream) {\n task._layoutText(textDiv);\n }\n\n if (task._enhanceTextSelection && textDivProperties.hasText) {\n let angleCos = 1,\n angleSin = 0;\n if (angle !== 0) {\n angleCos = Math.cos(angle);\n angleSin = Math.sin(angle);\n }\n const divWidth =\n (style.vertical ? geom.height : geom.width) * task._viewport.scale;\n const divHeight = fontHeight;\n\n let m, b;\n if (angle !== 0) {\n m = [angleCos, angleSin, -angleSin, angleCos, left, top];\n b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);\n } else {\n b = [left, top, left + divWidth, top + divHeight];\n }\n\n task._bounds.push({\n left: b[0],\n top: b[1],\n right: b[2],\n bottom: b[3],\n div: textDiv,\n size: [divWidth, divHeight],\n m,\n });\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n task._renderingDone = true;\n capability.resolve();\n return;\n }\n\n if (!task._textContentStream) {\n for (let i = 0; i < textDivsLength; i++) {\n task._layoutText(textDivs[i]);\n }\n }\n\n task._renderingDone = true;\n capability.resolve();\n}\n\nfunction findPositiveMin(ts, offset, count) {\n let result = 0;\n for (let i = 0; i < count; i++) {\n const t = ts[offset++];\n if (t > 0) {\n result = result ? Math.min(t, result) : t;\n }\n }\n return result;\n}\n\nfunction expand(task) {\n const bounds = task._bounds;\n const viewport = task._viewport;\n\n const expanded = expandBounds(viewport.width, viewport.height, bounds);\n for (let i = 0; i < expanded.length; i++) {\n const div = bounds[i].div;\n const divProperties = task._textDivProperties.get(div);\n if (divProperties.angle === 0) {\n divProperties.paddingLeft = bounds[i].left - expanded[i].left;\n divProperties.paddingTop = bounds[i].top - expanded[i].top;\n divProperties.paddingRight = expanded[i].right - bounds[i].right;\n divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;\n task._textDivProperties.set(div, divProperties);\n continue;\n }\n // Box is rotated -- trying to find padding so rotated div will not\n // exceed its expanded bounds.\n const e = expanded[i],\n b = bounds[i];\n const m = b.m,\n c = m[0],\n s = m[1];\n // Finding intersections with expanded box.\n const points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size];\n const ts = new Float64Array(64);\n for (let j = 0, jj = points.length; j < jj; j++) {\n const t = Util.applyTransform(points[j], m);\n ts[j + 0] = c && (e.left - t[0]) / c;\n ts[j + 4] = s && (e.top - t[1]) / s;\n ts[j + 8] = c && (e.right - t[0]) / c;\n ts[j + 12] = s && (e.bottom - t[1]) / s;\n\n ts[j + 16] = s && (e.left - t[0]) / -s;\n ts[j + 20] = c && (e.top - t[1]) / c;\n ts[j + 24] = s && (e.right - t[0]) / -s;\n ts[j + 28] = c && (e.bottom - t[1]) / c;\n\n ts[j + 32] = c && (e.left - t[0]) / -c;\n ts[j + 36] = s && (e.top - t[1]) / -s;\n ts[j + 40] = c && (e.right - t[0]) / -c;\n ts[j + 44] = s && (e.bottom - t[1]) / -s;\n\n ts[j + 48] = s && (e.left - t[0]) / s;\n ts[j + 52] = c && (e.top - t[1]) / -c;\n ts[j + 56] = s && (e.right - t[0]) / s;\n ts[j + 60] = c && (e.bottom - t[1]) / -c;\n }\n // Not based on math, but to simplify calculations, using cos and sin\n // absolute values to not exceed the box (it can but insignificantly).\n const boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));\n divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;\n divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;\n divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;\n divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;\n task._textDivProperties.set(div, divProperties);\n }\n}\n\nfunction expandBounds(width, height, boxes) {\n const bounds = boxes.map(function (box, i) {\n return {\n x1: box.left,\n y1: box.top,\n x2: box.right,\n y2: box.bottom,\n index: i,\n x1New: undefined,\n x2New: undefined,\n };\n });\n expandBoundsLTR(width, bounds);\n\n const expanded = new Array(boxes.length);\n for (const b of bounds) {\n const i = b.index;\n expanded[i] = {\n left: b.x1New,\n top: 0,\n right: b.x2New,\n bottom: 0,\n };\n }\n\n // Rotating on 90 degrees and extending extended boxes. Reusing the bounds\n // array and objects.\n boxes.map(function (box, i) {\n const e = expanded[i],\n b = bounds[i];\n b.x1 = box.top;\n b.y1 = width - e.right;\n b.x2 = box.bottom;\n b.y2 = width - e.left;\n b.index = i;\n b.x1New = undefined;\n b.x2New = undefined;\n });\n expandBoundsLTR(height, bounds);\n\n for (const b of bounds) {\n const i = b.index;\n expanded[i].top = b.x1New;\n expanded[i].bottom = b.x2New;\n }\n return expanded;\n}\n\nfunction expandBoundsLTR(width, bounds) {\n // Sorting by x1 coordinate and walk by the bounds in the same order.\n bounds.sort(function (a, b) {\n return a.x1 - b.x1 || a.index - b.index;\n });\n\n // First we see on the horizon is a fake boundary.\n const fakeBoundary = {\n x1: -Infinity,\n y1: -Infinity,\n x2: 0,\n y2: Infinity,\n index: -1,\n x1New: 0,\n x2New: 0,\n };\n const horizon = [\n {\n start: -Infinity,\n end: Infinity,\n boundary: fakeBoundary,\n },\n ];\n\n for (const boundary of bounds) {\n // Searching for the affected part of horizon.\n // TODO red-black tree or simple binary search\n let i = 0;\n while (i < horizon.length && horizon[i].end <= boundary.y1) {\n i++;\n }\n let j = horizon.length - 1;\n while (j >= 0 && horizon[j].start >= boundary.y2) {\n j--;\n }\n\n let horizonPart, affectedBoundary;\n let q,\n k,\n maxXNew = -Infinity;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n let xNew;\n if (affectedBoundary.x2 > boundary.x1) {\n // In the middle of the previous element, new x shall be at the\n // boundary start. Extending if further if the affected boundary\n // placed on top of the current one.\n xNew =\n affectedBoundary.index > boundary.index\n ? affectedBoundary.x1New\n : boundary.x1;\n } else if (affectedBoundary.x2New === undefined) {\n // We have some space in between, new x in middle will be a fair\n // choice.\n xNew = (affectedBoundary.x2 + boundary.x1) / 2;\n } else {\n // Affected boundary has x2new set, using it as new x.\n xNew = affectedBoundary.x2New;\n }\n if (xNew > maxXNew) {\n maxXNew = xNew;\n }\n }\n\n // Set new x1 for current boundary.\n boundary.x1New = maxXNew;\n\n // Adjusts new x2 for the affected boundaries.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n // Was not set yet, choosing new x if possible.\n if (affectedBoundary.x2 > boundary.x1) {\n // Current and affected boundaries intersect. If affected boundary\n // is placed on top of the current, shrinking the affected.\n if (affectedBoundary.index > boundary.index) {\n affectedBoundary.x2New = affectedBoundary.x2;\n }\n } else {\n affectedBoundary.x2New = maxXNew;\n }\n } else if (affectedBoundary.x2New > maxXNew) {\n // Affected boundary is touching new x, pushing it back.\n affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);\n }\n }\n\n // Fixing the horizon.\n const changedHorizon = [];\n let lastBoundary = null;\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n // Checking which boundary will be visible.\n const useBoundary =\n affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;\n if (lastBoundary === useBoundary) {\n // Merging with previous.\n changedHorizon[changedHorizon.length - 1].end = horizonPart.end;\n } else {\n changedHorizon.push({\n start: horizonPart.start,\n end: horizonPart.end,\n boundary: useBoundary,\n });\n lastBoundary = useBoundary;\n }\n }\n if (horizon[i].start < boundary.y1) {\n changedHorizon[0].start = boundary.y1;\n changedHorizon.unshift({\n start: horizon[i].start,\n end: boundary.y1,\n boundary: horizon[i].boundary,\n });\n }\n if (boundary.y2 < horizon[j].end) {\n changedHorizon[changedHorizon.length - 1].end = boundary.y2;\n changedHorizon.push({\n start: boundary.y2,\n end: horizon[j].end,\n boundary: horizon[j].boundary,\n });\n }\n\n // Set x2 new of boundary that is no longer visible (see overlapping case\n // above).\n // TODO more efficient, e.g. via reference counting.\n for (q = i; q <= j; q++) {\n horizonPart = horizon[q];\n affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New !== undefined) {\n continue;\n }\n let used = false;\n for (\n k = i - 1;\n !used && k >= 0 && horizon[k].start >= affectedBoundary.y1;\n k--\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (\n k = j + 1;\n !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2;\n k++\n ) {\n used = horizon[k].boundary === affectedBoundary;\n }\n for (k = 0; !used && k < changedHorizon.length; k++) {\n used = changedHorizon[k].boundary === affectedBoundary;\n }\n if (!used) {\n affectedBoundary.x2New = maxXNew;\n }\n }\n\n Array.prototype.splice.apply(\n horizon,\n [i, j - i + 1].concat(changedHorizon)\n );\n }\n\n // Set new x2 for all unset boundaries.\n for (const horizonPart of horizon) {\n const affectedBoundary = horizonPart.boundary;\n if (affectedBoundary.x2New === undefined) {\n affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);\n }\n }\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContent,\n textContentStream,\n container,\n viewport,\n textDivs,\n textContentItemsStr,\n enhanceTextSelection,\n }) {\n this._textContent = textContent;\n this._textContentStream = textContentStream;\n this._container = container;\n this._document = container.ownerDocument;\n this._viewport = viewport;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._enhanceTextSelection = !!enhanceTextSelection;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._layoutTextLastFontSize = null;\n this._layoutTextLastFontFamily = null;\n this._layoutTextCtx = null;\n this._textDivProperties = new WeakMap();\n this._renderingDone = false;\n this._canceled = false;\n this._capability = createPromiseCapability();\n this._renderTimer = null;\n this._bounds = [];\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n if (!this._enhanceTextSelection) {\n // The `textDiv` properties are no longer needed.\n this._textDivProperties = null;\n }\n\n if (this._layoutTextCtx) {\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n this._layoutTextCtx.canvas.width = 0;\n this._layoutTextCtx.canvas.height = 0;\n this._layoutTextCtx = null;\n }\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n if (this._renderTimer !== null) {\n clearTimeout(this._renderTimer);\n this._renderTimer = null;\n }\n this._capability.reject(new Error(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (let i = 0, len = items.length; i < len; i++) {\n if (items[i].str === undefined) {\n if (\n items[i].type === \"beginMarkedContentProps\" ||\n items[i].type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (items[i].id !== null) {\n this._container.setAttribute(\"id\", `${items[i].id}`);\n }\n parent.appendChild(this._container);\n } else if (items[i].type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(items[i].str);\n appendText(this, items[i], styleCache, this._layoutTextCtx);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = this._textDivProperties.get(textDiv);\n\n let transform = \"\";\n if (textDivProperties.canvasWidth !== 0 && textDivProperties.hasText) {\n const { fontSize, fontFamily } = textDiv.style;\n\n // Only build font string and set to context if different from last.\n if (\n fontSize !== this._layoutTextLastFontSize ||\n fontFamily !== this._layoutTextLastFontFamily\n ) {\n this._layoutTextCtx.font = `${fontSize} ${fontFamily}`;\n this._layoutTextLastFontSize = fontSize;\n this._layoutTextLastFontFamily = fontFamily;\n }\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = this._layoutTextCtx.measureText(textDiv.textContent);\n\n if (width > 0) {\n const scale = textDivProperties.canvasWidth / width;\n if (this._enhanceTextSelection) {\n textDivProperties.scale = scale;\n }\n transform = `scaleX(${scale})`;\n }\n }\n if (textDivProperties.angle !== 0) {\n transform = `rotate(${textDivProperties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n if (this._enhanceTextSelection) {\n textDivProperties.originalTransform = transform;\n }\n textDiv.style.transform = transform;\n }\n\n if (textDivProperties.hasText) {\n this._container.appendChild(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.appendChild(br);\n }\n }\n\n /**\n * @private\n */\n _render(timeout = 0) {\n const capability = createPromiseCapability();\n let styleCache = Object.create(null);\n\n // The temporary canvas is used to measure text length in the DOM.\n const canvas = this._document.createElement(\"canvas\");\n canvas.height = canvas.width = DEFAULT_FONT_SIZE;\n\n if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"MOZCENTRAL || GENERIC\")\n ) {\n canvas.mozOpaque = true;\n }\n this._layoutTextCtx = canvas.getContext(\"2d\", { alpha: false });\n\n if (this._textContent) {\n const textItems = this._textContent.items;\n const textStyles = this._textContent.styles;\n this._processItems(textItems, textStyles);\n capability.resolve();\n } else if (this._textContentStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentStream.getReader();\n pump();\n } else {\n throw new Error(\n 'Neither \"textContent\" nor \"textContentStream\" parameters specified.'\n );\n }\n\n capability.promise.then(() => {\n styleCache = null;\n if (!timeout) {\n // Render right away\n render(this);\n } else {\n // Schedule\n this._renderTimer = setTimeout(() => {\n render(this);\n this._renderTimer = null;\n }, timeout);\n }\n }, this._capability.reject);\n }\n\n /**\n * @param {boolean} [expandDivs]\n */\n expandTextDivs(expandDivs = false) {\n if (!this._enhanceTextSelection || !this._renderingDone) {\n return;\n }\n if (this._bounds !== null) {\n expand(this);\n this._bounds = null;\n }\n const transformBuf = [],\n paddingBuf = [];\n\n for (let i = 0, ii = this._textDivs.length; i < ii; i++) {\n const div = this._textDivs[i];\n const divProps = this._textDivProperties.get(div);\n\n if (!divProps.hasText) {\n continue;\n }\n if (expandDivs) {\n transformBuf.length = 0;\n paddingBuf.length = 0;\n\n if (divProps.originalTransform) {\n transformBuf.push(divProps.originalTransform);\n }\n if (divProps.paddingTop > 0) {\n paddingBuf.push(`${divProps.paddingTop}px`);\n transformBuf.push(`translateY(${-divProps.paddingTop}px)`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingRight > 0) {\n paddingBuf.push(`${divProps.paddingRight / divProps.scale}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingBottom > 0) {\n paddingBuf.push(`${divProps.paddingBottom}px`);\n } else {\n paddingBuf.push(0);\n }\n if (divProps.paddingLeft > 0) {\n paddingBuf.push(`${divProps.paddingLeft / divProps.scale}px`);\n transformBuf.push(\n `translateX(${-divProps.paddingLeft / divProps.scale}px)`\n );\n } else {\n paddingBuf.push(0);\n }\n\n div.style.padding = paddingBuf.join(\" \");\n if (transformBuf.length) {\n div.style.transform = transformBuf.join(\" \");\n }\n } else {\n div.style.padding = null;\n div.style.transform = divProps.originalTransform;\n }\n }\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} renderParameters\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(renderParameters) {\n const task = new TextLayerRenderTask({\n textContent: renderParameters.textContent,\n textContentStream: renderParameters.textContentStream,\n container: renderParameters.container,\n viewport: renderParameters.viewport,\n textDivs: renderParameters.textDivs,\n textContentItemsStr: renderParameters.textContentItemsStr,\n enhanceTextSelection: renderParameters.enhanceTextSelection,\n });\n task._render(renderParameters.timeout);\n return task;\n}\n\nexport { renderTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n createObjectURL,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n isNum,\n OPS,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\n/** @type {any} */\nlet SVGGraphics = class {\n constructor() {\n unreachable(\"Not implemented: SVGGraphics\");\n }\n};\n\nif (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || GENERIC\")\n) {\n const SVG_DEFAULTS = {\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n fillColor: \"#000000\",\n };\n const XML_NS = \"http://www.w3.org/XML/1998/namespace\";\n const XLINK_NS = \"http://www.w3.org/1999/xlink\";\n const LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\n const LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\n\n const convertImgDataToPng = (function () {\n const PNG_HEADER = new Uint8Array([\n 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a,\n ]);\n const CHUNK_WRAPPER_SIZE = 12;\n\n const crcTable = new Int32Array(256);\n for (let i = 0; i < 256; i++) {\n let c = i;\n for (let h = 0; h < 8; h++) {\n if (c & 1) {\n c = 0xedb88320 ^ ((c >> 1) & 0x7fffffff);\n } else {\n c = (c >> 1) & 0x7fffffff;\n }\n }\n crcTable[i] = c;\n }\n\n function crc32(data, start, end) {\n let crc = -1;\n for (let i = start; i < end; i++) {\n const a = (crc ^ data[i]) & 0xff;\n const b = crcTable[a];\n crc = (crc >>> 8) ^ b;\n }\n return crc ^ -1;\n }\n\n function writePngChunk(type, body, data, offset) {\n let p = offset;\n const len = body.length;\n\n data[p] = (len >> 24) & 0xff;\n data[p + 1] = (len >> 16) & 0xff;\n data[p + 2] = (len >> 8) & 0xff;\n data[p + 3] = len & 0xff;\n p += 4;\n\n data[p] = type.charCodeAt(0) & 0xff;\n data[p + 1] = type.charCodeAt(1) & 0xff;\n data[p + 2] = type.charCodeAt(2) & 0xff;\n data[p + 3] = type.charCodeAt(3) & 0xff;\n p += 4;\n\n data.set(body, p);\n p += body.length;\n\n const crc = crc32(data, offset + 4, p);\n data[p] = (crc >> 24) & 0xff;\n data[p + 1] = (crc >> 16) & 0xff;\n data[p + 2] = (crc >> 8) & 0xff;\n data[p + 3] = crc & 0xff;\n }\n\n function adler32(data, start, end) {\n let a = 1;\n let b = 0;\n for (let i = start; i < end; ++i) {\n a = (a + (data[i] & 0xff)) % 65521;\n b = (b + a) % 65521;\n }\n return (b << 16) | a;\n }\n\n /**\n * @param {Uint8Array} literals The input data.\n * @returns {Uint8Array} The DEFLATE-compressed data stream in zlib format.\n * This is the required format for compressed streams in the PNG format:\n * http://www.libpng.org/pub/png/spec/1.2/PNG-Compression.html\n */\n function deflateSync(literals) {\n if (!isNodeJS) {\n // zlib is certainly not available outside of Node.js. We can either use\n // the pako library for client-side DEFLATE compression, or use the\n // canvas API of the browser to obtain a more optimal PNG file.\n return deflateSyncUncompressed(literals);\n }\n try {\n // NOTE: This implementation is far from perfect, but already way better\n // than not applying any compression.\n //\n // A better algorithm will try to choose a good predictor/filter and\n // then choose a suitable zlib compression strategy (e.g. 3,Z_RLE).\n //\n // Node v0.11.12 zlib.deflateSync is introduced (and returns a Buffer).\n // Node v3.0.0 Buffer inherits from Uint8Array.\n // Node v8.0.0 zlib.deflateSync accepts Uint8Array as input.\n let input;\n // eslint-disable-next-line no-undef\n if (parseInt(process.versions.node) >= 8) {\n input = literals;\n } else {\n // eslint-disable-next-line no-undef\n input = Buffer.from(literals);\n }\n const output = __non_webpack_require__(\"zlib\").deflateSync(input, {\n level: 9,\n });\n return output instanceof Uint8Array ? output : new Uint8Array(output);\n } catch (e) {\n warn(\n \"Not compressing PNG because zlib.deflateSync is unavailable: \" + e\n );\n }\n\n return deflateSyncUncompressed(literals);\n }\n\n // An implementation of DEFLATE with compression level 0 (Z_NO_COMPRESSION).\n function deflateSyncUncompressed(literals) {\n let len = literals.length;\n const maxBlockLength = 0xffff;\n\n const deflateBlocks = Math.ceil(len / maxBlockLength);\n const idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);\n let pi = 0;\n idat[pi++] = 0x78; // compression method and flags\n idat[pi++] = 0x9c; // flags\n\n let pos = 0;\n while (len > maxBlockLength) {\n // writing non-final DEFLATE blocks type 0 and length of 65535\n idat[pi++] = 0x00;\n idat[pi++] = 0xff;\n idat[pi++] = 0xff;\n idat[pi++] = 0x00;\n idat[pi++] = 0x00;\n idat.set(literals.subarray(pos, pos + maxBlockLength), pi);\n pi += maxBlockLength;\n pos += maxBlockLength;\n len -= maxBlockLength;\n }\n\n // writing non-final DEFLATE blocks type 0\n idat[pi++] = 0x01;\n idat[pi++] = len & 0xff;\n idat[pi++] = (len >> 8) & 0xff;\n idat[pi++] = ~len & 0xffff & 0xff;\n idat[pi++] = ((~len & 0xffff) >> 8) & 0xff;\n idat.set(literals.subarray(pos), pi);\n pi += literals.length - pos;\n\n const adler = adler32(literals, 0, literals.length); // checksum\n idat[pi++] = (adler >> 24) & 0xff;\n idat[pi++] = (adler >> 16) & 0xff;\n idat[pi++] = (adler >> 8) & 0xff;\n idat[pi++] = adler & 0xff;\n return idat;\n }\n\n function encode(imgData, kind, forceDataSchema, isMask) {\n const width = imgData.width;\n const height = imgData.height;\n let bitDepth, colorType, lineSize;\n const bytes = imgData.data;\n\n switch (kind) {\n case ImageKind.GRAYSCALE_1BPP:\n colorType = 0;\n bitDepth = 1;\n lineSize = (width + 7) >> 3;\n break;\n case ImageKind.RGB_24BPP:\n colorType = 2;\n bitDepth = 8;\n lineSize = width * 3;\n break;\n case ImageKind.RGBA_32BPP:\n colorType = 6;\n bitDepth = 8;\n lineSize = width * 4;\n break;\n default:\n throw new Error(\"invalid format\");\n }\n\n // prefix every row with predictor 0\n const literals = new Uint8Array((1 + lineSize) * height);\n let offsetLiterals = 0,\n offsetBytes = 0;\n for (let y = 0; y < height; ++y) {\n literals[offsetLiterals++] = 0; // no prediction\n literals.set(\n bytes.subarray(offsetBytes, offsetBytes + lineSize),\n offsetLiterals\n );\n offsetBytes += lineSize;\n offsetLiterals += lineSize;\n }\n\n if (kind === ImageKind.GRAYSCALE_1BPP && isMask) {\n // inverting for image masks\n offsetLiterals = 0;\n for (let y = 0; y < height; y++) {\n offsetLiterals++; // skipping predictor\n for (let i = 0; i < lineSize; i++) {\n literals[offsetLiterals++] ^= 0xff;\n }\n }\n }\n\n const ihdr = new Uint8Array([\n (width >> 24) & 0xff,\n (width >> 16) & 0xff,\n (width >> 8) & 0xff,\n width & 0xff,\n (height >> 24) & 0xff,\n (height >> 16) & 0xff,\n (height >> 8) & 0xff,\n height & 0xff,\n bitDepth, // bit depth\n colorType, // color type\n 0x00, // compression method\n 0x00, // filter method\n 0x00, // interlace method\n ]);\n const idat = deflateSync(literals);\n\n // PNG consists of: header, IHDR+data, IDAT+data, and IEND.\n const pngLength =\n PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;\n const data = new Uint8Array(pngLength);\n let offset = 0;\n data.set(PNG_HEADER, offset);\n offset += PNG_HEADER.length;\n writePngChunk(\"IHDR\", ihdr, data, offset);\n offset += CHUNK_WRAPPER_SIZE + ihdr.length;\n writePngChunk(\"IDATA\", idat, data, offset);\n offset += CHUNK_WRAPPER_SIZE + idat.length;\n writePngChunk(\"IEND\", new Uint8Array(0), data, offset);\n\n return createObjectURL(data, \"image/png\", forceDataSchema);\n }\n\n // eslint-disable-next-line no-shadow\n return function convertImgDataToPng(imgData, forceDataSchema, isMask) {\n const kind =\n imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;\n return encode(imgData, kind, forceDataSchema, isMask);\n };\n })();\n\n class SVGExtraState {\n constructor() {\n this.fontSizeScale = 1;\n this.fontWeight = SVG_DEFAULTS.fontWeight;\n this.fontSize = 0;\n\n this.textMatrix = IDENTITY_MATRIX;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textMatrixScale = 1;\n\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRise = 0;\n\n // Default foreground and background colors\n this.fillColor = SVG_DEFAULTS.fillColor;\n this.strokeColor = \"#000000\";\n\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.lineJoin = \"\";\n this.lineCap = \"\";\n this.miterLimit = 0;\n\n this.dashArray = [];\n this.dashPhase = 0;\n\n this.dependencies = [];\n\n // Clipping\n this.activeClipUrl = null;\n this.clipGroup = null;\n\n this.maskId = \"\";\n }\n\n clone() {\n return Object.create(this);\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n }\n\n // eslint-disable-next-line no-inner-declarations\n function opListToTree(opList) {\n let opTree = [];\n const tmp = [];\n\n for (const opListElement of opList) {\n if (opListElement.fn === \"save\") {\n opTree.push({ fnId: 92, fn: \"group\", items: [] });\n tmp.push(opTree);\n opTree = opTree[opTree.length - 1].items;\n continue;\n }\n\n if (opListElement.fn === \"restore\") {\n opTree = tmp.pop();\n } else {\n opTree.push(opListElement);\n }\n }\n return opTree;\n }\n\n /**\n * Format a float number as a string.\n *\n * @param value {number} - The float number to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pf(value) {\n if (Number.isInteger(value)) {\n return value.toString();\n }\n const s = value.toFixed(10);\n let i = s.length - 1;\n if (s[i] !== \"0\") {\n return s;\n }\n\n // Remove trailing zeros.\n do {\n i--;\n } while (s[i] === \"0\");\n return s.substring(0, s[i] === \".\" ? i : i + 1);\n }\n\n /**\n * Format a transform matrix as a string. The standard rotation, scale and\n * translation matrices are replaced by their shorter forms, and for\n * identity matrices an empty string is returned to save memory.\n *\n * @param m {Array} - The transform matrix to format.\n * @returns {string}\n */\n // eslint-disable-next-line no-inner-declarations\n function pm(m) {\n if (m[4] === 0 && m[5] === 0) {\n if (m[1] === 0 && m[2] === 0) {\n if (m[0] === 1 && m[3] === 1) {\n return \"\";\n }\n return `scale(${pf(m[0])} ${pf(m[3])})`;\n }\n if (m[0] === m[3] && m[1] === -m[2]) {\n const a = (Math.acos(m[0]) * 180) / Math.PI;\n return `rotate(${pf(a)})`;\n }\n } else {\n if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {\n return `translate(${pf(m[4])} ${pf(m[5])})`;\n }\n }\n return (\n `matrix(${pf(m[0])} ${pf(m[1])} ${pf(m[2])} ${pf(m[3])} ${pf(m[4])} ` +\n `${pf(m[5])})`\n );\n }\n\n // The counts below are relevant for all pages, so they have to be global\n // instead of being members of `SVGGraphics` (which is recreated for\n // each page).\n let clipCount = 0;\n let maskCount = 0;\n let shadingCount = 0;\n\n SVGGraphics = class {\n constructor(commonObjs, objs, forceDataSchema = false) {\n this.svgFactory = new DOMSVGFactory();\n\n this.current = new SVGExtraState();\n this.transformMatrix = IDENTITY_MATRIX; // Graphics state matrix\n this.transformStack = [];\n this.extraStack = [];\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.pendingClip = null;\n this.pendingEOFill = false;\n\n this.embedFonts = false;\n this.embeddedFonts = Object.create(null);\n this.cssStyle = null;\n this.forceDataSchema = !!forceDataSchema;\n\n // In `src/shared/util.js` the operator names are mapped to IDs.\n // The list below represents the reverse of that, i.e., it maps IDs\n // to operator names.\n this._operatorIdMapping = [];\n for (const op in OPS) {\n this._operatorIdMapping[OPS[op]] = op;\n }\n }\n\n save() {\n this.transformStack.push(this.transformMatrix);\n const old = this.current;\n this.extraStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n this.transformMatrix = this.transformStack.pop();\n this.current = this.extraStack.pop();\n this.pendingClip = null;\n this.tgrp = null;\n }\n\n group(items) {\n this.save();\n this.executeOpTree(items);\n this.restore();\n }\n\n loadDependencies(operatorList) {\n const fnArray = operatorList.fnArray;\n const argsArray = operatorList.argsArray;\n\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n if (fnArray[i] !== OPS.dependency) {\n continue;\n }\n\n for (const obj of argsArray[i]) {\n const objsPool = obj.startsWith(\"g_\") ? this.commonObjs : this.objs;\n const promise = new Promise(resolve => {\n objsPool.get(obj, resolve);\n });\n this.current.dependencies.push(promise);\n }\n }\n return Promise.all(this.current.dependencies);\n }\n\n transform(a, b, c, d, e, f) {\n const transformMatrix = [a, b, c, d, e, f];\n this.transformMatrix = Util.transform(\n this.transformMatrix,\n transformMatrix\n );\n this.tgrp = null;\n }\n\n getSVG(operatorList, viewport) {\n this.viewport = viewport;\n\n const svgElement = this._initialize(viewport);\n return this.loadDependencies(operatorList).then(() => {\n this.transformMatrix = IDENTITY_MATRIX;\n this.executeOpTree(this.convertOpList(operatorList));\n return svgElement;\n });\n }\n\n convertOpList(operatorList) {\n const operatorIdMapping = this._operatorIdMapping;\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n const opList = [];\n for (let i = 0, ii = fnArray.length; i < ii; i++) {\n const fnId = fnArray[i];\n opList.push({\n fnId,\n fn: operatorIdMapping[fnId],\n args: argsArray[i],\n });\n }\n return opListToTree(opList);\n }\n\n executeOpTree(opTree) {\n for (const opTreeElement of opTree) {\n const fn = opTreeElement.fn;\n const fnId = opTreeElement.fnId;\n const args = opTreeElement.args;\n\n switch (fnId | 0) {\n case OPS.beginText:\n this.beginText();\n break;\n case OPS.dependency:\n // Handled in `loadDependencies`, so no warning should be shown.\n break;\n case OPS.setLeading:\n this.setLeading(args);\n break;\n case OPS.setLeadingMoveText:\n this.setLeadingMoveText(args[0], args[1]);\n break;\n case OPS.setFont:\n this.setFont(args);\n break;\n case OPS.showText:\n this.showText(args[0]);\n break;\n case OPS.showSpacedText:\n this.showText(args[0]);\n break;\n case OPS.endText:\n this.endText();\n break;\n case OPS.moveText:\n this.moveText(args[0], args[1]);\n break;\n case OPS.setCharSpacing:\n this.setCharSpacing(args[0]);\n break;\n case OPS.setWordSpacing:\n this.setWordSpacing(args[0]);\n break;\n case OPS.setHScale:\n this.setHScale(args[0]);\n break;\n case OPS.setTextMatrix:\n this.setTextMatrix(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.setTextRise:\n this.setTextRise(args[0]);\n break;\n case OPS.setTextRenderingMode:\n this.setTextRenderingMode(args[0]);\n break;\n case OPS.setLineWidth:\n this.setLineWidth(args[0]);\n break;\n case OPS.setLineJoin:\n this.setLineJoin(args[0]);\n break;\n case OPS.setLineCap:\n this.setLineCap(args[0]);\n break;\n case OPS.setMiterLimit:\n this.setMiterLimit(args[0]);\n break;\n case OPS.setFillRGBColor:\n this.setFillRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeRGBColor:\n this.setStrokeRGBColor(args[0], args[1], args[2]);\n break;\n case OPS.setStrokeColorN:\n this.setStrokeColorN(args);\n break;\n case OPS.setFillColorN:\n this.setFillColorN(args);\n break;\n case OPS.shadingFill:\n this.shadingFill(args[0]);\n break;\n case OPS.setDash:\n this.setDash(args[0], args[1]);\n break;\n case OPS.setRenderingIntent:\n this.setRenderingIntent(args[0]);\n break;\n case OPS.setFlatness:\n this.setFlatness(args[0]);\n break;\n case OPS.setGState:\n this.setGState(args[0]);\n break;\n case OPS.fill:\n this.fill();\n break;\n case OPS.eoFill:\n this.eoFill();\n break;\n case OPS.stroke:\n this.stroke();\n break;\n case OPS.fillStroke:\n this.fillStroke();\n break;\n case OPS.eoFillStroke:\n this.eoFillStroke();\n break;\n case OPS.clip:\n this.clip(\"nonzero\");\n break;\n case OPS.eoClip:\n this.clip(\"evenodd\");\n break;\n case OPS.paintSolidColorImageMask:\n this.paintSolidColorImageMask();\n break;\n case OPS.paintImageXObject:\n this.paintImageXObject(args[0]);\n break;\n case OPS.paintInlineImageXObject:\n this.paintInlineImageXObject(args[0]);\n break;\n case OPS.paintImageMaskXObject:\n this.paintImageMaskXObject(args[0]);\n break;\n case OPS.paintFormXObjectBegin:\n this.paintFormXObjectBegin(args[0], args[1]);\n break;\n case OPS.paintFormXObjectEnd:\n this.paintFormXObjectEnd();\n break;\n case OPS.closePath:\n this.closePath();\n break;\n case OPS.closeStroke:\n this.closeStroke();\n break;\n case OPS.closeFillStroke:\n this.closeFillStroke();\n break;\n case OPS.closeEOFillStroke:\n this.closeEOFillStroke();\n break;\n case OPS.nextLine:\n this.nextLine();\n break;\n case OPS.transform:\n this.transform(\n args[0],\n args[1],\n args[2],\n args[3],\n args[4],\n args[5]\n );\n break;\n case OPS.constructPath:\n this.constructPath(args[0], args[1]);\n break;\n case OPS.endPath:\n this.endPath();\n break;\n case 92:\n this.group(opTreeElement.items);\n break;\n default:\n warn(`Unimplemented operator ${fn}`);\n break;\n }\n }\n }\n\n setWordSpacing(wordSpacing) {\n this.current.wordSpacing = wordSpacing;\n }\n\n setCharSpacing(charSpacing) {\n this.current.charSpacing = charSpacing;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n const current = this.current;\n current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];\n current.textMatrixScale = Math.hypot(a, b);\n\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtElement.appendChild(current.tspan);\n }\n\n beginText() {\n const current = this.current;\n current.x = current.lineX = 0;\n current.y = current.lineY = 0;\n current.textMatrix = IDENTITY_MATRIX;\n current.lineMatrix = IDENTITY_MATRIX;\n current.textMatrixScale = 1;\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.txtElement = this.svgFactory.createElement(\"svg:text\");\n current.txtgrp = this.svgFactory.createElement(\"svg:g\");\n current.xcoords = [];\n current.ycoords = [];\n }\n\n moveText(x, y) {\n const current = this.current;\n current.x = current.lineX += x;\n current.y = current.lineY += y;\n\n current.xcoords = [];\n current.ycoords = [];\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return;\n }\n\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n let x = 0;\n for (const glyph of glyphs) {\n if (glyph === null) {\n // Word break\n x += fontDirection * wordSpacing;\n continue;\n } else if (isNum(glyph)) {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n let vx;\n const vmetric = glyph.vmetric || defaultVMetrics;\n vx = glyph.vmetric ? vmetric[1] : width * 0.5;\n vx = -vx * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (glyph.isInFont || font.missingFile) {\n current.xcoords.push(current.x + scaledX);\n if (vertical) {\n current.ycoords.push(-current.y + scaledY);\n }\n current.tspan.textContent += character;\n } else {\n // TODO: To assist with text selection, we should replace the missing\n // character with a space character if charWidth is not zero.\n // But we cannot just do \"character = ' '\", because the ' ' character\n // might actually map to a different glyph.\n }\n\n let charWidth;\n if (vertical) {\n charWidth = width * widthAdvanceScale - spacing * fontDirection;\n } else {\n charWidth = width * widthAdvanceScale + spacing * fontDirection;\n }\n\n x += charWidth;\n }\n current.tspan.setAttributeNS(\n null,\n \"x\",\n current.xcoords.map(pf).join(\" \")\n );\n if (vertical) {\n current.tspan.setAttributeNS(\n null,\n \"y\",\n current.ycoords.map(pf).join(\" \")\n );\n } else {\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n }\n\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n\n current.tspan.setAttributeNS(null, \"font-family\", current.fontFamily);\n current.tspan.setAttributeNS(\n null,\n \"font-size\",\n `${pf(current.fontSize)}px`\n );\n if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {\n current.tspan.setAttributeNS(null, \"font-style\", current.fontStyle);\n }\n if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {\n current.tspan.setAttributeNS(null, \"font-weight\", current.fontWeight);\n }\n\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n if (current.fillColor !== SVG_DEFAULTS.fillColor) {\n current.tspan.setAttributeNS(null, \"fill\", current.fillColor);\n }\n if (current.fillAlpha < 1) {\n current.tspan.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n }\n } else if (current.textRenderingMode === TextRenderingMode.ADD_TO_PATH) {\n // Workaround for Firefox: We must set fill=\"transparent\" because\n // fill=\"none\" would generate an empty clipping path.\n current.tspan.setAttributeNS(null, \"fill\", \"transparent\");\n } else {\n current.tspan.setAttributeNS(null, \"fill\", \"none\");\n }\n\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n const lineWidthScale = 1 / (current.textMatrixScale || 1);\n this._setStrokeAttributes(current.tspan, lineWidthScale);\n }\n\n // Include the text rise in the text matrix since the `pm` function\n // creates the SVG element's `translate` entry (work on a copy to avoid\n // altering the original text matrix).\n let textMatrix = current.textMatrix;\n if (current.textRise !== 0) {\n textMatrix = textMatrix.slice();\n textMatrix[5] += current.textRise;\n }\n\n current.txtElement.setAttributeNS(\n null,\n \"transform\",\n `${pm(textMatrix)} scale(${pf(textHScale)}, -1)`\n );\n current.txtElement.setAttributeNS(XML_NS, \"xml:space\", \"preserve\");\n current.txtElement.appendChild(current.tspan);\n current.txtgrp.appendChild(current.txtElement);\n\n this._ensureTransformGroup().appendChild(current.txtElement);\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n addFontStyle(fontObj) {\n if (!fontObj.data) {\n throw new Error(\n \"addFontStyle: No font data available, \" +\n 'ensure that the \"fontExtraProperties\" API parameter is set.'\n );\n }\n if (!this.cssStyle) {\n this.cssStyle = this.svgFactory.createElement(\"svg:style\");\n this.cssStyle.setAttributeNS(null, \"type\", \"text/css\");\n this.defs.appendChild(this.cssStyle);\n }\n\n const url = createObjectURL(\n fontObj.data,\n fontObj.mimetype,\n this.forceDataSchema\n );\n this.cssStyle.textContent +=\n `@font-face { font-family: \"${fontObj.loadedName}\";` +\n ` src: url(${url}); }\\n`;\n }\n\n setFont(details) {\n const current = this.current;\n const fontObj = this.commonObjs.get(details[0]);\n let size = details[1];\n current.font = fontObj;\n\n if (\n this.embedFonts &&\n !fontObj.missingFile &&\n !this.embeddedFonts[fontObj.loadedName]\n ) {\n this.addFontStyle(fontObj);\n this.embeddedFonts[fontObj.loadedName] = fontObj;\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n current.fontSize = size;\n current.fontFamily = fontObj.loadedName;\n current.fontWeight = bold;\n current.fontStyle = italic;\n\n current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n current.tspan.setAttributeNS(null, \"y\", pf(-current.y));\n current.xcoords = [];\n current.ycoords = [];\n }\n\n endText() {\n const current = this.current;\n if (\n current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG &&\n current.txtElement?.hasChildNodes()\n ) {\n // If no glyphs are shown (i.e. no child nodes), no clipping occurs.\n current.element = current.txtElement;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n // Path properties\n setLineWidth(width) {\n if (width > 0) {\n this.current.lineWidth = width;\n }\n }\n\n setLineCap(style) {\n this.current.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.current.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.current.miterLimit = limit;\n }\n\n setStrokeAlpha(strokeAlpha) {\n this.current.strokeAlpha = strokeAlpha;\n }\n\n setStrokeRGBColor(r, g, b) {\n this.current.strokeColor = Util.makeHexColor(r, g, b);\n }\n\n setFillAlpha(fillAlpha) {\n this.current.fillAlpha = fillAlpha;\n }\n\n setFillRGBColor(r, g, b) {\n this.current.fillColor = Util.makeHexColor(r, g, b);\n this.current.tspan = this.svgFactory.createElement(\"svg:tspan\");\n this.current.xcoords = [];\n this.current.ycoords = [];\n }\n\n setStrokeColorN(args) {\n this.current.strokeColor = this._makeColorN_Pattern(args);\n }\n\n setFillColorN(args) {\n this.current.fillColor = this._makeColorN_Pattern(args);\n }\n\n shadingFill(args) {\n const width = this.viewport.width;\n const height = this.viewport.height;\n const inv = Util.inverseTransform(this.transformMatrix);\n const bl = Util.applyTransform([0, 0], inv);\n const br = Util.applyTransform([0, height], inv);\n const ul = Util.applyTransform([width, 0], inv);\n const ur = Util.applyTransform([width, height], inv);\n const x0 = Math.min(bl[0], br[0], ul[0], ur[0]);\n const y0 = Math.min(bl[1], br[1], ul[1], ur[1]);\n const x1 = Math.max(bl[0], br[0], ul[0], ur[0]);\n const y1 = Math.max(bl[1], br[1], ul[1], ur[1]);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", x0);\n rect.setAttributeNS(null, \"y\", y0);\n rect.setAttributeNS(null, \"width\", x1 - x0);\n rect.setAttributeNS(null, \"height\", y1 - y0);\n rect.setAttributeNS(null, \"fill\", this._makeShadingPattern(args));\n if (this.current.fillAlpha < 1) {\n rect.setAttributeNS(null, \"fill-opacity\", this.current.fillAlpha);\n }\n this._ensureTransformGroup().appendChild(rect);\n }\n\n /**\n * @private\n */\n _makeColorN_Pattern(args) {\n if (args[0] === \"TilingPattern\") {\n return this._makeTilingPattern(args);\n }\n return this._makeShadingPattern(args);\n }\n\n /**\n * @private\n */\n _makeTilingPattern(args) {\n const color = args[1];\n const operatorList = args[2];\n const matrix = args[3] || IDENTITY_MATRIX;\n const [x0, y0, x1, y1] = args[4];\n const xstep = args[5];\n const ystep = args[6];\n const paintType = args[7];\n\n const tilingId = `shading${shadingCount++}`;\n const [tx0, ty0, tx1, ty1] = Util.normalizeRect([\n ...Util.applyTransform([x0, y0], matrix),\n ...Util.applyTransform([x1, y1], matrix),\n ]);\n const [xscale, yscale] = Util.singularValueDecompose2dScale(matrix);\n const txstep = xstep * xscale;\n const tystep = ystep * yscale;\n\n const tiling = this.svgFactory.createElement(\"svg:pattern\");\n tiling.setAttributeNS(null, \"id\", tilingId);\n tiling.setAttributeNS(null, \"patternUnits\", \"userSpaceOnUse\");\n tiling.setAttributeNS(null, \"width\", txstep);\n tiling.setAttributeNS(null, \"height\", tystep);\n tiling.setAttributeNS(null, \"x\", `${tx0}`);\n tiling.setAttributeNS(null, \"y\", `${ty0}`);\n\n // Save current state.\n const svg = this.svg;\n const transformMatrix = this.transformMatrix;\n const fillColor = this.current.fillColor;\n const strokeColor = this.current.strokeColor;\n\n const bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);\n this.svg = bbox;\n this.transformMatrix = matrix;\n if (paintType === 2) {\n const cssColor = Util.makeHexColor(...color);\n this.current.fillColor = cssColor;\n this.current.strokeColor = cssColor;\n }\n this.executeOpTree(this.convertOpList(operatorList));\n\n // Restore saved state.\n this.svg = svg;\n this.transformMatrix = transformMatrix;\n this.current.fillColor = fillColor;\n this.current.strokeColor = strokeColor;\n\n tiling.appendChild(bbox.childNodes[0]);\n this.defs.appendChild(tiling);\n return `url(#${tilingId})`;\n }\n\n /**\n * @private\n */\n _makeShadingPattern(args) {\n if (typeof args === \"string\") {\n args = this.objs.get(args);\n }\n switch (args[0]) {\n case \"RadialAxial\":\n const shadingId = `shading${shadingCount++}`;\n const colorStops = args[3];\n let gradient;\n\n switch (args[1]) {\n case \"axial\":\n const point0 = args[4];\n const point1 = args[5];\n gradient = this.svgFactory.createElement(\"svg:linearGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"x1\", point0[0]);\n gradient.setAttributeNS(null, \"y1\", point0[1]);\n gradient.setAttributeNS(null, \"x2\", point1[0]);\n gradient.setAttributeNS(null, \"y2\", point1[1]);\n break;\n case \"radial\":\n const focalPoint = args[4];\n const circlePoint = args[5];\n const focalRadius = args[6];\n const circleRadius = args[7];\n gradient = this.svgFactory.createElement(\"svg:radialGradient\");\n gradient.setAttributeNS(null, \"id\", shadingId);\n gradient.setAttributeNS(null, \"gradientUnits\", \"userSpaceOnUse\");\n gradient.setAttributeNS(null, \"cx\", circlePoint[0]);\n gradient.setAttributeNS(null, \"cy\", circlePoint[1]);\n gradient.setAttributeNS(null, \"r\", circleRadius);\n gradient.setAttributeNS(null, \"fx\", focalPoint[0]);\n gradient.setAttributeNS(null, \"fy\", focalPoint[1]);\n gradient.setAttributeNS(null, \"fr\", focalRadius);\n break;\n default:\n throw new Error(`Unknown RadialAxial type: ${args[1]}`);\n }\n for (const colorStop of colorStops) {\n const stop = this.svgFactory.createElement(\"svg:stop\");\n stop.setAttributeNS(null, \"offset\", colorStop[0]);\n stop.setAttributeNS(null, \"stop-color\", colorStop[1]);\n gradient.appendChild(stop);\n }\n this.defs.appendChild(gradient);\n return `url(#${shadingId})`;\n case \"Mesh\":\n warn(\"Unimplemented pattern Mesh\");\n return null;\n case \"Dummy\":\n return \"hotpink\";\n default:\n throw new Error(`Unknown IR type: ${args[0]}`);\n }\n }\n\n setDash(dashArray, dashPhase) {\n this.current.dashArray = dashArray;\n this.current.dashPhase = dashPhase;\n }\n\n constructPath(ops, args) {\n const current = this.current;\n let x = current.x,\n y = current.y;\n let d = [];\n let j = 0;\n\n for (const op of ops) {\n switch (op | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n const xw = x + width;\n const yh = y + height;\n d.push(\n \"M\",\n pf(x),\n pf(y),\n \"L\",\n pf(xw),\n pf(y),\n \"L\",\n pf(xw),\n pf(yh),\n \"L\",\n pf(x),\n pf(yh),\n \"Z\"\n );\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n d.push(\"M\", pf(x), pf(y));\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n d.push(\"L\", pf(x), pf(y));\n break;\n case OPS.curveTo:\n x = args[j + 4];\n y = args[j + 5];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3]),\n pf(x),\n pf(y)\n );\n j += 6;\n break;\n case OPS.curveTo2:\n d.push(\n \"C\",\n pf(x),\n pf(y),\n pf(args[j]),\n pf(args[j + 1]),\n pf(args[j + 2]),\n pf(args[j + 3])\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n x = args[j + 2];\n y = args[j + 3];\n d.push(\n \"C\",\n pf(args[j]),\n pf(args[j + 1]),\n pf(x),\n pf(y),\n pf(x),\n pf(y)\n );\n j += 4;\n break;\n case OPS.closePath:\n d.push(\"Z\");\n break;\n }\n }\n\n d = d.join(\" \");\n\n if (\n current.path &&\n ops.length > 0 &&\n ops[0] !== OPS.rectangle &&\n ops[0] !== OPS.moveTo\n ) {\n // If a path does not start with an OPS.rectangle or OPS.moveTo, it has\n // probably been divided into two OPS.constructPath operators by\n // OperatorList. Append the commands to the previous path element.\n d = current.path.getAttributeNS(null, \"d\") + d;\n } else {\n current.path = this.svgFactory.createElement(\"svg:path\");\n this._ensureTransformGroup().appendChild(current.path);\n }\n\n current.path.setAttributeNS(null, \"d\", d);\n current.path.setAttributeNS(null, \"fill\", \"none\");\n\n // Saving a reference in current.element so that it can be addressed\n // in 'fill' and 'stroke'\n current.element = current.path;\n current.setCurrentPoint(x, y);\n }\n\n endPath() {\n const current = this.current;\n\n // Painting operators end a path.\n current.path = null;\n\n if (!this.pendingClip) {\n return;\n }\n if (!current.element) {\n this.pendingClip = null;\n return;\n }\n\n // Add the current path to a clipping path.\n const clipId = `clippath${clipCount++}`;\n const clipPath = this.svgFactory.createElement(\"svg:clipPath\");\n clipPath.setAttributeNS(null, \"id\", clipId);\n clipPath.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n\n // A deep clone is needed when text is used as a clipping path.\n const clipElement = current.element.cloneNode(true);\n if (this.pendingClip === \"evenodd\") {\n clipElement.setAttributeNS(null, \"clip-rule\", \"evenodd\");\n } else {\n clipElement.setAttributeNS(null, \"clip-rule\", \"nonzero\");\n }\n this.pendingClip = null;\n clipPath.appendChild(clipElement);\n this.defs.appendChild(clipPath);\n\n if (current.activeClipUrl) {\n // The previous clipping group content can go out of order -- resetting\n // cached clipGroups.\n current.clipGroup = null;\n for (const prev of this.extraStack) {\n prev.clipGroup = null;\n }\n // Intersect with the previous clipping path.\n clipPath.setAttributeNS(null, \"clip-path\", current.activeClipUrl);\n }\n current.activeClipUrl = `url(#${clipId})`;\n\n this.tgrp = null;\n }\n\n clip(type) {\n this.pendingClip = type;\n }\n\n closePath() {\n const current = this.current;\n if (current.path) {\n const d = `${current.path.getAttributeNS(null, \"d\")}Z`;\n current.path.setAttributeNS(null, \"d\", d);\n }\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setTextRise(textRise) {\n this.current.textRise = textRise;\n }\n\n setTextRenderingMode(textRenderingMode) {\n this.current.textRenderingMode = textRenderingMode;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value);\n break;\n case \"CA\":\n this.setStrokeAlpha(value);\n break;\n case \"ca\":\n this.setFillAlpha(value);\n break;\n default:\n warn(`Unimplemented graphic state operator ${key}`);\n break;\n }\n }\n }\n\n fill() {\n const current = this.current;\n if (current.element) {\n current.element.setAttributeNS(null, \"fill\", current.fillColor);\n current.element.setAttributeNS(null, \"fill-opacity\", current.fillAlpha);\n this.endPath();\n }\n }\n\n stroke() {\n const current = this.current;\n if (current.element) {\n this._setStrokeAttributes(current.element);\n current.element.setAttributeNS(null, \"fill\", \"none\");\n this.endPath();\n }\n }\n\n /**\n * @private\n */\n _setStrokeAttributes(element, lineWidthScale = 1) {\n const current = this.current;\n let dashArray = current.dashArray;\n if (lineWidthScale !== 1 && dashArray.length > 0) {\n dashArray = dashArray.map(function (value) {\n return lineWidthScale * value;\n });\n }\n element.setAttributeNS(null, \"stroke\", current.strokeColor);\n element.setAttributeNS(null, \"stroke-opacity\", current.strokeAlpha);\n element.setAttributeNS(null, \"stroke-miterlimit\", pf(current.miterLimit));\n element.setAttributeNS(null, \"stroke-linecap\", current.lineCap);\n element.setAttributeNS(null, \"stroke-linejoin\", current.lineJoin);\n element.setAttributeNS(\n null,\n \"stroke-width\",\n pf(lineWidthScale * current.lineWidth) + \"px\"\n );\n element.setAttributeNS(\n null,\n \"stroke-dasharray\",\n dashArray.map(pf).join(\" \")\n );\n element.setAttributeNS(\n null,\n \"stroke-dashoffset\",\n pf(lineWidthScale * current.dashPhase) + \"px\"\n );\n }\n\n eoFill() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fill();\n }\n\n fillStroke() {\n // Order is important since stroke wants fill to be none.\n // First stroke, then if fill needed, it will be overwritten.\n this.stroke();\n this.fill();\n }\n\n eoFillStroke() {\n if (this.current.element) {\n this.current.element.setAttributeNS(null, \"fill-rule\", \"evenodd\");\n }\n this.fillStroke();\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.closePath();\n this.eoFillStroke();\n }\n\n paintSolidColorImageMask() {\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", \"1px\");\n rect.setAttributeNS(null, \"height\", \"1px\");\n rect.setAttributeNS(null, \"fill\", this.current.fillColor);\n\n this._ensureTransformGroup().appendChild(rect);\n }\n\n paintImageXObject(objId) {\n const imgData = objId.startsWith(\"g_\")\n ? this.commonObjs.get(objId)\n : this.objs.get(objId);\n if (!imgData) {\n warn(`Dependent image with object ID ${objId} is not ready yet`);\n return;\n }\n this.paintInlineImageXObject(imgData);\n }\n\n paintInlineImageXObject(imgData, mask) {\n const width = imgData.width;\n const height = imgData.height;\n\n const imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", \"0\");\n cliprect.setAttributeNS(null, \"y\", \"0\");\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n\n const imgEl = this.svgFactory.createElement(\"svg:image\");\n imgEl.setAttributeNS(XLINK_NS, \"xlink:href\", imgSrc);\n imgEl.setAttributeNS(null, \"x\", \"0\");\n imgEl.setAttributeNS(null, \"y\", pf(-height));\n imgEl.setAttributeNS(null, \"width\", pf(width) + \"px\");\n imgEl.setAttributeNS(null, \"height\", pf(height) + \"px\");\n imgEl.setAttributeNS(\n null,\n \"transform\",\n `scale(${pf(1 / width)} ${pf(-1 / height)})`\n );\n if (mask) {\n mask.appendChild(imgEl);\n } else {\n this._ensureTransformGroup().appendChild(imgEl);\n }\n }\n\n paintImageMaskXObject(imgData) {\n const current = this.current;\n const width = imgData.width;\n const height = imgData.height;\n const fillColor = current.fillColor;\n\n current.maskId = `mask${maskCount++}`;\n const mask = this.svgFactory.createElement(\"svg:mask\");\n mask.setAttributeNS(null, \"id\", current.maskId);\n\n const rect = this.svgFactory.createElement(\"svg:rect\");\n rect.setAttributeNS(null, \"x\", \"0\");\n rect.setAttributeNS(null, \"y\", \"0\");\n rect.setAttributeNS(null, \"width\", pf(width));\n rect.setAttributeNS(null, \"height\", pf(height));\n rect.setAttributeNS(null, \"fill\", fillColor);\n rect.setAttributeNS(null, \"mask\", `url(#${current.maskId})`);\n\n this.defs.appendChild(mask);\n this._ensureTransformGroup().appendChild(rect);\n\n this.paintInlineImageXObject(imgData, mask);\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(\n matrix[0],\n matrix[1],\n matrix[2],\n matrix[3],\n matrix[4],\n matrix[5]\n );\n }\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n\n const cliprect = this.svgFactory.createElement(\"svg:rect\");\n cliprect.setAttributeNS(null, \"x\", bbox[0]);\n cliprect.setAttributeNS(null, \"y\", bbox[1]);\n cliprect.setAttributeNS(null, \"width\", pf(width));\n cliprect.setAttributeNS(null, \"height\", pf(height));\n this.current.element = cliprect;\n this.clip(\"nonzero\");\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {}\n\n /**\n * @private\n */\n _initialize(viewport) {\n const svg = this.svgFactory.create(viewport.width, viewport.height);\n\n // Create the definitions element.\n const definitions = this.svgFactory.createElement(\"svg:defs\");\n svg.appendChild(definitions);\n this.defs = definitions;\n\n // Create the root group element, which acts a container for all other\n // groups and applies the viewport transform.\n const rootGroup = this.svgFactory.createElement(\"svg:g\");\n rootGroup.setAttributeNS(null, \"transform\", pm(viewport.transform));\n svg.appendChild(rootGroup);\n\n // For the construction of the SVG image we are only interested in the\n // root group, so we expose it as the entry point of the SVG image for\n // the other code in this class.\n this.svg = rootGroup;\n\n return svg;\n }\n\n /**\n * @private\n */\n _ensureClipGroup() {\n if (!this.current.clipGroup) {\n const clipGroup = this.svgFactory.createElement(\"svg:g\");\n clipGroup.setAttributeNS(null, \"clip-path\", this.current.activeClipUrl);\n this.svg.appendChild(clipGroup);\n this.current.clipGroup = clipGroup;\n }\n return this.current.clipGroup;\n }\n\n /**\n * @private\n */\n _ensureTransformGroup() {\n if (!this.tgrp) {\n this.tgrp = this.svgFactory.createElement(\"svg:g\");\n this.tgrp.setAttributeNS(null, \"transform\", pm(this.transformMatrix));\n if (this.current.activeClipUrl) {\n this._ensureClipGroup().appendChild(this.tgrp);\n } else {\n this.svg.appendChild(this.tgrp);\n }\n }\n return this.tgrp;\n }\n };\n}\n\nexport { SVGGraphics };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals __non_webpack_require__ */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n MissingPDFException,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst fs = __non_webpack_require__(\"fs\");\nconst http = __non_webpack_require__(\"http\");\nconst https = __non_webpack_require__(\"https\");\nconst url = __non_webpack_require__(\"url\");\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n this._headersCapability = createPromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = createPromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = createPromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n assert(rangeChunkSize > 0, \"Range chunk size must be larger than zero\");\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch (ex) {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Support UTF-8 decoding when TextDecoder is unsupported.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch (e) {\n // TextDecoder constructor threw - unrecognized encoding.\n // Or TextDecoder API is not available (in IE / Edge).\n if (/^utf-?8$/i.test(encoding)) {\n // UTF-8 is commonly used, try to support it in another way:\n try {\n value = decodeURIComponent(escape(value));\n needsEncodingFixup = false;\n } catch (err) {}\n }\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replace(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replace(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replace(/_/g, \" \");\n text = text.replace(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch (e) {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n createPromiseCapability,\n stringToBytes,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n const array = stringToBytes(data);\n return array.buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n this.getXhr =\n args.getXhr ||\n function NetworkManager_getXhr() {\n return new XMLHttpRequest();\n };\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = this.getXhr();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = createPromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n createPromiseCapability,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController?.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (typeof value === \"undefined\") {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n if (this._fullRequestReader) {\n this._fullRequestReader.cancel(reason);\n }\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = createPromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({\n loaded: this._loaded,\n total: this._contentLength,\n });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = createPromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n if (typeof AbortController !== \"undefined\") {\n this._abortController = new AbortController();\n }\n\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n if (this.onProgress) {\n this.onProgress({ loaded: this._loaded });\n }\n const buffer = new Uint8Array(value).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n if (this._reader) {\n this._reader.cancel(reason);\n }\n if (this._abortController) {\n this._abortController.abort();\n }\n }\n}\n\nexport { PDFFetchStream };\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __w_pdfjs_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __w_pdfjs_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint-disable sort-exports/sort-exports */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n\nimport {\n addLinkAttributes,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n LinkTarget,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.js\";\nimport {\n AnnotationMode,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n setPDFNetworkStreamFactory,\n version,\n} from \"./display/api.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { isNodeJS } from \"./shared/is_node.js\";\nimport { renderTextLayer } from \"./display/text_layer.js\";\nimport { SVGGraphics } from \"./display/svg.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nif (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"PRODUCTION\")) {\n const streamsPromise = Promise.all([\n import(\"pdfjs/display/network.js\"),\n import(\"pdfjs/display/fetch_stream.js\"),\n ]);\n\n setPDFNetworkStreamFactory(async params => {\n const [{ PDFNetworkStream }, { PDFFetchStream }] = await streamsPromise;\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n} else if (PDFJSDev.test(\"GENERIC || CHROME\")) {\n if (PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const { PDFNodeStream } = require(\"./display/node_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n return new PDFNodeStream(params);\n });\n } else {\n const { PDFNetworkStream } = require(\"./display/network.js\");\n const { PDFFetchStream } = require(\"./display/fetch_stream.js\");\n\n setPDFNetworkStreamFactory(params => {\n if (isValidFetchUrl(params.url)) {\n return new PDFFetchStream(params);\n }\n return new PDFNetworkStream(params);\n });\n }\n}\n\nexport {\n // From \"./display/display_utils.js\":\n addLinkAttributes,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n isPdfFile,\n LinkTarget,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n getXfaPageViewport,\n // From \"./shared/util.js\":\n AnnotationMode,\n CMapCompressionType,\n createObjectURL,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\n removeNullCharacters,\n shadow,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n // From \"./display/api.js\":\n build,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFWorker,\n version,\n // From \"./display/annotation_layer.js\":\n AnnotationLayer,\n // From \"./display/worker_options.js\":\n GlobalWorkerOptions,\n // From \"./display/text_layer.js\":\n renderTextLayer,\n // From \"./display/svg.js\":\n SVGGraphics,\n // From \"./display/xfa_layer.js\":\n XfaLayer,\n};\n"],"names":["DEFAULT_LINK_REL","SVG_NS","PixelsPerInch","CSS","PDF","shadow","constructor","ownerDocument","globalThis","_createCanvas","canvas","asTypedArray","isValidFetchUrl","document","response","fetch","stringToBytes","request","XMLHttpRequest","data","resolve","reject","_fetchData","cMapData","fetchData","_createSVG","offsetX","offsetY","dontFlip","centerX","viewBox","centerY","rotation","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","Math","offsetCanvasY","width","height","clone","scale","convertToViewportPoint","convertToViewportRectangle","topLeft","rect","bottomRight","convertToPdfPoint","LinkTarget","NONE","SELF","BLANK","PARENT","TOP","enabled","assert","url","urlNullRemoved","removeNullCharacters","link","targetStr","ii","i","anchor","query","end","defaultFilename","isDataScheme","warn","reURI","reFilename","splitURI","suggestedFilename","decodeURIComponent","Object","time","name","Date","timeEnd","start","toString","outBuf","longest","duration","baseUrl","protocol","removeScriptElement","script","console","toDateObject","isString","pdfDateStringRegex","matches","year","parseInt","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","xfaPage","IDENTITY_MATRIX","FONT_IDENTITY_MATRIX","RenderingIntentFlag","ANY","DISPLAY","PRINT","ANNOTATIONS_FORMS","ANNOTATIONS_STORAGE","ANNOTATIONS_DISABLE","OPLIST","AnnotationMode","DISABLE","ENABLE","ENABLE_FORMS","ENABLE_STORAGE","PermissionFlag","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","TextRenderingMode","FILL","STROKE","FILL_STROKE","INVISIBLE","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","FILL_STROKE_MASK","ADD_TO_PATH_FLAG","ImageKind","GRAYSCALE_1BPP","RGB_24BPP","RGBA_32BPP","AnnotationType","TEXT","LINK","FREETEXT","LINE","SQUARE","CIRCLE","POLYGON","POLYLINE","HIGHLIGHT","UNDERLINE","SQUIGGLY","STRIKEOUT","STAMP","CARET","INK","POPUP","FILEATTACHMENT","SOUND","MOVIE","WIDGET","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationStateModelType","MARKED","REVIEW","AnnotationMarkedState","UNMARKED","AnnotationReviewState","ACCEPTED","REJECTED","CANCELLED","COMPLETED","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationBorderStyleType","SOLID","DASHED","BEVELED","INSET","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","PI","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","StreamType","UNKNOWN","FLATE","LZW","DCT","JPX","JBIG","A85","AHX","CCF","RLX","FontType","TYPE1","TYPE1STANDARD","TYPE1C","CIDFONTTYPE0","CIDFONTTYPE0C","TRUETYPE","CIDFONTTYPE2","TYPE3","OPENTYPE","TYPE0","MMTYPE1","VerbosityLevel","ERRORS","WARNINGS","INFOS","CMapCompressionType","BINARY","STREAM","OPS","dependency","setLineWidth","setLineCap","setLineJoin","setMiterLimit","setDash","setRenderingIntent","setFlatness","setGState","save","restore","transform","moveTo","lineTo","curveTo","curveTo2","curveTo3","closePath","rectangle","stroke","closeStroke","fill","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","endPath","clip","eoClip","beginText","endText","setCharSpacing","setWordSpacing","setHScale","setLeading","setFont","setTextRenderingMode","setTextRise","moveText","setLeadingMoveText","setTextMatrix","nextLine","showText","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setCharWidth","setCharWidthAndBounds","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setStrokeColorN","setFillColor","setFillColorN","setStrokeGray","setFillGray","setStrokeRGBColor","setFillRGBColor","setStrokeCMYKColor","setFillCMYKColor","shadingFill","beginInlineImage","beginImageData","endInlineImage","paintXObject","markPoint","markPointProps","beginMarkedContent","beginMarkedContentProps","endMarkedContent","beginCompat","endCompat","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","endGroup","beginAnnotations","endAnnotations","beginAnnotation","endAnnotation","paintJpegXObject","paintImageMaskXObject","paintImageMaskXObjectGroup","paintImageXObject","paintInlineImageXObject","paintInlineImageXObjectGroup","paintImageXObjectRepeat","paintImageMaskXObjectRepeat","paintSolidColorImageMask","constructPath","UNSUPPORTED_FEATURES","unknown","forms","javaScript","signatures","smask","shadingPattern","font","errorTilingPattern","errorExtGState","errorXObject","errorFontLoadType3","errorFontState","errorFontMissing","errorFontTranslate","errorColorSpace","errorOperatorList","errorFontToUnicode","errorFontLoadNative","errorFontBuildPath","errorFontGetPath","errorMarkedContent","errorContentSubStream","PasswordResponses","NEED_PASSWORD","INCORRECT_PASSWORD","verbosity","Number","unreachable","base","other","options","dots","stringToUTF8String","absoluteUrl","_isValidProtocol","enumerable","configurable","writable","BaseException","NullCharactersRegExp","InvisibleCharactersRegExp","replaceInvisible","str","bytes","length","MAX_ARGUMENT_COUNT","String","strBuf","chunkEnd","chunk","arr","resultLength","arrayByteLength","pos","item","itemLength","value","obj","buffer8","view32","IsLittleEndianCached","isLittleEndian","IsEvalSupportedCached","isEvalSupported","hexNumbers","Array","n","makeHexColor","m1","m2","applyTransform","xt","p","m","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","Util","p2","r","p3","p4","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","b","c","first","sx","sy","normalizeRect","intersect","orderedX","rect1","rect2","orderedY","result","bezierBoundingBox","tvalues","bounds","t","b2ac","sqrtb2ac","t1","t2","j","jlen","mt","PDFStringTranslateTable","code","match","buf","char","escape","unescape","encodeURIComponent","arr1","arr2","date","buffer","capability","isSettled","get","contentType","forceDataSchema","URL","type","digits","b1","b2","b3","d1","d2","d3","d4","isNodeJS","process","create","context","reset","canvasAndContext","destroy","isCompressed","compressionType","reason","svg","createElement","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultStandardFontDataFactory","createPDFNetworkStream","task","src","source","isArrayBuffer","range","params","rangeTransport","worker","window","isNaN","setVerbosityLevel","workerParams","port","GlobalWorkerOptions","PDFWorker","docId","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","initialData","progressiveDone","contentDispositionFilename","disableRange","disableStream","httpHeaders","withCredentials","rangeChunkSize","messageHandler","transport","pdfDataRangeTransport","workerId","apiVersion","password","disableAutoFetch","maxImageSize","disableFontFace","docBaseUrl","ignoreErrors","fontExtraProperties","enableXfa","useSystemFonts","cMapUrl","standardFontDataUrl","idCounters","doc","PDFDocumentLoadingTask","promise","addRangeListener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","listener","onDataProgress","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","abort","deprecated","streamTypes","fontTypes","annotationStorage","numPages","fingerprints","stats","isPureXfa","allXfaHtml","getPage","getPageIndex","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","cleanup","keepLoadedFonts","loadingParams","loadingTask","saveDocument","getFieldObjects","hasJSActions","getCalculationOrderIds","pdfBug","pageNumber","rotate","ref","userUnit","view","getViewport","getAnnotations","intent","intentArgs","annotations","annotation","getXfa","render","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","arguments","intentState","clearTimeout","canvasFactoryInstance","intentPrint","fnArray","argsArray","lastChunk","complete","error","internalRenderTask","callback","objs","commonObjs","operatorList","pageIndex","useRequestAnimationFrame","renderTask","Promise","getOperatorList","opListTask","streamTextContent","normalizeWhitespace","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","combineTextItems","highWaterMark","size","textContent","getTextContent","xfa","XfaText","readableStream","reader","pump","items","styles","getStructTree","_destroy","waitOn","force","resetStats","_tryCleanup","renderTasks","_startRenderPage","_renderPageChunk","operatorListChunk","_pumpOperatorList","renderingIntent","_abortOperatorList","curIntentState","postMessage","cloned","transfers","fallbackCloneValue","desc","event","cloneValue","addEventListener","removeEventListener","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","pdfjsFilePath","wrapper","_workerPorts","_initializeFromPort","_initialize","workerSrc","isSameOrigin","terminateEarly","onWorkerError","sendTest","testObj","info","_setupFakeWorker","WorkerMessageHandler","id","workerHandler","fromPort","_mainThreadWorkerMessageHandler","_setupFakeWorkerGlobal","loader","mainWorkerMessageHandler","eval","loadScript","docStats","pageCache","pagePromises","metadataPromise","onUnsupportedFeature","styleElement","getRenderingIntent","isOpList","lastModified","cacheKey","page","terminated","setupMessageHandler","evt","loaded","total","sink","readyReason","headersCapability","fullReader","isStreamingSupported","isRangeSupported","contentLength","rangeReader","pdfInfo","ex","exception","updatePassword","exportedError","exportedData","fontRegistry","registerFont","pageProxy","MAX_IMAGE_SIZE_TO_STORE","imageData","_onUnsupportedFeature","cachedPromise","pageInfo","filename","getDocJSActions","getPageJSActions","results","metadata","startCleanup","cleanupSuccessful","_ensureObj","resolved","has","clear","cancel","canvasInUse","completed","initializeGraphics","transparency","InternalRenderTask","operatorListChanged","_continue","_scheduleNext","_next","version","build","addNativeFontFace","insertRule","styleSheet","bind","nativeFontFace","featureId","rule","_queueLoadingCallback","isFontLoadingAPISupported","hasFonts","isSyncFontLoadingSupported","_loadTestFont","_prepareFontLoadEvent","FontLoader","requests","nextRequestId","supported","navigator","otherRequest","setTimeout","done","getLoadTestFont","atob","offset","chunk1","s","chunk2","ctx","called","isFontReady","loadTestFontId","COMMENT_OFFSET","spliceString","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","int32","string32","btoa","names","div","span","translatedData","createNativeFontFace","css","weight","createFontFaceRule","bytesToString","getPathGenerator","cmds","jsBuf","args","current","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","fs","__non_webpack_require__","Canvas","getValue","setValue","modified","getAll","objectFromMap","_setModified","resetModified","serializable","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","COMPILE_TYPE3_GLYPHS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","LINEWIDTH_SCALE_FACTOR","destCtx","set","ad_bc","bc_ad","old","prev","cosValue","sinValue","getCanvas","canvasEntry","addContextCurrentTransform","POINT_TO_PROCESS_LIMIT","POINT_TYPES","imgData","width1","points","lineSize","data0","elem","mask","count","j0","sum","steps","outlines","coords","p0","step","pp","drawOutline","k","kk","o","l","ll","setCurrentPoint","updatePathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","startNewPathAndClipBox","getClippedPathBoundingBox","transferMaps","partialChunkHeight","fullChunks","totalChunks","chunkImgData","srcPos","dest","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","thisChunkHeight","destPos","srcDiff","kEnd","kEndUnrolled","srcByte","hasTransferMaps","elemsInThisChunk","properties","property","sourceCtx","alpha","alpha_","r0","g0","b0","maskData","transferMap","layerData","y","hasBackdrop","backdrop","subtype","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","maskCtx","layerOffsetX","layerCtx","composeSMaskBackdrop","layerBox","layerOffsetY","layerWidth","layerHeight","genericComposeSMask","actualScale","interpolate","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","beginDrawing","transparentCanvas","resetCtxToDefault","viewport","executeOperatorList","executionStartIdx","argsArrayLen","chunkOperations","endTime","stepper","fnId","objsPool","depObjId","continueCallback","endDrawing","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","tmpCanvas","tmpCtx","_createMaskCanvas","fillColor","isPatternFill","maskCanvas","putBinaryImageMask","objToCanvas","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","scaled","getImageSmoothingEnabled","inverse","states","state","key","checkSMaskState","inSMaskMode","beginSMaskMode","cacheId","scratchCanvas","copyCtxState","mirrorContextOperations","endSMaskMode","compose","dirtyBox","suspendedCtx","composeSMask","x","ops","xw","yh","startX","startY","consumePath","strokeColor","lineWidth","needRestore","paths","path","fontObj","bold","italic","typeface","browserFontSize","paintChar","textRenderingMode","fontSize","fillStrokeMode","isAddToPathSet","patternFill","addToPath","isFontSubpixelAAEnabled","fontSizeScale","charSpacing","wordSpacing","fontDirection","textHScale","glyphsLength","glyphs","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","patternTransform","resetLineWidthToOne","glyph","isNum","restoreNeeded","spacing","character","accent","vmetric","vx","vy","scaledX","scaledY","measuredWidth","characterScaleX","scaledAccentX","scaledAccentY","charWidth","showType3Text","fontMatrix","isTextInvisible","spacingLength","transformed","urx","ury","getColorN_Pattern","IR","color","baseTransform","canvasGraphicsFactory","createCanvasGraphics","_getPattern","matrix","getShadingPattern","inv","bl","br","ul","ur","x0","y0","x1","y1","bbox","currentCtx","group","currentTransform","canvasBounds","scaleX","scaleY","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","skewX","skewY","positions","trans","images","image","objId","map","w","h","imgToPaint","putBinaryImageData","position","left","top","entry","visible","tag","getSinglePixelWidth","absDet","sqNorm1","sqNorm2","pixelHeight","getCanvasPosition","isContentVisible","CanvasGraphics","SHADING","region","getPattern","_createGradient","grad","colorStop","ownerBBox","owner","applyBoundingBox","domMatrix","colors","rowSize","tmp","c1","c2","c3","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","ps","figure","cs","verticesPerRow","rows","cols","q","drawTriangle","_createMeshCanvas","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","combinedScale","paddedWidth","paddedHeight","cachedCanvases","backgroundColor","drawFigure","matrixScale","temporaryPatternCanvas","PaintType","COLORED","UNCOLORED","createPatternCanvas","xstep","ystep","paintType","tilingType","curMatrixScale","dimx","dimy","graphics","adjustedX0","adjustedY0","adjustedX1","adjustedY1","getSizeAndScale","maxSize","TilingPattern","clipBbox","bboxWidth","bboxHeight","setFillAndStrokeStyleToContext","cssColor","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","callbackId","wrapReason","action","cbSourceName","cbTargetName","comObj","sourceName","targetName","on","ah","send","sendWithPromise","sendWithStream","streamId","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","stream","cancelCapability","_createStreamSink","self","streamSink","enqueue","lastDesiredSize","close","sinkCapability","onPull","onCancel","isCancelled","ready","success","_processStreamMessage","streamController","_deleteStreamController","metadataMap","getRaw","_evaluateVisibilityExpression","array","operator","element","isVisible","setVisibility","getOrder","getGroups","getGroup","_onReceiveData","found","_progressiveDataLength","_onProgress","firstReader","_onProgressiveDone","_removeRangeReader","getFullReader","queuedChunks","getRangeReader","cancelAllRequests","isPdfFile","_enqueue","requestCapability","headersReady","read","requestsCapability","output","node","walk","shouldBuildText","DEFAULT_TAB_INDEX","GetElementsByNameSet","parameters","fieldType","isRenderable","ignoreBorder","createQuadrilaterals","_createContainer","container","horizontalRadius","verticalRadius","radius","borderColor","_createQuadrilaterals","quadrilaterals","savedRect","quadPoint","_createPopup","trigger","popupElement","titleObj","modificationDate","contentsObj","richText","hideWrapper","popup","_renderQuadrilaterals","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValue","domElement","platform","isWin","isMac","linkService","hasClickAction","linkElement","index","_bindLink","destination","_bindNamedAction","_bindJSAction","jsName","detail","_bindResetFormAction","otherClickAction","refs","allFields","resetFormFields","resetFormRefs","fieldIds","field","storage","allIds","valueAsString","ids","JSON","_getKeyModifier","AnnotationElement","_setEventListener","baseName","valueGetter","shift","modifier","_setEventListeners","eventName","_setBackgroundColor","_dispatchEventFromSandbox","setColor","ColorConverters","commonActions","display","hidden","print","focus","preventScroll","userName","readonly","required","bgColor","fgColor","textColor","jsEvent","actions","setPropertyOnSiblings","storedData","elementData","userValue","formattedValue","beforeInputSelectionRange","beforeInputValue","defaultValue","blurListener","selRange","selStart","selEnd","commitKey","willCommit","_blurListener","change","fieldWidth","combWidth","_setTextStyle","TEXT_ALIGNMENT","style","fontColor","curChecked","checked","checkbox","radio","pdfButtonValue","fontSizeStyle","selectElement","option","optionElement","isExport","getItems","displayValue","values","multipleSelection","remove","insert","indices","editable","changeEx","keyDown","IGNORE_TYPES","selector","parentElements","popupLeft","popupTop","BACKGROUND_ENLIGHT","g","title","dateObject","PDFDateString","XfaLayer","xfaHtml","contents","_formatContents","lines","line","_toggle","_show","pin","_hide","unpin","borderWidth","square","circle","coordinate","polyline","getFilenameFromUrl","stringToPDFString","_download","sortedAnnotations","popupAnnotations","layer","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","fieldObjects","mouseState","isDown","rendered","setAnnotationCanvasMap","update","elements","ownTransform","ownMatrix","firstChild","CMYK_G","G_CMYK","G_RGB","G_HTML","G","makeColorComp","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","RGB_CMYK","setupStorage","html","setAttributes","isHTMLAnchorElement","attributes","root","rootHtml","stack","rootDiv","textDivs","parent","child","childHtml","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","cachedAscent","metrics","ascent","descent","ratio","pixels","textDiv","textDivProperties","angle","hasText","geom","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","tx","fontHeight","fontAscent","getAscent","shouldScaleText","absScaleX","absScaleY","angleCos","angleSin","divWidth","divHeight","right","bottom","textDivsLength","ts","expanded","expandBounds","divProperties","e","jj","boxScale","findPositiveMin","x1New","x2New","expandBoundsLTR","boxes","fakeBoundary","horizon","boundary","maxXNew","horizonPart","affectedBoundary","xNew","changedHorizon","lastBoundary","useBoundary","used","textContentItemsStr","_processItems","len","appendText","_layoutText","fontFamily","_render","timeout","styleCache","textItems","textStyles","expandTextDivs","expandDivs","expand","transformBuf","paddingBuf","divProps","renderParameters","textContentStream","enhanceTextSelection","SVGGraphics","SVG_DEFAULTS","fontStyle","fontWeight","XML_NS","XLINK_NS","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc","body","crc32","deflateSyncUncompressed","input","Buffer","level","literals","maxBlockLength","deflateBlocks","idat","pi","adler","adler32","colorType","bitDepth","offsetLiterals","offsetBytes","kind","ihdr","deflateSync","pngLength","writePngChunk","createObjectURL","encode","opTree","opListElement","fn","pf","clipCount","maskCount","shadingCount","loadDependencies","transformMatrix","getSVG","svgElement","convertOpList","operatorIdMapping","opList","opListToTree","executeOpTree","opTreeElement","lineWidthScale","textMatrix","pm","addFontStyle","details","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeTilingPattern","tilingId","txstep","tystep","tiling","tx1","ty1","_makeShadingPattern","shadingId","colorStops","point0","point1","gradient","focalPoint","circlePoint","focalRadius","circleRadius","stop","op","clipId","clipPath","clipElement","_setStrokeAttributes","dashArray","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","clipGroup","_ensureTransformGroup","http","https","fileUriRegex","parsedUrl","parseUrl","_error","_setReadableStream","auth","host","method","handleResponse","getResponseHeader","isHttp","suggestedLength","extractFilenameFromHeader","createRequestOptions","stat","returnValues","allowRangeRequests","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","status","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","decoder","fatal","textdecode","iter","parts","part","quotindex","encodingend","extvalue","encoding","langvalue","text","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","requestRange","listeners","requestFull","xhrId","pendingRequest","onProgress","onStateChange","xhrStatus","ok_response_on_range_request","getArrayBuffer","rangeHeader","begin","getRequestXhr","isPendingRequest","abortRequest","_onRangeRequestReaderClosed","onHeadersReceived","onDone","onError","manager","_onHeadersReceived","fullRequestXhrId","fullRequestXhr","_onDone","_onError","createResponseStatusError","_close","signal","abortController","mode","credentials","redirect","headers","createHeaders","createFetchOptions","validateResponseStatus","pdfjsVersion","pdfjsBuild","require","setPDFNetworkStreamFactory"],"sourceRoot":""}
\No newline at end of file