contentmatcher/static/js/pdf.js.map

1 line
1022 KiB
Plaintext

{"version":3,"file":"pdf.js","mappings":"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","sources":["webpack://pdfjs-dist/build/pdf/webpack/universalModuleDefinition","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/api.js","webpack://pdfjs-dist/build/pdf/src/display/display_utils.js","webpack://pdfjs-dist/build/pdf/src/display/base_factory.js","webpack://pdfjs-dist/build/pdf/src/display/font_loader.js","webpack://pdfjs-dist/build/pdf/src/display/annotation_storage.js","webpack://pdfjs-dist/build/pdf/src/shared/murmurhash3.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/shared/image_utils.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/node_utils.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, () => {\nreturn ","/* 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 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\nfunction bytesToString(bytes) {\n if (\n typeof bytes !== \"object\" ||\n bytes === null ||\n bytes.length === undefined\n ) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\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 */\n// eslint-disable-next-line consistent-return\nfunction arrayByteLength(arr) {\n if (arr.length !== undefined) {\n return arr.length;\n }\n if (arr.byteLength !== undefined) {\n return arr.byteLength;\n }\n unreachable(\"Invalid argument for arrayByteLength\");\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}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch (e) {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\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 // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\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 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\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 if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n return decoder.decode(buffer);\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const code = PDFStringTranslateTable[str.charCodeAt(i)];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\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 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\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 createPromiseCapability,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n escapeString,\n FeatureTest,\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 MissingPDFException,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\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/* globals __non_webpack_require__ */\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 !globalThis._pdfjsCompatibilityChecked\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 = __non_webpack_require__(\n \"dommatrix/dist/dommatrix.js\"\n );\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 (globalThis.ReadableStream || !isNodeJS) {\n return;\n }\n globalThis.ReadableStream = __non_webpack_require__(\n \"web-streams-polyfill/dist/ponyfill.js\"\n ).ReadableStream;\n })();\n\n // Support: Firefox<94, Chrome<98, Safari<15.4, Node.js<17.0.0\n (function checkStructuredClone() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // The current image decoders are synchronous, hence `structuredClone`\n // shouldn't need to be polyfilled for the IMAGE_DECODERS build target.\n return;\n }\n if (globalThis.structuredClone) {\n return;\n }\n require(\"core-js/web/structured-clone.js\");\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 PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\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 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 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 { 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\nlet DefaultCanvasFactory = DOMCanvasFactory;\nlet DefaultCMapReaderFactory = DOMCMapReaderFactory;\nlet DefaultStandardFontDataFactory = DOMStandardFontDataFactory;\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS) {\n const {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n } = require(\"./node_utils.js\");\n\n DefaultCanvasFactory = NodeCanvasFactory;\n DefaultCMapReaderFactory = NodeCMapReaderFactory;\n DefaultStandardFontDataFactory = NodeStandardFontDataFactory;\n}\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.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 (!Number.isInteger(params.rangeChunkSize) || params.rangeChunkSize < 1) {\n params.rangeChunkSize = DEFAULT_RANGE_CHUNK_SIZE;\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) || params.maxImageSize < -1) {\n params.maxImageSize = -1;\n }\n if (typeof params.cMapUrl !== \"string\") {\n params.cMapUrl = null;\n }\n if (typeof params.standardFontDataUrl !== \"string\") {\n params.standardFontDataUrl = null;\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 = isNodeJS;\n }\n if (typeof params.useSystemFonts !== \"boolean\") {\n params.useSystemFonts = !isNodeJS && !params.disableFontFace;\n }\n if (\n typeof params.ownerDocument !== \"object\" ||\n params.ownerDocument === null\n ) {\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 #docId = 0;\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.#docId++}`;\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} 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 *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\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 /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._bitmaps = new Set();\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 pageColors = 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 pageColors,\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 * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\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 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 * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\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 for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.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 for (const bitmap of this._bitmaps) {\n bitmap.close();\n }\n this._bitmaps.clear();\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 const event = {\n data: structuredClone(obj, transfers),\n };\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 // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (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 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 #workerPorts = new WeakMap();\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 !PDFWorkerUtil.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();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\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 annotationHash = \"\";\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 annotationHash = this.annotationStorage.hash;\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}_${annotationHash}`,\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 if (password instanceof Error) {\n this._passwordCapability.reject(password);\n } else {\n this._passwordCapability.resolve({ 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) {\n let length;\n if (imageData.bitmap) {\n const { bitmap, width, height } = imageData;\n length = width * height * 4;\n pageProxy._bitmaps.add(bitmap);\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_STORE) {\n pageProxy.cleanupAfterRender = true;\n }\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 if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\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 */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n const obj = this.#objs[objId];\n if (obj) {\n return obj;\n }\n return (this.#objs[objId] = {\n capability: createPromiseCapability(),\n data: null,\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 * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\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 const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\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?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\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 #canvasInUse = new WeakSet();\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 pageColors = null,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\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 this.pageColors\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 PDFWorkerUtil,\n RenderTask,\n setPDFNetworkStreamFactory,\n version,\n};\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 BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport { BaseException, stringToBytes, Util, warn } from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\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 /**\n * @ignore\n */\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 /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* asTypedArray = */ true);\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\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\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 || typeof input !== \"string\") {\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 deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n StatTimer,\n};\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 * @ignore\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 * @ignore\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 * @ignore\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 * @ignore\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\nimport {\n assert,\n bytesToString,\n FeatureTest,\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 && FeatureTest.isEvalSupported) {\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\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\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._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 * Get the value for a given key.\n *\n * @public\n * @memberof AnnotationStorage\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this._storage.get(key);\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._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 hash() {\n const hash = new MurmurHash3_64();\n\n for (const [key, value] of this._storage) {\n hash.update(`${key}:${JSON.stringify(value)}`);\n }\n return hash.hexdigest();\n }\n}\n\nexport { AnnotationStorage };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n const hex1 = (h1 >>> 0).toString(16),\n hex2 = (h2 >>> 0).toString(16);\n return hex1.padStart(8, \"0\") + hex2.padStart(8, \"0\");\n }\n}\n\nexport { MurmurHash3_64 };\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 FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\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 { applyMaskImageData } from \"../shared/image_utils.js\";\nimport { isNodeJS } from \"../shared/is_node.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 schedules 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 (ctx._transformStack) {\n // Reset the transform stack.\n ctx._transformStack = [];\n }\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 if (this._transformStack.length === 0) {\n warn(\"Tried to restore a ctx when the stack was already empty.\");\n }\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 delete(id) {\n delete this.cache[id];\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 drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = ctx.mozCurrentTransform;\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (\n !COMPILE_TYPE3_GLYPHS ||\n width > MAX_SIZE_TO_COMPILE ||\n height > MAX_SIZE_TO_COMPILE\n ) {\n return null;\n }\n\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 width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\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 let path, outlines, coords;\n if (!isNodeJS) {\n path = new Path2D();\n } else {\n outlines = [];\n }\n\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\n if (path) {\n path.moveTo(p % width1, i);\n } else {\n coords = [p % width1, i];\n }\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 if (path) {\n path.lineTo(p % width1, (p / width1) | 0);\n } else {\n coords.push(p % width1, (p / width1) | 0);\n }\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n\n if (!path) {\n outlines.push(coords);\n }\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\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 if (path) {\n c.fill(path);\n } else {\n c.beginPath();\n for (const o of outlines) {\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 }\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 updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n this.minX = Math.min(this.minX, p1[0], p2[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\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 isEmptyClip() {\n return this.minX === Infinity;\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 = FeatureTest.isLittleEndian ? 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 if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\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\n ({ srcPos } = applyMaskImageData({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\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, foregroundColor) {\n ctx.strokeStyle = ctx.fillStyle = foregroundColor || \"#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 pageColors\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 this.backgroundColor = pageColors?.background || null;\n this.foregroundColor = pageColors?.foreground || null;\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._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\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 const defaultBackgroundColor = background || \"#ffffff\";\n this.ctx.save();\n\n if (this.foregroundColor && this.backgroundColor) {\n // Get the #RRGGBB value of the color. If it's a name (e.g. CanvasText)\n // then it'll be converted to its rgb value.\n this.ctx.fillStyle = this.foregroundColor;\n const fg = (this.foregroundColor = this.ctx.fillStyle);\n this.ctx.fillStyle = this.backgroundColor;\n const bg = (this.backgroundColor = this.ctx.fillStyle);\n let isValidDefaultBg = true;\n let defaultBg = defaultBackgroundColor;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.ctx.fillStyle = defaultBackgroundColor;\n defaultBg = this.ctx.fillStyle;\n isValidDefaultBg =\n typeof defaultBg === \"string\" && /^#[0-9A-Fa-f]{6}$/.test(defaultBg);\n }\n\n if (\n (fg === \"#000000\" && bg === \"#ffffff\") ||\n fg === bg ||\n !isValidDefaultBg\n ) {\n // Ignore the `pageColors`-option when:\n // - The computed background/foreground colors have their default\n // values, i.e. white/black.\n // - The computed background/foreground colors are identical,\n // since that'd render the `canvas` mostly blank.\n // - The `background`-option has a value that's incompatible with\n // the `pageColors`-values.\n //\n this.foregroundColor = this.backgroundColor = null;\n } else {\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\n const cB = parseInt(defaultBg.slice(1), 16);\n const rB = (cB && 0xff0000) >> 16;\n const gB = (cB && 0x00ff00) >> 8;\n const bB = cB && 0x0000ff;\n const newComp = x => {\n x /= 255;\n return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n };\n const lumB = Math.round(\n 0.2126 * newComp(rB) + 0.7152 * newComp(gB) + 0.0722 * newComp(bB)\n );\n this.selectColor = (r, g, b) => {\n const lumC =\n 0.2126 * newComp(r) + 0.7152 * newComp(g) + 0.0722 * newComp(b);\n return Math.round(lumC) === lumB ? bg : fg;\n };\n }\n }\n\n this.ctx.fillStyle = this.backgroundColor || defaultBackgroundColor;\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 /* trackTransform */ 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, this.foregroundColor);\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\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.inSMaskMode) {\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 for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.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 /* trackTransform */ false\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, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = ctx.mozCurrentTransform;\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets.\n // TODO: handle the case of a pattern fill if it's possible.\n const withoutTranslation = currentTransform.slice(0, 4);\n cacheKey = JSON.stringify(\n isPatternFill ? withoutTranslation : [withoutTranslation, fillColor]\n );\n\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height,\n /* trackTransform */ false\n );\n putBinaryImageMask(maskCanvas.context, img);\n }\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\n let maskToCanvas = Util.transform(currentTransform, [\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.round(rect[2] - rect[0]) || 1;\n const drawnHeight = Math.round(rect[3] - rect[1]) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight,\n /* trackTransform */ true\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\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\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n fillCtx.mozCurrentTransformInverse\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n fillCtx.mozCurrentTransform,\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.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 if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\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 if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking = null;\n }\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 get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\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.inSMaskMode) {\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 /* trackTransform */ 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.inSMaskMode) {\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.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 if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\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.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking = null;\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._cachedScaleForStroking = null;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = ctx.mozCurrentTransform;\n\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\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 if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\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 currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\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 currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\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 currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\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 ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n ctx.mozCurrentTransformInverse,\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\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) {\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 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 ctx.strokeText(character, x, y);\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 /* trackTransform */ false\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 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 lineWidth = this.getSinglePixelWidth();\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 (typeof glyph === \"number\") {\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(character, scaledX, scaledY, patternTransform);\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 );\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\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._cachedScaleForStroking = null;\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 (typeof glyph === \"number\") {\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.ctx.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 = this.selectColor?.(r, g, b) || 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 = this.selectColor?.(r, g, b) || 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.updateRectMinMax(this.ctx.mozCurrentTransform, bbox);\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 if (this.inSMaskMode) {\n this.endSMaskMode();\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 /* trackTransform */ 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(currentCtx);\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 = 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 (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 const viewportScaleFactorStr = `var(--zoom-factor) * ${PixelsPerInch.PDF_TO_CSS_UNITS}`;\n canvas.style.width = `calc(${width}px * ${viewportScaleFactorStr})`;\n canvas.style.height = `calc(${height}px * ${viewportScaleFactorStr})`;\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, this.foregroundColor);\n } else {\n resetCtxToDefault(this.ctx, this.foregroundColor);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.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 count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\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 img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\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(img);\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 /* trackTransform */ false\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 drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(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 = this.getObject(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 /* trackTransform */ false\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\n const [rWidth, rHeight] = drawImageAtIntegerCoords(\n ctx,\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: rWidth,\n height: rHeight,\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(\n \"inlineImage\",\n w,\n h,\n /* trackTransform */ false\n );\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 drawImageAtIntegerCoords(\n ctx,\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 const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = this.ctx.mozCurrentTransform;\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (!this._cachedScaleForStroking) {\n const { lineWidth } = this.current;\n const m = this.ctx.mozCurrentTransform;\n let scaleX, scaleY;\n\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n const normX = Math.abs(m[0]);\n const normY = Math.abs(m[3]);\n if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[1]);\n const normY = Math.hypot(m[2], m[3]);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking = [scaleX, scaleY];\n }\n return this._cachedScaleForStroking;\n }\n\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n let savedMatrix, savedDashes, savedDashOffset;\n if (saveRestore) {\n savedMatrix = ctx.mozCurrentTransform.slice();\n savedDashes = ctx.getLineDash().slice();\n savedDashOffset = ctx.lineDashOffset;\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when scaleX !== scaleY.\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(ctx.getLineDash().map(x => x / scale));\n ctx.lineDashOffset /= scale;\n\n ctx.stroke();\n\n if (saveRestore) {\n ctx.setTransform(...savedMatrix);\n ctx.setLineDash(savedDashes);\n ctx.lineDashOffset = savedDashOffset;\n }\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\";\nimport { isNodeJS } from \"../shared/is_node.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox || isNodeJS) {\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 coordinates 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 // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\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.current.updateRectMinMax(graphics.ctx.mozCurrentTransform, [\n x0,\n y0,\n x1,\n y1,\n ]);\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 2022 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 { FeatureTest } from \"./util.js\";\n\nfunction applyMaskImageData({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n inverseDecode = false,\n}) {\n const opaque = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = !inverseDecode ? [opaque, 0] : [0, opaque];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n\n return { srcPos, destPos };\n}\n\nexport { applyMaskImageData };\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 unreachable,\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 unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\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 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\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst 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\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const Canvas = __non_webpack_require__(\"canvas\");\n return Canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeStandardFontDataFactory,\n};\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 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\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\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, height } = getRectDims(data.rect);\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 get _commonActions() {\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 return shadow(this, \"_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\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n if (action) {\n action(jsEvent);\n }\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n action({ detail, target: element });\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\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 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 });\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: valueGetter(event),\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\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 });\n const textContent = storedData.formattedValue || storedData.value || \"\";\n const elementData = {\n userValue: null,\n formattedValue: null,\n valueOnFocus: \"\",\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 elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\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 elementData.valueOnFocus = event.target.value;\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 event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue,\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\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 // 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 const { value } = event.target;\n if (elementData.valueOnFocus === value) {\n return;\n }\n // Save the entered value\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n const { value } = event.target;\n elementData.userValue = value;\n if (this._mouseState.isDown && elementData.valueOnFocus !== value) {\n // Focus out using the mouse: data are committed\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n\n // We handle the event ourselves.\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\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 this._setDefaultPropertiesFromJS(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 this._setDefaultPropertiesFromJS(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 this._setDefaultPropertiesFromJS(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 this._setDefaultPropertiesFromJS(container);\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 const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\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 (storedData.value.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, /* isExport */ true) });\n });\n }\n\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(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, height } = getRectDims(data.rect);\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, height } = getRectDims(data.rect);\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, height } = getRectDims(data.rect);\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, height } = getRectDims(data.rect);\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, height } = getRectDims(data.rect);\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 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 const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\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 { 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 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 {DocumentFragment} container - The DOM node that will contain the\n * 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 correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an 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 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 FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\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 createObjectURL = function (\n data,\n contentType = \"\",\n forceDataSchema = false\n ) {\n if (\n URL.createObjectURL &&\n typeof Blob !== \"undefined\" &&\n !forceDataSchema\n ) {\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\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 (typeof glyph === \"number\") {\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 if (\n typeof PDFJSDev === \"undefined\" ||\n PDFJSDev.test(\"!PRODUCTION || TESTING\")\n ) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\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// - 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 }\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\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/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n AnnotationMode,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n InvalidPDFException,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PermissionFlag,\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 {\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isPdfFile,\n isValidFetchUrl,\n loadScript,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n} from \"./display/display_utils.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 AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createPromiseCapability,\n createValidAbsoluteUrl,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n InvalidPDFException,\n isPdfFile,\n loadScript,\n LoopbackPort,\n MissingPDFException,\n OPS,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n RenderingCancelledException,\n renderTextLayer,\n shadow,\n SVGGraphics,\n UnexpectedResponseException,\n UNSUPPORTED_FEATURES,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n"],"names":["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","NONE","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","setVerbosityLevel","level","Number","isInteger","getVerbosityLevel","info","msg","console","log","warn","unreachable","Error","assert","cond","_isValidProtocol","url","protocol","createValidAbsoluteUrl","baseUrl","options","addDefaultProtocol","startsWith","dots","match","length","tryConvertEncoding","stringToUTF8String","ex","absoluteUrl","URL","shadow","obj","prop","value","Object","defineProperty","enumerable","configurable","writable","BaseException","BaseExceptionClosure","message","name","constructor","prototype","PasswordException","code","UnknownErrorException","details","InvalidPDFException","MissingPDFException","UnexpectedResponseException","status","FormatError","AbortException","bytesToString","bytes","undefined","MAX_ARGUMENT_COUNT","String","fromCharCode","apply","strBuf","i","chunkEnd","Math","min","chunk","subarray","push","join","stringToBytes","str","Uint8Array","charCodeAt","arrayByteLength","arr","byteLength","arraysToBytes","resultLength","pos","data","item","itemLength","set","string32","objectSize","keys","objectFromMap","map","create","key","isLittleEndian","buffer8","view32","Uint32Array","buffer","isEvalSupported","Function","e","FeatureTest","isOffscreenCanvasSupported","OffscreenCanvas","hexNumbers","Array","n","toString","padStart","Util","makeHexColor","r","g","b","scaleMinMax","minMax","temp","m1","m2","applyTransform","p","m","xt","yt","applyInverseTransform","d","getAxialAlignedBoundingBox","p1","p2","slice","p3","p4","max","inverseTransform","apply3dTransform","v","singularValueDecompose2dScale","transpose","a","c","first","second","sqrt","sx","sy","normalizeRect","rect","intersect","rect1","rect2","xLow","xHigh","yLow","yHigh","bezierBoundingBox","x0","y0","x1","y1","x2","y2","x3","y3","tvalues","bounds","t","t1","t2","b2ac","sqrtb2ac","abs","j","mt","jlen","PDFStringTranslateTable","stringToPDFString","encoding","decoder","TextDecoder","fatal","decode","ii","charAt","escapeString","replace","isAscii","test","stringToUTF16BEString","buf","char","decodeURIComponent","escape","utf8StringToString","unescape","encodeURIComponent","isArrayBuffer","isArrayEqual","arr1","arr2","getModificationDate","date","Date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","createPromiseCapability","capability","isSettled","get","promise","Promise","resolve","reject","reason","isNodeJS","process","versions","nw","electron","type","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DefaultCanvasFactory","DOMCanvasFactory","DefaultCMapReaderFactory","DOMCMapReaderFactory","DefaultStandardFontDataFactory","DOMStandardFontDataFactory","NodeCanvasFactory","NodeCMapReaderFactory","NodeStandardFontDataFactory","require","createPDFNetworkStream","setPDFNetworkStreamFactory","pdfNetworkStreamFactory","getDocument","src","task","PDFDocumentLoadingTask","source","PDFDataRangeTransport","range","params","rangeTransport","worker","window","location","href","Buffer","isNaN","CMapReaderFactory","StandardFontDataFactory","ignoreErrors","stopAtErrors","fontExtraProperties","pdfBug","enableXfa","rangeChunkSize","docBaseUrl","isDataScheme","maxImageSize","cMapUrl","standardFontDataUrl","useWorkerFetch","disableFontFace","useSystemFonts","ownerDocument","globalThis","document","disableRange","disableStream","disableAutoFetch","workerParams","port","GlobalWorkerOptions","workerPort","PDFWorker","fromPort","_worker","docId","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","networkStream","PDFDataTransportStream","initialData","progressiveDone","contentDispositionFilename","httpHeaders","withCredentials","all","workerId","messageHandler","MessageHandler","transport","WorkerTransport","_transport","send","catch","_capability","pdfDataRangeTransport","sendWithPromise","apiVersion","password","onPassword","onProgress","onUnsupportedFeature","destroy","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","deprecated","fingerprints","stats","streamTypes","fontTypes","annotationStorage","numPages","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","id","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJavaScript","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","saveDocument","size","getFieldObjects","hasJSActions","getCalculationOrderIds","PDFPageProxy","pageIndex","pageInfo","_pageIndex","_pageInfo","_ownerDocument","_stats","StatTimer","_pdfBug","commonObjs","objs","PDFObjects","_bitmaps","Set","cleanupAfterRender","pendingCleanup","_intentStates","Map","_annotationPromises","rotate","userUnit","view","getViewport","scale","rotation","offsetX","offsetY","dontFlip","PageViewport","viewBox","getAnnotations","intent","intentArgs","getRenderingIntent","cacheKey","renderingIntent","annotations","annotation","titleObj","contentsObj","_jsActionsPromise","getPageJSActions","getXfa","children","render","canvasContext","viewport","annotationMode","imageLayer","canvasFactory","background","optionalContentConfigPromise","annotationCanvasMap","pageColors","arguments","renderInteractiveForms","includeAnnotationStorage","time","intentState","streamReaderCancelTimeout","clearTimeout","canvasFactoryInstance","intentPrint","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","_pumpOperatorList","complete","error","renderTasks","delete","internalRenderTask","_tryCleanup","_abortOperatorList","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","add","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","disableCombineTextItems","includeMarkedContent","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","combineTextItems","highWaterMark","textContent","items","getTextContent","xfa","XfaText","readableStream","pump","reader","read","done","assign","styles","getReader","getStructTree","_structTreePromise","_destroy","waitOn","values","force","completed","cancel","clear","bitmap","close","resetStats","_startRenderPage","_renderPageChunk","operatorListChunk","serializable","streamReader","RenderingCancelledException","setTimeout","curCacheKey","curIntentState","LoopbackPort","_listeners","_deferred","postMessage","transfers","event","structuredClone","call","addEventListener","removeEventListener","indexOf","splice","terminate","PDFWorkerUtil","isWorkerDisabled","fallbackWorkerSrc","fakeWorkerId","__non_webpack_require__","pdfjsFilePath","currentScript","isSameOrigin","otherUrl","base","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","WeakMap","has","_port","_webWorker","_messageHandler","_initializeFromPort","_initialize","on","Worker","_mainThreadWorkerMessageHandler","workerSrc","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","pdfjsWorker","loader","mainWorkerMessageHandler","eval","loadScript","getWorkerSrc","docStats","pageCache","pagePromises","metadataPromise","fontLoader","FontLoader","_onUnsupportedFeature","bind","styleElement","_params","isCompressed","cMapPacked","destroyCapability","_passwordCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","AnnotationStorage","isOpList","annotationHash","hash","page","hasOwnProperty","resetModified","terminated","_getFieldObjectsPromise","_hasJSActionsPromise","cancelAllRequests","sink","getFullReader","evt","onPull","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","exception","updatePassword","exportedData","exportedError","fontRegistry","FontInspector","enabled","registerFont","fontAdded","FontFaceObject","finally","imageData","pageProxy","MAX_IMAGE_SIZE_TO_STORE","width","height","freeze","fetch","featureId","cachedPromise","num","gen","filename","results","OptionalContentConfig","metadata","Metadata","cleanupSuccessful","ensureObj","objId","settled","RenderTask","_internalRenderTask","onContinue","canvasInUse","WeakSet","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","canvas","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","CanvasGraphics","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","SVG_NS","PixelsPerInch","CSS","PDF","PDF_TO_CSS_UNITS","BaseCanvasFactory","_document","_createCanvas","createElement","fetchData","asTypedArray","isValidFetchUrl","baseURI","response","ok","statusText","arrayBuffer","text","request","XMLHttpRequest","open","responseType","onreadystatechange","readyState","DONE","responseText","BaseCMapReaderFactory","_fetchData","compressionType","cMapData","BaseStandardFontDataFactory","DOMSVGFactory","BaseSVGFactory","_createSVG","createElementNS","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","clone","convertToViewportPoint","x","y","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","trim","substring","toLowerCase","isPdfFile","getFilenameFromUrl","anchor","query","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","includes","started","times","now","start","outBuf","longest","duration","padEnd","removeScriptElement","script","onload","remove","onerror","head","documentElement","appendChild","pdfDateStringRegex","PDFDateString","toDateObject","input","RegExp","matches","year","parseInt","month","day","hour","minute","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","style","context","getContext","reset","canvasAndContext","svg","setAttribute","BaseFontLoader","nativeFontFaces","addNativeFontFace","nativeFontFace","fonts","insertRule","rule","getElementsByTagName","styleSheet","sheet","cssRules","attached","missingFile","isFontLoadingAPISupported","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","_loadTestFont","rules","fontsToLoad","GenericFontLoader","loadingContext","requests","nextRequestId","loadTestFontId","supported","navigator","userAgent","completeRequest","otherRequest","shift","getLoadTestFont","atob","int32","offset","spliceString","s","insert","chunk1","chunk2","ctx","called","isFontReady","fillText","getImageData","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","names","loadedName","div","visibility","position","top","left","span","fontFamily","body","translatedData","compiledGlyphs","cssFontInfo","FontFace","css","weight","fontWeight","italicAngle","mimetype","getPathGenerator","character","cmds","jsBuf","current","args","cmd","_storage","_modified","onSetModified","onResetModified","getValue","defaultValue","getRawValue","setValue","modified","entry","val","entries","_setModified","getAll","MurmurHash3_64","update","JSON","stringify","hexdigest","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","hex1","hex2","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","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","__originalRotate","__originalScale","__originalTranslate","translate","__originalTransform","__originalSetTransform","setTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","__originalLineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","__originalBeginPath","beginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","f","ctxSetTransform","ctxResetTransform","ctxRotate","angle","cp1x","cp1y","cp2x","cp2y","addContextCurrentTransform","_transformStack","mozCurrentTransform","_originalSave","_originalRestore","_originalRotate","_originalScale","_originalTranslate","_originalTransform","_originalSetTransform","_originalResetTransform","_transformMatrix","desc","getOwnPropertyDescriptor","getPrototypeOf","_setLineWidth","_getLineWidth","getLineWidth","_","getCurrentTransform","getCurrentTransformInverse","ad_bc","bc_ad","old","prev","pop","cosValue","cos","sinValue","sin","CachedCanvases","cache","getCanvas","trackTransform","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","round","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","scaleX","hypot","scaleY","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","points","j0","lineSize","elem","mask","count","sum","steps","Int32Array","path","outlines","coords","Path2D","p0","step","pp","drawOutline","o","l","ll","CanvasExtraState","alphaIsShape","fontSize","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","fillColor","strokeColor","patternFill","fillAlpha","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","minX","minY","maxX","maxY","updateRectMinMax","updateScalingPathMinMax","updateCurvePathMinMax","box","getPathBoundingBox","pathType","PathType","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","getClippedPathBoundingBox","putBinaryImageData","ImageData","putImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","createImageData","srcPos","destPos","dest","thisChunkHeight","elemsInThisChunk","transferMapRed","transferMapGreen","transferMapBlue","transferMapGray","kind","srcLength","dest32","dest32DataLength","fullSrcDiff","white","black","srcDiff","k","kEnd","kEndUnrolled","srcByte","hasTransferMaps","putBinaryImageMask","applyMaskImageData","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","foregroundColor","strokeStyle","fillStyle","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","subtype","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","ceil","row","chunkHeight","composeSMask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransform","baseTransformStack","groupLevel","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","markedContentStack","cachedCanvases","cachedPatterns","viewportScale","outputScaleX","outputScaleY","backgroundColor","foreground","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","defaultBackgroundColor","fg","bg","isValidDefaultBg","defaultBg","cB","rB","gB","bB","newComp","lumB","selectColor","lumC","fillRect","transparentCanvas","compositeCtx","beginLayout","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","fnId","breakIt","depObjId","objsPool","inSMaskMode","HTMLCanvasElement","endLayout","_scaleImage","img","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","tmpCanvas","tmpCtx","newWidth","newHeight","clearRect","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","withoutTranslation","cachedImage","maskToCanvas","cord1","cord2","drawnWidth","drawnHeight","fillCanvas","fillCtx","mozCurrentTransformInverse","imageSmoothingEnabled","inverse","getPattern","limit","dashArray","dashPhase","flatness","states","state","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","floor","ops","startX","startY","isScalingMatrix","minMaxForBezier","xw","yh","consumePath","rescaleAndStroke","needRestore","paths","pendingTextPaths","addToPath","spacing","fontRefName","fontObj","fontDirection","isType3Font","bold","italic","typeface","fallbackName","browserFontSize","mode","rise","paintChar","patternTransform","fillStrokeMode","isAddToPathSet","strokeText","isFontSubpixelAAEnabled","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","pattern","getSinglePixelWidth","glyph","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","scaledAccentY","charWidth","isTextInvisible","spacingLength","charProcOperatorList","operatorListId","transformed","xWidth","yWidth","llx","lly","urx","ury","getColorN_Pattern","IR","color","canvasGraphicsFactory","createCanvasGraphics","TilingPattern","_getPattern","matrix","getShadingPattern","SHADING","inv","bl","br","ul","ur","bbox","isArray","group","currentCtx","isolated","knockout","canvasBounds","groupCtx","startTransformInverse","currentMtx","hasOwnCanvas","canvasWidth","canvasHeight","annotationCanvas","viewportScaleFactorStr","savedCtx","compiled","skewX","skewY","positions","trans","images","image","w","h","imgToPaint","HTMLElement","getCanvasPosition","appendImage","tag","visible","isVisible","isContentVisible","isEmpty","absDet","normX","normY","getScaleForStroking","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","savedMatrix","savedDashes","savedDashOffset","op","applyBoundingBox","region","BaseShadingPattern","RadialAxialShadingPattern","_type","_bbox","_colorStops","_p0","_p1","_r0","_r1","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","ownerBBox","createPattern","domMatrix","DOMMatrix","drawTriangle","c1","c2","c3","colors","rowSize","tmp","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","BORDER_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","matrixScale","temporaryPatternCanvas","DummyShadingPattern","PaintType","COLORED","UNCOLORED","xstep","ystep","paintType","tilingType","createPatternCanvas","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","clipBbox","realOutputSize","maxSize","bboxWidth","bboxHeight","cssColor","inverseDecode","opaque","zeroMapping","oneMapping","widthInSource","widthRemainder","CallbackKind","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","stream","_processStreamMessage","action","cbSourceName","cbTargetName","result","_createStreamSink","actionName","handler","ah","queueingStrategy","ReadableStream","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","self","streamSink","isCancelled","lastDesiredSize","sinkCapability","success","streamController","_deleteStreamController","allSettled","metadataMap","parsedData","rawData","getRaw","OptionalContentGroup","creator","_order","_groups","order","groups","baseState","off","_evaluateVisibilityExpression","array","operator","element","expression","policy","ids","setVisibility","getOrder","from","getGroups","getGroup","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_isStreamingSupported","_isRangeSupported","_contentLength","_fullRequestReader","_rangeReaders","_onReceiveData","_onProgress","_onProgressiveDone","_enqueue","found","some","_begin","_progressiveDataLength","_loaded","firstReader","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_stream","_done","_filename","_requests","_headersReady","requestCapability","_end","_queuedChunk","requestsCapability","output","walk","node","shouldBuildText","child","fs","readFile","Canvas","createCanvas","DEFAULT_TAB_INDEX","GetElementsByNameSet","getRectDims","AnnotationElementFactory","parameters","annotationType","LinkAnnotationElement","TextAnnotationElement","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","WidgetAnnotationElement","PopupAnnotationElement","FreeTextAnnotationElement","LineAnnotationElement","SquareAnnotationElement","CircleAnnotationElement","PolylineAnnotationElement","CaretAnnotationElement","InkAnnotationElement","PolygonAnnotationElement","HighlightAnnotationElement","UnderlineAnnotationElement","SquigglyAnnotationElement","StrikeOutAnnotationElement","StampAnnotationElement","FileAttachmentAnnotationElement","AnnotationElement","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","enableScripting","_fieldObjects","fieldObjects","_mouseState","mouseState","container","_createContainer","quadrilaterals","_createQuadrilaterals","transformOrigin","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","borderBottomStyle","borderColor","_commonActions","setColor","jsName","styleName","detail","target","ColorConverters","display","hidden","print","focus","preventScroll","userName","title","readonly","removeAttribute","required","bgColor","fgColor","textColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","_setDefaultPropertiesFromJS","storedData","quadPoints","savedRect","quadPoint","_createPopup","trigger","popupElement","PopupElement","modificationDate","richText","hideWrapper","popup","_renderQuadrilaterals","className","quadrilateral","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","getElementById","getElementsByName","platform","isWin","isMac","isTooltipOnly","resetForm","Action","link","addLinkAttributes","newWindow","_bindNamedAction","_bindLink","hasClickAction","_bindJSAction","_bindResetFormAction","index","linkElement","cloneNode","destination","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","eventBus","dispatch","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","fieldName","field","storage","allIds","dispatchEvent","Event","hasPopup","alt","dataset","l10nId","l10nArgs","alternativeText","_getKeyModifier","ctrlKey","metaKey","_setEventListener","baseName","eventName","valueGetter","shiftKey","modifier","_setEventListeners","getter","_setBackgroundColor","hasAppearance","fieldValue","setPropertyOnSiblings","keyInStorage","formattedValue","elementData","userValue","valueOnFocus","multiLine","disabled","readOnly","tabIndex","defaultFieldValue","blurListener","scrollLeft","activeElement","selRange","setSelectionRange","commitKey","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","isDown","Keystroke","inputType","preventDefault","change","maxLen","maxLength","comb","fieldWidth","combWidth","classList","letterSpacing","verticalAlign","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","textAlignment","textAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","fontSizeStyle","selectElement","combo","multiSelect","multiple","option","selected","optionElement","displayValue","isExport","selectedIndex","filter","getItems","multipleSelection","findIndex","insertBefore","indices","editable","changeEx","keyDown","IGNORE_TYPES","parentType","selector","parentId","parentElements","querySelectorAll","parentRect","popupLeft","popupTop","pinned","BACKGROUND_ENLIGHT","hideElement","dir","dateObject","toLocaleDateString","toLocaleTimeString","XfaLayer","xfaHtml","html","lastChild","contents","_formatContents","_toggle","_show","_hide","lines","split","line","createTextNode","pin","zIndex","unpin","lineCoordinates","append","square","circle","containerClassName","svgElementName","coordinate","vertices","polyline","inkList","inkLists","content","file","_download","openOrDownloadData","AnnotationLayer","sortedAnnotations","popupAnnotations","rendered","renderedElement","prepend","setAnnotationCanvasMap","ownMatrix","elements","ownTransform","querySelector","firstChild","nodeName","replaceChild","makeColorComp","CMYK_G","G_CMYK","G_RGB","G_HTML","G","RGB_G","RGB_HTML","R","B","T_HTML","CMYK_RGB","CMYK_HTML","components","RGB_CMYK","setupStorage","xfaOn","xfaOff","getAttribute","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","root","rootHtml","stack","rootDiv","textDivs","parent","childHtml","xmlns","el","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_SIZE","DEFAULT_FONT_ASCENT","ascentCache","AllWhitespaceRegexp","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","_enhanceTextSelection","hasText","hasEOL","originalTransform","paddingBottom","paddingLeft","paddingRight","paddingTop","_textDivs","_viewport","atan2","fontName","fontHeight","fontAscent","_fontInspectorEnabled","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_textContentStream","_layoutText","angleCos","angleSin","divWidth","divHeight","right","bottom","_canceled","textDivsLength","_renderingDone","findPositiveMin","ts","expand","expanded","expandBounds","divProperties","Float64Array","jj","boxScale","boxes","x1New","x2New","expandBoundsLTR","sort","fakeBoundary","horizon","boundary","horizonPart","affectedBoundary","maxXNew","xNew","changedHorizon","lastBoundary","useBoundary","unshift","used","concat","TextLayerRenderTask","textContentStream","textContentItemsStr","enhanceTextSelection","_textContent","_container","_textContentItemsStr","_reader","_layoutTextLastFontSize","_layoutTextLastFontFamily","_layoutTextCtx","_renderTimer","_processItems","styleCache","len","parentNode","_render","timeout","textItems","textStyles","expandTextDivs","expandDivs","transformBuf","paddingBuf","divProps","padding","renderTextLayer","renderParameters","SVGGraphics","SVG_DEFAULTS","fontStyle","XML_NS","XLINK_NS","contentType","forceDataSchema","digits","b1","b2","b3","d1","d2","d3","d4","convertImgDataToPng","PNG_HEADER","CHUNK_WRAPPER_SIZE","crcTable","crc32","crc","writePngChunk","adler32","deflateSync","literals","deflateSyncUncompressed","maxBlockLength","deflateBlocks","idat","pi","adler","encode","isMask","bitDepth","colorType","offsetLiterals","offsetBytes","ihdr","pngLength","SVGExtraState","dependencies","activeClipUrl","clipGroup","maskId","opListToTree","opList","opTree","opListElement","fn","pf","toFixed","pm","acos","clipCount","maskCount","shadingCount","transformMatrix","transformStack","extraStack","embedFonts","embeddedFonts","cssStyle","_operatorIdMapping","tgrp","executeOpTree","loadDependencies","getSVG","svgElement","convertOpList","operatorIdMapping","opTreeElement","lineMatrix","xcoords","ycoords","tspan","setAttributeNS","txtElement","txtgrp","lineWidthScale","_setStrokeAttributes","_ensureTransformGroup","addFontStyle","defs","hasChildNodes","setStrokeAlpha","setFillAlpha","_makeColorN_Pattern","_makeShadingPattern","_makeTilingPattern","tilingId","tx0","ty0","tx1","ty1","xscale","yscale","txstep","tystep","tiling","childNodes","shadingId","colorStops","gradient","point0","point1","focalPoint","circlePoint","focalRadius","circleRadius","stop","getAttributeNS","clipId","clipPath","clipElement","imgSrc","cliprect","imgEl","definitions","rootGroup","_ensureClipGroup","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","parse","host","PDFNodeStream","isHttp","isFsUrl","_rangeRequestReaders","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_url","_storedError","_disableRange","_rangeChunkSize","_readableStream","_readCapability","_headersCapability","_error","_setReadableStream","BaseRangeReader","createRequestOptions","headers","auth","hostname","method","handleResponse","statusCode","getResponseHeader","allowRangeRequests","suggestedLength","validateRangeRequestCapabilities","extractFilenameFromHeader","_request","_httpHeaders","Range","lstat","stat","createReadStream","returnValues","contentEncoding","contentDisposition","getFilenameFromContentDispositionHeader","createResponseStatusError","validateResponseStatus","needsEncodingFixup","toParamRegExp","rfc2616unquote","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","getArrayBuffer","xhr","NetworkManager","getXhr","NetworkManager_getXhr","currXhrId","pendingRequests","requestRange","listeners","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","PDFNetworkStream","_source","_manager","_onRangeRequestReaderClosed","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_fullRequestId","_headersReceivedCapability","_cachedChunks","fullRequestXhrId","fullRequestXhr","lengthComputable","_requestId","_close","createFetchOptions","abortController","signal","credentials","redirect","createHeaders","Headers","PDFFetchStream","PDFFetchStreamReader","PDFFetchStreamRangeReader","_withCredentials","AbortController","_abortController","_headers","pdfjsVersion","pdfjsBuild"],"sourceRoot":""}