pdfjs-dist
Version:
Generic build of Mozilla's PDF.js library.
1 lines • 419 kB
Source Map (JSON)
{"version":3,"file":"pdf.image_decoders.mjs","mappings":"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","sources":["webpack://pdf.js/./src/shared/util.js","webpack://pdf.js/./external/jbig2/jbig2.js","webpack://pdf.js/./src/core/primitives.js","webpack://pdf.js/./src/core/base_stream.js","webpack://pdf.js/./src/core/string_utils.js","webpack://pdf.js/./src/core/core_utils.js","webpack://pdf.js/./src/core/wasm_image.js","webpack://pdf.js/./src/core/jbig2_ccittFax.js","webpack://pdf.js/./src/shared/math_clamp.js","webpack://pdf.js/./src/core/colorspace.js","webpack://pdf.js/./external/qcms/qcms_utils.js","webpack://pdf.js/./external/qcms/qcms.js","webpack://pdf.js/./src/core/icc_colorspace.js","webpack://pdf.js/./src/core/colorspace_utils.js","webpack://pdf.js/./src/shared/image_utils.js","webpack://pdf.js/./src/core/jpg.js","webpack://pdf.js/./external/openjpeg/openjpeg.js","webpack://pdf.js/./src/core/stream.js","webpack://pdf.js/./src/core/jpx.js","webpack://pdf.js/./src/pdf.image_decoders.js"],"sourcesContent":["/* 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 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\nconst BBOX_INIT = [Infinity, Infinity, -Infinity, -Infinity];\nconst F32_BBOX_INIT = new Float32Array(BBOX_INIT);\n\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\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 * - SAVE is used, on the worker-thread, when saving modified annotations.\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 * - IS_EDITING is used when editing is active in the viewer.\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 SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n IS_EDITING: 0x80,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n POPUP: 16,\n SIGNATURE: 101,\n COMMENT: 102,\n};\n\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n INK_COLOR_AND_OPACITY: 24,\n HIGHLIGHT_COLOR: 31,\n HIGHLIGHT_THICKNESS: 32,\n HIGHLIGHT_FREE: 33,\n HIGHLIGHT_SHOW_ALL: 34,\n DRAW_STEP: 41,\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 MeshFigureType = {\n TRIANGLES: 1,\n LATTICE: 2,\n PATCH: 3,\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 RICHMEDIA: 27,\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\n// Rendition action operations from Table 214, Section 12.6.4.13 of the PDF\n// specification (ISO 32000-1).\nconst AnnotationRenditionOperation = {\n PLAY_OR_RESUME: 0,\n STOP: 1,\n PAUSE: 2,\n RESUME: 3,\n PLAY: 4,\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 VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\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 // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n setStrokeTransparent: 92,\n setFillTransparent: 93,\n rawFillPath: 94,\n};\n\n// In order to have a switch statement that is fast (i.e. which use a jump\n// table), we need to have the OPS in a contiguous range.\nconst DrawOPS = {\n moveTo: 0,\n lineTo: 1,\n curveTo: 2,\n quadraticCurveTo: 3,\n closePath: 4,\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 // eslint-disable-next-line no-console\n console.info(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n // eslint-disable-next-line no-console\n console.warn(`Warning: ${msg}`);\n }\n}\n\n/**\n * @param {string} msg\n * @returns {never}\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 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 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?.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 {}\n }\n }\n\n const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\n\n/**\n * Remove, or replace, the hash property of the URL.\n *\n * @param {URL|string} url - The absolute, or relative, URL.\n * @param {string} hash - The hash property (use an empty string to remove it).\n * @param {boolean} [allowRel] - Allow relative URLs.\n * @returns {string} The resulting URL string.\n */\nfunction updateUrlHash(url, hash, allowRel = false) {\n const res = URL.parse(url);\n if (res) {\n res.hash = hash;\n return res.href;\n }\n // Support well-formed relative URLs, necessary for `web/app.js` in GENERIC\n // builds, by optionally falling back to string parsing.\n if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n }\n return \"\";\n}\n\n// Extract the final component from a path string.\nfunction stripPath(str) {\n return str.substring(str.lastIndexOf(\"/\") + 1);\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\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: !nonSerializable,\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 (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n this.constructor === BaseException\n ) {\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 ResponseException extends BaseException {\n constructor(msg, status, missing) {\n super(msg, \"ResponseException\");\n this.status = status;\n this.missing = missing;\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 (typeof bytes !== \"object\" || bytes?.length === undefined) {\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\nclass FeatureTest {\n static get isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n\n return shadow(this, \"isLittleEndian\", view32[0] === 1);\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get isImageDecoderSupported() {\n return shadow(\n this,\n \"isImageDecoderSupported\",\n typeof ImageDecoder !== \"undefined\"\n );\n }\n\n static get isFloat16ArraySupported() {\n return shadow(\n this,\n \"isFloat16ArraySupported\",\n typeof Float16Array !== \"undefined\"\n );\n }\n\n static get isSanitizerSupported() {\n return shadow(\n this,\n \"isSanitizerSupported\",\n typeof Sanitizer !== \"undefined\"\n );\n }\n\n static get platform() {\n const { platform, userAgent } = navigator;\n\n return shadow(this, \"platform\", {\n isAndroid: userAgent.includes(\"Android\"),\n isLinux: platform.includes(\"Linux\"),\n isMac: platform.includes(\"Mac\"),\n isWindows: platform.includes(\"Win\"),\n isFirefox:\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n userAgent.includes(\"Firefox\"),\n });\n }\n\n static get isCanvasFilterSupported() {\n let ctx;\n if (this.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(1, 1).getContext(\"2d\");\n } else if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"WORKER_THREAD\")) &&\n typeof document !== \"undefined\"\n ) {\n ctx = document.createElement(\"canvas\").getContext(\"2d\");\n }\n // Spec-compliant Canvas2D defaults `ctx.filter` to \"none\". On\n // browsers without filter support (Safari) the property is absent\n // until you assign to it, after which it behaves like an ordinary\n // JS property and stores whatever string you set without applying\n // it. Probing the default lets us detect the difference reliably.\n return shadow(this, \"isCanvasFilterSupported\", ctx?.filter !== undefined);\n }\n\n static get isAlphaColorInputSupported() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"WORKER_THREAD\")) ||\n typeof document === \"undefined\"\n ) {\n return shadow(this, \"isAlphaColorInputSupported\", false);\n }\n const input = document.createElement(\"input\");\n input.type = \"color\";\n input.setAttribute(\"alpha\", \"\");\n input.value = \"#ff000080\";\n // If alpha is supported the color picker retains the alpha channel, so\n // the value won't be a plain opaque color (7-char #rrggbb).\n return shadow(\n this,\n \"isAlphaColorInputSupported\",\n input.value !== \"#ff0000\"\n );\n }\n\n static get isBackdropFilterSupported() {\n return shadow(\n this,\n \"isBackdropFilterSupported\",\n typeof CSS !== \"undefined\" && CSS.supports(\"backdrop-filter\", \"blur(1px)\")\n );\n }\n}\n\nclass Util {\n static get hexNums() {\n return shadow(\n this,\n \"hexNums\",\n Array.from({ length: 256 }, (_, n) => n.toString(16).padStart(2, \"0\"))\n );\n }\n\n static makeHexColor(r, g, b) {\n return `#${this.hexNums[r]}${this.hexNums[g]}${this.hexNums[b]}`;\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // Multiplies m (an array-based transform) by md (a DOMMatrix transform).\n static multiplyByDOMMatrix(m, md) {\n return [\n m[0] * md.a + m[2] * md.b,\n m[1] * md.a + m[3] * md.b,\n m[0] * md.c + m[2] * md.d,\n m[1] * md.c + m[3] * md.d,\n m[0] * md.e + m[2] * md.f + m[4],\n m[1] * md.e + m[3] * md.f + m[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m, pos = 0) {\n const p0 = p[pos];\n const p1 = p[pos + 1];\n p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n }\n\n static applyTransformToBezier(p, transform, pos = 0) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n for (let i = 0; i < 6; i += 2) {\n const pI = p[pos + i];\n const pI1 = p[pos + i + 1];\n p[pos + i] = pI * m0 + pI1 * m2 + m4;\n p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n }\n }\n\n static applyInverseTransform(p, m) {\n const p0 = p[0];\n const p1 = p[1];\n const d = m[0] * m[3] - m[1] * m[2];\n p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static axialAlignedBoundingBox(rect, transform, output) {\n const m0 = transform[0];\n const m1 = transform[1];\n const m2 = transform[2];\n const m3 = transform[3];\n const m4 = transform[4];\n const m5 = transform[5];\n const r0 = rect[0];\n const r1 = rect[1];\n const r2 = rect[2];\n const r3 = rect[3];\n\n let a0 = m0 * r0 + m4;\n let a2 = a0;\n let a1 = m0 * r2 + m4;\n let a3 = a1;\n let b0 = m3 * r1 + m5;\n let b2 = b0;\n let b1 = m3 * r3 + m5;\n let b3 = b1;\n\n if (m1 !== 0 || m2 !== 0) {\n // Non-scaling matrix: shouldn't be frequent.\n const m1r0 = m1 * r0;\n const m1r2 = m1 * r2;\n const m2r1 = m2 * r1;\n const m2r3 = m2 * r3;\n a0 += m2r1;\n a3 += m2r1;\n a1 += m2r3;\n a2 += m2r3;\n b0 += m1r0;\n b3 += m1r0;\n b1 += m1r2;\n b2 += m1r2;\n }\n\n output[0] = Math.min(output[0], a0, a1, a2, a3);\n output[1] = Math.min(output[1], b0, b1, b2, b3);\n output[2] = Math.max(output[2], a0, a1, a2, a3);\n output[3] = Math.max(output[3], b0, b1, b2, b3);\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 // 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(matrix, output) {\n const m0 = matrix[0];\n const m1 = matrix[1];\n const m2 = matrix[2];\n const m3 = matrix[3];\n // Multiply matrix m with its transpose.\n const a = m0 ** 2 + m1 ** 2;\n const b = m0 * m2 + m1 * m3;\n const c = m2 ** 2 + m3 ** 2;\n\n // Solve the second degree polynomial to get roots.\n const first = (a + c) / 2;\n const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n output[0] = Math.sqrt(first + second || 1);\n output[1] = Math.sqrt(first - second || 1);\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 static pointBoundingBox(x, y, minMax) {\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n\n static rectBoundingBox(x0, y0, x1, y1, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x1);\n minMax[1] = Math.min(minMax[1], y0, y1);\n minMax[2] = Math.max(minMax[2], x0, x1);\n minMax[3] = Math.max(minMax[3], y0, y1);\n }\n\n static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n if (t <= 0 || t >= 1) {\n return;\n }\n const mt = 1 - t;\n const tt = t * t;\n const ttt = tt * t;\n const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n minMax[0] = Math.min(minMax[0], x);\n minMax[1] = Math.min(minMax[1], y);\n minMax[2] = Math.max(minMax[2], x);\n minMax[3] = Math.max(minMax[3], y);\n }\n\n static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) >= 1e-12) {\n this.#getExtremumOnCurve(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n -c / b,\n minMax\n );\n }\n return;\n }\n\n const delta = b ** 2 - 4 * c * a;\n if (delta < 0) {\n return;\n }\n const sqrtDelta = Math.sqrt(delta);\n const a2 = 2 * a;\n this.#getExtremumOnCurve(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n (-b + sqrtDelta) / a2,\n minMax\n );\n this.#getExtremumOnCurve(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n (-b - sqrtDelta) / a2,\n minMax\n );\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, minMax) {\n minMax[0] = Math.min(minMax[0], x0, x3);\n minMax[1] = Math.min(minMax[1], y0, y3);\n minMax[2] = Math.max(minMax[2], x0, x3);\n minMax[3] = Math.max(minMax[3], y0, y3);\n\n this.#getExtremum(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n 3 * (-x0 + 3 * (x1 - x2) + x3),\n 6 * (x0 - 2 * x1 + x2),\n 3 * (x1 - x0),\n minMax\n );\n this.#getExtremum(\n x0,\n x1,\n x2,\n x3,\n y0,\n y1,\n y2,\n y3,\n 3 * (-y0 + 3 * (y1 - y2) + y3),\n 6 * (y0 - 2 * y1 + y2),\n 3 * (y1 - y0),\n minMax\n );\n }\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\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\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40\\ufb41\\ufb43\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\n p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n );\n}\n\nfunction getUuid() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n typeof crypto.randomUUID === \"function\"\n ) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n crypto.getRandomValues(buf);\n return bytesToString(buf);\n}\n\nfunction _isValidExplicitDest(validRef, validName, dest) {\n if (!Array.isArray(dest) || dest.length < 2) {\n return false;\n }\n const [page, zoom, ...args] = dest;\n if (!validRef(page) && !Number.isInteger(page)) {\n return false;\n }\n if (!validName(zoom)) {\n return false;\n }\n const argsLen = args.length;\n let allowNull = true;\n switch (zoom.name) {\n case \"XYZ\":\n if (argsLen < 2 || argsLen > 3) {\n return false;\n }\n break;\n case \"Fit\":\n case \"FitB\":\n return argsLen === 0;\n case \"FitH\":\n case \"FitBH\":\n case \"FitV\":\n case \"FitBV\":\n if (argsLen > 1) {\n return false;\n }\n break;\n case \"FitR\":\n if (argsLen !== 4) {\n return false;\n }\n allowNull = false;\n break;\n default:\n return false;\n }\n for (const arg of args) {\n if (typeof arg === \"number\" || (allowNull && arg === null)) {\n continue;\n }\n return false;\n }\n return true;\n}\n\n// Helpers for simple `Map.prototype.getOrInsertComputed()` invocations,\n// to avoid duplicate function creation.\nconst makeArr = () => [];\nconst makeMap = () => new Map();\nconst makeObj = () => Object.create(null);\nconst makeSet = () => new Set();\n\n// See https://developer.mozilla.org/en-US/docs/Web/API/Blob/bytes#browser_compatibility\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n typeof Blob.prototype.bytes !== \"function\"\n) {\n Blob.prototype.bytes = async function () {\n return new Uint8Array(await this.arrayBuffer());\n };\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/API/Response/bytes#browser_compatibility\nif (\n typeof PDFJSDev !== \"undefined\" &&\n !PDFJSDev.test(\"SKIP_BABEL\") &&\n typeof Response.prototype.bytes !== \"function\"\n) {\n Response.prototype.bytes = async function () {\n return new Uint8Array(await this.arrayBuffer());\n };\n}\n\n// TODO: Remove this once `Iterator.prototype.join` is generally available.\nif (typeof Iterator.prototype.join !== \"function\") {\n // eslint-disable-next-line no-extend-native\n Iterator.prototype.join = function (separator) {\n return [...this].join(separator);\n };\n}\n\nexport {\n _isValidExplicitDest,\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationPrefix,\n AnnotationRenditionOperation,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n BBOX_INIT,\n bytesToString,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n DrawOPS,\n F32_BBOX_INIT,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getUuid,\n getVerbosityLevel,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayEqual,\n isNodeJS,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n makeArr,\n makeMap,\n makeObj,\n makeSet,\n MeshFigureType,\n normalizeUnicode,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n RenderingIntentFlag,\n ResponseException,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n stringToUTF8String,\n stripPath,\n SVG_NS,\n TextRenderingMode,\n UnknownErrorException,\n unreachable,\n updateUrlHash,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","/* THIS FILE IS GENERATED - DO NOT EDIT */\nasync function JBig2(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\".\",_scriptName).href}catch{}{readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports[\"j\"]()}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module[\"onAbort\"]?.(what);what=\"Aborted(\"+what+\")\";err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"jbig2.wasm\")}return new URL(\"jbig2.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){return new Promise((resolve,reject)=>{Module[\"instantiateWasm\"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort(\"\");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _createImageData(size){Module.imageData=new Uint8Array(size)}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};function _setImageData(array_ptr,pitch8,pitch32,height){if(pitch32===pitch8){Module.imageData=new Uint8ClampedArray(HEAPU8.subarray(array_ptr,array_ptr+pitch32*height));return}const destSize=pitch8*height;const imageData=Module.imageData=new Uint8ClampedArray(destSize);for(let srcStart=array_ptr,destStart=0;destStart<destSize;srcStart+=pitch32,destStart+=pitch8){imageData.set(HEAPU8.subarray(srcStart,srcStart+pitch8),destStart)}}function _setLineData(line_ptr,pitch8,offset){Module.imageData.set(HEAPU8.subarray(line_ptr,line_ptr+pitch8),offset)}var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};{if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(Module[\"print\"])out=Module[\"print\"];if(Module[\"printErr\"])err=Module[\"printErr\"];if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].shift()()}}}Module[\"writeArrayToMemory\"]=writeArrayToMemory;var _malloc,_free,_jbig2_decode,_ccitt_decode,__emscripten_timeout,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_malloc=Module[\"_malloc\"]=wasmExports[\"k\"];_free=Module[\"_free\"]=wasmExports[\"l\"];_jbig2_decode=Module[\"_jbig2_decode\"]=wasmExports[\"m\"];_ccitt_decode=Module[\"_ccitt_decode\"]=wasmExports[\"n\"];__emscripten_timeout=wasmExports[\"o\"];memory=wasmMemory=wasmExports[\"i\"];__indirect_function_table=wasmExports[\"__indirect_function_table\"]}var wasmImports={e:__abort_js,b:__emscripten_runtime_keepalive_clear,c:__setitimer_js,g:_createImageData,d:_emscripten_resize_heap,a:_proc_exit,h:_setImageData,f:_setLineData};function run(){preRun();function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}\n;return moduleRtn}export default JBig2;\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, makeArr, shadow, unreachable } from \"../shared/util.js\";\n\nconst CIRCULAR_REF = Symbol(\"CIRCULAR_REF\");\nconst EOF = Symbol(\"EOF\");\n\nlet CmdCache = Object.create(null);\nlet NameCache = Object.create(null);\nlet RefCache = Object.create(null);\n\nfunction clearPrimitiveCaches() {\n CmdCache = Object.create(null);\n NameCache = Object.create(null);\n RefCache = Object.create(null);\n}\n\nclass Name {\n constructor(name) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n typeof name !== \"string\"\n ) {\n unreachable('Name: The \"name\" must be a string.');\n }\n this.name = name;\n }\n\n static get(name) {\n // eslint-disable-next-line no-restricted-syntax\n return (NameCache[name] ||= new Name(name));\n }\n}\n\nclass Cmd {\n constructor(cmd) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n typeof cmd !== \"string\"\n ) {\n unreachable('Cmd: The \"cmd\" must be a string.');\n }\n this.cmd = cmd;\n }\n\n static get(cmd) {\n // eslint-disable-next-line no-restricted-syntax\n return (CmdCache[cmd] ||= new Cmd(cmd));\n }\n}\n\nconst nonSerializable = () => nonSerializable; // Creating closure on some variable.\n\nclass Dict {\n __nonSerializable__ = nonSerializable; // Disable cloning of the Dict.\n\n #map = new Map();\n\n objId = null;\n\n suppressEncryption = false;\n\n xref;\n\n constructor(xref = null) {\n this.xref = xref;\n }\n\n assignXref(newXref) {\n this.xref = newXref;\n }\n\n get size() {\n return this.#map.size;\n }\n\n #getValue(isAsync, key1, key2) {\n let value = this.#map.get(key1);\n if (value === undefined && key2 !== undefined) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n key2.length < key1.length\n ) {\n unreachable(\"Dict.#getValue: Expected keys to be ordered by length.\");\n }\n value = this.#map.get(key2);\n }\n if (value instanceof Ref && this.xref) {\n return isAsync\n ? this.xref.fetchAsync(value, this.suppressEncryption)\n : this.xref.fetch(value, this.suppressEncryption);\n }\n return value;\n }\n\n // Automatically dereferences Ref objects.\n get(key1, key2) {\n return this.#getValue(/* isAsync = */ false, key1, key2);\n }\n\n // Same as get(), but returns a promise and uses fetchIfRefAsync().\n async getAsync(key1, key2) {\n return this.#getValue(/* isAsync = */ true, key1, key2);\n }\n\n // Same as get(), but dereferences all elements if the result is an Array.\n getArray(key1, key2) {\n let value = this.#getValue(/* isAsync = */ false, key1, key2);\n\n if (Array.isArray(value)) {\n value = value.slice(); // Ensure that we don't modify the Dict data.\n for (let i = 0, ii = value.length; i < ii; i++) {\n if (value[i] instanceof Ref && this.xref) {\n value[i] = this.xref.fetch(value[i], this.suppressEncryption);\n }\n }\n }\n return value;\n }\n\n // No dereferencing.\n getRaw(key) {\n return this.#map.get(key);\n }\n\n getKeys() {\n return this.#map.keys();\n }\n\n // No dereferencing.\n getRawValues() {\n return this.#map.values();\n }\n\n getRawEntries() {\n return this.#map.entries();\n }\n\n set(key, value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n if (typeof key !== \"string\") {\n unreachable('Dict.set: The \"key\" must be a string.');\n } else if (value === undefined) {\n unreachable('Dict.set: The \"value\" cannot be undefined.');\n }\n }\n this.#map.set(key, value);\n }\n\n setIfNotExists(key, value) {\n if (!this.has(key)) {\n this.set(key, value);\n }\n }\n\n setIfNumber(key, value) {\n if (typeof value === \"number\") {\n this.set(key, value);\n }\n }\n\n setIfArray(key, value) {\n if (Array.isArray(value) || ArrayBuffer.isView(value)) {\n this.set(key, value);\n }\n }\n\n setIfDefined(key, value) {\n if (value !== undefined && value !== null) {\n this.set(key, value);\n }\n }\n\n setIfName(key, value) {\n if (typeof value === \"string\") {\n this.set(key, Name.get(value));\n } else if (value instanceof Name) {\n this.set(key, value);\n }\n }\n\n setIfDict(key, value) {\n if (value instanceof Dict) {\n this.set(key, value);\n }\n }\n\n has(key) {\n return this.#map.has(key);\n }\n\n *[Symbol.iterator]() {\n for (const [key, value] of this.#map) {\n yield [\n key,\n value instanceof Ref && this.xref\n ? this.xref.fetch(value, this.suppressEncryption)\n : value,\n ];\n }\n }\n\n static get empty() {\n const emptyDict = new Dict(null);\n\n emptyDict.set = (key, value) => {\n unreachable(\"Should not call `set` on the empty dictionary.\");\n };\n return shadow(this, \"empty\", emptyDict);\n }\n\n static merge({ xref, dictArray, mergeSubDicts = false }) {\n const mergedDict = new Dict(xref),\n properties = new Map();\n\n for (const dict of dictArray) {\n if (!(dict instanceof Dict)) {\n continue;\n }\n for (const [key, value] of dict.getRawEntries()) {\n const property = properties.getOrInsertComputed(key, makeArr);\n\n if (property.length && !(mergeSubDicts && value instanceof Dict)) {\n // Ignore additional entries, if either:\n // - This is a \"shallow\" merge, where only the first element matters.\n // - The value is *not* a `Dict`, since other types cannot be merged.\n continue;\n }\n property.push(value);\n }\n }\n for (const [name, values] of properties) {\n if (values.length === 1 || !(values[0] instanceof Dict)) {\n mergedDict.set(name, values[0]);\n continue;\n }\n const subDict = new Dict(xref);\n\n for (const dict of values) {\n for (const [key, value] of dict.getRawEntries()) {\n subDict.setIfNotExists(key, value);\n }\n }\n if (subDict.size > 0) {\n mergedDict.set(name, subDict);\n }\n }\n properties.clear();\n\n return mergedDict.size > 0 ? mergedDict : Dict.empty;\n }\n\n clone() {\n const dict = new Dict(this.xref);\n for (const [key, value] of this.#map) {\n dict.set(key, value);\n }\n return dict;\n }\n\n delete(key) {\n this.#map.delete(key);\n }\n}\n\nclass Ref {\n #str;\n\n constructor(str, num, gen) {\n this.#str = str;\n this.num = num;\n this.gen = gen;\n }\n\n toString() {\n // This function is hot, so we make the string as compact as possible.\n // |this.gen| is almost always zero, so we treat that case specially.\n return this.#str;\n }\n\n static fromString(str) {\n const ref = RefCache[str];\n if (ref) {\n return ref;\n }\n const m = /^(\\d+)R(\\d*)$/.exec(str);\n if (!m || m[1] === \"0\") {\n return null;\n }\n const num = parseInt(m[1], 10),\n gen = !m[2] ? 0 : parseInt(m[2], 10);\n // eslint-disable-next-line no-restricted-syntax\n return (RefCache[str] = new Ref(str, num, gen));\n }\n\n static get(num, gen) {\n const str = gen === 0 ? `${num}R` : `${num}R${gen}`;\n // eslint-disable-next-line no-restricted-syntax\n return (RefCache[str] ||= new Ref(str, num, gen));\n }\n}\n\n// The reference is identified by number and generation.\n// This structure stores only one instance of the reference.\nclass RefSet {\n #set = new Set();\n\n constructor(parent = null) {\n if (parent) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n !(parent instanceof RefSet)\n ) {\n unreachable('RefSet: Invalid \"parent\" value.');\n }\n for (const refStr of parent) {\n this.#set.add(refStr);\n }\n }\n }\n\n has(ref) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n !(ref instanceof Ref) &&\n typeof ref !== \"string\"\n ) {\n unreachable('RefSet: Invalid \"ref\" value in has.');\n }\n return this.#set.has(ref.toString());\n }\n\n put(ref) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n !(ref instanceof Ref) &&\n typeof ref !== \"string\"\n ) {\n unreachable('RefSet: Invalid \"ref\" value in put.');\n }\n this.#set.add(ref.toString());\n }\n\n remove(ref) {\n this.#set.delete(ref.toString());\n }\n\n [Symbol.iterator]() {\n return this.#set.keys();\n }\n\n clear() {\n this.#set.clear();\n }\n}\n\nclass RefMap {\n #map = new Map();\n\n get size() {\n return this.#map.size;\n }\n\n get(ref) {\n return this.#map.get(ref.toString());\n }\n\n has(ref) {\n return this.#map.has(ref.toString());\n }\n\n put(ref, obj) {\n this.#map.set(ref.toString(), obj);\n }\n\n putAlias(ref, aliasRef) {\n this.#map.set(ref.toString(), this.get(aliasRef));\n }\n\n getOrPutComputed(ref, callback) {\n const map = this.#map,\n refStr = ref.toString();\n\n if (!map.has(refStr)) {\n map.set(refStr, callback(ref));\n }\n return map.get(refStr);\n }\n\n [Symbol.iterator]() {\n return this.#map.values();\n }\n\n clear() {\n this.#map.clear();\n }\n\n *values() {\n yield* this.#map.values();\n }\n\n *items() {\n for (const [ref, value] of this.#map) {\n yield [Ref.fromString(ref), value];\n }\n }\n\n *keys() {\n for (const ref of this.#map.keys()) {\n yield Ref.fromString(ref);\n }\n }\n}\n\nfunction isName(v, name) {\n return v instanceof Name && (name === undefined || v.name === name);\n}\n\nfunction isCmd(v, cmd) {\n return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);\n}\n\nfunction isDict(v, type) {\n return (\n v instanceof Dict && (type === undefined || isName(v.get(\"Type\"), type))\n );\n}\n\nfunction isRefsEqual(v1, v2) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n v1 instanceof Ref && v2 instanceof Ref,\n \"isRefsEqual: Both parameters should be `Ref`s.\"\n );\n }\n return v1.num === v2.num && v1.gen === v2.gen;\n}\n\nexport {\n CIRCULAR_REF,\n clearPrimitiveCaches,\n Cmd,\n Dict,\n EOF,\n isCmd,\n isDict,\n isName,\n isRefsEqual,\n Name,\n Ref,\n RefMap,\n RefSet,\n};\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\nimport { bytesToString, shadow, unreachable } from \"../shared/util.js\";\n\nclass BaseStream {\n constructor() {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n this.constructor === BaseStream\n ) {\n unreachable(\"Cannot initialize BaseStream.\");\n }\n }\n\n /**\n * @returns {number}\n */\n // eslint-disable-next-line getter-return\n get length() {\n unreachable(\"Abstract getter `length` accessed\");\n }\n\n /**\n * @returns {boolean}\n */\n // eslint-disable-next-line getter-return\n get isEmpty() {\n unreachable(\"Abstract getter `isEmpty` accessed\");\n }\n\n get isDataLoaded() {\n return shadow(this, \"isDataLoaded\", true);\n }\n\n getByte() {\n unreachable(\"Abstract method `getByte` called\");\n }\n\n /**\n * @param {number | undefined} [length]\n * @returns {Uint8Array}\n */\n getBytes(length) {\n unreachable(\"Abstract method `getBytes` called\");\n }\n\n /**\n * NOTE: This method can only be used to get image-data that is guaranteed\n * to be fully loaded, since otherwise intermittent errors may occur;\n * note the `ObjectLoader` class.\n */\n async getImageData(length, decoderOptions) {\n return this.getBytes(length, decoderOptions);\n }\n\n async asyncGetBytes() {\n unreachable(\"Abstract method `asyncGetBytes` called\");\n }\n\n get isAsync() {\n return false;\n }\n\n get isAsyncDecoder() {\n return false;\n }\n\n get isImageStream() {\n return false;\n }\n\n get canAsyncDecodeImageFromBuffer() {\n return false;\n }\n\n /**\n * @param {number} width - The width from the image dictionary.\n * @param {number} height - The height from the image dictionary.\n */\n async getTransferableImage(width, height) {\n return null;\n }\n\n peekByte() {\n const peekedByte = this.getByte();\n if (peekedByte !== -1) {\n this.pos--;\n }\n return peekedByte;\n }\n\n peekBytes(length) {\n const bytes = this.getBytes(length);\n this.pos -= bytes.length;\n return bytes;\n }\n\n getUint16() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n if (b0 === -1 || b1 === -1) {\n return -1;\n }\n return (b0 << 8) + b1;\n }\n\n getInt32() {\n const b0 = this.getByte();\n const b1 = this.getByte();\n const b2 = this.getByte();\n const b3 = this.getByte();\n return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3;\n }\n\n getByteRange(begin, end) {\n unreachable(\"Abstract method `getByteRange` called\");\n }\n\n getString(length) {\n return bytesToString(this.getBytes(length));\n }\n\n skip(n) {\n this.pos += n || 1;\n }\n\n reset() {\n unreachable(\"Abstract method `reset` called\");\n }\n\n moveStart() {\n unreachable(\"Abstract method `moveStart` called\");\n }\n\n makeSubStream(start, length, dict = null) {\n unreachable(\"Abstract method `makeSubStream` called\");\n }\n\n clone() {\n unreachable(\"Abstract method `clone` called\");\n }\n\n /**\n * @returns {Array | null}\n */\n getBaseStreams() {\n return null;\n }\n\n getOriginalStream() {\n return this.stream?.getOriginalStream() || this;\n }\n}\n\nexport { BaseStream };\n","/* Copyright 2019 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, Util, warn } from \"../shared/util.js\";\n\nfunction isAscii(str) {\n // eslint-disable-next-line no-control-regex\n return typeof str === \"string\" && (!str || /^[\\x00-\\x7F]*$/.test(str));\n}\n\n// If the string is null or undefined then it is returned as is.\nfunction stringToAsciiOrUTF16BE(str) {\n return str === null || str === undefined || isAscii(str)\n ? str\n : stringToUTF16String(str, /* bigEndian = */ true);\n}\n\nfunction stringToUTF16HexString(str) {\n const buf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n buf.push(Util.hexNums[(char >> 8) & 0xff], Util.hexNums[char & 0xff]);\n }\n return buf.join(\"\");\n}\n\nfunction stringToUTF16String(str, bigEndian = false) {\n const buf = [];\n if (bigEndian) {\n buf.push(\"\\xFE\\xFF\");\n }\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\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];\nconst PDFStringTextDecoders = Object.create(null);\n\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n // See section 7.9.2.2 Text String Type.\n // The string can contain some language codes bracketed with 0x1b,\n // so we must remove them.\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\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 = (PDFStringTextDecoders[encoding] ??= new TextDecoder(\n encoding,\n { fatal: true }\n ));\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n // eslint-disable-next-line no-control-regex\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\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 charCode = str.charCodeAt(i);\n if (!keepEscapeSequence && charCode === 0x1b) {\n // eslint-disable-next-line no-empty\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nexport {\n isAscii,\n stringToAsciiOrUTF16BE,\n stringToPDFString,\n stringToUTF16HexString,\n stringToUTF16String,\n};\n","/* Copyright 2019 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 AnnotationEditorPrefix,\n assert,\n BaseException,\n makeArr,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { Dict, isName, isRefsEqual, Name, Ref, RefSet } from \"./primitives.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { CONTROL_CHAR_REGEXP } from \"../shared/css_utils.js\";\nimport { stringToPDFString } from \"./string_utils.js\";\n\nconst PDF_VERSION_REGEXP = /^[1-9]\\.\\d$/;\nconst MAX_INT_32 = 2 ** 31 - 1;\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\n\nconst RESOURCES_KEYS_OPERATOR_LIST = [\n \"ColorSpace\",\n \"ExtGState\",\n \"Font\",\n \"Pattern\",\n \"Properties\",\n \"Shading\",\n \"XObject\",\n];\n\nconst RESOURCES_KEYS_TEXT_CONTENT = [\n \"ExtGState\",\n \"Font\",\n \"Properties\",\n \"XObject\",\n];\n\nfunction getLookupTableFactory(initializer, useArray = false) {\n let lookup;\n return function () {\n if (initializer) {\n lookup = useArray ? [] : Object.create(null);\n initializer(lookup);\n initializer = null;\n }\n return lookup;\n };\n}\n\nclass MissingDataException extends BaseException {\n constructor(begin, end) {\n super(`Missing data [${begin}, ${end})`, \"MissingDataException\");\n this.begin = begin;\n this.end = end;\n }\n}\n\nclass ParserEOFException extends BaseException {\n constructor(msg) {\n super(msg, \"ParserEOFException\");\n }\n}\n\nclass XRefEntryException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefEntryException\");\n }\n}\n\nclass XRefParseException extends BaseException {\n constructor(msg) {\n super(msg, \"XRefParseException\");\n }\n}\n\n/**\n * Combines multiple ArrayBuffers into a single Uint8Array.\n * @param {Array<ArrayBuffer>} arr - An array of ArrayBuffers.\n * @returns {Uint8Array}\n */\nfunction arrayBuffersToBytes(arr) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n for (const item of arr) {\n assert(\n item instanceof ArrayBuffer,\n \"arrayBuffersToBytes - expected an ArrayBuffer.\"\n );\n }\n }\n const length = arr.length;\n if (length === 0) {\n return new Uint8Array(0);\n }\n if (length === 1) {\n return new Uint8Array(arr[0]);\n }\n let dataLength = 0;\n for (let i = 0; i < length; i++) {\n dataLength += arr[i].byteLength;\n }\n const data = new Uint8Array(dataLength);\n let pos = 0;\n for (let i = 0; i < length; i++) {\n const item = new Uint8Array(arr[i]);\n data.set(item, pos);\n pos += item.byteLength;\n }\n return data;\n}\n\nasync function fetchBinaryData(url) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(\n `Failed to fetch file \"${url}\" with \"${response.statusText}\".`\n );\n }\n return response.bytes();\n}\n\n/**\n * Get the value of an inheritable property.\n *\n * If the PDF specification explicitly lists a property in a dictionary as\n * inheritable, then the value of the property may be present in the dictionary\n * itself or in one or more parents of the dictionary.\n *\n * If the key is not found in the tree, `undefined` is returned. Otherwise,\n * the value for the key is returned or, if `stopWhenFound` is `false`, a list\n * of values is returned.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {string} key - The key of the property to find the value for.\n * @param {boolean} getArray - Whether or not the value should be fetched as an\n * array. The default value is `false`.\n * @param {boolean} stopWhenFound - Whether or not to stop the traversal when\n * the key is found. If set to `false`, we always walk up the entire parent\n * chain, for example to be able to find `\\Resources` placed on multiple\n * levels of the tree. The default value is `true`.\n */\nfunction getInheritableProperty({\n dict,\n key,\n getArray = false,\n stopWhenFound = true,\n}) {\n let values;\n const visited = new RefSet();\n\n while (dict instanceof Dict && !(dict.objId && visited.has(dict.objId))) {\n if (dict.objId) {\n visited.put(dict.objId);\n }\n const value = getArray ? dict.getArray(key) : dict.get(key);\n if (value !== undefined) {\n if (stopWhenFound) {\n return value;\n }\n (values ||= []).push(value);\n }\n dict = dict.get(\"Parent\");\n }\n return values;\n}\n\n/**\n * Get the parent dictionary to update when a property is set.\n *\n * @param {Dict} dict - Dictionary from where to start the traversal.\n * @param {Ref} ref - The reference to the dictionary.\n * @param {XRef} xref - The `XRef` instance.\n */\nfunction getParentToUpdate(dict, ref, xref) {\n const visited = new RefSet();\n const firstDict = dict;\n const result = { dict: null, ref: null };\n\n while (dict instanceof Dict && !visited.has(ref)) {\n visited.put(ref);\n if (dict.has(\"T\")) {\n break;\n }\n ref = dict.getRaw(\"Parent\");\n if (!(ref instanceof Ref)) {\n return result;\n }\n dict = xref.fetch(ref);\n }\n if (dict instanceof Dict && dict !== firstDict) {\n result.dict = dict;\n result.ref = ref;\n }\n return result;\n}\n\nfunction deepCompare(a, b) {\n if (a === b) {\n return true;\n }\n if (a instanceof Ref && b instanceof Ref) {\n return isRefsEqual(a, b);\n }\n if (a instanceof Name && b instanceof Name) {\n return a.name === b.name;\n }\n\n if (a instanceof Dict && b instanceof Dict) {\n if (a.size !== b.size) {\n return false;\n }\n for (const [key, value1] of a.getRawEntries()) {\n const value2 = b.getRaw(key);\n if (value2 === undefined || !deepCompare(value1, value2)) {\n return false;\n }\n }\n return true;\n }\n\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0, ii = a.length; i < ii; i++) {\n if (!deepCompare(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n\n return false;\n}\n\n// prettier-ignore\nconst ROMAN_NUMBER_MAP = [\n \"\", \"C\", \"CC\", \"CCC\", \"CD\", \"D\", \"DC\", \"DCC\", \"DCCC\", \"CM\",\n \"\", \"X\", \"XX\", \"XXX\", \"XL\", \"L\", \"LX\", \"LXX\", \"LXXX\", \"XC\",\n \"\", \"I\", \"II\", \"III\", \"IV\", \"V\", \"VI\", \"VII\", \"VIII\", \"IX\"\n];\n\n/**\n * Converts positive integers to (upper case) Roman numerals.\n * @param {number} number - The number that should be converted.\n * @param {boolean} lowerCase - Indicates if the result should be converted\n * to lower case letters. The default value is `false`.\n * @returns {string} The resulting Roman number.\n */\nfunction toRomanNumerals(number, lowerCase = false) {\n assert(\n Number.isInteger(number) && number > 0,\n \"The number should be a positive integer.\"\n );\n\n const roman =\n \"M\".repeat((number / 1000) | 0) +\n ROMAN_NUMBER_MAP[((number % 1000) / 100) | 0] +\n ROMAN_NUMBER_MAP[10 + (((number % 100) / 10) | 0)] +\n ROMAN_NUMBER_MAP[20 + (number % 10)];\n return lowerCase ? roman.toLowerCase() : roman;\n}\n\n// Checks if ch is one of the following characters: SPACE, TAB, CR or LF.\nfunction isWhiteSpace(ch) {\n return ch === 0x20 || ch === 0x09 || ch === 0x0d || ch === 0x0a;\n}\n\n/**\n * Checks if something is an Array containing only boolean values,\n * and (optionally) checks its length.\n * @param {any} arr\n * @param {number | null} len\n * @returns {boolean}\n */\nfunction isBooleanArray(arr, len) {\n return (\n Array.isArray(arr) &&\n (len === null || arr.length === len) &&\n arr.every(x => typeof x === \"boolean\")\n );\n}\n\n/**\n * Checks if something is an Array containing only numbers,\n * and (optionally) checks its length.\n * @param {any} arr\n * @param {number | null} len\n * @returns {boolean}\n */\nfunction isNumberArray(arr, len) {\n if (Array.isArray(arr)) {\n return (\n (len === null || arr.length === len) &&\n arr.every(x => typeof x === \"number\")\n );\n }\n\n // This check allows us to have typed arrays but not the\n // BigInt64Array/BigUint64Array types (their elements aren't \"number\").\n return (\n ArrayBuffer.isView(arr) &&\n !(arr instanceof BigInt64Array || arr instanceof BigUint64Array) &&\n (len === null || arr.length === len)\n );\n}\n\n// Returns the matrix, or the fallback value if it's invalid.\nfunction lookupMatrix(arr, fallback) {\n return isNumberArray(arr, 6) ? arr : fallback;\n}\n\n// Returns the rectangle, or the fallback value if it's invalid.\nfunction lookupRect(arr, fallback) {\n return isNumberArray(arr, 4) ? arr : fallback;\n}\n\n// Returns the normalized rectangle, or the fallback value if it's invalid.\nfunction lookupNormalRect(arr, fallback) {\n return isNumberArray(arr, 4) ? Util.normalizeRect(arr) : fallback;\n}\n\n/**\n * AcroForm field names use an array like notation to refer to\n * repeated XFA elements e.g. foo.bar[nnn].\n * see: XFA Spec Chapter 3 - Repeated Elements\n *\n * @param {string} path - XFA path name.\n * @returns {Array} - Array of Objects with the name and pos of\n * each part of the path.\n */\nfunction parseXFAPath(path) {\n // Anchoring prevents retrying the match at every character.\n const positionPattern = /^(.+)\\[(\\d+)\\]$/;\n return path.split(\".\").map(component => {\n const m = component.match(positionPattern);\n if (m) {\n return { name: m[1], pos: parseInt(m[2], 10) };\n }\n return { name: component, pos: 0 };\n });\n}\n\nfunction escapePDFName(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.charCodeAt(i);\n // Whitespace or delimiters aren't regular chars, so escape them.\n if (\n char < 0x21 ||\n char > 0x7e ||\n char === 0x23 /* # */ ||\n char === 0x28 /* ( */ ||\n char === 0x29 /* ) */ ||\n char === 0x3c /* < */ ||\n char === 0x3e /* > */ ||\n char === 0x5b /* [ */ ||\n char === 0x5d /* ] */ ||\n char === 0x7b /* { */ ||\n char === 0x7d /* } */ ||\n char === 0x2f /* / */ ||\n char === 0x25 /* % */\n ) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`#${char.toString(16).padStart(2, \"0\")}`);\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n\n return buffer.join(\"\");\n}\n\n// Replace \"(\", \")\", \"\\n\", \"\\r\" and \"\\\" by \"\\(\", \"\\)\", \"\\\\n\", \"\\\\r\" and \"\\\\\"\n// in order to write it in a PDF file.\nfunction escapeString(str) {\n return str.replaceAll(/([()\\\\\\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 _collectJS(entry, xref, list, parents) {\n if (!entry) {\n return;\n }\n\n let parent = null;\n if (entry instanceof Ref) {\n if (parents.has(entry)) {\n // If we've already found entry then we've a cycle.\n return;\n }\n parent = entry;\n parents.put(parent);\n entry = xref.fetch(entry);\n }\n if (Array.isArray(entry)) {\n for (const element of entry) {\n _collectJS(element, xref, list, parents);\n }\n } else if (entry instanceof Dict) {\n if (isName(entry.get(\"S\"), \"JavaScript\")) {\n const js = entry.get(\"JS\");\n let code;\n if (js instanceof BaseStream) {\n code = js.getString();\n } else if (typeof js === \"string\") {\n code = js;\n }\n code &&= stringToPDFString(\n code,\n /* keepEscapeSequence = */ true\n ).replaceAll(\"\\x00\", \"\");\n if (code) {\n list.push(code.trim());\n }\n }\n _collectJS(entry.getRaw(\"Next\"), xref, list, parents);\n }\n\n if (parent) {\n parents.remove(parent);\n }\n}\n\nfunction collectActions(xref, dict, eventType) {\n const actions = new Map();\n const additionalActionsDicts = getInheritableProperty({\n dict,\n key: \"AA\",\n stopWhenFound: false,\n });\n if (additionalActionsDicts) {\n // additionalActionsDicts contains dicts from ancestors\n // as they're found in the tree from bottom to top.\n // So the dicts are visited in reverse order to guarantee\n // that actions from elder ancestors will be overwritten\n // by ones from younger ancestors.\n for (let i = additionalActionsDicts.length - 1; i >= 0; i--) {\n const additionalActions = additionalActionsDicts[i];\n if (!(additionalActions instanceof Dict)) {\n continue;\n }\n for (const [key, rawActionDict] of additionalActions.getRawEntries()) {\n const action = eventType[key];\n if (!action) {\n continue;\n }\n const parents = new RefSet();\n const list = [];\n _collectJS(rawActionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(action, list);\n }\n }\n }\n }\n // Collect the Action if any (we may have one on pushbutton).\n if (dict.has(\"A\")) {\n const actionDict = dict.get(\"A\");\n const parents = new RefSet();\n const list = [];\n _collectJS(actionDict, xref, list, parents);\n if (list.length > 0) {\n actions.set(\"Action\", list);\n }\n }\n return actions.size ? actions : null;\n}\n\nconst XMLEntities = {\n /* < */ 0x3c: \"<\",\n /* > */ 0x3e: \">\",\n /* & */ 0x26: \"&\",\n /* \" */ 0x22: \""\",\n /* ' */ 0x27: \"'\",\n};\n\nfunction* codePointIter(str) {\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (char > 0xd7ff && (char < 0xe000 || char > 0xfffd)) {\n // char is represented by two u16\n i++;\n }\n yield char;\n }\n}\n\nfunction encodeToXmlString(str) {\n const buffer = [];\n let start = 0;\n for (let i = 0, ii = str.length; i < ii; i++) {\n const char = str.codePointAt(i);\n if (0x20 <= char && char <= 0x7e) {\n // ascii\n const entity = XMLEntities[char];\n if (entity) {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(entity);\n start = i + 1;\n }\n } else {\n if (start < i) {\n buffer.push(str.substring(start, i));\n }\n buffer.push(`&#x${char.toString(16).toUpperCase()};`);\n if (char > 0xffff) {\n // char is represented by two u16\n i++;\n }\n start = i + 1;\n }\n }\n\n if (buffer.length === 0) {\n return str;\n }\n if (start < str.length) {\n buffer.push(str.substring(start));\n }\n return buffer.join(\"\");\n}\n\nfunction validateFontName(fontFamily, mustWarn = false) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/string.\n const m = /^(\"|').*(\"|')$/.exec(fontFamily);\n if (m && m[1] === m[2]) {\n const re = new RegExp(`[^\\\\\\\\]${m[1]}`);\n if (re.test(fontFamily.slice(1, -1))) {\n if (mustWarn) {\n warn(`FontFamily contains unescaped ${m[1]}: ${fontFamily}.`);\n }\n return false;\n }\n // A <string> is terminated by a newline, which for CSS also includes the\n // form feed character; see https://drafts.csswg.org/css-syntax/#newline.\n // The font family is escaped before being used, see `serializeFontFamily`,\n // hence this only prevents values that cannot sensibly name a font from\n // being used at all (the unquoted case below is already this strict).\n if (CONTROL_CHAR_REGEXP.test(fontFamily)) {\n if (mustWarn) {\n warn(`FontFamily contains control characters: ${fontFamily}.`);\n }\n return false;\n }\n } else {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/custom-ident.\n for (const ident of fontFamily.split(/[ \\t]+/)) {\n if (/^(?:\\d|-[\\d-])/.test(ident) || !/^[\\w\\\\-]+$/.test(ident)) {\n if (mustWarn) {\n warn(`FontFamily contains invalid <custom-ident>: ${fontFamily}.`);\n }\n return false;\n }\n }\n }\n return true;\n}\n\n// Strip the spaces preceding a digit, since e.g. \"Wingdings 3\" is not a valid\n// font name in the css specs.\n// The optional trailing digit is matched as part of the space run, so that a\n// failing match cannot backtrack over the spaces; otherwise the replacement\n// would be quadratic in the number of consecutive spaces.\nfunction normalizeCSSFontFamily(fontFamily) {\n return fontFamily.replaceAll(\n /( +)(\\d)?/g,\n (_, spaces, digit) => digit ?? \" \"\n );\n}\n\nfunction validateCSSFont(cssFontInfo) {\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-style.\n const DEFAULT_CSS_FONT_OBLIQUE = \"14\";\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/font-weight.\n const DEFAULT_CSS_FONT_WEIGHT = \"400\";\n const CSS_FONT_WEIGHT_VALUES = new Set([\n \"100\",\n \"200\",\n \"300\",\n \"400\",\n \"500\",\n \"600\",\n \"700\",\n \"800\",\n \"900\",\n \"1000\",\n \"normal\",\n \"bold\",\n \"bolder\",\n \"lighter\",\n ]);\n\n const { fontFamily, fontWeight, italicAngle } = cssFontInfo;\n\n if (!validateFontName(fontFamily, true)) {\n return false;\n }\n\n const weight = fontWeight ? fontWeight.toString() : \"\";\n cssFontInfo.fontWeight = CSS_FONT_WEIGHT_VALUES.has(weight)\n ? weight\n : DEFAULT_CSS_FONT_WEIGHT;\n\n const angle = parseFloat(italicAngle);\n cssFontInfo.italicAngle =\n isNaN(angle) || angle < -90 || angle > 90\n ? DEFAULT_CSS_FONT_OBLIQUE\n : italicAngle.toString();\n\n return true;\n}\n\nfunction recoverJsURL(str) {\n // Attempt to recover valid URLs from `JS` entries with certain\n // white-listed formats:\n // - window.open('http://example.com')\n // - app.launchURL('http://example.com', true)\n // - xfa.host.gotoURL('http://example.com')\n const URL_OPEN_METHODS = [\"app.launchURL\", \"window.open\", \"xfa.host.gotoURL\"];\n const regex = new RegExp(\n \"^\\\\s*(\" +\n URL_OPEN_METHODS.join(\"|\").replaceAll(\".\", \"\\\\.\") +\n \")\\\\((?:'|\\\")([^'\\\"]*)(?:'|\\\")(?:,\\\\s*(\\\\w+)\\\\)|\\\\))\",\n \"i\"\n );\n\n const jsUrl = regex.exec(str);\n if (jsUrl?.[2]) {\n return {\n url: jsUrl[2],\n newWindow: jsUrl[1] === \"app.launchURL\" && jsUrl[3] === \"true\",\n };\n }\n\n return null;\n}\n\nfunction numberToString(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\",\n `numberToString - the value (${value}) should be a number.`\n );\n }\n\n if (Number.isInteger(value)) {\n return value.toString();\n }\n\n const roundedValue = Math.round(value * 100);\n if (roundedValue % 100 === 0) {\n return (roundedValue / 100).toString();\n }\n\n if (roundedValue % 10 === 0) {\n return value.toFixed(1);\n }\n\n return value.toFixed(2);\n}\n\nfunction getNewAnnotationsMap(annotationStorage) {\n if (!annotationStorage) {\n return null;\n }\n const newAnnotationsByPage = new Map();\n // The concept of page in a XFA is very different, so\n // editing is just not implemented.\n for (const [key, value] of annotationStorage) {\n if (!key.startsWith(AnnotationEditorPrefix)) {\n continue;\n }\n newAnnotationsByPage\n .getOrInsertComputed(value.pageIndex, makeArr)\n .push(value);\n }\n return newAnnotationsByPage.size > 0 ? newAnnotationsByPage : null;\n}\n\nfunction getModificationDate(date = new Date()) {\n if (!(date instanceof Date)) {\n date = new Date(date);\n }\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\nfunction getRotationMatrix(rotation, width, height) {\n switch (rotation) {\n case 90:\n return [0, 1, -1, 0, width, 0];\n case 180:\n return [-1, 0, 0, -1, width, height];\n case 270:\n return [0, -1, 1, 0, 0, height];\n default:\n throw new Error(\"Invalid rotation\");\n }\n}\n\n/**\n * Get the number of bytes to use to represent the given positive integer.\n * If n is zero, the function returns 0 which means that we don't need to waste\n * a byte to represent it.\n * @param {number} x - a positive integer.\n * @returns {number}\n */\nfunction getSizeInBytes(x) {\n // n bits are required for numbers up to 2^n - 1.\n // So for a number x, we need ceil(log2(1 + x)) bits.\n return Math.ceil(Math.ceil(Math.log2(1 + x)) / 8);\n}\n\nexport {\n arrayBuffersToBytes,\n codePointIter,\n collectActions,\n deepCompare,\n encodeToXmlString,\n escapePDFName,\n escapeString,\n fetchBinaryData,\n getInheritableProperty,\n getLookupTableFactory,\n getModificationDate,\n getNewAnnotationsMap,\n getParentToUpdate,\n getRotationMatrix,\n getSizeInBytes,\n IDENTITY_MATRIX,\n isBooleanArray,\n isNumberArray,\n isWhiteSpace,\n lookupMatrix,\n lookupNormalRect,\n lookupRect,\n MAX_INT_32,\n MissingDataException,\n normalizeCSSFontFamily,\n numberToString,\n ParserEOFException,\n parseXFAPath,\n PDF_VERSION_REGEXP,\n recoverJsURL,\n RESOURCES_KEYS_OPERATOR_LIST,\n RESOURCES_KEYS_TEXT_CONTENT,\n toRomanNumerals,\n validateCSSFont,\n validateFontName,\n XRefEntryException,\n XRefParseException,\n};\n","/* Copyright 2026 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 { unreachable, warn } from \"../shared/util.js\";\nimport { fetchBinaryData } from \"./core_utils.js\";\n\nclass WasmImage {\n static #handler = null;\n\n static #instances = new Set();\n\n static #useWasm = true;\n\n static #useWorkerFetch = true;\n\n static #wasmUrl = null;\n\n #buffer = null;\n\n #modulePromise = null;\n\n _filename = null;\n\n _noWasmFilename = null;\n\n static setOptions({ handler, useWasm, useWorkerFetch, wasmUrl }) {\n WasmImage.#useWasm = useWasm;\n WasmImage.#useWorkerFetch = useWorkerFetch;\n WasmImage.#wasmUrl = wasmUrl;\n\n if (!useWorkerFetch) {\n WasmImage.#handler = handler;\n }\n }\n\n // eslint-disable-next-line getter-return\n static get instance() {\n unreachable(\"Abstract getter `instance` accessed\");\n }\n\n static cleanup() {\n for (const instance of WasmImage.#instances) {\n instance.#modulePromise = null;\n }\n }\n\n constructor(trackInstance = false) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n this.constructor === WasmImage\n ) {\n unreachable(\"Cannot initialize WasmImage.\");\n }\n\n if (trackInstance) {\n // Keep track of the instances for `cleanup` purposes.\n WasmImage.#instances.add(this);\n }\n }\n\n async #getJsModule(fallbackCallback) {\n let instance = null;\n try {\n const mod = await (typeof PDFJSDev === \"undefined\"\n ? // eslint-disable-next-line no-unsanitized/method\n import(`../${WasmImage.#wasmUrl}${this._noWasmFilename}`)\n : __raw_import__(`${WasmImage.#wasmUrl}${this._noWasmFilename}`));\n instance = mod.default();\n } catch (ex) {\n warn(`#getJsModule: ${ex}`);\n }\n fallbackCallback(instance);\n }\n\n async #instantiateWasm(fallbackCallback, imports, successCallback) {\n try {\n if (!this.#buffer) {\n if (WasmImage.#useWorkerFetch) {\n this.#buffer = await fetchBinaryData(\n `${WasmImage.#wasmUrl}${this._filename}`\n );\n } else {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Only worker-thread fetching supported.\");\n }\n this.#buffer = await WasmImage.#handler.sendWithPromise(\n \"FetchBinaryData\",\n { kind: \"wasmUrl\", filename: this._filename }\n );\n }\n }\n const results = await WebAssembly.instantiate(this.#buffer, imports);\n return successCallback(results.instance);\n } catch (ex) {\n warn(`#instantiateWasm: ${ex}`);\n\n this.#getJsModule(fallbackCallback);\n return null;\n }\n }\n\n _getModule(ImageDecoder) {\n if (!this.#modulePromise) {\n const { promise, resolve } = Promise.withResolvers();\n const promises = [promise];\n if (!WasmImage.#useWasm) {\n this.#getJsModule(resolve);\n } else {\n promises.push(\n ImageDecoder({\n warn,\n instantiateWasm: this.#instantiateWasm.bind(this, resolve),\n })\n );\n }\n this.#modulePromise = Promise.race(promises);\n }\n return this.#modulePromise;\n }\n\n async decode(bytes, _params) {\n unreachable(\"Abstract method `decode` called\");\n }\n}\n\nexport { WasmImage };\n","/* Copyright 2026 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 { BaseException, shadow } from \"../shared/util.js\";\nimport JBig2 from \"../../external/jbig2/jbig2.js\";\nimport { WasmImage } from \"./wasm_image.js\";\n\nclass Jbig2Error extends BaseException {\n constructor(msg) {\n super(msg, \"Jbig2Error\");\n }\n}\n\nclass JBig2CCITTFaxImage extends WasmImage {\n _filename = \"jbig2.wasm\";\n\n _noWasmFilename = \"jbig2_nowasm_fallback.js\";\n\n static get instance() {\n return shadow(\n this,\n \"instance\",\n new JBig2CCITTFaxImage(/* trackInstance = */ true)\n );\n }\n\n async decode(bytes, width, height, globals, CCITTOptions) {\n const module = await this._getModule(JBig2);\n\n if (!module) {\n throw new Jbig2Error(\"JBig2 failed to initialize\");\n }\n let ptr, globalsPtr;\n\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n\n if (CCITTOptions) {\n module._ccitt_decode(\n ptr,\n size,\n width,\n height,\n CCITTOptions.K,\n CCITTOptions.EndOfLine ? 1 : 0,\n CCITTOptions.EncodedByteAlign ? 1 : 0,\n CCITTOptions.BlackIs1 ? 1 : 0,\n CCITTOptions.Columns,\n CCITTOptions.Rows\n );\n } else {\n const globalsSize = globals ? globals.length : 0;\n if (globalsSize > 0) {\n globalsPtr = module._malloc(globalsSize);\n module.writeArrayToMemory(globals, globalsPtr);\n }\n module._jbig2_decode(ptr, size, width, height, globalsPtr, globalsSize);\n }\n if (!module.imageData) {\n throw new Jbig2Error(\"Unknown error\");\n }\n const { imageData } = module;\n module.imageData = null;\n\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n if (globalsPtr) {\n module._free(globalsPtr);\n }\n }\n }\n}\n\nexport { JBig2CCITTFaxImage, Jbig2Error };\n","/* Copyright 2026 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// TODO: Replace all occurrences of this function, and remove the file, once\n// https://github.com/tc39/proposal-math-clamp/ is generally available.\nfunction MathClamp(v, min, max) {\n // eslint-disable-next-line prefer-math-clamp/prefer-math-clamp\n return Math.min(Math.max(v, min), max);\n}\n\nexport { MathClamp };\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 FeatureTest,\n FormatError,\n info,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport { BaseStream } from \"./base_stream.js\";\nimport { MathClamp } from \"../shared/math_clamp.js\";\n\n/**\n * Resizes an RGB image with 3 components.\n * @param {TypedArray} src - The source buffer.\n * @param {TypedArray} dest - The destination buffer.\n * @param {number} w1 - Original width.\n * @param {number} h1 - Original height.\n * @param {number} w2 - New width.\n * @param {number} h2 - New height.\n * @param {number} alpha01 - Size reserved for the alpha channel.\n */\nfunction resizeRgbImage(src, dest, w1, h1, w2, h2, alpha01) {\n const COMPONENTS = 3;\n alpha01 = alpha01 !== 1 ? 0 : alpha01;\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0,\n oldIndex;\n const xScaled = new Uint16Array(w2);\n const w1Scanline = w1 * COMPONENTS;\n\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const py = Math.floor(i * yRatio) * w1Scanline;\n for (let j = 0; j < w2; j++) {\n oldIndex = py + xScaled[j];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n dest[newIndex++] = src[oldIndex++];\n newIndex += alpha01;\n }\n }\n}\n\nfunction resizeRgbaImage(src, dest, w1, h1, w2, h2, alpha01) {\n const xRatio = w1 / w2;\n const yRatio = h1 / h2;\n let newIndex = 0;\n const xScaled = new Uint16Array(w2);\n\n if (alpha01 === 1) {\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio);\n }\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0; i < h2; i++) {\n const buf = src32.subarray(Math.floor(i * yRatio) * w1);\n for (let j = 0; j < w2; j++) {\n dest32[newIndex++] |= buf[xScaled[j]] & rgbMask;\n }\n }\n } else {\n const COMPONENTS = 4;\n const w1Scanline = w1 * COMPONENTS;\n for (let i = 0; i < w2; i++) {\n xScaled[i] = Math.floor(i * xRatio) * COMPONENTS;\n }\n for (let i = 0; i < h2; i++) {\n const buf = src.subarray(Math.floor(i * yRatio) * w1Scanline);\n for (let j = 0; j < w2; j++) {\n const oldIndex = xScaled[j];\n dest[newIndex++] = buf[oldIndex];\n dest[newIndex++] = buf[oldIndex + 1];\n dest[newIndex++] = buf[oldIndex + 2];\n }\n }\n }\n}\n\nfunction copyRgbaImage(src, dest, alpha01) {\n if (alpha01 === 1) {\n const src32 = new Uint32Array(src.buffer);\n const dest32 = new Uint32Array(dest.buffer);\n const rgbMask = FeatureTest.isLittleEndian ? 0x00ffffff : 0xffffff00;\n for (let i = 0, ii = src32.length; i < ii; i++) {\n dest32[i] |= src32[i] & rgbMask;\n }\n } else {\n let j = 0;\n for (let i = 0, ii = src.length; i < ii; i += 4) {\n dest[j++] = src[i];\n dest[j++] = src[i + 1];\n dest[j++] = src[i + 2];\n }\n }\n}\n\nfunction isDefaultDecodeHelper(decode, expectedLen) {\n if (!Array.isArray(decode)) {\n return true;\n }\n const decodeLen = decode.length;\n\n if (decodeLen < expectedLen) {\n warn(\"Decode map length is too short.\");\n return true;\n }\n if (decodeLen > expectedLen) {\n info(\"Truncating too long decode map.\");\n decode.length = expectedLen;\n }\n return false;\n}\n\nclass ColorSpace {\n static #rgbBuf = new Uint8ClampedArray(3);\n\n constructor(name, numComps) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n this.constructor === ColorSpace\n ) {\n unreachable(\"Cannot initialize ColorSpace.\");\n }\n this.name = name;\n this.numComps = numComps;\n }\n\n /**\n * Converts the color value to the RGB color. The color components are\n * located in the src array starting from the srcOffset. Returns the array\n * of the rgb components, each value ranging from [0,255].\n */\n getRgb(src, srcOffset, output = new Uint8ClampedArray(3)) {\n this.getRgbItem(src, srcOffset, output, 0);\n return output;\n }\n\n getRgbHex(src, srcOffset) {\n const buffer = this.getRgb(src, srcOffset, ColorSpace.#rgbBuf);\n return Util.makeHexColor(buffer[0], buffer[1], buffer[2]);\n }\n\n /**\n * Converts the color value to the RGB color, similar to the getRgb method.\n * The result placed into the dest array starting from the destOffset.\n */\n getRgbItem(src, srcOffset, dest, destOffset) {\n unreachable(\"Should not call ColorSpace.getRgbItem\");\n }\n\n /**\n * Converts the specified number of the color values to the RGB colors.\n * The colors are located in the src array starting from the srcOffset.\n * The result is placed into the dest array starting from the destOffset.\n * The src array items shall be in [0,2^bits) range, the dest array items\n * will be in [0,255] range. alpha01 indicates how many alpha components\n * there are in the dest array; it will be either 0 (RGB array) or 1 (RGBA\n * array).\n */\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n unreachable(\"Should not call ColorSpace.getRgbBuffer\");\n }\n\n /**\n * Converts `count` unscaled colors to RGB, starting at `destOffset`.\n * Components use the native color-space ranges expected by `getRgbItem`,\n * and each output has a `3 + alpha01` byte stride.\n * Subclasses may override this to batch expensive conversions.\n */\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const { numComps } = this;\n\n for (let i = 0, srcOffset = 0; i < count; i++, srcOffset += numComps) {\n this.getRgbItem(src, srcOffset, dest, destOffset);\n destOffset += 3 + alpha01;\n }\n }\n\n /**\n * Returns true if source data will be equal the result/output data.\n */\n isPassthrough(bits) {\n return false;\n }\n\n /**\n * Refer to the static `ColorSpace.isDefaultDecode` method below.\n */\n isDefaultDecode(decode, bpc) {\n return ColorSpace.isDefaultDecode(decode, this.numComps);\n }\n\n /**\n * Fills in the RGB colors in the destination buffer. alpha01 indicates\n * how many alpha components there are in the dest array; it will be either\n * 0 (RGB array) or 1 (RGBA array).\n */\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'ColorSpace.fillRgb: Unsupported \"dest\" type.'\n );\n }\n const count = originalWidth * originalHeight;\n let rgbBuf = null;\n const numComponentColors = 1 << bpc;\n const needsResizing = originalHeight !== height || originalWidth !== width;\n\n if (this.isPassthrough(bpc)) {\n rgbBuf = comps;\n } else if (\n this.numComps === 1 &&\n count > numComponentColors &&\n this.name !== \"DeviceGray\" &&\n this.name !== \"DeviceRGB\"\n ) {\n // Optimization: create a color map when there is just one component and\n // we are converting more colors than the size of the color map. We\n // don't build the map if the colorspace is gray or rgb since those\n // methods are faster than building a map. This mainly offers big speed\n // ups for indexed and alternate colorspaces.\n //\n // TODO it may be worth while to cache the color map. While running\n // testing I never hit a cache so I will leave that out for now (perhaps\n // we are reparsing colorspaces too much?).\n const allColors =\n bpc <= 8\n ? new Uint8Array(numComponentColors)\n : new Uint16Array(numComponentColors);\n for (let i = 0; i < numComponentColors; i++) {\n allColors[i] = i;\n }\n const colorMap = new Uint8ClampedArray(numComponentColors * 3);\n this.getRgbBuffer(\n allColors,\n 0,\n numComponentColors,\n colorMap,\n 0,\n bpc,\n /* alpha01 = */ 0\n );\n\n if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n let destPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n dest[destPos++] = colorMap[key];\n dest[destPos++] = colorMap[key + 1];\n dest[destPos++] = colorMap[key + 2];\n destPos += alpha01;\n }\n } else {\n rgbBuf = new Uint8Array(count * 3);\n let rgbPos = 0;\n for (let i = 0; i < count; ++i) {\n const key = comps[i] * 3;\n rgbBuf[rgbPos++] = colorMap[key];\n rgbBuf[rgbPos++] = colorMap[key + 1];\n rgbBuf[rgbPos++] = colorMap[key + 2];\n }\n }\n } else if (!needsResizing) {\n // Fill in the RGB values directly into |dest|.\n this.getRgbBuffer(comps, 0, width * actualHeight, dest, 0, bpc, alpha01);\n } else {\n rgbBuf = new Uint8ClampedArray(count * 3);\n this.getRgbBuffer(comps, 0, count, rgbBuf, 0, bpc, /* alpha01 = */ 0);\n }\n\n if (rgbBuf) {\n if (needsResizing) {\n resizeRgbImage(\n rgbBuf,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n let destPos = 0,\n rgbPos = 0;\n for (let i = 0, ii = width * actualHeight; i < ii; i++) {\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n dest[destPos++] = rgbBuf[rgbPos++];\n destPos += alpha01;\n }\n }\n }\n }\n\n /**\n * True if the colorspace has components in the default range of [0, 1].\n * This should be true for all colorspaces except for lab color spaces\n * which are [0,100], [-128, 127], [-128, 127].\n */\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", true);\n }\n\n /**\n * Checks if a decode map matches the default decode map for a color space.\n * This handles the general decode maps where there are two values per\n * component, e.g. [0, 1, 0, 1, 0, 1] for a RGB color.\n * This does not handle Lab, Indexed, or Pattern decode maps since they are\n * slightly different.\n * @param {Array} decode - Decode map (usually from an image).\n * @param {number} numComps - Number of components the color space has.\n */\n static isDefaultDecode(decode, numComps) {\n if (isDefaultDecodeHelper(decode, numComps * 2)) {\n return true;\n }\n for (let i = 0, ii = decode.length; i < ii; i += 2) {\n if (decode[i] !== 0 || decode[i + 1] !== 1) {\n return false;\n }\n }\n return true;\n }\n}\n\n/**\n * Alternate color space handles both Separation and DeviceN color spaces. A\n * Separation color space is actually just a DeviceN with one color component.\n * Both color spaces use a tinting function to convert colors to a base color\n * space.\n *\n * The default color is `new Float32Array(new Array(numComps).fill(1))`.\n */\nclass AlternateCS extends ColorSpace {\n constructor(numComps, base, tintFn) {\n super(\"Alternate\", numComps);\n this.base = base;\n this.tintFn = tintFn;\n this.tmpBuf = new Float32Array(base.numComps);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const tmpBuf = this.tmpBuf;\n this.tintFn(src, srcOffset, tmpBuf, 0);\n this.base.getRgbItem(tmpBuf, 0, dest, destOffset);\n }\n\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const { base, numComps, tintFn } = this;\n const baseNumComps = base.numComps;\n // Tint first so the base color space can convert the batch at once.\n const tinted = new Float32Array(count * baseNumComps);\n\n for (let i = 0, srcOffset = 0, tintedOffset = 0; i < count; i++) {\n tintFn(src, srcOffset, tinted, tintedOffset);\n srcOffset += numComps;\n tintedOffset += baseNumComps;\n }\n base.getRgbItems(tinted, count, dest, destOffset, alpha01);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'AlternateCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const tintFn = this.tintFn;\n const base = this.base;\n const scale = 1 / ((1 << bits) - 1);\n const baseNumComps = base.numComps;\n const usesZeroToOneRange = base.usesZeroToOneRange;\n const isPassthrough =\n (base.isPassthrough(8) || !usesZeroToOneRange) && alpha01 === 0;\n let pos = isPassthrough ? destOffset : 0;\n const baseBuf = isPassthrough\n ? dest\n : new Uint8ClampedArray(baseNumComps * count);\n const numComps = this.numComps;\n\n const scaled = new Float32Array(numComps);\n const tinted = new Float32Array(baseNumComps);\n let i, j;\n\n for (i = 0; i < count; i++) {\n for (j = 0; j < numComps; j++) {\n scaled[j] = src[srcOffset++] * scale;\n }\n tintFn(scaled, 0, tinted, 0);\n if (usesZeroToOneRange) {\n for (j = 0; j < baseNumComps; j++) {\n baseBuf[pos++] = tinted[j] * 255;\n }\n } else {\n base.getRgbItem(tinted, 0, baseBuf, pos);\n pos += baseNumComps;\n }\n }\n\n if (!isPassthrough) {\n base.getRgbBuffer(baseBuf, 0, count, dest, destOffset, 8, alpha01);\n }\n }\n}\n\nclass PatternCS extends ColorSpace {\n constructor(baseCS) {\n super(\"Pattern\", null);\n this.base = baseCS;\n }\n\n isDefaultDecode(decode, bpc) {\n unreachable(\"Should not call PatternCS.isDefaultDecode\");\n }\n}\n\n/**\n * The default color is `new Uint8Array([0])`.\n */\nclass IndexedCS extends ColorSpace {\n #rgbLookup;\n\n constructor(base, highVal, lookup) {\n super(\"Indexed\", 1);\n this.highVal = highVal;\n\n const count = highVal + 1;\n const length = base.numComps * count;\n const palette = new Uint8Array(length);\n\n if (lookup instanceof BaseStream) {\n palette.set(lookup.getBytes(length));\n } else if (typeof lookup === \"string\") {\n for (let i = 0; i < length; ++i) {\n palette[i] = lookup.charCodeAt(i);\n }\n } else {\n throw new FormatError(`IndexedCS - unrecognized lookup table: ${lookup}`);\n }\n\n this.#rgbLookup = new Uint8ClampedArray(count * 3);\n base.getRgbBuffer(\n palette,\n 0,\n count,\n this.#rgbLookup,\n 0,\n /* bits = */ 8,\n /* alpha01 = */ 0\n );\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const rgbLookup = this.#rgbLookup;\n const pos = MathClamp(Math.round(src[srcOffset]), 0, this.highVal) * 3;\n\n dest[destOffset] = rgbLookup[pos];\n dest[destOffset + 1] = rgbLookup[pos + 1];\n dest[destOffset + 2] = rgbLookup[pos + 2];\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'IndexedCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const { highVal } = this;\n const rgbLookup = this.#rgbLookup;\n\n for (let i = 0; i < count; ++i) {\n const pos = MathClamp(Math.round(src[srcOffset++]), 0, highVal) * 3;\n\n dest[destOffset++] = rgbLookup[pos];\n dest[destOffset++] = rgbLookup[pos + 1];\n dest[destOffset++] = rgbLookup[pos + 2];\n destOffset += alpha01;\n }\n }\n\n isDefaultDecode(decode, bpc) {\n if (isDefaultDecodeHelper(decode, 2)) {\n return true;\n }\n if (!Number.isInteger(bpc) || bpc < 1) {\n warn(\"Bits per component is not correct\");\n return true;\n }\n return decode[0] === 0 && decode[1] === (1 << bpc) - 1;\n }\n}\n\n/**\n * The default color is `new Float32Array([0])`.\n */\nclass DeviceGrayCS extends ColorSpace {\n constructor() {\n super(\"DeviceGray\", 1);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n const c = src[srcOffset] * 255;\n dest[destOffset] = dest[destOffset + 1] = dest[destOffset + 2] = c;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n const c = scale * src[j++];\n dest[q++] = c;\n dest[q++] = c;\n dest[q++] = c;\n q += alpha01;\n }\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass DeviceRgbCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGB\", 3);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n dest[destOffset] = src[srcOffset] * 255;\n dest[destOffset + 1] = src[srcOffset + 1] * 255;\n dest[destOffset + 2] = src[srcOffset + 2] * 255;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n if (bits === 8 && alpha01 === 0) {\n dest.set(src.subarray(srcOffset, srcOffset + count * 3), destOffset);\n return;\n }\n const scale = 255 / ((1 << bits) - 1);\n let j = srcOffset,\n q = destOffset;\n for (let i = 0; i < count; ++i) {\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n dest[q++] = scale * src[j++];\n q += alpha01;\n }\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nclass DeviceRgbaCS extends ColorSpace {\n constructor() {\n super(\"DeviceRGBA\", 4);\n }\n\n isPassthrough(bits) {\n return bits === 8;\n }\n\n fillRgb(\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n actualHeight,\n bpc,\n comps,\n alpha01\n ) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceRgbaCS.fillRgb: Unsupported \"dest\" type.'\n );\n }\n if (originalHeight !== height || originalWidth !== width) {\n resizeRgbaImage(\n comps,\n dest,\n originalWidth,\n originalHeight,\n width,\n height,\n alpha01\n );\n } else {\n copyRgbaImage(comps, dest, alpha01);\n }\n }\n}\n\n/**\n * The default color is `new Float32Array([0, 0, 0, 1])`.\n */\nclass DeviceCmykCS extends ColorSpace {\n constructor() {\n super(\"DeviceCMYK\", 4);\n }\n\n // The coefficients below was found using numerical analysis: the method of\n // steepest descent for the sum((f_i - color_value_i)^2) for r/g/b colors,\n // where color_value is the tabular value from the table of sampled RGB colors\n // from CMYK US Web Coated (SWOP) colorspace, and f_i is the corresponding\n // CMYK color conversion using the estimation below:\n // f(A, B,.. N) = Acc+Bcm+Ccy+Dck+c+Fmm+Gmy+Hmk+Im+Jyy+Kyk+Ly+Mkk+Nk+255\n #toRgb(src, srcOffset, srcScale, dest, destOffset) {\n const c = src[srcOffset] * srcScale;\n const m = src[srcOffset + 1] * srcScale;\n const y = src[srcOffset + 2] * srcScale;\n const k = src[srcOffset + 3] * srcScale;\n\n dest[destOffset] =\n 255 +\n c *\n (-4.387332384609988 * c +\n 54.48615194189176 * m +\n 18.82290502165302 * y +\n 212.25662451639585 * k +\n -285.2331026137004) +\n m *\n (1.7149763477362134 * m -\n 5.6096736904047315 * y +\n -17.873870861415444 * k -\n 5.497006427196366) +\n y *\n (-2.5217340131683033 * y - 21.248923337353073 * k + 17.5119270841813) +\n k * (-21.86122147463605 * k - 189.48180835922747);\n\n dest[destOffset + 1] =\n 255 +\n c *\n (8.841041422036149 * c +\n 60.118027045597366 * m +\n 6.871425592049007 * y +\n 31.159100130055922 * k +\n -79.2970844816548) +\n m *\n (-15.310361306967817 * m +\n 17.575251261109482 * y +\n 131.35250912493976 * k -\n 190.9453302588951) +\n y * (4.444339102852739 * y + 9.8632861493405 * k - 24.86741582555878) +\n k * (-20.737325471181034 * k - 187.80453709719578);\n\n dest[destOffset + 2] =\n 255 +\n c *\n (0.8842522430003296 * c +\n 8.078677503112928 * m +\n 30.89978309703729 * y -\n 0.23883238689178934 * k +\n -14.183576799673286) +\n m *\n (10.49593273432072 * m +\n 63.02378494754052 * y +\n 50.606957656360734 * k -\n 112.23884253719248) +\n y *\n (0.03296041114873217 * y +\n 115.60384449646641 * k +\n -193.58209356861505) +\n k * (-22.33816807309886 * k - 180.12613974708367);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n this.#toRgb(src, srcOffset, 1, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'DeviceCmykCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, scale, dest, destOffset);\n srcOffset += 4;\n destOffset += 3 + alpha01;\n }\n }\n}\n\n/**\n * CalGrayCS: Based on \"PDF Reference, Sixth Ed\", p.245\n *\n * The default color is `new Float32Array([0])`.\n */\nclass CalGrayCS extends ColorSpace {\n constructor(whitePoint, blackPoint, gamma) {\n super(\"CalGray\", 1);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalGray\"\n );\n }\n // Translate arguments to spec variables.\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n this.G = gamma || 1;\n\n // Validate variables as per spec.\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}, no fallback available`\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(`Invalid BlackPoint for ${this.name}, falling back to default.`);\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.XB !== 0 || this.YB !== 0 || this.ZB !== 0) {\n warn(\n `${this.name}, BlackPoint: XB: ${this.XB}, YB: ${this.YB}, ` +\n `ZB: ${this.ZB}, only default values are supported.`\n );\n }\n\n if (this.G < 1) {\n info(\n `Invalid Gamma: ${this.G} for ${this.name}, falling back to default.`\n );\n this.G = 1;\n }\n }\n\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n // A represents a gray component of a calibrated gray space.\n // A <---> AG in the spec\n const A = src[srcOffset] * scale;\n const AG = A ** this.G;\n\n // Computes L as per spec. ( = this.YW * AG )\n // Except if other than default BlackPoint values are used.\n const L = this.YW * AG;\n // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.\n // Convert values to rgb range [0, 255].\n const val = Math.max(295.8 * L ** 0.3333333333333333 - 40.8, 0);\n dest[destOffset] = val;\n dest[destOffset + 1] = val;\n dest[destOffset + 2] = val;\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalGrayCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 1;\n destOffset += 3 + alpha01;\n }\n }\n}\n\n/**\n * CalRGBCS: Based on \"PDF Reference, Sixth Ed\", p.247\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass CalRGBCS extends ColorSpace {\n // See http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html for these\n // matrices.\n // prettier-ignore\n static #BRADFORD_SCALE_MATRIX = new Float32Array([\n 0.8951, 0.2664, -0.1614,\n -0.7502, 1.7135, 0.0367,\n 0.0389, -0.0685, 1.0296]);\n\n // prettier-ignore\n static #BRADFORD_SCALE_INVERSE_MATRIX = new Float32Array([\n 0.9869929, -0.1470543, 0.1599627,\n 0.4323053, 0.5183603, 0.0492912,\n -0.0085287, 0.0400428, 0.9684867]);\n\n // See http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html.\n // prettier-ignore\n static #SRGB_D65_XYZ_TO_RGB_MATRIX = new Float32Array([\n 3.2404542, -1.5371385, -0.4985314,\n -0.9692660, 1.8760108, 0.0415560,\n 0.0556434, -0.2040259, 1.0572252]);\n\n static #FLAT_WHITEPOINT_MATRIX = new Float32Array([1, 1, 1]);\n\n static #tempNormalizeMatrix = new Float32Array(3);\n\n static #tempConvertMatrix1 = new Float32Array(3);\n\n static #tempConvertMatrix2 = new Float32Array(3);\n\n static #DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0;\n\n constructor(whitePoint, blackPoint, gamma, matrix) {\n super(\"CalRGB\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space CalRGB\"\n );\n }\n // Translate arguments to spec variables.\n const [XW, YW, ZW] = (this.whitePoint = whitePoint);\n const [XB, YB, ZB] = (this.blackPoint = blackPoint || new Float32Array(3));\n\n [this.GR, this.GG, this.GB] = gamma || new Float32Array([1, 1, 1]);\n [\n this.MXA,\n this.MYA,\n this.MZA,\n this.MXB,\n this.MYB,\n this.MZB,\n this.MXC,\n this.MYC,\n this.MZC,\n ] = matrix || new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]);\n\n // Validate variables as per spec.\n if (XW < 0 || ZW < 0 || YW !== 1) {\n throw new FormatError(\n `Invalid WhitePoint components for ${this.name}, no fallback available`\n );\n }\n\n if (XB < 0 || YB < 0 || ZB < 0) {\n info(\n `Invalid BlackPoint for ${this.name} [${XB}, ${YB}, ${ZB}], ` +\n \"falling back to default.\"\n );\n this.blackPoint = new Float32Array(3);\n }\n\n if (this.GR < 0 || this.GG < 0 || this.GB < 0) {\n info(\n `Invalid Gamma [${this.GR}, ${this.GG}, ${this.GB}] for ` +\n `${this.name}, falling back to default.`\n );\n this.GR = this.GG = this.GB = 1;\n }\n }\n\n #matrixProduct(a, b, result) {\n result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n result[1] = a[3] * b[0] + a[4] * b[1] + a[5] * b[2];\n result[2] = a[6] * b[0] + a[7] * b[1] + a[8] * b[2];\n }\n\n #toFlat(sourceWhitePoint, LMS, result) {\n result[0] = (LMS[0] * 1) / sourceWhitePoint[0];\n result[1] = (LMS[1] * 1) / sourceWhitePoint[1];\n result[2] = (LMS[2] * 1) / sourceWhitePoint[2];\n }\n\n #toD65(sourceWhitePoint, LMS, result) {\n const D65X = 0.95047;\n const D65Y = 1;\n const D65Z = 1.08883;\n\n result[0] = (LMS[0] * D65X) / sourceWhitePoint[0];\n result[1] = (LMS[1] * D65Y) / sourceWhitePoint[1];\n result[2] = (LMS[2] * D65Z) / sourceWhitePoint[2];\n }\n\n #sRGBTransferFunction(color) {\n // See http://en.wikipedia.org/wiki/SRGB.\n if (color <= 0.0031308) {\n return MathClamp(12.92 * color, 0, 1);\n }\n // Optimization:\n // If color is close enough to 1, skip calling the following transform\n // since calling Math.pow is expensive. If color is larger than\n // the threshold, the final result is larger than 254.5 since\n // ((1 + 0.055) * 0.99554525 ** (1 / 2.4) - 0.055) * 255 ===\n // 254.50000003134699\n if (color >= 0.99554525) {\n return 1;\n }\n return MathClamp((1 + 0.055) * color ** (1 / 2.4) - 0.055, 0, 1);\n }\n\n #decodeL(L) {\n if (L < 0) {\n return -this.#decodeL(-L);\n }\n if (L > 8.0) {\n return ((L + 16) / 116) ** 3;\n }\n return L * CalRGBCS.#DECODE_L_CONSTANT;\n }\n\n #compensateBlackPoint(sourceBlackPoint, XYZ_Flat, result) {\n // In case the blackPoint is already the default blackPoint then there is\n // no need to do compensation.\n if (\n sourceBlackPoint[0] === 0 &&\n sourceBlackPoint[1] === 0 &&\n sourceBlackPoint[2] === 0\n ) {\n result[0] = XYZ_Flat[0];\n result[1] = XYZ_Flat[1];\n result[2] = XYZ_Flat[2];\n return;\n }\n\n // For the blackPoint calculation details, please see\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n // The destination blackPoint is the default blackPoint [0, 0, 0].\n const zeroDecodeL = this.#decodeL(0);\n\n const X_DST = zeroDecodeL;\n const X_SRC = this.#decodeL(sourceBlackPoint[0]);\n\n const Y_DST = zeroDecodeL;\n const Y_SRC = this.#decodeL(sourceBlackPoint[1]);\n\n const Z_DST = zeroDecodeL;\n const Z_SRC = this.#decodeL(sourceBlackPoint[2]);\n\n const X_Scale = (1 - X_DST) / (1 - X_SRC);\n const X_Offset = 1 - X_Scale;\n\n const Y_Scale = (1 - Y_DST) / (1 - Y_SRC);\n const Y_Offset = 1 - Y_Scale;\n\n const Z_Scale = (1 - Z_DST) / (1 - Z_SRC);\n const Z_Offset = 1 - Z_Scale;\n\n result[0] = XYZ_Flat[0] * X_Scale + X_Offset;\n result[1] = XYZ_Flat[1] * Y_Scale + Y_Offset;\n result[2] = XYZ_Flat[2] * Z_Scale + Z_Offset;\n }\n\n #normalizeWhitePointToFlat(sourceWhitePoint, XYZ_In, result) {\n // In case the whitePoint is already flat then there is no need to do\n // normalization.\n if (sourceWhitePoint[0] === 1 && sourceWhitePoint[2] === 1) {\n result[0] = XYZ_In[0];\n result[1] = XYZ_In[1];\n result[2] = XYZ_In[2];\n return;\n }\n\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_Flat = CalRGBCS.#tempNormalizeMatrix;\n this.#toFlat(sourceWhitePoint, LMS, LMS_Flat);\n\n this.#matrixProduct(\n CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\n LMS_Flat,\n result\n );\n }\n\n #normalizeWhitePointToD65(sourceWhitePoint, XYZ_In, result) {\n const LMS = result;\n this.#matrixProduct(CalRGBCS.#BRADFORD_SCALE_MATRIX, XYZ_In, LMS);\n\n const LMS_D65 = CalRGBCS.#tempNormalizeMatrix;\n this.#toD65(sourceWhitePoint, LMS, LMS_D65);\n\n this.#matrixProduct(\n CalRGBCS.#BRADFORD_SCALE_INVERSE_MATRIX,\n LMS_D65,\n result\n );\n }\n\n #toRgb(src, srcOffset, dest, destOffset, scale) {\n // A, B and C represent a red, green and blue components of a calibrated\n // rgb space.\n const A = MathClamp(src[srcOffset] * scale, 0, 1);\n const B = MathClamp(src[srcOffset + 1] * scale, 0, 1);\n const C = MathClamp(src[srcOffset + 2] * scale, 0, 1);\n\n // A <---> AGR in the spec\n // B <---> BGG in the spec\n // C <---> CGB in the spec\n const AGR = A === 1 ? 1 : A ** this.GR;\n const BGG = B === 1 ? 1 : B ** this.GG;\n const CGB = C === 1 ? 1 : C ** this.GB;\n\n // Computes intermediate variables L, M, N as per spec.\n // To decode X, Y, Z values map L, M, N directly to them.\n const X = this.MXA * AGR + this.MXB * BGG + this.MXC * CGB;\n const Y = this.MYA * AGR + this.MYB * BGG + this.MYC * CGB;\n const Z = this.MZA * AGR + this.MZB * BGG + this.MZC * CGB;\n\n // The following calculations are based on this document:\n // http://www.adobe.com/content/dam/Adobe/en/devnet/photoshop/sdk/\n // AdobeBPC.pdf.\n const XYZ = CalRGBCS.#tempConvertMatrix1;\n XYZ[0] = X;\n XYZ[1] = Y;\n XYZ[2] = Z;\n const XYZ_Flat = CalRGBCS.#tempConvertMatrix2;\n\n this.#normalizeWhitePointToFlat(this.whitePoint, XYZ, XYZ_Flat);\n\n const XYZ_Black = CalRGBCS.#tempConvertMatrix1;\n this.#compensateBlackPoint(this.blackPoint, XYZ_Flat, XYZ_Black);\n\n const XYZ_D65 = CalRGBCS.#tempConvertMatrix2;\n this.#normalizeWhitePointToD65(\n CalRGBCS.#FLAT_WHITEPOINT_MATRIX,\n XYZ_Black,\n XYZ_D65\n );\n\n const SRGB = CalRGBCS.#tempConvertMatrix1;\n this.#matrixProduct(CalRGBCS.#SRGB_D65_XYZ_TO_RGB_MATRIX, XYZ_D65, SRGB);\n\n // Convert the values to rgb range [0, 255].\n dest[destOffset] = this.#sRGBTransferFunction(SRGB[0]) * 255;\n dest[destOffset + 1] = this.#sRGBTransferFunction(SRGB[1]) * 255;\n dest[destOffset + 2] = this.#sRGBTransferFunction(SRGB[2]) * 255;\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n this.#toRgb(src, srcOffset, dest, destOffset, 1);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'CalRGBCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const scale = 1 / ((1 << bits) - 1);\n\n for (let i = 0; i < count; ++i) {\n this.#toRgb(src, srcOffset, dest, destOffset, scale);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n}\n\n/**\n * LabCS: Based on \"PDF Reference, Sixth Ed\", p.250\n *\n * The default color is `new Float32Array([0, 0, 0])`.\n */\nclass LabCS extends ColorSpace {\n constructor(whitePoint, blackPoint, range) {\n super(\"Lab\", 3);\n\n if (!whitePoint) {\n throw new FormatError(\n \"WhitePoint missing - required for color space Lab\"\n );\n }\n // Translate args to spec variables\n [this.XW, this.YW, this.ZW] = whitePoint;\n [this.amin, this.amax, this.bmin, this.bmax] = range || [\n -100, 100, -100, 100,\n ];\n\n // These are here just for completeness - the spec doesn't offer any\n // formulas that use BlackPoint in Lab\n [this.XB, this.YB, this.ZB] = blackPoint || [0, 0, 0];\n\n // Validate vars as per spec\n if (this.XW < 0 || this.ZW < 0 || this.YW !== 1) {\n throw new FormatError(\n \"Invalid WhitePoint components, no fallback available\"\n );\n }\n\n if (this.XB < 0 || this.YB < 0 || this.ZB < 0) {\n info(\"Invalid BlackPoint, falling back to default\");\n this.XB = this.YB = this.ZB = 0;\n }\n\n if (this.amin > this.amax || this.bmin > this.bmax) {\n info(\"Invalid Range, falling back to defaults\");\n this.amin = -100;\n this.amax = 100;\n this.bmin = -100;\n this.bmax = 100;\n }\n }\n\n // Function g(x) from spec\n #fn_g(x) {\n return x >= 6 / 29 ? x ** 3 : (108 / 841) * (x - 4 / 29);\n }\n\n #decode(value, high1, low2, high2) {\n return low2 + (value * (high2 - low2)) / high1;\n }\n\n // If decoding is needed maxVal should be 2^bits per component - 1.\n #toRgb(src, srcOffset, maxVal, dest, destOffset) {\n // XXX: Lab input is in the range of [0, 100], [amin, amax], [bmin, bmax]\n // not the usual [0, 1]. If a command like setFillColor is used the src\n // values will already be within the correct range. However, if we are\n // converting an image we have to map the values to the correct range given\n // above.\n // Ls,as,bs <---> L*,a*,b* in the spec\n let Ls = src[srcOffset];\n let as = src[srcOffset + 1];\n let bs = src[srcOffset + 2];\n if (maxVal !== false) {\n Ls = this.#decode(Ls, maxVal, 0, 100);\n as = this.#decode(as, maxVal, this.amin, this.amax);\n bs = this.#decode(bs, maxVal, this.bmin, this.bmax);\n }\n\n // Adjust limits of 'as' and 'bs'\n if (as > this.amax) {\n as = this.amax;\n } else if (as < this.amin) {\n as = this.amin;\n }\n if (bs > this.bmax) {\n bs = this.bmax;\n } else if (bs < this.bmin) {\n bs = this.bmin;\n }\n\n // Computes intermediate variables X,Y,Z as per spec\n const M = (Ls + 16) / 116;\n const L = M + as / 500;\n const N = M - bs / 200;\n\n const X = this.XW * this.#fn_g(L);\n const Y = this.YW * this.#fn_g(M);\n const Z = this.ZW * this.#fn_g(N);\n\n let r, g, b;\n // Using different conversions for D50 and D65 white points,\n // per http://www.color.org/srgb.pdf\n if (this.ZW < 1) {\n // Assuming D50 (X=0.9642, Y=1.00, Z=0.8249)\n r = X * 3.1339 + Y * -1.617 + Z * -0.4906;\n g = X * -0.9785 + Y * 1.916 + Z * 0.0333;\n b = X * 0.072 + Y * -0.229 + Z * 1.4057;\n } else {\n // Assuming D65 (X=0.9505, Y=1.00, Z=1.0888)\n r = X * 3.2406 + Y * -1.5372 + Z * -0.4986;\n g = X * -0.9689 + Y * 1.8758 + Z * 0.0415;\n b = X * 0.0557 + Y * -0.204 + Z * 1.057;\n }\n // Convert the color values to the [0,255] range (clamping is automatic).\n dest[destOffset] = Math.sqrt(r) * 255;\n dest[destOffset + 1] = Math.sqrt(g) * 255;\n dest[destOffset + 2] = Math.sqrt(b) * 255;\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbItem: Unsupported \"dest\" type.'\n );\n }\n this.#toRgb(src, srcOffset, false, dest, destOffset);\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n dest instanceof Uint8ClampedArray,\n 'LabCS.getRgbBuffer: Unsupported \"dest\" type.'\n );\n }\n const maxVal = (1 << bits) - 1;\n for (let i = 0; i < count; i++) {\n this.#toRgb(src, srcOffset, maxVal, dest, destOffset);\n srcOffset += 3;\n destOffset += 3 + alpha01;\n }\n }\n\n isDefaultDecode(decode, bpc) {\n // XXX: Decoding is handled with the lab conversion because of the strange\n // ranges that are used.\n return true;\n }\n\n get usesZeroToOneRange() {\n return shadow(this, \"usesZeroToOneRange\", false);\n }\n}\n\nexport {\n AlternateCS,\n CalGrayCS,\n CalRGBCS,\n ColorSpace,\n DeviceCmykCS,\n DeviceGrayCS,\n DeviceRgbaCS,\n DeviceRgbCS,\n IndexedCS,\n LabCS,\n PatternCS,\n};\n","/* Copyright 2025 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// Alpha lives in the high byte of a pixel on a little-endian host and in the\n// low byte on a big-endian one.\nconst ALPHA_MASK =\n new Uint8Array(new Uint32Array([1]).buffer)[0] === 1 ? 0xff000000 : 0x000000ff;\nconst RGB_MASK = ~ALPHA_MASK;\n\nclass QCMS {\n static #memoryArray = null;\n\n static _memory = null;\n\n // Where the next `qcms_convert_array` result should land.\n static _destBuffer = null;\n\n static _destOffset = 0;\n\n // Set when the destination is RGBA and its alpha channel already holds\n // something worth keeping, which is the case whenever the image has an\n // /SMask: `fillOpacity` has run by then. The Wasm side does not know about\n // that, so it always fills alpha in, and the bytes are merged here instead of\n // copied wholesale.\n static _keepAlpha = false;\n\n static get _memoryArray() {\n const array = this.#memoryArray;\n if (array?.byteLength) {\n return array;\n }\n return (this.#memoryArray = new Uint8Array(this._memory.buffer));\n }\n}\n\nfunction copy_result(ptr, len) {\n // This function is called from the wasm module (it's an external\n // \"C\" function). Its goal is to copy the result from the wasm memory\n // to the destination buffer without any intermediate copies. The wasm side\n // has already laid the result out the way the caller asked for it, so this is\n // one bulk copy unless the destination's alpha has to survive.\n const { _destBuffer, _destOffset, _keepAlpha, _memoryArray } = QCMS;\n if (!_keepAlpha) {\n _destBuffer.set(_memoryArray.subarray(ptr, ptr + len), _destOffset);\n return;\n }\n const count = len >> 2;\n const destStart = _destBuffer.byteOffset + _destOffset;\n if (((destStart | ptr) & 3) === 0) {\n // Both sides are pixel-aligned, so RGB can be merged a whole pixel at a\n // time. `len` is a multiple of 4 here: the wasm side wrote RGBA.\n const dest32 = new Uint32Array(_destBuffer.buffer, destStart, count);\n const src32 = new Uint32Array(QCMS._memory.buffer, ptr, count);\n for (let i = 0; i < count; i++) {\n dest32[i] = (dest32[i] & ALPHA_MASK) | (src32[i] & RGB_MASK);\n }\n return;\n }\n for (let i = ptr, ii = ptr + len, j = _destOffset; i < ii; i += 4, j += 4) {\n _destBuffer[j] = _memoryArray[i];\n _destBuffer[j + 1] = _memoryArray[i + 1];\n _destBuffer[j + 2] = _memoryArray[i + 2];\n }\n}\n\nexport { copy_result, QCMS };\n","/* THIS FILE IS GENERATED - DO NOT EDIT */\nimport { copy_result } from './qcms_utils.js';\n\n\n/**\n * @enum {0 | 1 | 2 | 3 | 4 | 5}\n */\nexport const DataType = Object.freeze({\n RGB8: 0, \"0\": \"RGB8\",\n RGBA8: 1, \"1\": \"RGBA8\",\n BGRA8: 2, \"2\": \"BGRA8\",\n Gray8: 3, \"3\": \"Gray8\",\n GrayA8: 4, \"4\": \"GrayA8\",\n CMYK: 5, \"5\": \"CMYK\",\n});\n\n/**\n * @enum {0 | 1 | 2 | 3}\n */\nexport const Intent = Object.freeze({\n Perceptual: 0, \"0\": \"Perceptual\",\n RelativeColorimetric: 1, \"1\": \"RelativeColorimetric\",\n Saturation: 2, \"2\": \"Saturation\",\n AbsoluteColorimetric: 3, \"3\": \"AbsoluteColorimetric\",\n});\n\n/**\n * Converts `src` and hands the result to `copy_result`, laid out as RGB, or as\n * RGBA with an opaque alpha when `add_alpha` is set.\n *\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {Uint8Array} src\n * @param {boolean} add_alpha\n */\nexport function qcms_convert_array(transformer, src, add_alpha) {\n const ptr0 = passArray8ToWasm0(src, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.qcms_convert_array(transformer, ptr0, len0, add_alpha);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src1\n * @param {number} src2\n * @param {number} src3\n * @param {number} src4\n * @returns {number}\n */\nexport function qcms_convert_four(transformer, src1, src2, src3, src4) {\n const ret = wasm.qcms_convert_four(transformer, src1, src2, src3, src4);\n return ret >>> 0;\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src\n * @returns {number}\n */\nexport function qcms_convert_one(transformer, src) {\n const ret = wasm.qcms_convert_one(transformer, src);\n return ret >>> 0;\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n * @param {number} src1\n * @param {number} src2\n * @param {number} src3\n * @returns {number}\n */\nexport function qcms_convert_three(transformer, src1, src2, src3) {\n const ret = wasm.qcms_convert_three(transformer, src1, src2, src3);\n return ret >>> 0;\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {number} transformer\n */\nexport function qcms_drop_transformer(transformer) {\n wasm.qcms_drop_transformer(transformer);\n}\n\n/**\n * # Safety\n *\n * This function is called directly from JavaScript.\n * @param {Uint8Array} mem\n * @param {DataType} in_type\n * @param {Intent} intent\n * @returns {number}\n */\nexport function qcms_transformer_from_memory(mem, in_type, intent) {\n const ptr0 = passArray8ToWasm0(mem, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.qcms_transformer_from_memory(ptr0, len0, in_type, intent);\n return ret >>> 0;\n}\nfunction __wbg_get_imports() {\n const import0 = {\n __proto__: null,\n __wbg___wbindgen_throw_344f42d3211c4765: function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n },\n __wbg_copy_result_0d15f3bf9d9012ae: function(arg0, arg1) {\n copy_result(arg0 >>> 0, arg1 >>> 0);\n },\n __wbindgen_init_externref_table: function() {\n const table = wasm.__wbindgen_externrefs;\n const offset = table.grow(4);\n table.set(0, undefined);\n table.set(offset + 0, undefined);\n table.set(offset + 1, null);\n table.set(offset + 2, true);\n table.set(offset + 3, false);\n },\n };\n return {\n __proto__: null,\n \"./qcms_bg.js\": import0,\n };\n}\n\nfunction getStringFromWasm0(ptr, len) {\n return decodeText(ptr >>> 0, len);\n}\n\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nlet cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nlet wasmModule, wasmInstance, wasm;\nfunction __wbg_finalize_init(instance, module) {\n wasmInstance = instance;\n wasm = instance.exports;\n wasmModule = module;\n cachedUint8ArrayMemory0 = null;\n wasm.__wbindgen_start();\n return wasm;\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && expectedResponseType(module.type);\n\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else { throw e; }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n } else {\n return instance;\n }\n }\n\n function expectedResponseType(type) {\n switch (type) {\n case 'basic': case 'cors': case 'default': return true;\n }\n return false;\n }\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (module !== undefined) {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({module} = module)\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n }\n }\n\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (module_or_path !== undefined) {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({module_or_path} = module_or_path)\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n }\n }\n\n\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync, __wbg_init as default };\n","/* Copyright 2025 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 DataType,\n initSync,\n Intent,\n qcms_convert_array,\n qcms_convert_four,\n qcms_convert_one,\n qcms_convert_three,\n qcms_drop_transformer,\n qcms_transformer_from_memory,\n} from \"../../external/qcms/qcms.js\";\nimport { shadow, Util, warn } from \"../shared/util.js\";\nimport { ColorSpace } from \"./colorspace.js\";\nimport { QCMS } from \"../../external/qcms/qcms_utils.js\";\n\nfunction fetchSync(url) {\n // Parsing and using color spaces is still synchronous,\n // so we must load the wasm module synchronously.\n // TODO: Make the color space stuff asynchronous and use fetch.\n const xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return xhr.response;\n}\n\nclass IccColorSpace extends ColorSpace {\n #transformer;\n\n #convertPixel;\n\n static #useWasm = true;\n\n static #wasmUrl = null;\n\n static #finalizer = null;\n\n constructor(iccProfile, name, numComps) {\n if (!IccColorSpace.isUsable) {\n throw new Error(\"No ICC color space support\");\n }\n\n super(name, numComps);\n\n let inType;\n switch (numComps) {\n case 1:\n inType = DataType.Gray8;\n this.#convertPixel = (src, srcOffset) =>\n qcms_convert_one(this.#transformer, src[srcOffset] * 255);\n break;\n case 3:\n inType = DataType.RGB8;\n this.#convertPixel = (src, srcOffset) =>\n qcms_convert_three(\n this.#transformer,\n src[srcOffset] * 255,\n src[srcOffset + 1] * 255,\n src[srcOffset + 2] * 255\n );\n break;\n case 4:\n inType = DataType.CMYK;\n this.#convertPixel = (src, srcOffset) =>\n qcms_convert_four(\n this.#transformer,\n src[srcOffset] * 255,\n src[srcOffset + 1] * 255,\n src[srcOffset + 2] * 255,\n src[srcOffset + 3] * 255\n );\n break;\n default:\n throw new Error(`Unsupported number of components: ${numComps}`);\n }\n this.#transformer = qcms_transformer_from_memory(\n iccProfile,\n inType,\n Intent.Perceptual\n );\n if (!this.#transformer) {\n throw new Error(\"Failed to create ICC color space\");\n }\n IccColorSpace.#finalizer ||= new FinalizationRegistry(transformer => {\n qcms_drop_transformer(transformer);\n });\n IccColorSpace.#finalizer.register(this, this.#transformer);\n }\n\n getRgbHex(src, srcOffset) {\n const color = this.#convertPixel(src, srcOffset);\n return Util.makeHexColor(color >> 16, (color >> 8) & 0xff, color & 0xff);\n }\n\n getRgbItem(src, srcOffset, dest, destOffset) {\n const color = this.#convertPixel(src, srcOffset);\n dest[destOffset] = color >> 16;\n dest[destOffset + 1] = (color >> 8) & 0xff;\n dest[destOffset + 2] = color & 0xff;\n }\n\n getRgbItems(src, count, dest, destOffset, alpha01) {\n const { numComps } = this;\n const length = count * numComps;\n const scaled = new Uint8Array(length);\n // Uint8Array matches the truncation and wrapping of the scalar Wasm calls.\n for (let i = 0; i < length; i++) {\n scaled[i] = src[i] * 255;\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n // `scaled` is freshly allocated, so unlike in getRgbBuffer it can never\n // alias `dest`: an RGBA destination always has an alpha channel to keep.\n QCMS._keepAlpha = alpha01 === 1;\n qcms_convert_array(this.#transformer, scaled, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n\n getRgbBuffer(src, srcOffset, count, dest, destOffset, bits, alpha01) {\n src = src.subarray(srcOffset, srcOffset + count * this.numComps);\n if (bits !== 8) {\n const scale = 255 / ((1 << bits) - 1);\n for (let i = 0, ii = src.length; i < ii; i++) {\n src[i] *= scale;\n }\n }\n QCMS._destBuffer = dest;\n QCMS._destOffset = destOffset;\n // The wasm side always fills alpha in, so say when the destination's own\n // alpha must survive: an /SMask has been decoded into it by now.\n QCMS._keepAlpha = alpha01 === 1 && dest.buffer !== src.buffer;\n qcms_convert_array(this.#transformer, src, alpha01 === 1);\n QCMS._destBuffer = null;\n }\n\n static setOptions({ useWasm, useWorkerFetch, wasmUrl }) {\n if (!useWorkerFetch) {\n this.#useWasm = false;\n return;\n }\n this.#useWasm = useWasm;\n this.#wasmUrl = wasmUrl;\n }\n\n static get isUsable() {\n let isUsable = false;\n if (this.#useWasm) {\n if (this.#wasmUrl) {\n try {\n this._module = initSync({\n module: fetchSync(`${this.#wasmUrl}qcms_bg.wasm`),\n });\n isUsable = !!this._module;\n QCMS._memory = this._module.memory;\n } catch (e) {\n warn(`ICCBased color space: \"${e}\".`);\n }\n } else {\n warn(\"No ICC color space support due to missing `wasmUrl` API option\");\n }\n }\n\n return shadow(this, \"isUsable\", isUsable);\n }\n}\n\nclass CmykICCBasedCS extends IccColorSpace {\n static #iccUrl;\n\n constructor() {\n const iccProfile = new Uint8Array(\n fetchSync(`${CmykICCBasedCS.#iccUrl}CGATS001Compat-v2-micro.icc`)\n );\n super(iccProfile, \"DeviceCMYK\", 4);\n }\n\n static setOptions({ iccUrl }) {\n this.#iccUrl = iccUrl;\n }\n\n static get isUsable() {\n let isUsable = false;\n if (IccColorSpace.isUsable) {\n if (this.#iccUrl) {\n isUsable = true;\n } else {\n warn(\"No CMYK ICC profile support due to missing `iccUrl` API option\");\n }\n }\n\n return shadow(this, \"isUsable\", isUsable);\n }\n}\n\nexport { CmykICCBasedCS, IccColorSpace };\n","/* Copyright 2024 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 AlternateCS,\n CalGrayCS,\n CalRGBCS,\n DeviceCmykCS,\n DeviceGrayCS,\n DeviceRgbaCS,\n DeviceRgbCS,\n IndexedCS,\n LabCS,\n PatternCS,\n} from \"./colorspace.js\";\nimport { CmykICCBasedCS, IccColorSpace } from \"./icc_colorspace.js\";\nimport { Dict, Name, Ref } from \"./primitives.js\";\nimport { shadow, unreachable, warn } from \"../shared/util.js\";\nimport { MathClamp } from \"../shared/math_clamp.js\";\nimport { MissingDataException } from \"./core_utils.js\";\n\nclass ColorSpaceUtils {\n static parse({\n cs,\n xref,\n resources = null,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache,\n asyncIfNotCached = false,\n }) {\n if (\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n (!globalColorSpaceCache || !localColorSpaceCache)\n ) {\n unreachable(\n 'ColorSpaceUtils.parse - expected \"globalColorSpaceCache\"/\"localColorSpaceCache\" argument.'\n );\n }\n const options = {\n xref,\n resources,\n pdfFunctionFactory,\n globalColorSpaceCache,\n localColorSpaceCache,\n };\n let csName, csRef, parsedCS;\n\n // Check if the ColorSpace is cached first, to avoid re-parsing it.\n if (cs instanceof Ref) {\n csRef = cs;\n\n const cachedCS =\n globalColorSpaceCache.getByRef(csRef) ||\n localColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n cs = xref.fetch(cs);\n }\n if (cs instanceof Name) {\n csName = cs.name;\n\n const cachedCS = localColorSpaceCache.getByName(csName);\n if (cachedCS) {\n return cachedCS;\n }\n }\n\n try {\n parsedCS = this.#parse(cs, options);\n } catch (ex) {\n if (asyncIfNotCached && !(ex instanceof MissingDataException)) {\n return Promise.reject(ex);\n }\n throw ex;\n }\n\n // Attempt to cache the parsed ColorSpace, by name and/or reference.\n if (csName || csRef) {\n localColorSpaceCache.set(csName, csRef, parsedCS);\n\n if (csRef) {\n globalColorSpaceCache.set(/* name = */ null, csRef, parsedCS);\n }\n }\n return asyncIfNotCached ? Promise.resolve(parsedCS) : parsedCS;\n }\n\n /**\n * NOTE: This method should *only* be invoked from `this.#parse`,\n * when parsing \"sub\" ColorSpaces.\n */\n static #subParse(cs, options) {\n const { globalColorSpaceCache } = options;\n let csRef;\n\n // Check if the ColorSpace is cached first, to avoid re-parsing it.\n if (cs instanceof Ref) {\n csRef = cs;\n\n const cachedCS = globalColorSpaceCache.getByRef(csRef);\n if (cachedCS) {\n return cachedCS;\n }\n }\n const parsedCS = this.#parse(cs, options);\n\n // Only cache the parsed ColorSpace globally, by reference.\n if (csRef) {\n globalColorSpaceCache.set(/* name = */ null, csRef, parsedCS);\n }\n return parsedCS;\n }\n\n static #parse(cs, options) {\n const { xref, resources, pdfFunctionFactory, globalColorSpaceCache } =\n options;\n\n cs = xref.fetchIfRef(cs);\n if (cs instanceof Name) {\n switch (cs.name) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"DeviceRGBA\":\n return this.rgba;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"Pattern\":\n return new PatternCS(/* baseCS = */ null);\n default:\n if (resources instanceof Dict) {\n const colorSpaces = resources.get(\"ColorSpace\");\n if (colorSpaces instanceof Dict) {\n const resourcesCS = colorSpaces.get(cs.name);\n if (resourcesCS) {\n if (resourcesCS instanceof Name) {\n return this.#parse(resourcesCS, options);\n }\n cs = resourcesCS;\n break;\n }\n }\n }\n // Fallback to the default gray color space.\n warn(`Unrecognized ColorSpace: ${cs.name}`);\n return this.gray;\n }\n }\n if (Array.isArray(cs)) {\n const mode = xref.fetchIfRef(cs[0]).name;\n let params, numComps, baseCS, whitePoint, blackPoint, gamma;\n\n switch (mode) {\n case \"G\":\n case \"DeviceGray\":\n return this.gray;\n case \"RGB\":\n case \"DeviceRGB\":\n return this.rgb;\n case \"CMYK\":\n case \"DeviceCMYK\":\n return this.cmyk;\n case \"CalGray\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.get(\"Gamma\");\n return new CalGrayCS(whitePoint, blackPoint, gamma);\n case \"CalRGB\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n gamma = params.getArray(\"Gamma\");\n const matrix = params.getArray(\"Matrix\");\n return new CalRGBCS(whitePoint, blackPoint, gamma, matrix);\n case \"ICCBased\":\n const isRef = cs[1] instanceof Ref;\n if (isRef) {\n const cachedCS = globalColorSpaceCache.getByRef(cs[1]);\n if (cachedCS) {\n return cachedCS;\n }\n }\n\n const stream = xref.fetchIfRef(cs[1]);\n const dict = stream.dict;\n numComps = dict.get(\"N\");\n\n if (IccColorSpace.isUsable) {\n try {\n const iccCS = new IccColorSpace(\n stream.getBytes(),\n \"ICCBased\",\n numComps\n );\n if (isRef) {\n globalColorSpaceCache.set(/* name = */ null, cs[1], iccCS);\n }\n return iccCS;\n } catch (ex) {\n if (ex instanceof MissingDataException) {\n throw ex;\n }\n warn(`ICCBased color space (${cs[1]}): \"${ex}\".`);\n }\n }\n\n const altRaw = dict.getRaw(\"Alternate\");\n if (altRaw) {\n const altCS = this.#subParse(altRaw, options);\n // Ensure that the number of components are correct,\n // and also (indirectly) that it is not a PatternCS.\n if (altCS.numComps === numComps) {\n return altCS;\n }\n warn(\"ICCBased color space: Ignoring incorrect /Alternate entry.\");\n }\n if (numComps === 1) {\n return this.gray;\n } else if (numComps === 3) {\n return this.rgb;\n } else if (numComps === 4) {\n return this.cmyk;\n }\n break;\n case \"Pattern\":\n baseCS = cs[1] || null;\n baseCS &&= this.#subParse(baseCS, options);\n return new PatternCS(baseCS);\n case \"I\":\n case \"Indexed\":\n baseCS = this.#subParse(cs[1], options);\n const hiVal = MathClamp(xref.fetchIfRef(cs[2]), 0, 255);\n const lookup = xref.fetchIfRef(cs[3]);\n return new IndexedCS(baseCS, hiVal, lookup);\n case \"Separation\":\n case \"DeviceN\":\n const name = xref.fetchIfRef(cs[1]);\n numComps = Array.isArray(name) ? name.length : 1;\n baseCS = this.#subParse(cs[2], options);\n const tintFn = pdfFunctionFactory.create(cs[3]);\n return new AlternateCS(numComps, baseCS, tintFn);\n case \"Lab\":\n params = xref.fetchIfRef(cs[1]);\n whitePoint = params.getArray(\"WhitePoint\");\n blackPoint = params.getArray(\"BlackPoint\");\n const range = params.getArray(\"Range\");\n return new LabCS(whitePoint, blackPoint, range);\n default:\n // Fallback to the default gray color space.\n warn(`Unimplemented ColorSpace object: ${mode}`);\n return this.gray;\n }\n }\n // Fallback to the default gray color space.\n warn(`Unrecognized ColorSpace object: ${cs}`);\n return this.gray;\n }\n\n static get gray() {\n return shadow(this, \"gray\", new DeviceGrayCS());\n }\n\n static get rgb() {\n return shadow(this, \"rgb\", new DeviceRgbCS());\n }\n\n static get rgba() {\n return shadow(this, \"rgba\", new DeviceRgbaCS());\n }\n\n static get cmyk() {\n if (CmykICCBasedCS.isUsable) {\n try {\n return shadow(this, \"cmyk\", new CmykICCBasedCS());\n } catch {\n warn(\"CMYK fallback: DeviceCMYK\");\n }\n }\n return shadow(this, \"cmyk\", new DeviceCmykCS());\n }\n}\n\nexport { ColorSpaceUtils };\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, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n\n return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false,\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode\n ? [nonBlackColor, black]\n : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const xorMask = zeroMapping ^ oneMapping;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n\n for (let i = 0; i < height; ++i) {\n for (\n const max = srcPos + widthInSource;\n srcPos < max;\n ++srcPos, destPos += 8\n ) {\n const elem = src[srcPos];\n dest[destPos] = zeroMapping ^ (-((elem >> 7) & 1) & xorMask);\n dest[destPos + 1] = zeroMapping ^ (-((elem >> 6) & 1) & xorMask);\n dest[destPos + 2] = zeroMapping ^ (-((elem >> 5) & 1) & xorMask);\n dest[destPos + 3] = zeroMapping ^ (-((elem >> 4) & 1) & xorMask);\n dest[destPos + 4] = zeroMapping ^ (-((elem >> 3) & 1) & xorMask);\n dest[destPos + 5] = zeroMapping ^ (-((elem >> 2) & 1) & xorMask);\n dest[destPos + 6] = zeroMapping ^ (-((elem >> 1) & 1) & xorMask);\n dest[destPos + 7] = zeroMapping ^ (-(elem & 1) & xorMask);\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; ++j, ++destPos) {\n dest[destPos] = zeroMapping ^ (-((elem >> (7 - j)) & 1) & xorMask);\n }\n }\n\n return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n}) {\n let i = 0;\n const len = width * height * 3;\n const len32 = len >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n const alphaMask = FeatureTest.isLittleEndian ? 0xff000000 : 0xff;\n\n if (FeatureTest.isLittleEndian) {\n // It's a way faster to do the shuffle manually instead of working\n // component by component with some Uint8 arrays.\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i], // R2B1G1R1\n s2 = src32[i + 1], // G3R3B2G2\n s3 = src32[i + 2]; // B4G4R4B3\n\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | alphaMask;\n dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | alphaMask;\n dest[destPos + 3] = (s3 >>> 8) | alphaMask;\n }\n\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] =\n src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | alphaMask;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i], // R1G1B1R2\n s2 = src32[i + 1], // G2B2R3G3\n s3 = src32[i + 2]; // B3R4G4B4\n\n dest[destPos] = s1 | alphaMask;\n dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | alphaMask;\n dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | alphaMask;\n dest[destPos + 3] = (s3 << 8) | alphaMask;\n }\n\n for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n dest[destPos++] =\n (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | alphaMask;\n }\n }\n\n return { srcPos: srcPos + len, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x10101) | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n }\n }\n}\n\nexport {\n convertBlackAndWhiteToRGBA,\n convertRGBToRGBA,\n convertToRGBA,\n grayToRGBA,\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\nimport { BaseException, warn } from \"../shared/util.js\";\nimport { ColorSpaceUtils } from \"./colorspace_utils.js\";\nimport { DeviceCmykCS } from \"./colorspace.js\";\nimport { grayToRGBA } from \"../shared/image_utils.js\";\n\nclass JpegError extends BaseException {\n constructor(msg) {\n super(msg, \"JpegError\");\n }\n}\n\nclass DNLMarkerError extends BaseException {\n constructor(message, scanLines) {\n super(message, \"DNLMarkerError\");\n this.scanLines = scanLines;\n }\n}\n\nclass EOIMarkerError extends BaseException {\n constructor(msg) {\n super(msg, \"EOIMarkerError\");\n }\n}\n\n/**\n * This code was forked from https://github.com/notmasteryet/jpgjs.\n * The original version was created by GitHub user notmasteryet.\n *\n * - The JPEG specification can be found in the ITU CCITT Recommendation T.81\n * (www.w3.org/Graphics/JPEG/itu-t81.pdf)\n * - The JFIF specification can be found in the JPEG File Interchange Format\n * (www.w3.org/Graphics/JPEG/jfif3.pdf)\n * - The Adobe Application-Specific JPEG markers in the\n * Supporting the DCT Filters in PostScript Level 2, Technical Note #5116\n * (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)\n */\n\n// prettier-ignore\nconst dctZigZag = new Uint8Array([\n 0,\n 1, 8,\n 16, 9, 2,\n 3, 10, 17, 24,\n 32, 25, 18, 11, 4,\n 5, 12, 19, 26, 33, 40,\n 48, 41, 34, 27, 20, 13, 6,\n 7, 14, 21, 28, 35, 42, 49, 56,\n 57, 50, 43, 36, 29, 22, 15,\n 23, 30, 37, 44, 51, 58,\n 59, 52, 45, 38, 31,\n 39, 46, 53, 60,\n 61, 54, 47,\n 55, 62,\n 63\n]);\n\nconst dctCos1 = 4017; // cos(pi/16)\nconst dctSin1 = 799; // sin(pi/16)\nconst dctCos3 = 3406; // cos(3*pi/16)\nconst dctSin3 = 2276; // sin(3*pi/16)\nconst dctCos6 = 1567; // cos(6*pi/16)\nconst dctSin6 = 3784; // sin(6*pi/16)\nconst dctSqrt2 = 5793; // sqrt(2)\nconst dctSqrt1d2 = 2896; // sqrt(2) / 2\n\nfunction buildHuffmanTable(codeLengths, values) {\n let k = 0,\n i,\n j,\n length = 16;\n while (length > 0 && !codeLengths[length - 1]) {\n length--;\n }\n const code = [{ children: [], index: 0 }];\n let p = code[0],\n q;\n for (i = 0; i < length; i++) {\n for (j = 0; j < codeLengths[i]; j++) {\n p = code.pop();\n p.children[p.index] = values[k];\n while (p.index > 0) {\n p = code.pop();\n }\n p.index++;\n code.push(p);\n while (code.length <= i) {\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n k++;\n }\n if (i + 1 < length) {\n // p here points to last code\n code.push((q = { children: [], index: 0 }));\n p.children[p.index] = q.children;\n p = q;\n }\n }\n return code[0].children;\n}\n\nfunction getBlockBufferOffset(component, row, col) {\n return 64 * ((component.blocksPerLine + 1) * row + col);\n}\n\nfunction decodeScan(\n data,\n view,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successivePrev,\n successive,\n parseDNLMarker = false\n) {\n const mcusPerLine = frame.mcusPerLine;\n const progressive = frame.progressive;\n\n const startOffset = offset;\n let bitsData = 0,\n bitsCount = 0;\n\n function readBit() {\n if (bitsCount > 0) {\n bitsCount--;\n return (bitsData >> bitsCount) & 1;\n }\n bitsData = data[offset++];\n if (bitsData === 0xff) {\n const nextByte = data[offset++];\n if (nextByte) {\n if (nextByte === /* DNL = */ 0xdc && parseDNLMarker) {\n offset += 2; // Skip marker length.\n\n const scanLines = view.getUint16(offset);\n offset += 2;\n if (scanLines > 0 && scanLines !== frame.scanLines) {\n throw new DNLMarkerError(\n \"Found DNL marker (0xFFDC) while parsing scan data\",\n scanLines\n );\n }\n } else if (nextByte === /* EOI = */ 0xd9) {\n if (parseDNLMarker) {\n // NOTE: only 8-bit JPEG images are supported in this decoder.\n const maybeScanLines = blockRow * (frame.precision === 8 ? 8 : 0);\n // Heuristic to attempt to handle corrupt JPEG images with too\n // large `scanLines` parameter, by falling back to the currently\n // parsed number of scanLines when it's at least (approximately)\n // one \"half\" order of magnitude smaller than expected (fixes\n // issue10880.pdf, issue10989.pdf, issue15492.pdf).\n if (\n maybeScanLines > 0 &&\n Math.round(frame.scanLines / maybeScanLines) >= 5\n ) {\n throw new DNLMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data, \" +\n \"possibly caused by incorrect `scanLines` parameter\",\n maybeScanLines\n );\n }\n }\n throw new EOIMarkerError(\n \"Found EOI marker (0xFFD9) while parsing scan data\"\n );\n }\n throw new JpegError(\n `unexpected marker ${((bitsData << 8) | nextByte).toString(16)}`\n );\n }\n // unstuff 0\n }\n bitsCount = 7;\n return bitsData >>> 7;\n }\n\n function decodeHuffman(tree) {\n let node = tree;\n while (true) {\n node = node[readBit()];\n switch (typeof node) {\n case \"number\":\n return node;\n case \"object\":\n continue;\n }\n throw new JpegError(\"invalid huffman sequence\");\n }\n }\n\n function receive(length) {\n let n = 0;\n while (length > 0) {\n n = (n << 1) | readBit();\n length--;\n }\n return n;\n }\n\n function receiveAndExtend(length) {\n if (length === 1) {\n return readBit() === 1 ? 1 : -1;\n }\n const n = receive(length);\n if (n >= 1 << (length - 1)) {\n return n;\n }\n return n + (-1 << length) + 1;\n }\n\n function decodeBaseline(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t);\n component.blockData[blockOffset] = component.pred += diff;\n let k = 1;\n while (k < 64) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] = receiveAndExtend(s);\n k++;\n }\n }\n\n function decodeDCFirst(component, blockOffset) {\n const t = decodeHuffman(component.huffmanTableDC);\n const diff = t === 0 ? 0 : receiveAndExtend(t) << successive;\n component.blockData[blockOffset] = component.pred += diff;\n }\n\n function decodeDCSuccessive(component, blockOffset) {\n component.blockData[blockOffset] |= readBit() << successive;\n }\n\n let eobrun = 0;\n function decodeACFirst(component, blockOffset) {\n if (eobrun > 0) {\n eobrun--;\n return;\n }\n let k = spectralStart;\n const e = spectralEnd;\n while (k <= e) {\n const rs = decodeHuffman(component.huffmanTableAC);\n const s = rs & 15,\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r) - 1;\n break;\n }\n k += 16;\n continue;\n }\n k += r;\n const z = dctZigZag[k];\n component.blockData[blockOffset + z] =\n receiveAndExtend(s) * (1 << successive);\n k++;\n }\n }\n\n let successiveACState = 0,\n successiveACNextValue;\n function decodeACSuccessive(component, blockOffset) {\n let k = spectralStart;\n const e = spectralEnd;\n let r = 0;\n let s;\n let rs;\n while (k <= e) {\n const offsetZ = blockOffset + dctZigZag[k];\n const sign = component.blockData[offsetZ] < 0 ? -1 : 1;\n switch (successiveACState) {\n case 0: // initial state\n rs = decodeHuffman(component.huffmanTableAC);\n s = rs & 15;\n r = rs >> 4;\n if (s === 0) {\n if (r < 15) {\n eobrun = receive(r) + (1 << r);\n successiveACState = 4;\n } else {\n r = 16;\n successiveACState = 1;\n }\n } else {\n if (s !== 1) {\n throw new JpegError(\"invalid ACn encoding\");\n }\n successiveACNextValue = receiveAndExtend(s);\n successiveACState = r ? 2 : 3;\n }\n continue;\n case 1: // skipping r zero items\n case 2:\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n r--;\n if (r === 0) {\n successiveACState = successiveACState === 2 ? 3 : 0;\n }\n }\n break;\n case 3: // set value for a zero item\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n } else {\n component.blockData[offsetZ] = successiveACNextValue << successive;\n successiveACState = 0;\n }\n break;\n case 4: // eob\n if (component.blockData[offsetZ]) {\n component.blockData[offsetZ] += sign * (readBit() << successive);\n }\n break;\n }\n k++;\n }\n if (successiveACState === 4) {\n eobrun--;\n if (eobrun === 0) {\n successiveACState = 0;\n }\n }\n }\n\n let blockRow = 0;\n function decodeMcu(component, decode, mcu, row, col) {\n const mcuRow = (mcu / mcusPerLine) | 0;\n const mcuCol = mcu % mcusPerLine;\n blockRow = mcuRow * component.v + row;\n const blockCol = mcuCol * component.h + col;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n function decodeBlock(component, decode, mcu) {\n blockRow = (mcu / component.blocksPerLine) | 0;\n const blockCol = mcu % component.blocksPerLine;\n const blockOffset = getBlockBufferOffset(component, blockRow, blockCol);\n decode(component, blockOffset);\n }\n\n const componentsLength = components.length;\n let component, i, j, k, n;\n let decodeFn;\n if (progressive) {\n if (spectralStart === 0) {\n decodeFn = successivePrev === 0 ? decodeDCFirst : decodeDCSuccessive;\n } else {\n decodeFn = successivePrev === 0 ? decodeACFirst : decodeACSuccessive;\n }\n } else {\n decodeFn = decodeBaseline;\n }\n\n let mcu = 0,\n fileMarker;\n const mcuExpected =\n componentsLength === 1\n ? components[0].blocksPerLine * components[0].blocksPerColumn\n : mcusPerLine * frame.mcusPerColumn;\n\n let h, v;\n while (mcu <= mcuExpected) {\n // reset interval stuff\n const mcuToRead = resetInterval\n ? Math.min(mcuExpected - mcu, resetInterval)\n : mcuExpected;\n\n // The `mcuToRead === 0` case should only occur when all of the expected\n // MCU data has been already parsed, i.e. when `mcu === mcuExpected`, but\n // some corrupt JPEG images contain more data than intended and we thus\n // want to skip over any extra RSTx markers below (fixes issue11794.pdf).\n if (mcuToRead > 0) {\n for (i = 0; i < componentsLength; i++) {\n components[i].pred = 0;\n }\n eobrun = 0;\n\n if (componentsLength === 1) {\n component = components[0];\n for (n = 0; n < mcuToRead; n++) {\n decodeBlock(component, decodeFn, mcu);\n mcu++;\n }\n } else {\n for (n = 0; n < mcuToRead; n++) {\n for (i = 0; i < componentsLength; i++) {\n component = components[i];\n h = component.h;\n v = component.v;\n for (j = 0; j < v; j++) {\n for (k = 0; k < h; k++) {\n decodeMcu(component, decodeFn, mcu, j, k);\n }\n }\n }\n mcu++;\n }\n }\n }\n\n // find marker\n bitsCount = 0;\n fileMarker = findNextFileMarker(data, view, offset);\n if (!fileMarker) {\n break; // Reached the end of the image data without finding any marker.\n }\n if (fileMarker.invalid) {\n // Some bad images seem to pad Scan blocks with e.g. zero bytes, skip\n // past those to attempt to find a valid marker (fixes issue4090.pdf).\n const partialMsg = mcuToRead > 0 ? \"unexpected\" : \"excessive\";\n warn(\n `decodeScan - ${partialMsg} MCU data, current marker is: ${fileMarker.invalid}`\n );\n offset = fileMarker.offset;\n }\n if (fileMarker.marker >= 0xffd0 && fileMarker.marker <= 0xffd7) {\n // RSTx\n offset += 2;\n } else {\n break;\n }\n }\n\n return offset - startOffset;\n}\n\n// A port of poppler's IDCT method which in turn is taken from:\n// Christoph Loeffler, Adriaan Ligtenberg, George S. Moschytz,\n// 'Practical Fast 1-D DCT Algorithms with 11 Multiplications',\n// IEEE Intl. Conf. on Acoustics, Speech & Signal Processing, 1989,\n// 988-991.\nfunction quantizeAndInverse(component, blockBufferOffset, p) {\n const qt = component.quantizationTable,\n blockData = component.blockData;\n let v0, v1, v2, v3, v4, v5, v6, v7;\n let p0, p1, p2, p3, p4, p5, p6, p7;\n let t;\n\n if (!qt) {\n throw new JpegError(\"missing required Quantization Table.\");\n }\n\n // inverse DCT on rows\n for (let row = 0; row < 64; row += 8) {\n // gather block data\n p0 = blockData[blockBufferOffset + row];\n p1 = blockData[blockBufferOffset + row + 1];\n p2 = blockData[blockBufferOffset + row + 2];\n p3 = blockData[blockBufferOffset + row + 3];\n p4 = blockData[blockBufferOffset + row + 4];\n p5 = blockData[blockBufferOffset + row + 5];\n p6 = blockData[blockBufferOffset + row + 6];\n p7 = blockData[blockBufferOffset + row + 7];\n\n // dequant p0\n p0 *= qt[row];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 512) >> 10;\n p[row] = t;\n p[row + 1] = t;\n p[row + 2] = t;\n p[row + 3] = t;\n p[row + 4] = t;\n p[row + 5] = t;\n p[row + 6] = t;\n p[row + 7] = t;\n continue;\n }\n // dequant p1 ... p7\n p1 *= qt[row + 1];\n p2 *= qt[row + 2];\n p3 *= qt[row + 3];\n p4 *= qt[row + 4];\n p5 *= qt[row + 5];\n p6 *= qt[row + 6];\n p7 *= qt[row + 7];\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 128) >> 8;\n v1 = (dctSqrt2 * p4 + 128) >> 8;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 128) >> 8;\n v7 = (dctSqrt1d2 * (p1 + p7) + 128) >> 8;\n v5 = p3 << 4;\n v6 = p5 << 4;\n\n // stage 3\n v0 = (v0 + v1 + 1) >> 1;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 128) >> 8;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 128) >> 8;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p[row] = v0 + v7;\n p[row + 7] = v0 - v7;\n p[row + 1] = v1 + v6;\n p[row + 6] = v1 - v6;\n p[row + 2] = v2 + v5;\n p[row + 5] = v2 - v5;\n p[row + 3] = v3 + v4;\n p[row + 4] = v3 - v4;\n }\n\n // inverse DCT on columns\n for (let col = 0; col < 8; ++col) {\n p0 = p[col];\n p1 = p[col + 8];\n p2 = p[col + 16];\n p3 = p[col + 24];\n p4 = p[col + 32];\n p5 = p[col + 40];\n p6 = p[col + 48];\n p7 = p[col + 56];\n\n // check for all-zero AC coefficients\n if ((p1 | p2 | p3 | p4 | p5 | p6 | p7) === 0) {\n t = (dctSqrt2 * p0 + 8192) >> 14;\n // Convert to 8-bit.\n if (t < -2040) {\n t = 0;\n } else if (t >= 2024) {\n t = 255;\n } else {\n t = (t + 2056) >> 4;\n }\n blockData[blockBufferOffset + col] = t;\n blockData[blockBufferOffset + col + 8] = t;\n blockData[blockBufferOffset + col + 16] = t;\n blockData[blockBufferOffset + col + 24] = t;\n blockData[blockBufferOffset + col + 32] = t;\n blockData[blockBufferOffset + col + 40] = t;\n blockData[blockBufferOffset + col + 48] = t;\n blockData[blockBufferOffset + col + 56] = t;\n continue;\n }\n\n // stage 4\n v0 = (dctSqrt2 * p0 + 2048) >> 12;\n v1 = (dctSqrt2 * p4 + 2048) >> 12;\n v2 = p2;\n v3 = p6;\n v4 = (dctSqrt1d2 * (p1 - p7) + 2048) >> 12;\n v7 = (dctSqrt1d2 * (p1 + p7) + 2048) >> 12;\n v5 = p3;\n v6 = p5;\n\n // stage 3\n // Shift v0 by 128.5 << 5 here, so we don't need to shift p0...p7 when\n // converting to UInt8 range later.\n v0 = ((v0 + v1 + 1) >> 1) + 4112;\n v1 = v0 - v1;\n t = (v2 * dctSin6 + v3 * dctCos6 + 2048) >> 12;\n v2 = (v2 * dctCos6 - v3 * dctSin6 + 2048) >> 12;\n v3 = t;\n v4 = (v4 + v6 + 1) >> 1;\n v6 = v4 - v6;\n v7 = (v7 + v5 + 1) >> 1;\n v5 = v7 - v5;\n\n // stage 2\n v0 = (v0 + v3 + 1) >> 1;\n v3 = v0 - v3;\n v1 = (v1 + v2 + 1) >> 1;\n v2 = v1 - v2;\n t = (v4 * dctSin3 + v7 * dctCos3 + 2048) >> 12;\n v4 = (v4 * dctCos3 - v7 * dctSin3 + 2048) >> 12;\n v7 = t;\n t = (v5 * dctSin1 + v6 * dctCos1 + 2048) >> 12;\n v5 = (v5 * dctCos1 - v6 * dctSin1 + 2048) >> 12;\n v6 = t;\n\n // stage 1\n p0 = v0 + v7;\n p7 = v0 - v7;\n p1 = v1 + v6;\n p6 = v1 - v6;\n p2 = v2 + v5;\n p5 = v2 - v5;\n p3 = v3 + v4;\n p4 = v3 - v4;\n\n // Convert to 8-bit integers.\n if (p0 < 16) {\n p0 = 0;\n } else if (p0 >= 4080) {\n p0 = 255;\n } else {\n p0 >>= 4;\n }\n if (p1 < 16) {\n p1 = 0;\n } else if (p1 >= 4080) {\n p1 = 255;\n } else {\n p1 >>= 4;\n }\n if (p2 < 16) {\n p2 = 0;\n } else if (p2 >= 4080) {\n p2 = 255;\n } else {\n p2 >>= 4;\n }\n if (p3 < 16) {\n p3 = 0;\n } else if (p3 >= 4080) {\n p3 = 255;\n } else {\n p3 >>= 4;\n }\n if (p4 < 16) {\n p4 = 0;\n } else if (p4 >= 4080) {\n p4 = 255;\n } else {\n p4 >>= 4;\n }\n if (p5 < 16) {\n p5 = 0;\n } else if (p5 >= 4080) {\n p5 = 255;\n } else {\n p5 >>= 4;\n }\n if (p6 < 16) {\n p6 = 0;\n } else if (p6 >= 4080) {\n p6 = 255;\n } else {\n p6 >>= 4;\n }\n if (p7 < 16) {\n p7 = 0;\n } else if (p7 >= 4080) {\n p7 = 255;\n } else {\n p7 >>= 4;\n }\n\n // store block data\n blockData[blockBufferOffset + col] = p0;\n blockData[blockBufferOffset + col + 8] = p1;\n blockData[blockBufferOffset + col + 16] = p2;\n blockData[blockBufferOffset + col + 24] = p3;\n blockData[blockBufferOffset + col + 32] = p4;\n blockData[blockBufferOffset + col + 40] = p5;\n blockData[blockBufferOffset + col + 48] = p6;\n blockData[blockBufferOffset + col + 56] = p7;\n }\n}\n\nfunction buildComponentData(frame, component) {\n const blocksPerLine = component.blocksPerLine;\n const blocksPerColumn = component.blocksPerColumn;\n const computationBuffer = new Int16Array(64);\n\n for (let blockRow = 0; blockRow < blocksPerColumn; blockRow++) {\n for (let blockCol = 0; blockCol < blocksPerLine; blockCol++) {\n const offset = getBlockBufferOffset(component, blockRow, blockCol);\n quantizeAndInverse(component, offset, computationBuffer);\n }\n }\n return component.blockData;\n}\n\nfunction findNextFileMarker(data, view, currentPos, startPos = currentPos) {\n const maxPos = data.length - 1;\n let newPos = startPos < currentPos ? startPos : currentPos;\n\n if (currentPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n const currentMarker = view.getUint16(currentPos);\n if (currentMarker >= 0xffc0 && currentMarker <= 0xfffe) {\n return {\n invalid: null,\n marker: currentMarker,\n offset: currentPos,\n };\n }\n let newMarker = view.getUint16(newPos);\n while (!(newMarker >= 0xffc0 && newMarker <= 0xfffe)) {\n if (++newPos >= maxPos) {\n return null; // Don't attempt to read non-existent data and just return.\n }\n newMarker = view.getUint16(newPos);\n }\n return {\n invalid: currentMarker.toString(16),\n marker: newMarker,\n offset: newPos,\n };\n}\n\nfunction prepareComponents(frame) {\n const mcusPerLine = Math.ceil(frame.samplesPerLine / 8 / frame.maxH);\n const mcusPerColumn = Math.ceil(frame.scanLines / 8 / frame.maxV);\n for (const component of frame.components) {\n const blocksPerLine = Math.ceil(\n (Math.ceil(frame.samplesPerLine / 8) * component.h) / frame.maxH\n );\n const blocksPerColumn = Math.ceil(\n (Math.ceil(frame.scanLines / 8) * component.v) / frame.maxV\n );\n const blocksPerLineForMcu = mcusPerLine * component.h;\n const blocksPerColumnForMcu = mcusPerColumn * component.v;\n\n const blocksBufferSize =\n 64 * blocksPerColumnForMcu * (blocksPerLineForMcu + 1);\n component.blockData = new Int16Array(blocksBufferSize);\n component.blocksPerLine = blocksPerLine;\n component.blocksPerColumn = blocksPerColumn;\n }\n frame.mcusPerLine = mcusPerLine;\n frame.mcusPerColumn = mcusPerColumn;\n}\n\nfunction readDataBlock(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n let endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n warn(\n \"readDataBlock - incorrect length, current marker is: \" +\n fileMarker.invalid\n );\n endOffset = fileMarker.offset;\n }\n\n const array = data.subarray(offset, endOffset);\n return {\n appData: array,\n oldOffset: offset,\n newOffset: offset + array.length,\n };\n}\n\nfunction skipData(data, view, offset) {\n const length = view.getUint16(offset);\n offset += 2;\n const endOffset = offset + length - 2;\n\n const fileMarker = findNextFileMarker(data, view, endOffset, offset);\n if (fileMarker?.invalid) {\n return fileMarker.offset;\n }\n return endOffset;\n}\n\nclass JpegImage {\n constructor(options) {\n this._colorTransform = options?.colorTransform ?? -1;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n this._decodeTransform = options?.decodeTransform || null;\n this._isSourcePDF = false;\n }\n }\n\n static canUseImageDecoder(data, colorTransform = -1) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const info = {\n width: 0,\n height: 0,\n exifStart: 0,\n exifEnd: 0,\n };\n let offset = 0;\n let numComponents = null;\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n switch (fileMarker) {\n case 0xffe1: // APP1 - Exif\n // TODO: Remove this once https://github.com/w3c/webcodecs/issues/870\n // is fixed.\n const { appData, oldOffset, newOffset } = readDataBlock(\n data,\n view,\n offset\n );\n offset = newOffset;\n\n // 'Exif\\x00\\x00'\n if (\n appData[0] === 0x45 &&\n appData[1] === 0x78 &&\n appData[2] === 0x69 &&\n appData[3] === 0x66 &&\n appData[4] === 0 &&\n appData[5] === 0\n ) {\n if (info.exifStart) {\n throw new JpegError(\"Duplicate EXIF-blocks found.\");\n }\n // Don't do the EXIF-block replacement here, see `JpegStream`,\n // since that can modify the original PDF document.\n info.exifStart = oldOffset + 6;\n info.exifEnd = newOffset;\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n continue;\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n // Skip marker length.\n // Skip precision.\n info.height = view.getUint16(offset + (2 + 1)); // scanLines\n info.width = view.getUint16(offset + (2 + 1 + 2)); // samplesPerLine\n numComponents = data[offset + (2 + 1 + 2 + 2)];\n break markerLoop;\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n }\n offset = skipData(data, view, offset);\n fileMarker = view.getUint16(offset);\n offset += 2;\n }\n if (numComponents === 4) {\n return null;\n }\n if (numComponents === 3 && colorTransform === 0) {\n return null;\n }\n // A zero SOF height means that a later DNL marker defines it.\n return info;\n }\n\n parse(data, { dnlScanLines = null } = {}) {\n const view = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const maxOffset = data.length - 1;\n let offset = 0;\n let jfif = null;\n let adobe = null;\n let frame, resetInterval;\n let numSOSMarkers = 0;\n const quantizationTables = [];\n const huffmanTablesAC = [],\n huffmanTablesDC = [];\n\n let fileMarker = view.getUint16(offset);\n offset += 2;\n if (fileMarker !== /* SOI (Start of Image) = */ 0xffd8) {\n throw new JpegError(\"SOI not found\");\n }\n fileMarker = view.getUint16(offset);\n offset += 2;\n\n markerLoop: while (fileMarker !== /* EOI (End of Image) = */ 0xffd9) {\n let i, j, l;\n switch (fileMarker) {\n case 0xffe0: // APP0 (Application Specific)\n case 0xffe1: // APP1\n case 0xffe2: // APP2\n case 0xffe3: // APP3\n case 0xffe4: // APP4\n case 0xffe5: // APP5\n case 0xffe6: // APP6\n case 0xffe7: // APP7\n case 0xffe8: // APP8\n case 0xffe9: // APP9\n case 0xffea: // APP10\n case 0xffeb: // APP11\n case 0xffec: // APP12\n case 0xffed: // APP13\n case 0xffee: // APP14\n case 0xffef: // APP15\n case 0xfffe: // COM (Comment)\n const { appData, newOffset } = readDataBlock(data, view, offset);\n offset = newOffset;\n\n if (fileMarker === 0xffe0) {\n // 'JFIF\\x00'\n if (\n appData[0] === 0x4a &&\n appData[1] === 0x46 &&\n appData[2] === 0x49 &&\n appData[3] === 0x46 &&\n appData[4] === 0\n ) {\n jfif = {\n version: { major: appData[5], minor: appData[6] },\n densityUnits: appData[7],\n xDensity: (appData[8] << 8) | appData[9],\n yDensity: (appData[10] << 8) | appData[11],\n thumbWidth: appData[12],\n thumbHeight: appData[13],\n thumbData: appData.subarray(\n 14,\n 14 + 3 * appData[12] * appData[13]\n ),\n };\n }\n }\n // TODO APP1 - Exif\n if (fileMarker === 0xffee) {\n // 'Adobe'\n if (\n appData[0] === 0x41 &&\n appData[1] === 0x64 &&\n appData[2] === 0x6f &&\n appData[3] === 0x62 &&\n appData[4] === 0x65\n ) {\n adobe = {\n version: (appData[5] << 8) | appData[6],\n flags0: (appData[7] << 8) | appData[8],\n flags1: (appData[9] << 8) | appData[10],\n transformCode: appData[11],\n };\n }\n }\n break;\n\n case 0xffdb: // DQT (Define Quantization Tables)\n const quantizationTablesLength = view.getUint16(offset);\n offset += 2;\n const quantizationTablesEnd = quantizationTablesLength + offset - 2;\n let z;\n while (offset < quantizationTablesEnd) {\n const quantizationTableSpec = data[offset++];\n const tableData = new Uint16Array(64);\n if (quantizationTableSpec >> 4 === 0) {\n // 8 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = data[offset++];\n }\n } else if (quantizationTableSpec >> 4 === 1) {\n // 16 bit values\n for (j = 0; j < 64; j++) {\n z = dctZigZag[j];\n tableData[z] = view.getUint16(offset);\n offset += 2;\n }\n } else {\n throw new JpegError(\"DQT - invalid table spec\");\n }\n quantizationTables[quantizationTableSpec & 15] = tableData;\n }\n break;\n\n case 0xffc0: // SOF0 (Start of Frame, Baseline DCT)\n case 0xffc1: // SOF1 (Start of Frame, Extended DCT)\n case 0xffc2: // SOF2 (Start of Frame, Progressive DCT)\n if (frame) {\n throw new JpegError(\"Only single frame JPEGs supported\");\n }\n offset += 2; // Skip marker length.\n\n frame = {};\n frame.extended = fileMarker === 0xffc1;\n frame.progressive = fileMarker === 0xffc2;\n frame.precision = data[offset++];\n const sofScanLines = view.getUint16(offset);\n offset += 2;\n frame.scanLines = dnlScanLines || sofScanLines;\n frame.samplesPerLine = view.getUint16(offset);\n offset += 2;\n frame.components = [];\n frame.componentIds = {};\n const componentsCount = data[offset++];\n let maxH = 0,\n maxV = 0;\n for (i = 0; i < componentsCount; i++) {\n const componentId = data[offset];\n const h = data[offset + 1] >> 4;\n const v = data[offset + 1] & 15;\n if (maxH < h) {\n maxH = h;\n }\n if (maxV < v) {\n maxV = v;\n }\n const qId = data[offset + 2];\n l = frame.components.push({\n h,\n v,\n quantizationId: qId,\n quantizationTable: null, // See comment below.\n });\n frame.componentIds[componentId] = l - 1;\n offset += 3;\n }\n frame.maxH = maxH;\n frame.maxV = maxV;\n prepareComponents(frame);\n break;\n\n case 0xffc4: // DHT (Define Huffman Tables)\n const huffmanLength = view.getUint16(offset);\n offset += 2;\n for (i = 2; i < huffmanLength;) {\n const huffmanTableSpec = data[offset++];\n const codeLengths = new Uint8Array(16);\n let codeLengthSum = 0;\n for (j = 0; j < 16; j++, offset++) {\n codeLengthSum += codeLengths[j] = data[offset];\n }\n const huffmanValues = new Uint8Array(codeLengthSum);\n for (j = 0; j < codeLengthSum; j++, offset++) {\n huffmanValues[j] = data[offset];\n }\n i += 17 + codeLengthSum;\n\n (huffmanTableSpec >> 4 === 0 ? huffmanTablesDC : huffmanTablesAC)[\n huffmanTableSpec & 15\n ] = buildHuffmanTable(codeLengths, huffmanValues);\n }\n break;\n\n case 0xffdd: // DRI (Define Restart Interval)\n offset += 2; // Skip marker length.\n\n resetInterval = view.getUint16(offset);\n offset += 2;\n break;\n\n case 0xffda: // SOS (Start of Scan)\n // A DNL marker (0xFFDC), if it exists, is only allowed at the end\n // of the first scan segment and may only occur once in an image.\n // Furthermore, to prevent an infinite loop, do *not* attempt to\n // parse DNL markers during re-parsing of the JPEG scan data.\n const parseDNLMarker = ++numSOSMarkers === 1 && !dnlScanLines;\n\n offset += 2; // Skip marker length.\n\n const selectorsCount = data[offset++],\n components = [];\n for (i = 0; i < selectorsCount; i++) {\n const index = data[offset++];\n const componentIndex = frame.componentIds[index];\n const component = frame.components[componentIndex];\n component.index = index;\n const tableSpec = data[offset++];\n component.huffmanTableDC = huffmanTablesDC[tableSpec >> 4];\n component.huffmanTableAC = huffmanTablesAC[tableSpec & 15];\n components.push(component);\n }\n const spectralStart = data[offset++],\n spectralEnd = data[offset++],\n successiveApproximation = data[offset++];\n try {\n const processed = decodeScan(\n data,\n view,\n offset,\n frame,\n components,\n resetInterval,\n spectralStart,\n spectralEnd,\n successiveApproximation >> 4,\n successiveApproximation & 15,\n parseDNLMarker\n );\n offset += processed;\n } catch (ex) {\n if (ex instanceof DNLMarkerError) {\n warn(`${ex.message} -- attempting to re-parse the JPEG image.`);\n return this.parse(data, { dnlScanLines: ex.scanLines });\n } else if (ex instanceof EOIMarkerError) {\n warn(`${ex.message} -- ignoring the rest of the image data.`);\n break markerLoop;\n }\n throw ex;\n }\n break;\n\n case 0xffdc: // DNL (Define Number of Lines)\n // Ignore the marker, since it's being handled in `decodeScan`.\n offset += 4;\n break;\n\n case 0xffff: // Fill bytes\n if (data[offset] !== 0xff) {\n // Avoid skipping a valid marker.\n offset--;\n }\n break;\n\n default:\n // Could be incorrect encoding -- the last 0xFF byte of the previous\n // block could have been eaten by the encoder, hence we fallback to\n // `startPos = offset - 3` when looking for the next valid marker.\n const nextFileMarker = findNextFileMarker(\n data,\n view,\n /* currentPos = */ offset - 2,\n /* startPos = */ offset - 3\n );\n if (nextFileMarker?.invalid) {\n warn(\n \"JpegImage.parse - unexpected data, current marker is: \" +\n nextFileMarker.invalid\n );\n offset = nextFileMarker.offset;\n break;\n }\n if (!nextFileMarker || offset >= maxOffset) {\n warn(\n \"JpegImage.parse - reached the end of the image data \" +\n \"without finding an EOI marker (0xFFD9).\"\n );\n break markerLoop;\n }\n throw new JpegError(\n \"JpegImage.parse - unknown marker: \" + fileMarker.toString(16)\n );\n }\n\n if (offset < maxOffset) {\n fileMarker = view.getUint16(offset);\n offset += 2;\n } else {\n fileMarker = 0;\n }\n }\n\n if (!frame) {\n throw new JpegError(\"JpegImage.parse - no frame data found.\");\n }\n this.width = frame.samplesPerLine;\n this.height = frame.scanLines;\n this.jfif = jfif;\n this.adobe = adobe;\n this.components = [];\n for (const component of frame.components) {\n // Prevent errors when DQT markers are placed after SOF{n} markers,\n // by assigning the `quantizationTable` entry after the entire image\n // has been parsed (fixes issue7406.pdf).\n const quantizationTable = quantizationTables[component.quantizationId];\n if (quantizationTable) {\n component.quantizationTable = quantizationTable;\n }\n\n this.components.push({\n index: component.index,\n output: buildComponentData(frame, component),\n scaleX: component.h / frame.maxH,\n scaleY: component.v / frame.maxV,\n blocksPerLine: component.blocksPerLine,\n blocksPerColumn: component.blocksPerColumn,\n });\n }\n this.numComponents = this.components.length;\n return undefined;\n }\n\n #getLinearizedBlockData(width, height) {\n const scaleX = this.width / width,\n scaleY = this.height / height;\n\n let component, componentScaleX, componentScaleY, blocksPerScanline;\n let x, y, i, j, k;\n let index;\n let offset = 0;\n let output;\n const numComponents = this.components.length;\n const dataLength = width * height * numComponents;\n const data = new Uint8ClampedArray(dataLength);\n const xScaleBlockOffset = new Uint32Array(width);\n const mask3LSB = 0xfffffff8; // used to clear the 3 LSBs\n let lastComponentScaleX;\n\n for (i = 0; i < numComponents; i++) {\n component = this.components[i];\n componentScaleX = component.scaleX * scaleX;\n componentScaleY = component.scaleY * scaleY;\n offset = i;\n output = component.output;\n blocksPerScanline = (component.blocksPerLine + 1) << 3;\n // Precalculate the `xScaleBlockOffset`. Since it doesn't depend on the\n // component data, that's only necessary when `componentScaleX` changes.\n if (componentScaleX !== lastComponentScaleX) {\n for (x = 0; x < width; x++) {\n j = 0 | (x * componentScaleX);\n xScaleBlockOffset[x] = ((j & mask3LSB) << 3) | (j & 7);\n }\n lastComponentScaleX = componentScaleX;\n }\n // linearize the blocks of the component\n for (y = 0; y < height; y++) {\n j = 0 | (y * componentScaleY);\n index = (blocksPerScanline * (j & mask3LSB)) | ((j & 7) << 3);\n for (x = 0; x < width; x++) {\n data[offset] = output[index + xScaleBlockOffset[x]];\n offset += numComponents;\n }\n }\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n // decodeTransform contains pairs of multiplier (-256..256) and additive\n let transform = this._decodeTransform;\n\n // In PDF files, JPEG images with CMYK colour spaces are usually inverted\n // (this can be observed by extracting the raw image data).\n // Since the conversion algorithms (see below) were written primarily for\n // the PDF use-cases, attempting to use `JpegImage` to parse standalone\n // JPEG (CMYK) images may thus result in inverted images (see issue 9513).\n //\n // Unfortunately it's not (always) possible to tell, from the image data\n // alone, if it needs to be inverted. Thus in an attempt to provide better\n // out-of-the-box behaviour when `JpegImage` is used standalone, default\n // to inverting JPEG (CMYK) images if and only if the image data does\n // *not* come from a PDF file and no `decodeTransform` was provided.\n if (!this._isSourcePDF && numComponents === 4) {\n transform ||= new Int32Array([\n -256, 255, -256, 255, -256, 255, -256, 255,\n ]);\n }\n\n if (transform) {\n for (i = 0; i < dataLength;) {\n for (j = 0, k = 0; j < numComponents; j++, i++, k += 2) {\n data[i] = ((data[i] * transform[k]) >> 8) + transform[k + 1];\n }\n }\n }\n }\n return data;\n }\n\n get _isColorConversionNeeded() {\n if (this.adobe) {\n // The adobe transform marker overrides any previous setting.\n return !!this.adobe.transformCode;\n }\n if (this.numComponents === 3) {\n if (this._colorTransform === 0) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `0`,\n // then the colours should *not* be transformed.\n return false;\n } else if (\n this.components[0].index === /* \"R\" = */ 0x52 &&\n this.components[1].index === /* \"G\" = */ 0x47 &&\n this.components[2].index === /* \"B\" = */ 0x42\n ) {\n // If the three components are indexed as RGB in ASCII\n // then the colours should *not* be transformed.\n return false;\n }\n return true;\n }\n // `this.numComponents !== 3`\n if (this._colorTransform === 1) {\n // If the Adobe transform marker is not present and the image\n // dictionary has a 'ColorTransform' entry, explicitly set to `1`,\n // then the colours should be transformed.\n return true;\n }\n return false;\n }\n\n _convertYccToRgb(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 3) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = Y - 179.456 + 1.402 * Cr;\n data[i + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n data[i + 2] = Y - 226.816 + 1.772 * Cb;\n }\n return data;\n }\n\n _convertYccToRgba(data, out) {\n for (let i = 0, j = 0, ii = data.length; i < ii; i += 3, j += 4) {\n const Y = data[i];\n const Cb = data[i + 1];\n const Cr = data[i + 2];\n out[j] = Y - 179.456 + 1.402 * Cr;\n out[j + 1] = Y + 135.459 - 0.344 * Cb - 0.714 * Cr;\n out[j + 2] = Y - 226.816 + 1.772 * Cb;\n out[j + 3] = 255;\n }\n return out;\n }\n\n _convertYcckToRgb(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgb(data);\n }\n\n _convertYcckToRgba(data) {\n this._convertYcckToCmyk(data);\n return this._convertCmykToRgba(data);\n }\n\n _convertYcckToCmyk(data) {\n let Y, Cb, Cr;\n for (let i = 0, ii = data.length; i < ii; i += 4) {\n Y = data[i];\n Cb = data[i + 1];\n Cr = data[i + 2];\n data[i] = 434.456 - Y - 1.402 * Cr;\n data[i + 1] = 119.541 - Y + 0.344 * Cb + 0.714 * Cr;\n data[i + 2] = 481.816 - Y - 1.772 * Cb;\n // K in data[i + 3] is unchanged\n }\n return data;\n }\n\n _convertCmykToRgb(data) {\n const count = data.length / 4;\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, count, data, 0, 8, 0);\n return data.subarray(0, count * 3);\n }\n\n _convertCmykToRgba(data) {\n ColorSpaceUtils.cmyk.getRgbBuffer(data, 0, data.length / 4, data, 0, 8, 1);\n\n if (ColorSpaceUtils.cmyk instanceof DeviceCmykCS) {\n // The alpha-component isn't updated by `DeviceCmykCS`, doing it manually.\n for (let i = 3, ii = data.length; i < ii; i += 4) {\n data[i] = 255;\n }\n }\n return data;\n }\n\n getData({ width, height, forceRGBA = false, forceRGB = false }) {\n if (this.numComponents > 4) {\n throw new JpegError(\"Unsupported color mode\");\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n this._isSourcePDF = arguments[0]?.isSourcePDF === true;\n }\n // Type of data: Uint8ClampedArray(width * height * numComponents)\n const data = this.#getLinearizedBlockData(width, height);\n\n if (this.numComponents === 1 && (forceRGBA || forceRGB)) {\n const len = data.length * (forceRGBA ? 4 : 3);\n const rgbaData = new Uint8ClampedArray(len);\n let offset = 0;\n if (forceRGBA) {\n grayToRGBA(data, new Uint32Array(rgbaData.buffer));\n } else {\n for (const grayColor of data) {\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n rgbaData[offset++] = grayColor;\n }\n }\n return rgbaData;\n } else if (this.numComponents === 3 && this._isColorConversionNeeded) {\n if (forceRGBA) {\n const rgbaData = new Uint8ClampedArray((data.length / 3) * 4);\n return this._convertYccToRgba(data, rgbaData);\n }\n return this._convertYccToRgb(data);\n } else if (this.numComponents === 4) {\n if (this._isColorConversionNeeded) {\n if (forceRGBA) {\n return this._convertYcckToRgba(data);\n }\n if (forceRGB) {\n return this._convertYcckToRgb(data);\n }\n return this._convertYcckToCmyk(data);\n } else if (forceRGBA) {\n return this._convertCmykToRgba(data);\n } else if (forceRGB) {\n return this._convertCmykToRgb(data);\n }\n }\n return data;\n }\n}\n\nexport { JpegError, JpegImage };\n","/* THIS FILE IS GENERATED - DO NOT EDIT */\nasync function OpenJPEG(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=true;var ENVIRONMENT_IS_WORKER=false;var arguments_=[];var thisProgram=\"./this.program\";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(\".\",_scriptName).href}catch{}{readAsync=async url=>{var response=await fetch(url,{credentials:\"same-origin\"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+\" : \"+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;class EmscriptenEH{}class EmscriptenSjLj extends EmscriptenEH{}var readyPromiseResolve,readyPromiseReject;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports[\"s\"]()}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module[\"onAbort\"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=\". Build with -sASSERTIONS for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module[\"locateFile\"]){return locateFile(\"openjpeg.wasm\")}return new URL(\"openjpeg.wasm\",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw\"both async and sync fetching of the wasm failed\"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary){try{var response=fetch(binaryFile,{credentials:\"same-origin\"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err(\"falling back to ArrayBuffer instantiation\")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result[\"instance\"])}var info=getWasmImports();if(Module[\"instantiateWasm\"]){return new Promise((resolve,reject)=>{Module[\"instantiateWasm\"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name=\"ExitStatus\";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort(\"\");var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var timers={};var handleException=e=>{if(e instanceof ExitStatus||e==\"unwind\"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module[\"onExit\"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};function _copy_pixels_1(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);imageData.set(compG)}function _copy_pixels_3(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*3);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[3*i]=compR[i];imageData[3*i+1]=compG[i];imageData[3*i+2]=compB[i]}}function _copy_pixels_4(compR_ptr,compG_ptr,compB_ptr,compA_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=compA[i]}}var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false};var ENV={};var getExecutableName=()=>thisProgram||\"./this.program\";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(globalThis.navigator?.language??\"C\").replace(\"-\",\"_\")+\".UTF-8\";var env={USER:\"web_user\",LOGNAME:\"web_user\",PATH:\"/\",PWD:\"/\",HOME:\"/home/web_user\",LANG:lang,_:getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var _environ_get=(__environ,environ_buf)=>{var bufSize=0;var envp=0;for(var string of getEnvStrings()){var ptr=environ_buf+bufSize;HEAPU32[__environ+envp>>2]=ptr;bufSize+=stringToUTF8(string,ptr,Infinity)+1;envp+=4}return 0};var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var _environ_sizes_get=(penviron_count,penviron_buf_size)=>{var strings=getEnvStrings();HEAPU32[penviron_count>>2]=strings.length;var bufSize=0;for(var string of strings){bufSize+=lengthBytesUTF8(string)+1}HEAPU32[penviron_buf_size>>2]=bufSize;return 0};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);return 70}var printCharBuffers=[null,[],[]];var UTF8Decoder=globalThis.TextDecoder&&new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str=\"\";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):\"\";var _fd_write=(fd,iov,iovcnt,pnum)=>{var num=0;for(var i=0;i<iovcnt;i++){var ptr=HEAPU32[iov>>2];var len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU32[pnum>>2]=num;return 0};function _gray_to_rgba(compG_ptr,nb_pixels){compG_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=255}}function _graya_to_rgba(compG_ptr,compA_ptr,nb_pixels){compG_ptr>>=2;compA_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compA=HEAP32.subarray(compA_ptr,compA_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=imageData[4*i+1]=imageData[4*i+2]=compG[i];imageData[4*i+3]=compA[i]}}function _jsPrintWarning(message_ptr){const message=UTF8ToString(message_ptr);(Module.warn||console.warn)(`OpenJPEG: ${message}`)}function _rgb_to_rgba(compR_ptr,compG_ptr,compB_ptr,nb_pixels){compR_ptr>>=2;compG_ptr>>=2;compB_ptr>>=2;const imageData=Module.imageData=new Uint8ClampedArray(nb_pixels*4);const compR=HEAP32.subarray(compR_ptr,compR_ptr+nb_pixels);const compG=HEAP32.subarray(compG_ptr,compG_ptr+nb_pixels);const compB=HEAP32.subarray(compB_ptr,compB_ptr+nb_pixels);for(let i=0;i<nb_pixels;i++){imageData[4*i]=compR[i];imageData[4*i+1]=compG[i];imageData[4*i+2]=compB[i];imageData[4*i+3]=255}}function _storeErrorMessage(message_ptr){const message=UTF8ToString(message_ptr);if(!Module.errorMessages){Module.errorMessages=message}else{Module.errorMessages+=\"\\n\"+message}}var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer)};{if(Module[\"noExitRuntime\"])noExitRuntime=Module[\"noExitRuntime\"];if(Module[\"print\"])out=Module[\"print\"];if(Module[\"printErr\"])err=Module[\"printErr\"];if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].shift()()}}}Module[\"writeArrayToMemory\"]=writeArrayToMemory;var _malloc,_free,_jp2_decode,__emscripten_timeout,memory,__indirect_function_table,wasmMemory;function assignWasmExports(wasmExports){_malloc=Module[\"_malloc\"]=wasmExports[\"t\"];_free=Module[\"_free\"]=wasmExports[\"u\"];_jp2_decode=Module[\"_jp2_decode\"]=wasmExports[\"v\"];__emscripten_timeout=wasmExports[\"w\"];memory=wasmMemory=wasmExports[\"r\"];__indirect_function_table=wasmExports[\"__indirect_function_table\"]}var wasmImports={m:__abort_js,l:__emscripten_runtime_keepalive_clear,i:__setitimer_js,f:_copy_pixels_1,e:_copy_pixels_3,d:_copy_pixels_4,j:_emscripten_resize_heap,o:_environ_get,p:_environ_sizes_get,n:_fd_seek,b:_fd_write,q:_gray_to_rgba,h:_graya_to_rgba,c:_jsPrintWarning,k:_proc_exit,g:_rgb_to_rgba,a:_storeErrorMessage};function run(){preRun();function doRun(){Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module[\"onRuntimeInitialized\"]?.();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(()=>{setTimeout(()=>Module[\"setStatus\"](\"\"),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}\n;return moduleRtn}export default OpenJPEG;\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 { BaseStream } from \"./base_stream.js\";\nimport { stringToBytes } from \"../shared/util.js\";\n\nclass Stream extends BaseStream {\n constructor(arrayBuffer, start, length, dict) {\n super();\n\n this.bytes =\n arrayBuffer instanceof Uint8Array\n ? arrayBuffer\n : new Uint8Array(arrayBuffer);\n this.start = start || 0;\n this.pos = this.start;\n this.end = start + length || this.bytes.length;\n this.dict = dict;\n }\n\n get length() {\n return this.end - this.start;\n }\n\n get isEmpty() {\n return this.length === 0;\n }\n\n getByte() {\n return this.pos >= this.end ? -1 : this.bytes[this.pos++];\n }\n\n getBytes(length) {\n const pos = this.pos;\n const endPos = !length ? this.end : Math.min(pos + length, this.end);\n\n this.pos = endPos;\n return this.bytes.subarray(pos, endPos);\n }\n\n getByteRange(begin, end) {\n if (begin < 0) {\n begin = 0;\n }\n if (end > this.end) {\n end = this.end;\n }\n return this.bytes.subarray(begin, end);\n }\n\n reset() {\n this.pos = this.start;\n }\n\n moveStart() {\n this.start = this.pos;\n }\n\n makeSubStream(start, length, dict = null) {\n return new Stream(this.bytes.buffer, start, length, dict);\n }\n\n clone() {\n return new Stream(\n this.bytes.buffer,\n this.start,\n this.length,\n this.dict?.clone()\n );\n }\n}\n\nclass StringStream extends Stream {\n constructor(str, dict = null) {\n super(stringToBytes(str), NaN, NaN, dict);\n }\n}\n\nclass NullStream extends Stream {\n constructor() {\n super(new Uint8Array(0));\n }\n}\n\nexport { NullStream, Stream, StringStream };\n","/* Copyright 2024 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 { BaseException, shadow } from \"../shared/util.js\";\nimport OpenJPEG from \"../../external/openjpeg/openjpeg.js\";\nimport { Stream } from \"./stream.js\";\nimport { WasmImage } from \"./wasm_image.js\";\n\nclass JpxError extends BaseException {\n constructor(msg) {\n super(msg, \"JpxError\");\n }\n}\n\nclass JpxImage extends WasmImage {\n _filename = \"openjpeg.wasm\";\n\n _noWasmFilename = \"openjpeg_nowasm_fallback.js\";\n\n static get instance() {\n return shadow(this, \"instance\", new JpxImage(/* trackInstance = */ true));\n }\n\n async decode(\n bytes,\n {\n numComponents = 4,\n isIndexedColormap = false,\n smaskInData = false,\n reducePower = 0,\n } = {}\n ) {\n const module = await this._getModule(OpenJPEG);\n\n if (!module) {\n throw new JpxError(\"OpenJPEG failed to initialize\");\n }\n let ptr;\n\n try {\n const size = bytes.length;\n ptr = module._malloc(size);\n module.writeArrayToMemory(bytes, ptr);\n const ret = module._jp2_decode(\n ptr,\n size,\n numComponents > 0 ? numComponents : 0,\n !!isIndexedColormap,\n !!smaskInData,\n reducePower\n );\n if (ret) {\n const { errorMessages } = module;\n if (errorMessages) {\n delete module.errorMessages;\n throw new JpxError(errorMessages);\n }\n throw new JpxError(\"Unknown error\");\n }\n const { imageData } = module;\n module.imageData = null;\n\n return imageData;\n } finally {\n if (ptr) {\n module._free(ptr);\n }\n }\n }\n\n static parseImageProperties(stream) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"IMAGE_DECODERS\")) {\n if (stream instanceof ArrayBuffer || ArrayBuffer.isView(stream)) {\n stream = new Stream(stream);\n } else {\n throw new JpxError(\"Invalid data format, must be a TypedArray.\");\n }\n }\n // No need to use OpenJPEG here since we're only getting very basic\n // information which are located in the first bytes of the file.\n let newByte = stream.getByte();\n while (newByte >= 0) {\n const oldByte = newByte;\n newByte = stream.getByte();\n const code = (oldByte << 8) | newByte;\n // Image and tile size (SIZ)\n if (code === 0xff51) {\n stream.skip(4);\n const Xsiz = stream.getInt32() >>> 0; // Byte 4\n const Ysiz = stream.getInt32() >>> 0; // Byte 8\n const XOsiz = stream.getInt32() >>> 0; // Byte 12\n const YOsiz = stream.getInt32() >>> 0; // Byte 16\n stream.skip(16);\n const Csiz = stream.getUint16(); // Byte 36\n return {\n width: Xsiz - XOsiz,\n height: Ysiz - YOsiz,\n // Results are always returned as `Uint8ClampedArray`s.\n bitsPerComponent: 8,\n componentsCount: Csiz,\n };\n }\n }\n throw new JpxError(\"No size marker found in JPX stream\");\n }\n}\n\nexport { JpxError, JpxImage };\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 getVerbosityLevel,\n setVerbosityLevel,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n Jbig2Error,\n JBig2CCITTFaxImage as Jbig2Image,\n} from \"./core/jbig2_ccittFax.js\";\nimport { JpegError, JpegImage } from \"./core/jpg.js\";\nimport { JpxError, JpxImage } from \"./core/jpx.js\";\n\nglobalThis.pdfjsImageDecoders = {\n getVerbosityLevel,\n Jbig2Error,\n Jbig2Image,\n JpegError,\n JpegImage,\n JpxError,\n JpxImage,\n setVerbosityLevel,\n VerbosityLevel,\n};\n\nexport {\n getVerbosityLevel,\n Jbig2Error,\n Jbig2Image,\n JpegError,\n JpegImage,\n JpxError,\n JpxImage,\n setVerbosityLevel,\n VerbosityLevel,\n};\n"],"names":[],"sourceRoot":""}